checking in...
authorJan Michel <jmichel@gsi.de>
Thu, 28 Feb 2013 17:10:28 +0000 (18:10 +0100)
committerJan Michel <jmichel@gsi.de>
Thu, 28 Feb 2013 17:10:28 +0000 (18:10 +0100)
186 files changed:
bit/main_board_033_ionized.stapl [new file with mode: 0644]
bit/main_board_034_ionized.stapl [new file with mode: 0644]
bit/main_board_034_ionized.txt [new file with mode: 0644]
soft/mvdmon/files/cgi-bin/jtagmon.cgi [new file with mode: 0755]
soft/toolbox/HPlot.pm [new file with mode: 0644]
soft/toolbox/Hmon.pm [new file with mode: 0644]
soft/toolbox/QA.pm [new file with mode: 0644]
soft/toolbox/jtag_atomic/boards.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/chains.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/chains.ini.chain0 [new file with mode: 0644]
soft/toolbox/jtag_atomic/chains.ini.chain1 [new file with mode: 0644]
soft/toolbox/jtag_atomic/chains.ini.chain2 [new file with mode: 0644]
soft/toolbox/jtag_atomic/copy_on_datachanged.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/debug_ram1c_set_triggers.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/debug_read_ram1c.pl [new file with mode: 0644]
soft/toolbox/jtag_atomic/debug_read_ram1c_showgtk.pl [new file with mode: 0644]
soft/toolbox/jtag_atomic/exportcommand [new file with mode: 0755]
soft/toolbox/jtag_atomic/generate_chainorder.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/gui/.svn/entries [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/entries [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons2_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.1_board_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.2_board_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.5_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3_board_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons4_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_BM_NP1_board_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_BM_NP1_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/sensor_buttons4_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/sensor_buttons_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window2_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window3_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window4_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window_libglade.glade.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons2_board_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons2_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons3.1_board_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons3.2_board_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons3.5_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons3_board_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons3_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons4_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1_board_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/buttons_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/sensor_buttons4_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/sensor_buttons_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/window.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/window2_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/window3_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/window4_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/gui/design/window_libglade.glade [new file with mode: 0644]
soft/toolbox/jtag_atomic/jtagmonitor_lastcounters.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/jtagmonitor_usechainsini4.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/libs/.svn/entries [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/:q [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/CRC32.bs [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/CRC32.c [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/CRC32.o [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/CRC32.pm [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/CRC32.pod [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/CRC32.xs [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/CRC32_mod.xs [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/CRC32_test.pm [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Config/.svn/entries [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Config/.svn/text-base/Abstract.pm.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Config/Abstract.pm [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Config/Abstract/.svn/entries [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Config/Abstract/.svn/text-base/Ini.pm.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Config/Abstract/Ini.pm [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/MANIFEST [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/MYMETA.json [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/MYMETA.yml [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Makefile [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Makefile.PL [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/Makefile.old [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/README [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/arch/.exists [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/.exists [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/CRC32.bs [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/CRC32.so [new file with mode: 0755]
soft/toolbox/jtag_atomic/libs/blib/bin/.exists [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/lib/BN/.exists [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32.pm [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32.pod [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32_test.pm [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/lib/auto/BN/CRC32/.exists [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/man1/.exists [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/man3/.exists [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/man3/BN::CRC32.3pm [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/blib/script/.exists [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/crcgen.c [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/pm_to_blib [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/t/.svn/entries [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/t/.svn/text-base/crc.t.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/t/.svn/text-base/testfile.svn-base [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/t/crc.t [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/t/testfile [new file with mode: 0644]
soft/toolbox/jtag_atomic/libs/typemap [new file with mode: 0644]
soft/toolbox/jtag_atomic/main_start.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/onereg_writeonce/boards.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/bypass.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/chains.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/lastprog.txt [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor1.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor10.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor12.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor2.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor3.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor4.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor5.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor6.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor7.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor8.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/sensor9.ini [new file with mode: 0644]
soft/toolbox/jtag_atomic/onereg_writeonce/ui.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/onereg_writeonce/ui.pl_old [new file with mode: 0755]
soft/toolbox/jtag_atomic/onereg_writeonce/ui_writeram.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/onereg_writeonce/write_reg.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/onereg_writeonce/write_reg_onesensor.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/start.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/sync_sensors.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/the_gui.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/the_gui_devel.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/trigger_init_sequence_allchains_loop.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/trigger_init_sequence_allchains_loop_wait50ms.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/ui.pl [new file with mode: 0755]
soft/toolbox/jtag_atomic/ui_set_standard_settings.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/ui_set_standard_settings_board.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/ui_set_standard_settings_chain1.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/ui_set_standard_settings_chain2.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/ui_set_standard_settings_chain3.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/ui_trigger_all_chains.sh [new file with mode: 0755]
soft/toolbox/jtag_atomic/ui_writeram.pl [new file with mode: 0755]
soft/toolbox/prototype_setup.db [new file with mode: 0644]
soft/toolbox/sensors/sensor1.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor10.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor11.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor12.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor13.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor2.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor3.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor4.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor5.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor6.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor7.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor8.ini [new file with mode: 0644]
soft/toolbox/sensors/sensor9.ini [new file with mode: 0644]
vhdl/code/blank_ram.vhd [new file with mode: 0644]
vhdl/code/copy_ram.vhd [new file with mode: 0644]
vhdl/code/crc_32.vhd [new file with mode: 0644]
vhdl/code/dcm3.vhd [new file with mode: 0644]
vhdl/code/jtag_bypassreg_testchain_m10.vhd [new file with mode: 0755]
vhdl/code/jtag_check_crc_ram1a.vhd [new file with mode: 0755]
vhdl/code/jtag_cmd_m26c.vhd [new file with mode: 0644]
vhdl/code/jtag_cmd_m26c.vhd.orig [new file with mode: 0644]
vhdl/code/jtag_constants.vhd [new file with mode: 0644]
vhdl/code/jtag_delay_expected_values.vhd [new file with mode: 0755]
vhdl/code/jtag_init_ram1b.vhd [new file with mode: 0755]
vhdl/code/jtag_misc.vhd [new file with mode: 0644]
vhdl/code/jtag_mux_buffer_tms_tdi_out_and_metainfo.vhd [new file with mode: 0755]
vhdl/code/jtag_pulses.vhd [new file with mode: 0644]
vhdl/code/jtag_read_m26devid_m10.vhd [new file with mode: 0644]
vhdl/code/jtag_tck_out_component.vhd [new file with mode: 0644]
vhdl/code/jtag_tdo_compare_count_m10.vhd [new file with mode: 0644]
vhdl/code/jtag_tdo_compare_counttotal_noram_m10.vhd [new file with mode: 0644]
vhdl/code/jtag_tdo_data_to_ram_m10.vhd [new file with mode: 0644]
vhdl/code/jtag_tdo_sample.vhd [new file with mode: 0644]
vhdl/code/jtag_update_error_counts_ram3a.vhd [new file with mode: 0644]
vhdl/code/jtag_write_m10.vhd [new file with mode: 0644]
vhdl/code/ram_dp.vhd [new file with mode: 0755]
vhdl/code/ram_mux2to1_readport.vhd [new file with mode: 0755]
vhdl/code/ram_mux2to1_writeport.vhd [new file with mode: 0755]
vhdl/code/ram_mux4to1_readport.vhd [new file with mode: 0755]
vhdl/code/remove_sensor_bugfix0_20121218.diff [new file with mode: 0644]
vhdl/code/tb/jtag_cmd_m26c_test.vhd [new file with mode: 0644]
vhdl/code/tb/jtag_write_m10_test.vhd [new file with mode: 0644]
vhdl/jcb_trb.ucf [new file with mode: 0644]
vhdl/jcb_trb.vhd [new file with mode: 0644]
vhdl/sim/sim_jtag_cmd_m26c.prj.mpf [new file with mode: 0644]

diff --git a/bit/main_board_033_ionized.stapl b/bit/main_board_033_ionized.stapl
new file mode 100644 (file)
index 0000000..f7eb6ac
--- /dev/null
@@ -0,0 +1,11761 @@
+NOTE "CREATOR" "Xilinx iMPACT Software";
+NOTE "DATE" "2012/11/24";
+NOTE "STAPL_VERSION" "JESD71";
+NOTE "ALG_VERSION" "1";
+NOTE "DEVICE" "UNSPECIFIED";
+NOTE "CHECKSUM" "UNSPECIFIED";
+NOTE "IDCODE" "UNSPECIFIED";
+NOTE "USERCODE" "UNSPECIFIED";
+NOTE "TARGET" "UNSPECIFIED";
+NOTE "STACK_DEPTH" "4";
+NOTE "MAX_FREQ" "1000000";
+ACTION RUN_XILINX_PROC "Run Xilinx Procedure" = XILINX_PROC;
+DATA MAINDATA;
+INTEGER I = 0;
+INTEGER D = 0;
+ENDDATA;
+PROCEDURE XILINX_PROC USES ADJUST_DELAY, MAINDATA;
+BOOLEAN X = 0;
+IRSTOP IDLE;
+DRSTOP IDLE;
+STATE RESET IDLE;
+' //Operation: Program -p 0 -defaultVersion 0 
+POSTIR 0 ;
+PREIR 0 ;
+POSTDR 0 ;
+PREDR 0 ;
+POSTIR 0 ;
+PREIR 0 ;
+PREDR 0 ;
+POSTDR 0 ;
+' //Loading device with 'idcode' instruction.
+IRSCAN 10, $03c9
+ ;
+DRSCAN 32, $00000000
+, COMPARE $f16a4093
+, $0fffffff
+, X;
+IF (!X) THEN GOTO F;
+' //Boundary Scan Chain Contents
+' //Position 1: xc4vlx40
+POSTIR 0 ;
+PREIR 0 ;
+POSTDR 0 ;
+PREDR 0 ;
+POSTIR 0 ;
+PREIR 0 ;
+POSTDR 0 ;
+PREDR 0 ;
+POSTIR 0 ;
+PREIR 0 ;
+PREDR 0 ;
+POSTDR 0 ;
+' //Loading device with 'idcode' instruction.
+IRSCAN 10, $03c9
+ ;
+DRSCAN 32, $00000000
+, COMPARE $f16a4093
+, $0fffffff
+, X;
+IF (!X) THEN GOTO F;
+' //Loading device with 'bypass' instruction.
+IRSCAN 10, $03ff
+ ;
+' // Loading device with a `jprogram` instruction. 
+IRSCAN 10, $03cb
+ ;
+D = 1;
+WAIT D CYCLES;
+' // Loading device with a `bypass` instruction. 
+IRSCAN 10, $03ff
+ ;
+D = 21000;
+WAIT D CYCLES;
+' // Loading device with a `cfg_in` instruction. 
+IRSCAN 10, $03c5
+ ;
+D = 100000;
+WAIT D CYCLES;
+' // Check init_complete in ircapture.
+' //Loading device with 'Bypass' instruction.
+IRSCAN 10, $03ff
+, COMPARE $0010
+, $0010
+, X;
+IF (!X) THEN GOTO F;
+' STATE RESET;
+' // Loading device with a `cfg_in` instruction. 
+IRSCAN 10, $03c5
+, COMPARE $0000
+, $0000
+, X;
+IF (!X) THEN GOTO F;
+DRSCAN 12259744, @q8s50000000@@l@@lAPggP8000003080010000E20000G000006081020GvtfC0e004GM9Go
+1D00GI00000C0m00400060C0W2040006080WqC82421YW09G05G03m@3W@dV@F@x@yp@pV@F
+__@uV@7Vy@ud@dUz@ql@dU_@qt@7U@@m@_Fym@3VCX88P0000GYa6a3G280G0YbC10081000
+0m0020050ro600000W4088204210YW009G090e00iAW70004Q7uae0m00G0GS1OiFG800000
+00W3L00e_WekKu10100xAm300Moa20xe1X0AE0C8X7ZCSIK0eqL1C040000GjbSnIF5G5000
+00w50748qh6dK_XD000da400q52InsQG_8E120000EgRe9g0W00uY2scM91Gg90hh81001Wf
+3QfpYk000mQ900eraPUTWgXQm00mHIUDdahW4tFmmJB@4eZ70U60_kP300807lOMOER00001
+T04m@4I02000G02mZDLiLX10024wfsWxAC8IXYwx1300@4fXSoE6BzM2CWgT02fmcBKauHZh
+000W880G00Y0mwJL0004P75IcpmixZsxr0NN4P3N3800020csHYzimuLh4c99XbUu11G2GkO
+X00GHhBdG_2wae0EvxC600G2sG490030oCY408aYf7H200082200jhf22H200000W820A5R3
+000CG300kFp3010000Y8G8o0qKM5lfn00002HG8InmDJQ8U0003ezcPYYwXdaKvZD9AdoWeb
+y0av3mFLU4Cd1xkzGeBI4SL2BmbJO294Bd4Q6m0W4K0iWt30C00AM8Xy0OeTX400W0G110K0
+060WW2me0au1GR008848O500cVxPo0087033c0008G402H09G00084H420001IG_L98G0000
+08220001G000056035000G2CA06000vW00m18S200007S0000872m10WWJ00elmAg1m00m10
+00000WW0Ga40OvmA0vCGY802A0n700a41WW4H200002IG0000Wa8EY6mW61C8503GqGmGa4W
+4HC8SK0ISYp@lxyVccy000Wo200GDGKDSsI002633DgINofkKC0qI0Ki4LrYv4c10WwLT20G
+10100WIvC0820000GX0B_10GTREiLy7h17kQGZZCG000u_L30002W0048Ms408006pQ2000G
+000W000W00020008YANDOYH301004RuC0P500402000000W0QaYC000010080K5500020008
+G00800m0G1WW0mwZ600G00A0804000002WToQ0004WLQD000030040008WFLA1000eLNbeZn
+G000WwR00eyM3EXb10004HAOW000WECJO5J3wwr0020WBPQmIW608018qt4UkD1W0080I000
+20A48f1fQc300UuJTD0000HAX6KiR2W000WWC030004000101020040e0488000q@l10G02W
+012ykm3DHa00G00W000044000200040udqV0mb04ce40004UKK200018000sLaXg5DuRH900
+021WH00210mH16000a94PU000JaVS5V5@mIn60m00O0o4_@CXOZDO7L3_jq0C1Y082000000
+0008Q3D36hDdsbD00GNpNnX0008200000a0001408W08_DpWFTDugY4G0200008080010000
+0014200840408408Os33gWz7mOF04000UYEXNdDOtv78000C9T2002400280002uMQ90001G
+01800H01WW8GX82480W000200100100eI7ojq5R2zLR0000Kj1G0XJBnahC00080G0G00000
+00280W02cXEX@gPuXM302W000400H4W8Y40G1Y0W20AH1We000E28xrV00Co20Y1uTN9m100
+i3k100020002000800b02680000Af8002G00511080000C040G00A00002m000W00O024G20
+80000800G950G80000K200000I0WNfR10080008WVQO0Ke1080810eW2Nap050009a00KG90
+2At0a00000Gb000b040KYI0808180AH4000W40W2W000G42Af40HaG00YI00G00000J80024
+A0vmm60I2KuuvP2BnWKpPGs0W0084WH2JeDz4G800W0082X0000K8800000W0503WI102800
+W820ma00e040WG80G000090014e134106H00W000000C0004003082000222144W0G60GW0W
+08exS008000e53080000140000004WYTt0G40000000WO4002000C08W080008BGb94W2020
+G45182400CK4M004040080F1000061DW210W20F00000a0H01e80001022WW004001080I00
+24KyKEPSR0W46anvJW080m_y90008jrT30400802002W0W00600KYW0G00028800100W2W0W
+2400010Dya08I4K0W010WO00008ub008oU3G30GyRl1lsJoe36K5J28K0000040000pu4U3W
+100D00051O00AW000G2ez6W10eD0800W04201008bG80GO5w5X010mN0002400Y000GR0082
+0r0b5GW00tB010m1W0W000eV2000Xl00041010Fy1GUo3Eu0WpAJtx7000000OYZxd4IpI00
+Wb0y0y08jqa63CmYf1WMA500Z@@WPOM61moq0WvG000A200S3W0OC03220L403m6Iw_CCol1
+PmO0G60W@@D0utD000GI00WC01000o0GS3W10u000Wc000P07000Y1u20000GA000CGa2Wg8
+5WTWA0D1x0o0s1Y4a14f070I1q400W1m1mR0N0L0x000c100Wi3mkx40zz78g@FW24084H00
+qNeA0uC00000000mCP@7q300y@F9000@50ymB8uX70CpCCpyVW7UGmCpW0GL11W@1000GrgN
+9qw5C5GJ200YzIppvn@AkztWvaC0G000004W_nJuMS6U6@asvD0i02mCvFyKk4fldmtM6qpl
+1W200gFNYAxhuzyAw8FX6l31000E500W0pVOVkYW0000G80OpR6UAr68000000Jch@40001J
+gPGzz600e0OVD3_@@118000G0W4000I0004800OyzISJk4XjPGRv6yoc19fPmHR90Ir0OnyA
+kXtWI2Iumi4000G018Au8R36sF10W02jnp0000800WW00GG08Wi048G1eW004W0aC_D8gV30
+0A00400vM06AytWqvI0An00G00WHrD0000aQ1000080010G08e0ivM2x_R0000HW20e0400s
+Do0000A000G0G0W0001033G2K00000010ea010W02H02q002W0001200Y00000K00ask108G
+8MatW1tD00800060000000408oTdXIwCuO@4QlpWy@J00mood_600802C002W00mZzJ00100
+004200C0r3c001G000008430n008e0010m0000000C20000W0W0144vV2GG00080GW9001e0
+151004K0540W0G6wNYb0DOHj70K00200040IG2004G004WxqR0mc7WewtWGW0000100040nE
+O0A000G000000W0W000121O_U3Ga0018X00G80400004W00820041000100uOC30000Ssb1P
+uZnT_CCfV2Hmd000m0000qAH00oql50W10000200G0I022OS_400080008001G0060WmyDOd
+V30W80kLa100X00082Uv@3DfpmPw64cV2I000IKF10S6shgd0001nuaz000080800009080G
+01008300G400010W00200000216@s0G00G@@R000A0001H0GW00C00CKX1F5Qm_sCCf63RXN
+nYl60Sj00441G9@I01008Rj40W0000040820018000200800G008002001802GU@6yll1@GQ
+00I200020G404F2AX08DuXn4EzdXPd3X0W00000MVW000W040001W00Wu9VF04005VT24032
+008000004808m__F06008A030W82CPa10G0G0W0000W4180000W0W7wOO5@400Y0ial40001
+0G0000m1L0092400G0402002YQFC10W00jw@W00WWgzD0Ga208WW02L0284g1109e00A0X00
+200W1W@@D0e0m004500m48410H008Y0eW508400K4G00X200405A@oWD4J0001mT@Fy3l10W
+W1Izt080W880000qAa00000110GzA6aAs3NDQmdt60HC00623080e200G082B80ZK0H0G08T
+U304008010010mSQ660001WIA020W488e4080WGX00A10000Y0e4b0000W8Yxap000I10000
+0441YXx11a00foP002G90004c4W08GW0G8b8AQl70802iRg1K00Gc8r0A0X8018b0060oi4a
+20WY42W01A182GC20eaI0G4041W21000400WWGK000e1040W00W8GK424HH0GGH0W0000060
+028000e03C0XLtV00AGmIPCG000020W921GXkEJ000p70WWKC003W000QkqW@@D000KIC16q
+Yk1riRWm0004G004Y000080G2202G0G084m0W2018G100004iCl1003142o1G0W2YW000008
+O0H4W40800aWW040900600000G02G1fldGf49a2G200000584ypg1YG4Cg@t007Z0u20000W
+0GG000220mJy6001WA_T3Ayc1qW02060O00060W200m2O24WG0J4W8q820W104GGK0GG8W08
+0000G6600AY01G090G4020GD80G41000Ie00W000G01048g0GiRF4tU2vjd000WG0200i000
+END1000mY700082000W4ejgAcbtWuuD0800W2000001K000000WW8148uPK38802000W4008
+0005000WW8C01400l0004G404100WI10G40y5A5W010mN0000200Y0WmtC014000008c0000
+6000200WG90000G02b0uvvJW00Gl00008_2000mLHV00000VfFE60014A00000D0GYSCW0w5
+1W0WEJ42002000H80Gt9424sV1z5000Gz5210m0W20800qm6211olSX00aG1e_@0mT@10ci2
+m0305q70M1F0g@V0m@V00000AG00eX@JWvP0WgL1000008gx30eQL0WvP0E000pp0On@G000
+90I000a2IW14a03c000C81Z@t00u10ebM000000WHYa0Q691i3K2ODe6nEGDIaWva85m8HA0
+hXK0s1A0W0qH2VpW4uC000W0G0GI0J009mP006000890000G006000k0Z10063000000WWq0
+00Wn000g030G06300aRFJ040008010G0Y000WG0000000E000WX01WBW7060k0@0_H12y30K
+050W0G000W1m0GJmSWVWv000t100WC320@74pO6JLfAcPYPCpKGOcfWOES1nCp22W@1E00Wg
+g08zV30md1Ktj70WPcVFm000mUm30pO60000y000CpC00@3000000WLp@t0K100m3F0O600C
+CQ22IG042X2Y0154111000A8100enmnm@@gSrTBWzI0E97ipkCG000GF96y@F3PNPGBsFiaj
+1LPd0000AY200P9hI6uFKi_34000F4VZ9nh8@SI00eX5@EIh9kHNH6yjM5FeN1W00WRqP0WR
+0m4rFyckALrBnTz609410000HBp90G50OZT3oxs000G1@Up0040XJlJ8Dp4QmFX6jDGy08Gy
+t6i1k17g_0100WIPDuFf40W0WIG000000I2y645b10010000eqnT20W01QYtW0eCeBU641AW
+q7l101Y000809G000WH08H10mJnD0e000G00mXlD000W801G00080004b420204W0GWY8000
+1400W000a0QetWeUC08W4m8z6yRk1xqRWG20HWGG0G28WW02Wq4j1G8080G080XGG000000G
+Am0fD0000W0W0000n0JnR000W000WGBLP020000H00040Y000aW52Y8zU30W0WW00WeLU3kw
+tWdDC0mY1nsy6a001JpPmpw6KpT20020G0W000000012mB@6G080WGG0G7x60m01000G00GG
+0W0m8Fs@mYzCSPU20G080G00caD3000W2x9XgdCeAI3AVp0004000_CGW01W0010H8400e00
+0002zud000W000m000G204W0y_U200G0G0G0I02000e00P04G2G00l3R0100000W08W32ciK
+200WWBMBHNn6aSz6r@p0uH1aqzU8ItG80000001Cvz7YBdX9pDO@U30020yTl100040010KW
+c1fadmFrCqZl151OGtcC000koW00W432WlyD0E00Ge1Ry@l1rqR000W2000W000010Y04M13
+7hZ1200WI_D0W00Gy_6CbV2G000oRrWzzn00mLTu@9qdl1Fp7240000G04080O0J00L@a120
+G0008GK@j7m000wrt00002FQp0004000W00W00dEZXY0IO2V30kq1808G0000W410WfjJe1y
+7U9mWC@J0G000800000W00021xkLYRiDeQV3sst04W020G0100080W2008H0014005100800
+0m8000010081800000802WDmP0001008W0hNn0000Ub1104Hu08W0Y0002m800GY@6isF300
+10802002408vV30GCu00004Y06404020I2Y0K100880E6k1rZp0208Wy7DW000mZ7600A0u@
+@404014x_30W8WkLdXvtDepV300Gz114G420480G0WZHCuiVI0W20142X2CaWoHd6G000000
+IIkyF00C0000e4H0000W0W42000000G1b0G016Y84A40000002X08098104YG0G20000A10W
+G00C0WI00WI2000940G0WVwJ0G000G0100KYP0I8X0000I8X0etV38000Sae1GGK00XGa000
+G00Wem@_90C00WM02e00WKWe4W00280WGAyFI2zxd020G41I4Hj2Q010YXq_D010W9C00CC0
+00G002103G002940Cm00220000100200WG0X0000WW002O0051004X05wxF1bg00040WW160
+002musD3G00800000W0W00080400WO8G0_id104c100000144001031GW80L20C000FaR0HG
+0Wt@D00C00000E0000C400000003W0002WW004000002W88aX0GH0100G51WG0008104W100
+G000W800008041008100G0418_ftWYiD000d9X00200H08000AcnWu_J000Hmx_900EG8cy4
+Aym0JW20005nsAt0W8100GGXov@Xv_J00W00100804W00080G10G00a0eEH3svn048000000
+H0G1000GzFK3000A008000820W200254004000CeGy5i1G000IDtWV@V004Wm9mIm8AW10aW
+6G08XdKCW000Gsu6SwU24100cut0qL0100qNG110000R000G80800820zEfG0GvBqx2Y10Wl
+W80800500Y0WE2K000w5w50X008JG4040G000H0070000051000lIfF0020WnmbGOu60W200
+00aGcd6080er1400GR0WMdP00qF0011SlGy400G0IfpW4oJuov400o9300000GWX008pAtD0
+uLL500GLW7_20Fy5fQcB2UuN40@Z9LL50_pCcoSHgKrYCBy5LbgBgAL170@3UuWdggi8000G
+u1000Nji10UF4GL_7J000eUTHs9JnO0m3000000080g010000rJyp@7000O082m0u600mE20
+0K000GH00040X0k0n0S1kZ00S71G1E2W2uD05WBmB0NWV4k0teK0C005m50AW9WN0J0c8c0C
+H00GW001000en_C00Wn000C06000CpWuIS6004000C0n0G0gn00aKZO06000T0tE00kP00WO
+000I200e20001G52W4oJ8@@4000W1@0000000@1GLC3000mV0_@73OWV0PSl10@70pmC0G40
+@100GuT00eiV90Wl@6yE30WV@10020m@0uJF3yV@0S8d1NoPm4y@agl1hTRmau900Gv_683s
+WRfJ9DOKS3QaEXjmP8ES32wt0G004xcd000WWFbI0000Kmu902q1O@V3wgqWsqs8fRCMIQZ8
+pPOuxAI7dXcpVeTr4000Gu500frDFE_scJsDOcz4IibX8sJeqE9404mCUU2Xjd00WTp6pD8I
+UF2UtWhvnOG59cLFXNWIufU30W02i5h4WG40UcFXmvD02002GG0WSsJ00y3m3s9yBk1JbR08
+00K02404G0WX040000H000W01GWL000000A400W22H1G00G0008G000026K40088WU7L5drd
+0G422010001G1G190004448m0501W400AW020000620000W4G01004100W0028GkVd102000
+00uL38000G010G88005adlD0G00100C2010121GOG4000010fWS3020W040G0003W0000070
+eG0KG00K0800000mW0000H000E0004IaZXdwDu_U3W0K00000008ma00200W4002K00008ak
+l109G0000098G00G0000G001010080005G1aSV200IA180002A00811080G002000W400080
+04900402CW04Hm40W2020X0008000410210006100584GW404424880G08W020801000c800
+Wm0anl1PFmGz@6008W20020004800050001004020W006004G04000010W40E0BXOuDuY@70
+MN0i543N@d0G0488G008X00gyt00010801i0000irg1GWG2040GyMb1aW08G1G0a_F6pzOm8
+U6aHj1n@d0620G16003tpGl@900G00W00Gs@6000Wow1G0000m6qCW8H0X88000000GGW00G
+0003400000840W40000001W80000W00I000W0W00800W0280s_o00m00dCOG3R64Sf4W0000
+81100102082eW0GG00W002HW04G00003uh33W000CG53@V_0068D4H00000Y04002WC10000
+0004H000G0W020000H04210W0Ij_64Vb1W000m11002000W081W800J0000G00000WC_l100
+5000A0Cz@300H40GA000G0080H1G000G20O020Y00041004W100400000W0o7kQG8lIqVj1W
+pP0_vFXC@J0041ulx600I2401000201WX002aW0oYoW72C03000040200G040880000009ZW
+100oEeO00200000210A00WW0080104000G004G00G6w6ShV2rZ_mt_600002500WC104000a
+fFPm4A904002001000W0G0000G0300004QX102000W0m0a00G0109O000G00W02WGa100syl
+1v3_0410nEzCGG0210Kc416X880110310Z8006JWI85G10010900028100GW200002msZ60G
+0004000010G01G4W00000CvGH4Y02Xmi1064451Y824H0280W000K020W244K0AW0e09W0W0
+48002X00F0041040Q546K0038X808cG0HeYg088L4CW4206020HGWW5040IGLA94tV200041
+W62W15G101I2H00Ha2220H10H2002W0025AI0W1000W4A8000crtWozJusL603r0W2Y0CzL3
+G400000800Y00W61G8W4000X100g002510Y0GWgW01200X040eG08801E80Y02A502O21804
+0G0G08O09W10GY042000i020vibW400Wk9D00080000IDYXG42m09B00G80W54011042G0aG
+i0G8X002G0004Y8000482W0vC0020Gw@60080000e00008U19WW4G88aI02082W90000000G
+4WG0006W0GAH80O08042b0W00ea2G08000040Gb02082W81480021G4WWe4080281WI01000
+020g4000W41W00rc73W8000000W44K0WY00mm03Gm000G1C0W08W0W026G042101OW104G90
+e060000AygD3e00001008fU6008L100001WW12W000Y0W000000X0106K001P408W1A4a000
+02e0W0K6g100G8G010m0YG0448Y04o0002100801G14W000000I0200000X2Jjbmy_9046mG
+12G8G0618Wm1WnG4P00JW30201OKW0f0607Y0Wf000OG0000824880M010e080T8pmMg60kK
+8000H04000200200188W00004G0008040035HW00108OI00000301O0400W004WW000G0013
+00000P00m3w600X940G00G044Y0009zpGPm600040G0014990004W000X0W0W210209G0A0W
+C1440042IG0G020I21OEy40180S7U2zYR0000C9480LjO0A10W2xJ02W00e00100800G1W00
+210080jqV3GC2W00000182L0Y60W04X010200GAG001G80240000m20OgS6040m80000f9Gl
+R0K00@200081G88000wh1XWWiNeV2W30hUH8008024xc100qN23d1000021040G2000WV5LL
+01W9yba6JG94204MXUJ0C0Gyb0ozt00GF0004GP2410010qA00mso60k28008k2eA0081uAr
+_R000W20W000q40cLN20CD0uXd0y0yimoqa6B4oCP2GG4CG80PmW88W1HG90e5S300Wd7JC6
+0bEH00418000008YF03a10000W700SGs10002WHY1E000JPgF4U70_zV0@x@0u7@10Asv704
+0r_0W8@5000q5Y1000O0W@@301W74n70CmF0g200J@R00O20082m800G8000uW010L120x03
+0M3_1q1C308u70W0E001uD02W9W3060g0C0_100i308CS3004W0000G0o00000WS8DWp1000
+y600W1W001mSaV02000r000WZ000Q200u2C0W1eY13GS300N40080000L000L080K1eIu2W1
+10032WK0C00c180C6KoH4W200Wocz1M2000mmy0GQ88WW4KG198X2IGI020mpmWUdF1WC3L0
+000YD8XLtCm@0000000r100000@50Y000OS500G0H20HuZ8000mglyt000W@2evc5030m300
+0oD@FcP60G000yFe00W00GbL1Y30000Y1GL700800O0U00WP0Wm70mjk1VaQdR9gwM0Lt0SS
+DCXTBHUwIawj4tKN1802Whsy8vA3uB00slTBbk@GvK9ifE3ngVo@wLaIk1nip00WrXa2Evpy
+4YTlbkqzOvzJ0NR0KytCrup0G00WorCuB@7IgdXnsJO_S30W0GjWU24G0Ke020yiy3bEd000
+e0000yCC00EaFXSqI020084G4XZ_De173gEs00W0080000G00G010iCS3000200080G00020
+088000a000MT_X@oD0008400G0080042010004W400012Gmr_64c@30G00VDFXB_D000z600
+0000We0WGG08800W008RM3800000840G000080WaqD0020440G400200GG100G00W080G0WW
+0W010048tRP0010A0G8XfwcGopOC4l10600_Jt00G0922146cd180000WG0g@F1A0000gD0_
+@t0e010BnQG_w60m028fD3W008qfl1Y0G10141y8W10a02GH0000240020000GY85C00100K
+O5X6_JuFV3Qjt0000GG400W0080W80020004g000402G000MwtW1lVeqT3wxnWWcD0n10000
+00e20WFGR0W10001G00010004eacl1Ppp0400G200AZCc0W0040005x@R0001a4zC80y7QvE
+XC@RfwU3wWrWcG2f_@40G08000042KAW00003010W000400000I000040WI008008@oQmG@O
+CEl19PcGu_601001100GUz6SwO2000Gk4t0G0101KPWvt10000WBBPm5wC0G80v1N9G100X0
+00M001q5@600WG00G0000WXN@D010002W0WNCV8s@4wXt0010WH_dG2x90G80OE5C0020000
+WUXyAUytWZ6m00G008C0G4010008000G2020WCQ03W800C_V215dGX56SRV220082vpWJtP8
+Xz4EOd1G0O0rwR000aggsPObT3MttWIGV0040020GWjyD00GW1W002408W0002000GSpl1Vr
+R0120WGvPG000W80008000J_Rmyf6O002fg23800W001008G0GF_600G4O9T30W0110040e0
+Y10H8000000SC0gqm028000001MZF1W000HiRm_@6000000840a842e60fVIQ02XW10HYGW0
+3W00n892400404X02C080X09ddGRi6SVl1G0040GG0CJj19_Rm5w6aml1LaOGvxC0288u7S3
+0800200WaO00mdxF08000Y000012WvzP080eA0W0G0WW004W008hWY4k0W8W0001G000Ge0G
+GI00200L00OZ@78200Cuj10000108016X0I91W800G8X080002884W08X808CS36gs0000G0
+004000018GW4G00mT5600b000G2D000H000G02W8Y4d10W040G1WsbtWWRDuAT30a24000W2
+2010008000a204W400A0H920000amt@6aNN27ia0041000102W00W1402J300XC008000X10
+3W0021A0CW1H2200KqQ_600200051008W0182400020WC02000510000U000O000W0200e0C
+iV2800080G200200190mo160008OLN3YAq040000018JMn00011jDQ000010090@@d0W20W3
+SC05000300622880GW0Ge02200MWE0G104o2H4N40110W000G4X00220008000C00LXR0G00
+040002GGG0800100Wck20ml@643W120G00W0G1G0a0G000002000G008W30500aZf1000G00
+10G0A0QvV30004b4S264000000GWG0v@V600284pl100G400W80085W88G00G00Y00800020
+0GW0I400508m6E60G00CNq40000H5HIeuR3000q100eeJM300002102000W00W81W01GXHbm
+Ac6yOY104000100kGi100410b8G061XaIY00040cF_DOd@42wsWwTC01m42G0WSh040C8004
+3Y0W_02G44_2w3m010uBG4020G0H0H0W30100051E0G000K441010900G40m5W000Gh000WB
+2uY1mW8nJG0008HW90400WI000Mtt04B00018JG000020Cfn_400400m4e10W00oD1WHJD8H
+T3Y5dXp_V000Kbg000gYPcM0pCjegXRHcPsY0yFmPcPKLbg0Fy51W@BIrgM40@l8uXdAm3Fc
+oKL0u@YWBy5L5000XQ2VHCpyYKLLm1Fy0m@@1W@B2kmN400080pdPm4xF80@@70esFy@dP0M
+T0my@00VW10OW3W@@38000maIIuw_48800iuj100W0000O8I1q1W6uDWBmFWVKa0@e8TmHHw
+0lXq1_1k2O2S7n4m820WH405W80A0J0K0c0k0S1CHS3uY00mb1W2000GSNC0949k100OY0G1
+0102O20082010204220P400CH0i0e10WAG00L0A0L0K000e00009100S600W1W002WBW8WC0
+00HWD_J00bgrwr90W00000400_dA0yFco4UgKLGOApWWd@1fAL320@30000ymJf@10imk000
+u10000@G10z000eB6W6Wm0mW3000myG5I0_1W8y3GV_Z1eO7mgnF00008YN0y3k0y@V100y0
+00000uF3mg30br7GDK6C4s6NKtY0000000qXcymSu8Thz3hBpmCRUaoz3W00000CL104WeT6
+327dXQkJG010GHjISWU5veOmFwRK2_3LgJIN_60oQ1eeDLU5Nbw4UOz1Ls2FXgqD01000000
+Cg202FtOGH0I00008K436c@XPUh8fC3UdF102W0G0000G00qrU508000W00aI@900Wy@dlYe
+vDuXU3010G0Y00uhM300WQG01K00A00eW8WjpC001W0040G28004000000GL1l4tnRGU_9yb
+h4PVnGq_6005086S3QXs0mEA0VuR00020W200041004002040ev030I00_gE3hJP00000042
+2200L05A0igl1W11001GG0WG1uQl40040GW00O7_4ol@10002FZPmj@OG000S5V3G0W10000
+7y00m@@6020WwEe4wit0G10WrER0800WfXC0000059G080G18401XG00I040000WW0GG040W
+80W400400aId1LppGkG6KiO55ydmU@9qrl1XcPmv@900WKvnV600G000100808G6zCWG000W
+10mV_600W18_V38C00GGG0SKV300e0I00WeFS3_HXX3YCukVUovt0WP405_@ms_Oi4i1h_RW
+0O0GC0010W00G0400W00G4000400ZizVenS30006Tvo6TWYn4@90080200C@AO94a@3T@BnF
+z6001Wu_U3O00GyVk1zzd0GGG0O0W05kfIPfUK@j1O000004OMul1G00Hkla40404xkR0000
+8O0W04G020000814W000110W00008I1xd00m0WeXJ8y1RYR81mx60pzpmz_6yi36p2PW0000
+01W8Tbd000400018080CG420Cxu30006001C4Nl10860_EN2m0009eN18020082WGW00K06G
+0000mY10000W00W00G400gPtWzqn0G090082WlwC080g00A0WuyD0HC0206G01CaWO108410
+0Up43ZsRW0Y0W6QXPBN3W04WW00000mGURyC0001G402m1ZOW000004GY1Ha00mKXK22L024
+i0556I02000OGOW42804508W0aCy73Tvp0G00501413rpG2S6iDR5LzRmvu6G1000at20184
+0004000WG000A0001S7MF04000041WI02215800e0021000W2A0400108g40008W010K2002
+Vi20004WGH0Yod10K400028UYiY7yDupI3000WGO008HR6AVQ3G0000W028200e008WC2C04
+O26000008B000010010W1400008I0181BxB110OWlSJ0260mr@6a2G2hyBnvz6000A242e04
+00000H8rLm0200eRJh8g@40300a1i100018404Sol100120WWY00020000q36IywV2xqRGbm
+FSyI500X42md1GhL0rmo00G000400L3NH3a98500G2a3000010010bFQ0IX41400004000C2
+04gT5W10000uY0800Oiy4000mb2W4@ydmS960W00000a0000Km040000W8200Kyf18420YSf
+YP_D0WY0GYi600A00000e68CWAuCeo53G900000VfUU600cD6Er9DZBX@10000_@2u8000yr
+jJz908x00F@100002xiJiYV08P70@_F06aT00Jz000p01l@1A8g3Or2Wuk3DBX5NCOw7323s
+00W0W000WxpdXK0aO@_4000O0W000WW000000mpD0jmO000020N40BYRGgsOW80002020Z1Y
+0g0O000K1000Y000m000W1G1mOWAYA0C400K10CuV20yV000009x00eexPKVn0iDR2000OrD
+004Ck10TF_zF00m@00ezRF00y@30047WL70W@E0Y7003NR04n70WyFO0300LT0mN2dGRV@00
+0aX@uy8LU92fZ404000200ojrWQdC00G0mkX6qEE6NZQ00000G080pcR0000mVpD0aE1GQk6
+a2a112uHo@60001w7z4080G000W8VWA6KFX5qD8vI3ICFXInbuEQ30000bKG27iR0000OJ20
+0124o02CaiR2nUQG_0L0008Ooo4YFQcavJe9U300qHazE3ll@mAe6iyU83l@0GB0WahDeMA3
+IX1Z2xze9R60rK04Rl40001cktW3YP0400000K10228G02000000100Q3U3QSmWwuJuBM3Y5
+s0W00055CJyr9000140100000U1300bMa000010084BaPmkJ600eWOtV300W2002000W80Y8
+02CWW08000001000422A000Y40420000440Avo00013PXR0000Y@lDOcfP2UtWMaC000HosK
+9KOk1LvR0204000200040sJo00400R@R0A001W44WJxR0W00820e0000K1041qXX15yR0H00
+002000W40MuAds@JO6T30lD0Sp@3Z5dG289qpl120W0004882O20058m_V6000001G0Gqs9S
+Jl1Thd00W000a00pPcp2W6000000006I00WOxDuqR6QTKYugD000W000GYfyD000410o0W2x
+DOqV30001W082uyV38000_bl10008QpG541000220sO@10CldVdB1000840040100Q@tWttD
+004004000W000RnR0202WUxD02086009020I000G4008000W0eu4300010180010004Y0WkC
+WvOw70P@0Csl1jzR0180W85D0W2081100000YLv@GOC6028121WXnI@60002G0a0W00CWkAD
+OMJ600WGSzv65SMnNi6KqF3000OOB0W4Tl1rZd000YWOyD04H0mb@C0002400800Y030O0GP
+OPGZ_60081QqT30210rkX1W000800WWW100H00002WWsisey_7K800WG01G0000100ZSFJ00
+Wf740210000G800G000GW000G10000015W00W110W800qdU208008G000W10W25I0100Ge8W
+WY008W000I8085829A188ukoD005WGl@60000200X0152WdAJOJsAEcLYSQa0Cn1G2NC0028
+0004X0040068004G00G00800088V38400080020W08W084y4YWW04HG20Y0122000m80H00W
+2W08He0039W02010Ya00bK201GAYYG9000010H0Ku@@A0W020404A4I9e404r2R2000W0000
+JN04000005K0000002G90002PA10020W0fG0G9A100P1amZ@600b000GI8880WC@DWI02400
+00A14000W80WI00G0IG000480m02201800G8W1WY00K08WOm3_L00H0028000m0mB@V8eQ3o
+ds000900W0000WwLx53vYd000000G01DJbGl@6WGW00100GDH600I800XG0804Wx5C008152
+0020H820W01422220aWW0H1W0eW22G000X20svj22000000W4020Ccp35vRmwx906000Si2m
+9c9y@l10W0e030G2C000G10GWu6020800000001bNwD000020400041HtCP00W1aA8D00080
+00040X89W00G00I0022W0001WW0HWcZ9fzO9QcF10008m600gxFXy_D0G008G8GWAwD00WW0
+0001080004200400G06WX0K03W100020000W1m0204DZ1W00W4000yzl1HWR041m014G4040
+Q500H0m60OeR900j20G00ziT3_ad180mAdGy00WJK400000W6g@t001050000Gg9KJ0010ul
+0qgoCazk112aG7060200020kIz@6000e008000DfAB2m@M4W@H50@3ym@7uXd88YFWqYFfTP
+60nk000000Gh700000m750Ba@0uYBWNoh0L10CW100Y00e05C0W80K90l@N0FMj0OdT18kx0
+4q@HSn@3mg30GP70cFBI7uTaEmFmTWtWxCT0tPH2gHWKWynhu@J3oUM20e20000WK0200000
+2100GWz6008000G020u242W0uC00WG000u40006000L07000SHW0006@s00002000g080O0K
+ne2W100G53004000WA00WP020Z1I141A100G0000gA80yVGgILgW7yOcf@fgA11Uu2200IvM
+5000@y700Imc100H92F00o6m000NS0WoA7ks000Ax0GPb1400m@t1etZ7u@@00a@10u10Xu3
+mV000eOF0uzF08RV8Y70GixEs6yVs3PVppt_604_18PSLIs_aTkUuty462NYr@D8Ey7Mfz10
+008_1000840K0U2NaoGhjIizk1R@dmsK6KnD6jhpmWvOC0M2TVl10WYF00040200tmQZTrz0
+G00GWwF0000f5_AI9NbuXV0K@1mPvdi8l1VvRmBzj4P03dsRmByO4oU204005100qqW1000e
+a6004Bl1XFR004GWRvDeqV300W0y6l100010G000G00400W0804WTNCOPB30808CKl12000o
+Gs0G002W0111240G040004eu7V9ivT2BDZnTh9G810000000WHG0e0000C90020900800000
+H01G00020W4WhPF10008nhd0002WbxDWG00GRx6O020ur7302080W08000020a0020G0TjP0
+0G0mC@DG0114G00WczDW000Gxv6yjF3nv910W0H1Y8000400IK0O0000mS1020cWw_D04400
+0800G080000WcEtWE@DuK@400C00202K002100000101G00000W00140G0400XG000080210
+0AIt020W0020GMetW8YCu7@JkedXo@D0000lJ00Wt@D00810W0000Gm0BtRmWz60043ewc4_
+rd10002G800kmt0G010Rgd00200G0W1C00001400W02CByS0002qKU200oiYYt08008hXp00
+G0X@@DW020004008W409GRW8Y8YszDeVV300W8000Ge6B3cZt0040G010040O0G8000140mk
+6m000X00480080G00q4JwdWeZ500002014004W0ibS2v@cmiP6yfg10010000492W000W0o5
+@60G1000W00W0HWZwIOQT300040W408lI3QNl50W004G00000204018XG3W0000000pS800G
+0X00001NxRmbx90004un13W40000000089mU19004Y0100G2q6W0300000100118000FmR00
+02IG200W000ABVZmuzG480mYz600I00W0000WraR@D0400000040410W00GsNFXyvDuMf40H
+4G2000008200000Z000G4000000002GO2I30000W004200CC02EO8G23G6008Z00Cc9C00b0
+000AG1011088011G08018000002dO0004W8eW00G5WZBIOuA3W02804G000e0WG098100AeI
+0W04mZO6Y100G54Y0W80G022G00041C0PI40000W0200008I00GG000mW028GW0B00001u00
+0PF030W808080G0200SW8020WwmV3m1002G010W0A80000030Y40m00408cEW10004W02800
+a0000040001008Y60G0WW0ZG092018W008Ia3gD0204214484GX04001G004ClN2@@F30180
+00XIKAa400a0G900408Y02K2000CR0W0I000AH90GK0Ha0b0000W80Fyd0008Y4SIW200000
+W001400e080WI00000421e401804XWI02W40IO0H90001000002WyDDuiUR00c0002800420
+HAb00010CGI0G00008FL0012009W00O080bG20W20m000C5@42ypWgsD0041002W04eW20DC
+0G0000024084830O200G01KWG10144005000A00200014005@RGZKm001X04080W0610GK10
+0048A25006020008M800m4W02GG10900101XW10800q2CG000W000001W002040080G08002
+GWHaRm4@600HG00410W0a2000W030K0400W8040500020080040n1Qm0op010Y0000040WI0
+102G0042wm000b702004080210b0G0a02K0Gb0GAB1b010002010z6Q04Y0WH@D00008480X
+RxC0248000008880G000G0W0qlqC@@p000WE0G008y541010800G40q1W000Gl000WGNw001
+00mNG4040W400H0GF02000P200KtF3jWR08002Gme820001WG0800er00004V1E10208V5Wo
+Ls00Gl04000PIy1WPs30W@310008P300@@t202V1@3mY0uVmfggWBSL1NuB2kmNKL000akBy
+5nCpB2W@170@Jbg_7JPk8coCH0_@t0000Ym700WF000000008220a000W12010006000ei30
+4E0WZzF04000000p000WhM0WGy10Xu30WmtC0602mMu9qQkAC202m505mDmBWp0N4t0t800S
+H0e0000ehg80AWp0K0t0k0E3SHO2Sp00m41W228BE3000O0W0m0eY00G51004000WB000N02
+0C0K0S1cp00KY000A200m500G7W106Wv6C0xC00KH00Wi5WggB0un7G00Ga2m000EN000W0u
+tV02Qz0Ax@H1z100m30_0000nC21uk@2WV@11pF3m010v57000000GP0tjQ00000X00GoE00
+LT008m000110Cr14000Or000000GPB00yFrk4Grgg@@l1nhdGzIRydIB000mCD00i27FlaZn
+OKX0G00uoV9W008C@D3byR0008ZcqV0002uJS64QU2Tccmeu94f6FtndGExI000GOPv4Q_d1
+WGA0z1GID_6S_k4@nX1G00mx@_9R@4000G1I00O1T60000kZU2LVdmc@6qmZAP@RmDJRqSU5
+vH@ms@9008j_5T3csnWYG3fnM669E11WG0rgRGXO600040020miP9SDd1ZbLnEkF0004002W
+002G080024G11QLt0W00003646Zp0A8000010W0080GK0002W0G0GWpqDu6B3wotWdeC0000
+060G0000000X0_LF10e000G00G00020000050GXp6KkECW000koo000W0VfPGMy6GV000100
+0008W1xC0020001000G00LtPmh@9SpE3B@omq56SvY10004gNtWlDUuRW46JWXg6h0200010
+00180040122Vt0008000QE8000G000W020200W008000081k1mWbhJuO060O08CRl1F0Omq2
+60100000m000800002G100Epie71EgZ07pHu@R8_l6Z@d1v@OK_@5cwApg5000m6100_hv@_
+UoiYRIoRI50008A100oZ630410vElnNLOyQz300G0_btWZrhunR30000Mgg44000Uot000N8
+jMZ10X000400tpR0000mk_DOrV380010000yuA300W80W0G000400I0XzmhOl_4UWNYVrPeT
+yAclt0GS00RgX1W0GWVvJOAQ3s3d10080GG00ADt04W000W00wgrWCkbOXTIQuNY4rJ0000b
+k00WtfnOGM3MwNY3sVOaT3cPt000082800080W001aAXB3QFBXhsb0000C00W2021GbfR000
+20G1000W00W800G0820820Gav6000tzbV6000004K0f1U3000014018lk4000WW00W0000WY
+0G0400180G00000W008Obz40W00004G8SR3G004CHX108201GC00000K00280040W00W0000
+3_s00020020Gc8B1054002K1040002K100uG0901042m02K2L90000YT222WWXG0001000PX
+R00G0au_J0W20GY@9G020001Gml360010CA03QWpWuuD0008002W00e0200O40220WO02OsU
+30100000O0001mVX600G00000Oq@6020001GGHen904O0000G42Y000H0mG4e00WA416O200
+00jW5W00G4100W10001210000054XG0Wt@D08W0S2WCScF3G000gidXMxJm080GRW9040000
+0m2W0W50000020GoJFXyzD000080048020W000W000W008840G1e0040000e0002X02000H0
+000W0500000KW0400FsFXi@D8s@4s@d1040280094G00W5080H0G0I040001080020001yYV
+2xOR000WWahJ8yP6QxdXm@U0000400G00001TiQ0408040024040g_t0W0Q0880000a00010
+0400W8D30e00000106_@10090pQNntzLKvl104I19000ktl1RRyGf@C804o0000048201000
+004WwVs0840mG0008080G0140004DF1100010000Y_rt000W0TzR0100W5NU0C00W00GWB@3
+18W000G00G0000018010280Yf8c23UztWixDG200mc@90080000920000H0WWG0000W0004A
+W00008AW12e016000000aN3000ZG0001W0CW0eaBoKnai6040I0044Hc@CajT5000G00Y0I0
+000C08mx_6yLZ4NkR000800W00000A0000m20400I0000002m2H44200GGGiol14000G0000
+uJe8y@4a024000W082000H2WO3DOtV3wd@XbvVec_7008028W4W04122880082801098W42L
+io30f00001080400110046W910032K70G1Z08WI0GHe241f0333b4Y0018K8192k61000Z8H
+4000000De0120H1m002p28120003200G400IMq0001004G0044204040K08G1_FiTf4a002m
+02W00111eaG20KO020282000002000004440000004W100000080GakJ200K10008040040I
+082A058H20K08YeAg0I224100000WK7YGWCG50000882B2AX0I000H2A00C0000102000041
+uW130000200O400nGd@6W4008fJC0004000W0GAe020eK0We2000W0G40J10000a005K0084
+A0GK9G0000820KeOQ3cUt0A100hHQ0000G2fa2W4081XiA000G0Wcn1b0000cC000000WIA1
+000040e401018G0WKYG00004G900H00008K2000W8000W00090GGKYI02204W801000G40_@
+t00e0GzwR000010G00KG9G0GOGS6k1C000e0400K00W2000110000G0W003GG0A0200TpV30
+4000800eaU3W0800004004832000082G0000004400880000Ym00000008W00000XgH2W000
+8bG1a0000X08020G08G400QpV3001A000W004G082008001Bl_mYv90G000Wm1A000848010
+00AW0061000201W400B2000200S08WH4G01Z60qWme96imV2004200WWCRZ101HG0002210G
+4O0G1000000EjW040000O010W00008240000o040e10100yjl14G00010WG0004OB0004400
+H0000W2EFoWb@D0002o8@6Sul100W4UNtWeEC070040G040Y0X11P008200000GW00o4FXE_
+D000022K8000006120C8Y2XG00028820WG4050004000JU8008008G200W00K01008008040
+W200W000mQu6Kbg12000091K2XY4ePuG00XHGW00G30001200H0008C00410DWm0485W4000
+qA00Y0WD00C00W@@J00K00000G4GG00000y2000G80000002FXH00mB000uC9500000qB00G
+1v6q1W10200000hKdk1020Q110W0SJenDW31sVH80000844W00C0000W50GG0000K9040lmR
+00AW000G2oE0cnU00wVWKbwG4l@1AR10Ks20G0_@d1WRE0lT9Xl20He3W08004XV0wpV0W7_
+0Mj@10G00Hy20V000SCWg0qd@1Wl@1GV_30cS7eW40OuB0H0O4_400g0ivF30GL0wQs300m8
+YG0D5f0w0K1q4eZe3G79IWEIa4Oa89WaHI0P0X0Q2YHa1Cd59861I1oqs00000K400W1G500
+0300080000300WP050C0O8K1mG00WX000000m6I0000Z100c1G0C6W1O60300WP00D_R00K1
+00e9OC2105600Z000mH000l100S1E0G0uI00m4TYi10004000G0O00083010000WC200eg0y
+m31XPcfYggIbgK5SX74coC8LvVGm3_WW7y0mCc1mVCJLL22pC54p0z@l100@@100g3x@3001
+00WnF00ZO00zBC0F00WO00G000a0002000e8Ae0el@0G4t12@_380s50K50nAE0410000W0K
+5p00gdWON00W@vatIMlg4Sl1p4zGD@9000e8jR300aCNEFFpgpme_CyeJ2LUp00010W400G0
+00000WyrY1BVdGEK9iLT23TPGIQ602e0Oh@A0240000000m0uR_FaUi1@XBHgH64V635cdGt
+u9C1U2vVRm6N6SPS29XpGFuC0000dJ00mvuLaZk1W200kzdX4nDeDgAw@oW@@zOau4IIFXjq
+VG004ml@900042004W000000c4d3Ep3x9Sgz35nnGLw90400ejz46NpWszU0G0G000GWLbDe
+BF30001101W8ix40I00Kmk14150Y1Z1WW00001GWG00ijk1G000UQt00G0mLSXHFz6000W08
+028200m2QCeqz4sWpWHuD000C00814002500000150e400010000K21A00WqHO18gC0G2G45
+HC0029082W00000una0004100028K4_9yzU500W0G00GSC130020Qjt0A001jqp0000G1102
+FmPGAw94hl1020001C0000000C0uOJ600000E0eHru6800200003aY00030AG2400110yJl1
+00mVZvt000GGBhd0008010K000W004084fG20W4000G08000OwV3800004080000W00OW2_D
+000GGA_6iPa15@P0002Wr@h00008010mu2C0G0800GW000WW4G008q0G00KH00008CcW1042
+2h8O0WaB000O000W0C3004Af4JVpGr_6ip_6hK_Gq@9Cpc40G80_@F10CG4GW000050GG0m0
+00008040G09224042yF10008cD000008G4820004GmgR4_F3psdmP0FK1O2tGOmC_60080ee
+@40G0uysF3880000040W00010GmkcC000205W004W00002300H00Gq9108Y4000m2HCy@V20
+820piA10G0GPxpGJ_FWY00W0001G00eS_D00010011W7pCOi_7004218m08rJ3out00200G2
+0118H4900CePF3G300108WGG9J0IW0800000tAaVxt0G0000220g_l20W08LNPml79qyV2W0
+0G0000GW020002m@@6iwa1V_OmPdOS_d10000401400800000H4f68803u6q42O81000W660
+4000m040Yu@D9oxt30000j6a020000GX0hxRmpG60WG200W0Gpg64XV2001I000080WW0802
+00O008GG00G0440Y80012mCWmaY8gG1108412O404W050HI0Sn50403010000kHW5X410W42
+88200g0XdNb0008200I000200008000OLlQ2X2Q00920000000118820G148082W8020020C
+0088008W08G0000008C0WWdKP000142021W002zyRW00GGY003GcK0014001W80206804WOb
+mXWAX0I10053AI00f000m3X00W8mGC21920004G1ud@7c8m00W1W0G00h4r0100000G4UlD1
+G40W0010002800014182mIPF4kV5K0000008SVc10K950009WW8K8ha442XWH1W0408002K2
+IW0144W0W000G9C0100004WK2W1@hG2000500012000080000G25bK2W0000IG900905scmm
+0600b0000WW81Gfn0V0100mXl9CKW1000G0W0010800aQ0mNT60K0000H0GLX60WH101G001
+41G40W08AC40A1000uU640aWG0W0400000A0_@@XvsCOdN3G00000H01140H7cFqpR28G40G
+GH800208CuDYvD12W00O23m480m4xc18G00003000855201W8113e0208Y00W0GO1m0G1000
+0O018G8H0002G2Bk280200041o3r0BW2G0W10_@t01aW8G00GW0G0yMj100808W080030ONn
+A_@@10G20041G00000G14u@V300011W00W01004G08DGW024820G2228004C0AWG001000Cu
+55209000XX80000KLdFCWd100W002G10081eG73M0M20200B_PmUj6KjT80WG00000W0Y381
+E3I1W1m40040m40400G0X0000G940000Q2000q8HB400Q0D100000G2WEeb0004008620002
+CXo0000Wx5W00W000G020K80000K20090000I8U03Amq00_2000Hy@@73Qf5008D0000CZP0
+iy@V3000iZTMc6xG4l0W8U10A100E000_@Z0r@7HZyVA060V000S14l0gwF1m_@W0000OW0y
+@l400D0000WBy0m@@@G0UL10sO3O@N3IdCX5LV06000C0L400O0000H000G000m080e8mC33
+06200C000GH000C000g0C0e2GXG5eH1O0000KE4600mQ000L02000ibL9890001021002400
+eacvC0m0W1mD10WV00N8R00W000830003GCWAWn000I100Wi3WT@300008cnE00008Ylwr70
+00LXbf100000Ld600000000MulxiOQe10G000400Q1500W00je5G82V0E00W@10yJL040000
+EEvN00w@0G4_000000p@@V00YM4000WOuIW2A4mWs68U00Ovz4000xwV0000000@1FJ10K42
+WV0_@@aoCIeFy4kh53WiD0tcFsRkFqPU50400_3FXNqJ8x13KF00y@V500m0gucX6kVuC@7Q
+plY@rJe@SFsQlYxsD8lQ300e9cus6RlBHZD6yo@F@bNn_gFK@F30v00MeVZ9wn8IXDs8dX5s
+VO@S36Bt0C00W5oR008WG81000001882002008bP30023A80000080W001000qs5W0000011
+40gF_A020000028tS3ADtWE0IO1_4ooF100W0XIRm6z9CKV2010WEepWBxC000020W000202
+0G0Gwjp02G04G0018C00180801W400W050003G0K08GG000uFc08Xqpw90004uPO30480qSr
+3402002020140e073_Bo0C0WAhxp020100G00nIdmczC0001044002G0W3@D0242mQ090mW0
+000000W9000860060000O02220E81000GW3_D0ma2065400WG0hscGQf9iqV2G000G000080
+W0208mmU9G000000K00e0WcwO0480mgz6S_V2vWdGn@F010W10000X08002W0W000802CW01
+0G0W00004010000002G100O008281C1000UOY00frd040001420T_pGK@604200410000008
+0W00800G000qpZ1RS@mYi6Cg@680H0oatWMfV00820000YH@JW000004GWDZC00000000qS_
+teo83QydXEAbOXR6QzqZ7AC8xR36@N2000W0A000G400GG000G0800a00000081806008yn0
+0000OUb6SBl1fkRW0200000H0O4000A00001048Y800008a284140YKJ2040XnjpGJtIiql1
+00088000qaf1b1RmK_9GC100W00GzZ6i8V2XwR0000Mk3005_LHk@6aHX1P@R000Jer@DO89
+3oUdXTvD8123cHD4088082OA_IF1G410fnp024080a0102010G0G0010200000W1lTvJ8S43
+0W00000WOaU3Uot0G200GK00gkaXGwVuwV3G10000I8ezV3QU1300Y00O4G810Y0805ulU60
+G800080X4W4000003022400G51A00G4000220G0000e50DHO0G01Wg_DeFI3oVp0C8IW004G
+008Y0010m820CX414C120dwdGrv9004G500004H40AW00R2M100W000W00W0K51000m8GIWH
+0X0G5WO@D008Y8000HG400G200W8020n00I40WX0H0044020416X04G0000aH00Grq900000
+G0G000000Y06G0W010001100W02I200WKW82000W0c_t009A0n_@001000W80404WMtF1010
+0FEpmTc60W4W400e400GG9010Blb00W400eG80040aG0A10183Y0e4b00H8084K20000Y800
+W000WE90082000G02000G40KBW15OQ000G10090000W000100040G0g0W02W@uC8BU3EZFXj
+zCWIX001Y81Ge400G40IRtWG_PeL03Ge8A002000EGemGWWqfJW800000G10G8X0W050G060
+82800680D2Z0Y000C800G0000eE000W2008W00e000502srt0004WZ@RGt06G1G0000G0P01
+2G401VhpGxw90030000G00KW0WI80LiRGkmL0W0208880a0404010bjd00WZ000020v90W8G
+000d01G4010143010W8000O1K1W0001000g1300000002W02kq000108000W00W00e022203
+1102A2G4I0G800G2G240uJK341X22W10OVs70WX2Y062OB_4E0j2G0HK000W800aIe008qS6
+00020024420G9080221WbGG0AGW00214000e440140006Z200A00000BGYuV23000010038y
+43Agt0YK004W000020U7C3x@p000WI00002GW010c8Y00W10000G10ePxP00m0G6@6Cig1eF
+2000WliEE3G00YbG200XNeN04000V1H0G02A20410z28000a9000uk1E0G000K44101G8000
+iJ0300XW4el1FqR0u00000e80A00001hi_l10208000W0SH0uQ@4000820w0G00GO7T9qlF3
+vbP00OnIf100IZPc10Uu5373D_R0ggQ1@7_YOcv51m@WZPc1W@gIbgM40_leg000O0ULB2Uu
+NaggI50_7SXpELgAH02o910004q5000AGZ904uI0a@l0_@F1e0py7000n50y@@3ggA00WgKf
+g5mKcBgAY0008000dqQm3@60008AhT3040M300C3WX10033W2yJ00A200K1GX00e43024605
+GH0A060M0C0TCO0gS00mW0G1000Od7G0K040e080O1G0GWW0W010010008200GGH8040H0g0
+G0K1eYY4G559128I2W104WA0102WnC406100yq_90008Wp000t0k800SH0e00cZV3fP9008D
+MCD0ieb0ii9z4e600GB00G0OZD0qQ710uV0000u7Yu30241ur20WoE000000G70seN20SH0G
+in0CpCG0UufIL@30@3YAL540oC80yVG0uVC1008mLWzF00W@700WF0hE00MT0Hy5oxkFSyy3
+fg_00G00000W07G0IZ6ZBpPeJQ9oKAXjoh0000HrR9y3h4v@RG8J6KsF3XqRmJJ9Kwl100Ar
+IfZd@qP8rS6YVtWSsu1W00GK_90CZ0fVpAgsMYOEJevy7_XsWfQbe5W4AQMYqcJ0800GYbCq
+zh1xBp00400000evxOmGyp0800u9A9MrjYXwJelL38000I0080030W020000100G04ARd1WW
+80BHR0I0000002G040000CFMi1jpdmzy6yVl1jep00G1WitD0G000000aX2guBV3GW00aBk1
+20000280iHl10001800G002100400G00eadPWW0W000100GW0aH10802280444W20Giy6000
+208000uQ1000000402IpNYalDuf@4IFm00m000G008022000000C8m@O9qXS20084YztWQcb
+0080WW0408804W00080250W0GecV300108G0000044200Wu7Deck440103000sT01GaI9ywV
+29zR00W0X1uJ0000o_z6i7f1BjbmQyL4xV2NmRG2n68W00uQs4c2Z10e22lyR040C004002W
+3144G10040eeV3W00000Gjk8S6QbpWKog001001000800200040G020100200mGw@90100e8
+HC_vd10a02040W83X0Co@3Jgbmu@L0QI9xIE96QS3GG00LgdGz@aqBR2TxRmGT9iti1Lrb00
+0W00800Wa00YndXPzD0004Za100004WnE6oS@600G0OLV6_2jYOsn00G8002004200X5PGaV
+6i8U22006EgtWKva00WWw@@682000000smbL000G000032000K000p_R0000a_xDud1CcYN2
+0104020W0100000OW048JSwCqF@300W0kVW1W000WsT0_sqZPEheGXM0000010W000W1G124
+YG108Gr0W0000W908rV30GG200040X200A0004Y0095aGn66000020003u0W00010NAnmKzF
+iwl1WG00wMtWGACO0U34000sI19000O00002GHG042Y840480GCX8L80cyF12200000G0G08
+G0W1fGv4sTd100Epa100G4G0G0000008LCrL000GW8004W0004100804GW800080meU1Lc2d
+1G000W48000082001QFU9YV73WS40z@lX400WbvI000a0042e@uDu_J30WIG2000ekq7Y713
+4I4000Wmsvt00P009zdGP@6C1k1dMM1000Cn1003Tu1200W0iD0042008W0042084024W204
+vV2RPwnQkC00W00006400028Q00P1om_F60W00Av@A00WDkhQ2t3B1003000G02W0eXW00c_
+X100408oW00000m1W00Y008000G9Ydm9yU0W004Y00WAG01H4422001088Gar03G0G00C10G
+0020008KQaI0IX3eg@4UDNYExCOxT300820W10ykQ3W000L0l19K6o_n9080I8gV3ISp00A2
+0b_RmC790800W800GtuI0000au00GnoU000eX0200G90kQ1C84U300C4W8G0tA000000eUuC
+eAbD000C30Uu10ym3cjCjGpC0BJ3GOu906W10008040084700vZb0r10Wm@J00GI20000040
+eO70000GPVu@30u@@000000k30000002300hE000UmJdUc4nD00g080e2GXG5GA20WK400a8
+E3G0m000G4jwU200040G00SpV2Wu60s6tWseDeP@700600000pJ00Gc_6W8000H020C048O0
+SHdXRG9t9q4739xB1c1mIf1WbIZPBb6UunCym30CpC0C3WI@D00gAA00000GL0fOp0000Jv2
+00d@R0000Ma30000000Ax04zz9zqQGREFSOTBNLNHD@IifV2RvRm0gIKD0CBMBnMu6CiD3W0
+000840cHB3ZNNHI@I0iY0OQy40800qli1N_pG9n6CH@3vZRGFzCy@@6xLR00008000W01G0w
+1waZRJ0000bU10WOgD84F3grIYmX89PT6APcXRnzOjjA2INYmmb0m00GV@Fiki1400WAkJYG
+cPOA5I0000000AG08Y0042WeuJ0CW0KBy605WG1G8000W000208prRGWu60ex18UP3sOvaHu
+aO_T300W000e0iglA0200ctV20G4164F10288000002200004QYN3028008041000000IW1w
+D00012000Ac002PGWnWULyLU2Bsd0800WWw9fz@4KG0H8000AbS3000WW0W1Q2J300G0160Y
+0010800000Z00rDO0O04000Vz0W00000880028k1I0080SZZ1hpp00080000WLeQGn_IKtG2
+FcPGGH9alj1Z@RW010G0000m024QBt0G000Tkp0u93WDydvJsAoptW1rCeg@A0W0G8200W00
+02000Y9dD8Xa7ARt00400daR0000G0080000WJ8EXFELfoCLAnK2100YLip000W210000W00
+dqs00200800CG88W004GW40000401001008AztjCd7qmu9FCW0004Ok1W000lHt000WW0008
+03200008620Y1000G4W000000O290028W054100W00G0000KI0MDDaJCs0000Kwl6K086D8p
+G7f90G04A9V3000W008004024C20028a0800081WWWG80O1T3000W026000005P10W1j2P4_
+A000Wq4D3hnd0020WVcP8xF3_Dq000gA20000GW012090001W002002IW0HY802M3GG0WG42
+GA0500XIaG29GX84GGW0A40021X8400008bvm6208OWMQI8hq780400420u5J3YldXizh000
+W000400mC08200m2001000400Y0000HW00040KaW03a0044203I002aGY080Oa5W12800GI8
+0e000md1WuSEfWV9_WnWqDDuiU600080850000010K0W2@hW00200K2000900080001W000K
+2W000000GA10000W2M3W1004G000OL500iDt6D0Om60904W02a00mlz600001G040000atmI
+uK@700GASBZ1n@d00W2o_qJ8ij4aaa0002W0040000W0A02082000W2GjTd14000001000Gm
+QeWD000G_wl1BFa0280WmmP0000PA094t9300e000000W180000m6o900400H00mC@6001av
+l_40004044400W1a0402K4000000W00WW0000088m@@60EC18aICcoD1200082000070iyk1
+00118O070000030000G000040vKAnmeCypV22008W00Ge0W2008YG3l6G00000K000050000
+8481IG922ysj1fjQm4h60000Jq00GVmR0000vi43cirW0bJ8Bk40000002WuzV6GW0020aCX
+000C00040001a0006E@Xb5CmA0100W08Y000ppO0wJ0100uB0e008409000004C1ms@600H0
+00W5JOeLG0010040GZ_6002E0100W6W00000u4180cemWmmD0K00000La8IL1pp000I30000
+BnmP0008822006000uEKH90q@N0g310U@T1ekgyNVyvV@@JCH0e2430Ug0CJT8000m2CR30C
+Be0000uVO0q_l10O00004000c010I2C200a4vDOGO3IWp0c1O000eoI1m0000200051CHc1e
+o00WX1GWS600C040O0gHe2G100W22000000bXJ56100E@n0G000m0a100WX000884H30C080
+O2G8CS3kkt00G4m0000NTb40gQL00W@Bts0EZG0_3E0000000@100Wwlt30V@70u0D02yF0@
+uN0_Nr0GX700000000uV000Oq5s3F@wfInfdqxT50qP0w4@X@XJ8jfJ21NYPQJ00100010md
+oDeYy4MZAXK0UuES3Y2u1000G000eu500KPE30100xB@1G00200W0keZXK@D0W1A80Y00000
+W0050AHFXpwOesy4wwtWHxDOMT3A7lYcrD8pW70040000bjRz40200qbk1VgBnNUF4DW13BP
+GLxC4Sm3pfRG0nRav_3hmY1Wq6Wcr2H000mPrFihj1040I0000000mvyV6000GX000000084
+0010202FCOmvy909000000120GWCwPeLT300W1imC3BIR00G20000ec50WEjEXP@D0W08mbz
+9aWl100XegBpWauzeYQ60W0000Ge041010040G0W0LwR0G0010000A1000X000000a002000
+0G2000NLa0004WodC0000O2@6008000WXte_9Kfg10000put0020055Q0G00X8yP00G0e000
+104G00004UmFXGyDOTO6400080a1W2001WG0WpBD000080200000Z0W0GwnoWNwD8pK3000G
+80W00G00mw_60040OUQ304000ak1O4V3K0000G080W0000W10a000000G_0m040040GW0_@t
+W_DD0G0G008002800WW002BdXDsD0000SQE6010WeOT3sSE1000042000000suj1d@RG@G6y
+yP2Fz@00G20000ui600IxF4000F5rZnrrjiPl10m000W10_aj4bZZ100@maz3PJ23Y473001
+02200YvkYdWb01G0G3z64lV2huRmD_6yAy3xXdW0F4W4wDuvz7W000DuV2VsQGfuOCMS5hn@
+mC_9Cal1JHpmoRX000WpL00W000YQy2v7WFsn_XPZPOIv7EalYGFC8oT9w0q0mP40TrdGRZI
+0004000W002012001nLzGo_CG000W002msx9000W0204G1@CK6T2O000m000000u0080mU@6
+G0W08jV3wecXy_DumO3000WX9000000of96K5E3P_R014000C00RoRmmW6K@F30G808000G0
+24Oj26_N9Xpzb00808000G0C00G000dg_XaMDOc_A00ib@Yj10H00k@N20W0000010018G02
+0ChUCG0I00800OSV60200005Ke3j4UlB1A00H2H000eI41004110emw@6080Wij@4U@E1000
+200052ZE1Wl50001080G0n400eFF6800000W8W11000KYer@PeZk700WG28b0QxEIw@t0a20
+4LvOGrt94od1zkRGYu90W000008IV_6000Wad00WY0004G0GbhB1202qs8Ce5yD010043d40
+04GQ_dXpsCOOy4000G1020eZv40008G004ORJ6AcZ1800000Ybt_tWH@V0WW0mt@90110004
+Wmi_6SH730000804mySl10G012w@anrD0G00HPv9q@l1NWNHq_60Yd0euK3Q@V300800500w
+sk204005oRm@@9Smd1Q000kUd10K00JpR00800010j20000O3GKKk1HuR00Wg0402nM100k_
+d142009oR0PW3W8mJuz_4030000G1exV3000q30000ecG0906WYvV00GL0000Oh0003nVIn@
+90yI300W7mu@60vz10000km30Wq_n00mqbu300000yl_pGDsC00000G150WoEWs@hWJ00000
+u7Fe00T_dmFA6000W0800mAS6qBD300304YAWpC00Cnj400G0W9000602000@i9gV08Y0G@@
+60Wq9AtD30400axM20W9024m00W10001mu600X800m0000910WWrP8BE3000O08000Ol1GgS
+900000008wR@OGBY0000G00A5WrO3H_10GOu6S2S800YutD2czmpvh@A00qkazEChwNHRvLi
+6E31gPGmrI800000W0ml@6qRs31xRW0000muT00000090GqT_3HepGCS6800083z4o7uXX@D
+uET9Y2GYavD8@kAIAe2008000089C00itU5Xk@GeTFC@_3vljHEkOK3F3znl1040000dC400
+000G0qrk1bLNHCS6001083T3sqFXNwP0G00mJzIqyk4nl@GjzFq2l1bKP0000eNOI0OR1m3_
+6W00000005X10WG@J020G80W2WGvPe_i4I@t0G010x@RW00W00G00TkdGHX60000fUD30G0G
+4fl1XlpGk_9iG73hU@mSe60000ab00mEzF0200K00002190W01000000240000G00GG040W0
+04G4rvOmJ_6010000400020WivDei@4Yh_14002@@R00G8WZxt000W00G000400BfRGQi600
+4000GJr@@6ayc1WXK0_st0000G0O08000mKlN209000GG0G0H0QlJ300W0SPU200046ntWW@
+JOZT3sBpWxbIe_Q90000cAF6Vjp0Go0WLlV0001004000W04000YRyFX9AO8@@40140000GO
+S83oU8X5st86V3wwDXKzV0086G1uOO8008KS68020000201000020X2zPudV3MwFXf@IuSG3
+kJ6c4MK110000Yue2@D0004W000W19I0010mhW6qXU2@eaG@@9ytU20400_aVZt_9PxDF01J
+0igV2rwRGw_9qel1@mBnlzF48l1FopmAxXao@300W8IwV3000a0304sr@XswDeOD6YaWXB_P
+0002G8@LC7F9nsp00G40H000Ntdm9WF008I4048000WWoyD002WW00800601000280204lS2
+20000028Cyk1jGOG1@6W0000G80moWFKWE3RB_Gfc6yp@3XLQmc2LiPf10nV0_@t00W0240W
+0_@t04020G08000900102OKI3IwtW2wJexV3Itt0a008fx@0810W7kDG8A0G6tCSOl1L9N10
+0mWhxV8qV30080000WZ900Gn@6G01081E3000ACfY1KW40a0004JU2000C0W2Ayof1ZYdGfm
+LClE608000004a_53B@kHK0900W2FlS3G00WWK008rz4wyt01100@@p0022WZJOOcTCwsFXK
+GJetv70008qc03JoBHjh9Stl1WU8008800004iXU3aX0000YWuwz40200K@T2404Gwem0000
+70C00010W01010081G7l9qWx3tydmenIimF300Y0s5TZo_D8L83Yfd100G0VJLHu@Cq6k108
+0G0025iox38I0010GcyCf100022UtW9@PujS3kzFae0C0e00000cdo0O000Gh1000Ws0Xxwd
+0400WrND014EGAT64Ol1WW0200e9000000892100WlH8Pp@4KM00KCE9rnb0uRiwi5O0W16m
+Er9u@_1OgLI4m@xNKD3XXR00G04001m820GkXx18000008YIfkYYvPeCE3_bn0000qAb80IW
+B1001Oy30G8200G4008Q0301W0a8d1000PIfp0W0020H48_AFX6vC0000SCFpqxV20uU0000
+_xz0_Fy@A000a@@F3000C50GPB00gEo26YXp004K03MO00002n300DZhoz96q5E9T@Z10G0m
+h5aeWD9Qaz10W84WG00Q6j200802000X0000002204W00G00000Y2002Ixt0048000000G88
+0G02CoV3G400qvl1NWQ0000G000W0020h_F1000C01G0YXqWw@DOrZ400W00G01e_x4gvn00
+280lFRGWP6a@j1G0I0MTs0H00000m0_JlYogI8KW4Y3t00002rcBnyo6CnU200Qj1100K2W1
+j@RGXh64Kk1VRP0000WaLD0000O4U9yfQ2LY@001020800TmR0A00XqVCGW40Gku6CSL2fXc
+mSRFK4V50NFG6FtWgYPOqr4MYcX7wD00200000108C00200080W00000010Q5y6CpZ1NyR00
+001024G@zpWW10WXmI8xS3spc108W0XldGrz6W006Y0020014G000SE500_@F11221blb044
+GWnqD81r7Mpt04800000W0eW000002WG0Lcq90002002WoCj6C@j1zwR00050000400WOkOt
+000W04040QUnWtXIW0080H20mp@J0W0G00092000000C8180X00020280WOW9G2802W80O0g
+602WG04020840031W11010808WG00120482801KG01GWG4G008Y8060WW00G180G00000004
+900000G8W1400W0A482000G0G0R6tWSuD0KO0Ga@6SQc10014_0Y182018020010G00G0eeV
+30010f0600Wm010000G9E8DuR000080n3GAG0G00mmW5O0041H000X800a00202808W08W00
+02002000W44W00020210082000030021a0tCG0W000008W038tWdmLv6ioE30100m200aXF3
+DxyW02GWtwP000201002000Gg600G000001400221020WOyD000A000OWLXD8bQ3000100W0
+f8T384G100X8000340u000000240WpbdX4tDuK53_vkYheO88xAW00000040X00400050000
+00kfBOA1C8002080004Wy_l108040020yw731s@Gv@C0110ufA6MKEX_2PuD_4oBdXfkaOOV
+3sot0208400004Xg0qNl15BP0W0002802F@Rmz@6080Ge923kKAXuzD00404aG0W_wJ8ER32
+S7Z5s2fu@4AwtW2zDWW30000A00008m200000G0G00e263GO002102040G08000GA00HRP00
+G0006010000W1084N_3B_dGIz9yXz3tepGayXCYV20200cHt0200000gZsxF10100Y000G40
+0W000Y0K0400000W20cW004000G0W00000200020W100W0W8050aZU2tnBnRw900H00000O6
+26a@035xWHrV9001W1000A0K400WW080000HQ000000G02W0510G0030D06950416WXG10J0
+0061e0G001WH080100051W01G7p6000v02440000mbpDWW00W008080000WX02ZsW8nDeF36
+MunWD5J8JV6Mfd100m008W8M@t08mW00I110CK00000N108qCa60G6H000201100A6110W00
+100C01180W4Y801000G4W0002000C018O448Wmbs6W140u6O3400000200030000002020Xt
+pmAu64gk1010W6lE1000WK2000100iwA3JVR00010A10G22W4e4000W4G00A1000RvN0CW20
+e80820A181400CWYIG204W20A0424G000WI80000G20qEP20G000WI44ul1Ded0800WboD00
+A1004100001frnmdtIC5U21N@GU06008mW80G0H41YtGD0ad3010G00G00002H00X4G6510H
+2282002100G0W0n02800020A5u7I1mWN_D8cU300X0D_V2zXdG4J6C8a1z@R0110WUUI00m0
+00000C03000C2000G0000PPG3Int0W0G10900C08101413000gl0000000WZ0002000e11m1
+000Y0002000002W2JB10001nnd0001K0WG0Gm28K010CtF30WG000K00060gp@76psWNAXfJ
+L3ktt000hal_pW000eG@J0018ICz9y2W1DyRW060000000XG0EX@XY_DezD3WA00b_T2004e
+O2400000zu_40G00000M1G00000IaoxJG14000IW620820b0W00W0000020KV0000Sl0000D
+V2H0000eN00002020100Gl1804mz2C50000K200mV_6WM008CN3gvF1010b00000B10ScE30
+We10000u5000000W@P6000Wk_300gvl200SmlK720K73S50W2C0W100mI800e@V3ml@00000
+0Y00AS300L700000O02W82V00004NLuuF0G00Oe_7ondXSlD02030804080Y800O2o1F1030
+07KQ0mC1Wn@J00G0CYW0010086100S400030004W30C080O0_900C@0000008AK80001100O
+000m0y3W1Ol10mF200Kq806080m0eo01mC3WWWDObS30060A080d900GA09Sjl1m0a100Ocz
+@@3P6K100We@wU00W@VIdC00000WLxVgc6GV000KBID04rL0000e6Or7@t045K00y@0ew@1G
+Rei70000m@dU@20000Wx100lxT00HT0000K00mJL00004000r7yk1e300wGEXgiJ8MU300G0
+W0000020mF86iz@3lERmpFOC@j1000GS400KuF6HEQmvZ9CJU8ZqR0002WQID00G0000G020
+0004m009202G0140G0Gj_6020Wy_V300W0020W0WG2GBRC0201v_P3I3o000jhXnbmxu9qpl
+1040W0040000X8Tj4000G2G008Gx4YOB10004RaP00W400220R_p0028We0O8KR3ISB10080
+040W00G022008m03w78XKJD0020e0000GcE095m0002W_sDe2E3_aoWItJec46IAWXntD002
+00010GG804000GgOnWTzJ01G5G4U94Bt3ZKRGB_C00G0i9@400800000LR00Gs3U0000f6z7
+wAqWsiVu5F3cns0000100WWW010rMk1nydmfN60100SUC30800Y0000040unt60040000MGT
+P60W002W0200Ha2020000mW0804004040CW842028080G4u0100W2K000010000408000NcR
+0020mYyDers400008002uE@4000020eGG00020K00420020480I00000100WG04000Y00000
+44000WMUd1zbO0G200W00W00G000AH00G0I0W824WG4200400L80100GG000408020000W31
+0W400W0W2882G0000450014u80G00C04n0KOGG0208I2G2G0000O601440020W04G108WG4X
+000W0G04C58akB3W02000W080800604220G00004410002000W00fcV30G0020e0eIG38004
+20014020100I000000a80C00C0Y000BG4000X0232A02Ga00413m0G00006uH00C200G4u2W
+0080m0060121HH40O1530HKa1A0G01Wm01e022000u0K0050G008m0O0010H0000W8000420
+104000aoh1W00W00008e0400WG0000000GKGI00000000204040GxY6CLg1DhcmIi6000050
+08GZx60G90G0G0ma@941X100_adRr0008m6G000W0800Y2ee_48010y8S2H_d000W4081000
+0G0090rTF3000OQdzX0zDW000INtX000G000OGsZ984000200W8000G000W00008NW4We1I0
+000XW1000004080804WwvDe9E3G42G00800G10mLc60W00gcR6_@N200840G02080080G0uj
+U3_stWA9DeAo7YEF120O0000WO040G008GW48nDy6W0000004fl400040m8008YxF1400000
+00H400Y00G000OmdS90W040028000401GW1080G800WC5U5G404RoEXjsV89_AUv8X9qPOPU
+3W000200000GYRNt6800GW0000402XAhD02000400Gq012r2Rm2@600WW0008G2U90006eJy
+A0W01bsl10120G000G000eMu7gnsW_mPGY00W000WcDD0G40Gs0600W0000a40000GYG0WW8
+0002GKtV20G005002020GwBG326n04m0WC2G000GW040G00WWGZfCyck408K40W00040204W
+W000010010@KQGD56SLP2v@R0080000GG2O0000B0W00042004A0W34W8404YG482W0YO010
+00A4c0OC30K8G08W00WG040G00404G94580f4iG2880Y01YW022C2W0I1e00g420W0eI020I
+G000901001Z000000WktN282OX00G4512800WGO9I3k_FX@2PeN_4W0340024088800u00GW
+W404Y0080e0W1002400000Xz5D0040062808E00G00CG0I000G80400140010052e1000e22
+140OW00G1X4008e0G0Wa0000Cf040I003W10j408001WB10b200e4G80G0410A10001Y000W
+0008000028H400H00W0000W8000800GY001W0408IW81WI44YWa20W040081GW0GAX018b10
+e4O1K00002K20000f0030804A10J0J202bIWD40W04WG90426W00bK20008WaH1G006001GK
+Ge0W000G9A1I90008e400200G08A1040000e40@@@0G0W44G0Gq00G1010G10C000G050e80
+001800C10e0W0000060G5a60028006W0G0W001040100G000201001404O50C0GG0W00Y000
+40000Jn0002140400GY0C2001100020W0G050G820818000e1102W00000K440020KK88W02
+40WG1009W2GW004GWL_D0100000WG4200@@R0pm08Gm0G02O800010a08021G06W048260i0
+8W40400000303004CW10804W0000WW8050001W1000e12088000O0G08tqd1Y0020000Y100
+000u20WG6020G800WG0200m0C200G200W8C01000c0W080G0A0G4W0W01000G4a010004a50
+40A0104XZW00400G60000004X000u@S60W5410AGY0I000I40G0A801800PYWG048G081690
+008040Gi4004002H0ae@V30W8014420m00mul6G808f2U300G06Ga1WG00gIF104W0m00000
+W20W000400001Gag@D00220004Yx_D0104m3n60G00AQT6oHD100748000j2Y0W00200820w
+G8000eDm30200Woa2W1G40u0G000GHW30400Wb1myxD00qB0000GcGB0000mP2G04Yl1eV00
+02ul000Wmw0L100W8h000000202G0W_2800W@2wD0G00yFPnP000WGFO00Ge1wH2000yN000
+02020000Gt0000mz20a0000oA00000WmazJW@BgALNKLg200_7ym1FLLPHCpqYmxl5X7UBoC
+pf0m0uhAH0yF0000g00000Wd10y10eg30WOmD0002As10WmmJ00Gv8F0uVL5000mC2G0WLV9
+k120W_50KSB0000zwxF0h_70080yy00yJ410H410Yu314nd2100e0400E7tWM@V000K40AWB
+0KWR0k0k0kHC1SZ00m41W28205m40AW9WL0J0Z8c06H00SA06W90002030C068K0cS00mW00
+0b100K400W1W1030NWA0pF00SP000000Sp6mAS60G0m0udX1mD30Wz600OC000L000C050O0
+kZm0KZ00e6100u600030006W10C0x9O0sJ00Ct_@t000WE00000_10S@l10uP0yFp0O74y60
+0O780mZEIV8PzDYKm08YF00MT0100000s10u10eg30K000uCsC0y@31uX1y0000eg102n70G
+oE0000082@00Wy00000iwpmDG00aj00000ypF0200uEY00Y82uHS3IjjYoRPOCo4O400yJP5
+5xlnl@600ea8SS6Evt00008z@8nIy60111OrV96B@XnkDG002mj@6CUM2pyR0010G0080vWR
+GkO9C5U2j2K1m43WbDD8tV38e00yBh1R@R0840Wc@V8m@7QQpW6Nh8wEC6ztWujDeZT3IusW
+jeCegV9000mvM00OGy4001HiRk1LkR000088000zxRm2t6iEh1HxvHQw60010ChS6I6F1001
+0nLPmKxCawR5@Xd000VhX_J8@t7s0kYIrbeZL3IzdX7mJ00020WHG00m0W000HwCt0824020
+0000YY0400040WmgV60015010Y8G00mdtD000086W0004020K00W001240004Y100m80Q100
+m0Xe00W0010G108WmlS60541400g00H012W10GK00W000010000b004080K004XtR00G0W2s
+J0Y000000G0Y064W80G02000G50We008000028000W00AW000400A108I44W0nDGC0Wg0084
+061A80410H000P060WH8W0012030000K00G88W4G01W0e0000OT00824408g808000G00409
+000040fW040G888000mW4WY00W000006003O83G0281008100010G1W01RzQ0400WnoCeSV3
+0X0300KGu@O30C2G000H110C2e000480K80000G4G004Weu_4W0000020X82002K003048WW
+3W8K0200W024308O001A2mW0C2GWu80000J20GCg8O0B1WW2G608000e09020287401450Y4
+WW00444W8012G400B0W2670Y00G0W98G0001190500WW00020W0BMPGTy60000H418820000
+4W0000000GISIl1000G_fs008a00A0W006a04W00Wq00Pe00G00WWGH010C0sAf1W0007wFX
+RQJ0Ks300000030404000010W100e@_4GG00G8Oe8zV3e004qpl10080QRqWDOD8x16gLt0K
+0000G086WEXLzDW00GqOL600801000a004evvDeWx4kbF10400xbPmd_9000W7y00G6r6800
+00040101008a00400410040014OqV3ovs000W00000BDBXdyDuON3_ydXg@DWW00GjmCC7j1
+04I0W0002800ezA32m_10G82JER0100Wy0D8AU30G4Vq0f10100n000S2j1001W0W8G00040
+080GJw6Sll12081wbt00O00BGQG4h6yek491RGq@900G000W0KuT6000W0W004000cTxDeqS
+6000102000010G_164nU2WjE00040ina19hRGyB6004a82z40O0WyvD30G08UI@10100jadm
+S3C4R_3W0000401030COWU30W0YCvk14010AIEXyIDO9U3Q3t0000uq5a0odEX9uJ00G2000
+20G080WW0m0Ha000003Y00a010WvpDW00000Y4WWqJuFU36rF1A0G02004AksWFyDuSG304H
+0W0G8aG1e2WPc00G000c80GW0W0W100100040WWQuD0101220004G20@PP00080010000gv1
+I0000e0084905008C004A000W00102c1WW4e0K40224e0Y9021GW01003104000084W000YG
+1043G00200001AmtwLG800H00004K1WszJ0H8000G44020004G0000W2q80G0000aY000000
+b4QW0800H100800008H8000G010WmeU90EM100014081000204200H22W00C411GG40GC400
+8W20140KW00G0m0G40048018M422400W030Twl1vvP00W0HW200lvp00080Ae00@@d000G10
+001Y00be4000100XI0000001W0000G001YI01m22000e40008CW08020480W0G1W8uS_4000
+A1000ZL0004I040e4HW200WW2400108MV30O0A1eo040G10W4102W00008GX0a0X3bK2P020
+f0084000a200cBt0004HJ29nr_F00W0504G000G04A01K0000G0W00H002G022802W1200W0
+H0001I008OOL3G0G00I08uuV3021000GlfyV3GW80aOl1m0WG0210GWG9W84G00q00900100
+00K402W098W8G022880Q008KW0WU3t0A0e80040G000CzF300G011I1C@l10W80000G80GG0
+80m5W008W0808001YYq02038LzR0W1W0000108WB088004G0enV30090200W004100100GTF
+0000000G100S0004000402G0020008G0a20802M8G2OXh60030I9u02000911044C220900W
+20800010819Wa@9H0WAGi@6G00040029181WB_DOqT3G2G0qxg1BzpGbw9000WMB00Ga@908
+0G8jI3400Hipl10G04W001080G010480400W00G0G2000G80e080G1100G4WSrDOzz7006DK
+@V28W000G6KR0010q@000040002G0WI1000WY2O20000kL0000200nmP0G0s4mK0000q4_aF
+110080Q5000aEXM1040WI0000G0800000Y8000W8JWJ6000MN1f0wC00m1X000GYGt18400z
+3Y0aId1W3a000WY0608OOd4ozd10y@30000uXP0C_l10u00iu00000Cox@3m@@6800O0L100
+02mTk30000ei100ayWl10mT@3rsW0uCeaV30gv020s@700hE0@@10000y3C00KG100p0m@Fi
+W@1GLm3Fu2@V0u@YWBy51GLB2FuN40@J50_dggmCLLPHm3tYCxl4X7_7kaecR3000WI08000
+00Y1000b000e200e2G0030336WV200C0000J00042@s0WR220xC00CG0a2G2000GD2600000
+d9000000A3z600030002W10C040O0g1008D100A200W104mDWB0N0N6k0k800SH0eWZ0G1S1
+W2u2u5m4mjZB0J400k80KGH0e0k000G0ShhCywl10mS00Wd0_Us30uz@10Wm10000W16mIy9
+000WGy00GNsF00007000000AR100000GHZod1300000Yu5m3g2W@VG0uZ8F_wBut@@KV100G
+000VE300000GPd2000H2O60000EoH0_700080200m3000G@@hqt300WGJVamdTdCdl140000
+QX0q8k49ZNnM@IC2t3ndbmHvFC_s3btdGFZ6qF_3TOpGFZ9e2008CS6A@tW2yDu6D6ED7Zer
+JOLy4ALoW4qze1D3MxFXsrhuYz400G7Kf_6vyvHqiIqZR5B24ofxX0Ss1uwz4004000084W0
+0mHT64hy6VppG9z9ipC3l@Q0008WbsJOHB3MfFXz0V8WP32LcXVbD00021000Gr00016@mwu
+6qnl1G000001020010010mL59010GuU93000W0140G00WGSo90000200Wo6K9G00101200KG
+0W@@DW020mu59G040008W000018W00fEP0400040W0GW000002G00402A009000200000YN8
+W004bj1GGO122m080W04G018W0IG01GW22800KG00e040G010W0000KKeYG6o_tWlaDek@40
+0508010eYB300030004ioQ3UCy140000WG0wWD12m00G004W0020100001400201800AG0W8
+08000yH10200G2m60H0G0000040e00WH0G00040A10m0KG08000H028040G004W0000m0040
+8404A0W@@D0I84mtoFaB2300WGIcE100G0HjPGWs60e00eTn7wTtW8tJ0048Gxg98F40urV3
+0W0Wa8M2FIRm1T6002K000G00G0WriDOX99MLtWEqCO@aMA3Gca18Bo0a3Pu@FA_lZZ@t8v@
+CMu74G0m5Dp0080000d@4rdiZq3rty@yF@7Vq@lFzVxL@l_r@fdz@vRmKcl400W2YZB70mk0
+000O6Pib0S31000Vh@I003000000406WRFRnd4J000008B3oeF0c1000uJ00e8F8100VAO20
+0000gq10U1mC03_j4008Wr4CedT304000W1000000109WJoJ04080G00W2KD8@r4kMmWUJVW
+0W000WwaMtJOUK3sotWtyJ8CrA000104W0uRz70G04ybw30W000082abx39cA1004WzsD000
+W0W00000100248cstWNwD0G41G8hFiVF3G000N_t01G00BmR0G04af_D00040400YPfa0800
+0200Ysfg0104G9@6S2x3040WQ@y1G00WlvR00W00000eM200oa5300G000G002800008ezV3
+00002G80etV30018ill1rWoGdzCiRV2f_pmegOy0l1t4O00W0WtiP000MCG00WPtJ0040000
+WYxuJ8NW7QitWlMnOBr40040e8a40209Gl_6W02X8YU38000W082000W4000f8yD02I00000
+100280G040YKG0GY0Y00800800401W8W08000000e000000e49W7@D00A3509G020020L409
+0010G000000441000206m0020GX0Kkl100140085G000ulr4MXd100040G164W0000G1b0W6
+005048X10000G002mG4400880000KG04Y0010KX00000W3100W20244A0W8090W0008G818W
+042201H44204000GW08020085000gW000e20G6XaI0W0G0GW04me00Gm00G40220BK010H84
+5c0CO48040H06Q0G001580G00401200A1Y000G80440010002004K0001040H0000WG21e01
+22WH204OW0050800XC8X020040W0eG4140128008X40a9005Ye200000eSG80e0050GH0202
+D0m43GAA5000W1WW4G0080K4201W20GWW10e0000j1100900G1WG5X27090101g1X02K10G4
+0G2885W0aHWW233X9W105GaY810100B410W0G1G8Y28900G00G2WG_Mt000W000404W00000
+01810040800049018Hcbs0008Whid0004WDXJ8KU3000W0G00eTS3000XGX00100005H4WIb
+P0Kk100W00048W0G0002GGW00008a001080400G5qQ00018C0000040BgtWxsD0W08ox@907
+000A00mFy6000G40004020080W0nQOGZp90004ett4caF10G0GXzcm7_6KkS20OW0m8002X0
+X4000aV100000080020042000400GOGO_60i400010000YW32CW040mdo9000O000G04P0Wy
+@J000I141W0W0G400W8kNn0800HpxR00400G0000W00klx10041pyR00m0WqtD01000G0410
+20001040020000010Y82200004kc000a105000004400000W1000H4041QBs00OG0O000400
+80800A3y44110ylZ10110G4W0022GOKu400001802G0020014WqzJ0204Goz9q6T20040800
+00W000W000120ZlnJGW00G9_9SCT20j10G00000S000200018800O0040000W021004008HH
+v6000Ou0V3G0000008G00W00002W000483000000004H400mmD6i@l1HGO010W40W0400108
+01000408iN3MntWeXD0220Jtz600Wm0001Ge26qcl1W008084Gizj10000vE000000000418
+000000O040G0040140W000G0YW0800G8e090G0010G02eGV300800010G40G0410m@@h00YG
+410G004W04012GW00WW14W24001G00C0W019d0000O0WW080O080A00000GX2001W00G0000
+O0212LK040840K0010011006u0G000OO0000400e10Aa00410O0LG1a0082H21G001681048
+80m8409044Gn80a000GEG6W840G00W8a8404Go8G400080000H810000080G88400K8201Y0
+0q0500820W0000200000W1W00001W02000000XLTC00000I30048000K00e1101G0G400K0G
+10aiiD0500800AG2AA08c8002000qb101410i01004Ce000G8W240Pa5GW2284H2G8YOeG01
+XGH082X000085HZ56800G410G054X08CJ820000400011Y00008YY0GW00000G00G8WW00GW
+I08Af020014H0000100A100000We4b08BW000KY8000aY01W0G0DW40KI908A00G4W00000G
+001GW000820Af4W0WW4aa200000G00e00000X300WC14eaIY0oG410A000020G8aI0G24W01
+0G90802000bC300a540G90001020b0000W000GXcmD8@e7w8o0000G8202004W020W010e00
+q000G00810000144YZ10000a000W0HW0GI00280WsFC000e100W02W9000G2G0400G2Xeg_4
+00W8FJk1800000H4UEa10Z050W020I08W205GQv6000121000090040008A00000Y0m808B8
+9040000084300000010W000W80402O002000610W04YxbC001400W00000G400800200WC0O
+493080000ON08W504020W00W00805X0000CG180008lQWFRC001001KaI0WWE0001W40Wybl
+1WZ00G80HG0040402I8v60012100mmnw6yyY10W402uFXR_J0W00C0000000OI200gco0A0G
+0FkOmC@9yvl1002000eWirl1BkR00CH00010G124Myt0000G06000044awl1W00f410I32GO
+GaW8100000810NkRG0x6a1V200G4MGwXutD000H000000L3000gL00000021WG00d6804il3
+580000xB01001010040eN0002yCX_3080Wx7W000000G020m10001UHGnD030mV1G008W844
+0001EW00mH3000GO6r40008@501000W0G0004Z42000lGBG0000I00@_R00es0402uU1e000
+00P500exV3Gi6000YCfqA3Y3d1000c200L50000W@@74G10@_F0UzV0@@d000mh0lIm@1000
+2uT@pF00m@T100000_@N004l00000W8_Wukx000pmNA0W7c1W@100GljP0u@P0000m34n700
+eEW00006O0061007S00WkH000O6000Gh600ntd00082F00L0G2f40008WPK30Vz50000g1LK
+X@d002000W100G70106WvDk0MH00kp0006000m000W1u003mE0206600c800mPf0O0m101WR
+760c800SH00W3000Q200q1S0W1uE13GD00WQ4000000dAB100e80003W1WYWx8g0K800gX00
+0X100C600W1W0030306WR300@ev@D000W100GJWv660C600KJ0iwl1002010208080SlV3yE
+0@ZP0000U20u100000L2000000wCG33zin0@@700000m@V0000_Rt0w700W8y100000eO700
+yF0000@@30_300WC1V7G000000Wt5X800GLqa00Cp30C320G4v500@HLWL7LL30m0200bT0_
+100cqt0Ay5Wg602uA00Be00u273C200000CWe00000000CB0lxdmXkCKyc19U9nhR98000ev
+53sSpW4wP0yD10W5001010Vqp00G0ih1P00G0mlS6y_l1000W_n@XBWbunj40800200000G2
+my6Cy2G2G400000G2A00uBk7G100004100W080040000KU600@tFXexCeZW4YXp00500RzOG
+ZTC0W000W00Odn60000yHF30000UCc1FhbGnR64Jc1twPmI99CPW10W0000W0il83f9_0800
+000qD0020001WKxM5080000002000ksD3EkZXtzU8tF3IOc1W000ZmzmSV6KzW40160A3qWI
+0D000000220000YVHP00000GtE00100I5qWm0D000G0040WgxI8gE3YcyXzwC04W0G_1I000
+01G000108mjeO0805mYV9i7e10080YGo002W0a009011G0006XG0G821GG20000002002202
+004WG00000Uh302A00480800G24K00G00W014100G800H002201G020244G88W080G001hHq
+02000008WEvYXZvC8xX4480802000W1000000CMe0440I0W204g930G1080802W000W0201G
+0000C04104002O01W00WG0000K41W2X41450241GG0H410000WrV040840G00aWI049G1A08
+A0050AGH0Ge20n0X0Gc8mn0200G0010818O024GG010114G404myN9C2e104H0wEp0020000
+0Y02G010000Z0000GG9C00200H0m000548340W001GW00080A0401040W0O00022G094WP20
+1D400g0G0GW4480W8GY400OeW00000OH203m022G0O42E2W30a01O0848Y180G0eYW14300e
+02H0G048a42201e0eH006ko00G0A0Y006dqWOHD0103qDa6a4c14000Edq00008G080000W0
+4028Eo4IOm000W0hDQ000WG20eW40003iq0G00064020G0GO000008102200000yw400kBq0
+00186400040m0000n0240G0G00mCG2H24kfo08W0008008W01W1G0uho4wGr0002GLH_040G
+mBCD00001G00Y@@neeH3_Zm00024000880W40W41W010000G00400hVO0005600K4FSQm6d6
+00H000G00008180102000W8Y0GG008ZG30040Shb1W1000W0YKdf40W880201WW01epL3cVp
+000W1bFMn@@90G04e_L380001002wY56IXr0XO00080084000092000404000220088e0GC0
+00Y100248004000W0008000C08Krf13idGaZ6y@@341W0UXD12010vYQG046y@l4JCcmdI60
+0000I110G8GafIJ0004GcY6C5V200010GG000820040000I00030XiO040010GW01qR08002
+0W00zq_W800WUCJO_K3400H0180eKUC64D10821BGQ010K0000200G8Qzq00a8G00G0G0W00
+000000Y_ag9CKl1nLO000000W04jhQm12600002801mW7C4zM2@@RmlT9eWQ0008W00Ha0G0
+WG00e0kr7304000004H42404411G4G0W0040JGW0210W2WLOG0000O1020W1000W81000ow0
+8000G501008100000A00ID500114O0h2W0bKG220G42GW20000A0G80AW2opX604G2001004
+W00K400tgo00010004Y490010202G0000WKa000108800QG00G01yKg4W00180000GG0002G
+0G0Y2a00102819ApI01W00G0m4200efQD00006v008C1000002082A0W002000000a402102
+4A018A0A0HW00GG0DA00108W8G0G0A90H4800103401008040@lc0Y0000001H0O0000020Y
+IKY808500G92000008GK2000W00005G420y4R2z4OmFH600bW48189eKG90a0a000be4H000
+0WWIW0000900e0000AI7Xq0A1GJ0G100400008W00A10Wn40W04G082e0000X800400W0b00
+1G098K2804W0010b88tM6AbaX6NC004G05004082102060W60W0008jP34000G424v@V30W2
+100000100940004eW0W040001000021H4G000W8A0419UO00000Wg5Wm0W00004G400000G0
+0080028080028000W0200e00mKi60009W800808W04e020H30G0GYyye1L2dGX06aae10309
+00o1G0GGW0300GG00410GZK_0020WtXD0201WW00G9A2WGq0000HG144G0S02WW4400800EI
+K4O40800001000f4113e00W03W08201W204W0G204m003O0480WW0G8WOG100010WW1X8C0q
+2001G08e0UxW1AW00Mmj21G0000u0W00280C140001W41WLrC83NC001GW210002G001WY2a
+D05W002080b0002W20C4W00G00000SwEo6W080eNu40W0GW082mG0W0008002WA010XG0000
+0042010000WYtbD0G01m@@9000a420004000W0GY80Gg90W00yN020W2090180Gv1800Iz2X
+20G0W8nj4030000G10CG000G50010W0080840Kp0201wlGD2000q@3G1oP00eu0400eQ0000
+TPKI1000f40q@@600ue01W0kLm33004mFec0uA0000yAWg0000yh080000G02W0WN20000b0
+0s4c10030000I10L100L1O9y400009e0Qy@VC0m@F00WLdlWYF8YF006O0GS10yVL0WV@zI0
+000A00Vv700FKR0Ly00@F30000L1Ax00000zDQ30000Jz000040000A800Ks20m0500000WL
+70@yUOvC0K00OsZ40m@0An00000yiJ00W4uC0NWR4g0@400w800WH6ks0W00200000CH0000
+0005100m000W0m003010NWx400tH00G0S903mU24WV000P4000000sBO300030000W30C000
+O0KJ00yZ0001100eA6E30KJO0eY00O_1m8i600C060O0ExG0Ss10W@@p0c000808IbLRW0k@
+V0000000LPn1000m38TF3_@N2n50km50000S0y@V2000500mCB000Y1000i32W@@J08JJLvs
+60W@h20000Ri1005K000W0G001WV@1040el@1GTh7007qP002mVm30Hk70CdQbX@@t82S3YA
+5Z@@be6E3Q5x1000iM100_@dXZVDeN83EgE100G00021_@@10002foRm5N6y@l1nkO0000YL
+sCeXD3Q1@10001RqZ14G0001G080000800100H000A0810000ymG00000W0000X0201GuP6q
+al10404_9a10040G01000400802uAT300a0_v66RgR0004estIeST3cGNYT_hOJ830800iSk
+10v90sxdX5ICev0C6Fd1020001K0sz7ZupC8kRCY6230WW20020Efr0G000G0082sp0KY00H
+AO00G020000RkR000K02080Xgd020W0004W3hRGAU6S2h19nnGRx90004200000G442mI081
+0080W0Gm2000a00W01aPwJ0m000040WWzCGW381GA0000m0W00W0W000L00uCT340I00m2O0
+W8000Wl7000M040XG0We02a2I10C00G00000200HW00G008WK4e20W0044000WO000482000
+002400000W20G00A00000000eG1eHU3k7s0G133mG0H02W480a800820O01OIe1W00008008
+W00Y000001386Y000G40080000140002W18808W02Am100XW0OW0110Xy01M104WgA2GH590
+A8004000S50W0G0040Y00084020mW00G50X84L0e41W230044W00AG4G042092Y102eWI0mG
+H0520S064Y284C2041G49X2l@R0eG090221G00G8Jf0G058IG0000GWH220HG20O08euW8O8
+0000400080H2000WG8WeG0008200K000W020W00WPcC8m002A0020I0002015820185G0W03
+A0G270o0E00H000y2402KC48GO2WGm264W05138O040n1103CYu00200Ha0PkG0W0506GW1O
+90Wm1LGG0G0GO02208WOW0140G80a00000X0100040O8W0H2000eY900000804X08000G601
+2G200G002W01000A004500XWamVm60000SeV30m4000g8080442600W0qW00O0000AO0210A
+G10800000M_rYc00W8030000200Njm04004800100002800028000e00002102200C80W40W
+0600X1W01200000K000e0Crb104080SK1800000Y4001O00200C204_zt080005dR00W0Wt@
+D0000200208010W8000100Tzl1a00GgYs03004hPOW0000WkF0P_d00G0000W00W0Gm000W0
+40010GHWL604000044W00000IW044000G0100H0W182m@@CC763002mECC1108W006GYRp00
+00000W4owF10021G000008G000mG8C90404C104401401G00q_l142W484C4000YX90180IW
+eMlD003m020G40O00822O0154W8WGS2N3041GW2G0200C20G200W00002W001011W0W0ZG00
+8GclUP8FI3m0004Bf1200W0W01y5b14G00YlK2H2008C007Tt080GWaW00cMp0111CDld000
+LWGvJuqC3o7d10001005G6Dn080m0ppR0H0010W01prR0G0000100I0000001Kxk1Y1W0Yft
+0441a0GW00020GW80004WHZcF41V20020wzs0108400G00G680e0G0G4000002100GzuR00g
+2XXJVuAP3QRW10Y0040004840arW12022tnr0G410dVA108002008YW04m0900W0Aa0Y048W
+1980024084m000080G080004008020000c08080W0O00K00a1YI0853824PKmG10IB20508f
+10H202Z802061000mA52200308080014000G000G40W0MA000W30GY7HG30a1a0840W001aW
+ICKY01W800106GW0mWM1Q24a0000065100W2G0W1000G003H08HA3W03HWH0100G0A4vWG40
+KGGe060012WG0GOdT30010ale10001000WYG4061aA0084K4WWW002Y00XW2KY0Ge5W02014
+0Y020e0X1020000J2WW0Ggz6000A42Z400OA002G4WWW0180000H00X0284aWG80240221e0
+62I1414Y0280000GW0Z24G0WO00ayb1000I000W0004X0000GG004eaI4111a00AXC0G0000
+0b000I20AK2820008CzP200X4000A180WK9000b000000a0G90000400bK2H902e0G9Y0u0G
+G0004000w9000n4200I90m4WxZR00800A1000004e4G020IX40A10000G0YWI0080O68AC6k
+1KWWG000I0050000082KG9W000G0006uD1HH408W00K480WG2200200H0W000080002G0G0S
+@l1jyR08W400G010G4019a4Sjh180WA09W4W0200a28Y4800o0G0G0420000IO000G000280
+02G00KW050G0AGK1800042eWa040104840G000W4J80040Gmg6Kth10200Quo00G000WW0Yy
+F10400i0Om1000W010Z10G020OG00090m0GW0S4SmT20G0e20E101W0W104O010W00YW5003
+1426YG1K2i1G0G64010EeKI300CmZ0eW10004000914200K00WJ041XY7K068W008OH0202Y
+8WXW1Y0WH0G8202000001e08Bm2khr00W2880AW00K00G0W00WmmMn6WG00080W400800008
+00mH0040Y2W4Q6S3wCsW28VeCT3402155a102WG8G2200000015000QmXyC0C_24004X8aC0
+00W00210G028G02H01820W00G090900G200Y40WO0cQt0K000r9RW100a26C8GT380G01000
+W40808eh0000uvWR00000qB0000yN070000mN9JM3oNs00G0S80000_A0a0k10W_3G40Wx5g
+E0W8WkN4200Z000180Gl4000mD1000WQfN4W20fC1800C0000W00TNG008@5m40000yT27t0
+010bAW0GG_BSw0000gD04004800000W0BG000e1A60W0Wh602WCrJ00G00g2000400000azF
+051H8WK002i0G4WkeJ0043nDx9GV@1000082_700uF4eA08010wx40Obh1020e200urN_7Y8
+404100y1000ryt_6000_oN0bD0So9000u20Wg50yu30000W@F300WTcfA008000wP10000mT
+Y0400mT410SgB006st000GtY0000WVOe10000W700OmeSlD0u0W1mU33Wz600p90IWp00W1m
+002mu42WO0004000Wc000O000m080W1u713my30Wz600u00006000k0E0Q2Sxm0ud1Gut60k
+lE300m50003W3Wc0g8C0_H00it08ME30WA030C0d9O0EJ00Sd0001oP0C070O0gCW0q10083
+aAW1000L0E000mGG8mU300H0eAO200gw10W72Heg0000HO30043N20GZ5YvFXWyC00u@FW2w
+H014000p0Wu@10St1Wx_JD000G0E0r2C00LT0F0000yRS3y@C0000y5500eg30GL700oC0Gn
+U0WYT@100G4Fr180100000OW00_u304n7O4yFCW0VqiV040000F0000000mm3GLPFCZw3LXR
+0W0200200DyRW00GWjlJ0080G7s60090fyy70008G0G000mHIwx6000GOAV3_yF10100G000
+00300W000004mJrC0W00uaV3gtFX2oDe6K3AzEXhsC02004GG000004JVRGhi900000a01G@
+@904e010P0oDv60G800W1400H0moJC00e304000020W0W012etWpvC0000KTG6000489u4ke
+ZX52I0WG0urtFisi1ftdGiu600GW0001000600000XKRmiT90000gGy4QVEXFTD00000000S
+t100000200W080608xx4MOp00C0000000024Cwk18040UqtWrTCeTzDADtWcsD0W00GLuFC6
+V23dR004001000010e00GgaTb1000W0044W00H000C00G0000OU@ER000WWetC00G0Goy6a7
+d1VmRGBy9SlU20008Q6s000181Am0000G1480000W40Y0TGl1080X02008200S9M3Mct0011
+00W000060020cmW04GSd6G0002022002240W012W00014O0aX400000mC700008G0AO0m0m0
+n00G80004G00A00168a00e0100XG0G000W0410W00010S2nr00480G0H040006Yl1400000G
+2200G0020002040G0200000G8H0H200W0G850000G22R6O0000ghuD0028008400000f1P00
+Y0080m00HOH0W00021G08Y8000000W30400W00GK000W0900C4G9800W20014W59e01001IW
+02400000a2001GG0e0060003100800114W4W100H0888010060010H00X00W014G88202004
+0280q4@60H1G00000242P110G00510008OAI08oT300K0yyl12090W202000G400284100g0
+W08GG00OX00800600W4eG804W0102G0Rzt000Mk00028SW01O120W4KC43600WH404H08G18
+1X29G00o241200043G00000G4WG4X00GW080021W01080W880208WW04K42001846002022w
+Wt01080000O4010W0008PU30020020WGG01GIZ6yzV20G040004O2000000040C400020GW0
+G0W1KCe108041y80250000x00e00040802G0XW100G010002001400000WntR00W10001100
+50G00e08W0080001K000W300100Aq8100000W022Gs000G20000VIoWNgCuXxDMvmWhJCu2R
+3002W4xl101000101W00040000Z00W@@DW180000W0200H0004800001W800a00G010S0000
+00110W2KnV20G404002W00W0208Gdv900W008K80Z08WA5C0000W00GGa0000m020f180001
+8Ux46l_X4@D0501mzw60001ewS30GG202001800002RE0G0400C8QwtWYtD00Y02W00G00K0
+tzR0200008G00020EjDXUsOeEy48000001001000G0W0000288W04000W020Odt4AkcXEHV0
+080GT66Ge1001000G080CW00pyb0eJ1WPtP0G0040G810005pom0W10nUyDuvz7A4t000009
+4Q01000008G0W00W8W04@I280I080004Vl15KOGsrF0000000WPs99000004G40204000020
+040004800001y00mUN9CJV2400800000G080W20GCu60I20OqS30W90i5U23ZRmQw60W8000
+418040480814082m081002GH12e00B840C0020418W80Kd330000080X000W0050008001W2
+0a14000BC0080061G1Gq800DX0Gg0H031000OHCqV36zt008000Ye083HZ0P0H204G002000
+0212G00WX0132C00004Sys60G0A10A4000XbV@D0008200008W04O0W94IH0W1WG2W00018W
+9080G208G001G10289JV3sVW10800xnR00X000Z04W0W0G82120034H020A2W00010004210
+0003000Cf305040I010W0e008010a0K000W040G04G0G0C8118L420i04m800K18W8QDGW04
+GPw600I0uTz400YK100860213b0Y00G80IW10eaI0800WG0A12020008eI0010W0WAH101uw
+s40W20012W02A1000000GaI00004W8a008H00X00bK00020W0G1000I0S6d1o6040080G9b4
+100080KY84YG4045b02GG001KYI0Ga008GA1005wP00040004G00WG480Ay@V2I0000WI000
+C300A080200G0WIK00Y4804W0Hm400X0220W0zD024M40800o000tJOGo@60GW08zU300100
+04G000005W0A00010G42G8141000020KA480000TZ00W48004W000GfDO620G100A10W01WG
+IX0028W800208X000W04402G000W0001140GMq6CyW10000e000W008Y0We00a10W00W0Y03
+02800G0060n00C8200804Gm000q0WqKf12000G102qrl1800WG0000000IW0005RGG04eWYY
+03cxs000200W8G0m0W0WB020000eQm0G420O00080CG822200aX04C13W10W0DG80200040W
+011200040C00G80GGgrt00004000BwcrWG@DeCT3C0Hu0W700S01Y0000Ga0700014018CoV
+2G000UcqWcVV0008000800010G021W0W0aIg1000W4m800000082Z00002E1gWl@RW002001
+02208008W20000G00A0X000080G40X00000I0005100020G80000G8500400jF73a400002W
+8W000W400wl0O00_Bp8P000WE0000W@5YT0W00eV08bc4G00G81WA0000aL00002010180GX
+0000S90n600WGw5200W0W0G0004v0200Kl0000RGqQ0W00yN040000201G0GfJ844W@2zi0O
+00yF00004010040eM0002uC1A0000WJ4W0OpO3Ge0G00280j20800bWYZD000GiF8004zI42
+00u500g2G00WN@lF0mA00KK0KFY000p1iab1W400w3N2F0000m3L1m@@N4k1y200000@3mL3
+04100r100GoF05Xd000000bT000000Gy10000W@@31000YLjCGr1KHw@6000Ut@0000i@@Uj
+P00pK50000gQ60WC00SrR000D100O060m0SsX1OS20mu400O40006000C05000sRW0000083
+4Ec1tYR0mF33WV000C000WC000C000S1A0m0S7X1e600my600000WqBd1G2v600C0t1w0ER0
+0Sd000E300Y6m0O0sJm0SR00m556E30k800w80000000d1Gsu600D100O0eO00Cl100PQd00
+02O0OEW0me3QN7Zw2J00@3e03mVl3W@200szV0g3OWWnCG4F0W8_urD00ms7000Hu300h_R0
+000J10Or2000cer00W8_y_Ry16G000m3uMM3W8_000040000NmU9i@l1_700yFY020FyN0z3
+GxsCS9k7txRGqqL000WeXP300000al1uJx765tWQ@D8zQ6ohsWkrP8riA00010800i5j4Iyn
+WMlJuLL300000G20CrV300480G22020G00040WW00TuR000KWCPJ0000ds00WrxIe8S300W0
+0m000040W0004200000W8YWF1090000001810y@l1W0G0pLt004G0Z1RGET6Kz63lcpG2C6K
+ok1G2G0Yzt00X0K0WW0Qu@X8UD8_V300SCjtE6LKRmcwCS7W1FQOmG@6iS23zWd0006WwuV8
+xz4spCXV0aG000nDy6KVk1000G0m00Ksj107Q0g@t000W8jbR008020011dzRmkl6ajx3H6d
+mk@6iec1PjR00002000D00G0W0W11X0G1ge08WGG00028@CRGCz680G0eSV3080100G00W0G
+W000WHoDW0000K0020000000CGKW0G00G0G8010000n3G001W8W0L8G000K430a000150X04
+00a022p020mGGm4000G004G8q2G200G00Yg8200020G9021500801_5sWpwD005WGsn6G02a
+X240020000W40001M4808G1W002800O000e2080GG0AGq0W80W000W0002O800063W2GO088
+2WG65fG880aG1149sF30002111000mM500880302000GWG58004GG100W8840C6030500G8W
+W800dW0G044020L88Y02e21W802X084G1A220W0O00W404L0AW42G6Ga000301L4008g40G0
+00028W0G00840bHA82C5B4W0c0C03W000K00Gg0040150G0410YAp0101G08051020900e01
+0020eG4424200m0004001Ym0000W02U08000WPH000n02140G0KG043i028W02W12G21C18a
+G6J0W4G2I80L2081G5WW2804Y06W5XW20X045ImGI5C0G0iW0K00GI08WG083GG000OM4140
+09W0101m3K340008AtFcm28L000G0K000000002W00G0181080A21G0120E01G1GG0200010
+02O0008pV3yA0100G0a0q0000W4400GG01000m1000KW0008010HG0O0001000003OQK0000
+00f1ge_DOAL30m00A0G00G02GqO680000580ociCW0020800mdbCKDB3pKamJb6Sl9300008
+01800004110000WrVnDecI3080GGW00010200000G082G000120WiPR20090GWG20400G00Y
+0010WSfD00800Y00as@D00W8000W0GW00tSR0900W@@JW030Or7LCLN2FMoGl@9ajk12XU00
+0480Y000096mYZ60800008W0W2G8000ojjOWW00GP20080WCMGp049048G200W00001102Y0
+mhC60G00eGR3gop00W000W00Q_E1080000W0s3DX8OauYT3YzD1002000080W0000WW0000B
+d10020G000000818a4l1Y0H0000JW04G8uV3kT9100G00GW0MHt00101G0500G404Vf1FqRm
+Yt9G03cW0H00020bGXPunS36IHYpcJe5I3UFdXpvD00GHPzz6G0W0000001082GG0H090040
+0000HG00WG24H0WxtD008010020001080004000WW0WuCV300C2SQc1Y000c_n0L8000H31W
+802Wm040040mpV64Qk1vrb00G100404jZQ0H00WRvDOcz40W88Knk100G200000G91G00A00
+0400281G0040Y0XAmA851480P8e04X0L0I1400400GG0W8A004WO200I02H150W0H829000O
+4002G4AG4HYX40G00080Y2041W00H48GK08Ye0610I4000G0900m1o60040030B0180WzrPe
+Yz4080210GW0041Kpz90001001A204W004b8000OG2000104K02W0LG0G0G8WGL02022H004
+G02WY82200m8Z06204W08H0008000KC04GG02Q4WG80W4YAG0804900000G08G40W8GW00W0
+0G0100G000Ge4GWYIK202IuF180K80G8100GAj3l101000908C@l10G1H0000y3d1200WM@n
+0A0G2W0W40400018928A1mpN68000WI0W0p000AH0XG0A00aI4200G8BE34A00KYV280100a
+2001408XS3Y@t0n6W2K002080GI9Y001I906K20u28W0W02Acd14000m040G01AX800W204G
+D_60040W2020008400G08G45W0H80020000100800005G0002_5C1Gg30G844Qdt0X00102W
+0000WW0000a520280Wn_Ju9J380040054G000024HX9XP009fHX_604G0012n8G00W4zD0H0
+0W10004000400GQztWFbCeUD6cGt05S1Aa0440g5G100W2804WG000000180402mr0M30012
+P04041240O8W3000K0W88G302040A000001P7O000O09030000GK000G0A8G040e2e000G46
+tPQ0WY004002C000MLFXBeCefu4k_bXYZPejH300G004G4GI02G0s600K0uxD30421I00000
+0Ssx@6000GW000Y048eaTD0W0W000W08000D@@00200800W080C4400ikR20004QFs002000
+00wK0000yN0eCu40000H4w50W00EJ00WSuD0G000G0I4CA0W0002g6s0010Da00G0k94H001
+0Gc000001002G00k2G08WR5000i4GB1000WI0G3BR00ez40W2vUXw3000id5d10100008000
+400nQ0OW0600W0000GB1000mI0XE009mG300001010040eV0002uU9Z0000100u10000qqn6
+8q000a10Ggp6CSX1P4NHIP6Cml1UO002WB1000i0300snt0@@0G2YPpeA000100Gy1yFy3uV
+@3n@go@tZbp00K5T200000yw3Ccv76G0GyW600F0mCL1061mC0006@_d0d000A200m0C000O
+_1100000n400ujmmD0O000WQ2100000c800m800080000020q400W0uE20WH000O00004000
+401080CHm0OY00ud1000000yCx000O000G0S0W1W0G7mj300NJEu90S0G0udX1010006001q
+b00m08D11Oy300ocB1O0A0m0qHe2ud10WB300G10Ye31000C300IJWX6_J0L00mANUqRF304
+G005000yDieMF3000H10006YO608Z80CR40XZR000081vF00000uR00mC0UGL10g@z0K@xx@
+s7CW006yB008g@V3G4u@l7k10200E1mW7Szu8WHo6F14000WVP0M58dOoJ8uV9sazXUpm02G
+0mHvC00C0OAE3ImE10080000e8901aCU22000G001Tgx3Trn01002I200xj9nCtOKll1zWRG
+UtI4qE3XyX1010000tR5kXH8uL00WmOqFCwb8acUUua962xt0000ALjRmbR94vl10s20oQFX
+YtDeDS3AAFXs@O0080GcvCiW7393pGK060000QZA3IrpWYxDulU300m0Kyh180000002StW1
+F8P0eG0WQxJ82V3000Go300eBG30H0004G00001004000G000104080YqYl10X8G00G8i3W1
+00H0022000W0000e004000LW000eW00000128AxV3400m02G001010W00080G040G0ob81X0
+009cc02G002W0X401G0280100G0000804418m40W01a000W00G10000WG3W4000000iY940X
+09401006048110GA0020210W0002G008G04900W000000a0W000441000I400800401GG00G
+04e080GW40500WG08000mW84Ast04801020G48080K004G084W800014Gd@R000GYAkJ000C
+000012Y000020H1W0jnj10000X1mXW0O08@T30002Z1C0000000i6G0G1X802054X403Y0Ie
+0080G00W001GG40G024W98W00G000eX8X00m810000G00002ylG30200O010204n0I0W4810
+H0e018A004Al1ZlPGNz9ijT20100Yqt00W40zsR0Y2GW7_DW0000W0092G01ltRmK5C000WN
+310G@qC00G08U_4sbrWRyJ08002C0004000GX100GG0W20100C0HQ_64CI200W0wIaXTzDeO
+@400Y0iBP2ByR00002G004400000aWLr@3Rvd0000G000100m00W10010WG0008W00011000
+CW001008000WP41GFZI000Gww@400414ij49SmGTAIiWk1Bid0010WJqD00030140W6qbGCE
+32080G00400209000100010G001610Wd7JeUU3Udt01G00400Y0002G0040G0002W010W020
+Y01gnxXypDeAU3gHj2488W5ddGs2900a0unT3EmCXi7I8Cv400082008Y010G_aICUw30G00
+10W003G08fS9gDr00000PIPGit9yjk41ad0W00WWzO000900G0WWDP00WKrIW6040m40200W
+8000C8Y800Kgz_XPvDW020Gmy6CUk1C000M7rWp4O000e000000003VqR010800004foc041
+0000H40W000W082000H00200020W00281eH00m1040001000011020000100Mhs0000005NG
+0G0W02801208140G1gW020X8a40G0000Y000C000WP4100fmQ000W040W0600G8W01WHG407
+XWW00H08H010I01m000i0l1zjR00A0eu4JeXC3Ucz1868W@yR0002000510200080r00W00K
+00GEB64AA30008X903WG04Y0088c3WG0110WIa211XoW084112Xm4Z6G008000G080W08102
+G000GG4G0010GW0200e00020124W0X80GSTx3000bomtWSsIu@@4000A0008CsV300H0G1W0
+008000K000a0000Gb00000I0K0G00mnz901W000GK20G00X4W2K008W100G100080602K200
+W00Y10WG0a08000g5S304000081YIAHmmo9000020u080WG90824VrRmti60020uQV3Yp0ZD
+NP010Guiz6O002104000K0WL@D08G20H000410080000If0qXl1008X00K0G10G01W0820G0
+20000W0W820WyDG200Xi8284W0b08X_401100028iSE32@t002008u806@F1300240A0wWFX
+7_D00500800000W8nzR0101000G0Y0000m106nl1@ePmDL600602000Et004W001zwR0B080
+20GWO210O00014000001402400WW01qP048Y00040OG00G040000W0040206010W0W0Y0000
+m0Sbq6zCZHky9yWl10404A0bXCYJ00Wt@C@98040O793QiCXS3P00W00800GGWW00G81kCs0
+02020800400Gqtq30001Y0t000000W61000W6hV2@cR02a000001W80000e94bi1000YP010
+0eNWH1000GJ0e4UJ00W05H000mv7XC0000G30KLg10Wu30088v5OW000mQgw600W00S00000
+L4qF2W00mN000008118TJ30X80f0000Hh0GWS6aId14100Mut0000W06084O00ySD60WStdS
+t000m@l8R0shE07S00BG@0000Oc6H000000Axm3V4100p0l82m3g2m@M0W@L50@R6l000gQ6
+000000Ks20WgZ1s002W@0AR0I4tWizDecX7Y_t0O000m0Cd00OFjNz30008s2tWSlD00G0C0
+m04YW1e610my400W8008503008Z0100000J0000000qFvkb0C0T0O0w800Sx0005b5d10604
+08080OY00G41GEu600T030O06pm0G100GA200400003000602000@iKwCueU6On104fd400U
+u4000000OETV30008a5d1000CJ033WAB50WV@100000H_700uFnC30G010St60yrN0000i9o
+T9000pu1A0mxUeA0y000yF00006kIpWEuSAid7OD00i8U20042YuoWkJIej@7gWB10W80000
+1dztW5nP8Bk4MDdXwwDO@V3W100ysB30050tBZXjfIuwS600eUFvk10028cun002007aRGpb
+646k1080a0H00a903000KkTFX7nD0002HoQOKiU200GWcYlYcsD8fW7AJF1m3B0TZpmReCqk
+T20200spxX3oV8MT328WXMKmu6S3otZX9jOOw_A000Wv108euV3s1tW7CJeu8323t000W006
+41sFd10840G40a2etW2NU00G02008Y0zD000m0001W6rD00004800YVpJemB3002000W08bV
+30004qKb19rd000e0000000wB6@h28104lURW000aqxJ0W300000YfJD0020WWG0WfzJ0E00
+0WW000000W200010880010080000aWzOI0G00G4f60K01ec93out00G0G1lR001W202a2001
+226s00W000K5801W00G000Ou30001280007aR00K200G000CW00G000W10G0W000K00200WG
+40Ge0000K40WG0000004444G40140W000G0020X00O08010200440W020G10W1G2G0O0W020
+000900420YySH20100020e2400008G00040002200W0Egm02008009G0n00GW00W28000000
+40G8844WG000000W3U00mb_600A00G40X210080088880G80090060480WX000000G00G500
+WrW00G4W10000G142014WW00G0W0001WW00400M0G040W001YZsWnwJ8sU3Iyt000401YdGy
+s9Kxl11tRmWaF000200042001000zr7xN1100WGyJ00100W40W9_P040008200X002TQd060
+0WpwC0m2WOw_9aMM27Ukn@_9W000000OY04H400G061008IG0CoV2WhQ0ITKYIwIe3J9gotW
+OVDeen4800G0000Aq534004ixe4f0ym8@6yOU2Zwb000W0220X32y0008QV0007No0000atO
+IOMW7oT@1040WW0000004100W00S4008G0400W@NYnKuIi5l12I00oOd1019002W0Ix_XvLU
+Ojl7_s4300W0pVpG9v60000400a1200020G0dHXnVcIqkU2Jtd0W01mkxJePS30Aw0C6V2FK
+a002WW_Eh0000Gic6ySY1vHP0420WNKIW00G400080W00brR0410WjGt0Ya000080W000090
+0oNt0045ZYPAG0Y8H000G5H00GDg6000WIx00GM@604208OD30010zal1Nkpm0_90040yAV3
+004W0000G40KW000G41020G0GW03YW401G4C0GvfIq2@31xb0X0WW3nDuKK3G0G200Ce0241
+mINC0005gVV600H0G1H80m4WGtBCyp@3040200W80212020W10440001W0010eA408K10400
+W85410G0WH0G15000000HKe4k76Yb140K0jUp000008e4WPsdGut6G40000000Oo1WQPPuWV
+3e4000001W2A0Gfx6Kdl1Bzpmqn6W058420a10KG900WPK02b08W01040a2Y0GDkOiMN2ntO
+000HW7sDe7U324p0900WNWy0000QU200TzRWu0000G0000902St0b000zydGru6iwl1DeRmm
+@984W0404eW40000IWCW000404000e800000800aGzV0000u9G60W10000000Y040G080880
+gj810000000oEud1G100044000eOqcD3082000260GGiOUV6cx@10W0W7dR00G0041000010
+0W040000PPI3M6rWiaIeAS6_O_190Ya0008140000WHyyS30008DUI50rA0IWJYGZt0000X0
+8000800040GYXE1001000H10CY000000X4U20100D000l2P0240000018G00xrFXmmD00YGB
+902WHSDuRV3G080P5OW0020A000002W00080GX0000G90000Ps394ql1WZ1300ihWm10400q
+Gg0C4_c11dd008C00004QWs2020ag1W00W0G40000qE0000p6IaM50400df@040GN@7Wxy70
+0002@UqV2006M_wt000W_y70000W0208YF0vA0Gz10000000GVAvI0000cw00000aO00K000
+gH000G000a180010Y10WC00J9QGEu6iOl1XXRWu000M300W0G00001030000WV000efOnD0G
+0W10300WV00v_R0mE5WegJ000W1WO20WT40XZR00W04000841102VBXSRD04000H0H400G80
+0Wo000E300W0m0G5G6H5WE600C40Aat00mC0000WaD00KpD90m30gyt000A08WA04H40000K
+FVF3oFs07300Z4j100iwCtV00C@@qL6mC000043GX26000000g300008P00mdLZnhBXqS660
+0ep3xcXGzD040Wua6I0100u4y723tWsmVey@400W0000f00000800YFmDuuE6IGEXy1UOkw7
+IGs0GlA0D2amaz6000GuYO300000020iQQ3cn@10CGW0420YKsWGuC04100008010G47wp00
+120000GHXPGvn6SNv9PUc00020000uo000Q48XYoJ8fy7IBFXnvJ00G0O01CC@T2x1aGbw6q
+FE6zIQGd2Cibh4thd00WhgTnPekA3W00AyeS2a00000000200A4V60005yZF30100cAt04G0
+08200QYtWkoDG8G0ma_94nd1nAP0W0000I20VSQ00060000802m000G00mG0iQM3QZtW6_D0
+uK100800G000G00000K1y9h10000G04W0W000K00002W0200WG2G1gur0020W20100240U1T
+20804X00GzXa10420_at00088Rr@Gtq94fc10015EltW9FD0700Goy6010G00080G1000801
+000508202000d_00000008W000410W000000400W08200086000W10002300040Y06000C8G
+D0001G8WZ08004G043G04X000020010GAao000Ge20G08G0I00800I00m8t600a04120mnz9
+042000008500080408G2Y000K00006000100W90104000W01WA1220Q3J300200W18100100
+WK3000100G18G00X00efAL3G081002849000606028000e0I0r000001L10e00WX006024G8
+GH0Y408000480000403C0006W00WC404034111mUhOKS@33zd00021000001W0AkdXAzDO5V
+308z0KiF3@qaG7F90X0800000G0K4200000GG00m1G0000004H_@600800010Hb@Cy@U2H@R
+002009000@@p0W0080004LxR00400W000080800G0CkV2010Hk_t0X040vCPWZ0Gax@h0W00
+qet6aCd4X@x100810002G0014028G0H200800241WLkh0400184WWG9POMT3oImWKkD01000
+02heKqsu013I8FXToV00I0mFqFCzk15kRGXTIywB6RmR0010YSxDOxz400G0010300000Of3
+Wvnh00082008Yw@D0002GRa9y4N5bhpGhw6W8000004ntuIqDF3HVdmrzCi0X1W020ogt020
+01000evD00ynk4001O00025ET23FGIi_9W084000000KW00410KG40001ASKU2000WYdn000
+20FmR0840100404W80YrF1001Y0020GO000W8a281842H0000vZ1kN12820W81W8G0041000
+000420GGrWF0W00OPl72hF114W00O210008G010001G0000m4ybeSV300414wj1000H880YW
+G00uCU3W0Y0000e200G100410200WyR0wij202H4220GX00a0004008GGR@60018OjT6UctW
+fYPuH_40W208400ezU3kOtWNuUuOV3oYB1W002XXRW400000402WG1k5r048g20000jB00Kw
+U2P_d000200W0GK00042004JU2G0180W2010028hS6W000G1W8G0G00e0Y800W0W2050000q
+8b1TC6oZy6W8Y08QV30P04aLd180040020W00000908610W2jCeq2900XX002000X0021W00
+004j3OmAP6G4400X4000GG4Y0000001G800W0W01GX00200WiyDuTG3WG404qV2000GAbzXv
+uCOhI68G40CmY1Nuc0000ah_D0Sr24e000840WA000Qwd100G0W1O002400004050200WW04
+0289@R004GaBVCOFJ3Y@t00WWWfwO0020aKNIeUV3s3j20W00nIbmwtCCJR2TuR0W041000y
+Q710000WC_l1r6d0400WI0IeYU30G205Mz3vScGX_FWG900W0GGOq6000W11400IJ004000X
+pOGU_9iOl1NyP000000L0100WL030000G1eeV3040me0200g90000O5481m1X_000WO00000
+o4000m0G0G000qA1100G40J10000b0000G0800010Q50000B1Wf0000i9aGk1f2O0GJ8xqkD
+0G03CWo600MT00F00YEkYf@J00W1000000uz@2GE0w@F1000@00000Uy10U000Wx3GM@I0Wy
+3m3700000hyrPeI0365mWAut00n000q400W0W0W9010602900zbG3Aut000o0HHR0008400W
+W7yR001WA00000TC0I0t0000m00300060h800r8000000S8E000GI0M0z1X000K400W1W0GJ
+WB20WTsNb6aGk1020C0o800yp085W400403040n8G0CY004Z000YF04X800K6V200eilNl20
+020OM60Ul@1P7mFBcR00000w3Hy20000W@000W1E2dA000G00G1zjI30Wg042kM1nH2mX7Wp
+gb8ow72ptWECbeGR6_r6ZEwVOUV3srvameD0000Z@00080W0ZjA1GG0W9jb001W00101G002
+0408hmF1O0000008cxaX3OnumuAEsB400ErrMPGZ0pSqN2RUR0024Wmm3PSS9g1UZGtJ08R0
+GDpI00200006GLnF0010W008W00401020G0200500aek1njRmQy90W0GuA03cbdXSvD0002u
+1@9008Ww8U6W8020000004400202HG0200G1_dt00002000eXB014uk10a000W0200W4008Y
+009000X04u00000G000I00G0G5000YBrD0Gi0008080002884GkjF102800140W001iJl1u0
+G000100040eXP3W0000G0GeIE3080WqhN21YRmSz6000G40040H0200002a250801Q000100
+0e00G1000BG20800G8W040Ga0W00G0M1g0400846G2080a1006864G0GG01002G001w00Gb0
+08aG308000G080800ICS6004003812W400C00002W0400CX8080200GM@608040000280000
+10W0400AKr0000W0E00cyF10m008G000W000G020W20150034K20G600kip0mLX0m0008840
+20XP0W0G0YL0G42G4OaZA00H8G2602H22C02YO0041048OC802Y000084X400W80108000i0
+44G008000G0010a3400mG014EwtWIdh83S3ssFXP@Du4n4QQs00K820000WHH06cV2400110
+0Ge5008Vy400404Xh1000000W1Cgb10000000iKxY1DbdmyU6q8530500EdBXAC3f_V3MgrW
+kAIuBJ6wJc100hPLjz020GWCzD000W0Z000200280100H008H0GW000uQ@90020es_40060q
+Mf1VT6IK_9KgR2vTJY8p4W@@D00H00008Wf@D000W002G4000000Gn000GG0080HW0I5v60G
+80OFx7UUtWu@DO05IUUdXCuJeo@4IAN2000Oc4006VF104008014H10001040022Gyw68080
+QeP6W000a9F3xZpGsnFqUA6hS_mPzCqTj13Y@00WqlkxP0044mqT6W08000O210W00000a80
+02040GyMl1Tdp000408004G002Q7CXxM21W000000aRwC000G00O0WEyDuhz40080C1Y1jep
+0Og5Wp_D0083000098WK1Y010WS08W8082W1K5081004Z4420a48K30WW00806G7O6Cyl102
+01AOt0W0001eQ0000q8K3fQT304m00000e@23g8r0001000W88000_bw3000OG300CoK20W0
+WG0W0H4010W2W8C2a8020Y2GL4GG8880981003422400180m000IOtWusD0Y0We808G00044
+000gVxXoW2X000000YeF_V00W00W00WX7P00mcGxuFi0l10220wtm0G2W2000G0900080m0H
+020b00082110080000I000Kg4I30008oC00WI0000G4fboPO1VFYRtWq@DeCy40500axl4W1
+60snEXkbJ8fG3G0000A10u@V382040000010G004n0024H800H00I4sal104000W10000800
+Y003a0WJ3FPoVC00080811000WOLc9aqW1tt_0W000001E0C0000010410010240040W084W
+000W0CH00W8008000O01100420W00W000W0G0000002k0005061pmojI84G10lXp000ezEaV
+000W000042004400000b00G00Y080410e0G2104000_zB102040000Wa000800G0I2GLNjiy
+g1W108oYtWAWP86k4Mwd1mB90VIdGzS6aBl1008Y8200005008000Y1G000W90g0001Gh000
+000402W00E5G080V50QVF1000G0W_3G08Wx500elUCcjdXWua000000_000010000mBDu1C2
+00b@RW_@700mE0000yzV0WIH00G000000uF@100qL0100@@B0O0000000G4@@yVmNV1mfLXy
+@V2FIRGDL600W000C1GUy6iNl12000G00001000003my@C00Oz8u@4e900030Z10060008WS
+nD0W0e8WBYA06200C800G00008000O000G0SdX1m820mT60045W1G0G0W1W003mFxBE3_GDa
+QsneW6C0Ys0azl10GL410000g8206G000_F0E3S0Eu0wX8_09x@10W000800U@7W@_70000_
+0SzA31uiH3t6K4E6Hpdmys6qBa75a@00G3Wu5b8Wy7sutWI9g8hV3W018qXg1L5mmss9q3w3
+0W04AqsWTjV8lP3000000OFyXN60002ShY1pLRmazC02G200008100Yu@DepN9sIdXBqDexR
+3g_FX7gD88S6Qiu40yD0DjN100084001X9pmMn600W0ut8F00010W02eAe4w7NYzsV0005WW
+00W_lJ8mP6Idt0000er_z0440aduD8O_70080shk19ddGVQ6K3z3XMdGP_60G00000W8W0aW
+CyD0Y8W0GG0000282100000W04480We0C008G00800100X02K020000GG00G800041040000
+4a00I000G6yBy9W8000W200041020120W08400882WeW2104CGXK015800000030E1l1LlP0
+080G00817gQ0800XBuC0400801H00310JrP00002g20A00q01Q00100Y0W00Y00200008014
+082G410228oR3000100401A40010188020m840X4GGGG00mW0XA0000GBD00020044009000
+G0G10840008HJZO00001W088G0441W04G0X8X8GDmw_90a00m006Gu@60a0WG00000W2WsJD
+W00048GW4W0003uR0002710500L48800000O0H00E00104048404080Cm1G014vOP300G002
+00CEN3G101WHW42002000O00IAH0008y900060040088000G0WZ0G200041020180W800480
+O08800G1Wm5003L8G0m5W08002400000W8G00O001404008200G40a001G044000000100W0
+W0000180000002e00G000040820a000200400DG00qHh10100002080020W80uf_6G004GW3
+080H020I800G4000442aG000WI400000043lwR00001a00000000WG08G0G8MV3W80Y215W2
+m100a20010103ZRmq@60020wT@40801000W00480000Xa@CGWG0mD@9002881C3wAF10800H
+cRmjv90G1001W0WC0002000803001000004H00208G400100WKI0JGd1I04G000G03006YW1
+W0010010002i014o0008010000A008G01yQc101W0W000000G1000Glk64pl1092001G0yiE
+34000010W00H002G000G4180040G000G0000418tS3084WW00008004K00000W004083lt00
+02000WG4E800W0W00f00W000002G0000G200W810000H0088XjjJ00W0qBY60G00Owy40040
+0GW06280m4X6C_l140G0002000O0evz400001500OAT3WG00yLc1j_R0008YQSD00004G00W
+pdJW800nRK900uVyBU3000J080m000020c1WqVDuRU30180W000vlQ30W034HF3fWcm6RF01
+C0080004000G200hj@Gu_6qMI2PuamNz600WW40010OG2iREIW00W04000W5E28000800G00
+0020IG1000WoBC000Xmp86abV228000140W20000020800e5yDOAV3_Od10W1ZW2mW040G00
+04iQU6000W000eW0L0208040004fbb0L010I00WG5W0W80808GG240IA01LG00GCW2020090
+02080000Av6010G0A0G00K3W0GYG2040G001218K0G246G00G2W0G20100W03002Ga4A00Md
+fr00G40NiR00OK0YG0Gb_RWA00Wl@J02228881000KW00028004G00KXA00ubx60020083C0
+X010C002G00082000H80200008414G8KW0KGY000i00a81Y40041130GK0828000ax060002
+K00a100810A04AWGKK11GGX04100120H1W20G0208402W42042e01I0O044iG08GYWGW0010
+00WO000G0012e0aW400090idF30G9bwvt000028000e4108204WIA1241miSsCuVT38000G1
+20G008oeu600W8020e40KG90G40G0G000001201WI000uM7G2000G08bGG0GGA00200W0800
+0A10800000WI0W06500A192000O1WI0CG00020H90000P0GiuCCAk1jBp000I04GW2pyRGfz
+6G900500G022m0000080050W1000200G00oa_60000W8084Y00840810W00001Y0083W6000
+000G40010008WjC0810001404C1219G00DvR0HG00X80080WG9020W05K2204008020bG87n
+R00J0Wo_J0X41020GaRPPWHKKA0b882UG008200G00WZ000004X4W10J8OWA08040001O1WI
+8G00W00gHMC0U000A00208G0E0WWO0W20I411XP0002040410ZdP000pP5008@@R00We02A0
+0000Y01G28X0000040C01000002Y00XW2e88300O22I3yC0G0000m4I526C_D38000IztW9N
+D080000A0420510200022G01a40Y52mQ@C01000M2W0G01GbG1G0110000300B00qG1m_@90
+sI3SW_4G8G8iHl1400W0WG40G0400000GG0K0205W2480804isk1X@dm@@6G00GumU6005N0
+K0OtB21GHz60828000i2wi1G00uB000010X0000eZ02000DXmzuDex9300X000GGY9KU3012
+KD04000061W000eI8088j2000CPGZ0050oP2G0yNh1WB1002mhWI800WWI0W0082000000wT
+1100mNeb0020oD18000G9od000g00e0GzmPGiy9u@0G000000e7Wz@D00O6000W20m030WP0
+GX2A00p004000Y820C300G000Q8nWb@P040m00WWRT3000mB0s@t000M300000G0@000Ut@0
+MDrfAWf2DO0E3M@t0OM60eF000000e0000WmB000mVl300x@RW@300w3000WV0gAF100m100
+0k000S1S000usW10000WT400ue880LHI0x0Z0K1cZe2K359GAAI18202030000W205100S1O
+800u2000d000m000e3m101WE2N0400E@s0W_vH000k000O0S0m0m5W1WA20WR600e400Wc00
+08060Q2W0m08r10OE300S600030006W3080k0G0G0vzR00001000604000kT04fG2_@l0y@V
+_30000t00m@@6eg0gIL1fALf20@ZPc_7pC54cPA80y0GggQ3@9iOj10A_000I0eVVW700000
+W10000_oD0Q0000H8000004W7600@@EWgkVWaT00G10u7400GcU6000G8nI64m1700000WL@
+@X@64gW14000QZr31000HqgokqCScl100QX3U3Zf13fNWDEvsZUnn00G0Gd76St@3Wb70cpE
+XroV8n33I@tWOZI8XL308400080uJU6wJFahmXPz@40000ZF00udHI_t81W000RS8Ht2UqAN
+255w1000a65De_y700eg10009@T3sV@XPvJedS6kwBXs0IOxT90X0WKsl14200C000000200
+W020G0808W0Rx@00A0WS@D0089000CaN_J82C3W000iIl1WdQ0Uwt000040G000O000G10W0
+080040009W0W0X0020400I40G000104G001080G000000G880820002GH008g0G0Km000010
+00G00IwW60GG0W008mRk90GG020A0440W00G880G08o@t000e2LfR0a2H00000GG0001G200
+10W82005K0L1200a004G01401100000dX100W00W8442082WW00A000402000K1020W80G01
+G0O40W0004G81800a8eG2Y10020ZW4082001004010G0200X1040000160Y200G100G0000G
+000a020G20100006WvWD0Y024Y0a0040060G0M@rW0hC0400000GOKW000005K00m0v00000
+4100W02G2J00WG0W20aYl100ApJDs00W0084060GW000AO0040828W012m060u0G0G8W0094
+00100u00nW800002G820A00100G00004G122WY20244ZW084100C00W8W01010040Ws_FXs6
+D000W0020epmDumU6oFsWkxJ0W0W0000104G0BRP0020180G000000Si001000G0180020G0
+0040100000KPi1020000e1000000WK1800G0W300120C0C00000001A0Ge0004W00W40W000
+0020ucx4ItFXMHUOtP3ErdXXyP000CmVsF00G0002201G00000mO400c8@1W000WG0W01W00
+280008000088000108204000000cu4V3042G000040IWmZL60000GA00mdQ6K_e1I10040W8
+S6P2DaMHvqCyTU2rsRW800Wy@J00n4IylR0242uwV300WW004802G20100W9cC000831G0H2
+82I18P04G0WloJOUc4WW00CNE3xkRmOCOCaj40G00kSt00kB03ZpG0z94HV2W00000880W00
+0401400180G608W0W0W000G0G00000GG0G00G0000400484gk1001XEEk28001du0pFx6000
+Wh5d4cxaXXpDu0V3000G80G084z44080qfW1BlR00O0040P4jjRmTU6G1YOet430G82010GG
+G00mk_6aal1@sZ10G6WCsPG000mfD6W80000m3UB_902000W0011000000G004W08I018101
+8W02000G18288M0H8410Ie0aX0482G4003W002G2HG8GAe4000GG005u0180W0G10508000G
+0O0W1CmeZ60008008000808080020W0A6qWH@D0040Gb_CW000eQV340004ll108050G0820
+000471maZ6irF30004X801000W0G84000G4YYWG0O000K000K000H80440W08E400cO2000X
+WH01KWOe860000GA0bvR000K04418KI90002000580080010GXglJuzR6002G10502920Y40
+G9cG8000G0e000iQf10q000WI4004aHaWe40002U2000840_8tWN_DebP30000G10I00000W
+0WWQ0D00aLA0KI94W880GAb00W00040WI00W0I04Ae4120810bIW000G020e08008W201T_Q
+Gv@6000K080aG7tL002228610290800G2q000Ust008210b80G0GA0001104000WaXPdJ0K0
+8mhP6qmk1W00000X000H800051000H40102000G01An03108482Dm001001VdR02021Q0208
+80HWW01000i0W03810A010612WW0K00W001G0GM0GIuCSjl1btd024m8180W0013Uyt0C00m
+00831m109WHG00sW0W0000Y6G00e0kNX10W0A0b2004O0000248G22020040OA400041We10
+M03YXG6Y092441188W2X1y2G0G012G4101100m004m0GQ_t0WW00000e6@t00002n@dmprCq
+n@30810sIv10I44G4GLIko09X00BEN1G000Y00WGW000WOX110GK9LLWI0WAW8W0000W8G10
+111904X0W0W0G0400W886481008000GW000040K70040qN0400cDd1CW000G34U_E3baQW4W
+f0000eI0800C0400W00jtG800j10000008H000W20001G0Gj7804a@2000mzHe40V6F3AW00
+0G24I0010140GE@600uWW0008He@40A0WU1000C2K20000zJ0000y5qM28WWq6040020210G
+0Gh1000WsW@MKLL58ym300004R0me@C0Wg000000g00W2qX1iQ0G@uO04K1W0o300a78750c
+_F01iH02mv0OWgG0gOHWB002T2W2C500hB000G0@_FW000s@F00000GLc100J0G1O002m0S0
+01OC32GC20WO000W800080008020XjR000P0000H9YQ0W1GJWCYC0@C00o80C@U20WBWH06W
+x400tP000000GHE200GI0owsWLPCm800WH000O000G0K1G5W0WAWAI406a85uCHA0LYK0x0c
+0M3ipm0Od59mC302O600WB00WEW30C0r8O0kp00KY000EA000G0000W000OG5000000GG000
+o_@tW70COX@JSF00000820t30009ru_PeLT300YY000W700000cP6000pegg0GLL1Xvm32ym
+74LL5SggAu27Um5UGWWkWWNr1ul@3mV@3800W@@1000000h_@DOAvd4Gb00bj9nNZ9ynl1Tf
+xn4zICek101004m00y@V20GY0YBlYXzJudM3AkF10090nnR0000Mr100pgRm5sCilT220W00
+008qPl1PsO00080000I22000OG00040W01000G0200002010W400aLt3hw5o6xF43U500ehY
+v7ZnqC8YEFgz7Za@DOPD6A6oW9_zuMV6000W_7V2WbC000GGyR@3@4aGUQ6Cql10W00o0A18
+G800021lxt0002201000018aGl4bJRGi_90Wg0AnU3KW05qjl14000grt0G00880WGsdFXYU
+D0A10OVp6eF01QsF300000G0A0400000410K00000H4031G01YG02820009C9000100cAm0W
+002duR00GH08W8200H001W000100G40000040W80VwR000aW3fDu@V3GW0200104000W0108
+000W000W10W02014402884100084HG046002000480080008410WG00104000000eqDpU302
+0820W0G00804G018W08000GK2G80800090W020WWYjDGW040G08404080020X041Knl1W00K
+0038K7b1NuRmFa90440010000O0WFBC000mpC_6006003010000W6TDui0300X0SDb1vHd00
+62XetD0aU2uDY600H00W0I000G0000X600100482c0YG00C1CAO04X00O0G000C21020412G
+010400W210W000001H0G0K0I0W240G00000W42ABx10080Vrd00001800I01100080022000
+200e004000221WW40H0000Y1240e20G000012001000CG005e_O3000G9320PmH30000000O
+0Y0801000G4000G02GW00Stl1000Gm2104zV2010KIHD18W2000300100011002000400eR@
+31828maN900000YC00000000W8C1003VtWp@V0002y@@C0008a000oPD6qkj1GC0000002GG
+0020G014300W8000018600KbP500W0cWq3G080dZcGLJC4@f7YcE0EsyXN6DGW00u7k6040I
+004080G10H2000G000I00C9ACfSd000002200G0000008200100010040eOAC0W21mbS6C3g
+4000uLD00S8t30020G64W80010W2X000040010@vRmF9FSrPE2010APF100m040W0000101G
+00004uqgL000YyuqD0X400000QqV3010W4LX1@f2J0XC00K1008285G01100WVdd02G00G08
+W00H6lU530u90twR000WansI00012a10GH858O10OG40022G20W0G8a7E0H8H000100G0Hit
+w974_mK2600400042e0G200W40080YG0Z8200A02b040000X2W2TrPmFWFqvC300A08C20GK
+S005K00I1240W8WW0180n8082H1W8X00000810GCf2MHAq9W0W0eyV3000IT@e1jVQmA0900
+0KG90220002A00000101W200040eM53Qzs080WIKG40gfb100EIRxA1118K80000080O200y
+2j1zmP0000200G8xyAH_19KCl1Zlc000W0Y100A200QjEXYmD040000e0WNxD00YGaY00WMp
+D0840008geN_D01P1G9_90MA0OcN90040W80mAst4s0t00X00z7IIpsC001HW004m8s6SgP2
+0021WNW41dG10MW08000G040m0W6YLWH1Q06q38N00W000850W00W8Y981000Wq400EyF100
+e0PgR0G0G20G0G0882Y@t01W0XrJGodmL00G0CAp400400008X2450001001GW0G04004H04
+0000004081a8DC02W0GOLF000f8Pb7000G000WYG8001001WY0000I0G102C2E3NBZHlnI00
+0020m10001yXdJueV3GO00002Q8BE60004B00000lGi30408zY00000G080isV2WWJ0coAX9
+qJ00010002exeJ02W8000000O300W50Ykq3002GX4ymz_CaFc1Kbggi0cPQHL3tY0yl5X7UW
+pCp0FSc1W@BYoA04p00mxdLyzQ200000Wx0000ep@1KF00mUl50G000040WL30_@N000000u
+V10002erhvF00m@@1erwA000K9y008zT6W0m410W9wa@4001A200m0eY00G5105820A030K0
+2Wg05140g0AH00Cc10161000100WBG0eAS3oyt000fV3_p0C00000O000W0o1t002060g986
+1mWK0Ie803EmkYG2O8dxA0oB00Wl0NY001x0uVc300000000WC3A0003O6A0GEH0mA0bUNH0
+DCaeR20ez0aR@0800y3Yu300UbV@7W@_F0NzV000W0_c_y300CpipgdvKyAslc40004PpYn1
+vaS0U5tx_0004WIohOvj70000czV21vR0G00WanD00Gn@OvC0X02AjjA00002X00uyRRoCFX
+chV0002mbmCiUE3Bh@0G22WQoLvEz7gGgYmzmeR1FYPN20010rzR0000ES000zqd000GWjMm
+0418m0zmG000uFV3G00000GG001Cmbk6000AfF_4srt00200AW4000G0000HSSV3_xmWt_D0
+0015C0000880D_R08m000004200D0WW0011000W00000hgUCG0WW00408000A00040W040A0
+00308000WG8001000eYEsWPeCOrV38W8W0G000Y200WH10200022H010088008000WA0080W
+020010452Y81440000ee0G0004me4800WH0000500I8000G088040bNR00d80X00004W0020
+e085GG00900G44W00C8440G0Ae0W004A84010L4X0182841080G0LG01W18880010Y2e0400
+0C4004G24A88840K8C22W20m0n800qnl1YW0000009008404W000WKA0G08W82cOt0Y80104
+000W02W005010000mW00C0H4W80G000OG00G1408200082110401Iws0RKe4000H1W002021
+41Gm88000a280G0280021WGA0W000WW9W10Z85062XK00W08W86000450X40GCG4iOWG00WY
+u004W288Y3W100HH0C01001A5kV204400e0000Ge8_U30408y@l1e1W0004000800G02q3x6
+W8040000W03200G30ZtRGuzC00Wmi_V6M9q080e40P80F0t00911T@R0400G1G00000K1800
+42j1fsd0G000W00H20000402jbl1h@ZHlZR01008AN6g89100000O50_@d1W0318000c4sWX
+zD0208mqO6KQd1W00100000H000400mIS6000C0182mxtFq_@64001_yFXjlDO_V30884Srl
+1JSz000OcdWI8DG3ots00000W00W1WG200000029110100m0G0H006ft082000W0Y0G00000
+485S30I00S9d1lVqoT768000020G0W00WAsJ8Jq700mlcAF3WK200W000200a08W00200G80
+C0148040001A00W10Giq6000G4Q00mju60000PYH3008800010100Kr46G000G400mSURSTf
+1004274rWDsJ00411000YWpV0yY1mC@6K3W1400G0040WW000400a0Y80G0029UP00000401
+08C61112GCwU21eR00400000WG00J00Y00810gkK34808SiU5400080008008W00400K20ID
+40O00GKG00G80GOxU3W8W00H0Hi9p400000000JY00GR@6848000W41G4D200IHm0WGW0WZ8
+04A14X0000bG0030000003h81O0G1Y120W092040420184102GW00WWCGW0OX01000G04040
+C0iZf1T1jnoz6000G008000G044108004002041e8820O0GvzI00uNDUL60X8G0010400204
+04G011W85GGG8Y0X1WA03Y0WXd100Ge2cIGI00WAIH00008100120000W408000WG1084WAX
+I410a40420G0060W2AyYV5W010s3t0000G0081850AG9229HT3g@tWKoO8_@40vy0KrF3nSQ
+mZ09KHl400W4InE1W000bYRmN1600858WE3Uh9X0ObG0000041080000W00418WiTd100020
+W01bzF6000ul4sW1wO0002000AX4_DuYS304000200W100WW10WyAI8sl40010W0208MT30W
+04i@l10G000W04z9R50W2e005008100G0W8m9i101m4C3W0G220KfV21vz00Wdov@D000OG_
+09G0001WW0GitF000WW000G1Y9a_l100GG00000020H08G00000o0013y6oQuCCtl18000G0
+40LBe4t@d0m32WZzJ00004020400Z0Zsd040000020x8d0O00WQRC00G008000000IrXQ014
+80044KG41000W0002B0000W600W2CbeHV30004J00000cGh00010s00jIQ00W1WcUPuJV600
+0GhM00OOV60G90110IeC030400SbE3W00WIJF100ZCG00G10C0qtl1r_R0W20WuQU87SC02T
+100r1m@z300008@@700uFeKL00000_FJyA00afUTC30szt500000W90003A0000400W00W@1
+0W000C30o100GPF0yxF0000WaD00Kxl1YF000G00008_7@KGF@10000A@20g00002UKl10P0
+02dM20W08610WG400mC0006000803080Y8G08c2Ts00004@sRmjpC0O@0O5k4000w0m000Wn
+000A200W10002W106080C0K000OMSC0303040N4008We0C000W1W003060L0C000cP00W030
+Sp1GdQX0000RSV3020002x08X@4G440WA0ml3w7W300iql1O@V00m@Gv@00000uli30V@70@
+y78yzF4n3H0hM00000GaC0uWF2WV@H0p@3eiV5HS70CmF0W200WYe000000qwf0z0uf@302n
+700jTtoKya0003vCRI2YRcfjJeZS9A6d1020GdSBHKc90G0040000eo6mfPPuux72BN20010
+00W000G020010W00H7864sA3pb@mcSp4SQ295O0000ST200VkRJo16ykM8v38HogCiOY1tk@
+m5wF00GA1400G_x6Sil1HmpGFTIiwh140007Xt0010G00000180KjU20011@wt003000H010
+W00000420I00eWGWruD0WW800040G10000W8c@pWbUC0008000I00X0000mG0040000044m0
+800O002000D5200GW800001Y21000400m000040000200201WGmhm6004010220102010G06
+G00wep00A40000004GK08W0OiU30040W4008q_4010e00000080u3_6000H0080Qtz6030H0
+00G0024400WW00K008Y0244H0eWWC4841W82Y00040O0C2K010212AK050000ea404008G01
+014000e0HGL018W00L04AY02245080420GYH0WOCG40498W020512A000WHX40380001000K
+W2KWG19G024W25e44024G0X8m00H00PYO3004W0008W00G010X0400300O0H200W0G100034
+20WO0GC00010mA400GC00C00CY010W008804Xm29803I04200C1O1O038Ha22Am1W0000760
+0028010010n040YG4E0Y8G0Gn0G4I028W40G0G20GiG0I4QK004n1040081010W021020280
+0010I4G1100AAIW12W0g42YO0020092080W7JJ0G00moR60000AZc4gwsWrVPOMB30044W08
+WW400G9F64Fk100G0020W00000au801008880041000200G00G8DR3000AG084ezV3008W00
+G018WG04141802X0a40opt0G0C000210a004Ba100Ge0aG0Srl1000W2kcXizD02000004X@
+@D080800000OC002010901IG0W0G4G0W840Wk@V00200000KBZ0000H80GO0Ktl101W8O81O
+qxV24G0GW04910WY00G01W0001G40H7cGVv680000004v4A6040341060G88Io0m40G08gXD
+X_XCes83YuF10040080004G01Y0W00000W0X04G41000000O0iJL2n@R00Y6ybnC00200a41
+0000120000000X020O@V3gxp000WX0000GCGW8201OeU32qt02114004W080WW800G60G010
+X8009X0W0000G014020005mkx6S4F3r0P00W004002r_RGby9SHE602F28001rwl100o0Aic
+1000WbwP0020020000042W10000p0O@T6G00Wyjk1009804G201800008mHy6KNV24000008
+00030ezz4AIq09W14TyR000120104000G008110m0u2m4_ds0000iu4Ia00001m00020004W
+0008900800_7oWK3P0400W000WUvDutq40G84003W03440800cq@D00CG0Y0W4413H0cK090
+GGW000eJ530aW0W11083530004200W101601490582XA2Z0GG8024041A5n4GG40G1500100
+000GTJj1210000qCW4000LX04C00422G40W04eaG409a04080000428000003G0I9300W60G
+810I2642WWg004g04G0yxl1G112WCe028422hXM0GG06oC3YmA08e1YGeW8800000A41WkCI
+0082802amrwD8OV384182HGWG400804C80Y4W063008W1000GeLy42LE1mqTWOKW00812H02
+009aGeG44G0WX408040O000040485W80K00000GA0O008o8201Y2m00GVV600001008113a0
+0mYYaHG0008J0g0G00aG0Y35G200k02eG7dd10G000080040G0B00WI40008120e40003C0e
+IADmk1820W0500080000HI05K00G080G000004G024K20001F1408414KI9085WY0HWWK804
+08GH9000084050018CDk1000100G0o0W4000fm@@C000114908bK0G0080008G00C8004K24
+0m800W0401X7pb00800G42000020GO2yUk12AC0GW208mWG1148oNR60WW08Y33Uls040W00
+00000G02020000y680GIWA018004G006W0000OW0u5@6W0000G55208a0Y8220010GWC0024
+0Pf@7e100XGA800Ga5800044000e8Y00120Gm060088W0001I00JiR0080mX_D0e020044Yj
+uD01m06240G000A00200G01000W0000OYs6e0P0up73_@t0mUe04CK01000e0v000G0W8600
+20033xcG4R6O08200803041GW8I00130QVD100n0410000G10200W06100100HGA2W1A0_sF
+10100rxPmJ@64al10G00wPr05400XkR02G00W2080010X02WKyV2h0QGyw68440PoU300109
+10000W08000010200000002I00000IYW80014008200IW024HHG10W090GYz60140uCq4002
+40W2000008uW000Wk8@mRmrz600HW10004010000C0000W00zNW0G0tBq70040Gl000TVQ0W
+008Wma88S2WX00DahV2AXGG0qA0008C2zN0C08z501000W00040mf4210uh0W00010a00TsO
+00eN0000vCXO900W8na00ORP6GS00020U100020G00210SAX0Gm_AK000kH0Y808000GL500
+000W8u10WB28rO9WK000W00re082PG0TFGaP7Md00k@v3@V0ODB004H410aw0GV@XPd00yw3
+ulC3g_t0_@F0ZoP0_3WVL70mK70@zFW0KlU2000y5WoAB04n760GE0hM0GSN0y@h0eOJ04nc
+10020502080002H00GYR602W0Wc040C0@C00_P00Wo000A200e2G0W1mCZB06000k800m800
+09100g02000GXe30jXR00002JU600GJ000LW30C0rOw0iY00Cl100HZQ0H000S1G8m0qr00G
+D100Y100e900WB02000C94gWt008200GH000LW20k0ZPS1iY00Sd100C300830_xV0_lHT60
+0KV10@z7000mbe9004100E404G00Ey0b248CbO0Aavl1zjOm0zC00mm5000002uVk2000mx@
+vFW1A00mK0yNl0K@V10C0e200oqp00bT008p0WCp1mV@1400GTyw98x0G4_18En12G82Ks0W
+ww50W0KYO5FUQmwtv0Cm1e8@4000HCxj1hRRp@@9G8W0O0RI000G0040yQSCUgoWSuDmw00G
+lO6StV2TzQmDvFi@l1HZRmH@9KfU20220UZZXA_bOntDUQF400ixvwzpxSICoc1rjAnCcI04
+0GeaT6kY@X9sJ08b1mQb600G0000G2G00YakCuM_7o3tWaYDOT_4AfFXQuI000000Wg200O0
+TmR0C000I0805yR0W20a4ED00O040400G1G0X4R0W04200G0600000200600100200214W60
+000g0900000011000CQ001H004001184012W000428m@M600011G10006H00f08004G02Gm8
+WH0edU3020000YW001000090008800400G02G00W0W04o8C6020004404GK5G020WY00018G
+00800000G2211GW00W5td000400280000W0A80200800G80002KG008000000GWCOb100000
+0ia2000084W0e0X412000b3182f2WX280X50288e0WmQ002KI0W80J110n0C0006YH001000
+0480e0W00000W80X0O80041tqR08000420W01G00000310052021U2580G41004W0800800G
+0G8W2800202G00022_@F1004W04004090000200030W10G00029AQ00900004402000hg080
+4X0W4082OK40206O100e801G04G0JG03W880WI02008401W200W5011K0152WXaD0m0e4010
+0G00oGGG008201W0G000000X04044m02KEM@d10230vbc00104W0009nQ0W10100080A4G00
+0002W14200W000410000540018W0a000WmWm1@60000c_00000800W2W02W000800Z111224
+0282000G022m200n4BG2G188X202AK00K0pHP0WG0WH_DG000W0W0ahxD01W00028a@@D008
+0nb@6q5e104e0Y@tWWhC8Oq4002eqKl1T4O0008WVxC0W2O4W0WHH000Bjo0WC1X1@D0100W
+80W4W480G000_Jt00200G402060G_Ek1z1P002000001W008800004810000mkQ600W00100
+Omw60GGo00W010000ea2W0W02bPc000G0G202me@9008H0cW84nG809000huQmDQ6aWk42yV
+G00801GG82n83080000114Ia000020HGW41b80121W0I80009000402ipl1nS_000a000020
+0X0000WqaY11_R000804000000YY0tWu@DG00000OWoOsJeB930G0WW000W5100K0000000C
+A44C010002Y040W00094H200000uuD804wk1404008601100441040100G0800P200G4Gyoj
+1007052500000Y4141001YkGCeqT3G400G4W0egT349200000PuF3w3rWcuJ000010102W00
+4I000k9E1000WW40G826010C0100091G0008401CO084SC0G00W42000up9002010010000W
+401WG0G_ntWFyD00I8400082840dBOGES6000mOfU30008014000100800G08I080J00G60C
+Lf1GW00801000W2194WGPy6G018W0e4C1W90H0H0@sP008M00YboO62Ye161I002a4541G0X
+02801a8460W8YAW2H0Z5326gA2S1000Y1G0G0WWO0H0202ZGn0542GWqH2eG4nYG5g460G9Y
+GWOKKGn045ff810C1mG42G0C0W0a0411G0101G000880WWGae000000WC94e0G948082A2W8
+W001000W0280P2W004004W4nCYIaHg9KuW0e4K040WmY00201010808W900OH800084Y0G8Y
+GKD200e4004Y2W213a80W31H4418434004G0840000uz1600O4H0I02gY200088GYX404Y00
+2W01400e31GKG20080060800W0K801X120Q040i000O022000OG0W449540004P4980401W0
+02022981840OIw98400ezD34000eG41GK014038ajkDOkU30045G1W0028000K2400000W0b
+0GW00G0KezV6450000Ot000010008010YGC00e480000922A10OW0I0e400004090A10810Y
+800b080G4020I1810WGUtl1086500KGK4k1I0G0f4002100eO06000400DGOHR3O00mW02W0
+800008Gae@D00Y42W00040GHA200GG0AKAe1W0026LnW7_D8NQ30gYA0Wm0004G00Ce0O201
+2004e100W0004W0W02000PP400W0H0006G00800G04G0a00000W00H2@F1004a0W000G2G12
+8800G0000W20005TRR0W20000Q080248220zEk1DeR000W0K10000G100f0Y240Y0m0i030P
+Y08000W04WHa0K011O4044002W0010020GW0000002I60000m200C2W700001008E4aW1A48
+Om020W120HGW01123Gk1Y5G20O000W00m26G2MC10W020W0H068W08002840009012120011
+W1W008100etV38040T5S200G40C0000411009usr6G0080W810100092W0I040We80201000
+40008100G00Jsd00WCO02K00WW0X001W80GWGaW00801Y01401IYK24nGm010X8021004008
+HG40WmG20yUY105W8_YF10002G0001W48080G00IWuMv9iil10WM1000eY0uW00008H00Wmv
+D0j0e000a0m4140Wr4Q7t0000z2G000uB0e20000900000fwpDuXD303Cm12G00xY8400050
+02G0W_IG88Wx5WA102WaL4000200G180G@9005mV1n20880oabZJG1400MI08b0W08Q50000
+0YGG000qM1000GDOU0K1000G508Ye000300K1W80000sF0P0H0J00T100_lXx0CG00000ukp
+4G0100L_7G8YFw@20G000WAv00m@180000p@Rl@dNA0Klz_F0LjU0L300W0s0008G008Y800
+bT000GG8_00W700Wg30Og30Ym7G4XF08WP02OqT3000m30WL78CpC00eUOML0GEv00At1G4t
+3000G4WL70001GoB0gYut08000G0G0W1W003mU300600088000L000g080O0mWm0Oc100300
+0a400WB0006020Z1b8g0em008b100XVd0C0Lc4mD000000WeV5580uAG0m5m0GJWBYE0N601
+@iSmD000u701030NdE0@C00ST00WH000O000m0K0W0mA230100WQ400uZU3e3W0mQmF360L6
+00Lc@@P000y50000_wV0WI10K101WV@z0000Xur2GX200000urT0@v@0A00SZAinWAm30G2W
+__5W8PAW@@70AyFS@hB01WC40p00a@106000yO0Y02XG1b0aa842942g30g220G00W900004
+0y@V00Ax04lk1000@@st0C380x_@0001400yl0W8_10L10eW2uEa4_z69000yk100W006C6U
+EFblH6u9000WOS@7UxFXAADu@@40W00snF3J_R00WQeJqPOFx4croWM_h0WG00000mK@D0W4
+001W0WFrnu7U66s3ZG_UujzA0pQ0asM5d0CnowFCKl1090WsWFaJlbutU6o0WXtxJu1E3IPt
+000uNvtnGRw9qdk1TXBHB_6KHV2W010M5N2G1K1400000040004ep@400H0Cee1niRG2@600
+0020mWGLx90005W212GZW600200380mxi60CG10102Y0090aG08YW000208O0G0OIP3oUt02
+0035_Q0000808G4tzRmZy6qNj1RmpW0G000W00000GX0W00000100WmggC04G1udQ300000G
+0G00002G01W_xDG8W0Ily60GH00W0081000W200001008eW00006T802000L008G06a092YX
+06WXXAY20H8GO0Ag000LI0agW2LG908C0269a14h0000G10A10Y0H5G0204C040080000800
+20W20200e0000140020040O0IXt040008014k@d1W2G00840_@t00A000000180090a0000G
+mTV6W06GK400000X1000f0eW000003801000b2180GWW0GGYO21e05W0Y02Y5304008000A2
+00W83W002G8430010X000I0e8200022G01G0001G0W04WF@D011080W108008000G022X000
+0000D0e40aEFU00a0Geo6Knl1z@R0800e3_D00G0nVS900W0u5T300020W0040000mx70020
+0a20000G017801WG040K6A0WH0Y20eW0000107Y401540W10KKG20X0001O00G000e4C0001
+0G28DoRmt@O0Y008CR3IGn30W80FAbGO_C0100OmQ3000WYJ4800I220000G0G09yR004020
+G00W08000G0044n00H81G00WmvC00W0242022W100200G100aAP83cRmidOalD6x_dmn060W
+W3304Amu@6080200000244G0W0W00Y001G008W1000m000G00840Y0W800XHkSe17gRmT66i
+Yf700W0o9nZtuD00W000H440W8800200840iol1nSa0WM6WFlC0140msv9000500W800OG00
+m44004HG8043938ORT301000008vXU3MxWX4KhepS30Y00yHA67hRmhz64td100800050Mge
+1tGQ0000IP0300400085020001WWWIF_6W00010048O00WrvD0010000H2801GlwQ0W00000
+220000oUoWlqh0008420000G01DhWnd_6000W0YG00004GG0G40400404001W1uaI3G4028G
+001G0000WsJXIiG252Y0282022G1Ka00100Ge00248GW0L8I92G00W1420cG05LymYW0G4G8
+W0GYZWG0X8K0040108080IEgqW9Pn000G4W0G0W0013fM1000H00I0ruQGWy6W04140W0X00
+9G0101001000G45uZ10O702Bq04020020000W1G4WW0Hm40Gm80GW08OiKKGCXg24C0400G2
+aB4GI482200000042820014020000C4009iRGujIK4j1dg62o001G1W21ldWI00301484GAJ
+0WI4004I0a0e0000M0300m010eaIWGAfI0aAH008W0mWYI004i8010H9Y002GW05410W1WP0
+H900ZKI10bK2PG25GQ2WDmCWI0021Y24Ae4HRtAna@6KCh78200G0010W00ujV3Ept000018
+80G02G0W0W00008Y400000sx00W0L404WW0018082202008cW0W05EQm0AGKH0A000008WG0
+G01000G0184GG000WYQot04011nKO02000042GJoA1000G000aNuY10WG6000006W0whsWNK
+D00G0001nG900020009W00002W38000m2NC80040e8241O2e1X000cX11002H105010W03I0
+00W9041K020X14154CWGnG4228m00004W1G0a8000H000Z03u121W4K0000141W_Jae_V36V
+840000001G00200I0004000020K0008GK00A7t0000C032000GW02eGW0a004G01008W0004
+W8X221W0GGg21080210CWAGW0K020Y400280A0K000AY00400000050G00G0000080ZzbnuQ
+N3sYpWXjV000110008Y00000O00200WG80000G0u0048Gk80200100W080er1400KR000032
+e@6W10ilW80040420W0WU7G080@5w90a0WSJ00003000H00Gy5804ay2zd0K0OtB01000WGW
+G000g02000hWs2000WsGsu6iyz300Uz100m3m00W@_3W700W3fF10@VVE@6000840000XGO0
+X000WPV2CO2G2mG8aWW00000U0bT01_R0@@F0WoE00MT00kwG8_00Is10C00000CG884W40f
+4WWGXGmW000031WXbz00804Y00m1Qm00001000100Wa0c880G800W00004100O200W1m003W
+L46WxC00r8040000GlV602GJ04WVW30C0rOO0Uuu6OD000N000C050Q2SHu2qH00ud100E30
+0m502G7W7020@Ck08000qn0G0c100m00001u000GQYpWojL10S70Gh70000Ym6000GeG8000
+0004okg6W00000IkPd@900GB4000002mUs3000mdsfE000000000Nj00041W8_04Hy1Ksg3e
+i302S00WpE0u@F0G4VWkwc1n700phjHurC48q6LY72mm4WDWmeHx4wVpZjoh8x53Y7VZIoD8
+cyD08000003SxQ3CF00yO_3bcBnsu90200O0Q6sFNYEqnOSk4Qs360200008o3upZq@D08G0
+GJ0XayF3D6Rm0O64fWD0020Qas00200WoE0cRlYw3g8Iy7_2pWW1V0020mnx6KPk1004WIKG
+200080808cstWCzDeNV3W040e00000000e80WktJ00005Vr000000000K000Qayi1W1004G8
+20H00G8A0000080528G000Mwt00W027RbGMn68A0W0000040eW5zJW08000880008200W0dm
+tWOuJu5@70004Sb@33sR0G0002008405GAWo000Ly044180eYG8G460008K0L00J810X4G00
+e004G028W04GG04W00G04KG0A000GW11WW00H84002000020cIp00000800G00014aV28000
+sWt00G00000W0003aIe40200gorW4yDuCV300202060exV3_KY10POXW00008002101GW808
+e0840W80001W8KW02GOA4W008W0A60508040014001G0GG400uw_9yzl100040060OW10O@V
+30G1000W20000220W0W008V7YHQ@600C0OrU66iF10F000801180GW0000000ba010840GGC
+0G5402081002GW2GW8G0Y0WF@R001W00200W00W01G00000140100G880W40000K_et0u00W
+zK_008800GG0bvRGet6iZoCW00W0000G020000000WoS00800WC00000G420W908042800G2
+W200180H0cel1V4Q00G0002WWTWRGl@CqDf40WGY0GG4X200mWH0000W082G0TXXnk@6a@F3
+8001000eCOv3Y@50m000KwV2000WECm0920W0008_vqWv@D0024W04GI0010B@Rmhc600808
+ca7005804YGu_JIs2TZgVD0Ga000000000q_000gVvXa6D00080000400Y00W8000800008S
+fH30000G0100W000440000W0XiPGPzC82G0eqF9cJzaWDJ000W0051000800G0000S9tPI2R
+_R0G0000200002W0106G000WWW0G716CGk100W0040G0a00OoT3MGDXfYJ000W8c0H4u0H42
+040gInWxHn8x1900048004000020800080G400592G0W0000Wv00X00002000W02G00C200X
+141G021400206GK2200830100W0I0100201I0W0KO14H01208W02020GY0W4QOuT_40090Om
+84030G8000P83W0080YwABX6Q31001000100G0002800400jvk1000GmC0H0008210000Z00
+000XOO018GK0801O26W8Y0m0G00CK0GO004008205001WW0m20G0G0209000240W0m040C10
+1W08006nup000W10XYIKY00_on30000420004GYSyg4K00Y8500G189000W01K20005b000X
+840AH90aYKb11bW5088KIWG9080200050Y8G60H0G9000W000Ke40002000G018408XWID00
+0e00G00G0WIK000001bKCG2W8G80014GH008n53Iy53Y00691Q00A2Wy@J0808oQt60WG0W2
+0100A424000093H006O002800W0202Z01e0Cm020G00080Y040400Hm20GIW8K0WoG804G10
+230WG02W804H808G400G800G0K01G6Mo@60G01OJV300380C31482c1000G4200HuY100OW8
+FDuXO90K00000A0044nS@6000WcV4X8H11F000020W0iOG1G0D0Y9e42104C409A000OO00a
+10144612202Y0K020000GWO13AGI0W0G0028200P0001000410rvE302G0YPtW1WDO7pDM1d
+Xoab000bmq@600eQ08W08W0020000W14444Am0090yvV3W0000e01400G00G80000A0GG2K8
+280G040Y000W800A0X22000wJ8XpvJ000GdJ040e@IGtddmhcO0E0000WB2W00WJVJ000G81
+0408G00@zP008_24000U1000poqx6W10wl840070422G0W_RG08ax5Og000mg40200023008
+0GV9424uV9My4000W080WH0000GJWON0800w500000aHY1000000a1GL000HLH26M5H820XA
+C00Mbk500m0I0I04aWI041b0832000C80008CEY0sWcXt1DG00820G00@Jy3Um3FKb7U0HpC
+3YLP64dP68_F0C300OcP0iPz66000W100WBG102WkqMOR00Y0008000G0O000mf3R00000Z0
+00W0W0W081GJ010N06300TC040000obS600GJ00WVW30l1@iOuC000Ka01031M060c0D1w8w
+a8k18ee0H0N1Y0k060O0iYW0O51884100C200020006W0000@i@@D000il008010W7K40000
+l0CpTHWLV0Mzt0082CxvR04G5040I02XmW42XI81852200mfs60X02YW15415A82A180Wg@5
+420000gK0mmF0000K200DXNKOuCi5c1V4R0h10WY1Ywi0d00mAlTU5RXZnZTpaWWeLnR3000
+40020HZR0000CS000JlBHI064bU8NrZ1G010000MLcRmos6SLu93oR00W00G100Rjd000IjL
+qJ0010W840W23C001X00000G002fjdm3S60040G08W00G00W002JkNHRz901000G80000400
+W80X1Qm__a4TV28202QQo000000AI06mB1080W8002_mt000210010G80WaLV2dURG204aqV
+2f0aGR@C4ll1000aF1t000a03_tIqz60O008XQ3W00000eekvU60e20Kdk100f0W000yfd1v
+tRWGG00010008804G0WSZl10800oXp00108hvpmtt6S1e1008GE0tWvkDu6RFE_F10200m00
+0kus00000Ww50AT81840I000026s000100W08040GaCk1DR@Gqs9yAn6JPc3010WV8JuqV3W
+320S6P5L3a30280G2G00200d7pWU89fGS608000WC00W0000Y0Wg_C00H5tku9ixl1dCGIsb
+U0O008dH3coGb36a0088mEr6W0000it2000W400204600W080KKmFFUc0000XgwDutN3I_ya
+XsPuxx4000mR7W00100nfz6yrk4jAC30L4Ga20WWG2G00400404unkM8000041G00200G180
+80a20808401000mL4Y0008W00068008205G08CB@3@NC3W2000400G000W4W0C7@3Fox1000
+XADD0Y0W00002H080080008000o00001o00G480100fzR0200WsBJOnMR8bK0G9b80408220
+2000We000WAttWmICucVF0G21G1b2f7E3gZF1y00000G0e0008X8000AH0000000a2badGX6
+p0001180I020AC0GOe8000MBp00800NyRmTXU00021X0102000X0009YR0300000JD00G0G0
+3000000e00GVQ60C000080000W0Y000X03300GGS40nW202a0K0eW00103O108000K003yOm
+pvU000408050S0342WW1mG0G0W0mu0400O0008XGG8200G0008GG2I0Z0W0MWX2406WG00N5
+d30G00K200020841L08H0002400W00G1104b@RmNyX0200G000081K0a1020000K4X0000Wm
+m840G08000000WW80000040G0004m3va4hF6e@6Y10Xl0H0800D20410E04000K4O00104B4
+9eD0000YDCVl10002@bt000ws08000009CKi1D1O00R0c1Mi10000008SBeggMKLL1E0@Zgg
+W7LLj8CpSHmNLY0uV0000KTkl7000F0000OXgg20m3FCpKLOcvYmCp5fA000_SgoYm3l4X7U
+K100egA0G4H0000000T7mNs6iJzC0uW0LWc0g0@0N1C1k3O2O400m80W2G005W9000003mJy
+U00p000A202m0C5e8e413G9200AW0B0000fg38G5W1WAG70106WI480ZP002H00WOvCeUUIc
+_N2W4K884e40f40qlzCm006m00000CO030O61fW208182880004uWWW2YW0b085400G4H00C
+m006Oqm6a0Z60gp9aVbi9F0UEl_1V2005uhIu7daKWJ002QVgYgK0T2OV0GY3c5OVE000eL7
+00CZF6LkOJb1H10uLjr15x_73kr525PyJj6v4fWAfPymMO252v@VO_V7e@lXw@Pm_@5k@N1y
+@J8@V4q@@Wz@DW@@2w@d0@@7u@@@@@Fct@Tg6L5_64YV2HvR08T2W4@bugm@7sdakxP0400G
+a2F4APHpZdmMy9W0008UzAcY7Zo@V0Kc0mt@dW000CN1yi900qdVB5YFpR@@00dC@tVLgutW
+Ix3PxV3E@F100014000U2lYi7EX9j1Gr@gSeWSHdR0S00WtHO8US3wiWXqIIOc46Yet00080
+RbOmP9T10uuiBsncp_7mSC0pjinfBLyyoR000ee0G044EIzBS500210200vyRGH@90000SE7
+3QxtWp9I8A06Ip9XXTIeOQj0J904sZ4dcVIlF@@JFO7kym2@IatF3xfRGa49iwV5WD70Ert9
+002HVoB1004YJtPOO8680000000PTeAo_t0000eg50063@J006n000000W4y_F30a00000Ga
+2W4H1KHU0F0G2010000080I90000008b0800000850AY2u40G0000Y0sqt900GG40000aW4S
+LW109810000HmW4850AY2W40980954500G2XW82849000Y80Y8000I428YWG89H8f0GHK0aW
+Ga000G1G8M9G0W0eM@4I1WYe0G94@hEZ8XJlO850AY28a1mC000HmB56041000000W40WK0e
+8A0I00G04IH20X00Q0mW8vO850AY2uadzN20G100308G1O0000W0b220000K0A80030mK0e8
+AWJIwdAmG100056w0W1em0Cf0GHK0d87200EWm90000um1000WSG07004Ep950AY2u4000G2
+0IYmWmY8100032F4O000GIqGWHa4I1WYe0EH200m@@@@@@@jEgx@@d00WhEAoJAr4_w8R100
+0jA10WmD9fKJLgKCXNCn8RpDsWe200_B3RA1010WaCPW200G4d9G40G02020100XuLP00020
+040000G000400208yAQ504000800sHX4ZZQG9dF4vQ2nkQ0uHG0081WzaQGrh60400000800
+0540028414G000W0K4000e020025W00G000G51G0040040028G000W42022600G0004G0W00
+4G@eCyBA3@ZomBORy9R5000mCl0004W08XM6YKuX8xCegh4W024Fyf102000000I0040G008
+100202002W00cF53004000806OLYnRD0001GOgCKUB3040000OK2102ewL6Anr0100eW0001
+O402200WW0B000G0G00484G0G5000600a0020W0000110000e00W0Uog10010EVxX@@d9slA
+0aR04GB3tcb0020WA0VufY4gVp0020000120008G000WW00m8m60008edY4215900mbW500A
+gbXi1IeSK64101GG000094010GWM2C0000Y02040000G0040240aRu3lC_m@@@00u350a0mT
+YCqee1Rjo000W0000800I00000001G0280048004G0002G0W802WCG4014420I0WJWD08Y00
+40001000vZ0p@@R0s51G000GI1FK4H520000O09061000000028aMWDW0G0004W00200080W
+0043W20800082000eMXJ0082GmU29U000004q@@90W14u@V38040y@V2G4W0G8003G1Go02e
+060G0K44128805G0e80S0W0040MO84C0G0Y2W01W080GKm000000O0WwSFfpMI004p30D000
+42GPo90O00000001G000000200400100004000020GG08000G4O0W0I0W0W0W0410I0404GG
+mKc2005X02GY00420e0040K00008201WI0b_e7fxknQC6y@F3W@IG008821bK200a000GhQP
+I0aX02j4Y044520G920200G40K20804G0G9A10aG400e400004004A1W088G2eaI0ea840HA
+10001W8o0b000WI008W00E2Lb_Hy0000aT2005Q008W00e0X0y@V2K0050000W4514210020
+A000000W0H0W6I102800XO000W00e004004G000HCIG01400W0540G000W02O004OW820G00
+mZp90E00uryP_@d100NWZOR00H0004GH0011008S0Y0C00000821020AW2W008W0G30YW1uO
+W48001Y0Y0W008G628m20W01u026G04081O0Q2G08080W4C2FG000G004G1G000001404cXD
+TQB1u5500000A0G500000a000000010W00040jHb00H2000000e0141GG00G14000npt6001
+030264G5004A0X0801002G1400G00020Wh4W00pMH000C04240001I0mU6g00250W00mIrF0
+000XHqV0G1WTl84006020200WsR8400s0w90000wB020W1010G80es5402qVXUL0608y5000
+OGW00020q7301XTlGV9010MzYG00GWe00200wFW0WWyBe500000000Q1u@Va00OW@@F30WMQ
+@@@1KjA0@@R00O9000008YAf1000m3210008446848CO88Cm40fG000MQ10W@nww6000O200
+u7W0GIWV000P00_@N500m03wRmIxF0486000W100WBW2Wc0k0P0s100a10002000m000W1e0
+GJmS0NWx000M10003000U30041C0uDe3G7mD00WR002m004Wp2C0k0E0O0e2u2O748mF0ma_
+Z20009T00Wx@be41300u0y@l1000L100v10H4H03FC3100Ip20OPQ0miC10Wf10yF4WW4a5X
+GeW8WG90IG000W29Wje008Uy@FL0800MaV9Gv80ZoLHlv90001uFykQvA4000Cy200_F_gtZ
+G200vGWvO4fG2rltId_L4Ry3J7dmO@9Ctl138@0800Wl_D0aU1GIu9aNl1JSR04000G000Nk
+b00020000620000W08015Wu@@44028iSc1p_dGQ4I0001uIy7owtWWnnuBV3Iqt00028000G
+mE00yel1lwRGyq6G002umU3020W000G00Y00G0WWedJ8TV30020010018W0021K002W00104
+0G04O0000G01mhrFawc11vBnRqI4dF30820s_t000qZPhdmp@9800000C0Gx@602018_V300
+208m00000G04GeWXrJ0016W8000000220080000W008uDUI2@BXnkJOkR6_tx10200WlV0sW
+tWhrDeST30G00Czk155O0108Y7_DO@T3Evt000W00G0000400WW0I001GFO6WX000004owWC
+00G08sU9cOh5000SQ100_@F100W80O001060G03000O0mzbU4MV2B3AH1NpCz@60uAwc2ZXP
+anuWE9AgB11000bxdm7@60100eR@Gc4J52000WVI0wxl200GWJldmbO9yHr6LHmm@@51008A
+kT30000hF00euaG0000ySc1b2kHtV900400043m@@CCrW4bQIIfS60W0000WaK6aFO0000m0
+4W1000i200rii1065WCzD8bL3_eq000G0W0008300CbU2DhOm4@Oy@F9W0000f90iwW1hNQ0
+400002G0Toz00q0WjICu@@7080G000Gueb4W000i8h108048aI0CiV20060Y@t000G800000
+5004@890G0HI0C1e300VyR0021008500040000I100009085f0000000a20G0000S6d10000
+002G43d1raQ0HY04Ae4021HG4XI020041YWe00000W006n@RGGjv8000uky400ewqIA3Joa0
+00GG0028000Y000WGa00u@V68GO00020e9L3e0000K0001000320K401000030000WpG0W00
+00G00WIIJu@@70220CxgA010005r000W2000001WX000000G440G0W0400002258000050WE
+2G00220u9K0ixV6G002044K02418G011G4WX40020054003W1861mUY60004W00W0400YHK9
+fv@D00W0200W6u10G8n94Yg1jxRGyG9SCh17emGKe90Y408C834900000G0G0e0000GKQ2e0
+WzN840W00211G0010000a200J_p00W1W_Z9fFH3001000O571I0SDc600000G0G92804a@2b
+60K0m_B210m100W040eu2402vU100Q8910040ez6210eDWs84G0Ws0W0G010G4020Q500H0q
+608IsG4H00anVBW010oxt90S000WB00WVW30c0t100ygzF0100eeOIQNrWXYD00006B60008
+90000G0Wp000C0d100k300We1C0NW30l1t0O0_100u2Y@F100Wc000PUfp00KGa4Gp89WC0J
+0D1n0o0k3Y4434f0LxB400W7y00000Fy_@t000kbr@R000GBQ1009vPGy@C0pp0ut@DKL0CZ
+vWO6pK1W@fgA@3Uu220@t@9axuXSmxY000meR00eeSsAuVoUK_v@V30IN0KzELFpIIjp6C5l
+14W0G66t000804000car08002n2R0r00WHFD00000100XAmD008m040000W08NbpG5uCG000
+8kw40804G010W800q@@605000200O9qF00020010o7gL0040OVw40A1W0000001020010002
+8005000W0000u2A0WoNv6qJ23@@R0002G08e0X6PG4S6SRW1Fv@mIQFCoT50G00gr@1000W7
+PR0110WSQD8vj4G0000m000480040000100WqH20W00002000120080010G000004201WX00
+00040W1001W00@@R0200XerCeoT30200z5l100GG001400Y0OFU3MXtW9vDevv7s@V3020C8
+00080e8aBl1ZFOG1m600003k02Gz1Lq_l1010WEkpWQwsOgU6Qoee@@V00msKHoa4Ll1NOkq
+dLF0420uCl4QXmWtRDOiV3KZ50SVE90800wXhYno@v@@70000H0W08wQ98C00SrYVNyRGY86
+q7f1viz000ygFqKPRYeMqsWl9J00880X01eMjDG000000OWt@D0yn0GTeFW004OIkA00W0qK
+Y19bk400W00001fYPGF@6yTF3t0O0000mGAOupTFC000G200OBZb09a1GA000Yo200qY800W
+KW20f080H8G0aYK4W0Ca2AQH400G0e0W0000GVPiV6EE9XFPO0100010000002AnCGeaI4y6
+d1JpYqJR6Smj1004800ea00G01G28O1D6040008000OT1WTzJ000GGGoF040000404H00XJ@
+D000G0202000IMxvN40020008W0040000W1HBOq420106G1G0W042u049WH102200G003008
+000q@SB1201aKvb000G0825WX0Vu65XE7910000G401X20G00G001G0100810010001W0000
+00WSUqsG01Y0qLg1008000GGaiDI0g00000hChg1G40wLG10WmNeN94000V1H0G80A40010D
+7W000K3000ue6Wk_P00mG0200G9000Fjd00020m0000WK0G@5030mV1G000080aDhN20ggA0
+y0U0u@2egg51VcB2W@NaggY90_7JP20LgAH0oKqWhEO8CS9w93C0W10A03mS0NWp000t10K0
+30e0S1G1y3y2m5u702mFvRS300ubLmF3W082U8d1000J00002ep00S000GJ0006W3000t100
+mBuEb0d100WL@@t0K100ryp08u0WAtEiXa4_zKYMltOFQ9QL@aimFPdwDgEd100gg9zJImq9
+a7UNjyZ1my2WNteQMuJsI7ZPmP0000iw00W85K1800GUuaKQE3tc@mNz9a5U20420EYnW5sD
+eBC30090iYU200qY6PrWjqDuiC3I0tWVrI8Bu4wZp00G0040080004G08W002G10W80400WD
+NRGqr6000040e020000e200000G000m040000GWmrE900081800000W04100020488008040
+1W800400G042m02500Ie00001W0m000100W0000U50W00200G108000010G002004106wFX6
+xPeiV3QxF1000400W008008W00G000ufsF0G018ZO300W000O0yZz4008020000010Oht600
+004002800W04001@vR013000001NwP0g00eHuDmY00000O00104000X00810G08v2k4cytWG
+@Jeoz700H000048O0308W04MF381020010S8N2JKBn3z6qwl1405000000GW800400W010W2
+8X00GW1080rpk100G000Sb001082X4IbdXGVCeZU3Qft001004080w4q000W000G090G2200
+3e@M30000G044u@V3002O0W80G801014804140@@R08I4XyyVulU30010801000040020mO_
+J000H000804G0004000DY0yCE69gB1808YQdDeMxAWa0000044002W4H080904@ZR0088WE2
+C03W90000000IG@@d00G0XR1D8qV3000m800000G0048WaibP000Kcz00WI_DuiT6MrM200W
+808e00206LhB6T1dmz6600800GOWmP@6SPh10G080100iNj1ZvdGy16aul1W000004J001a1
+01Im4t6q_l1nmfIx@6iaT23bBHEP60W8004G08000044G00GW0W8W00000G01G080000006Z
+YpGku90005OtG3000a0088PII300H04Af100000jr0Khd7hQpGF_600G4fRdA00W18nG0010
+08G49AWA40K1Xf4WAY0414H84WW21052323q0800GK1EfV24G0180000018WG00028W8284C
+4052G8AO0uG9aW040S40G08W4fzRWK10W@@D000KmTxU0008I8w8oVbF4@l1814000941402
+G1X82G2GH0002G8600404104G0280008201GO0048WK800aFL20GW00400100010W0028A0W
+00008W001Ae0GGO00e000e1Wu5C000200W2estIeOUF0We00H400086100GvVlbG100042W1
+8G4G0410000c11bK21Gc0eaIfurDWI40400G0Af40000G19G0y@l1010J000IHA0A1G000j0
+0IO00HWGA0W0W015fq214W000GemmDWG000mW1000W05WdGIyR0000Y0004504WUqh000e40
+0440202KI10G40GW02KY842mZZ600880W010H0W040000820srt000G001GJ108W00WA1000
+05K0400000H10e14804045G610Y8100W00410I000mxGH0G880mB@FKak1Nzp000G40012Ga
+00UAl2n6600W00010G000805C0B01083604000Y08W10W2828W14e8WG0W0W60000152EqV2
+01G6W00802000512W30O2YYWnE15G0CAYGn8W500HZ1BW800WG018000WhJ000enV3whzXhK
+Ju@@402020814exV92Mt018W1O00200G00e0000000KX0A00054800000WGW400a2020L0aU
+zVW00n8404208100G4W00080480iB730000Aa0080I301000WW1Or3IIsn00800G100IAeY8
+_D000100eE0020uU180Myt0qV0000nNG900020VP@V3I4t0W20zE0G00yB000G001W000el4
+422tUXkRo3m0030X0100Gz54000V1000kYe50000WdP@GxuI0008600000C1W3@heAU3GV00
+04aV1L10800mV@30G8cgQXlTt10m3N0G7l0y@V10QzW000GPb0itV20z@0000K100Ga@2ADM
+2G2WCGGGOmGG8W90IX0urC340uV000000mMT5S600Q1e@@4000dr_l1m400_@F10G404Ha00
+3Y41000xE@70000JT00000Mj040024m9000C000O0S0e2Okn5mi30WA700G400Wn000p0508
+0a200uHKJ04000C040S1S1q1C300u70W06GW1WX03G7W2Wc0T0C0s102i3000000mapW8IC0
+O00GmzC0040OVy78200GH000LW2000geV@V000G50003WP600tC04080Khl1000mz10KfA00
+W@00Wx20A@7W@_d2000GP73t60WW04aW19185K84A8200WePI0Iq2Ga2Iqtl400W5401a206
+O00000Ae0WFyhGr10eg30WnmTDI@7MlE70SB03sdp_z6iIl1pW4owwbcVUE00Wx64bd85m00
+80200WXfrC00G000G00e020FjN10G0WqkJ000Wm@t600400080W000WLqD0qN200002W00WN
+YR000G82020h@R0100YstDW000H3RCyNh1tZRGdpC0050X80G00000W030014G00020A11ek
+S3021000I01900004GWGsJ00002O0000008lPR0200WCqD002A0008WovD0W0400008C328Z
+5Q0G00001800000WW0Wa@F308G0dDm048g00102WA0e004WG1002GGW0m0200I0X1Wee24K0
+020G008W0804800000A0H0800030080300000WfGRmaU6alV5nLdmU2600020004mI360000
+00GhuI_60G08OBV3G414Lok1Dad0281Wy2C000200G0A020000X0000G00402W8080010003
+000000G05016001G000W0WutDG0WW20000W040001404GO00400004G1F6y@l104K0IQt010
+0WHmR0400800G82000MHt0004G40000LK02G000G000G14WJyJOLF6o2t02000400iW04000
+10WW480W4000I01002000080302b0G8uo36042W000O0000aKxDO6C6W0W0H080eHx7Q28X_
+BDODu4cht00090fcR0510ejyC000002G0000G402000G00SSl100600W80qqM2Twdm1wL004
+4W0000WW0WqnDufO601W00G000104G@_60W000004m0wCqAL2d@B10gKs@@J0500mq190080
+wgD3svt00008Y00000W0Swb1WG00w@t0008W20412pr01000G400010248g4PZ@00O0W5_DO
+6I3Y8t00004tzR084GG2000G0100004004800000OE2WZyP002000IX000204008G040G00G
+G000m6@6qWl1G400MR910W00Jun0100WIHnuk_AW100KE730W08G000028aud@7000GQ102u
+j@4UnyXZKJ0000200821000JxR000W000806000ACmWvkI0001002008800b@Rmng9000200
+eWGrl68W00000e0020mmFCOZU3kxt0401024800WC00m018A03ggt000Fx00K0A5q0800800
+0040954YY100GW102086A40Y00Wf0G48Y80004002020000G0A00K0841002405G8282W800
+uKU38C28G50W0Y0WO76C000810088000K8WG8ppp006000W40VqP00G840WG8001000Y02W0
+2OeU3000a2004EtI3e000W0000000804030We000A000020H01130WOVhCG040GW0Y0410W3
+4D0040mS26y@l10Ge0W001C8l10020eW20qIF3010008021A00OwD3_4D10eaI0008xzE1I1
+01G0108bK0G8W000G1000000WYK000ePB080880WG20G4f9y@l1WW01000GI000W2b080W00
+104000He0WI0X8810Y00Ks76G9020M100WKY882020G9H000bWe0K2000Wm00W@@P0044000
+020H20K00000HaiwF38W00ab80aEl1080G0W05f80018YWHNa6yHl100q0920G8C081800WG
+00WWiJ00008201WnwD0GG00W0004e00C000G010G4YC00400000K000100010I04W00CWc20
+0200000e20W000I80KRZ14G80Qet08883W304041e040Y0e4000001I00G200Wgro0W8WG00
+110m1205GK4WWH0000108400W008W0C4WX10wk51500GY0000W00000G80000W01000G8404
+0W0WG_g6W6O000246300em_D0GWH40000Y003GWe100K1G0u00018A00080H43A200cutW_L
+CuRk401G1G90e004000G82000004040841000G0W0G0004WpqD00W000WW000500404U1m00
+0200440000GgE488b@4WW10G0000000410W0000G84082Pt0800205001058000H00004110
+10b004180W000iCh10400W0G080G0400002l0801G3Fwd000048924A000W_A2100101W040
+em0400eQW2B0E0adxj10180GV0800GV1z1000G@52100000G840m94011wh000WWA4V3m00W
+N00002021000G8H0004G00A0000G20yeY10WO0a008m4u20181eLG4040G000H00N01000N1
+z2G800q4020u0000840qx6211xl0m@@Lu@V0ul@DmC0000fPH0p0mn@L0c_1000000W@10eg
+g0@30egg8m@0Gq@cXegg2HFyWPggA@500gIL41NuBylmNaPClegK5SLfAcPYPggoYW7k5PEJ
+92m@20m2X90001a0u@V30GC00091u1V383J0Svj1A000W100WBW1060N080@000o000W3000
+U300m0u0W1mFWAWR000L000W10005100k1E0G0S6u7m800mP000000Woq3000a400O78A03m
+S06WQ000K01IW02a0O081m0G2e8e3W9G5100J408e80K0N0e0t0S1S1Spu2m510mD305S60A
+WB000LW30l1IH_1kp00yrxC001ylt1000GL4@@R000OH1000FuR0084000000GL0Uwd1000B
+c60PqC00OQ0Wt31O9BP100WdX000000Lh2000000NIVYF0019G01XWW2IG052X42m110000W
+32ueN300010m192000W30W841018C00_@F10GL000KG10u1i26FbSZ18U0WsnvvKQF000GaC
+k4jZZHHhO000WbT00GWhUy1e4LrHI3@B1007CBFREEVZdnP0G00GMxIqjU5LtMHOv606z08I
+1IA@3cDqD000Im2H6CMS5bQdG5zIW0G42048mfw60000J900201H000010041g8FXHoJeDR3
+2ps020020001MUp0G0G01ob0G0044000Dcd0040aexD08002004000A2040208800000041W
+2W01WRlJ8uR30G10Ebl18008IN_10W20020000mB100W0001Glg6000140Y80004000I00K0
+0101G4eU2W0000I0020A0esN3080m004800820844004W0XWP0C04npoCOM730040Y0W00X0
+00000ek_DW0K0uR@90000CuV3e0G0ad_30W000404W000ArV30x9000O0Y0004200ehdC040
+00W8000A0G0000W0G102000000180000G046080K20C0820000244W204W005mR0YA000000
+418Y6LtWJnCuDr480G045R2DkRGL@608G0e8@402000000SMw400G2iCl100G0000G8900vQ
+F3cnt00102dmR0008W4XCOit4_@@14020000W00GX080080T3Iv7ZvGDuFK3opFX8_VeF83E
+Th200uwBjQ0Y0WW16IOQz42zl2800048008000W00W00W000W801000r@Rm2rL0G0G0000e8
+pK01001r@p00W128A00rWpGisI4Va1grT0ozFXvwP8nT6UCp000H000G00010kNS24W00Y5N
+YwlDOFP6crt00W04HcRGjoC010008000400WiyD08W0qdu90000yr83000GnU0080V3000G0
+108eFSCAWm000G008020G080Y00OuU3YLtWysbOfu7Ast003000GI0_SNYqdhuQS300Y000u
+pvlV3oXd10800TwRG_a68000402048G0G0aW0xsd00W4bCzIeaS3gGzXwxJ080G0WW000mC0
+0Y2G1001deU20W008I0000800012400400280W0G8c@t0000Y00100308800010000G40W9z
+JW010mj39K4V20W000GG100Mnm0m0060202WW88001e0108K140mYG005W049W080000010S
+_V2HFd0W00aw@D0GW630O828X00hpd00004G180802W6nlYaWD000G0X0W8000qq40000X0W
+OYG0100400G000e0D7RGCz6W000008GGu_6W0400X0W00G8004000H120424010088V36vt0
+0410Hek10L2WagV0aX00bK000820LWdmh@6000IG0000X00mPxD00mVB01WC000GNnRmOy60
+4e00008200G10Wa0LYRW000101W224GGe4G00HGI00A100H820WWI04W80080180I0a020W0
+00020a0H10Il@Xu@D0000A2080000HxvRmUT6004980V6_lC10G82000Iwps04000WGS80G0
+0002800n1000WW_wO000009G00YG0041540004000W140G020m061008G48W0eY002W00W2G
+Mv6m108ODU9QdL20W0Wbfd002000W4108000CI000401220mt@9WiW3101002W801mX0000O
+btX003GeWCY6000X16000E020000000e00000KP560G040W0G000O00220000W1GO000Y000
+40XCC000G0WG1010400082000000GG0WkNUeoF3YtC10100H2b00G04K0090000010281000
+0a0Gr@9Sgf10G5XK04920g000WW0GG1I0G0W00a01G0052l40001W000CpD30010000K0801
+0W300012WIqD8SSFQGn0h400Xep0Yf100YmB200008X0080e44000G90W1KP00qB0000Gc00
+00nUu00000GH08dV300S000GGd84A0010WazD00010w50000k9Wh0000yh0800C503S00W0y
+NW30000q5H80000004W00C5W000zT53y@T0qVF30004XF0G8000ONI3_yF11eeM0000GLL0C
+y@3W1600m34X800W7000000AXG404H40eW24100e0500e820Wkzb0004MKj900GP7W030010
+0G4V008x00001SBZ1Y700ME@18080peR000800006000@0800aTa15vR00W000u700GJGD40
+0@gM208210102WA020LWTa81g8HA0000qdKKa2WA850L01040g8C14J00O2000ZSIl1010C0
+0080Sx00GC100A200W10003W106WnFC0tP00Ex0004100G000m4m001W9240J400PaYvh00L
+70GP70a02WdIoWg2WOy1000WA55500000yVnx44mCp00uX70_hAggA8KLLGK5000C2XB8cPM
+GggAm1000uF0xy91000mS5C0u10mMv60001600Wf008iSmrg@U3YEs0000u3HaGy@6ayl17P
+Pmko6i@T29EdGJP9KND9L1yGB_C0G80000010Y0WXRJO5@7cVt00013@FP002001040hJRmA
+y9q3l11xQm_@6Cta1@rQmss9qkj1rnXHM@6SUl1rzp0000YQEDeW_4sdJYLbD0m92H90F000
+000m0oJw6C1W1hfRGSwCSwg112nGrUXSFF600012H7Z7yD0000Xw00WgZCOMV3c5AX7VP86u
+40010q1W1RllHan900G0L0000000eJsJG002GWlCKrU500020010COj10020005000u6RqQ3
+0008G0014YH8mVc6020m0080000PWFbD03000400WeoIerQ3Egd180805_oGs@F0011et034
+100_QV200200G000200Suy7W00800002000C0100002e04000U1W2G004012AG01eliCG120
+404C002G028W0W004IG000402W1W94G0GW85000000G800a08200WWH320C0C0G002W000G0
+022000804e00DBRmBx64fW102W002000102uTB3YKWaIDC0000800W0000OS700G000W200G
+042C0Z0G0GX0e000004W8G16W04804400000G0PW10Q0010PmvlO300G8W00G00i80005G20
+104000003G010002C0GSV9avO50W60slY100W0dPmGcx64Xi10K0002G0000W0e030007103
+40010G05WG0000001G00G0102G87ob0KG1W@@Dusv4k5r000m808802_sWedC0000Gt3L000
+8ON@J6zwX@@DG4000Gd0WdhV00aW045000C00h5_0100mrePufI6I0tWixCu@T60W800000w
+CECUsi20100TMP0Y00mFrD00042_10X@@D0GO2000020421vXR008240H20060404000400O
+4T3Mmt0100W000W_MB12000nDOGKw6Ch_3VfRGO7944j11XXn49605128Dz4040000OcwyU3
+Yzt0m00mTyR0000mdsDerR3000G0408001G400008040I001QU@XcyDG004q7xFqLs3h7Qmm
+wOKMl1rtz08000m6C0Tlp00008012G0GI07Rq0GW000G00WI04G242020G0200WM4I0180GI
+b64bd10000dT@10G400W80G400G420CDV30008Cmk10820MWl20W80Y800W10167e13mR000
+0Ej201l@R058600020a044G8e8G0K1n08Y2b200W0mW800H5022WK45G0080Y0000Y08GO0W
+0000I0008ZU38000W0W800290G05020401wpGSv6qVl10G00spmWAQz0W00041G00086vqR0
+W41000Aml0c000002Y8GA42WWWW8Z0006G008WGaG012WG00X00W00W040Y800460XayD001
+W0WG4X2sD8aF30004W100vCrA040081000001000100e00lGYnR@Ca5N202000nR0C2W1001
+409aA1G2G0c9Y8b001I18XKI92G0YG245000i0W00G9000aW40be000G000WI400021W7CD0
+00040O0X0wC000WmAjC0004P@C3o_FX1_b8y_AKc800024100G800W0000y8200G4H0W004H
+H51008G602Y08002000We4W80101434H00000000C101A010410400021400010I10_JC10G
+W82K00001Y00G0uJV6U7c102200441xkt0I00M0W20EbU300G044000422W10A0000000@92
+010001O0W00GK0G0W4e04Wm0W4yOG1400Gm100G0G26X0060E0m000O20000CKHk18200G1K
+08020Ob93YJt00YW0m0G0O0G0y@l10WY0M8k200W0xfRGqLX0041101200000mJ409XRGIK6
+W100W20124G082008004A000W0WH00000005IWL@JeBJ3IjpWuID002a000G1a0BW8021MqF
+10810F_R00GG4m000hDdmZq6qVP5NAdm4E6WU40080R2000GZ3K1000ei2000O0808010wlW
+0W0_Be@2W11ul080040G0200WO7G000w5YT0000gN0uBU300j2000851m0GrR6Kqb1eN0000
+mcihF3210000Ye0WO0DNwMYXp000WP5@R000ekn_P0_0Wf00AR1W8000Ks5Ww@30000WLZ80
+0000WS0G4002DB10hF4Y800000@Be00OIw4uF0WB0WWI0g2GJ@9000OAb63oPp0000G0GG00
+00WqP8600W0480G8G0W000OD02010L6W0c8000000qo0uJ63000Q2ypm8zR30mP000D100O0
+E0W0SsX18610my600G60004000C010S1cVG0Sx00W0000OAbV3040O000G0Od10WO2W@@J0e
+i3m1xF000Wo@00008lgjsm0084WG8C819eG2IGXchE1000G_300g@t0wxF00WT84V000000L
+W100020Hu380O6W4fE1000000007a000_mGD00X20WY8WKmRv_F6c3pZRvb00myKM@64Y53j
+aZH9t6ijR2v@QGw9LiQ_9W030I3NYHqD8@R60jqGyyh4@WR0W00WNjJ86E3Q3t00WG8G004Q
+zoWzRJOwN6cNNYnXhOW63YapZZQDGV00Gyt6iaV27nnGpwUivi1JmdJswICvO500qnJL6Ztt
+DuYU3YXBX2zD0X80mwU6KOV2@TpGIx600142m10Gdz6S6k10H0020r0002041G1V@EXxlP8X
+V3whd1G00003T0Ge0000010002884K0020W8WG018W0001440028W0000WW0OG1G802000GO
+0WG00180G0828208000M0Tik1001000W8250040008H80420000G0Gsjd18600G00002A004
+1G8PU6kusWEYJuXQ3_hr08I820004802CK0h1Y10800800G0m040A82113G8e0041101B004
+0aWW1Y08842084G00525eAS000u0YG0A0140W04CvPR0G2I6W4000aO09801011G0020mos6
+irg101GGAFs04G00@@R048000500v_R0010a1rVW000000W04200004GW0100022a0100004
+000u20WO0010G10YW1WG052808OK0XW800W10KW0KY2K014G0901C0204eHW8A0P0ka180H2
+e0WG0XCC000a12GG02K0c00W0S0901g00m000W102q_V20G0229mWQaD000I1G44WA_D00W0
+0I0GWi7gukz42Wd1G9905pR000041n04060W00G40GW50000100G0400200011e04X108utR
+3G10000G0CQ_4cUq000500H008000W400gV99Ai@1H000l7PmS@94ul4DzR0090C02800008
+LD108W00000G0W00000048WWW0YW00W42041000G100W0220GKEGq01800htP0820080W0pk
+R001010480400G0801iUD3x@R0140acUDubh4M7o0000G00808W0mG0000008OCU9qDI2j@R
+GXJ60W8fjX@480G0080800G00G04000140Ab0W000H001W0W00H0Y00800G0GGa00W810ou@
+@40118W00WudE3ozs0X40030M10200WG0W8000010KW00414SGnz@6O2808HtDM@t0mpB084
+00_Q9100eW00000240020WO3S3084GWW00450000W021W042G00_@t00Y000011kip000410
+W10010G00C0u013QEs00020I8008002yZX1flpGLz6008WeFK3_IT3000GC0001002qUl1Dq
+R01G0XdRD040210040K0002002AHFXk_D8jV38020qaH2004W0W0W4KV2xHO0H0G0WGGGGH0
+WG00W00050Wn0084G00000Y1WWG410W0212180000Gm82P8SQ3010000010WW2W0W0000Y68
+OA18WG4W0210W2A05WX1AG34u1W080HeG00G0DKGY0G092eKXW02W041CW8IG2708460GA40
+W000X000m2G144a2090010440832IG2e0819qW18ZV6G0I8q7N20000G09004GOb80I0He82
+020W0GGG9AC0qhQ50008004CSok109C0U@t000i0000010WG00200nWYW0X0AA1S0092X0CX
+m0G08n8HG8002100184A0000200W00044000G02K000m026082100880A80a280W@@J0141G
+376004KQwD3000G0080aI00WG10Wu6IeO@A42M04xc100050000XC000KI1CbKW42W41AG90
+0A0Y020L20aW5H0G9AH0W080004040W00080100aG0WeaI801400HA1400040W2W00G0088K
+28000a800b00W28oFv9K_V20088Rnt00G0008i40814005C4004C200mSNz0101000WG4000
+00Yn00200a08001X9902H40W4400W00100W0W224G0nq00809100GWm80GW05G0Om102808H
+50X0WW06Vq000GiW042G00DI41001A01M00Wc_J00n0000021104YW86840WyUh181000008
+082WO7y4AfnWQ@V00X0000W0000a4G1G480000F0030H8C20200018O0GbWGGo0701W08WmC
+4008A8000m00000202m0404BW2E4000001G000400440q0S100u80Y61m80040808242G1c0
+2082Y_@P0081Y0000002020a000G000W4410000081a8028H00C002H00W80PF009G200Wst
+000640000a4K402WM0G01040W40XK4600K8Y0We000X001IG0GG0Pq@9G200W401maoCS@l1
+08040e0YaDv3000W40W00eL0030000M10000a800000zG41k1BZBH1@90G000G0GhB800Ws0
+000WgHy9020WU100000D44010zkW000_Bqh0000wl440003400G00E0008WJ4wF0000kV000
+00010100Gl0004uD1S50000Vdl@D0G0Gl3G00a@20n_d000uT40000FF0uE000000WgC3002
+mV@Ed2410WaT0pRt0m7_00Fuz7000Uupy@000Grh_P0GXZGx@600WL740008Y800aH008x00
+Ax0m@@12_@30001GL70001000P0004005e020000mOnD000WPOu600yv7083FW2A0G0P01jp
+00q1G000OS300YGp0K100i6q1G4WX1001AHS3000Oa8E3@yd00q40001mg30GC200000W6sZ
+000m000e3e0GJmT660hE00pR000p000O000u2S0W1eh13WB200N400mlmmD0O0W1mF31Wv70
+0c80I4F10m5Oy33mP70WnF00uP@700cd100000l@E00000mCx0000W9c1q@l18w90CB00000
+yt700mj@C000yt@000r10WxUC00Gi6000KW200n0O0s10000OW20K000y@B0_z788YF0hMz0
+wD0mG604H4WtgJGW10Gwx60@0ut@00CWXgA004m20WCI4dAm6D05LdJJuXiKs6brjH3vF000
+WETP34220i7f4FpQmn@C4pR2W4000G00qbT208004040a8D3N2VIsQLKb_300oHgOibMmdfV
+oAQbl5mR9000400W08yXd40050c4zX3hJ00W2Goi64JU20G0G0G04aKk1xdRGvIRy@09TVRG
+O_6eG00OOy40004yel1TwR046Y00GG00004W0000W00yus400010061eyV308W00H0040800
+020XzcU022000G0108W200040040005G0W80GZ@9G00GOfU3oyoWU@D018W02G018WW0GG10
+0020G04GW000000qU28808004WOWWG00GW808204G92eW0G4050Y2000940088Y0H003g200
+0008W000WGGa020W008000m002b800820W12Os030G0Y0W2K00000200eUZbeXH6oW730002
+4G04G004y1i1G0W0Izt00dG0G104kes008008014WGW0000012A006GG9g001000H0G0A020
+204040010040062001000A2W104XY00010G5802WW040008G101W200Gfv60010e0B38008W
+1000100000OWpqCOv@4Q9EXepP8qU34W080004m00001G00000qq700000000X61W0000Y00
+G00040X140104ul120W1410500WKOzU3000GW4000004Ght98200OMo4W000yah19f4Lh0Mb
+L0hnAy@h4@tgn@hYyVgA@VAp@bwyVuQ8rLl1002Wcyt0mo90DTd0W00A0000020X000G0000
+yoz7otsWkxJ8J@4wlt041G0l@pGkpCKNV2F4omytR02G00W0Wuf_600210000fo200002001
+00108H0800W000800001W08008400000X01e@S36zqWa@D0a2000Y4WtrC8iR3QyDXx@De01
+36pFXtwb8fWDg7rWI_J04000001sgncfmSRYCxaZoD8pI3G008000008XImh360G0W09G0oO
+_600122W00Z001004055wR0008WusJ00mW000WA0050Lkd0004mMtV000G000G040e000008
+20WG2G0ecL30004G004W008000GanqDelP3wRb10010Lfd0000G000KC3000200G1W200X40
+0090008W40002fm0103G0G510WAW00W058000G0i000002W80002000620C080W000020800
+W0H200010PW00Gp3zF000W0Y02202002C4004800W200908220GCb040000G014G0284KsE3
+0020040000080280408G8CW0mO00000Se14G11pW00GG24W0A1429L0e6Y2HX6b6bG868DK2
+e4G00GG14Aa2958Gmg441164W08G01010CWZ26000e000I0I2IG2C08218GC020044W0WOd_
+C0020yoV300W0T8d1A400GmW2Kfl1020004W0iI@300G018002W04WW0200WO020u0W0000u
+402GWK20804A04K810EOK08K3e21GHP510G1054G528200e0GCW0W2a4bW22i0042WW8100W
+000hG00014100003E0811029040C00W1c0Wma0muz60104OXR30W8WWK04218CH5_6002100
+0G0kGK80001W02010W0Y100uiz76tF180000200000WgR0024G0110C0040WG0004880O002
+G0041aG05XW2G0G8X08D009IH20040WGWq4gD020320K11W0400AG0008G04084H0G0aW000
+040F_R00800G8000008O00000000O00W00000G410000A5t0000W00G010088X448UU30800
+000GG0GG0W28011HG008W0GGH8000010100Wp2180Wzzd04G040000G02a020G0002W00X00
+m04X04000000G06iYV240W8004W080W00G80G000010400040a0300a00400GRS900000101
+42080001004800001104000200008000G400WC0100Nhl12G0080010400000A000400005G
+0WGA9C1nS800AWGG0800003100010G000Y0G000IGC001804000P014W044W4C18800GOW0W
+W0G0401D100GX008008K02W000GY01026m20000a04081m084W0OPV30028Kql108008008G
+8400040000142X24C0040000W086A7P30G201240IOH2G4p90W0000400G040H010000ei40
+400000808000H2G20OG08011008002GYKWnAu900404420080006000m08000W11084G0020
+0GB0H0000G0000088Y0000a0042Wmr@D000G0X00W6II0OG0GEB6G44000400Wm1G0G80000
+100G0000m0mG0409WW0VPe2G3008G8040000K58000O891a088YBs064G00X288000004Y48
+OW8W020004601060850848000C01aW080000003G80100080W0002CW02082420G0G0084xj
+14000000C80W44080a00GP040KG100000C221GoG30W800030A0W1YHW123G20K4e2C30K01
+0Gm40230wjt00HW04G0G8WC8I0g421000mfH0321D667A080m02900K4YWWG0KGG554XOXHW
+2uWbg2513AW1W86G0io88OKWW81X18u14J0126W2YmeWe081m40SWa8A00A0WYB090043882
+ImAG0011000YW040400WG0a020e001WO20Ke8CA11800G1406HXe0Y0JW8K010I4I159X0W0
+G4WX1ZKZ27G4aG214Y4H02Ga00A2W0I501120I0804000Qj280nOQ0GH84X4L0GY80HQ089W
+G2420WAW50G08GK086WL015X1024142X8W0Gi009011O0A8828W20YO1eg00H01CN0cP00Z0
+CR082590208100008GKW000019abi1viR01KI90081A1HW000aG402WI0204X45Af4axnR00
+05WrLJ000q0p000A100000Y0WI000euK8085Z0G9AH0M48I4e41X80W001A10020I0eaI05G
+28ZHA1G001WG24b0001082KI9Ya0O8G0b80140010G1W00c844b04P8AA00aI4000W00We40
+nRR0W00W4hD0004KS_6W020GC02838G1A02H82020186G4480100mOy64Ah1TsR000400001
+4100GO84W0000ur3000141G014B0oWW04GC0004XW020G0OA208WW8eXY0142W000aXG0X00
+01cQ022GW80mWY0110180K0442W0YC000414803G0K4G0W000Xb0080000K02izl1880Ye0G
+00000G1W00000800WC0000XHG41008324m0S000400nc00040H04QQ2r@R0e20000W042W8m
+04e10000n400P400G0Y421W4GHG0G0Q001405cW04840o0C04184G0m0C00D84G0R0CY2060
+40100O000W02K0W005B08W40002WBW28600001W0BW04410G000Akzt021000G0a8Y610003
+20G0mzz600402e0K20000G680a002mG0080XWeB0309004oB3G0040000YG0000GJeWA1GaG
+Ya0G00X04X04L0010082W002AeG8624W900GO4e0A0EqHI600X8402000120804W0008W00C
+010442a0m2o60000X045mgv601J2u@N600500000qB00000010040WB0200ehW_2010a@2W0
+00G100Jxo020000WC0000000z@m0GGsB000W7WUJ0E0u@5X00a000H000qV000XU@G@D060m
+z2G00O0e48010wlX0WW_BeV1010wlG80040082W0WMl0020j1uK048W@T400021Y0H80G@10
+04sz200000202A0mFz9Oi00Gn1WeT3008IC000mFn30000ggH0C@l0W760m_@u6G010PVJ80
+0Wgw0W@1P090vWI0I94aW21100Kr1Ii000600042300W8Y000L1W@@340_700000mC0r1108
+2V0G4_00Cr1KH000400K410HA000XL00000G4V068_0A000Or10nm30um70_@78198s_NG90
+o021X13Y00008000C120W0G0W1010003000K000mO00WA020C0K1c1mW00Od1002300e8000
+30106WnFC0CA030001010202060l140O0wO00yp480000uCpP120l140_1E0u2uoW1eh10mj
+300S600GJ00WE070D1_PO0yp00ud580EBG0W1W0mFm1060hCT0tP00eO0009100u200m5W10
+3mF3NWV600tE04mNx_R0W0000008080001G10aW00zr70@L5A8000WOO2000_xF0W720W8L3
+uEl3mV000e0W@000@yV@P3IwtWYaCWG84WG000WX682A425KG2I2y@70KfEuZF0G0P00E_00
+0100KsX0x@30W84GL7WGG8WG0IG1HmWI0aImk@14I@3Or20000W@LB04nN0wxF0H4VmNlg00
+800GH1S7TEJsB1G02mWcDWy00q5s6iOT2hyd0220WfxD0G0000G0We0C0020GAS9W0002022
+mFk608000001GUS6yaT2bSdmaOFysT5XxRmI@60Y000W000W0000G00002QX0000I80eMP62
+co08000021000W0SHd100086qt0001000I200040180069200G80G00000g008W8Kil17_R0
+000eIkFvMy4_XmWy0a0m20G@LCiuF3HsOmrN9CyT5dOR000000104f_Zn8pOqhm63UR00W04
+00G0000mjT0000011000000eWdqJ008W0020000G03gdmZI6G00000002000c4_C00ee1000
+120210008G000U7d18e000G10008000400G005W00KR_R00004W080nuOGy@60040S@SC0H0
+0iaG2004v10040020480000m8002000H00s4pWf7C0W4204404212YG0000060000G00A020
+WW000g2G0640G881840eGS3411841l1001000W80G0X008E00G09020m002W01002GG02403
+00104G00WtiP0G0000WG0DjPmMY9y9l10002G0042Gb4030000PH0W0W00a018YKW80010Y2
+W409K2WM200000Wg8Y0YH5W4YW80000240W00m10e0YYG005W2020500000W080H0G010O08
+00W002400m0ZW00AG001CG00O00408G0W001008IOW0Cm04Pe102OW18IWqFV2000401000G
+1W9wU6Iyt0208200140080hG4G0000DP10G4WW0W080034C0880102044G10A002G00cW000
+31CA648G004A8GW200W1K5G0180OA10G0W1000044eK8W0m28WKMk1052YX4A00L00OkT300
+G00804WA04m@@600W02G01uRu602W00G00q4@6K_X7GW000W0000uO5200000908W1200m00
+018062010G180000018WY00g0001W800100mmOy60KW00004200600033rMQ02G4WfvC0200
+HF@900p0G001000A040Y1080000028001300014GG00WO00000000900K4OeE3001WSol70V
+L0wMy100W00W02oydXe_P8wU3kstWnqCeH@4000G000010008K00008013mPGyw900200020
+000G0000W00GG00440G4000G00WW0WXxneEV3000HoG008tV3Egq00W002010100GG00000W
+4Gv_600014080G686Sjl10000904H0000260AGX46Sxk100010G000101040300031031008
+98oat000m0@lO080006A28dzR000WWKBt08008010000RF00000W100010k7U3W0G0000000
+011108804000W3W0300004WuNb44808iIZ1G0006m8XGIJ0004202I0W000PrR0W400G0n00
+830MFr0G00GW0W04GG0CMV2W000UztWWLauiY40wgGapV2000H00000011wNJ308010401yW
+0600G0Slf10O0001020402G00000G000W00DIP0000000Y8gXXW5W8G8000GG0G010OG4oW8
+YG0a0GG0eWQ89@K34H5n00e20A20WWa010000Y8200800a0p3000800W0020100006900000
+WA@fQW08100W100080G00WG4G02801000A4000800WGUIq003000W624002040W003W4I0AG
+a0408080slq000W00021m0W0000e103151W104Z3C604G000401234441002C0Y88YK55004
+00I1084610W00K3G001htBnuh600400G00000ecKPD0010401000428804Me1G0H001G00G8
+4O280G0GW1G0G400Y4000002GNi6000O01Y820140OG0W0G0G009000X010400Y00WZPD04A
+f4G000YWW2xlQ0W004000GKI900GfG0H5000010X0G10WW0m215e4H0CbZ40808000A1020W
+C900b000GHD0000GXWIA0WGA4W1e40WC00b02K20000Y8G9500ab298L2I000aG40b080904
+0KYI00bI5A2AG0000041aI0000810Ae00400041G81000040G100100002880000aA40H00W
+49488000100WW040000GC3000YG80m040e001H02101K00040H0y@@3mCC0001008002X0G0
+000IYe008q00G0000IG80c40050W042010002P00400041008220G108Y1WW0P00X6kIY1m0
+K0040W003W01A04044100000X800A11LSg1C00mG000ara10W0E0400G00CI48GC00000021
+090C8W0XG0X000406G004W0W10001EuoW@@J0000c00000WWY0fW11HS000uu37W0C0n00W0
+410G4c082S0W9809W84u008X42o004400H488WuG3c12n6214GG4WdW80021X2WBWJ026Y09
+8AY7W0HA20XW0XW19000G48000004W0W0000W8y8i1800X00A2W108O373480480W00a4104
+00G012000000WW0000YeXN900040048OYO30Ry1W08G00M200a8124W2490I0GW40G4004WG
+2010112W4000Ga0W000H00A0090880010Y00Y0W020W012m8GW00W8800HH88000G04y@l10
+W2801W4w500u5t4000cW20W024_Izo60008K00000QWM10020i10cSzX@@DW01000020qd10
+Y1yN0000QMYJW01WbN400I410Y100GV0086oV1n18W0Ww500W020WO040qB10Y1ulGl4480m
+@2G0GW10GC000YJ00H0bN8C12406Q000000082000CDG00WD106084900030008OZr@G010W
+8U10Ss2WTc50000Jr10Ou30@eA00000O6j00000000iy@@G00y_@@l1000@zF00GT000000k
+00600WB020Or1W__3ein74@7GWU6y@l1W7V0ces0m6008004XF0Wy@l1000ahTp000WtXlP0
+mCWAWA000C000G0000d100g080K4C6e2W210G9200eC00WY0008020G0o8fB@004GJ00WE0@
+i80_PHI00008lFY85GIHAWV0H0l1_Pw0qrY4ud59169I2ePa4G7G9WcWxCT0tPH2kpYK0d5f
+0qCI1e3u2GJmFZEWEY81xje0C0a2e3G101WE240Y900o80000308Y40000000A4s56AGV000
+0000G1e0z3G4k3WQKbuYzW@@30Cp60m@h0W5U10@3yl0GX8w0y@@3Uu100m@Kfg0eIL11000
+0Of6UG0u@WmCpW3W@1W@g2km320_7ag2F80yVGm3UmX7y0uFc1mV11W@2Yvg440@B8LL5L0y
+Fm3@@e0C00L540_F8CpCL000Cb900KlR5DRLHTqOy@@303000000008pwD0C2dsWrDIeC030
+020K5k1pJcGYuC0000vMk70080a3k4rOh20140000007U0IAF102000010l6d10400011O2G
+tW@@JG0040820110O0hmaW0000G200040G_@NYwlJ8uS6IJGYclt0000LLN6Kjk1zdL1Ha1W
+@@he7J3U3VcYnLv5T300CIVG73LvOmfx90004000WGhwCK_a1404140104Kj100010Y0000O
+0OQT3Uhc120500G0W80000060e7U6sGpW@@DG080mZv6KsB3LYbm@@60IM1000008004Q000
+0400010488000W00000020W28G031400b0GGO00G0GHW901000040W020404O0@pP0600000
+030G00000C00005810C404GGX001MP0014GWG004001W0W40e05eRR340WWKgF3000IUvcXk
+fDOd63000mmS00uN730W00010HaW400WOG2WAg08WW2028100YH0M000000L8A8W0aOG8Y0e
+05110e020H0000640W0294W0W001WW420811G040400100G00GW0G00000A140O000902000
+005klV2600WocAXRhD00040001WH@D8XV30008100000OWGit600Wp400W00040Gf1000G00
+2e0W1K0W0m0aW0000eG8W2W01400R00123038WG08e28200H0X020300O008W0008A1Xo0Y0
+G00W0e01GGH11m08002500006000e0W0800ObV3G08W040G0010W08041008G00G00001011
+9sm7Mc8X1zb0SJ2GYu9001001e0000C01014G8041040O00OK120200004G2201000041W01
+0200020W00004nv@R00082e000BAAnWb6SIf4F_RG_@94PU2bEAHi46000WqX00mQZ94Kb10
+008G98000000480002GeIqb8YV301008200Or4C000080W8wKD30W1GSTk1e000MtIYPzguy
+Q60Gaxlxl19GOmGx98W4W4088GOr60008OPU688W00000uXS30000101WuAj700W820111A0
+0GV_60G40000H0140W3BJu3S3QhdXRzDukq7G080Ssl1W2D0kZdX0FDGW000080G0104W004
+ImtWWyC8iV602004yD3NsmGY_602040000800W02000G0080084W200OYqDUpy10G1000040
+1080000CQ760002yui1000O000182100001qJdCiq96L_pW011K8YG0jkR00G900W1A0G0D0
+080044G0640GX29qcA3ZdPmevCSSY10W041W0000WL@NQ300027nl10G6008C200a850mC0G
+4200B8042W0G200G810eFV3G480isg10G810G00icl1ffdG2k6W00Z048Y0Ag0002000W004
+0820H40OcU3W10000088PT6QHrW6KPuL538060Chl10LN06kH240LW8408m0m5200O8j330G
+80CtE30G40481WiEe171z000m0H0040I90W80b00b00004140G900G40W0be4000W4Y86fG6
+xrW5yD000e0000gruD0001WG0000040juR021000000KY820Y02G9000008Iw36Stk1XZR04
+IGWevD00AG00I000e00B2Q0500K0021800300W9W000W0WA508G100A00W02e000WGG1ertG
+AHm040W2dxR00Wava4C01000021WexD000e004H11201K891W024G4020X00mKV98WG00040
+m8a6KLd1Pr_01W8GG000601000100WY81W400W6O0GG000WW0o7vaLSDOna40C62yzl1G0C0
+0002819042YW00a040I0G0A040004G200050001O0e1SP002G10F0XISJ0005GYm900400a2
+00100KG0000Y0040920G000240PjV60041Q7PLI4s0000ms300cwE10024xiR08002X04000
+01003G01000880m1j6ShC308I2YSF1000Y@6d0wGW000e9G4020G000H0e301000VXE0G000
+y5410008100Oa0F2OF1000CI0000O2000eS4C000005WZfDeZN30A0qI2W10j4040G40G000
+0WU10180p40G80V30C0000W00jQ000Wb04A0WzSc000WGA0000WYgi80@RHcP6Lm3F0y@VOc
+vY0m@51GLB2W@JCLC3a90yx@00eQw788000000OqN6000008u2eSV30C30CoE3W8_0000000
+46GG2Ee4WK819eW800WaTW0CJT2000200W16DW1bfRmirF00Z0G1S1W2u2S5uCmAYBWL40Wp
+80AGH0K0d1e0k1C0G0uYMRMYsuD8pP6002000H02H00WG000000GiY800020000060O00000
+8D1000000S601GJ0206W70k0C080wO00OYMNE100Wc04040_P00G0000Z0Gjg64ig1610000
+008p000v10A417K@3K400Yu50HSB00gM0W_l0WdV0200W8U0ww_4@30000080Wh000uSRlxA
+000W000014000m30W2mt000W8y10WZmLPJy76PrWYn31Se3G3vF000CemQ6slFXmoKPhkDwv
+_XPzDOpkAoRF1000So220k5FXAqJ0280m_hC00010W20G9iFyqM20000BRpWltmOFF6AxcXT
+qJOAEF00Wqi8k1P6WncGg48W7dnNH3IUysU20k00k4@XksIehy4000G0080u5T6YIFX6uDeM
+F3MUd1W000jVamfz90040PH@400GWStc10008008GqPl12000Ust08000xsR00901000Su70
+0svsWjbD003G0000004G000H00008100G0Y4400GWXY_D0050020000G017tPW0040808I9h
+@0a0WWqxDuPG3M7o00889fFRmf4CSTl1X4OG6IFicl1ntR00W49000W000W0X001020W0880
+0004040fXsP00010W024dzd000H40K80080Go_t0WmI04000008002G0vTU3004004208xG3
+0800@Gi10010008004800204mhJ6qkO2LZRmby904008gh4cwq00WX020000VH000G0000A2
+0040800280110040W042eqN345000100G0040480Wo_DGH000204WVhDWY241020Gu00800m
+0A@t00104GWG0QsFXtFJ000W0420WUwVO2V3000G00We8xX4cYl2n000pkQmjr60048eXB30
+060020000G01S80WkjJ0650G706800100G0Gx@6yzl40G80GW00Cxl101W0g_t00014doA10
+00edD39Gg4_@t00105vydGi@CawV2bkW18000000408060000220I40010010392WWdbO000
+008a0000004008CTS2lfPmWca8Ku0ugy4oA334G00fQQG5_6K7b1dF@GcY600020010qadC0
+00G00100200csbD0080Hj_64Fw6lXBX700WfJ8fCKF2ot02400W000000p0016ffk4000W08
+0WeI5U00C7aEt3BwymZ39CqA31aBX00000W0420080W0Y0eY000H8a00X8C1XG0W00409G08
+W00W00008G000G1ToRG1j6Sfm90@V0kxt0000940020WG0Kpl400104100SsV2Lcy0000008
+WI000GG0g0WW8G010080Pg441Wm00G0820W05010020821G4A0090144000W4Lk1PudG0g6i
+Bi79VRGSi600W00010GNa6izk124000801S9G20K006AGYVNI01A00I0004000W005e0000H
+00Y200W00G80e0W20W80aIA100G442f00W400e40K0000G00KrM258l10WivXxnu3V36@tWA
+SC0200m7lOGG00W200000810eWOa00Wa000000C00P0004100W140G6000e0W02000646C00
+0A0008000e000aEx90RN06k334000020WAtt00001P@RmfaLCrg10G40000800001OY0002G
+04W000a01O400m20W0Gm12400000aO200A00G811082000KBu6KtB9E500oPFXmyD0800W10
+0W48P0000080m002600080W0000110eLR3E3EXiuCW5W0Gh@60800G000Pf99004J0002GYu
+60e000090A000WUWPuwQF00asqfC3I0W00W41aUV2PtRm1_6G0W08Gp400804OC600024200
+WW60002410Y000GO00820q0b1GW00CtR3I18142W0200AMGc4Wj30DyR000GYgDP00005H00
+00W40zEQ0G0Ia0vC8fuD00X70000G3L70WL70rZ8W0W1040_0000K5i1Wei30Uy70m_7802D
+ZXR3DuByG000GPo828Vw40Ww0000ut@10yLxI000gUPU3_V630040uA0G5O008000WYH80C0
+K0O0O8m0mG49WX8I12Ha2Gb85WA0A040C480G8H2WGYa0X091m0WFf910mPzTSCa873H5R0W
+92300000k8000J0CxH2RQRmC_C030006WE200L600Gs20u@5m@008cP6LLfAggA8OcPGKjgW
+Ixs0m3FLgYP0ozs0_74y1MRmywX0Ws0OdTF0mh000000H0y@L@CGV00u1W36y@104mCHnnpX
+uF4Fk100M2Jud1140IP1in1YUav@3rcZHvvIKAE39ioGjk90cO0eBE9_xt00W02zZ@moyCq9
+Y1B_@GVwCimcAjdpGazCSQk1000emB00yGB33RRmvz60W00e8zDwQAXSjUORFLsN@400ctR4
+pmKvCaVh4Zx_0000200013vom0UXyKl11Hins_6yzY1xWR00100Gy70BUQ00100000WG0040
+0000403W012m3Q64Gl12008ECt040000W0WX4240H0GOaU30020W0000A11W040WKxD0W008
+00G000Y00440opt0200WBtR0050WhJIuQ@4oIpW0wV00008040WnyDW11000108000041001
+W4e8004H00828G000A00080a04W822GG100W0GG0284A0002H0GW0G000000010G014210GK
+00MGp0W00404400800q4i108000O0WSIj100W0ALo00008rvbmmr9Ssj1vtpGv@600G00600
+001400076004G00W4000300010SOK014e000AO4018A00002K0C082OG8800W009082WO000
+G420I001GWG00000K00e08081604008G0840C001I0124q8R8doRGsV9y@V5Rop01000m4Y0
+nGA140W000200001syE1800WVrR040000G080102W300q0E3PbRGn@g4ol7b5c02000000yK
+200G0008Y0014O2W0010G204fqbGSw60020004400082040WY008U4t08I800008YYs080W0
+vI7oub9Kpl1LK7IAxC0WO4UrU3wvt04a01HedmfrC0400080400C100111840009G00400W0
+0GO0lgiuy3DuXn8tFyzj1W5U0410046L2W0080W04aAK2G8W0sEF1000A00044081Wm0000H
+00206YYWL9FbJ_7@XZxD0000ED000H80G0200010OUXf100G2AvtWO_DerS3W00443V21lR0
+202WhtF9yM9IYF4Y000B3O0000000630W8a00100000IG0GW8049053e0900_Wt04G21rpO0
+W8000m52eWP0008G04980gGW1W9022004HuRGAa6i2j791a0400W5x910004082YPzD04oA0
+08a0HC31eYG8GC00P48800180g00WI@J000m412W0080G002400HOG24A4818008H00C2C0Q
+80smjbUcDOHQLM@t0000yo20000000850O@z4cRpWNuDOBh400G0Wm0000A14008000WI040
+0aW80yrxCvKC300BS0470K002_oL20G01xnbGxz601020140050100G04B_Q3008ameDOZuM
+0vs0030100400048W5@J0030nOjCW28000000Yo08000000a87lt0400GttOmjad4bxCbsR0
+000IU0G040806eDXWLDeqQ30002ypF30G0g0000G08H200W0X1W40W00W420gPw4W002n@d0
+0W1W9bFfDT300CPXG00004OIsv900400290500000B20l_RG0J6m4OW0000eL00Wn@D0j08m
+FE6S8DC0004X800iiV89bP0LH00k2000jJ@5WH410000cEeAp1yVu@V0y@@0G5600000000e
+A4H5000W@_50LX100GL00000KWJ0G4ohWJkZ@@5W80aS63LIV24080004Hfgq20002_4200G
+H0002020C021g0e000mUKC020004020O0CHG0K100G4000A200W100mC01Wn0p0C0OO00m00
+ekO36f@41y@@0000u@_0itDC00gsANt00O6mK700e0@zB0@xFtj7I3F130G0w211W8_GeAG0
+utT3IWsZrenO0N6sLAXyzt0GX20W0GW9gzeUSI_gs3G004RDd0800WgkC8_j42@EXhhnGUG0
+0000G0WW0v1O0008m5mJ80P3ImtWrvJOBm4QNC1G010@ZR0020me1m8e_4kItWa2K1000000
+dWVsD0280op_6CkK20004INtWMlt8WQ36UFXDbCOGzA04000G00Oa1Ogtt0GoC09y@Gy1FqK
+i1HAKHjoCa6W4PkpmDx6KCl1daRG4H900e010061180YWpJ002808W2WyoD000W2000MlZ00
+K412GC0eG1010002G6w9iOI240WY00G000H2gEO324s0004000810020SYk18000840108WW
+8Gd4YWpWCOIe2V3UMF100020W20gRm000080010xndXkACezV3020000Oq440010040G0400
+00100ZLKrj1ZwR00AW00AeWq0008G002W000WW000101028W001000W0yMl10100U1DXusJe
+MN3kHc1G004hmPGTw60012020Wn@@6080X05a8Gfw6i7b1804WFjB111000NI00W08W4000m
+4010200CX40800XMcp00000601W42BiO00G100G4a004G8080W0G0210inc14000003GSAl1
+0W00W000Kvj1H@pmrPO4ll1000G00m0ied1prBnh@60000p9e00S000K1K0t@Rm5tI000010
+080G0GWgzJ0G100002000280050Q4B1W00001407JvaTzP8qB30006W400fLV3G0000049Om
+S3040000eExB630088iWk10004NnFXptCG004mCFs4YT5tvbm@@6000Y00000C20G100WG04
+00010cvl11oQm@@68CS1040G000YWh8C014XY00180G0008000G00CSk1lJaGGwOaDl10200
+0104asT800G00404q0@3020O01002180uyN3012000084002HMO6O80022000400008609Oa
+mK@9Knl1fteovod0004OzV6Awt000W0@kR00202G200W0408WG0000000W7Ujs90W000H00W
+000WR_Dey_46QBXBt310Y0mh06iNb72040801Gy@l1000KH000WGW11W1031018GW0900GG0
+WW03H0G09We0A084010009840A0C004B0Y8024P00141m0040cwt01W00O004000C0021000
+9mrSUCUl186W0Y1q38000A0G2Ymd10G0G000GeW08X42Wm440000000G020210G4e02G0124
+008000KzG00PtR00G4004300Q04WOX1iHN2jwR00A0WSyPOgWDwApZYmD000800410A100nQ
+@GkE9SdU20200010000GK1000000Kf_@D00XGmWz9yDk1000bQXtWKSt8bEL00c04hl1hUB1
+v00WgLIOY_463m0Wh8080002YXX84hO_33wPqZ7HC8GVImI40Kz@321001000000IiyV680G
+04Sl1w40Ek5FXpbJ0WG4G2nC0B00era7EkLY0_DG000n5kmqcA3@1Omaw9ill100_tQEvXRA
+DOPvMIAGbv@D0X90000ublqJ8rV3W100CFW1TspGqx60w51020000M1Wz@D000O300Wbv3JO
+_V3G12004WDvAuG00C00008zaUI0WgWr@V20WV@100lZW@2WtV00t10000G0e22000OwxV10
+Nz10000G0000OS600Yzt000WP0bN@zV0_x@0UhwV60WgOSXV8V_R0E30WH@z000880003042
+00p40Yyc10W1WPlPGYR6W8000602KA06000000W6OkR6030006WPGM0Cy2W10H040c100O20
+uiVFm500000Jwr@GCm00asl1oE00_@t0000m_700000@B00000FG10kxE0000yD@lg@t0qIB
+001000u@rBW@0e543O6elZ@@3Wgg6WvZ8WbuD0008cH0mZq_210xlVJu8ruh4000ef200aDt
+91o91020000GWV_720H0WMcJexU301002100O6UI080000eChmDCY_FXwtCO1S6w3UZ0wmOZ
+x72GhYIln04l1m3vXKQi7hipm1@L0002unR3EFFXafD86ELG6004Yd7Vgpmiw6atV27rmGrx
+CaxF600G0_O@1020084001000S6b1K0W0U9t08030L_R02000002v000WBzt000GW00W000W
+84Di1W2002@t0GW8020100020OG040WW0GxU6q5z30X0WIht0GD00tQP020002080rabW00G
+02200G0010100a713hop0G0000400040000W0_dE3WT91Q8t00CX40420000AGW0100000X0
+G08002G480120O02WGHW0W0G0001GY04W001A6W0W10K00C80G0280G0002000YW0G00i9P3
+00W000O0OVV3ovFX_wI0010qGHCikG200G0W0002060G1000040005GG3ud0000I6200061G
+008088a01o0000480C100O004102200285WW01042O0g120G0410X4O2CG001111X0030YG0
+W1080G2Kea180GX0480a@V2F@bmw_6qxl1G8400010KYl44008csdXd@DucP3s_t000HQHvR
+mz@6000G02G0mz@6C9T20C00Mio010000084gUrWXWP0000KRw6G2000m50mj_O8002eLO9_
+Bt008G40820G1a0amF32000Iep0m3Y0TtpGxz60200uJV3GG0001800004W00800020@HRmf
+x6CMf1420000200D008aV3MpNYdrPuUVF00Y000A00WH0qc@F0002Lr00GFT90W00019XmG@
+6SqV2vzR008W08000005000Y0G0H40900400O0000Gj7cmI@600A2vXxDUVpWy@V0041Gi76
+4Zl10022YNz100bmViQ0040020G008000006q5l1G000gQp014G04090k4mWtBC020G000GW
+D4JOp9300C1OWWWCCEOgst0WW00LRPW0000800H00000I404CS20fQ0IoBXX_J8Xy4c1tWNy
+D0010Y40000800HCQmv@60082000100W8100040880G412ii@3VfR0004800aG0W00MJmWp@
+P001G40008200Iu202040XW408f3f4000200X40000ZZB0WTmD0020028W08m10400WkGE1W
+4000G12W00Z0046H0WK2040028K0400He4812WWO688080008H0008G0C0081Xm0YGC3gp_U
+mW200000WAH800Y4IW2400W84a0HH80021mMx9qVl1G004W02Y010G020G008011000G0140
+001006O0018400H0C0004001100004L0H0412c000080I00040GG13100001ZCS0003A124W
+42w0dX8lD00G2Gkt6K1t3@@p0500ob_D0K90mLO984000W040W000056000W40WIAisF3K20
+00WW0G158000000K0swuI020045W4HG2G0KI40W20005b0W800040000014000W0800100Gk
+Y09820000002HGGmzu64aL57bcmu@6WG00u2E30004000WJO000084W5yPu4V3038000W00H
+00GP@6002000080K8000K005UQmadC8901004015e0000A1@@@004GWoyD08W0GYyL08G000
+W00100W_yD8tV30004_DV200Ao00CWS2h108200G02qxl10140w@t0HG10040C00J8000OeA
+V30200000I00GB0ZO080241K800gYn0G0mW8040H0C04s460000Z57ZgkJ00G0mLN60000el
+U3QVm008W0R_dG6Q9CI93XbR000105000TZR04W4WwgD0G8421004K010000a0024G048Oa0
+60000W038000q0WA0000qA0000001Wy@V50WG1040CW0O098r40W000A00008B20004wGO0L
+oPm8q9002M1X30000eXW8IG30000UXGA0800m402@t00GN1000mz200y@l1PtR0u20000yA7
+@B100mV0u@@0000uF00y@l4m6R000H0Pz000Y00520G4o3000m30000000DMuwV300qDc_l1
+00W@DZ7820FK50c1Q5sF0Yu3Ww01WPwF0_@F0g26_zxyg2iN10u10aW2mL0000W7000004xU
+0000_cf00EG10A0@Wd00002WC000P00oxt00W1W000mT600y@@3m000W0eo00010000400W8
+000404040G0C18200W8100000GBb8nmP0G001WP2604000c1000P0eO03006WG4g0b0006R0
+00Z000m000G5e003WA06Wv400pF00G0000C000G0G0e201e203200r60D@330ul@UkP00040
+LL10000Lvoa0000A94O000W0sWs0P300000p0A00Wg00upU3004n30HiP403EkF10bD0qO10
+I1m00hU00008Ww@G82_nMt1G1E0GrTeL1008mJ@C4YX47Cknq_9aGU57hjH9u602000W0090
+02112G00C002rt0GW0WvXRGQC60001CES3Q0mWi_D0a0000010020a9yRmxO90svXW001Gft
+CSDk100883SB10004d@RGNr9i_F30208000WKle1J8P0000G00C0W000JDF1000Gr@RmZv90
+GG1fo430400yqh1bLb00W1Wy_P0000cZ02X3wV0002Hot94_D3Xtwnns600GWutt44010W00
+9OtF9AR6Z8_De0T601000G008B43A2NYusJ8NX46XZXjoPer5308084Jl104W0_uB100W000
+00f00020004K000400WH_D0G00GE@6020G0004ns@6y3j1fkRmC_6q1U2WAc0G4Y00W04015
+00AG0100W080010000W00e20W4180W0000AAG41K20010W004W00W0W0004000400840088G
+LG400A20010400000G02GaVG2000OUMB120004eW0wDt000W0G0G08XWGqPl1drd0040WzpD
+erR3400002G0400280001000ma2004100000b0022W800H401W01009I0m00004G0W000L0G
+40080G0G000201400120G0G2W0800010W8200W0G0W0000W800008G41GW00G00W0G000qZU
+9W0000C4400180K840TxR00GW000I8G180Udt0e00024G0Y2C1000200040002W00010W0GT
+Q600OU60a0200004H422X0040H8W4W001W081010004CWG00G500Wf160GC4000241W80404
+8GG8m080020080001mAQJ00GG408C0024004G0I_t0W002Bmd000010200RWPmo_600G0vYL
+6MxtWYxP0000uvv6W0000iiW00u000400GG0001B00000010200200420f0004010001W000
+0HGyh6S2N2000201K2000uXA010AG08A000VTbm_sISpQ20GW80W00000481G92AD10000a0
+08czd1000Sy30000000038u7T60200000G000GW800aR@D044P020008W010000GW90KWl14
+0012wlYUqCedT368A100040Y02_JE481000001400oCTV208C0G000010G000W0400WC_JOU
+S3Iyt00G040G024000PWC0W00Wmg_600288zV30021i4E6NPp04H408Y000100Ywt0004Rbn
+N1802fBvDedE3EZt00SC00004o@t0H000tXR04000200400H0I1q0XO004WG0cqFXBFzeJW4
+G000KKk100WW0002G0G4W020GBUFint60814c9m0000Cu20OAyZ12000G004Unt020080200
+4G00044XOQKCAaZXSwJuVV3G010G049001A0WH0H0m8Z0XG2fW800Z80GX00YWH0WySh0Ye2
+2j28022W00804501000200G20000m580104W80WW02G0Y0W010002G002WW8000020000W6L
+01620OO241140GHc00Z8G10000080610108K0xpR000AWfsPuxY4G0Y0y@V2txR04G0G8YW0
+480GW00400Ia9USC0088180G00YGGKU90uV10904W04WWazD8WU3m0088080023602000008
+B0440KmGZ000P00000E88WkyJ008001200I000PY@01W20A04H00000e200000K0004G0000
+GWIK20000W9G9000000f0K0Wu_b000I00G0GAf00jid000G9000442040008G90097y40080
+100W2K0e458222000K20G0WP000b0010810KG9410W0005Mtt0A002I024eaI0000I8R63_0
+dXavD0WGW008G000002W020000G329000C054HWq_h040091GXWZ6JecU300y@1W08200G00
+2mn6yCeiU3G00Y002000XX000W008040002G000G1m89TS32kq0420000025604W002104Y5
+20000820hyR04020800000X0801000000G24WW26001W00Y800010m0008jVC8WC0W90000X
+000e00000CvhR0eXG0G4305_R0060G000W0W200q0080000G160G14041K148m0800004001
+000C0BWW4_D0K0WGZa60000s108u2@FaoV2npRmGY6akf1001WE5630W08000G0GL0KF3300
+00z400KnU2BzbGYy6C2d10210G0O0SCl100020040y0V5vnd0OA0000O2000080100008008
+000CX200000y50s0r00G10K200r000aSk48M10g4tWGwDeJE300y81800004jIp@6000e700
+00GDXOD00G0w50ozm00Gl2004sz2j70000K300mzy6WWI8400q0wF0G00_B0200001W080W1
+0000G18sa@DegU3000000_300X700080000mGLL8b900By00OiVC000FB04nFfC30Hy100m3
+000000Ct90yrN2000u4000eW000O600hEWeuJ0ei3e0@28P7WT61WlaT00Cng1ndPGu@O00Y
+0008000W080888611G8000X000W10005100g060C6C301O600G4ei@A0WC000C000c1A0G08
+5X1W000mgwn02300noP00m0CEX0OS30WG400a5N2u2C@e2us10mD200ON@u60C0W0eZ83G40
+0WC200uC0006000C07080kp00uuEP000WAL10000Pc2000000L90mXN0W3Fe0mV0mF00Ey0U
+1mWs_bG410002u1411000Yu100000W2I00000WblurPORS3000PB000G08YFW00000UD0Cm0
+8s80e0C3000404n7WOuI0000Wu30WxyheQV9MZ_XOmDOxUI00000Ai0eoV3IWJYBlC88R9I4
+FX2sa8kR300WGMul17nPmL96irz3JdPG@R6000300080010m1gJuoi400a0000WsZ00Ga@6C
+5e15bPmHP6ijT2080WsTsWegDusy4E9tWlBDONE3IUp000CKHTpGHn6yBl1FcR000GG1000r
+gbG2g6iaD3JfPmdw600OhutoAIHtWYnJedQ322@XEOOOHz40080yEE3VEuHsu9G0008xk4YN
+N2GD300000020WS7d4@gRm0c9avU29pdmQy6Ssf1llRGtxC0G008CW4W00Q00070220mbvIi
+BM20E00stp000G00004MFF1000ak2W0c_s0808GG4400a0WMtW1G010W00G0O00004108000
+4004201AW140014200G0020A84I8WpOP000CY9wDOED60200040W010020GWYixJ00W24040
+41GmGWWG05000848018000840020300e000045G000141CY0G10W2G0006G008WA000000BC
+000400W84G00X80104441C300W90410082040Wm480WGW08aA0MY0KAe18YX005008008042
+H82X00G04X001XGXG000040G41Ye0280G020Rfdm2S60080008100G008200201005W10105
+02A0240IWqQC0002W0080G00040a00W28008020GG0400O180201G0Ivt00x00G0G000400B
+K46G0080YWGQ00GG0GX00280m04WW000800GO1eY4XA101Y2R2S040140W02024O00W68G22
+0gWH9upV384G200201Y00mI_6008004000GW0WqrD000800eGW1zJ0400q8o6000100G100W
+080002W00W08400008G108uu@90O200000eD000000020900000W3W4080140W0mBdC00044
+P0W00H20G0000G0CTbl140040050X0GHPv930004008K00q0GZp6SkV2BwRW800000000801
+0G0O0G00W080mFz6K@U2Y002svFXtzV010020004040000MucOa1040800G4W000q1I200H0
+080e0500u@V30800Y000WGOG00080O080Lmnmj@6SWb1hKRmw@6014100006G00aD_Vu0I66
+At00001pfR0008Zy_PGet3088G000000818G0900Y10P1O380W0GG00100W0H0040W00080W
+082200W4e2T3UWt0000WC0000002KQk100a08W0WiOz3LAO000000W0G00200G4OCQF32000
+002022040020044KYRtD86z4cco0000CKZ82sUm0090G9TPW0X810100PnPm8X600Y000080
+K04WP9D8YO3W002y3W1d6R0Y02WIJt8f932pKYbEJuZV3kvtWH5D000W00401400000WU100
+W04019143AEr000m0O00000081280G400m5T900I000G0mn@68400O8A3C300SfV2hem004W
+800008W80G0H40000K905A50H0100H2200wft004W00W0Y008000W0021Y81X004002r@R02
+0GG40000GG200X8I000086X21G00W44G08420000G180IW2200800e22I000W000H8204005
+gpl@6800b0IK81000H01OG2Q2WG004080g280880408082G0G0000HW4nJ29Ao0a410180GG
+050cLtWFcJ08000224YOvDG0OWY01G04W00tKQ00u0WigD0000bp402WG200W0KG8YXW56Xn
+002Y02P28L31GG0TG1Y320H820e200000868A642G1000200G15WW010000W06c0e2000H00
+K00040W00G005W0dwR000100100FyR00W401040I0WG1aIAjKg1Fyd00W41Af4H00mc_5d10
+0W20G4C1000G9o000080GK2000st2100000010P31a00mn@600b0081WW40G90W02000b020
+W91Y0PKS3eWI000C100AP20W0000a2W4080020H901G2400500000G2b@Rm@@6y8l14100G0
+00G42G114eW00WG0GW2vMdmbR6020K8ZV30C00Kkl1FmPW0000002180000Ay000Y00I40mQ
+@600080000A20WO880W0W004GH0q9I2002HG820W000G00e02020A000040002G0W1280441
+0nK00Y004n_amf_6000G8HR3O00W00C22W00000W80048G000000600O00410mv@6SZe1hYR
+00000W500GGG0C080W0e02000fW80Wu@D0110000W00m40WW00000G0040J020000I000W20
+00Ysur080400040400120GG10K00W50WbOC0C00410100010vyOm4uFq9i10003m10000G0e
+qf40820qmI27YNnJy6000B1W01Gzm6000Wa8A20WG824YG0F2P0000000210202U7F10G000
+008ood100W08011wKy1W20G9@R00W00000Y4Xs2000Wx5W0000WGER9WY30400@IYu9e0W00
+090W20000a00DeR00ex0000eU1000bM010000GY0mV@600OI0200eLe54000YHyR00020qs0
+10Wq6Gp00280RevV3000KQ1000WDG5H040WR2GZgR008M0000GbYd000000eA0uF0eKL0hw@
+0md_0qjcX2W@@J000Sk0m5tYdV00L7Gy@9000WG410ai300000eI700WFp1GrL10yG1aY003
+00W7G400yV01000goCszblymC0ur20000IEp00uY90200000iJLC000000G10000G00bT000
+009R@f0d10X00mT4000G00000m001000J0H0004000WPXjP0m103WR300k8000000W3000K1
+00m0C001uE120400WqYg1G00001W003Ga16Wz400pE0000004pI@s0O080e2ece2W110WA10
+08600mO000605051O0G0uo008Z000E200W100G5m0060A4C0ZD00AH0007000nmP0C0k880w
+8008cg_l20aS000W0000S30000k0ml@30WJ@J0000Et100@Zz@20mm5W@0SwV2W82rZXp003
+00WWti33t00X@@00Jrf@@1W0000mP704n70@@0G6H4LP60ef000OyV3040WIL0G4_w000W82
+10Hyf_R00_wB0000RBOGfvm48M5rVp00C28000u0300Y1uXWMnu7z4sydXa@Duvw4Mw@X81m
+Oz@4A2OZgQJ000mTms9a0B300007btWitRvnR3AJFaRWPenWDM@F1mME0h9WH22USx0IZt72
+0006Z000l5ymcw9C9899d@mTA603000000OZvC0a060402u9N6ika1RyR0W0WX2uDOq53000
+W002GOKu4A@n0000@040G_Os0800KjnPGZz9Khh1W0G08H4000W10201010WWgaDuWF60W20
+0200CSD3_@@1WG008W400Y020000m40K1O4022W8G0002920000004XW00000000YC000H00
+2W20G0010G8200W7iD00W0244800000WxP1X00810000m052KH048040XPP00G42002CW10G
+0080G0W402W000040Y010020G04e020S64G005GW0epbD00X41IX000000480Ggtd10004G0
+04W80G0X0G000o50O1A0WI000G040ACA000000140110200W0CO00GW020800W0WmDq60180
+4800080G11840000GbJC008X10000e0dG243800405080WCLl1086GX0400G0Z00121010A0
+W0o0000H0410Aa00Kg08006G03010G200005GGXn1m000008WjTDG000Grv6CoV202W2000G
+000G002GoKtCank100G0000308000000aW08WQBV000hO6b900W0Oor400040800TT@4GG10
+KFg1V3PGdt9KUF3JHQmX@FW0G000K0000404G2220Y008000002ehB6Myc1040082004G01i
+sl1CW00O01020000yb0G1U600W4000800600010002040004880200GG40000W0W00W20000
+H0W02W000GtQ6ScT2jbR00WO00610Jzp0420W6mJW00500106002808401010aWb10W20G00
+04Yb1JjRGPH6WW080200mxT6000G0004j000mE1C02020YW040080PPdmE@60G0202828WI4
+000102000040Gkbl1000A00G0Lgl10W00W080S3w30200000410W44218m2y904K0eXV3400
+Xihl10001000GKbD30001sqrW1_D000bsxw60G00086000400000n800040H04Jl1nSRmhwC
+000042G00W80WzUJG400GW36000dOyD6000mCIl100m00310002200080100ejgJe@t7cvtW
+xIDObD3Amt0mgB0NuRW400W9@C0000X400WR_DG4H000004WG0G0000IDdXJqD000W0000J0
+00Gr6Q0080XBLV00gGW0X08SC200X61828qW10800H400W00G410W0A0GG000401Onx48000
+08840000a0001AG00Ka16GW0CW0020000fv20030W0400082mC82A002000P0W504W8000IW
+00J92020IW45GA68GH40hVR00006040G00Y200GX001YOyA3081002G0004012W0Y4yJ0M00
+001X800080ae9W0o1A000YAm00Ie20Z0000200C0002G0G02000G00H00W8000W0W04O0WG0
+04IW14000C001nR0090000jG0080W0080G600200042HGi02244008000W000W8002H00020
+W60001400GGK0A4X081000uCuC0W020O4004980a100W404P00PvTF3I@t00850000WG4020
+0005G0W1eW0HA141jlR0002WtlD008e450010GG0HUdGIj60W4W000eK7f6G9000KA2010H4
+00WI0GaY000ADNk1K00000W0G1500000W002002P2NYR0e0H10H0K0800e4P00WCI02A1040
+02WeaI0020w1p0Y000V3mGWZ600O8W20a001W040448200Y5m0GG00000004100W000GCI05
+0020004000Ow@t04c800W08010000W800007w10WjrC00W000800Q0003_Rmp@6W80G01Y01
+884gXhD000G0W0W880012G100404W0500K010280002G4aZ006jdXSvD0n00003W000002GA
+Wtpt00G08G0200mYe0400Gi00GK_6C6f101HG0W000000Y202200000EW55zQ00WQJ208800
+0WMjn0WW050400FKt0800000E400H80020G4W00W40GW00000W80200W804W38400000M000
+b4R000WaOAC8yO901W00W451480moG60m00iiH3cH9Xo_Dm000000020m006W1WG000000Ku
+to40e20CcC30400ACqWftP0G00Gcm94Bk10000hYAXsDDujD380G0aL_3W30000uY0kG0000
+loRv60000I1402WMX040000w50YycXoVJ002800000qN0000oV000WxVQ11000OCU9Ws1000
+es02E0G00G3FDbWQ804Wl24A000GQ60Tai10Wg3008Wx5gE0W00kV02WmmD0K00000Lc@@D0
+00eE0000000_200C00G100nTN0_@Fut@V0WB0y@p0_@d1x@F0000@yN0000000P00002000G
+600my@104n7Ic100urhjs0004Ym700K50OA0FC30@dziu608WL700m_Wu60KF0m@L1000mi0
+2IOUP3ols000OrO70000G8lyJ25VR0WO200r40088000L000T040O0asm0G100uE3004000G
+G000600040@W8lD0004Gut60G0m0W1W1mC3WOuC00RR600030004030C0G0g0C@00WX00060
+00W10002G106WG6C0M100kJ0005000m00001m003Ga16WV000tkOuO0udH5WB0006401@p00
+u60000a_F00000@pT0OMtAul@1100ul@0000000@B04t50000_10WpzVm@p0200m3c104YF0
+05O00000013L700000@@0W000peA_0Am0WGy1WOyw6000_NL00kxKrC0uaJ0uE000mg@_k10
+0Sy10000m03eJM30iw00Or1O1V3_6t000G0LCBHMuCaZl1RX7IY@600uqTw_7U6tZQoPefd4
+k9VZYvm00GWm_vCShT23WdG886y@l100Y0UsrWPhIuEz4sCd1020W@MdGXw9y1b1dtLn0d6K
+tcA@@oG@vF000WcZ00ovp900018Uz4_9oWAxOOcj70000WG00OUD9_UF40G00r@cGQRFqCF3
+z@c00WmbkYOuv1IoYF10G00vA9n8zUSib1r7@GD@64rW1Nad0008W_aJ0CZ00C00W_6IG00W
+GiS90WW1OiU600W0080Gu8V6IMC10WGWlvRmQvCaX73G001EIsWKvIeAN3001000080020my
+m6S1W1001400A002GG8lV3000GxD00W080042401X0HPBR00W0000GG0004002820HG01200
+2KG10e000044s1p04GW62Km08010I0000880Gxw6G8414080X180Wf4muNB32a_XZZD02000
+02001000TkQ0240Wj1Cu@V300Cn304200880Y0GG0W80G000W014SDX10G00G090030G004W
+W12002000WW004000001202C04G8808C22tKP00041u0G4011080HCys53nQpmSc68W00uQ@
+4sQ_Xx_D8FU3000I000W010Wpp@60u_10W0Gmqz90140000WIq@6S4W1h9Rml260400epV30
+238S0N5zBUu419MYm@ZGyV86@@1o@Tey@4l7EjR8zZd0000iXeJeoc@dyv@8Z_@nf@Riw@5l
+_Fni@FSRL0005s40003W00000WJW0GzqIyHdV0uJYH00000CU2oq70c1000y90@ub98q60m7
+0pv7MnfV5LbA61PAHiyC0010S8z4000mu400ODL6Q0tWOyD8a_7oPrWnBP0009m31IaQV2zs
+d0000YjrDu609cqt00A1000W800C0000W0000P8hF000NfhV30b00Ssk1rdR0004m1zP0020
+1020WzHPeJK6ssFXbzbOm@400000G0W8_AR0gT0S4i1NrRGHx90G01OZU6W0800020ekP3gA
+u11G0095mmTj9yMB3Fg_G1jC00G0uwN3G20WK3l10500gyEXKyDWd00GogFq4R59upmSiaix
+l1VNQ0040W6yDOrs4ggt0G000drRmhu6a5k1Z3810WxG000Y004esImWEVP002000mY0108W
+04010C3018000YGGmq_6WG0W00G181W2020XGG0000820y@l1rwQ00W0YfyD0810Gk@9000A
+e5S3e084iNW11xcmgr60040OAK3IXtWOxD022100000WQc8000G040002000010010I01G20
+00WX4000G002u@V382G4044800840808000Y801G012W00W8050104008KW000G8Y1806W0q
+0010W2A0000W020V_R010002000@ZQ004800800000601I000002010mlt90X2000100206W
+oZP010G000W00200000mD4000001E803G4010m000640004G000G10G0W0000000X018m110
+202G0W8000084024Y14m00CPe2O20804OA0000CG452WG0052W00G100LTOGd79yHU2dDpGH
+m9aZC3vjombpC00O45Y0WHlz6q_i1V@RW8000000000H1404G004W0C00a0000O040800040
+0GCfV280GWY5n001000400GG00iAn3RGdW001280G8@FpGJ8L48C32000441200000Kt1008
+0WK2CG000004108002G004@htWI2OW8000H0420110G18W0810azk1NBO0G04WDUDG40WGQq
+Iask1C001000000X0OiQIM7c100Gy8600gxt08440@9OG2zFKwl1800G0000I0000282mG79
+00G0PlU3W8W00G00W00GWH00WKjh00W0W00G0G000fIVo3_C000IEcR3AvE1000WW920c6@1
+0014000Go@r00G00G40080010W0W0000W0G00G002dNRmysO00CWOsP6k4F10m009WZnS@60
+004W8000m@0WvpVuGv4o2nWP@J00W80004WizD000WqC@6q1Y120W0002WWp0W000WymuI00
+10W288A40901W800e20l7dXVlJuOR3cbE108000W00000Y001410003S0002000000W80020
+0430004W8Y100410Z0Omy@600001G0WeW986W0GH010A04G0006001044G021000BG080XG0
+G00WKW20M1b21mPphWW0G11840Y0000200sv810005xhl104G000W0200000qX1000008G40
+001O00000W80W80WWH0ebT30000X00000W0000030G200Y02H2W2Ga000Y8A00L00G8008GA
+4G200004a1H1G2406400208410M_F100W2pvR00W410050K002I18X4_D000e0b00008I2dz
+R0402Ws0IeGz404000_T18L06_Nt0A000o0040aI0W800G001000G0002G04WI0200H90XG8
+000500G80820G90W00W01bKW8H100YK941G0I000A4@X_jD8d432JF100G21dpGEw60A00uR
+768000isZ1000OO900atl11iOG8y60000200G020000092800H00Z0002W0Q0A0I8W0G08H0
+G4082400210010W0Y40040000910wRtWv5Cus@7008204GG0000IbrC0800000WDG00000G4
+XxR00006000G2010000WaHk1dQO000TcizD8mU3008205004008060008020G020008000GG
+02YW1OE00W100dsR002006100002W800010e00020001W10800W800p6JYdzDuPc7AuFXrth
+0040mb_C04Z0uh_40000G8G08JV36ytWhsP0G020400W64OO9T3G000001W000Y00200G010
+Xx@0240000010e000009C0l1fbR008W260A08j1W6vt00W00004W82120G00es@400200024
+10008h00Wn@P0190108e1q90W00OR000002001G0050004WB2z40G00k90azl10Wu30084v5
+cj0m00aN00000010080GF0000oDfjrA00K0Csl1W8206vF400mTk3000WEw005N000000WU9
+Z0mF_1000WktvE0000wEI@C6qql1W000000iN@l10530ml@0WV@1m@p0180GLU004Y800000
+0000qd@0Kb7W80_hg700Y00W_0awF30P00_vt00W100030104WI6009503S000WB0004W300
+0P0800000O20003yql1010400080G00et230xt0Sol1040C000Y0K1008Y000E200W10001m
+0020Z8406100CY000l100m000W1O003WQ26WE200tE00m80009100O040K4OFX1WB300r40x
+hN1@1mV@30YOsV000gesp_CI200_yF10mkd04084V0WsyE620ug10000mLzloA3uUs10KG10
+0004WL70000WA200jQ00qphD9kbmcz6KqF300iQA_LYqVDW000mf9CiJlDroP004000081Dp
+b0000mHzD000WOqOIiGe1041468E1Wg30V4p0G00Wt0UOMd40800Ckl1Ly9ncL60080GW00m
+aTF4ed12000sEcXLyIOIE9IHsWl_P0000Cn01WsPIuDv7YLKYI@meWH3sjhY@@Ju693o1yXu
+1bekP30043SIe10040000ny@@30030EVy10G000010QVsW85g89I30000L3T2hxP0060W@@J
+0040100000240BSz0820WodCeTX40W00IA0001I0mXX904X200000004azfJ0G000002000W
+2fna000011000800200GG0200500008A8KG100006000m0044G400409A0WD6D02G0m@@604
+01u5C9W0004TX178Qm8UC0180608X00000a000G10e0005000W10C00000SIZ0040Y040GX2
+1W20W04uGZ6080004W400G0H030e0YG4W0G81010PED30G0W0GIG000W02c11003I2050000
+0040X08W44G2941W30pRQ0000Y2EJ0004mnR60009uLI3I3B110H00800gcq000844G00000
+40GO000a080A0WOQC00Gi81000W8000MA2010W20Y0W000mLW6eG10W0a0A0W0G8G000KG00
+050W0200W000WW088I000IW0K310120e210W04000814400G09114a793p0PGn5I48Q50G0G
+020G00G000O001e00G800000G020400000mR50020WjfCObo4Y8r0G00G0000040W0022e9C
+300G20G0e00000078G030000GG8100280040G00270G4400W00Qcoa14000b_nGacOCGY1rH
+Q00400820020008000rDd10000zB00H000W800o@@60002A926Idq00009RSoGDUC00004W8
+8mlg60001Sve4_@d1000ObLMnTFL00K0u953wkq04200086T920001M48t93ELn00W80VGQ0
+048X2HJ8eq4UAr000eOD2Qm@@60403e7K3080Ga1h1G0008040KjP22000040H45B3pZQGZB
+C0008OOK3G200KNg17oR00f5W@@V000Om@@C0006WW00mZ89000GX000044H00Y00W0G40e0
+0C_e1400200G0KLh1W0100000X000w@p400003G202401G9gFSfm30080W12011C08TD38G0
+0001G4000IRN9Sgg140000240qu23W00008Y0yjw340W0UVo0G408000HUpt08080GG006rr
+0WW80nfo02W28088e1c_0410082G4LcoW01O03G238021W20801W8u@V300qA2000W01mOTE
+6002400002110W@@D004e000WH4W8800010404y@l1a80000YG8GOO2600e0008044008200
+080W040W0HG0000000892020002003I08@L3W080G00G0G00300WeRPJe9s4MxnWzAD00028
+804G40014GG1G0AX00HA5H000Gud80N0Ge20WG000G0W410000X401Y0G0@@RGpV6G028YW8
+0Gnj90200003004040XW20e0H40eg8W849I0800092A0029D1b0021W4uIOiuGwur0A0W0LY
+O0i0000e410804m40A100WIh00Cf004014Hp7RGpkCG1000X08Idl600b0OZE3000G000KuO
+M3e4000340YIA18W20oewC8FP3_CAXc2Ou@@G05000008201G0028000008GC00X02802000
+mM9080a4uC8tM30180iEg1Nnb00K0a7NP0XY202100A00X008200G1f8e801o01G00000W88
+0000410W01GeJO300W0qyN2G000Ei9X0xO00X0GLgCG800m0810W0GGW00u0m860e1806000
+0OBGMF608000W402040088040200kGs0m00000W0UPpWtXD002G4G0W80K05000200090dG1
+0B0I88G00H0824000002200042018000Gp5UPudm4Elo3001GO00XX0E0Y2080400400G1W2
+0WJ4QmQD600040G00qgoF0000PW53w@z18400D4R00024I2W036PW001WMVDu@@4_zpWBThu
+Hu70014000I0I000W0G4000WGG00040qH0000fl000WbAm110W0HHEOnWUbC0h0G8104WzRD
+0000000g00001M10226qWkZD0n300G8w5q7040WuNsxq0100n0010WW90000000w230000g2
+00@@d0cV7000e0@@x1000v4eD02@y30HyV_X108wh082000SF27000W0OkV_VtTukx7eZE0m
+y30m@00GYS9000yo200eg30WK0U00000008G1mivlHR000exjcDm@10m7P600804000oTA64
+3N200m0AmEXHcJuGk42aB10W1GAYAmT40Wn8000000YDA200W100W9W00202840610080000
+Z0009oP0C000O0O000CxoxE100060P0L0gC00uo000X100S600W1W0GGmP6J084004G00Wl2
+0G82000mB00000004HVZR3000pVad1@@d00EF0oFF0000n@@d1P6m@_1W@zk@0y2Z100sO50
+0000Ogs10yZV0000u90@@N100mV00U0W020YpB1kgA00WTm5E0004005100iv300000eO7eE
+10GPy@@IdOp0GI5W@@bG008mPqCCau3XpLnvu90000ySR3kxM2GG0WVSR0014mwDCOaS66At
+WQrh8d53gys0000W40403PtWHpD8NL6oQA10400l6d0000mi1I00G0Onwa000W0W02IEjRqn
+_300Ed@@d100O0H3am0v6SRe1JkpGtxR0801O9C6YX@100023ORGrnL4ZW15rN1GL7W5vbuM
+J6YKuXhrD00W0Guv90G008Qj4wJlYrvDWW000408WcsD0101qHpF0G10000200H000201WO0
+0kMs0005W0G00000muO00000048040010W0010000W2G000400GQQ6KEZ10010WH00W0000G
+00Iqz60800KWH0os090G040Y000W010C000401000G005K248a4W0G03800e06000W0I0a92
+00G02G04000287qR00GG0080801K080e000GH000004Y82008W0010W0WW00G010C400K400
+0BMBDO0C0000884We00G03020G04Y08A0410C042050H_9q002012DG0W00K8G12K8000400
+08G020094009G00LG004Y1GY1WezP0020X08W0202000O0000080S0aG30WGWW2W0000GG08
+2000001W0C004000G00204G0011G008601000H0YWCvJGW4G0G000WH40000008mW00000I0
+X45000Q02004420GG002060W40C02000WG080100m04J0G8008HY20G00040W0H55412GO20
+G0W004840ie30054W00100W09000000eWGW0040000801000P0e5B3ITyXl@D04022000aRo
+D00002Q00006W00W00G30022W5000K0000SR000000W0050qCe1001W01000GG00W06qW@60
+G020000003100008b_R0Y04WfzJ0G00uXn60009eeU30243m0110002100WW@tJ8c@7W0204
+2l1G0W0Uzt020040000a800CWU2x9O08000009d001002000Y8002G0100100020L_R04001
+1000Y00000028200480200Y4H2400Zdb004010P00W408gSaXNoJ000W1A00080W0G141w7o
+0a000Zsp00WOakxD003002c082000000G000G00011W2Gy136yzl1Y43W000006408lV3kwt
+00G000401G404G080O1z4G00KW010G00H0WW0Y@KI0Wa9001081800Y4Y18O0G04080W002W
+0W00Y01000086HI820G0XWGmXvLC7l11VcW4500C30W0G08sIsWDtD00000000Iq300Jjp00
+H0WXKI00G0mWxC002000001204190W10000W224yrl10028YGtWxvC080010001Y0028G400
+10400020810mcy90G008OO90040iZG241800404002820004000H040000Go1880W0000400
+4008WurJ87E300W0000024G00W020200932R0040We6DW000Gmq6SIF3W00O0K11001O2YWm
+a84050Ga0A98G_nt0010Gd6d0008000AH001200100G5002050081008AoG08a0G0a014g18
+00000400G4G20000308040Y2W244W040WW02W80001Y010020C0GWe00103WI00G0182G028
+804WC00fW001OWuG3088212445G10G4aY00004X80W0ovt001G88f0A0A1A2304010I4a5K5
+80004a2L0028yLY17hQG40800020085840000E1WO0n000220Y084KWW8G8001C3H4090006
+200000y11i0400010W400480C0Edl1080W100O0044X00200000000H0800XG00I54mGX200
+00WH80e0G004006GW2Ha2H004S4X0n8124902H0202WGKe2T30G4000580000LOR6W80K000
+0W800mmmD00A00000101W200W0000Ajal100GGG0Y0I950SIe4aO0A000Wcv08qjG6004GW0
+A1000W0200G00GC108AH9J000080b00008Y00008100E105K200Ga08KXT@DW20082000A10
+0400001G4100W008f408G4004080000A00isk176Qmhs6KuV200W2Egt000200W00sNp0G04
+WC882oqt040000G420000008qSPG3G00X801G01Ye000410G00G80Y0014080000WG0041G0
+W000G10a000202000AWmTt6002100m0802WWvKC01000W02WJ5DW00G008000G0W800e4m50
+0000180WGXx6010ceFV380KWKhU200230700000CI450000040024000G00H020A00G0000W
+6064K0G000o2r0404J0W6403HPW00O080Z0G000360040G2e0K0n201J000444W0G0W02010
+050000W400100500001200212c0pWusC00182800000X0000Gk79XFIJ8QV3wst0011G0000
+e0G0ymk1WaA00808qtE30008KF44X10000m008000W841W0K0AJq0008WG0G0000800W000C
+0Gez6W00000G04W01WdyD000Kqs@9810000W02e000m0040WL0Qos0000X200GWqB046k1Pm
+R008C00000QWG0UzB10000e40000W4Wu00000yIJ@6Kml1Gi1000u0Z210440IGQo6080eb0
+002mDXFp0800_5000W00GG020K8000WK4Gx8000Kr0G04zl18S40W00D08Q0008iZ00008G8
+0000OG01W0_Le00g200U60sD0Y8mZPv@l1W0000W00Wxg3Wq@V0000F000000au470000n5V
+6l10O@@10mg30000a0mA00F000K000000np4A0G150l_uV@C0WW20Kt100008@N50000xI4t
+0a70000Wly5H0i2d10001000U0WgA60tVF0KLN0040mCJ0G1500Wa000S100m0G0W1W2G5G9
+200h4008CS301W002G614W8200H400W8000C00000K0C60001mC100400f0O00C3K0W1e4J5
+mO00WkFc1QP0000L000C050O0e0m0Sd10mA000o5t0O0A0m0SZ01u70002000ONCv60S0W0e
+Ye3Ga100620PbR00y3G0W0e623Wm40Wx000W700Fy100C3E00m9BzASn90_@N0W_@i_60J00
+000004vE0KbP0nfd04n700084YF00W000gw00001W8y14000HyS70C50YSB0Y0000pB00000
+4mi450005WHwP0000_@d0OsH0y@C0000u8mg33CKVsV30CH0GV@1Gym3WcP680SFco400020
+tx@0_7K0iFWy2WTmte1V6AuFX6nzejx4kVt0mz80xYLnM_6000W0008004000808nsQmrQCK
+273ZhzGOtFSll1lxR0800WASPuR63YztWalV8wV3000m0M00uz@4MHp00010W800guFX_@JW
+0100080WQmD8GS3002WSxj1W0000G00iMN2Fw72W00aZuF1800000dmBtb8RzDYO@XKoP080
+1GwRLSqc1Did0001WbAV0200m6M642V2dcdGiy60CV08wV30110000Gu2U30084a2l1001WM
+gs0000008010001i5l10110024000028U06gjE18000000C4100G400uPy4gyt00G00reR00
+01WRxPG048290002K000HW0Mzp0Y000800ecSt0AA00Dkd0G20000WY20G08W00G010O_H3U
+jn024008200GG000040G04000808a080vXPmdH6atU201GK0YWG04010e02003GGG0808001
+40480m01080WmCv60G00y@V3020020W04C00000002020000a0208000KX880008G8G80004
+0000Sy1GW05200001K0O0W02OGK1100208020Y08080Ke00000L001A0000040W00K3G000G
+1204008210044W4G800G048W1G01mGUMr00420ZBP00020eW840200G000280G000C00804Y
+000XnQmCQ9SLW1000e0G02KLg10GG04010002GG14000848121000000ita4qe1000G0GG8O
+801G080800G0OG00G00210H000002040008200AWm4G000m0C0G08012802006044080A284
+40cph100G080G0G08025GW40W0G00204240W2800000G0002000100800080RmtWRyJ0G008
+W000000900188m0008110000a80400102G00W40G0000W5A000W400002mGW0G0010W4We08
+004A0000H00W1004004301e8@V30400CTh1G0400000H540fzV30008Dze1R@d000W0H000p
+ldG5f6SBj1aW00AZqWazn00KG9001G0GC0082YUmt000QAr@R0H0W0000GY00800Y0iRV29t
+R0040XQBIe9uGEgt0014G8OG02jCXOgD00211000XdDP0400mtv9ihb180000100800X0006
+n_@68I00Gmo3mUs60W8G40000YGG08820BzRmjA9CGl1TDR01W0WPwJ080000X0WdyJ8kV30
+0mG0080WG0010440G004040800080006Y50aO3kFqyl108o80020ick10W2000I00100m000
+W082H82080400000WQP41OFS32@m00000G00HW000Krl14050AUF10100heR04G002008HUY
+1000cXeI040008008020WpxRmSBIqMk1000GEbt00007@jRG6z600000m80000VyivPG0040
+W0002000GW00oGqW4JO0G00Sj@CqNJ5000W04J030240W00XQW01001W02GGm06GW8W00W20
+1000f@LJOOU3000oG402OxI300001XHG21y04W651nC404H4WG14028000yC3eG00040GKGG
+0H00Y510G0m40001GK0800G00X0800H0200G010W020000KW0080904000C2ehL3kLqWLzJe
+0T30WW00G10MeW62LG00W0eADfR0Y0AGJ08Jm180001qqlV200001020iyc10GB0G0000020
+0W00A08G300X00GP4X8WW00WO4000doH0WcuD0Y0W0G00HAG10OY04lZt00210G004IeF180
+0X8410kvt01W0000W010020G0W9_@700O0Kwl1XXdGxS6040KQq7604100080W2A000G401e
+400800b00AXG00000g4W0000W01020009W000W000G0Uaz6Kzc1K2MG0W4000b2101a90KI9
+0W00020bG0X0G1100040W0830Af41Ga4f0WI00G0000me40000nYYIKY400000088102X00G
+K0W2uP8SL3004WG11G0040nA@900080G00Wm0000000C00CH00A00D840400e0000G014100
+O4W40000GC0002000Gh301@R000WH0e012G000AH0W00002082280014240W0be00004000G
+0W910W040a14440GW2Qysl10eC000148G00G84I000000090F@p004000044000001C01200
+YWI000GGWU@D000100800m1M0404W02J0I05100401010200CW0102G200W8810040020080
+00aI500gat01HG80049O0C0Y940c0W800G080W240W0YQHn0G105We8001G10530004HW1i1
+10040000G04m00U000O041010000e04000c6c1W0088b0000080W88100G0150WvWJ0010mJ
+a6CJi1GWG00K12q_k10WW02Mt0410WA00000WH6Sl1I00800000810QxU30420000G01I001
+010O44800H00G0002g0W008080000008004HW000M9b18200G008SLl4G00000X0G00001q2
+0000qwsJ0G80000G446X020W60002800Y000Gf00820_2400000wA0zPl1002O0100I4000K
+UHGzx6aKk10WoA0008w5QB0000kN020W2010100mh0000890zZ000G@721W820WO040qB00Y
+1v@GlI080W@2G0000G88010880100g4_F0yZB00wVx0Fz8010KizV3400YRU00X8S3mEt600
+C3l9@4000m300G40K508Y808_V00GW0CW0yZWgmKu0J4Z00G160m000mo1t0F000000000yK
+9p0GN_18@P@C00m@e5b70KG0aw@6vWd0C0C0G0g800W0000j100K400W1W0000602000004H
+00WHYW0I691a142OD86nEmSIaWv485G1000C000O0C0e2C3G5G500WA0000000mS2000W000
+W180GJ030N0L200L600WP9aR0m1WBWV240xC0YXp00WH44mFm9WtWxCT0tPH2kpYK0b1W0q4
+00e3m001G7140J000P000Wz20400mimdsl1m0@0urN100@303y30W00ns@OGc1yW72ILgY90
+_70@nC0_B8CpKGC@l0StP1000001a10Lm2003001400100mNVG2000400i28W_700200zA0O
+c70000005K00O0eu0F3000Kfx000H0Wl@3eAL1WgK50@fAuXB8CpKGg20W0u@Ltg0W02m@RX
+Sbl1Hydm2t6yzj40008tRt08000jzdGM@RSxl1J1unSb604804202mPt60G0000020014GG0
+84@mn00000002X7ncGk@6000G088010000G0G0R@R00W6u6lD8RL3020W04028SR308508G0
+0uUR30G000200eSS3U@s0020WfYdmrvCyrj1004GxvtWHhDOzV36_oWkwDOxs488m0Cl@302
+084000K@63WJG0Zgr0000G0400NJtWPuguUb4Ypo000807PQm7xFKdl1000W0O0GirE30020
+7dhYQzI0100GXx6Sia10000sVt000080700_zM2200000mW0050yzk1@pbGTx9Sul1nfZH7i
+6aLu332R0Y0GWGoD0080000GYD0D020W0000208GW73R041080028050fK00W001000Gn9C0
+0WJmD0008ugk6e0548TP380001W0W0020010020GG080AW002S0Aa82001010a80200000W0
+201CBk100104040000G00p02010G08Y8042403208G9G4A00002080002601101000500S@@
+4ojo000038WH000000G4G0f00044WG0X40K008C12CW00004410200G4Y0g2428KA480140G
+W808041H088eG0G80O0a212K0W101410040014804120800IGI0G01000H0Y0WO00XG000W4
+4H0006802000Y000G00014m4ol10W00G0020020000W02W0000W24W0G8000I0W08sL3G00O
+qGM244024100W01G600G0WG0Oq042804cG413000W7R8W000011GO00281HCG00008005KW1
+880H1A00W0W8K4801082141400011K0K8Y44L8n10H0900401Y814402108O4000OW40008W
+W01G04400000WY0001040GK0W040060004I0IG0cls02000G200EnD1000W9@PW0000140I0
+000W1G00000060W0G000G80m6000400000Gf7W000G0I0W84000908W0204G808001W10008
+0801000Y00Y10000408040WKyD000941028010004000G00ruW1H@OG2a6K4c1JuRG2P6iFY
+10840QKyXA_DW00008W0YKBD0004qjA60040000O000W011000rT00G00Col16000kv@XqhJ
+W800000GWOmD0000Izb9SuO20X00QE910H00000048400002Y000201a080W8@@RmcU6Sz@3
+0803Ext01440LFRm2wC0002q400mP@FSUk13ucmOu9060G0008W820H100W02840000220G0
+0Y88801Wx@PO6H300G0800G28000XGW0004m00WW8440a6E3Nip000W06000W0G2400820C0
+00I0oa09060000W8oh@6011Geio4oztWcqJ01000008uutDuHV30G82000060800008208G0
+0880kxy1W0GC3cdG_V600008z83QY@XhBD040002G8100282G0000Y419000W0W02400X100
+W0000BR0ifh49cbGkz680000048000020W040208Aot0000W40G0soFX4LD000000WA0073G
+059G028G0LG00080002040B0000800CH0Cp03LsR00Kf80WmG09400K00AeH10H043WAW9W2
+0GW0W80WI830Y81000Es10040G04010W004iRl1fudGa_60G0Y00008K90203X08021180Y0
+H0X06080O09001014a02G482000Wu4432iF102GW848088gYW4a46HO8004X61021000004L
+0KBh400G2GO04W608008W8k0eGG0100G04GW82001004G000WfL80000W4000200040OlI30
+K50Czl100X86Kq00W01G006W040210G0Y0000810q0G04Wa802W014a040m0Gro9q8V23tRm
+v_6080G0a00mzgIq6k1000Ye4000084v8S3GWIAX000022e40W42Gc00K2000HF00000GGAf
+40WC110fI000040W0G90000020b0001a000I9000900000204a000G9A1000108e080000W4
+0A1W025G0e4G820010K0iwj1K000IbtWPzD001000GWW0EUuJn700040000IOG202008000G
+8W0W00a6YK2000Gb000W0000um600G800W02000002H8000002804282042208000WPmh6y6
+k1GWmG041400eCye230001X05001G01280WgoJ0H00GNH900C00m0C0E000C1Z09yzmL0F0W
+00004020008q000800W800m01004104G23600m_4180O0t60u00008e0y4WYP_D8kt4400S1
+000004X0GG0101H0GW01m00G0004WG00W100eFjJe_L3A@F10802NxQmBv6qNU2FH_Ght9W8
+X2000401e40000HG0G000200WG0ulV30luWTCk10020IwtWBmDeWp70000040140000YWWIG
+1WW0G000208000G4820020aWd3DOEv7004G5Pl1008H040000Y4fZR90G20000WA7S30000w
+5A00001OOu9WYIC400_2000M6I50000azY00K9l1e60002ml0e20000iozy6000e78002WDX
+Uc0800z5W0000WG02004N06001l0N1W00YZ2m0W0000e020009000q7s000y1ON@200_7000
+0d100L_00NLl0AwVK1000WS0c3@12C300eA8e1041C0W060yll30H8o1_Os_x106P8003K00
+00003Kt500Dfd000CmZ9J81k4I18X1@D0H4HBQ@50000zY8WNXR0FOW0GXlW200ew@Oua0W1
+W103000r40RNR00m0G000GT0OmCsCWAG4WPWA000C000W10005100c1C0e2W1e3G500WT200
+00009Y6000m000m5m0GHWR460p400kH0isl10030006WvCC0ZP00iY240d580m0G0e3u0GHm
+E2706200TC00GG1cR00100WV6400000o8000000HL10uz70y@F2LrRGd36000_7x00G65L0p
+mZ20O60Y030G5U0O6U0uA0O2HOe0600aW20WimCWJ15G5m60OW1KW000C30mt4O00000210J
+184228424K842e4WaWC2800uPGON00000yC000zk1OtwJUoGYMiF100lJo0p4IU5rqcGYORy
+nl14200crbaiSJ0SI1my@6000AG000mAS6SCU2G0W0Yps00G0400000G0I44d1W82CoGu102
+02ZAeIiGFqCk7000OQKqWn6WfP0FYKO30G000030wUuaOnD00GQ_@@9O020000G000W008G0
+BUR0020WHCD8bP300040900200010018eG00Po@048WWINV8NT304000800G0G10000WlzCe
+GvA0G00yzk101Y000002W000144a0W00i0000980020000W00H080e200Y000W021820m000
+58yE300001004G0040000800GD002Wwds008a0FqRmUQ6ieV20W00018020101880Klx90H0
+020W00KG008081Jwd00014W00WFIOG0@90040020Y0000H80W800W08G8000006N004KHeK0
+000cX80W004110h02WG00G8GG00G002040W800GG0W422208WKyC000000GW100020YG4cEr
+W1lIeyV340001G000002Os@600G0000120G4O0000408YECE1002004280080ycj1jdPGXw6
+0400044H008008f0W4W1000yt000121A0408I800W00OO202n2Y0H0WW41C204041010W000
+510O88G00200W1WWUlD00C1008WGi8000G000408Klg11Wn0W80100W0HuR080000G000008
+0050CnS2RyN100C0000001m080000W000Y2000G02W000WGT00YW0060000OC8W3000000G0
+00500WagF30080ITs000mW0000Q1r000409zmGn@90080O5H380G008C04080a0200002HBx
+Q0000004140G00E3xXP@Jeyt7Imq0b300d_p0000a2ZOew@4000G020W0W4WGj_6KYj15zcG
+Ot900G2elV300102000004G0040WCzJ00004B00I00494G00W9004QE3BPn0008012014G40
+_Vs004HW00004902008000K0010004G0H400008W00C18uBH3sxtWXzD000G0400000020W0
+0khK20A00r_RWG0400GG0L4Q04W0WGwC00001Y22000028040_MFXoyCO@A9oHt000880400
+0Vn000000028240G4008Y020200000401WWW0mK9I001400001041900100GC0Ijn3G00000
+010YG0yAY1000WYGs00000zSQGZpFKcD3LCOW00K004W8000WuP014jk1pYRW81HWNvD0800
+mTx6KoN2rNRmrMCC7J50A080m080a0A008020A49Q440V2a04514q0010a24m051Swt30840
+MjF1000h21W0C8W00b0XWY4100WGG0W2001W90G00A082q4G434W8220nW09K00Y0882G000
+18Gj36000G10WW1901G200WG100gACXG@O0240GdY60G0100WE40009W8004G41H800IH080
+I08Y0f80003J02KW008oaCB30W10kPrW_zDOhV3e220W0002Y000mj7100G500W80100A800
+080Ga200010W000P1xXtW3LD00000G00H8842G8WO00300WP00Y010845W7@P0100C000020
+0808000W20800000010010000Y2hwp00040W000G480MvF100WIdSP00000G110K20280000
+0bA1001a82G9000GU4484000G9b0K2D944K24G202K00b00210m0KYI4a04a20AH400GW000
+G00002G00f400810aWI0000@6BXD@D00A0mvz600400281000014200800DAqA1G10041800
+0000204OFJ6MJrWnAC8WE300Ga200001092XW0C4G0000YM800OY80901oG80mG044W24e80
+001000C9004G0W8K0We0100000220W004GfWW028G1X00HzNAHaz60102100G1e0A0802000
+40KG06202WH2609m00W1iPWW01GG@LidZ1u8M0xxt03G40tdR0mKd2C808GW8W04JG00GWG4
+040G802YT40W4100C0502W101040A0004m00e11040001K0W0000002pYggUuCV3UMC10000
+20001200080W0O24G@jC00WW8St7E8YX_@DW50000G0410Y8Ga41000m8c001b00088208G2
+0G45Wae840C1100509W000a0W4000010400400200400e800004G020_@t00400Nld0600Wd
+xD02000250W4zD02000000650000D10Y@zXcua0b20000a0050000eL000G0000120G70I00
+C_2000cvHN84000V1Y0G80201820zEf000uBqf42G8503K80020w500008JeN00Y0YC900Ie
+t0qA1000G2wyAXMnCW400Gn@600_@70W2F00000m10Kbx04Gu100d1000eEe8000800040k2
+F9XnlJ8sD6000m000g2LH50m3V1L100WOsCjeggQHLL5cm3FggYPKLrY0Fy5nScB2W@NaggY
+90_7JP20LgAH00U008Y00000020W0Q03000mp@J9JY1zD00o000W000W0800301060f900bC
+00GYu600010600GMS9SxM200000cD0C2030mPmP6N0A800dH0G0000UIQ40AWB0KWVWh0k0M
+PS1kp00Sd1G1C2W2uC05mFmB0NWV640@C004H00Wp2ap0W10L0C800wO0qzF30GJ0000WQ40
+00000000WP@300004_xIt01GTr20W@50gz30000y0C000md8AD0300m3RL0W0000083O0WAl
+20400va50y000GKMo1ChP300AWS000p81lTt9002N0W0k000U0mCx9kn00_F001S0000AX00
+WRT008oQ3IXJ5000O3ofIlpF0Ww1uISCsTRZD@J8Yk7MCdXJ@DurS3W200yDF3Z9bm0w6000
+W0W800000G0X00zcd00W0WshC00006Q00WeoDedU3000HU793FgR0024GK08WHgRGOD9000W
+euS3MfDXuhhOsxAM1qWbrJ0001X00000014nuN100RtVmV00W2Gkw6aNk1NlR0014epsP8sR
+323t00040B0pGWl9S3C3RO9nEWR4Mg1000GYZF1GeF09jR0G00WBJn000GGxo600009US3k9
+EXVWVuhU30088ytg10214wjd1GH000800008024a0eQV38040CsC3G020A@t0W0000100040
+0SKd1u740wbp00051W000020G1H002000a200G4100W240Arq00100XvR00G800000400W10
+KWG0G0uHV6Ert0G0o8000000e10W201A8W010800WW8FgR000010120TwRW000WGHD002420
+1XG00004W00MUs0000G40G0020WW2012f0300W4000o000G0W8I2200q02AWWGK0GWWW2G00
+04220G04G00O080G41W40200140OWe05a0HWW4802040W00fxP0208000I4G0u00081Sgc10
+K1WW0010210m8WMW08000G005wR040c00G0YW00WG0G841l10W80081000902WX0000808W0
+20W00400000W1080000028W08XG5000Gz010Y000W04111O4Gg06G814SC0I40408CG00510
+2G000Y000010I0H0010022a0022m0zpQ0G00O2008HEP005200A000K00084200G08H@4004
+24Kl1rbRG4_94eV2xTRmhsFCwj1022001200WW00000fa102100G0G004000010000G8mvK6
+4CW10642020aqsl1e00G00X00GGG0G0G090G20008a000I1BXF@Vehx40G00G0Y0AfV32OZX
+7@h0104000800020C8G00WG000001400000hhoCCW00W104G00001002HQ_t0000HG0H0000
+00e020X40Gr@98082e@V30490KFD60200QosWc@D0004W0000110H0008000Kyjh1@yN1004
+G002208000Y0ICok104004Dg04tl1r_R010W01W0G40012St002OGLYpmd@603000804G2@6
+y@F3000CIH@100040041sHdXxsD8WC3cBj282G00488040800001800840000004K400Ybp0
+0000086O08000Y400G000W2000410000Y0400Szk10480_yt00100W880FzuXEKt85r4638a
+x0D0020nWm6yfl1000F100G80184060GRV64Tf120000GW00200W0000001210028I400002
+jUk1Ga91000WO0218wT94010ihE32100C000e8W20W0000102000Y02W0wbAXPIb000I2006
+42WWW228148000X000G000W8C004400KO48G03980a14G0WG9O22IG12001W0HY04WYW8001
+08i441W00G00044218080n0G4T00Gn0GK0L00Apd180G400WG6mF1g000RHP00200000201W
+00I08cYl10820ope20020K201H01W2O4aW00220n0K02K0000Gn5000G48I0042W10014094
+900WA00140W0GW040G4H0G00014YW040WWO82W01020W001008100Go80082OOpZ70W00aZV
+20200s@YXTmJeFNF0G050000YI00W0000A100000Y0WI000O70020100G9A1W20040f40480
+Wo00A1000018eaI80W8W0HA1G0004080b001020002808Ra000b00844008GfZyJG0000582
+000bKGG900W80ipl1d9pmDT64yR800900014000G00XG00001n200800008x008W0uDT34G9
+400H1040232K04GQ808W0010O2002W00A468XW000G60022G000040001080409aDwJ000Xv
+Iv944V201000200rzl1000G2pDXZKy8hx4GG0000Y0mGW06000GsI40NhQ0G080010G82000
+W10u02400800W10407872AaZ080000W0W400010000mKm000G4GG0002Yu@V600mG0Ge0OHe
+4UM@XcmJ8fn4EJk200054e0Ao5F14102000000Kk3000GC008S8KGg022G0W00g88W4112n8
+0GWxF0040G50000g20G000G0AGam800G22isx4MCoW6WD00000G10eknJ000G008KWZKD8pP
+F000q10000ec0KYR600Ab0400eN000W67L00000yB0000a00W000e10000WUXw30808x5000
+W0G0G000KU1100mN07000245H000E0000010zc000GwB043N2000100nNW0GGgay4yFm0000
+CxUq4000z@rT2lJZ10wF0E@S0aJ4@H5KWGN000000qrr6GGm0Wh000000C58200863O00W1k
+00HG10CW300i242m200z74H800mK0@7X000G10@zW0G010WQ300304b7mPT6yx@38200W000
+00W10600GVi6a5N20108w1qWSinWH000C00041E0i6GWW1eZ00mC000000W901000C600W1W
+0WAmDYPWA400L000m9000g000O0C0m0eZW1mE10WT20v3O00O280uDW0oCmT600fC00es@48
+900WBG610WVMs@90W@@70000W34000000Wy0yV@000000@z3000mVz7003UN100WA1y@z000
+000KL100y7@@700eA0@300WZQE500p000005096Ch0U0GL00lg0mSr10_w1000G5Q00WnHh0
+x0000CyWBrU0_v7mfqm4GD9000Gq000S676PaJ200mWtyb000WH6P60100ueV3EnD1000ad_
+R00W00G00KnjPmdR64D_3W0004040000100GXnxhCaga1W0G8QVB1G082RmPW0G000A00G00
+W080000018zR3W10GaZg120W0YnsWiXb0G00GEP6qlK2bjb00W20010GVMomBkI000008a2q
+C@9G00W8MV308G0q_M2nWQmza9Shx3nzA18K0000002H0GgP0ZEiaeiI9gys00G00HAOWO10
+W8nbuMq700100012u78308W00000SED600088010W000020W000G05oPGt@CCd76rtBHoA60
+010G10008A0WmvD000@vgt60200010002000G0H0zyR002C000820050800000O0000002G0
+200000A00sksW@1D0K000002G0024084002000m0010240G000040200100e000WG8up_4w8
+pW3NPu1P6grp0W000R9RGLs90Sf1uKU308W0G401502000061S00800G000E81G8000W0q8_
+6O00X1W0080GK48Y3emG4G0W208qGG100X0K0041K0240WG4G011Z020802W090mBwCuZu4g
+Xd100K0@@d0400m@@POoK32bsWEXC02800000O520000000IW0082G48K0W00408NWI00000
+40HO880M80W28801000e000502H11000W0Hf2G0a41100O00I0CW00GP0000G229880In08G
+0Y8W0GajF300a0000280GW8W@J8000cVl160040H004vl100Uac1dXK@IO1W20X00CcF3002
+001G00800050118W000004OW00000Ki0f1000G00K0SGl1zKo0G000O000DzQmSzLayV800Q
+02733H000V@R0080WapJuMz4ohsWmXIuQv48GW04Cz695OZGX4W@yDeOF3Ahm08000R7R002
+000090xzdGli9SDP2dmR00100W04Wt@RG6I9W400O493EKF10010DPNnbfU0000Hl00GUn9y
+Xc1VDamwt9S@P20400s@t000040200grtWl@D000m180mmrmbec@4chNYiKy8w_400S_kwi1
+tfcmK_98000G00W400G010808G00_ndXILP0G000A00eQuD0W02G9CC0000WW040g080W002
+0100000aiAl17m23OZ20000040G04004y2k10G06s@s000G020O00W00W320W0000048000O
+0001Xk7D1W004200010G10WG10GH005105I02We100o6E10008002000H02000OFJ3YKO600
+0uu400W8100120a0W010020a8000121000800Y1uoD305201W00Te23cdt0100080010201W
+8400810000440040004G0208L@f11TpmVyR0I00OdR3orr300SO1zR0500042100200W0401
+4b00091000I941G64015kHt0A100I820eaI0020YuP63EfmWOoP89U6Yhs0000208487djY_
+_JO70CAyF10M60C0000010G4000G9G0041092108G400100W0200X01oj@60008000G8a0W0
+4eWI0092GW2002210040GVw60WG4000G004He57hOhI6cY_XTY91000Ez100mG00XZdGX_6G
+0C0000000G04W00000G10I1A010D0K050i00uVRD001mGKu9000W08000G020W880nvOmqHO
+CcW7TAZ10WhZXgJ0182W40A00000000K1W50iNl1zpR04000K040HwRGwb68HG0u4J30W084
+zk102088008SiT2ztR008K00100@xOGumI00W4vW4I0694000000c0000G2010000Y2G000Q
+5w0080mEJ42WEqD0n50000u5qN2000yN040G00611000700044B200004010000GW000040e
+50000fnqdWPa100000KF0000000G0O0N00GQOjKt73k400UUt0000G2w10WP000G088p69cW
+F10elk00006VpWJuJ0Wm100O218000PKp0C00WWkJeuU3YgMY3vCOV6F000g8000WW000400
+08041e28200eZ000C200m500W9W3040c8g0Y800Kv000c100m000e3u0W9mT6202800EZD3W
+0000201Wp04040kijiP00tVtKF@4vV2WzR8001Lzw@3Ljp00S6Gr604Y80crS00yMT52G000
+mZ8oCJ0W@N7mYujaZl1nZ720002K200@aJIJ@6CAnCbgRG7vCiAU29b@G3KCCmF300gRk_jY
+YpP0090Gv@9080002000000aHnVu@kJQJtZ6rn0yu0GV0jyG0C5VRGvnFS@M21qWHboC000W
+c700GHIU000Auy@4gDFXprD8YN9kzm080000G0WQHt00m2Wf@d05040W000rmOmJz64dk19T
+n0G42WNsDeh_400uaJ00000040140WMnD001GuA@600Y2X010mhu6CgU2TVRGFN9W01Gu__4
+Q1p0H402000WW08W000028010016K0408JFPWA0001WG042W0WGG0808G8JV3ghAXJrDO_a4
+QetWW@D04R2000021W0001000800014G02K0042000W04000G0028cCg1GW00W30C03000A8
+W0WG010W02r9R00200WW006O040C20008010WWG4q602080G028W10003e08420000000241
+048824820009W201001000400001msx6W014e@V300GiS5g10102JkA1lH000000801K0000
+200m014W1C3008000808404A2W02G008010001208G0W2200W80040820002801800004940
+000410A0100O400802000GX1W0000240GvQ908K0eyU30020ixW1O002sntWhpaenmA00WG3
+0000G24G1zCace1HuP0W01Wr@D00I00002000X0G000EkFXQnD0084Gx_60m0X87Y40G4088
+000H0002009412W00G1_FwXQVOuv_40G08aJe1PwRmp@64lv30006000IaMe1Pp5IzsIqA03
+FrRmnw9q4c10W0W_@F1GG0Z0000G00410H08uV300006eC3z@R0008_fsc9ypD00W0qoh1by
+Rmcv6C1V2xipmUy6y1V2bFPGnmL00WPVC6L2hKY@Yn8iH3AgF1000AdmRmDyCqVE35pRmYpC
+qQF3WnP0gd@XyksOQGI0001G002Y008mQ76G0Y80021002600I0004000060_jl100W1000i
+0W0106000CG0mB_D00202200048000000G000srU2XFQG3zC0WG1OVU3oV@14000xooGXv9a
+yV20050004000011000200H42G000G40018201HW01120i24W43P0001uHA600410H800010
+08200G000C0008020etP600uN_FQ5V6aGCYXCM@3010000a008WK000GuIx60003a200Y8W4
+4A14000WOpnb110W2K0G065d10W000G9W0002000K8s@40pa0Syl10018000AH40009G20b0
+000050KG1YAgc10004001WIdpW@@J020010K000GG0000b02000H400G00002104000000e8
+00Ai9k1001G10W4S6s3000C9E000208CbV6K4H0W024fl_4g_t0h300N@RWY2300G0000WW8
+20400408XS3000EqbB3rNAner689G0004400Gm01001e00Wkyo08000040Z0GW00008030H0
+404G00002Z10_@t00808Tzb008080410000W80aW004W30J4004GX0@J00WBPbSCOm800000
+000Y2G400XN_GhACy@V2004G0020Ssa10C010G0401W0000W00G4000805ybGPlI0000e5F3
+gcCXWqDOa63_iFXWYC0eN3Gd@FK3S23pQmf@9CPI27wL100m0e00001C000nI0O00Y900mWz
+60WIe40Ca0uA1000_A0200001Wy@l1000250000W60efT3cut090N00000j200atl1840000
+040000bw00Gd@60K0000010wFW0WG_B8y0034mW@tJ04004000089Y0FdpmRJ6SWb10080Gl
+0004mD1Y08Z@1000WmB_100ylN@90gg20@3mf_OGLc1000WPMP9ew0088U300U16uV200yVt
+vN200G_@uR0y10WwLX100C200GJ000205040CHw0G000eZ000A200W10003W100WtrT24100
+010003G000WA2H00000Y8PZR0000301WW0pC00G80aul10220syt0000N000C0_P00yp000Z
+000m00001e000GsdBXq@D0J00GsSFSDW10H640_P0qG76_F0aXV0_xV_100_@VQ2980in_qK
+30Ksi300004n70G10Ws_D0KGn1E00WL_Jmm00mOF2100WOSV6QRDXp@V8Ys7_Z_XMlV8Z@40
+0GDsIs9xzRmp@9CyE6C004Avt000282G0018400400u6V3oDt01W00@@R00W0800100108_4
+FXJBJ8Ek70IL1iyl10800gbtWTfDG000042000004040000400W00OZN602W0010001W0000
+0X@AD84T3wBC1000G0082ATnWcr9vByA2Rt0000aoJ00ENtWVYD8qQ30002iEj1PaR0W0002
+041JTd0000G02G00004QYAX@wa020088000028G00G00008z3l185000018CeU2PXOGn06ir
+k1HCpGju9008fENUF2WhYNnPOnU3Ybt00081JaR00GW010800000G00200C0vgj4W0W80000
+0G08HYw6yua1PiR0800000085jd0G00080A0dIR0OJ5G000WG0040C000G0828000CA0080G
+0800G0418000G12008200G0020m1020020000Y21OW0000G00GXG0G082WW0002W800mJz6W
+00002020100802080W400200Y000G0002W0000G2000Y808G82G8G0W00Y00420080G40200
+8G0282440100W020440J4R000G10028XvR0000I_0010000G205000000WmW2e000W00G400
+1200W04W0600A0m00020048200a4Xyol1009cGe0009000000a80200100080bW00CY4402A
+838W08000O840H0X10G00IGW00e8W00cuAC0G31X0124W028e0G00200W40010840012WQsJ
+0n01000220G000O8001W0H0000002000YQ040004W80WI000000eAL0a2004WW00W001001e
+000200202904020A40O0HW4000000o4Y81L49000Xc00800n4360040a00124G004400009I
+02Kpu60040wTtWdQD002080000004G45800800rJH2JCbG@_60kXX0000W0080G000pZQ007
+000042010W0a000422HG00qd@68002AiU30001Krj1zrRGZz6G010m08G0980GWW00d@RW90
+00200400G0W900MQV2m8W8000HCXR200G06RE1008WnTN1000E@19000084G01mCZCZP00mS
+_60040uNIF000600022023800000A000G00W09400W1000W4008088010000a90000000W49
+000103C000G0G0000W00830000W820000adPR0202elLmu@V30GK6000W01G0Oyp9m000AaH
+3otmWApy00W08W5I00O00W408cqt0a0000001cet0800180O04108isl108040210CpZ1jfR
+Gtx601404280mbkCKmv30nG04640y_S2G20ma0G0240YCTJI0000G0IG00000O08Wh@Dm023
+mi@C0102G000Grt6imD3200HW0000W8000140110WlpD8mM32hmWSuV0d04004004H91@gdG
+tz6iwkAbtR0H8W2H00OtMQ0500180GHOD0000CG04L5I0a8060G408W800m2mW8H002004H1
+00G04L100O8mO0025124202040C0201000DJOm1wC00mX5803C64K4SnG428Y8m118WO20WG
+W00c800eG00dlnmHXL004XHCG900W1GW0H141W04gKWG5470080010W000000W1Ee0B02049
+0WW0050000002008000802LS0014200040H00m0W0408W0q@l10410Mul2G3B4A0004IW000
+Ye2H414a0018ISW04003fWXgxIeHx7820ZY420010Yi20WH10SWK4A0W0702401ekR385a0S
+Aj1FTR041G9A021200Ce48G204008010101401WI0G04000AX800GG00GsR6G1088Cy7u3X0
+0A0Y0G0GGI_6WG0820H04000GHWWIK2We00YG08Y000G00K02Wq@D00GaGMv6Wem0WI0W0C9
+41Af40G0XW0aI00W04W8We480X841010G4G0000W0WKW8000I8000Ga10W0040GW0019G000
+W041040002G0200100aY000482H00cdfJeNy700qNdBk10GC800a00W0004000G8000e1e0W
+020020mWm800000H10WbjJ0G42Gna60208W8W8W4GW04eWKa468G00A0H40004GK4u604O00
+04101C0000800u200718Kgl1G00480K0WG40G003wgv6000eWW01Xe0W680401@dmAu6K@l1
+0@O0kPN20H1F000840005dg1vJz000000K02G802m02204G00EWH8000C0G22GGK40Y1CKgU
+2dZQ0W020800Wnyp0e000000800W00200brl100040G24SQy6o000ATFXNWJG004Hw@600Y2
+uGR96hr0W088f@R01401c1400C00018A0GG40G10000ObGoJG00000NXO70800u5000W0W00
+220KB2000LcGB0H9P000G20040eD0002ylq3d1Py@00W9V0P300WDHcYt0000Gi18Gmc8qx6
+W10wl840000422G00E0008mtuV204000W00Wu38088z2wF000G_B020G103W080et0000wV1
+W6_D00WoE8YdPG4V0W8_0eAt100020eiZ80002n320rjRWi30Hu300PiJ2G5CP1WOt20UcXC
+pmZgmh7LX70WMF0WYP0toJ2008F21@32UIsOOcPoCC1W2A0CggF044000020006000g0ZPg0
+aY00Cc1009kP0g050O0sPu2yJ00W1100C300OC0002W106080L0kP00uI0uOw4se9X4fDmG1
+000m000W1W003WL460A000MH00Wp000Q200y3S0W0ud11W9gTS6000G000u28Z00mF300OF0
+2030006W30k0tvg0kp008j100kB000G00008m6s0MDs1bU10Hy20qrFdt0010KLNd0OoE00h
+U0WIVW0008BPy1Kr100E00nWrJ00G4@N@900usBIX4eALXJLg2N08di0W7WY_FHG10Fy2G00
+0400qV04F4G00N@N0H0Gts6K1F3jWRGkp9KjFCW9P0woMbQhLPeV3ARpWhmhu6T6EfEXvuCu
+My7000mcxP2VcxnshISc_3bidGqIUqiFC0200000xt70Ft2i100060008vlRmZQ90000fNU3
+MX@1W008ZidmcnI0mm0unWGMclYK@bevV3sWt020080402Y@t01020fmd000CA00G05YQm8@
+6Cvk10084sld100e0Jqd0000A600000A0000G0W0eu_F34001800G8j_40C0020G0ODR3U_F
+1O0414000gWF10200dTa0KWG0mG81000901W0202489g4080000O0W400W00000C84N7P000
+04W0u0010G82e0G000G0O0001G0043G0G0O0Y00aAc100ex8012W008W028200004043jfR0
+0G002010004004020400vfA32gt00018@yQ0820WyGJ002X000G000WG001A0K0G15600013
+4H06080000W1Xk_r0000WW1WWtYt050205nR00W02180000m04G080004080040G00q08000
+A0500Gz@l1WpE40021300G06H0021018o00GY000000e00G08004800G0W04000W40044Bk1
+NRQ002GO000GRfd020408I0G08000GW0G002uWU6MtFXKwD000W30001O00GDzd000048010
+00Ae6wc10013t@d0000E7102Hhbm_@6010GupV6030GiNj1X@p080WWhkVuH@40220iSi180
+0GEKE1040080G000028000S@V6_Do0000I000G0G021G42e2Q900Okzdu61IN10200001000
+10A_tWByD0G000W0We@@D000a0000800GWG010EuF11H00400000I0W00G00GmGww9C_P2Bx
+R08000W0408000gxd1XP2024008800iR29@ed0100aQyOOJz7000Gqgj100802WFXT6I000G
+000m4000GBzPGyvC00028pM32lqW0xJ8Hw7UWp31000nudmte6al_3R_RGOz64Uk1000JkNF
+10O00Y002wS@1G000HsR00008002000W0wly100DuR@vn4yCaQk4Ldz010000004GW01Ga0A
+200411CG00000082Y08008O01G100013A00GW100004001G000W800uBQ300K0K9Y14I1002
+Z02H00Og060rE0q0lA40100000G8000900mTu6G800G000mh@600Y48rU300Y0kRl10C80W0
+60qwf10W005W080W8G0W0G0070H0W08NBd0082WPSDG8GWu@c6qF13000G830bqBe1Xqd000
+5Wqrh0100GSe600100049004H000G0000W3fd128000G80100AH100GiG00b00028220G108
+02000502028000Gfw_J0K000W0W80a00rsP00000a2WW208be4H0anF300EY100G020KY200
+84002A1000G40sX73Gc080I90080100500W8G010G90000010be4100WeWAu@4004cMRd10K
+426Vt000042W8G001Y04G0eV0300G0G1G0O4V6800000040aaWG5B6SM43WI3000GX102000
+Q8023Z00000WC10kql20WG20002G00G8BG000083G02B0GW208110014080008X0my@60W14
+180W00G00W0004WW68085G4K04WW0200080028000Ycwt00040Lad00800004800000m202C
+110G400000a85OGD60GY56CeO2600WIQ23803W0060WW90Q0140W8W00C20000Y03e60000G
+K018u@4w@t00W08xXR00W4YY_D010I000W0200WJ@pGpe6y_l1NnQGAl6a@V200MU0O10CDl
+10010g1WX3WhuTV30a0W0104OdU3W0000900008Wmiu60008s0024aUH000C0004W00jJ000
+0L3m40000mmtIe4E30400KLP2vWR008WU40000_50Y5d10000W6HYT2W00fN400020211eql
+DeaS3I@@1qB0W00KJY2s0000nEW000mBqo4G10vl0400004220dxR00uE000G00004100K9S
+u1000Gbm3Gr8mJugC340cLD3k120Hy100y3mg18Cy7ohx1p100fM33gwMT00000Ax0EzmWP@
+D00Y300000O6WuHUR0t050Q2kPm0yp00eY46k10008040O04Hm0Oc1Gap900Y000A24Y00mS
+mDGP0005100O04000yZozF100R061000100mFG006WVMwtR4Jk1001W104000g0n800cp000
+d100u200e3u000mF0200mTy980WL7000GG260ei300x60YSFWahCGrg2eg3WAX70y5ad0s10
+000Ks2000000nB0un500m@poF0wu0eVib_Rxa9ln88@7Ept0000WI700QAmf4eJ000404W00
+G0G000044800S_V2WC00ow7ZxkDemx700Sfaek4ZmjHYa9C1k1LgRmzw60W0mG000G9GF41U
+2ZWd0000YYqJu7@J08i04nT8XxDpAy6G040vSR3W050q8V20042kx73008GXhpG9w6000WBf
+06Emz40002ljR000WYymJ00080K80000W00980W000002GW004mxw64VE3bVQmvj9000OW00
+000W24G400bgRmqK600020000qD_600838wV60WW0ilk1jpO020WWsgD8lw400050000G804
+GBr600000J00mb_C020008000H4104405XtR000a40G200012800eawg100G01112CqZ1250
+151W000Wm0442110G108100808C040G000fzS340000_85ePg40020000GeaC3_@F1060WG0
+0GW01020040Y084400G200200100W0AiJV2hDPmw@600G04080e80O03m40rwP0WG0180004
+0X000X0006H000W0G01Wh1C0088i28H8W00C0MWGW2G30W100A00W1GX0W0G0njR000G0000
+Ky600ELEX7rCe6N3wgt0400G400100W4Crd10030Azt0100G2e08IAE11G00XpR00W000440
+hYn0000WsWDeRV600A080408yU6UJAXn_J0000KI0600GSe3P60040Sjl1XFOGx_60400W00
+00G00018000G060G00W504Ok@4G200iCz6DPU200mY@eP08G4000030O10nhR0Wo4WSrmutQ
+62@NYYE3f0y4Uo_1200020010000ztl1jCRGQ@600W00410482000H800G00040008001004
+ar10Wf@b000400100200arcdGgVIq8gAVg@G_u9a6l10G00X86W000WGa00OV7CK6i100000
+0eNLK76NoRm@w9yKH2ZVkHe2UaCd48008o1s0I00000820184axT2LsR004120000WwF0ECL
+YLyDuUT3Q3VZzXgeix700G0yLe1Fad010G080W000001008208200We4004008300cH01062
+Cql10H4008F0GO0W0m00C000st_bG0000G000W00G4W0GcqFXW6Def@40008dEl7tCoG4CRi
+zg1GOO8W020042W100084142128WG4W00088000A0W000000c2uPe1U3002000a000008014
+Wo_IuNU3YidXPRz0048IQt6W0008uO9ghtWSmJ00W08200WmmJ01G2vm@9G9000eU1Gu@600
+0a200e020000a00K00000a0G1500080W0K0aOdD0i0000G080000I080e40GUfO5tpA1080e
+X_JOOR3gitWr_J0G4H400001e10f0m0000000W2K0000W04000WWt00mxj94pl1840000G0i
+rl1200Chat000W00WG000100W40010G0000XGgbeHN94C03aVK5000004W0yDY1F_pm19904
+00000180100200000y1x0c1HC10004cWGO080G00K0Y81000GGKWNfQ0W000m800xtR000gW
+vQhecuGAqF10000I008U9AXOzDuKT300000081uVJ3_st0WK10T_dmxf6G000501GORz60A4
+4eJS3ArtWCeO0800K6saWO00080PIicCS@k10G40o1tWbpD8v83i20100W0G200GFy6KFk10
+008KE004_l148000000Wm80G40q023G01GG30001400H4Bd1x6Q0W41000E0004W00jI0008
+jI1Ikzl20MT0d@d00S700WF0000WaT0mrgV2W700yB00008YN00200Wwzvtb000e01c1026H
+4KO60u100Cl_3000CW100yS5900040Y80aus300100000X8008MS382000302XP06000CiK0
+e0000000JvuJJ04000P0P0H2o0YKW14v0QAo1q1e3e9G700WE0aFfo00y6O410uE3006J0c6
+ybWx10ex10SW3Ork70000GPB001000ml00yU0Weg0ARSlup0m300WAO06_t000Fy000LXPc1
+00@3Yg_74uXF8m3F00uV0uF0OApW0uuxME1FXTpDuudPQ@d1000yc000sdRczSgOmx7020W0
+020000GovJ6qPk4pJoGIvC0000gQS6UQsWf@D84T6oClYtsD8HI3IF7cmaK9iT3_8d1Wp80t
+_RG9@C4kE69FPGxxC0GG0e1zAkKt0G0G1000WC100qYk1xe@0000YdunuxT6000mu300OnSX
+kUdXuTD0000W002020207dPGdz98801uAw4wNqWcuDG180000008048pkPW290W1gJ00Wk10
+00A010000048000bhl48K0000200e000W002000G0200A000H0000WG40W8809000G0W0000
+2QUpWmbD0GA0g00880I80GG00e00000805100W1802n0004C00Mrr0328200K0Uut02W0W44
+001W420210WA0G1G40WDwIOB3305h3CCG2G000W02WKnX1GW000W0A0100000X0004080000
+011X0080140WW801HG000006G20000WGG100000080G0H88000G020e00A00502422W0W41G
+02diQ080G080Y8000WG0GG0020004C0G4000700000800G1W00G003W0G20884070A40X008
+W168000WGQP9G4100Ce0000008G010200G0W000G08IL3WG0000290W04GK16KGc14W10001
+G0002000F00W0001820000G090W0W4G00004G04W0Y0RFQW000WefD0WX00020YkMDG004mR
+@9qtV20140wipWe_JOmV300B0000000mL94G8WnjVuv_4Ywp0200G0W00000Y8010W42000G
+X2WWW00042G0W2W0000828mEu6yHk1psR0000mfgJ8HR34000800Hu@V600G0Lml10GY1E2t
+Wv8J00G0mr_982000CO20200WTRm8bQ6sptWMrDOkU342Y0LhU20n80AAt00920200GC8AYm
+W00uRV3ctt041208000G0100400S7H3010300G4W100mYv6CfK5000W000Xaol17@lHqK6q6
+E3FsQW0000200W00040X80yDE30m08gnt000011lR000GWD3I0006018001G12RuRm0y6ieE
+3N_dm4B9008mj8SFMEF1100Hj@R03G2000088WWG80404yl1pn@G3z90400G0100G00WZgJ0
+60200002000G2G03MktWjxDeTy7YTmWC4C00000Oi3WmEz000WmVr6ihE30W001808000200
+Ga8020WDeCO9V30Wm4G0G010GG2X0800000200a000030080YWm044G0e0G001WX0Q0AqaZ1
+06a100020924000W0040Xg2J0n0002000000K000OYMqW_jneoV3GW0280100040GXx60W06
+0004W0G10000HY00G0W8C80G20H0W0H000000H0G100028X20AXG8W840I01W200G2000310
+4400000e00a030e2O400818C82I06I88050I1000021002xdXy_D00a0GlY600WU60a0GmxF
+y9V2HkdGud6ybj1848200HIW0YuG90I0c00H8084A02000W84Ql10080042800WK2010000G
+90080@qR04G00Ae40aIA00WI40010000e40200846GK2G0A@FXyAD0001m5N9y@l102Q000P
+420b02000G1i9aUV2I0000WI0000G40004I00040W200W40200G900W0a091K20W0G20G950
+0000I41ek@4KK00W02418X0mQ660001W2G4WY40WmmJ04000G900WOM00Y028300aPF3W400
+wntWbyJ00002i00010008W00G40918041000vK_90008iX130W1X0022QVV300XI200800A0
+fW4104e09WaGGAtt06000n_R00O04020009000A0080240O000000GG02204C1508080A0X0
+008082008000140oEbXc4OO_V6004nG060OuL3gn8XurP0008844005G030W94041W04002E
+00001628XG182208K0o0Y8208I0002000481400000082G0400040GWO00WO0O0LI0C0WG04
+0KW0000802100400094080000040028000m8aJ08000000mYlJOt_400000OcHCCO6o2V310
+035id004A1W0000804840WG00XwdK3cxt00GF000A0P200qRk1vWR0Q31000O300008W0800
+0eN00000VXU00000r40MubX4yD8Hy4030000010000EwXh4W00vM180I@s00100018HUCd10
+00z40000e90e4008_F3G8004DW1UXu00000u5008kJ6SU0iJr0Utx_Z8yXlA0eR0Xzp0E000
+000_0Ax0O1500n030YC70um7G0004Y700g_E10400000L9EGP308YlPS300GRCD79W8_00GL
+1SRk100000WwG8_00ACS3Y9t0W3KsH0R000GC000L000C0A063eYW0eY1002000O6000300W
+CW1051G8K1ao00KY100S300W100WAm00006KatC000G000G5W8200640P@R0ehc8000J000T
+0C000ypG00000W90WnNO0080cp00e4nD020008040A2G0e2Cp00Oc10021008800WA00020p
+C06it00mV00000yxl8Ia800000ai30BP500gE000G00e0015xSb90G0100Or20Wi3Qt00100
+eAS0Mz@18gA0F@d0000Kx300bXt200MzWtDuXS30Ax1aMh1o600_ckbEyJOuBF0000000cFr
+Sgg4sWUsIOdw7MzmWF6P0002O@vI000WeMS3g0qWbfJegO32lcXWGOu9@400W00001ScS940
+00siU2Rqkny86KqE90000100GwH00uhT6000G00018lT6wB630284Hmx1001WI@JuwN90200
+0G0WOE_4MEl20H000000004n65E9hEnGkvR00200W00Qas6WW8000004G00WF0D0YG0Gcx9y
+ag1lqOGDs6apl1040000002G2W10GeLbS60049000000K7WceD02001114W5fD0000200Gec
+pDuYU302010008080040A8802000WO000W100402002090001W08prQ001G40000850Ge88W
+A0W0440W2G0048008011000820KK118e800004W00W000A40412000X88884W00Y000480D0
+W2026010040000G208001aP00004o0009zRG5y600400202GjT904I008000WG18u00g02G0
+040W08000080110112208FSR00002000mDHO00000030300GG0WKI0G001G42800G0001m40
+H8012G028W018100W0G400000124190000mW0190O0CG00G08WB0K00G1G8400008aZ00100
+008W8G00000GsAlV3G0200K014000818W001004000800000W0q4000W00040CGG080G0000
+00O4G02020YH0A0o002004000061001X00O42000800A0G00000e008C08020001000200wp
+8100aGndd0W000W008hzRmb@C0800200WA00GW3zCu@V30mW0arV2vtd0000a1@DeM93004G
+0090W4G04W048G002z_R000800W0000G1w_tWl@De2M300002W1Gu3@4EJt00100W0400004
+00G000840020000WaG1000000WY00000W4A80XH_DW4000040YJ@D000W00008P1m00412Mw
+FXbkD0011GSm64ka1lgR0080WY_J008O1010YdYC020W002X2100000028cW0000G1102000
+801W9GXkd08000WWG20010H002afd1020W0002G008108G0A40WgxD8wV3000GC0l10800G8
+000WmV21W8oEy6KON2@KR0GY0HHW00vUd00G400W8000W4100I002340018W0800WGao4004
+a000G00248a9000W0TD00000m00Wu@D000a20G001402030W80002D04eZU3cvt04200LR62
+Oq2000000888010000K0uAy4MMxXUxD8yK3U@t000010W0WsStWp1IO76340200J84unV300
+G08001WG809A0W00800ZGP0J00WwHIuiTCsdt00W000008P10000W81GK00000ajzJ0010my
+_9K4P220000X8Y0WCo49000106WbYD8153QGD12000240Le08G800000538000012G0A2169
+0BC05K205200A840L0aCmG01G1081WW8134Y000082800480YgLsWg4CG0010424XqBC00Wl
+h07WGOX4nG2000WG1ivl1Y20I02620K492Y200880WaFCW0410Y40A100JOaPE0G04XGK040
+IH8026004CIY8018AC4XO0YG04WC20W080840a81nA28206m0080GuM60GWX0X4Z240158H0
+0080200080L010WO0000204KGWzNRW801WR@D0A02mw@6820A140000L600340e000H2000G
+e0eYV3000ACci1zRRmMr600b2080GCY00800aG0A0aG8GK804GY0rC310W0220280Y0G0H00
+02Ga0000PH40Af4088600W20a_j10044H08A1800GS0005Y5002042G104G9801bK20641I0
+H941004nCGe4000W4000A000W0Wy0C0X0e0000KK00XG4HGeaI0848W000190GG400Z204WG
+080AH90206482b01404Wf0G100J2W00bK20G0W4000c00000WO0402000sSaL300G020W20H
+0f450406001800W0800005002410I8G14O0W8W02wyF1004G00040eX0X0200OW64180WjED
+Ox_44600inl1440000Gh000CW40G0200001K28000000G200W004w008W00WGW2bG24G0001
+0000A0425804G000202520010m8Sq@4000X180001G004m40WG00u4C0000408GG004G0108
+011O08WC40700002G0O18I2b6G144ee330OG41a49WWP0080W200a0tzRGC@6004W9GV30RA
+480W220002100000eWtvR00k0GW0040WY80205010Y088M000042o0C64HqoXFXPuP008010
+0W08O220W084KY08040ONM30O002021H240100I0800020G0_os0065001WY4040000408I0
+0042XB@D00G1ud09CHl10080000mWp0900010010000W8P3Q000000K000W0B1400q7d1JjQ
+00080W000GG0082g0y@@3e0806yr00200eF0004WlC0h1000YD00W0eNWJ1000mN1Wb@D004
+U22101DG@4060uz2G00G0008010wFXG00wBjVRGqj9800000D0000bLqF1m00vN800W00001
+G00Z2800ac0zA141GwB010010n0000ez0400WQWUI0000w500OFU30aD00Gs410s0Gsg6010
+00000d00000kIr20Ks34p0WoF05Zn0GV580000GmC84V0Wx3bC3p8h5jKsCcniPC3yF00LL9
+PWoM000mgE9ytF3Wqgu5WgY300qVr@700010Ks10000ai108P7000000aT082@0G4_0f0z1A
+ROZPu20YT50sqB0cLL04vEG1000jkwW8_00Hy10uo0006300K18001GAJ5G8300hC00GJ000
+C000O040m0C@e3eo00G7504SE0AGJ0GWA0d0C0Svw0yp00Od1GVu60000502200W00X00841
+00000WWdn000M300S3K0m4mA32WH00WO000W9000d100s1E0m0iZ01G510G6000O600WA00W
+T030C0sHO0m000m51002000W1000301020A0p02H006p000V50mK704Xl@000ECW20Wf0yrS
+100000Hy10Yu31n57080Gp@60Wa300040GP7P000cg200g_tWFsD0002Cr1000G0100mA500
+000ue500W8L3GLY300PybGQ26qAz308x08Y8000002pg200S7JX70oIE0YaP0mJr00LzW300
+WDMg30000mgJtpW_zV0W00KrNRymF3pzRmC@F0oe0ec@4Apk5140000W0o70ZzcCua@4wm_X
+j_D8f@A0040yAE304G8000WuA00OBN6g5BX5pnOLz4000G1200OUD6s37ZtsmuKxG00002GW
+0000DP6p6Kwl14000lAFazlDuSO3800GC6U2NypGFy6iIS2Fn_GUy6KtV2Jbp0000aNnb0qc
+1G@1v06G0enWD088043d100eYC200qsk1000G0000dPi12005GG0H84009aR302eg0403400
+W04G0000G8001240010G401000Xg1000X00jgRm_S6aLV20WO0002100W0eVU30400LdN2jF
+RGYR60X00GG00mKv600400A0mm@K6000448010001O0008G1O41200W0G0a000001002030a
+H00C58m8K011A49W1fW80101400GAlo010GW05011e0080010020000yxa@D02J40O0GG020
+WlqQW80Km7@D0002uiD602010001GS_60GG02041409Y0082W0050080WWG644e030015O11
+040W1W1000008020W0CO00002100W320e0040k1020001000602500GY0fY5000106020401
+0G4040G58010014m00G4e04I1f00808G40a000WbA000040004G91e10110201Y0@D08X0mw
+w68800280G0W004W040W00010W0KSY1G0GWWG4000I0011W40G21400G820G0C83K_l1@URm
+i_608W62G022G040000W090000G01340000WW02K0008E26G4W0I8W301088foVE6yvV2G0W
+00000000WtO00mk_9iWV20060Qtt00W00ronmsu60000cY0080002000YlzR00121818Wf8Q
+000W00088F_R0804000000C22_@t0W480Tsd002C0G0000002000YSCh10G44QcrWwyC00W8
+820C1XW00PxQmw@FaWl1bS@G5rC008004010G00WDuC019000080800200100820220P00W0
+WCZ001a11C100000WW00e00000W00140100G40800020110W00001G000a82100kMFXHSD00
+K0msf6Caj1Ym70_@l28a0000004H008G0W0100W002WU@D000W2008W7zC8Q130300000GG0
+08010122802Rxdm2y6K9W1020144400010004210eG82W02G8100W0YG00WW4200A0200004
+j@R000108400004GC80610000W244000A5100NK62GG4WKmV048000G0401000W000000Y8H
+040G80210aQtD0G24WC00040080004108WKcd100010080W018G00009018G2G4m0100G40a
+NW1000618008002008008W001000W000Mst000XN7cA100G2000O0K09hTtWNyDuUU60058y
+dl1dfp08030308a00OA00m20WIZ200G44O404F400W4G8408G0IG21Y40K4G22mK0250a4Jf
+yG81LX808W0000808800G00060030Y08HK010801W03GWG28J42GY25G10000E3WdLb00300
+1a002e000000W5010080G0G0Oxq9080G002W8085000500G020a22030KG40m0a8kG281Xa1
+50nG44202q1Y100W69000WMGWm0G4W8200Y00I880304GGg0GaG10001A003K011AMP68gG8
+0G00WG4I0032000020444G021WG0n080WX0W012000kW0GW2xh0I030W90H8G000024W0Y00
+00GuMV30WW120026CW440G624G00G4080004G7e4010B1400B01020W4202GAH1000Y00058
+2020000K900K9Y0AWK20800010eXyDW24A080000f4040408YIG6tl10W08W80AH109G40W0
+541WKvC00GaveQ6ih@30m00G0G0X00G8CS3stFXDwC8kV30WG00GGI00004b00AI100KW001
+20000b0080P8080000b1n2a02000020I8W0080aGqzl10e00000YA1e80100210004e00480
+0080004WC08400P02K04000G1GG40WW0000eP10000o4_V00000G1044G0G2900001Y4Xk1X
+z@mPf6002L0G4G00004P10002201000W01WGC100W2G0W0200440C000W800010222000000
+Hm00W00000W010008a000C00040022G4040G20040G08000m00000WYm0W0000225G0GGp68
+F0Wu4Z70000G08W10G002G8WJ1D088800000m4AWm800Mxt0040004400W10A4001W0WY008
+08H008221_Lq0n000vVQGrR64gZ100W40040104000W800G400WW0e48019A88H084Y0mWW0
+I0GA0YLzR00002200000a0s@t000b2lGY1048000100180WG0aSm@30060100400100WW000
+8020H051gR000800G9n1TRGsl600Y3WG00WNe71000mvWR0G000m41000n4Gl40300DPtV30
+40q20000e4mSkt6a8k10Wu00004u50008X0W200W8mD8Z@400S00000b800000400040eL20
+00e40W00O@U3W500Knl1000wX0000GJ00000910800GS40004y2_1W1_30mpZ1bL6GLhEbgC
+00LT00hw000000B00aPaB00O0ei50WK200oM0gAk00bT01Wg0Wxg0Wg0ic93KMP0LD0O9h00
+Io1000002N300FhN102e0000000sOBb@10yx@00WsXX800000mUP7Ges6O@@0IsC3Xu30RT7
+GpvkP0L050O0cPe2KH00Oc100A300e80001010L0c8L0OG00mG000Z100i600G5e0GH05460
+hC00K0000H000G000K140W1GbH5G5100L6000000ujBCd000Pa@@D000m400010006020D1K
+HG0uQ0elP6006WG4C0K000e000Wy1IWc0H4k0C400gO00Wg503yB0GP7WW_AWo600MT00Ax0
+00410Y800000X@@300Wl@k300WV08o400bg1mCsDJ5g3G000ei500K900YJ0W2l00yUG0W_0
+Axx1Or10mg30W000uX0WfIn0Y8300stN@300PdOGO@6000ysUS70r10008Qc20Ok50Kw3000
+W1n3F0000mdV004G0gyFXX@P86kA_hHY_yh00006R00Wfqiv@Q6smE10004W0G0onMY@_DOx
+V30800SBj1W008QqcXXnP0002mZs900emfBT9s8F10200W200oH@Xo@JeMT6AMnWWdUO9EF0
+040Kk_6W008kxF1WrF0tnXHwx6S7FC0048ENcXvyPe916000000I0eAW72JBXpuP0000ab10
+WsvbudW4MFWXOwVORJ3sxt0003GHad0008YuND0001Gyq600000G02100000G28jfRGWq60X
+0G0G000G0120Y083XQ04H4GW080080A02000041ulP300aLUBV2WW0G02YaG40008G02K0HG
+0040G00G000W00G4uV_7000Wi9l100A2sWmW9uJ040000X0K10800GW010800G0044I00000
+83010800104002K00404Y400YH000M02B00Y00012X000W2100H02G4Y000081W2G0400Y2X
+0140028W80000cO20m014012ZI0500220VtR00128001000201e002m00K00280104008WG4
+000180000040404G040200220G0000WWGG00G0000814W042050W0CD2040000a008004002
+G220000G22K02000GG5x6041000W00020msuD000ZmmQ600040W01e00012600W2eH142000
+0G00005_904414041O61300020G014040004m0C0860004200100Y00H0I8240080028X000
+0Dyj1G200020000080800GFz982800022200011000ZYPGqp9a2a1G06W00W0040H0C00i20
+00q40h02G00a88300025000Y050yW3000800380080G00000G018W00000sb_lF10A2G022W
+020W0801020100020W028010GAzl2G0X0001080m20O0004018G04WvHCOn@40G00C6j1828
+0Q181WG0Yp@lHa_6qij10W414000I081010008X28800008040002aqj1828G0WG0C8k1000
+Ys_t01002DgRmz@600H00000oQr6yj@3000GEeKYS_D0804GE@60W8000W0002080G4800G8
+H400Sak10010X8C0100WG0820000G40880W40000nGGYW000210004H0H0neR028822000G0
+0G8000CUl1nEAnfK600G0000228G400WO0LQ@m7_602A0gff40000GG00400WmTS6aHY1000
+WW8210W0G42m008100G02WtvR04002082800G0080000eJ604a00201W0040080XWG0qsW10
+28GMEt082G04I8019a04LR2FJQ00004004G88020002G0G08CO3s_EXr_UOHH3kKt00014W0
+21AhF1041040010302csf10001882G04400000900402W00W1000rH20000000WY04040806
+08400W0W0180W5009WW00PE800084W104W081gao4Uot0W00000W00040004WG0000002nmo
+D00GCqqx6W000G4W0000G8W0W848G00WW8048m0BH00404YFSC000010Z048WA3Y02b0Wem0
+00800333g061Gm288Y90Gmm014GmHGe03000Gd9088X42X4400XY80Ca40K1M2GH30O2W281
+neWX01W0om5E8b40350@6R0W00800140000W8W19800HC19W2214I0I1Dgp040000I30200W
+000000H09KM640002000K0108600WhvD0000A0WX0408YGGW28AG0200003qG284410A2e0G
+nAW1142G20000CYeO4100W0OI9Y18AC0HH8G00n04g2G01C20W209IfX21000282W165O810
+WTjRW0000W00G0W080800GG004W0Y06X00YGWC820YUwt040XfGH9b08208X40g4@40G8108
+b21P02W00200002000b0008A000YI0400G400100O8001W20W0000WA040H4WitC00808b00
+0G9D0W0Z000GAX081W00e408W20WG1K200W0a4H1b00082GCv600WK8Bm7G200000049G090
+K2ethP000WWm0044G044002H810qQk1K00J1004W00201cY02KG10K400a050e1W002800WG
+830W000000XWG100GG48n404013Q400G00K0508W0400000E0051HG24G0G2fKG0010GH80W
+0OG00aG0Y4608000wzsWw_D8rN90W6GGC020140m1nCG082100044G0000a1B@R000u09062
+006H10003004K44106C02H00K030O008I820Ga10000W01600020038800000a1G0G02A0G9
+0010080008vm0000000a81W00001008HW504000W01C00000041W0W08GG4WWa0y3000800G
+00W0001100CG44A020004IkCM20080n@RG2x60G000b8000G011KW00g08b8W0010I404010
+40G0W8Y000W000H24800WG84000884400A1G0KG000000CZ340e0WNoD00020IG40008G481
+Y01000G44W4W8042G09040G000IME150000W000450G00221K240048A0008A80wMo00G@90
+40mz2G0CbZ1W10000W0WUD040eQ2a0W00400G40u4G000mLe704000D1H0G00200010C5W00
+0K2m400G0G900004890000W_90000_2000SFHF80G00P2000G1086W4GR00010ReHQ30004A
+01000D0mavF030000m500G2Gh000RBB1000Gt300O6ei500000W10000W5Uu10mCpmCJLHLL
+BYggMagLj8uXVHm3FL0uV0ul_Kfg411g0Wju30Ki30vS72WfEWY2V8YN0G4l0G40000gYB0b
+1G082V80cwG4F4W8U10Ks20WC50mg3WP0Wc02028R6WFU0W9Y0S70000000pE30yn7WNuJGw
+100000Ki31000m@0200000140WSMEu60S082udX0012002000uC00060W0c0N1S1CYu2O510
+uC3W2O605mP0A0NWN0k0k8O0SH00qH0005100e200e2W0WA06YP0xC00cP000000SaO60003
+000L030g0KHg0ip00Gb1002300OC00G501WY0A4L0K800Osg6Cik1m0G001W10002000K400
+0300WP02000OO8qgT200W0mig00000Nc00mz@68v0WY_0000GE00000K7sw50G010rpM00hE
+0g200103000t105008W00v0000O008YF0ObL2G0xKW_0WGy10A000S56V000W003@GG4t1qv
+i36y3mAL50ewF0WfU00JTC1cwY7Eyzt30ukRrmbm4o6iCl1Yut002000Hyz700WmZtIKQ66P
+njnguL00GTy8yGIcRZKmDu5RFcOJ2000W1db0004WwiDOjS3MkEXepP0Om3GzvFCPM2LDRGR
+SLSbk101000800iGi104G8wP3cbnhuMS9000WJG00uYyDUDNYouJu6l7ARdaZtJ0400m03CS
+VR2XnN100dcmub0400miuCyoU2LpdmVx9008800000G11WVmDeOU600100W00W00004HG000
+08G100L000G10Ku5z40200StZ10504YCF104214210W00X0000GK00mda60mZ00200000020
+8G80A040000ybi10080010404000eG00000apfD0m01GY@60WW000G0W00102W000A00Adt0
+0002lyR0412G2000018200H4002204a801108840WzLP00K1K4GI02KmG428C0G001080WG2
+8GW04000000410280800W02112WkzD01402000UW00080G00WW4WG00000G800000G8W0400
+UHo000800WG0NwF1008X0000080W20W1uGT30010r5l105K0020W0100000m401000005080
+0W81000000Z004WGM00G000e00W00000G10o2G00800Gm0G0004G0m4Q01W0m000000G8002
+8eW00OW01P00021300G01808000UU1G080000008mYW00WjuC080020088800280000480A8
+G08aS300I004K0000000W90W20W00HG00914oH20008W002ixl101100000_ji1u050W0200
+00eGG20000W02007001000G11AA08tx4MmF10130vDPG5rC0oj000002000P00000A00W400
+040GOU130C00iak1nyd0802Wc_DeRH60L0002010002Ju@O000Gy2V6010000410W0A000GY
+KiP04000086000081XR0008Wz4C0000E900W0tDOtw4GW10Cvl1BtPmz@6awV2VgMHH@O002
+00H00m@9607G0exQ32MEXVFC00G0000W0090G00000G6f0G0aOCS340GXH00000Y00020040
+0400000GI18001OrF30980y@F30204G0004LQ50201H0002200OJK9cQn0G0804400000800
+048Y33sytW_9POTS3002W00m0OuU30300n2W00G0002f110000WXK200020W0H040G00C04G
+G00JMzmvfL4N_302000480qDk40080G020A0009oV30W01004100100C10W6wD000010o1WK
+bP8gU3W020G001ei_4C5000H001120000000W0108001103yag49VkH8_6SCl4G4000H01O0
+eG0Ce200400o02048000004000Ky2V3A1s0i00020W0111J00024L001H0G2Gm01A20082G0
+W1O0G02000W6T1009O0800044X19OW004102YG5G20hspW80WWXLJOx_7010W80008YE32zM
+2000202G84040000OAhD3088410WGW00X8W04G83002200W8002G0040a00002208406S401
+5I00KO0qCa409c20283002000o8400010W3hWHG0211GWAH0KG02m0100u1634800SHl10G2
+4Ykl2280400e8G000Wa00Oh@74He000b4500K2G8H90W0J410We40O8045XI00002mC0e400
+4000W200000100e4Y00WEbDG4900WKYeDoC0W0000048000y64G00G20G9b008m000K204I4
+07Xp0000001200010g2FXJ_VG800GPiL0000510002W0000e00W050W000028002X930W00e
+02@bQ008410000IG00001AK9j1000G10L4W05o200202K0203000W0000Sa320A5X0G02K8A
+220080050500axj100000G242008G00GW082WB_39h@700CO20000066008000P000340008
+80C4A004003O4W3gDe_V3G0002002umK3030000000GG021000001G800100000qWB280GGW
+Z600000G405W00WLzJG03200G0Wtbs00G0op_6ynI21pp0080X_vC0W020000mn@D00i0u0m
+608110G2000W400W004900M@t0IY00041019008H406Ca80400G000OEB000900004000210
+0G001Ee82000ViF110002008YKU3G400W410c_nWtaPOfU3040qR2001ulGF1040iRYGzlR0
+0e@2400uU1W4I0tWV@D0j08000a0q30042OJAcm0000S00200e8000OY2z10010y500000I9
+0000qB0400Wl0m@pC00OA0100Qd09KoF3rqPGBwL00m1Fl@400z1WSo10000QQX60000KW10
+GXx6010O6v00000AR100000Wg5WgYB04L5WmZB0uMzehDWA00086AR10uz200004mg3Yu1Wc
+P608YFWhzDmNV1m4rU000K008YVKsO00C000g0kp00Ob100PnP0c070O0CHm0yp00Olrvl10
+00L00063mGW0WX10020WitC00O080e2O5H5W22005400000W3jX1GC0600g0ZPg0An008b10
+09mn080keAnJOoP900H00080SMR9000YmT000_m5d00AR1070B_R008oT00000Qz0AeF10UF
+0W3V0Ljg09x00000Weg30G@204W0GGfA00GL00002800G4000cgYA0GnU0000e0000bDsX8U
+1004fCOm0y9aZJ5bM@GsX6KQcDr1eJw05jLD3B6a300qptoFfHQ9Y3@X1xKvtRO2a1Z@vWPP
+FCYFFX33o10008g00Wf62fE_MIQtWN_D00K000W82G00000Ae010G00WG8HA30000000mvG5
+30L0WCgk4Boa0000000@cXkb0000aaPOe_V30L00ycH8FzRmM@C4Hl10202s8b10080010Gc
+9qWkYC000Imny9K3W1P5_Gdz60ip0Of_4MP0Zj4tO9GC00G001004080Goo600000m020G10
+O101G01G00040W000GW008W00000S0vuR0800aXuJeaV3020011000000El10WzzJ0G00000
+0f@@bOfT3kpmZIzh00K0mKf600O08KV66UsWLnDuG0F000000m4xW03AVBXH@V0m10GQ6yyn
+z30W00000G00WGvAP301Y0Kpj1BvpGRu6yHF30H10wNvA060000HWYxsW6sD0110G_49qAl1
+ntR0Y00Wd6Pufp700011I00u86gcft00010W070_uE108404040_2t000WO4400kwtWiFIOP
+U3_B_100T7BsSrmV68W01W0Z80m200000W00801100E5b1000W00280013OSJI0Bl0ShbA5Z
+s2X0000C2001018202120000mW08018W0GW010100e08680mGS00401Wi_Du8V6YcpWNzJ00
+00fK00WEzE91rM0008210000we0Ym904W8200X0908180490I00WG1W88Ga02040108aA008
+500C3W0000m20FHQ0405XhgV00m@pOHN100I000e420010000K0020041G150G08200K2G0Y
+G4825bG809980KYI0002H420000G0081W2X000X02Af001000A40Z_d0G30W5SneAS3AL87X
+G800W0W00C0Sql12380000Oo00001Ge110508GW8202O00140000W1X1mBB9WWm00100100W
+0O000pPd0k10WOZm00Y0mOlU47y6PyR004W8W000000Agvt00530000G8WG000200GFY0W01
+02500rPRGCn6G0000m00a040Wa_P0001NWCpaMC900G4Qut00W800800tGd18020hnRmK@60
+001I100GKoR0es0uXdJU3s6q60000m6GO00080QuXV3040qh0201wlGlR040a@2G0000G880
+000A0100W48E00W0GblPG8l9000W0N00G@pIWG10CWaV000gIS000p0Mj00CJ10C0DnP000G
+@eoC0LP60uNF0aJE00mTW00@0aDj700OXd8xgYtC0WX10G510082000300W8W2051G8O0io0
+0Sd100nYR0T07080_PW0G0008Z0004100010003W0000tC02zF1miE0BQB106100010hKy3L
+K70000WgE0WaT008_000010FiXW9i3KsPwP000Ot4nDuUQ6om9XleO0000SuVCaxcb00i6c5
+daejLX040GZTH1IP1Os3Ugzfea22nU00G8BdK0_630s50WZY85_fRTR_LtWrvP84nD0gu0KM
+VBd9gxRz2Tv@60m96saSlmYE1KO0Gs3@@Qn@jUy@g9@dwo@dsyVfF@tv@300yhJNAgqa_@Cg
+@Bpw@nm_FCj@@Yx@ky_VBm@pIyV00000W0WwSV9000CvmJ5404Wa2_C8JQ@UkYQtL100twGc
+lLez32800M_F4GKB0Xj26000042007Q@0040WfyD87y7A@N200WRS100MRz@qQ@@it@BB_@n
+c@Fiw@@w_@ko@Vhz@pg@@h_@ll_@txlH000E00000GE4W3001dvGG706a70C@@@@@@@@@@@@
+@@VOca301000080010W1DD0W00uCf908000001m@@a00u_edWhUoa1W82000GG0180yRl120
+000G80yfv3@@l1u04WuHrgPK3G0W000000m0028W00m010dPQ0202000091@J2000Ai000tz
+xKmeCiag100m0R_CXqFPu@@J00Kp_@VNDZQ000QWlHD000202000I80IW0006gmWeACu@VF0
+i00y@@O402008020020m04020C02000GVkQ0080WqP31004hL00W@@x208000G000HG0000B
+0040W0080000Y00GW@@D0O00m@@X000U81tn0G000G0000010a0000G8G4G0WW02100020G4
+0GE5a0Qp08gtk2xr010KG8102Wa04J40G0I22Y08K50m000010X84003000402m@@R000Wt5
+00mq3T10000088465800W05G8W0f09I05Ee0I0M0WX0002002220UI9400GDZ7h500GXDcJ0
+090G70900G0uOcJ_@t008409Aqr@@60880OQ064000mG000W0002000Y000@@x1000Qw000@
+@t500W2G10000400500qPG8@@N1007YZXOBc49cxnW@@z0uK2m@@TXG00000G021108G017u
+WnZ2U00009oWG_@l81yF02400tln000GW00W01000YPc1u@VI0085S5UN0H40000000H0G0O
+000m0K0W1W20305000A000G000GEA6aqK806S0EDlBn7000000KT00000Um3060040008000
+I000K00S0m00A00IDF4000yG100Qs@@@@3PaB3s7n3Wa90pdHuq@R000W9Ggng_VZEnCOn5F
+004R_@VKF6PGu@6000G1003GDEF0004uLA3A7oWeP21ys2Gh1F4nm93mn0100mEuU0020090
+2WLuC002G004L001Y80G218W00G0540148mfPg000Wcm00m@@O0W80eOkDkdxX8wI00G0HZ4
+6y@l1G00e0000080G8Kl4IEp080082800_mIY@@b00GdKa2Ra205fIKnpRI010GOKD302400
+X00GW1080Z0014G020W04G08W140u@VL00yzy@@6e100_@V30A00R0qGJXCCLd1000pOY0H8
+0110H00000808G4W00YGW00W9004OoG300W0qLG8000ev100CLtI0400Y8qWE2D0G00008YW
+65D000800080H000810W590080200540o@@a0W0EFd7acMZ1800000G3lVC11W80Y80480C0
+G0000In00000040G4n7f28p3Wc2Z22000000pZjC00G00000o8zC00082H0000WH0ZQa008W
+WTY8n400m@@510A0u@V300041W04204H325105mCZ2CY840X120L4H0i8548Y83D2nc06I4I
+00XO40000024G0000G0vKw100qs@@H2204Gy8600400W0000H0XYFD0H40eG8250410001g4
+86G0G40131A8X101000YG000ppa4m_F0@@B4000nlCOG21040K208W002G9018G0000L20WW
+8000801WK0000c@p0804000080W2Ay@V8000W2IXXrH5200eGcZ6W00AIH0022a1201000Z0
+0OW100228W2W0000W0010AjVQ002JW@@910mLVi7BDqg100i0G000G0GHK05001S0214AA0I
+0000GO080G0CW08G0112m006G00G10W900021G0mb5Cy@V5WdC0sB2f@@D0090800W00Y004
+40844100G21H2W8100W201G5G0001W08200G40YWGPA6avA9000u5F00yemI0000GB028009
+u@V3000qB0000Wl0780080A20000W800000u0W0008H8C00000Q000_@F400DvnEka00000a
+Gr20Hy10000GWLFqC30Hy10Wi30mg704n788YFWg6V0LT00gw0Gy@VL0zv0y@lJ0u889Wr00
+000306300K1Cc10OC300K4W0WA000L010g0g8K1KH00eY000Y000W00001G00WzuCOOkDAhn
+W@@5QkH34200m@WW7y000000Hu300O7Yu50WLB0G1G05KWW00mTPD00044008804VG0Wv0YA
+mWm9y00Gkm@@8HV00000Mj0W7W9Ljv@@D0Zw0agsU0000JQU3200000080000x6008tbAIFe
+bEeJ86wJs1j500D8dobJET210040440mtpX0aU08RvMYOs300004002000W00040W4802000
+W800000e00002W0200400G40100400G000G08804000200000GYW00tJ@m8pC000WMG00Owq
+F00G000WGG8v60G140100mHv9aLU200010000DMc1lWR0Y080020004401000G0W0000W011
+002e800K880W00GK0W080282150228W4001H8WX2K00K0O042100000824000001_HC3heRG
+Dw600WZxVY7G0200402P6T36Mj200A0010010W000GG00000G10WbrD080200002081080W0
+0300W00P104W0c0Y48040200W0188050O140WaW00804000W0C4G0CW80O1000001SWsfCeO
+y4cgy1WFB0PpPm@@C0011urx4EK_XslJ01000W00W5mD0G0000820818000K04A00y@l1400
+1g1t0000m0030004004001G400G2000n2GW140UOm000008180U6@XmsDOjT3000mR800OqT
+6002400e000W8000KWT9COhx700003001080040002400000KWEWtWowDuaU3IVt00G010I0
+0401W10040409Gfh6m0G0e4U3omnW26CO303_@7300x5ZTBHouI00400020W100H00002010
+000am000SWk400W8qlz30G01002Gy@V2208044008p84OrE30008imj1JyR0400Xpshu@@44
+NX0adD30000104W000WW8WW014000400dkd0W00mY@D009WGp@60G21unC30080oG20u@z4Q
+qt0241000W00402igl10100400004000Y08mamF81000100GlmO000WFHQ30010W0Y0044H0
+90104001020GAgs000100001kwB1Ga80W000084002W010O2mN_601200030uh_60080OoO6
+01080404uWv4G0200410eoU38G0043d1RRO0800W2an00WRtV86KZl100040W0000048H030
+800m041u@V30021021008na080004G1108038040yiW1e8080000222e004GW00I008W0800
+00W2WI01W03I841WI0C40G88G2mCYO00IOWW08000O28Au0Vyd012K0H00000W2oU03Gyg8D
+uR004G4000H0G0G104WW0000W1C0G42a_qD000010200C2m8828Xf43YW1EuW8Sm18qG2eI2
+2R8O04021H400G030W0605cl18W01g@m001G0808008083001W02H041E082GW000004W800
+00001600008410040G0o_73000O_100IIp0800001014414G400a80I4Y0W00800GW8Y5008
+aJk1G0m04O002a0100WW8G0110WY0G02048Y1014X0ZYG4W24G00800014000b00002G04A4
+000A12W800000G0281b20Af4248E02WIY5000W85G10000a005K00G090A10000002I0KAy@
+A00u6200W4000qHw6080802000102G0W00008W_@d1A000W4I2faI0e48100A10081004iI0
+040854AGXO10a000500G01008G1001W0002800G4000W010100000G043W4G4014e4G0W00G
+00K000Ist02200dDR000G10G005TY18j2WPqD0051000W0Ye400000GW6Ge80m01482082Ws
+nD00W0000G4Y001800092004DW10W00UGrWt4J00006060GW00000u002m00002m5G603v00
+2o088W2Y0W00XG84080H4u2200043a9000HGWeX00G10W0GS0J0GW01DZXI10W@@D0C00800
+104a00W1310W3a0060G00G202WG0200000Y00W80080G0002WX000041440100Y001G00106
+34002208002080A800G8Gu@V30041q0l100500W080G0101IG00WG0AW8008000HH00018ug
+S30200W804wdd4E@N200GP20000081qHa1W21X0004000L00000G42A8000ddd002W4I0094
+40101000104G2082481G0W04WW080W0G0Y8G012W0K001004S00000e80Sxl10WUG0000p4w
+30000eN00WqzD0j1040GiXOuO0000a00000i20Z@N1mq1eDoI000000W32000W41E0Y6WXmt
+C0z100C0ybnTD8bE30uB4A00001D0m@@600230000W6oE000G0h8PWg@32n704oCW@bT082V
+000001000m3L1Hy2WggiGLLPHLLrYggAgOcP0ulg0Fy5HL00IL008@uA030000020Hm30000
+VvNCSY800jO00BY047m1G4uX300G4u@@R0008U10F@20q@11yy3mg@FbE30SLBeggM40@J50
+_7SXhA0yVHgKrYgY800020004020O04Hm0Cp00GD100C300OC00G5W1WY0pCL0cP00KH001Y
+0W2K405W1eA01G9YA02000ZP0GGu@L00uPz@V3G40203012L0La80g8HAGHYK0g4f0K181W0
+G5110200W82008C00Wn000p04063emC3GX10W23004204GH0AWA0M051C4g0O800mG0G10y@
+V200W@0Hy1m@@3m@P704nF0WoEG8Y884lw4X800Kr10CY0W841000W80006OW100000u10O0
+Wn@h0443m@@60WPc100yF0yF0OcPG0egW0m@11W@fYggIbg000004OeA00KT08w@0W7@02g@
+1ARy3Hy20Yu50yLB0G@N0uZF01_VG4F@0iw00Hy143t357hoRaFyQV2000Gz300KeDLpkoGv
+s60G0GOUR3010G0000140010f08G000VSR0010efkn00mDRfjCahi1000010400G81ujV6MS
+F10200LBRG3qayqS2L_p3ms7Wl_c9OR32tlb85I00010W000024002YG01G04fG2W000ApZ1
+0001FzR0000Mt100Rxc0000aBgD040040W0qczguGR6MuJYtUD00300000XjjD0004mZ_908
+00X8000080100000022080GS@a1W200000G011100400G00WVdD8hx400yg2044yck7800aE
+tU23QR0084000010840_ps01W00000G00840420ueS300080G00a02000000400W0K040OC0
+I054404I820aG288Z04m081W20014WW0Y0114G00804G00w9t04200FLamzt6000X00W0001
+02021W00000OQGypk10004000025018yP30140004H440200H05G004040O4004000040001
+2100WI01040I10W0000G0082000W1G004WG101W00G302000mmPP9010200g0mzXC0020G00
+10G00WGcC000mIDx60K4e100Gmn3604G0040020004W000000um7G0W300uST600100O0028
+000001O0000022G00G020G0018W00G01004A00XWW02010K10H0Hmrx6004012m0a0810100
+A004002G1G0GO580eWG00481GG08WWm48WWW001I044MG240e4GtHP0020mYzb0800mkU9al
+b100YV6kF120000HGG0000jBe1000I800W00W8W000004200I00TNOmhr60000vHT38002DI
+l100092Mo040C020020000G0aH48WG008008I00@@R000oCc101l_R0G8002C00000000GYS
+HV200H000Y00H00W800GDY90KW10069GuW90010I0100060WuYC00000p000000H2A000000
+aMe100804H0000080110408WW6@D0400e0Y00140000G0508G04G00440800110012000G00
+900Y00eVD3IOpWX@DOxS3EvF100229TdGb_9000YL@00m@69CAl1000200G100G00024GzK6
+0G000100nb@60044u@V30G0WS_l1VfP0040000080010aW00051G4Y00W804010m4j@R0040
+00020GW8II3n0000002084000000W000a2800WgHIOUF32_F1100000gN@_tWwwJOaS30008
+0140001C0000149014G008000G0004W0O10W05O0000462QgC10G10znO000K280040I0000
+20WuG0W00000180n4f40W800o8I8n8Gi_V381G8Ap10000090104q010@@RWW000C00H@mbm
+TV900000WL0Gs@60808080000082H000G0061W0001088gq400W8010W0WWaYS00008W0nzp
+00G151000X0c0GAQO4C0mG5nOWa8IX0Hg1G4W8b1a43YYIO2YeCJC40AcPcI00009YP00024
+YeWG0K11000G903000GP000200nQ4100_bY1DyR00820000K21004G00800W068024G01808
+ZA0044WM2G0H0018G062WP1000420682130W1O2fX420448Y81080GW1m0aW1e010000G010
+28004G82GI0KeW140W0WCWBW0aGWWY01a51052HY0G1H04004GCG004086000GW4cH000m0Y
+0608286G0GH100G4jl10W6002000H6YG0H000G4uruJ00mm600WA000WzjR0000081000W02
+0028116YW080020W8Cn0WA284X0400G000X4M2080HeG40RlR020W04005OG5000HW0GK000
+01200200a0YGG9b008HG60K200044008A1OGG010eaI0Gge000AH0010090aI0O40018AG10
+0aP000b000001Y0G900H8G00502HG90GWG14100W01004000G610000200GX60CuHy408W0I
+9008Q63080000G1202KY48G9A10WrMd0002WewC00b0Gw@600002G0012D804G00A2KW001Y
+G124000G084i85X018G4GW000W0WWG0000I800G0GO00000W60i7k12p00G00800WO104000
+09W0IDW00G0000Ii300xuQmHk6aXl10008019448W180080200012K000I808WWp@D0001A0
+0004e0804W0G01A0G00004000O000001G03G0000mGW00O504H1Y8i00500WEW1X000W060W
+0001205H0D000044W0X02400080OW0040m401X20000008AflT300G20W000K000000000qk
+02020W00m02GOC63_wr02O00400G_ToWXVD000108W04000000IG0080000800G800008800
+0W4GI400G040000X00008H0A0K00G000K01040udU30O0082W0008001WI08W002Y00W8808
+6IWaG00mwh60A028cN60150qFB3WIH400200001X00000W08840H0010002W020000108900
+08000G04000008XIa0Gb8100Y20800200GWG00000I4eY00004121400W00820001510Wq70
+G4WTl840018002G0W_0000a_IRu6Swa1000wD1004sc1Ge1000u0000420qV321XTl0JD000
+Gb0G00G0800200Y500WWa9000OXEX0q9l1BvR02b0000010g4000Ih800W000WW000E0000O
+N4w50020mN0OBT300GG000GAGk4kKsWswC0026004C008G00G00mk00GG8YN0WcTeP6084n7
+GPZFWoE00bT0Gyh0iF00G080@@@7000yO600O_V600eS800K500000070000000H410L1000
+gM000W00GL02AeW8Uu1Ks10mg300P70ynF0W_FG0000LDeGaij1gE0yXV00xV0n7_G4l@1iQ
+10Or20Op0G0E3W0S3u1uCmDpCWR600pC0YXp00O6O0mQmOcPWvC00ZP00WG000A200K1G0uD
+WXmFmF30WV600e80006000C0C0G0qHO28Z00W9200000WvYG000A200W0W0e9020306300C0
+00G0000C000_180u2Gvn5WI200b40043d1C3G1W1WXXB03G40ca858e0vC0W2G503YA06Ka0
+Ce89Gy10Ks30ei31GP7GLpEWgE00LT0W63d1O78000WL3V00000bj0GC000iw20KsnD00Wym
+1u@V30mt1ut@1mg3uF00mkuzJ0000fe300Cy00000C1Wg0GL00AD134V000W000yG000W8U0
+0Or20YuZXB10_F00ARcXPc100@32pX74cPE8CpCuKLLm5EyWByW0W@11V8Spyyl700aAs_Ea
+qlP80SCMsF10080r_RGWsI4Pd7Fzp0080WEmDORS30nO0iVk1W0G0_@t0020WZapmrS60G00
+8xV3_ohYzab84kA_fhYSqyO4Q3aA00SsD6rcdGguL4yD6V2inPyj0200OjT300WVsVJ2HAK1
+0004002000206zsWYnC8US9gH@1X000010G002000800G8000G0WxqD0G00G@q64xU2000CM
+isWHmJOJ_40040COi1Wk208010002904000208WipJG082Gvr60G82000184W1gOxC8NU60G
+0W2008a0W020008W80W20GGsas03W0004020800200140a0mHM60G01a00200X0mIxJ040X0
+01a002000WG12ht002e00010000H00010500uYz6000W7O0000400088W04AG00W4G000W00
+800840020W4aGI1Y440G08404080001000100001eW004014WK0m3W6020fO_V30448G000a
+20W000900048008W04G104004W040G001104000W0040004W08mT300001G1000104400G8Z
+00PXb01W000020020aQer0040000wT0014000841W02G140050000W000I0014m10004WG52
+530GG080W8A01G201G00000041004008Gm200300G0m0042P00010002800Z0O080600a000
+4WWfUC00000W00Xk_D00W02G00WkvCOlj4008WKbF3fzaGgz60800urV30lJ0000G000W401
+0020G0R@RG4x608420000W0140104000GWw_t0W008Djp0000aRVD00K0mZr6adU2tmP010m
+041G0@@d00G410820pgPmlQ6qzl1000G0021yzV23ka00080000ysC00wPBXw0CeGU341000
+002004010WHG0414420W2KC11W01Y82000G8Mnj19nP0H0821000bjR0800200022000@@@1
+0G40vZPGJuC0W0G400G020WXoDh00W0002gjcwJ008G002000G0H00000Go4X01000Havzk6
+000G0041819301200aW00000GW82GGI200002080014010Azt00800000X00104fB3BuRGIJ
+6qfG2T5R00GWe_@P0040mmdFq@l1WeN00002W041W800OPbCinG2PrbmTcC0140008200GKW
+gwD001000X0008000W000001aaY100WCa100SuE388002g@XauJua33Mzl2000WQ90AG0002
+XHG000404G0a9aJ00W4mVw6qQl1W000W010yUc10010000e00000YY0W4e10009GdrR00004
+00W000110000200400CoC00090m0HntPm059qGe1g10282010008200G400011K320010009
+0qiF300800W80000kX20g04410ZG000KX2W0G000cO40408W8I40500KX004WI1804000b40
+00H8iK50020WWW040160G4Y40WO0089S0KA8648Z400D8020G000H088G8000Y102WCJf1G0
+00wfF10W00G4W94000000HSeY42nt010000GW0kLqWFeDOsV60YN0800820C20410WE6I000
+084H4H4000YG72100Y2204102BW800000K02002508400c922IC1WPc00G0W000X000400K5
+0H80Gx_6W0G00GA0Gzz9SvM2PoR0580W3DI00A0q0z6000W0002050000G40plPGH@900004
+Z02000100f00v@p008810020020H00000881uMP300002050OdI32@t0A100000Ce0008100
+OJ7300W0G100gMK36kLYg@DuXy4e000002000G10W0000W0080C0Atj200v5W002xArWdTVu
+va4000Gifl1fZR0D04WznD000G00800G200z@Rmjs60400W0W40G0040120G000008W0800u
+x73IxrWUnJO5U3000a0400020Gq806KjV2xEn0u010Y000080000W800000200qPn9000GW4
+180000XGqD001GGA06qQZ1x9Q0009000W0000W00P0SUf100101G000X004090W000O0G0WT
+jOW00001W04A2002_EXuhD0004Gk79S6E3rvR00600000S8310010biLa10000X4803000Ga
+W8H1@6800100049Y000000I80Y4ogr000G0041G00250000Y11G0002000400W00a0000000
+4n20800ma8lPO603IJE10G840000G0C50208K200m9y60WQ8000a00A1Wv8COWM3Ytt000XA
+8M2008Icq6C3000O0040WK008qJ300C00008500KIt06021W02100uA108m_A0e000019q2l
+1F7R0I1GL00000W8G1000Wg0004x60g200ChA0F@R0Y820000YzTQ0W3e8b300PhRGA06KFz
+3my@0Itt0mKKs200040eW28eW2GP304H40W70008_000y00WgW0eW20Lh22n700K5004000J
+T082HK1CW1GLC3Or20mg50088000G00hE005KSmF0nmP006100W100WAG1060A8C0K000AH0
+0W4tC8sD300WXKjk1000c000G0G0m08Z010300WC20@@R00a100W086100F_t0000u89600W
+c000k040O0eam0G100W2000a400WB0006020k0C0O0OIPnb000G7020N0C6@0OI00my08GE3
+006020c0bCO08a00G1000G40YG40g204100O60005K0G4c200G10KG10000e5LEm30002S0X
+@@00009000LwA00Msl200wtgE0W1S000001000bD005K00U00Gri5Wg000Y82Gm300Kb8W70
+00iw0GK0000020Y8Y94n72npCWPnP0h3G1A4G10mV000cv200000W1MFuO000400W0Hwrs06
+R0OPEa6ClbjpL10003F10W_x_vvSLYdaXbuseQ@700uRcdmIn3eosxj0yj18wXhMzlYugI8S
+662CtWMnJ0000rzyC00001_000420W8pCO4@4cbrWcwJG000000101W00NqdmBz6yzq3D2cm
+qzC4ui1D9RGxz6WG800040000WG000WZ3QG7_6W00141G0GD_6000a0011800W08180PAQ00
+100O00WD9R010GYXYD012G00eW020018W008000yEi1djRmXs90014W020010G4e20YG1080
+4W0KEK2ZbR0002XclD08W0m5H904000200000204008R1a000010042LQR0WX000W20e0002
+Nt00y40001a000W00WGvWS36vt00WA00000W201aNV200m0gAtWuyJ000404200800208221
+W0000W1CT@G0400K6O2G00W6ftWOwDu5U3Mc@XqwDWO00GOG9ayl1G000W0W0004GG002W00
+0014G02000cRrWP2beWo40450000020W4Gy@XSfl1jLomOO9mC008Ck4o@F1004K80040G00
+43m3ZXKnsOI028204000088WvlD0404mF_6CmP508200800aZ130401Uhs0W0G4NVRGUO600
+0000p0Gm@98k30eWG32gH20W00Y830g4LYlyO000500G200H000W000G00DPG5ZHP00W0WFX
+C0Y000GG4H0We89tRmnG600002Y8YGjcL0000pV00GK2OSkD3tWmmBTCCuU2W0W840000190
+87rAMrsWUwDG400010000W018Y81Eht00002F2dmq0I00uE40G0mNz6001GyP@4IVYXHtDOV
+J9000400W040G0mX2681Y0G0000022W1Nb00H0200040W80G5H04X0082W1G40001250WWW0
+GC24X8Y82a9G4G08W00G40100000cNfu1mxg00G01UatWNsI0000mRW90080G0000108WIqJ
+uTv400001OX0004040P0147K04f0GCG0WyDu3lOy0W0008Y800WH0K0YH004H41H00000001
+0Y0000XCY4824100CJGmBF000W7E00e000WNZC8LH60000O00Ym400GjjR014804e480HW00
+8000G0410Z0WW01E2NCGW20040b200eaO1q002G4K208082GG9b01aI190KY0020a080b080
+0i7k1pkp00WK80004xMcGqkm004G00000W080X000K200Q6iYq@D004900080Q0200W00010
+Q0008W26eXY0c044W80H40G0GGm0H00m40108YeEgDeVU60Fg0iHc1F0Rppz6apj1r2yGVFI
+00WW060000088000100e1C0W400W0G00G000048888200012W000G4eEO9a900isH555S280
+0WMRCebtD0001KXk100IW00080W4A000100GW0K2400W0G09000H0002002410mUxIe_H600
+0B300eeCT3oQmZlbh00W810000900W0000G029200G0822mCpI00021000X40004080G0H0G
+VC1012V1znG001y582010C04I1m00_2G2109WmA1yLq302RW000009H2enBR0140WK0000G8
+800000Gh4K00IR5U300m@0000eALLP1m3tYgcf5LLLBgggmKLLXPcm3ymN40_d8u10000G0M
+OP0000GaBO2000GqZg0000200m300002n3005Z@0005K0000000LRhk204V00GL049JG0OW1
+0000Kiu64SD6000P001U3WGy3mb10WB305K60AmR0KWV0h0l1MP_1SA06Syl1y30000WXb5V
+2000jo1t0C18000GaIGdXlvC0W1W1020W4nDuHQ6sisW0vIWt060C0ClRaC8TPCqGh0O6SX0
+KF20u200L4GXWDWgWT0T3K0g2vG44410P10K42eU000008W1V400000o0WHxJ0qd6VUs64yT
+5W70G1AKOA00G4Y00rns600g0000000m0ZZ_D0042W000000CmW8U0YKeYDOI8wR9EGZaSuD
+0Z00G1vsikw3N3nGXt6SEU23dpmsv9aUl1tdR0001e3qbejH3004000OVlFS3Q4u1000GW04
+0g0hYmXU0002IAO6q_s3xWRGT@6C5E3hXd0020WZYJ0W00qJxI0GW0eqV302i0yD_3bdR000
+4eUtFfCA3gh3ZEonOuy7cl330008000mbE000200OxkG6f@XMcOO8V34004UNi420026VB10
+0m0@fdW0100000044800000010cgtR30800qub1G000E5Y100Sr0010004446l1ZER0000G0
+04W3oRW020WzsC0008ojx9000HSeU32kt00g00240WW141000012000860K0600jXbm2_680
+09uPy4_iEXgPD0000000a4088186000085008002W0000WG0020ViQ08b2WnwD01W0mIy680
+9W0W00nQv6W0800004006WYO@J08G8000W0G004W0800080001800201090G0900xuRW0000
+1050t2RG_v6W40000080WG0WSaD0000Okr600699wQ3W30000C000OW000200g0002020800
+00K0040020001000S07WW0080W00G0C00040800000224W00G00300100W0OG00000048O00
+080W8G000008W2000W0K200W04000G010280W00Y50080G2H06Pt000a0ltQ0200WHcP0004
+mys9i_l1tlR000W00008000M00e0yzl1G000MGc100p93v_004000004zRm0AW0Xw@b0800O
+qyC840100060008epVK1004n0S948k15mymGx90A_18dQ3k_730Wa84100QBBXyxD004GMCN
+9y1X1fzR0K440O200HAT20880W00Y0008QDt094000000WY080010ujT3Ytt000GWu200pdD
+10H00FjinHk60100000W8W00081000100a0080240egW4Qu@Xshs8@T3W00600YG00000200
+G104081000020G000W04J0000000820G00004Y1002a90W82Y0WsyDuWT6002G000800058G
+04W55I040G000020006tOPW00X0GW0008088050ynm6PbM100G400800004FaCXjuD8iz707
+hGq7l182008W00ydt3W820UFEXRrDOsT3011000000090Omw6G081G00000W00000GG0W0MH
+FX49s000G4WO20Wm4H0X0YC0H410G0m40002000Y8m08P0G000oG000G000X0080000C_11H
+8Y000408000814H0WUrPuFI30GW8Y04mG0G0mXW90400a2YG0Y001b0204W8eW00S084m00H
+8840WH821F@44oar900L8000K0004aV4C0JY2Gvo60010G0800400W0yD00mz2010H82WY48
+600G84aY@300G5100C30G04400W00WYagD0m080041K020Y0108G008201eW80e805G4002W
+FyR0008WZmD8fF6IVN244W9010We40800000G0G8W00010400GA000G0rkD3K0000Gr0G000
+OCE9M@t000900G1012004Jk17WB10G00004GbodmL@6CWv3T1N100G9W0a00W020GH00008W
+8A0100004e040108G01010Y0eXV3008000001h00054H00GW2p3N1H00000X00000GC00aVl
+40001K401X022OVH6_MmW2X310L00G4508X00WHq04H00n00200I803000000GG08I0G0000
+34O9U300GII20WuHNCwvt02000x9zGf_60101Oc93UMBXWvQH002OwF6008A0000A4W01004
+W04K425m0GW80tRd0WO7XfvDe3@4Y6bXbtCGI010400000K0XZp00a002WG0p9OGD060X062
+W00848KWPsJu4vD000q34000Yc4mVz600u000008HW30000WDvcGsu60000IAq2GAz6yC860
+00250000W60uZU900S00080a80000G2WVeX10L704nF0DqAW000805_G8_00Kr1Wei30Hu70
+0008000GPNqV200YN000WYz000080000b_Oen0eW208oC04000000Efl@00W@X040ufF306P
+7000004XFGm00408oT3000Z4xl101086In3c100eA21m5O203032L0La81g8HAGHYK0g4f0O
+081W0G511020IW82000000CgY100C600W1G10006047e_004400e20210GRnt0800000G0W1
+004Bk100WY000O00082G0W1012YLnDO@@70U00q0U500Wu50008WPc14ggAggILKLLG0m@We
+QL1HLL32pCJ5LL5SX30coC8WaT00000W5Un704nF08sD40008iB000000W700G1M9GT000x0
+8000iQ10A0pud000uPytV00000ySr10a@100008GP700yCHyF0yjV0EVrs9nOlHgtF008kkM
+jA80804GkDrMbGCTdSuj4fmdmNt90o_08rRCYVsWtqs89S6000G08W0uat4_3VZsQV8fWD28
+D1u2007ypGWxCK3N8HcpGN064WT5nm5IKwOqil1000r@MXaQuLvdR30280K9g100W008K0Cy
+l10G4G00000500OLy7ERdX6tD0W00040008G00PyR0eH7010035aR0020G00u0pRR008000G
+000WW00008001AeeS305080W204000W008WypC01801e80WFoD0G00OCT60240I0800K0200
+2000801UWFXuoJuXD30W01ikF39pR004G04G00ZGd000080004OZ006eF10210W000G80001
+104W0000X00420404GE0002000W0040GIz9aHk10WGGAJt04G200G0W4200G000W80040000
+0005060W0000O0C0_sU3MWsW7qDeBI34W00KG63NLd00W0004000011Qun000yHG000K000W
+0000G0W2W106400B0000C0841008180m000201501080200800100wyT30G0011G000000K0
+C01000GW04400080G0C5v40394q3l4008Wkr@10021@@@0002X5uDe_V60nG0CCt3zHp0009
+0002042W1_@t003020808_@tWexCW0008W50WfzD0440nii94rG27ydmQX600AGy@@Jw9d1@
+10001008G00CHj1bwQGf@Cibl104W0_pNYMsD0011G6t6000Y00041G0024020C4100G045d
+V2rSU2G00WVyD00400100XXyD001YHM_90W00eLV3wwt00080@gdGl_6CUj4n_RmhdFCAU20
+008MoE11104VVcmW8U4N73d@R00QbnG@J0WY0G2oF002W8wQ3c75ZmxIOSq40G01W00004G0
+0000XZrD0Y00W004W1eL110GGujFGP0m0000108AWWyt0008ofx6ie@6000400041080I8S4
+W0050540000009400qLk10Y400080G000OnvDQSs0W00280108024a8V200y51G9G00U2008
+000m0W_xV00400W00eXfD0120mp06CBE380800200W000w@V30Wo00G19082I40K4K4000OW
+90000a00Y2008G0004a78D8DZDg@tW3_D00W00040XShD0Ohg80H0H00O50W800G40G000WG
+00Grd6040010a0008W0000182G0Msl24000400W0m0000Y0uHI3040G3I40ZIA1820100e00
+00020020104W0W0e400000G4WBvGoxs9CHW1C70O00080800G800mnzF000AvAT304000GW0
+000250K2WskPeK@A008YmGW801G0410WG0000G0eG001000W88yR3Q@s3000H00020W80EgV
+20W0000eLI14WCBC30000W00K8@t7k4FX15DurX4_Z5300W0W1400004Y100G144Guy60810
+0C00mvtXCDi1040GUTa101000f82w@F10G80xcZ12008301i040WGC00a8@3008Go@@1100W
+WO014G200G008RFIw8c1KI00W400000IqbV2000mb8W0q@l10410wknWuaP00K0mzg6KVU8B
+LR00000qV0000yN00002020000GC10040P2GA0000qA0y5h1NQwHl_6G000e3W400qX38G00
+I09I1u9a1R2zln0000GY0K0H3OGJpU0002I000W0O@T02000e8uFDp00040XHV200000W8_P
+SdGkt60kz0eMR300vW2m010SH4mseC000000rJ4o30GB60eBTpGs@C8Wl000004Cy7WGdD00
+_100m000W1O002my62WO400UP73W000030100WVsKLU008000410000G0X00000WG4000000
+7A1000W0WVtCGJ00qr49a0d1G000W0G4z2G2jAP0mS3WmhV00O0uLi9Wu000p000u10WMyVG
+00eA000WeNDeqVCoSrWawV00WDC00mzLfDOaxJ000KD9@3000YG400ipk4HZuHk@9q3T805H
+0AZEaRxdPee4Qx730050PLlntvFWM00eJkGosUZxqV8mT6ULtZ6rL10GenHULyQo9@kBnVv9
+SBi7nfiH6w6SLF30JF0kwpcm@t0600mbvFyLb1FkPGu3ICPF6dwd0e10084W0HiaGLvF000A
+8zV3000G00110220GdvCiUa1v@RGIp60G02I00000044H0000G000208000G0030W0aGWO@D
+8lE30G0W00000180000000420ttR000G02200G101cnFXNqD00mGD028WgwD00080G0800GW
+00G006pdXq0Cm0G000H004002f9PW10W00000020GsstWnyD0008001G00410XZRW000m3yC
+010C0KG8WfuDOKL3G0W0000GO7M32RF10002FmQmdy60001iYV30770WW1WeCV30G0020100
+380GAOF01100008000WG20m0z@R02GW00400000W1040iuW1@@R0820eO@D8yR6U3FXAxn8e
+s4scpWIkV00004i10WxnJOlg4_@F100m0XnR00G0A0040Z9O0480W1iJOnU3_Gt00000W0WW
+MBvd@0_fV0@oFW@u7_@zY@R@u@rJ_Fz5yEzwawlE1SL0mUD@dt3jY0006r_Xlry8_V30XD04
+dF31nZ1000YyunO1xA0100qvj4040WoprWJxDev_4sqtWg@J0W000000YGnD00001000Sa20
+0000O0042acj4Lvpm1uXyTb19Jx10a9W7od10WsHlrdS8e1NwVo_k6Cjz6JMQG_LCCLU2ZiR
+m@z64Ok10a4000000K00QlM367dXXyPekq7kulYHtD0010001100000014208KW0K00OHI34
+040020240W0GgvC000850008000802405SAnw360000KZ00mby60H0000G0080a000G0W801
+6VrWK@D0802msv606012008Gzy9000040010W000014009000080CPj100200360101f0020
+0401mBTD0W008004q3tDG002200004Y8041004G40yxj100G00WW0AG0000000K0GK1000N8
+R00WULG4W0nSR00010000W04444300k@j10040040024000043A0W0GY080W00Y10WG00010
+004801004Y00022I01WW00W110010044G00G1LdQ0X0681X3020G200G8y_i100G0W3W0KGV
+2000KG208WO0400004W04aNnDe_Q3000I0W058TD308000Us0111GuB@6000040W2114G010
+20840W00000O004W0080020833G01a0100000a0WG00000000840000KG80010G008020W04
+1000G0090UNt00020000200m0180WebL300e0040008810040WwnJ0002000Wc@@J0G0XKW_
+94il10040000WI900u_V3W10GCOl100600O00yBV201000040000040002WX18G000W10GQw
+F10088G44004G0240WO_T30W02G004W0I80W02010000W4JckrWIgD0004000G406G000W06
+zt000W0NsB1018Wt_I00mQPEqCiiY10400008C0008000400200W0480Oa003004NI200W04
+X080G0001210202040800122Y@d1W0C002W40KW0080840003200aFrD00Y400080W00100G
+8o0rWeQP0W0W0800000W02O01G400j@V22vP00G41i0Z10G00010GG40OG000uWx60aG00G2
+0mSW60400400800G040498Z1QWa00401004G0GG200iyW1nvR0W10WmzD000GmY86WC04ulU
+3008HsOl17dRm@nR028cG0084W2020004A600000000441000000K0030WY00W008J064G00
+0C20G490O0002800m01Sri1W00mG000G4G28jG3W0000C0000880800200014G08_XtWLwD0
+W00nx@6028WecO361a10W0100100008ixT200WWIDtWr_DG0000080000dKG004WW04H01u0
+880W01012G000088D00000G00900KUs60200100011000HY0H0000WG20W081G0080000oK5
+C0800W9G8nm2C02010G00400092500W801H200G0Y0W00W00G4200a00mGO8082KH40824X0
+01e00I00ALW10W8G000X00Ha2G1W1342m_660yO60048020W12G1048041W4A12HK03832iG
+20i040GaG48X0A08G2bWqW00Y04a8Xo0W080Yo4800G05C426O08We28A02I010GWO261050
+010100W012C004Q0e2H400I4900540iA500a60H50H020141GGC00088000011W00244_W18
+080wcqWxLC000404001WG0801140W0C0000ae00W8G00H00YG0B0G08L180L1002C2Ka0260
+4405IW4Le00W9W44W008M80m80000Y43G020W80Z4Z4044208070a0Wm40AHWG2080I2W008
+SW08W401W00AG9IG02000b41084042G10W000yEl11TR00GG000O0Y40We4G0aGz3000W000
+G2000WI00e0000004000SW1W00Y00KQLT3e00002000GA08100400a20G0W00001mGH00002
+5044G0080I90Zyd10W40002Wgz@100IH00024K05100800AG0G23W4yJ00X0000G108002G1
+001480A0801AGOAr980208ZR38Y8A000887f40tp000804040000G300000G14000000801X
+2W0200080100W08Umm0GWOO2102G040CwF3WW800410C_U200W40W0G10000G18000X041W0
+i042U8d105800010050000080082uow6KhV20mG8030008002802GCr9000W58303G002100
+0G1W00085G2O005004Xe2cd@D004G122o0W00000820G4Wa_T2d_R000G00080NoR0800001
+000W000Y00000000Y0X080040088W00sV@Xk@D000L2A000000Wd@RGeB9yPQ200e4L800e4
+1000mXPBhCieY17UO0W40WcsDOp130GWW0Y00X0900044000G6C000000001G2OZA3000G00
+0W00K0010WM7W000i1000m0010020qU1200KD000poRGI@6WG10000G0uA00G0uEp@RmS_60
+0H024000041W7cD00q30000Gc000WUEW40000WL0u@V300X7000OG34B000WW4RC00000Og0
+100Q2e72009Wcy@V2a100m200100005Y0GPoC0000K2G200W7WlyDGG1uB@30go0CWF00008
+W3o000000G1W0yB000G08F3Y000wlF0dTRGz@60Uz103_30CqrVd7Wt_E0S100GQkm300040
+00WA8W0io500H90OA00G5L18212mV@JaeK51qrD0100@qL0ThA04HU10PcC5W@1HykZoA30W
+d70H_E0jsF00MTk14G4000K000WlC0m1o1G0u200W1e0GJGb16WV600TaajD000W10002060
+60P400O000WY000O000e28000e6310YtsWCkD02000g0Y8K1gO00mW000000u6L0000C000O
+080m0CpW1eo00Gb1008Jwt60K0m0G5X1WQ20WA3008C00Wr0004040O04Ym0G100Wl0P0C00
+04180G0GW_us000GW2G004000020K0W0pC0m000GL00ex008Y008ance20000mF@5063qc00
+e2Wq@J000yB0gIL0000y700000t33_30000Wx100m_o@2ud@5000mJL41SrHEW82005K08d0
+04101W80000JW8k@70y700eAWg4V0YGU0000G0l@100kJPb20pm5W8tAWMx70000l10000m@
+0000O100GV008kjAgC3ZVWPu3y7ITt0000iPSNnTkCytF3bY@GvxIKga10040G0W04JG51jO
+GZ_64Kk1HbRG5S6S3c1VK@000N4W000hwdGJy6SJM2DdZ1010WmzJuU@40020SMd10W00s1M
+YWpJeGx44200KVk45ypmWo600000y32G7@I00W0ez@AEgt0000WjFdGlR9iWl10Y01wnpW5t
+DuUFC_u_XvxD0800ueSL000W6M02mI@CaEF3jXhIo@C0W02101002O000WA000WA0CW80100
+G080u0y90420000200G0G800004P000G80G0G9qm701W0000Yu0V3000l@ki1z@R001W0002
+00800082W00002012GBF6q3G2XpdmbN600a00001mc_90002G000a00000300W24G10413A0
+0W0010408010880840Utp00G0G04aG430007018oV3C00000W2100000aW3W4Y0200801W0a
+4V20YR000400GG100W80G9WWSuC0WG0mXz60001isG308X1q7a18640UPt000CWtup00010X
+000TjR0008A080XW0m01WW0P0WGG08G008W102008408000W00G80200A05000W0n012W000
+411090G00GJt604M0W4100406cU8D00010000S62000A0G0100020W22800A00000G800240
+400100m8fV34000151000008100nJxC001W0G11000GGX@dGNV68W0004A4KUv604G018G0O
+9268000PLV601000GMX000000m0aneCerV3000100800040nVFC00Gh3001Gxy6qbe10040g
+AtWpzC8GG603004Rl1nIomOz6imH20000W0001100W0G00G03WFvCuWT3000200900R0WWG0
+000Y00bKoW0u0000X1z_BnLv60yn000YG0c0KWg2DeDS30G400W8OGG000000eFEJ8F@4k@@
+100103To00821000000C00000000O0080800m040C20020G00102100400200WXgpJ00a4Gk
+T6qoc1I000EUoW8ZC00000008CgJ00XuRGJv90800u0W1kmWX@qJusB30001002GeHV3_ytW
+4_PuW330080CVU2002Yw7D180010G0G0040im_3O20G002K0000200480i080800G0G000W0
+0mC0000nl000001e03_R00100G002D_d0Y00WoEt8pJC0044a1V201028000000GG08202W0
+08000080400W6aTN20008UTp080084800004000I004G00G0G4Za804010040000908_V3G4
+000008000GGo@6yig1LkK1080WV7U8hU60G4W0Z0200W40X003O0W2001b00W4HK6L0H200H
+2W059022H1L4A000H10eIV3002Y0004088WAWG1bi_DWm040W4W0082n41W8402g000W3g44
+004G0002Yx@R00GH010W04H0W8Y2200X0OlE3cwdXqWD8lY4cUH20D00062048W84dg1a000
+0028040G448W80G028GC500G2KGD4000mOSM3GQ00004gW84G128WK0G0g000400f82XW102
+8W008Y0028000OTW248AeW3420000Y048A008000L0002000400H0000W0pO020000080040
+208G00W008200eKM3ItqWv@J04005GK00400000G5020W1081W20G00890Ae0028400WI0W0
+40020e00041G0Y202W8198GI900040004K2004G2000bcXpW8JDWI000GW20120W0G9W000P
+A10K200W00408A000XwY1500WpPJuXE3USj2000G0m90G001y@V244000W2WWG0o21Y04408
+080000G0W000400G4H00G00KGWOFDO333G800acR2000uqE088B2G0140050WG0G00K020W0
+00i@X1Ty_mDU6yvg7zuc020000420040c08080X0500e28400001E1W002WW0W8Wa01800XW
+001088000W0W020001060G0c00100G00LpQ004m04001000000eKWG0020004100K0AWH201
+X0844DIi14020U3_XIvC8Bq4_@tZYYDOt3300007Ni100820G00000W4240m9n90080000W0
+048A06G0haO008002W8000G1AIs0mX600004UuBXvIO8Kx700W0aFC301W0_@tW6yCu@@400
+0b00W0G200000a000008i26000DWmB0428q000082G00000QT1000m6WH1000GJ08000080W
+000zX004GsBq2mR06Kmg10A00001h000WbYm51000Sh040JvP0QF0000O3W10800Z0Ks5300
+02tOcXFdDO563_@N2000yS701000000_@N000000WA10002uVy10000Yu@71000_@F0_300@
+@R051000mC0I800bO04vx04m10000yg20000_H5L000K1WV000Wbr@o900Y820GSHAX60000
+2004n5d9y@F6000lj700Scy39mP000GJWE240C400o800WH08nD30WcWQ4C0IT00AP000410
+0G00001m003G6XVWP600CD00GO000Z10000G0m000W10300WP60000004q553d1060C0kPG0
+ip008o0000200m400030hUpW@@DW800mvG6yqd1vDQmjVCy@V20jU0010K00080P00GVs6uz
+0_t@1yl_z700O@@000wVEA100000Wx@@zn000400mp0K100000ybw@300002n704e200000W
+n6000204G4o6OHu1OZF6kYqW@@D000iuMt6Kbj1PYLn1SO0080C9RF6ct300gvJpro@@XCPG
+2hnnGap6CRF300012DF10W00JWRGXr60808y@@70QU0yHd7v0mHi_Fifk1@D910000004Wta
+Kn60DqR_3@@d08w6Wpya8oXD_@tZClPev@400001480OdE9gMFXfpPOU93YZd100044400_@
+NbwrzuzT3000020WG0H40200018Y82NrRW0W0080002000A9tWWjCeNC3GG00014O0142200
+1WImD0W00W001bTvD0440000QK800200H03xs000G00084IitWoVDOc19kQu10100N1m0000
+8W01e00G280G0I00W02040G40020202GWO002W00140Wa0iG40azqDW000240a28010G02Gw
+Kt0048028000800Y00mG0m4m5@60k7300G0nm39020WG00W00000W8088000000Y4sl18000
+0202a0O2@vBHby900014e02WGO0102G0002840000003041884O200W80G010e004sdW100W
+010W001L20014W2aGYzjDmK0801W040WI00W4X030000O8000007G00W00YW1040G00KBd12
+W1000000X0G000W0024800000014U8mWKvJew_70080O000O_@402G008102G0W0KK0040O0
+Dxm0002203G0X_d00e040G080W0G0008iqF300aWcgF100Z88004sUB100G0RYRG@p9K6a73
+ELHur9000208G0Gg_6010W88@40800_D530100404021R04084120002YG4020080H0KRU2W
+aK0wBFX72Je7bSYrk2200GnGQ000G4010002O000000CG887V3oqm00420dpQ00I4W_7Jelo
+4C301qYH5H5K4040021040410sntWd@J0400W000W3kD81A3000002G2eIS3W000yf23000w
+s9Wg1wD8fV3Avr0G00090G00W0008000G00c4F100W0000A4X0010180G040000mmcD8Lr40
+00mh500eHXh820008406A0200G0YMXD0Y0088W00K08082G8GC004Bj1KH80W0201A8YnWOW
+3Y8004504O2H00I4Y0000vOV300Gd20G0uB76Azqcctb00O0000W00I002WK808001G01H00
+00Y10100880000108001000Y00W0100G00044H6401W00220Y0W0XH000100090GctF1Wuk0
+O000c3pWJAeQH@44210G10GCdU36ds00000W0800Y8H000KgkV3e000Ga02W2A1OgkC000WN
+P0W00000A0W80000080W0000Ss3dc_tWFzD0060000W0000W0400G000W800110400G2oSmD
+00G005000W0808G600G0AS8930040G40000082000nfZ6igGHD@d000402080vwR000G000C
+08004e000008W1000mH@680100W20008m8GK62hQQ02i0WuzJ0G8300000e0Y000800020Nr
+x6lp23441WOCD0401GAM90002G100uxu6SFk10002WG000We00010mvm60GC08TD3ctt0000
+KVoQ0002WNbJuc9UsvjYmsU00m10001OY040LDQmMB6Ws9000Ws0Qj0K0mQ3veRmiz900GI6
+0500108XSnJ0000IoZF4_mFdIp0@@70000e9fbmly60A00m@0eh0CZC0G400eW2QIs08Wn@f
+yRWV100GX30vWnp7PU00C08jR34200GG00O403W1G510WBgea4000Q2uYK1Gz1003100S600
+WB0006W3000r080GKx60000ce00Gd960000r8800000uhrO8siS000m3V00mCG0000000yF4
+00W20mNx3W@VFjR30000uT0000000G150G3D0G0001U000300Nb1mAM1000G907kQmd@600G
+EQgde0060aZ36G000U3BXFnb0G20mguL0Md0ebCFQCJ5000GbjjHKu90400PpQ9s7tWqgh00
+00Xm00WsoD8DA36rAXPPF1000Gma6Cul1zOlnq_6000060G0HMRO4KU5004kd41catn8zP3s
+@qZPpJ85mAY243Wt50Xtd0800anVbeCyG0028CdE300W0W00Waxb100G000500010000400G
+001WG000000GX0i5k1NiRGF06801W0W0Ga00a000000800ldF10C00000mu300iGF3dqd040
+008WW0XvRG7y6CVi10G02Ept00280004100001W040042W010WstD0880GGa6G000a2WI0A0
+12Y080FQO00040000XW00000WL06G00000000P222080000Ge0IG3G0010120401Wg140G00
+41010001008000048W0000W20009C0000028WGbX94eV2G0G0czt00A0Y8400VrtW9uIuoH3
+0000A2400000800024W0000W004Y1000A088eC0023W009G0040021840000em000001XGeH
+tRGb_6014G1WXg2908G2000GWW0XCG0800820400W1W12000WJD0ddp0Oe00p@R0S00WjzD0
+G140200XtQD0W00010W41G42404I_Tp0088W000WG00010WG010G10G404040zYRGX@90480
+SfR6Mp810000e108w@t0bC00W0000W010000I0001010W4IU00009A00WS_J0048msjUiuV2
+VodGOu904I0Oon700W0Uak108000G404OV22004I9mWmjJ00G0W80000P00W00000518Y108
+pJ300240080000K_3cX0020unY4E7Q30800VfPGO@CW8000200Oz@60G0GeaS3Q_M28060lc
+c008Y00500zCoWm87Wa@R9sr700040408eLl700090G02eWS3000GKhR25xomntC00001104
+0080000G02O200000042802086020408400008T300CN_3jPgo7y9Cr9300G80140028Ch0z
+4Y_sWrqD8BLC040I0000034GKBy9KmW10W80008strv90004knrZv4C08000W040420WAWH0
+kSt0K10GO500IUp0Y00000010004qEJ23zR0O4YO4G88004Km0Z41494n0090C2G0W001G20
+0W8000qZ0ugdDc3p0400040000W08ynT2Dupm2y6000GG008W0204041000H40O00240K4W0
+mQPt6000800WG0041WWjC0600mkd64UQ2W0000W0CW22W201m04G0G82W08004H0WGWWe020
+00y6_6aQJ5zkMH0hCyal1di_mcl608G0Ot190GG0CFa10004YvdXb_J00G200W0W0YIeJV30
+08dVgE3Z_RmPz9Kca1800007000800000205K000000a500g@t0W001040b0000GAYWa2400
+00010e00lrRW000Wtab060000800Y000JVdmFn6Ckl1@4@mOv6W0000Cz2GLz9yyl1d6Rm@@
+60J0000404008WszDW600GjiF000XOuR3wNt0089000000WWGG000QgV32ubX1@D8sD3o8d1
+000860800000042M000800WCmtmD0X0000O00000Gc200Uzd1008001HGMX_1G00000810H0
+0yJS59WR000002011Lod0004WKqb00G0GU@6G4088l@40G100W0WCPT32II2000000uygCs3
+0002nXpG8mFqqC300100W08000W180WmVy9000WeO_401004ZZ1W30002vYatF3000O00000
+H800C000600WJyD0001100W8Y0000gL0Iyd10030000Gd9c10040W30000eYWm20000qmEyC
+qEk10Q50sst00GO3O000qGz10000000GFHl70000zYF000000040U@vD3yF00000i86V600@
+y3006020000m000K50_@V0yuZKn@@LWI0ul@300G000000Oz3004IV800GgRbMbSlD0401mA
+S6S5F3040c00080Ga08sD6006000C0IH00Op66030006020C0C080O0008c000000e6PSU6M
+XxX6fC0m410W82WmmD00G02000aq0Ie8p401uc12G410WC200uB1yl@2O@@vb2Bm@_10060G
+9@U000_d@00mK260WV0004HE0_@VWyl3WCG0eh@1iyl1WqU0gy_aB5CO_RCW0200mY38Ry4k
+pMYoGbuinG0040Saf1A4002Cpc3531002KgtRamM2Lfdm7OFyIV2vOdmw@F00G0W00Wno_9q
+@_3z0b00G0WdmJ8RyDMNjY2bVu9y7oZF1W000WgV0syl203G0l6pm4oRiVy3Tgd0000Y@an0
+0G0Gt86yEd740802nr0X1001pYnDw9Snz3ffR0800WBuPeS_4ALt000I000104008G8048PT
+3W000aUV20008W0000Y00W00W0008WdiD0WH0061000002400WIapWV@D00ml3200XG@DG00
+K0000080G80000pztWrvD0W0000G4WTcC000G024008G800009W0W04jl10W09000180i001
+00200GB04W0084200000G1WW80I0W800002000G01000X010a042000040808RYP0K01GA08
+00080H0L18GGW00AG0M300AG440000WbY8OG02W0000W56002I0FXRmS59040208G0ITe600
+03G0000821000G8hLR00880008G0W0G080000GWe@N3022000084WW0126212000001W0001
+11GGK83006001G0000A4000WC01G20A0000W0WVvC000GW80X0800W04940a0A2020018m85
+880X242G01H1a02002000007V8008A0000e10020H1000810WW00m17J0010G6O6G00000J0
+4000G48012W1110400n8060400802G00014000m02n00I028010800010WWXvRW000WTzVOE
+G60O8WW0800010I4n602GW0E040001WPnD000K00G10040000g310G0qPl1pwd00002001mT
+yR0G000K0000070tmd1000Ghvo0004my_D020010200W00GNYOGTx6Kfi7000G8W00000000
+0nGH_9GG4008WWmIR601000891mNnL4gF6nsRGtO6G002uy@4001W0000W04WG_@6W000Qrt
+J40206ll1Tkdm7Y6W00000W80000000mWu500k4HYy7D0000Oqa942V29Gd0001500080020
+oeqWdYC00W8oMy60240eiTFYaF104000028n0200080kUU38204040000m0020600G0000Yv
+EW734800z@RW80GWEkCOdzA4080000GKW0WG3J9q4L200G0cptW0vJeYV36Ms00004Lld080
+000W04aG00000HSzl1Pvd00100mwB0@qZHyu90004uG@46ht00W00m06000Z001008kI3004
+021021Om8a840YAsC0004n2DCKVF300W0wnF1O82GG00X1050WGW90XG0002W0100W0014X8
+400GHe0Y0W4000_POVu9R30WW000I0000020Y0WYfDG8Y0m_@600O010000D0G002Y8O2W1E
+ds0425020210C00IAG828008W46G0W8472OmupCK2l11zR000011200G00001Z0000052804
+6064004W0408412A2200G0Z600G104G0000mRpAj20W800410Mat000m0XYp06000002001O
+a0020I0W00Y42W8080400X01O2eAI0Wn80G0000002ePqn0001PY_6iJM21@d0002WW8De@_
+4Ukt0Ww30DicGwy6G80G0G00A0000A100W8181W200048If0eKG_98100W20000W020e400G
+A81WIAX00W0J8g0000P0410K20GO600Y082OjV9Y3mW_qV8u26cL@XIBD0000kY10W@@D0e0
+000800Y006fiP081W0000G8402B9mWPsJ000HOn@60801410W0G4104G0G8CC1O00000G00e
+0GGTl60a00uzvA0001y@N2@@R0u06800S00WX0G00mrxB33Pd000Qw@@PWW8O06200S0pX01
+40000W84G0000GW0D2WmJO0C000088O4804820WD00W2G000a00400o08C83K00AQVt00090
+TP8n_jO010102W00001mw@J00C0000eWXNC0000mLDF00010400Gw_6iCj1000WoQDX@@J0G
+04mC@6azQ200e0gLt02070000G92G0KLv3NfdGiR60K00OkP600G00800Y800I_zI000W_bR
+3IWZ1W0k80g2000IhG0004040200WO7G088w50_@d10GS9844Yy2zd0G40rB010W1W000008
+_2200HlK3V20mC0cxd4100000UPSN00B000zJ_46qoWu@D8t53_@730m0@0000WLM1y@F34n
+T00mt0wy00uLx4000YJS8GWy0Uk0W8000TH000C00041O0W0W01G5vF004000G0CY00Wg5DO
+XU3W1000303000rKA06CDk10808cYp000000II0IWxX31C00G0mlu6uCC0r800kp00W@@JWY
+000T0C400_P00Wpgdp0W3Wc0xCC0w800it000200Oe3000W0GcP0EhT30008000u10000Wx_
+hyV3WP41uz_3m@k2WRcdVggF5yrV@TV00mt000000f400Ws@b0t105z10WQhCu@@70WEm000
+0W@n4Grt9G1z10nDJ1wl721000dbdmJ@dSqP2rJZ1400000R7n@JITrOqVD61zcmVuFKyb1f
+Ydm3@90W00eQy4I3dXP_D0ai3GPlUiRV2JdpmuzC0080G080GUb9qgz6rzBHLH9q_D60G000
+000gH00eXAFkGca6K2PUV60840Cdy35CPGQyO00uvjXgGULtWZPPujS6000Wiji1nMb00m20
+G0808000W0018000OyT6cbrWJlDOpT301900204G000020WWu@D0000oOu6qRa100000OT0a
+SV2@tRGGqCiyd1fbRGVr9000WgnS3syq00GG0hId004G00G010002100G8092eRS3000400C
+04X02mtS6042000008008u7iCW0A000144em0G42K1m80C20G0002400LWG0EA00100088W0
+00W3K00GsW60G0G8Hz402002000080IOw_9000G10W80G00a5zD8HS380g00G1000W0000e0
+0g80G000G010A0426081800Y01W00A0102It0412IbrO0W000C0000W80G0e0X000000E020
+480W00OW00G00A0G5000000GA0G0020402000G00G0000WNHE@600W02000u_M68000eyR30
+4A080000W800400008100A00Z_t00Z00T2R0G8081001m0000m01X000000mGnf60G000100
+qkS9qqF3rrdmxU600WG000G20f00GW8KG0400400200G00We040AK0080B5O00W5WrjJ8mv4
+2vtWM_VefV3M_tWt_D001GHSu9000G9pV323c10W014002_Nh2000PBYKnWz6000W8a4300O
+42000X90000W00G0043kvnLX6yRP2fLR00008400Y3mTI@wF000G000G08028G0910800000
+GyrW1Y08802010080080GIsU60Wmd@5Q3Yu4Z2pJ000G00W0aT@D00820000ehbD0008ICcL
+Spk1ZCKHe@C02400202308G00004G10G04G00W10060024o44G0WC7@R08w3O48K002WGW00
+00500OO6CwKdXxwC0800miuUy8V2VpZ10Y0eF@D0020Pvz600410G0W00H08G000000W6et0
+000io200UMp0000WRch20GG00822pLRGOyLK0f100W00W088410eAT90W0201WG000582H62
+20W00600H0002a0a204e1K3a4GW21W1WW9071I85100093e408000C04H00G0Wc9e4000123
+t0041G000H1G0001G0040W0140020G0000G00GaKPm68100wLBX__V0K00801C2G000001OK
+C080020162G1W0e6G04189mW01g8OK0m2G001W000m18100HI0K0Y08000K40G5gR0W000W0
+0m2i6G4800WG0a2X00SH00G400wVaXZnb000fGvQ9Sh@3008582000I0000044000mE_D00A
+10eWC100GP0W801G1A1000HL02000mWU6teOS300G00200G00f08J0040WI00G000WGG10G0
+20Y0bK2000G9JeBH_qCKhO58I0W_vd10080q0XG8290asV28220031000Gv5400vqu9y@@3T
+VRGXZ6W0000KA8220G10e5G2X05e109W000000K4D0W0482000GGVdiYVzDusG36BNYj5DG0
+0GI3h6040e0KW50403HD4612G02410o82amGG0000Wc0G00mFJjHMP6000WZ00030M00W008
+80810W021G040A0Q0111000K064000mH0Kyl45vbGWlI000G081a02W04009000GX00I100a
+0Y2008000G080W006C02082X208WS3GCW0yTF3N@BngmC0001020200G090W0002n0UcFXqn
+tG0G000IW02080Nh@00860001GC100seF10G04eL4081e408000600010085e00GQ5000Kq2
+8000009IjvR4Ck1aXOH0808n41008020G020qM110Wr6G@1020oV1G00m@e6yrF30WVS1000
+G@z38DzD0002u10000O6008300uX@201@50YCA0Kxd1WwEkxN0y@V0drR0Gm3000W00eY800
+0000E08RLC2FmWm@Jmh00000yJ10wT2W1_Bh630W000020B9r03000W000kkc100G80001t2
+t00N460C000O0000x08nD30060A0k0K000Az000000CIF00Y4t0000GQ200AGk2004J00WHo
+Yp0W0Wt0k8C0SP00qH086k4000WN773@@p008YyGqh8kV3y@_00W80eH93W00WW30Ksp0mA6
+u08@3K0eNC0006Q00_1000c95001A00@W7102xZ48kB0e70mWF00mp00ehxSwExaf@J0ii3m
+i_IqD_6JaVISvFW080uWUF0020CGf10000lXAX1rD0000BJ02WszDO2zG_jEXvhV0084GUO9
+47_3rz6olta00G9UOzM0080b5tC080WEEtZ3_DGW00Gm1Fy7l10rP8kaFXYvD8kOC_PcX85U
+eTD3_uB10004@@R0002210002e4G0G0000X00000GUu6G010W021Huu6W000iFL302020060
+esU90000YLG0u9U6Y7dXCpPe5R3AHFXToD00002004axzJuhU3020e8A0G00C14005mebDu2
+B300WX80I4000400104048000W20W0W0008ytO301e00HW0480205G01W8eWK0G2W2g8G500
+0YG00006U0500G000W220000GH8W41008WeOD0W00mXu6ylk10040180W00G01083100020G
+0W00000108000GG01m002800G00080008W00018400005040000GG004000A30001008000K
+08K000G0G0010G8180WC0000410K40040000Gg0400WW0900080400W040400200G08000G0
+W000WW3mfIR0200000W40400G01WyEj10004oSFXtfDu@V3G880W0Y0eeV30W0G0814W0C00
+0400804080000I4002W0K1008000O010W200040001W0000012200YW_D04200002Wf@JuQU
+30YG000C010200100919080WGY806000W000006I10WVSD00W00A00WngUe4i4000I080004
+008010aTxD0800mm_9yhR2779H836KtN20000Ebt000G05uP080W800G0Y0WWs@t000200Wi
+0W0008H00Ox8300mq001229100040440002802Qpt0004G@sbGu@C80000000HM_90W000W0
+G11G4WOjJ8iV3000800020W100001012020Hm0MJt0100061006Hq00G000X000002Kql1rD
+R002102030h@R0824WtxDGWf0900W000820410001028G002000W0H000W4614CtZoWdlP00
+80W0004O00IR@R0840WTsD0W0200G0000O000m400002810Y40d08024aW00W0W0ksyX68D0
+010004W0000000Y8010000Y000001022060000022G00GW02804WG0000MF300000000I020
+046D0000004G001Nnd00G0WttD000100220G014W002dat00WG000100W0GG0W0W0Z18G400
+201004008204000JOl034G00001G2410000080104JoQmk_6004100080H0CXlwJOoH30010
+G00020W00050etyD00mID1G0200qGtWdmd_68020uqU6E6EXfxV004G40008G80000X0Ikr0
+000mA8420e05W040L05W50511C001G5300m48ckl1c1041G10200108080G6S401004Y8082
+0080W82048048082239A402G09WGY1408K002000WVf40W0K81181210G50G014102G00840
+0K280WOW2010WnD6908002G0J2G8000I301iO0000G002A08Y0e82Af24A40S0mSo6W0a02I
+024WGG8WAW2040WHAW4Wa000020W110mY_J000IW1G0000W0KX804080W4H0010G00018e8G
+0K00G81A11W901C08eG054000CC4a2Wg400L1724412U0120G04010004300WA200o04082W
+9@D0041mGe6040O00WC00qG00GW0009Mf840X8W120G04e0010GC28fW000G4G02KY24004W
+00AH4Wv_R02000000G0840100A1000G8G0250000050KG92_ydXk4DW2000800WonD01A000
+0Fft@DuNE3sxF101004005YOZXYiJOdU30020000K0aK0081G1A000m002e000Y100GWA000
+0241G000A410404008WOKR3000W002000Q0mKx68C0000142000040409qd00002C0W2G000
+8Y20_Qg1VMR00Q20G0W2XZ@000WWDyaOQtA040Yiuj1dAPmt26041W3O208G000q002e0n0M
+is0000044004004000SO7L3054G0101yp53A5o00O10080i0Y850000W528Gi160000p808W
+000020140100g_s0000040A0QtNYakD00WH000WG0W0AY0800C0WGG000W000G00000O1C24
+0G1CX20X50G400a8000G1080WGA1D1421000W000O001W0e@V3Ekq0000fHod00041108021
+10002W850100200Y20000NGY04000mG8562000W0000f3ZV8NS30003zIi4W000008G08000
+G040000I0W0001000004p00a0Gl0G4R600Q50000A2W00080ejiQ00020qU0100q6Gp1G20I
+R0000GIA60000020GOMk6aOh100c00000A10000_J800020G00DwO00W10000W0WG10004iw
+i4jadmBw60W48K40090Q0WS@D004M00000D000y@V00G4G0Hc1G0@p1E0mV@1W@0000000@R
+60000_uNg@6000E00weZ000EKf@@0CG50020mWC2m6W20g_F0080807Sm5y@0W00G000WC00
+0CizV0w@V00F_y300e5Dq3Xu300@70@200i000ew10W4000GEv6000YK0x2A0wgxnfJ0GW10
+0yF00040kR0@10000Wg0000eCw200o000m000W1e003mF26Wv700C000010004000O0O0m0W
+101WB3004200O9000N000C05080eGG0mAvD8F03W0e0WA01WA06400C4000000254200GH00
+06020C0C080KHP1m0G10XEWD88T30060C2W10030000WI600G8000D100g080W0mGW18Y00G
+bPmR30mp@30eXc20080mD005K0r@R0cV70EhW0000FU4R30mF@00000Y2F4Aa100x000000M
+S000WoE0_@TGM40nMc00C2028003vomkt6qxT2_50000002WV300EeW0_z6K000WAi@06L10
+ge2m@04mjiLii@6PWBnqxC000WIE00mZP5jYV20G0000K04iV2fHPGAvLykV2nraGu@CGG00
+8kL3008n040We@V32a_10005TddmY@9S873Zb@GDN60000m0000G00XWpV8NuAUZRZgrP0aD
+1nmSOSlY1LglHOxFKnV2Vh@mq_FaDk4020GIJ@14000TRR00041000KA300MurW8khOpyMUN
+d10240duQm8c60008W050Hy@6Kuk1008080040012100121G0WHvD0W20GH3902W0utL300i
+u_Gl100A0Udt050005oRGay90008O_T3Mfs0040W0000H0104Kk1tuR00WG00G20004W00W4
+y@l12001geF10002200GYXs084YIViQG896W00Wm0280Wa108000W148Utt0800W8014002W
+G001m80000NI00402000I6tsWGpJ00002002mK@P0W022201Y2yDeWu40O042m02400WGJt6
+000G0W800000000WG08080K00y@l10W0100X10G01W0000240Wp@D0040020e080K00WW0X3
+0400W04W0J0004WQBC00020008004W40008a70000010082SasF00G1uCQ3sut0800e02040
+OG0000G0400001W00080000YEus0000eB@Pmdy6yj5300000W0020088M13001G03C08tJ32
+Yt00GI8JlRGa_6q_c10902G0G402002G8000WH180018000EEs000W06000El63G00GN@R00
+02X1@D000G0102041008001040000G0100RGOP9KcV50002048GSIY1V7Pm4zCW08000G00W
+00800014OC18W0GW0000O200000m7_DuqR9M2rWBMV04000000Y2_D0200X0002X000h5O08
+00000122800W001Mxv620101820000WOdV38000W000umV600I02004208800W0I00GC_a00
+WW140XW000H000800H0008080w2T30402n_d020602W4WC18009W0qzl12W00100W004W000
+000O8XFah0400000G00061PROmCoI000W00Y0mu16G00000W7D0100001cpUlnJyIikl1W08
+06Tt000K000O00010zlj1000W00GK01000aG0mJwR008W0008m2u6icl1dSP00820H01000W
+8EvB1WN72T7O0400WacheWV3cT@XfrJ00G0mKy600001W00010H0040004W0000G000mG500
+mqvI0400W440404003200ae0WD100O0G0G00WG5_9020Ga00050GX00ZW0e004000GGN8AX0
+24045HW_lIe2u7EMtWjuPusV3401W000000I1WH00OW024e10G00W18014W4Ce0D0W63M20T
+UQGK@C4yf141a0040X24O0GW03Gl@6qsj100G40W0W200220W0CT2002Y33801K4gm000mEI
+106X8aY4HWA0YOYYAMmWlzJO8D30W00y093G040wUq0W0G0aP2I1WG0YA1440g00W40O0G2G
+208014080GWKg4_AK000qCl1004WG00A08IKWIWY00G00A1209uBH4v90oq00i820G12enRh
+ul_46iF10001I000e0000003000100310404G081000001028000040W01X4008W0nIxNYS_
+D010000C500GWYG00200048Y0KG04HGZpOqQi1G3039108W024f0OFwsFXFrJ01800200CG2
+0WhYP00800A100DTQ000081800x@N100GmjHC0CK08m80000W00200nK00W4i0Oo@4M2pWn@
+J000f93X44000008C0ECtWVGD8q@7E@N200500000000m000W1G0010200W0a40W8300G82G
+1HuGU3EvoW4nb0400GxA60020G2000280WTVV010CIfVC08O00010r@@X0X2eyfS9Ybq0008
+I002002a00020G00100uL0G00XnO@mev902000G0070004aB2Dk0O80Q30Dmh10WM0kanWCv
+b00007QW36000o4900YhpWq_busT30WC0KI_3G000O2S00000a800GZk606800082100WUq3
+0000100WkGy@@300ge000hERl1M0400000uz@19sV6000p2U00000ml@10002002m@@4mW00
+0eXNy10CW100F0100G4Vgs73U6P0rbQGXl9000K500Sbx30OL50_SLSW5D1axFY0N0_@l0_N
+kmtC0e000WA0Ww@V00C100G0O410W0200C400GJ0006W20C0C400kPnkb000000206000CI4
+t0000009lY000O000u2G0000J2Ynpa0041GMa64yF3820G00W01002200G500030A0L0g8C0
+KHH0m0Ya0q70YeA0eY80000ubF00q7F6000m100F0W@zFzV30Hy14nl10wV000080W1000@B
+010GV@7Wk0008bUc1mVc1GCneF00W0UG4000003XxXyyhW5t5000000qT0GtH0St1SxV0000
+CJbg200_74ptIhouPXS@l100Q7NysZKoyejyJcix1G004T_@0800XopV00400400Xt@D0OS1
+m_@I0020eHW7AJlbQrbOrT60000Lyr39QpGBx9800GOMR30000AQ008@@A6S@XLasO9_ScWW
+4020000SbNUOZMAVeU_J080W20000402Olo6G00W040000X06W0014000110Wy5l10400X80
+W000000GW0005WuzDufJ300200G0m0002In@608t0uwV3gVtWNdDO2V3_a2ZSpD002WGVo64
+8j100G0Qwt000A4W0000GG40W80W404W000KG0009ZP0G004b080001G0W00200200G40050
+11G8e0C0080eG000G2010000030040G07880200260AbV3G3G0We0020WWY00W08GI4bZP00
+1002000bzd0000HW20WG00GgFpWK2D0W0080W0130A0000408082G80C2R308000O000W821
+YX140001006000W020W14W01118a3G18002G0W000W02000H0WG0G0e05020WG05G0002101
+000680002G0e1c0K800W901000000WOK020YO0G0010300480YA00W0000W0GPgOG6z900G0
+600100W018000080400080408G0W00O4K0G000840Wwgs00040000G05G0yFk10010G000G0
+G0yRV6cTt00100W00W90G0W00000mGmu@6qul10200oVt000C0XqR0ep1WnlP0G40mO8LqUU
+2Pw@mRu6G00008W0aG00000087xRmmz6KUl1@ZQm4S9CKl10G4061WXF0Du@V3G40HilB300
+0O598WW0G0u@j400W8SCYA00400004004Ce7M36Lt0002Yr_RmZt60100SdS3cnd1000G048
+W0000H02000100280000808800000YqNj1B@p00YheZyJ0100010810022npXHzbLiwW1I89
+0oxdXnqC02000202WijJOP130802jtl1480088000020GG00u_36KPC6WyQ0_@t0G840W000
+8400SHv63l9XGG000Y00000G000a0810OnR3UftW2HD0008010001006o00WG10W0060OQu4
+Ee@XXYJeJy4QRE1B100vvRmH86yPm6ZDN1100aBpD000WGIY6000G000m20G0045408G006o
+q0W8W00G0010e001800W000K0048W8600WW804200G00401WG0000120GW800G04L3z300yC
+QGB10020404000M54IXAG0G1X0f202E82XCW1001200KW00000a808000uKJ300G2W02400C
+0X0H48OW060002800e004W00G0A0420O010G000m0080108080mW800008229wPmpj6iul1W
+N880e0G00G0a88E000418E04VHQGUGdG040408W0000102W68W11G013G000009010K0W8sC
+eox44A0AH900G0000b0Wm@_D000004KI90A60W00W001081001G0emNu6Kxl100001000100
+03y00Gz@6W09000AG0000WtnD8ueJ0044G150ez23G02000AKe@U3svtWQwD000e0G4X01H0
+100I40004G45G0100020014I818W08G000I4200WW0maz6WG00Ov_4o5t000uFnsR00008W2
+00hcR0G80W9cE14200H10000W88000GW20szl1Vtd00e0aryD0G2nXOW0201X400000eW8m0
+0000800Z0000G0GC40OoBnWA@D04X0GDvI00M09ZL30GC00000G6000082W5X99TV3028400
+W800W2800W00408R6N1W000800002W0GY00000G00008000kTmD01000420WZyaOEP6000Gh
+N84ulV3QOrWmiseelAkdF10400PHR0210W8lJ8tR3W80yB0000Wl0mm_600g50GW0EJew0W2
+0vU180gLs0mX0000SH0G10002IOe_4000W08H000G8OuRF800000l0mwMdWmA00m0qm0z600
+0WH12002JGL0CJL3UR000820MT0yQ10iRc10002000G54n72x200bwRW030WEyJW@0000W80
+0ml900W5A1M2GAh@200a1000m3uzlZV30Or1y2s9Xtd00_@rrxD01000041WhkD008000G08
+410W0000K600GH00WA010C0pC80kD00OY000746k107040kTO0OY00GD1GU@6008040002PG
+00000m82000000H10086030WY080C0K800sXv6yVD9XXR00W0G0m48a130140WI600uu036c
+c100m@2WPu50KwZVdS6in2Gka900000mg30000K0200000uZXoWc@D004HKo@900Wu100000
+0u591W0S60000W000Wo_NDL010@xL0e7y00000FSg2000Wgg0mg044U8@jroZl9qFcDPa@mH
+u6aPE3fIbmhvU000W00G0H2wO000WhIC30100q@D3bRBHEwC4@c7NwYH6y9SoU8v_@000obv
+sz8byDAeFXCtDuJNCIAQZm_J0800oixR0ck1OyU3cjIbu1yOlT3W040W0400000KCw6Coc12
+00W00002080OAx40200Y00G4012001401W01RsRmsv6a_E3S000W004aU89nuRm1d904008F
+S300108W00eoR3000W08G004001020cExD000X000C00442z@R0G44WW@C00854GG010W010
+0HKW00GSSd1040000400W0m0WG4000000e02W00000mhqml1NdRGgLXKSl1B_d001W140420
+08400082G000Y108400m93CW0270800001400M000W40WH108zV3W30020100W000040G4G4
+0WW10C80A20WX028041008000W0180GW0Wawl1KG0000000a11OWV6UltZPtD0W400001W4u
+C02CY009000Y020O40AVB10W20zEnmm_98000Aa@480022200000G0000asLDO3O3cyFXo_D
+8GA3OAG000088uV3o4AaXjheUO3008000W60G2000C0Wq@D00W4GOuL0800H000X0WW0O210
+0024100O22000W0W00C0004000WW000W0qBe1v@R00WVaA7F1048mL@9a@P2TyPmxm9Cfk10
+8241W020024H008Glz680004000W400WjvPu8S300W9yjc10GGW0000100Y0800410002W20
+T@dWeab000G0tTIIQcOinU2tkbGht900W0004WG7TFSaU20400IDtW67C0000WW4004400GG
+0000084iU20008L800ihYAFAB18H01000041041002CGl1HzR0Gi0Wr_DubU30m00S3l1xyR
+m9t6000muJB3G001CUl10aY8QKN2006afTo302m00802200000214qF30G0He1049G24H008
+W081WboCG0000G000000900020002980Y084040YY00E1I08801G00Y1GW2XS00GKW4J000G
+aA06@F10c903jU2YG00Wm00ldp000800mC260W0WO00W540GW008400080o4cG4100008008
+utV30W0100Y0000G00GGW9@DW4010X100K0222i2K8020080WW0008I00G5eG00eG2wmsWry
+J0000932G00W005zRGeid4cR2V9R0E0G8020WPtdmAW60800G8000500Wd@D0280A0KG9000
+000IW00080002X200010000041G00000GW4yk1040e00W0L@c1X@d00WyD0000W005Ykr608
+G0G000Ius0A00WxsdG6_IG0900040WG0000G000005090000801003020AWs4CefK3G20X00
+208mt700x04tI817jXAGG00001rtR00W0WL2DePV3ETq000GWe00W800W00400010200W122
+0001G080008HG00000WG01WNND000000e01m0C0P@@0000Qu308FhfomT6qx@30A00QjFXLv
+P81S6Agt0O000tmR02W0W1ah8lV36q@100zDPysokbF8HG4OmT300286vk1bSRmcv9002100
+0W02ej0000WQ000o1t0mG0100q40340yWh11ob0G1WO20000o40ov@1G17020000G20ylC9W
+018kzd1000j4020G810Kvl10WG80000WYi30000WJE1800Wlee00000_Y20UjSQ300482V00
+umT3000G00zz70WoE8m7@CsD000000uF00000WdVY000WDgV2000ur200q3jA20GGVj@1@@A
+0ny@Gkt601W00402040H40080000p000O000W0O0W0G6120J400P000GJ000C000O040m0G1
+01GQ2004000G60006000C05WcuC8_V300SDz@V2004HQ@ZawzP8mS301e0GI02uoI3000g2W
+gU00000F00W9yI00d7m@rIu_0Wm@1000O4000n7m70z5000004j00mhl0GyH00000iQ0M@F1
+WX40Fcd08Y7WfeR100a90OdP0000my@w10W0yrj41Ux1m00WWl91000iW10WKUy8HCLQn_Xe
+wDOFS3E4@XLlt8@D900yJI000COM9k9OcjkP8OU3MAsWa2WPiD9cZtWPmbuEz4Mqya7TR9qj
+M000mOS008IXAECF780000032cbF10002001008014EV200140020CFl10014sZ@XGwD8If4
+0W00000bz2@7Y5Ea5FJeDV6wjF1000A20005We00400W00W04000020W00480803000G1000
+0GG0100WWGWW06Gs000004H0180100014uBV3e000002G0200GW160G000Kb0GMy6ygV2H9d
+m3rFCsl1ZKdGx_6805GW2000404W@JD0020000K000206408EsA10020W0600W2000A00004
+800018W0220W0800000028IC3m000yFl1001200000124G0000180000090000f500CrF3p3
+pmV@9qNl1ztdGG36Cxj1OG0100040440e_@4K0000061fMV3U8m00400h_OGCQ9a7h1twR00
+20XciCOYV32vtWM_PezJ32qdXI6CuOFFQtdXK1I0008Gi5BLwlM558QY2@V8n@5QeEu12WHS
+p9fWq0E00yyBCp03JQA@V63ORET200083200JMPJxDB56i700qCI@@40SE800CG00020KM4N
+8O8000HJBN28m34mOW84H8z045Q9AK4K0b8uXE100cuCdJwn0iL2mlrg00G00H20k@400080
+00H00Q4r0W00048r7800@H0W0b000g300WkGj14HG8a00WqrgWf00Gx@dWiOLy@V3oktW84K
+93f@lWw@yis8uV900CXLdLWW000000vm0440OS2ml@L06F1uth@xDx@PVWqj000O04Wpvi40
+V6C200000Qw00_0mC004Z7d0DU0IAugAD39gV3gz@1001Gjb@0000wODzeALLcVFX2uD0000
+Kmn9KsE60100_zFXnwDeFU3000WCMF300EysU94020004002TLbcwD8yWDUSkYLzDeN_4wgc
+1mV60x@dGxk6CNV5NOJo5rFyug1zCi1G04W5fm8ZV6000Gv500eEQIYHu4000000A00C4000
+4W00000041WTkD008K0eG00008040840WG080X000000G4140002GG110084qYk1ppz0e000
+400000ekAsdX2@JeoV3G00000200100Opu9yml10002gmt000G50040801a000000K0mf_6e
+W02041020040GCG4090G04WG1102G0W4W009K0W88080G002WG0G01H842120G10CW04Gb10
+800G0483K300W4Suk1010003G400000Kb3W00008000DRp0800merP8fV30040qpi10210UL
+rWGPP0084008010000202c900W208G0C0046412403W81G10013W3Y704a21H844C019803W
+0100W0X001080KHY0a8C0W02WE4@1000400680800000Wmj0GGbx60420OSs4E1s0000GBlR
+GDx60800W00G0002G40000G008100001007004000009008008MrF1K101D_R0081Wp0h00A
+000n000E2G010000A001W80000044001000000GW000b1l10080m000008UwnfDcyt0400CJ
+7x118W000008WW0sht00G01Tv_mxzC00G01805mLx60CWH00010000b1RD80U604000W00u_
+V30@M0KJz3B4g2008006100002G400iLl103C0G0G00000K00008140G08GftB10800G0002
+m01000680H0vZV3oY@19a00H1O02WG000G08500EnIbC_b003200210G290v@d0300G0c00J
+0R00W000W840010Eft00W08T6O00000080801W00200G00W00080000bIsJ8z@4git000J0X
+Eopho9000Y00m0pl_9008eG2000800000O00004wNE1OW00tmRWW000GO8000000W0G0Wa0y
+NyAosF1GeF0z9Cpl@Camj1t_d08m004I08aGY1030Se202400m0G0WH0800zyR0800040860
+8W00aWCW4XO18C1aG10110G000014008qSl1000G00300020W008010K000089YbG9A6iUX1
+BVs2Y8H4G0X8400040003O04W03000L01801101000Y801101eIy400Z40002K148529C080
+AYm0Y901240H085M0W1000G0084@@R000W1004000140808000000WlKknIiweA602He2200
+1002G042Kf16000000K0W0080O5KW808000GXldJ02002502I00L07GR00GG10440000b0W8
+0W8000G0000G000e00x@R00a40000G82000000280004h1msy90000QgR3o28X6u91GA1mP@
+6WeG08JR30GH3arT2zpO000G042008000002G20000C000G100610HfiO000W0A0002WG0B1
+dX49I00007C10WY@J8p53csN50e0084G8G00Y4yV20030O4009000O7S3kks000000140000
+22W00000G000020020021480WSe8800000W04a0G000820000W0G00000003400000mWW00G
+W0G000eHT7@7kGFXc_9XH0020G00W4805bRGz@CKYl1042W1003imV5W480010805M100029
+0K820WG0000ew99X7LCu@V30z704B9F0W0000WG1802008100W2002000Wm30000e100OyT3
+Ge0000080C50000D10100LyRW2G200a00A000GqA0000000W040We0400eI0006id1m10000
+KH00000700u@V60314000Ju@@J00G10008mA00000GYd@JGG10002000WD0W7KS1az@ddh4W
+yp0GSv1000204040800000WTk300_@t000Gzg700M@t00GLt20By0000000PwvV600WL5oRB
+_0WNy000JT@cne00Ydm0300000O1P000O000m0e0W1Gb11WA30040000H0004000G0C0m04Z
+W1W200G9300800006000C040O0kDW0u2008ZSqV2040C000O0ec00G5100000mZ50trp0W82
+0WC00l@t200WA02060LCC0O000m0000010y@70kxFGK@V0500GCg63000rzF00uV02000W10
+yN000iw0WPt1m4000D00WL70W2AWl@P0000k000naKDGl00GexySjl1My184@i0000m060CH
+DoL8002ek@44800iFl7@F@000wjs@V0800GdS9C4cA@xR0010XIwOudQ3080000100000OI@
+600W0uUi701W1SqV2zKN1uU7WuzP8xE3QY_XAa2HGI0Gy@6icz901006wDXhUPOFlA000G9V
+00ePx7240ZIa310001000akJD00W0mnO9000G01080800YSUD0900GznFG040u@@D00mMDwS
+2vBpG4pFyzi700Ga0400000G81E30080NBE340800152yHO2PCdGzl9020000GG1440G4000
+VKO00G00e020@@d0e5000100000G001GW000000HGcF6yHi18001QWDXvtCuYE3_wm00008G
+0A2000G020a20000041200W000440408G1GG00G80001005040040000XY141YA80000001m
+C20040HI0We0W1G00000X0G0W20040400W03GK04W0Y00G4000200204002002005000lC00
+WMiP0001000KWR3D00801G000002004000800Y301OzG308000G014X00GeH60600060000H
+080006G0W8081038200W200W000G04W4G8W00W2W0X1uC830004IH00000102WG80301000G
+04W00G0050A00010402008H0W84010YW060200200000A000ss10G0W0000G0GG8X6GG000G
+100002400008a88gkp0000800e1sXp0W048000GJ3o0050n800G000YWO0010GG005H04840
+0000RMoWHmD000010W000C0G0e21_@s020040820sFn000000101000K00202f080W02Wxhb
+0Ws1mjlF08I0O8S6I2F10025dXd0800auxJ0402180000001ZRa04p828000G000C0002004
+0G80mWv60WW0v313QMp008000G009000iIz30400Uvc1000eu000UmpWBqt000OmQwI02020
+001oFc6008404O0W402W13D040040W00204001008102G00G00200GeG0000200040000220
+010004XI008B02TuR04884022Wvud0800022W0b8R002WEW0G0@@RW400WbaD8BP60012006
+08_V6IJqWrGD00W00002020408080000011000G48G1K600000202000G0W000VCOWW0GWso
+D000W0020azFD00G4W0020004G0800G210quV200G002G101W000000Wm308000B9R00X000
+G00noRGly6ard1p@R040GG80084GG000W8CGV208W0kUpWruD02I00040WKlIOx86001000W
+400q0mF56igP2P@P080000801nqzW00000080000Gq900yCT240000G02KED3l9QG9_Fy_i1
+0W2GYQ91GW100030080G0000In81e0200W0G401160I40GW08W2000121005W0AcA1430001
+0A66000280AmG0G2W04G088W0H0W80040K4W7sPW800012000100PHP0X84040004021_VmW
+OiJ0048002O020004W10oDq080G0000C40000H0010Y0200G004824g004520Gb0H10H0882
+00040n8Am011040G0100WW880201G0044W9G50001080020C0004085g0005W00I1GH01321
+005601m0H0X8000080001020GA0000Gm40XHQ0GvI88W00000G000800GG002W0280WDRJuq
+M3C00000080200840021080G4004800000G420G2WHa4W810W0G2G8G0209420bG080W0080
+00I120W0G0050eJM3000820G02G0001W00AG0W010W0a24q3d10ea4000A100000908b0000
+O60KG100L40WC580000041G90000o600UZp0ba002G900002H80KANN90WI0000G40Ae0002
+abvC0a000W0040a0G0I90@29Xl7D08WG000208080000HG000080000H0008W0Y00802000a
+CC0080000120WC000000aG0091000e00X0Gm@@90K04000f000m00G0000KwQ0o0000W840G
+G00A00CmOCt400XGcEk1rVQ00C080000WG000000G40000WG00W9E0WC1802Jkjr068202W0
+000O1S5i12400018Wy@l1C2WW04m00400300801a200080084GYtp048Y0GG020I16W5GK4C
+X0800W00K0000G08YGO00AO0G000mo004420D@Q000A00O0C0W006zF180010001800HW000
+YG0000000080A06001CWW00000K08W0110C040G01000G000400140000XmgtD0400008G00
+G0000001GH8W0X00100008400G1464O0k5m0W480G4G0G0K00WW00202a0HW008000404010
+001440A0000000000iI60H7aF180020400_vb10800m1000400sjC30020800YsEV2HCR040
+0818210200Ge0000aC100008104000XW000001m10000wY8mun6002D0500W608aKMCW0H8W
+8000q700Y0yNGO02808Q0008W0082000n20W80qB000OL1X08W90WWJdD000Gl400WVXV8rF
+3i2X1aId104040W00WO10088P2w10000i9@@R0W00kivC000000sO30000Sdeg1000Wg00G5
+A20GPFWVYCGW0O6@3081500200zvV00000G4_8Ykk1B0000d2eP0_@F100m_00000SW1uV00
+0Wz1000001uFy0000uV@0WPc10cP3m@@FWc0WGy10m@@6000wMt00m@@6000gM000W0Ag002
+000Bi100000e02W0o000W000W180GIWL02084004000Wc000O000O280W1m413Gb10WEGCS6
+821q1W2e9G7H7WzMa0xj89m8HI09Za0o021a44Ze3869ImyMa20000MpZ091a400W0800301
+06WvC00ZP00mG@901020602000pC00G80001@7m0W8260T400OG00Wo000A200G080W1GOYA
+05400A8000H0eF@10Kp2mN_NKT7Ys0000400Or100000GP700000i0000000ux0C301uX7y2
+ymJbgWdAL54LgA8u5UGCZvW0m@W3FufgAgILL22pC5ag000WFW@1fAL10W@@J00KLRYgC00g
+0000008YF00G1000G0000S20000Wp3000WV@7Gz0004XF0000s11u0004eiI1800vNQm1uCi
+wk7vQdGUN9G001v@@700O0y@lARNBn0vI0GG0e_730040cDk79a@Gbs9004W0000Osv9000W
+G0200010W_uIOPRI_k@XOoDG010GHv60200ubR3A6N500000048IzcX4rP0007G5taaj0CW0
+8024F1W00Wn2q2000XcpDuey40Ap10001002Wm@@gCE@3RjR008GW6rD8bR3WG4G04000000
+JlN94Ml1G0100030_Vk10W4010000G400101000000402018000G0_nk10806ckF1d100ZfR
+GKC6arj1@@R02W8W@@JW040mFv6iFV2ZcQ0104WbtDW00G20001004201We_@t0402m20110
+W00000412804K009e048G041022804000WG022G0L800WW000Ynn000A0D9cm0@68W900000
+00W2YR5C0202GxM60010000WGY@6Krl13NPmpN60042OyB300042050000105000001pG0K2
+100003K1eB@4olp02100O00000W2W005440280Hi0GW03aW0W0000140PYWo8000C4080GXe
+R04024G00G0040Ast05001DsR0eY7040C00001gktWM0C8aB36toW3sJOBD38000CCk10040
+e8020G2G40000WOL0aW20820Ye40W00090900W0Y0G05040200potWigCeHC300404mF3jtR
+000400W0Kvyd000080W00VZR0000I6300JSd0040140025mdGK464sl10G02QvY10008LzRG
+Fz6000W01000000200G000010001000H00020081000G0HYOGxr60eW2OJC300200O000O00
+ulK6SKM2xTB100DZbhn8ESF0200iqa10GG00W0G00G010H8Gu@90a008EU3g8n0O08248010
+0J0WW000040mux608H0GWW0mJt9qPE3db@W8Q3WP7Lv@V3440080000G01000808104zTpmo
+U90408006W0003021n00G00020G820e8XR30180000X010GqVw908E0uLoD000WvA00e5bM0
+0W0000W0801qog6iGi1fod000Y00G04XzRmRz680WWCSU3080000808VU3G000Y008000000
+e1WS@PujK3kKW1800000kCYSD7080G0008W0W0G280000aW80021804VrR0G00008W8G00H0
+0A0G0b95X0m00007W820008WG48H000WWGY0eXP2Ka04861G0004800C00080GJL6ifg1200
+0UgF1G4107xNnQuOSDl1212014WHP00G018W0W0W088400Cm000010001X8040400GS0WWm0
+H01GWIW2bG40800P0Y4iG01YG84n010e00420800020000G000G01KW004I0unw4080GSK13
+0W00000W9D00uu@A2l63000Y000800I220004W008054H848W08W080W41H08vaB3W000H90
+12G20000WG80000K900G9004bK2W0000AI10090J@R003000f00xePG9uF0W40OFy400K6an
+D35IpGdA6iRV500800e2200GK000a080G9A1G80Ga00400080000Ae004800G01aX0202000
+000500822K0702528W08GK200104v3S30G040108ufO9wcFX1SJ0Cs2G@@9i2F3W200G001i
+ak1fkA120GZGsC00046m8W0000K00J20000002100Nm004400100aZ0000C2GG0030100200
+6030G2GWu0G40Kzl11bRGRB6iwF3VlOGkaC000W1h00Gx@FqpY17fW100Z000000834HaH00
+0GG010m2W0O00008008W0040qrX1rxdWG0020H80NnQGym600e00000oKC6Sok171@W000W@
+yV00myy@@O000WwWTC000022080000W0002000480Y00W000902000040WaM20000t4WA2q0
+00K1000Wi2T70G00tB00Gb@6WO00000P2Y50G00W99bd0400WkDD0i00qbo60024u_V30790
+i_F30060000020W0000WKsS9Cth4020OG2100q4eL2000WV1ekwD00m40800G94O0bDd00Kd
+8a705W00WP1082V005x000003e60C00W2004fE1WuZ00000@@0qw@6000uHB00ykE3ZO@m@@
+LaPa1Hyp0WL70K00GoE00000046U2m0u2W1W100my300yKYu60C044OlX102100r400O4000
+6000g050G0OTD60000GH000C00000C0W000M1F100Tcbpp000Ye@@J000m400000J40@@@G5
+v68800r000GCS6G5W10H0N2H0Y800G8000Y00_@300000Y8F00WT0GL0e0200A0000020m03
+0Gd58110r_F0W4K000004501mF_1u70O@@17O0008R1y303rB18T4WnmX1100Wt10000Wz20
+Wi50e@B0ur7G0000hcV00000Ax00F00aql12808wwrWOsUexvA0G10aXW400200a200000Lb
+00GwtCCvV2TkcG_SCKzz3p@dGHTF010000W0vFO6W000100018G00G204d@cGo@600A0usk7
+0200000G40G09O00002W44040110000GiQPM3kxM24084phL1O0000220a000du@XUXCeTz4
+0eG20800AoC3UFvXbmJOJM3A9@1008001Oe0000IWG296T30u60aYd1zb@0048WnqDeUS600
+0010005G008018ahrDerdAE_o00210NMc0G02WddDOzR30K00qiU5NEmGdr602200000ZK00
+WOsJu2_76E@XBrzef930002qbQ2e8G0012000W4PNT60400C9l10801GG50000G000800200
+4100004040804hG280000100200000GGPJQ60020X400004W00A00040YkZs0G1W0L@R000W
+80901010AIgWXnxD0282W0040G80W00104480G00G121H0G0H0G0202G00_ms0082EK11002
+80040G10WI00090Y008002Y018004GW0W000OW0WxyDG8120G40120H000GG0GW8y@l10Pd0
+0088000Y18008002upuCm801mn49040G88H30804000200G42010000080Ku801e820C2K02
+281K0H2WeYG410WI92Y1090m8088008G802G0W000X00800G44Xy4@600e00G10808000002
+4gm2100Gq7c1fCQ00GGO208WGW00000400A0084200100000W_50000X020G84Gq000XX440
+110W0088100010004G020020m0002G080G4W0a00X000W00ab@D0YW040010400409a0H0X1
+GgHKY08H06PHWBoD020800f000200LCR005WWQqDu10300Y00G0000W01000GW0200840YXr
+W@zD00102200aNyJ00m2H486qek1z@R08c0aPSIOgf7G000W2408C73G020J000I9CWmg06q
+Rj1rQRmdy9008000G04001WB0D85@7W000810G00080404WhOJ00020004G000W000302000
+G000u_1mYLI0026020010X00000YG402_kFXJfDW000mLW60100uke480002004O0G6w_@1G
+00580000O01KeU20210UG8XIyJ00WW0004WtmDuZV3000HPJ00u@@400802G90uuR3W00020
+GCG0Y8oXK604W80480mduI000GG08000W082200HudmJv6W000e@r4EoF1000G000W100010
+W100X11W00elVD00400410a9FCO2p700G5Uj_3hqP0m00000W0G002000K0846ZPc10W00WV
+9J000086000O0228200G0W04SU20040F1LYjiCuYT3oyt08C000180002000W40020400G2G
+0002800CC00SK03W020cYt0WT40NHpGNz6y7d1G084IktWOLJ00080200YxyD8gP3MOtW1xD
+G0G0W000G1000PpR0041WIxD0020W800WsJD09140W000820000084X020G2211028022G10
+00Y80X51GW00Wa0004800820184W00801G0200WHW00mN@608G0000100K00004G4cu0XW44
+294K0WH41WK0G4BY8a2G44e08W81G001400005002804040e040014404W0008020020e040
+10Giei19@R01004000822000GWH0W82y02300Ha00YW20gG0WGc40H1GG00HG82022510W80
+0000G002W0108kdt0i000000000aGq_F3004G018We200G008WG022a0W28Y810CI80H438_
+@408H2802G438W0MW01014Y00W002W02G802WG080W00n400G0I8XWI004200a000H00000G
+0zbP00020G4G00G100G002G0LI80qW4608A1G2WA00e4aW008100AH00K21e0aI80W02@s00
+W01K0000tQ0CUx3G00404X1W00Y1G0G2000000Wi810W0GC01G08008e4b00000K20200412
+0apc10G9bGaIAG0WK2i400XW2YinD01040W000410000021024Cwl18000n88000000048Z0
+80081800W0200X004H8W2100H82040e18800G01A20C1uxR3K400000WKl00m_@68B000048
+200e80001jAP0022A005000011040002a120I818W0Y000q002e000800G50YG00I004G008
+004e111GH0m000G04m0WJyJedV3m04G0200060G00010002XA01800Gy0S40G82o8m0e0W1C
+0E8O11W9GW880o0022110mm_D040000001802000ASEwLYLpJOn5600HS84004804m__9WG0
+009O40G0000884WGG0402M00G80011GO@6001I200050108a000G02040008W00ulV300X00
+10400a200WG040W080001W09Wa00111000000008GB6dmwx60Gs0uDJ9O9W0SLC6lhR00G48
+091000WW00WGf000W0G04120000Y040GWgWp0h00000020Y00080008O92O00000A0020W90
+000008s5402aUXUo0C00r4W00u0H00420qz120XTlGF0foP00100W0008y42104D0000rW00
+m_m900X00S000GON40P30GWDHwht0000Gi10Gmc8KP0010ml0m7K600801200A0ec0000gU9
+800A0400W00z200G8@bAlV00qNVkC94El10000881384G6K842e4WKYSbb8ou700y2lGf400
+aa50sOB0cX7oaJEChYP0jU00lg00@k1CXS20WH0000_w@0S5000000WPF300xpymlR60ypOg
+jD30G1000C000G0C0a401W18600mT001u002Wc160C070U3KHu2y348m50G028tR3080G0G0
+a18Z00G6100000WV40UWB1000J0c800CH00W00e@D30060h8C0K000iY00070001qP0C0tCO
+0S100m0000b000K400m5W1WBWEaA0@C00SH0KlT5gEWV0G07u001000bTzyC8W4W40198XGG
+G2IGG0m3W4KG1WVY000004400WGlJ0000e_10WHlb0z1Wek3WPm3AsmcgmfAeqB0goK0C3Gh
+b90Yu@d@t70@@70@NT00zV00000YPc000V3uiK6yoc1HXxnrkC4C_3j4RmrjC00Ghf9@4_iU
+ZQcPOlK6_BFXxuDO4n4wtoW3VC00008G0400024000O0040cAb10000010020010G004004W
+YPCum@40802C5W1t0O0G25G424CPmdmi@60080fDz70001000040G9800400230hVY100W08
+04WRLRGTP6i7Y1bYOm7xCqGk15yPmTq9qJk1z1OG2N60G000000D210m@sD8RU3oqtWUsJes
+T600400K4100008G1Wm8sJOeU30010Knj100X0U48XL@Je6f4040W4fW1vnRGCx9yTC3pmRm
+nw9004000G148202W800@g@mZvIyCl1VqxnOu60a0022000402204000100G0W000G28oK30
+2o0EvU200aWUkt000G8LZR00001001A00000O0G0W0Y2YGWW0G40000002N0h6t0GG000402
+K240WG0404G00401000038081K0G0000010G00000A08m000004008e0000004Ofe6000502
+10440I80800G248004008100W06100KA0000W211015001G00G0I84KG110WW08G10W0CA00
+6W8100090008I8K681900XWW0H8X73Mts0W00Y28004W04000WHF8W0GH940W208WW0G080X
+00104001540H1000a101000080860X0X8050mS@DmmG004220004L0512000100C00WG04WG
+00002102X0000800GGK0004G008060200809000A00010408W0W048K1peR00K00080W62G0
+00000G880E080084040002000X000000G4W0010PLG300W200000eSIG20Y000020i088824
+SO41Y4WG0GfG0b04000OAG008O000I101O20K0W000000400e021208300m00ulF3G20W208
+0aG004YG024C4GW00W000090000J002W1000040K08W001H0800G80WW0W22800GG0440410
+01K00005000012450GA000G00HW000001IH360W022000W060010000EB0004Oe200yxw7IL
+p080400W80002008G00000C04800K00NgR0eWQ20000W004000290400200naz6ScS2v9pmn
+z6aal10H00wcrWT@t001008WW821809fQ05WW000840012kvs0H40021G000200202000000
+8090000C000AGt0G840400Y0404KOv32000G001iil11@Rmo@9001002000008utuCOCR6k9
+tWo_P0G201W00002W8pvR0K000002008ie540804W0000O000080G4H@iP010IW@@D0n0000
+00Y8_D8XM3__t08000l6O0002WYsD00001900WmxDOwV32mm00000004HIzt0e000G10202H
+26vl1HrR0GG0mhob02W000000H0X000000kf0K8l1W0600a0o000030G000C3C000a021pQQ
+@XooDO8z4_fhYXih008000001G0004040EasWLEDuEb4QUdXUxD8wV3O008000Wc1000G20W
+BwD0W800088WhkD8TV30008DOV20020QctWhvDOQ_70050X0G004Ga40O0WsHDeIV34010G0
+0GmW00300G0041800G802411301ULS3EU9XX3J040008008040082WHW0H808G000Ga7GG28
+G0200I0b00002h8Y0o5G511G45ZWm4W0482000GH1000G8008800000XW01210zMG28f4080
+00W0018bV3WGW8Gg000m220804W1NDOh@4Est02W100WGWW0032020002W008W0884800G01
+G00Kil10100BYq00GW200c0G40o00I2W0000mRAG4AGG0K0412W0W4K80H490GG84GW8004W
+O0408200OPG0300X0W042400X80G0041W08001wZF1000100H41010I08005120400G0202K
+200W00010b09uV308010H0KYI0a08W4HA10W00YC5YI0010W02Af4004H4bW280G004P8G90
+0e4E3a010G0b0100W04GG9000ma308G000H9504000a00044204082WG0000W8020Y018000
+A10000140WI02401040f40000810GT@R0W00WEdD00Y4G2v6004KW800100W000W02128HG0
+00Y04100e10mq00G010WG09Y1400DGGO0002000n6608W000X1XWG00YC00110W0A0000100
+000G1G0G011004YIIWG0000Wp92202I6800GG80WWqhgD0040OOu60Wm23X0G0H0005L408G
+c4eX80W0200008nusC4zH20G10UfqWlDJ0041000030800000644Xm080YG080010145m14C
+04G0YAWXO40202604AGG18WW010BmHG00E00wvN380500W1010SW18000mIZ000000HG4000
+0_i_4_Nt0m00020400G08G0U000404309WolD8iN3m00WKrU2fVQ0112C0W829W@mDu68HGe
+W004140YI0W0Y0GWW0G20100J08200G4012090G050002W010000G20801WWzDG080000000
+0Ga000uW900S3V2RvOGVpCy@V2800012a8aBl14808ku@1G2000042a08001004G40000Q50
+00W0W0G000qI0000W4GlR8604_2Y0WGWK00820wEHX00eVeF2640oUHG08G0086000n10WO0
+w542W02002cys0000T600G0yB000GW4H30800wbNzD00004R00Gi92Gi100mc8000m100W84
+0e@2402@UXU0020ao4W0O8V3010004q514000005WftD000G8IO600q00hzpGXm60WCNWggk
+8LL5Jm3Fu2NLm5_YKfg5Lb@9oCc10W9@b000y000MT00000iw00Hy1u7000aEKj0Ue000010
+K1z100yZ2w30Ou70OoA0ioQ0GSNi000GuE00u@V3000xx@000000000ARL1000mDN0m@0aFV
+20iQ00Or1Kvl10020006000C0tH00sBd6u00AWc1M0k0l0S1_1y3y348u70m2EGa7mb85mFW
+BWa0@0T0o0H2yZYa03091a400W180WA0506Wv800dP0000006_F009aR00m0ScX1W9mPGCS9
+mRWB2NWV600@C00GP000d00080O0G0G4X0W9000J000W000020004060A280a1GX00860000
+00WYT00e_U94G2G2W4Wa4W889098000G2gg00Fy11W@f20@JbgKbAL54coC8LLLG0uV0020K
+1my@6008YN000000La8_D0100id1iQp3qN20mp50mV905qN08kBW0000UE09zd0c@7Wjlh00
+0830000g3Hy201000m0a2d7rzNHOz6K9U500000oX08000uZs46E7c8jDes_400080Y40uZ@
+7W0W8yol1lsR0001WfSIui@400048000yoM9oXt0B3000008YNBXJqI8O@4wssWQpP8wy7st
+F1800Abhcm0ULC6_3z_d00W2WsVD8R@A00GA5NW41odmZVRKtF600e26e@10Y0WB1d0000G0
+00X11MHQo9S7l40wU0000004G19I162@JY85yOsS30G000H9800100G01WooPeuS3cbt00W0
+0G420000OW20002m0G249CQd1rnR000804008pkP09000000Kw92000WG0022100800W0GA0
+W00410G00WG0e0b0214G4G80408psRWI5400GG8010G8000G0000800qGt604010W0900W04
+2000000C00001404uQ_4W0H00808vL@4Egt0W010hpB10080W00G0008W0W0qKl1u0020000
+00O6403080000W0W0KW004040W0240G48024GG2GW04G00GW002114WW0000800080104048
+0048401a000008W0W0W2080X8X800915W0880040GW4G000OWsmt000800002W820Upg1vGR
+0800G000WGMG00G0030000000yAW6000040208204000212Y000C01000O10C200000GN606
+08808022908010G80P0000120e00049X0A1A20010Y0g00XGG00W0Wm4G01402I040W6GG08
+42008042202G2800OX20X0OWW024Y100000W300egC32_dXqEIezJ3wcd400m0fKcWDn0Wz@
+D0284000040W0320m000218003G00440O0X@gJ0G200040WEwPeM530048001K00G00008W5
+fDu059Q@t0W000Co00AJbXs5V8XQ3oCpWt@J00WH40210000200D000I0WCW0000008D2006
+002100000100100010GXR9W008eOR60m008001eWx46IEXa5bW010428m00H40000W001218
+04040W0W2KWP2I00002008002H0Jb8X8F500400P@d0A20204601XmGt69SSY40002100XyT
+U2ea0W04002H00e9T9YStWNIDebz4IkBXkvDOMo7o7F1000i_1002Rd1GG0mnpomyAFiLx30
+800Qct004000WW00000iCp3Zpd00eGWdoDOhy40104i1l10004AnzXFpJOL3300uS100W400
+06008JH20000080818G000200G40GC282001zRGuV9yUP2@qd00800c0WH13P008004G00P0
+cm9_90W8003008010224004001NCt00WYGW002Mnt0W00GXwR0CW0W3@D0W000000vbzD0uj
+2GXv60m8g02001W0001000201G940I0W88w2V38G00C1d10021EIa100WI6400W000Kql1Kb
+104A10yNV50000f0039mHW04358010110G00GG88000e40W09002W04W7@D001I20G8Wl8CG
+400Gtw9WH0e0Y001K188414G0Wf1nimYYBI96W30041X800008W4010000G08uHr40200G80
+08w@40WAI00L0G030046000m80G0fHp_tWklDeI16Mdt08000zoRmzm6G900ugU6G8202060
+Y2Y00002X4tC0000000R90000W01b0489mC00WI4100aIA0e4a40Y40WIAH4000IAeGDZ64N
+l100802L_100W2K20e8500G120000000K2080W8rmRGykC090W4140000GWepD0020000Wm3
+tCOR86W010Snj18G00IxF10P80000W00148021G84H00K06W02W8G1W46X0W02000YKm0h60
+400OHT3G000S_B3000210044gl102040000kzj19XPG_@9O201Pd43G020000mOvV300C001
+0W8ZW4w@EXy0O00G18000S411W0100041800a0010040092405G005m1040X00000WKGJ_60
+0G0uZJ9000W040m02220000001SW60A3u120yuj4rLd0G08002WGG82XG00000e000000002
+mBd210Wapdz6000X4G008408H50KG00WK100410100G00012200000080010001G408QB3IG
+H2Y82A1wR000WG2080nK_00W30000e4180ood10H20nYR0084auqJW0020WC1000C0004000
+1Iidk10bS8K0000yL02008020100GV04000z2zJ0O0GsB20GM06WG90000G0O00WOeV000GX
+9070is1Gj@R008_0000HXX@Gb@6ew0Em1000004000WgXxR000eQ1yG1NJ@mJDL000Waz00G
+yz60Hy100g3eg308P70mYF04XF00iBU20W8k5000004n@Q690001GPb10kuIfA10Cu70W000
+0C200Ski1xzd000eeSlD0m0W1WA2206005pR00G000e3W000mT420q0l16000010003G0Wa0
+NqWR6000000WGOuu603W1WnWV2p0pC00cP00Wp000M300S3O089mD31WC20vKR0082WZjVm1
+000l100O0E0m0KHW1eo00myBCyDym002800Kr0000000820KRqRmnUF00G0G0FCG6U6ChV2W
+isu5mF00000040hUkR60ei30m00000808YF0P1mmpRR005a14n3m@99Sy_30G2GoX3ZLyJ8N
+yD0000pQ00u4kPMUpWbrherw4cwt0009WZ_dGRTF4DL2800001W0Crj4002200000008FZx4
+W000kbU5NQR0002W8TCeCz4000G010081P3000100WWG00000G4WSVO00000W04aWib8BV32
+OFX0ohucz40N00q@c7BDnGJ@9ygc15Bun8JCKbR5Z@d0020WYpOuIz4Qmr0000e6400MoD1G
+00WrujHqJFS8W19OP0000040040X006no0100000211220G0800G00Gsp6iEj1jy9nqz6018
+000020YW0GG000W01aW0400000500A80Z0000vjXERW0G02K500W028Qfr000G0W2G00C08G
+0a00287uP_6SEP2jqRW04100WO1G0001G0o082G4010000110020B0RGhs6q8V2fwR0GGW00
+0G00500e8K0840A1210Glo60042SE03G0006iV2G614ogt0WX400000W2W80G51084001H00
+88W0a102f842W28G0WGG0020mvED00G1100G00W0W00060G0Gyle10400001W042O0e8Y04W
+01eWeGrqQ00002aA22L_O000W000G40010002GW0400020500e402010W30000000a140000
+2O2002000W2410804ag1000QGA10WW0G00001G00804010fWWG3nO010YX40G40W0L024H20
+0W10X09402101eI9@604a00010060200I00428004I4100W0300W808G894HaX04041KG100
+10000840WL@D0002ubyL000010O0GTj6ivV20020040G0G000W2044W000000002801W000m
+@kFV3UytWIbD020004G0417080200m0044sX12108A@dXL@D00810400002WW20240W0000G
+0wpiAElV30020002GInl2H0WWY48000000g8000000022040008W00GK48W00GG020W0Y00H
+4HGhWp040000401000000GealF302W40000W01aO@V3O000Smv9W0W8_F@XsfC000008G100
+080010080020002Xo20mj@C0080100G0404041800200YksWtqD002G800G40X00@RoGcw6a
+Cp37RYHkxCyga10I0WAMOZoyD00W8mzA6020600G0400000WG4PJRGoeFKQk1W401_RFXgmJ
+ujo40m02_Qk1feiHBuF0800e279_5tWyDC000008I4000020204kLtWKsD00020000904000
+001G000i0l101GA04W4W001W0O8GQx6G00C000W004000m110G00GG040801g2L3wmFXx4t0
+4m000082W000XEdGY_9WKW000400IW1GY0W0000mb280H8Y000400c408Y0a200XGG42a0qG
+0QeU3000Q46k141000I0W2aX5422GWYbG0000I8W010W20GW00W04G06G003W47805A0b8Oa
+RZ4rpM10G400W800600JpYXFtIW0000G450CG4000K000atH000000A4G820WG00408Y0810
+0G4K0W2C3Q4P62000814000000002403B0XHW0044L0000W002K2R28040W0002220040W00
+GG1OG000810W0G0X8G01Y0e400001408d@Z181GX8vbOrR300001KGW0201050000B007ln0
+HX400W0W02G2b0e0G9b8I0085f0IM00WK085W0028000K2GY000W0GA100G0Hp0WI00WC800
+A1KsU6842WW2040500042008W004W060020usdD_PtWZchG8G20088220K0W0I00000JR02e
+yV30P80000W000Ha0mW0oW0XC002G00OsNZ1004000100c00014G000000111000CO000W00
+00G02028000a500W0008000W20W000GIS6Cu13RHN1300WweaOjV38O40000200280082000
+yZ5ho000O000m50004001W2Y000001W4C0WS_D000m1O0000H0001O00G0000O200C040WCC
+000G880c000002e0520IGgX6C@l1TddmdrL80GW00000WG0W0mVujf40G000000X4000Wl7W
+n@DOkv40000WY490a2000H080W08020WI6tWg_DuNv4Q_tWTyD08GG000W4241G86WHm4S00
+000d80100100W040eL0000i44rC69M_000WaOBDedH30J94204J0000ek10WjyD8jV3GC000
+00C1zJ0C00yb2@DWG0070004eB2C80000uA00001030000em0400WU1k00000R500OhT3GP8
+001KROwPLSt10q366K700G8WLB019m0X000W9H8CO88Sm40fGXWG90XwI0Y11iQ10Sy20Ks5
+0mg320004n3Gtx900030W0I0000SP20GMF0mLL008_00uTN30008u10320OU6aWdeWkD0m0W
+1W920WV60VNl1C000Y0809ccGRs9000e283e3WA20WE2020000U400W0G001W00303020H0L
+4004H043d10mCm002WnCc06H00CY00W0wC06010C0x0O0s100i30004100G000W1W0GHWvcE
+0k400Oe0e000ei7L40ep0000Wcx3GpfR000099L60000cdk100000G00Fqk1hvdW0w@@Pna8
+JV30iw0gw2q060WeF30WLlLfy63A3m3E00000mUU77ZBHb080OmNvFaNE35WRmEu602GmOAV
+3U1tW22neq@4W0G00000O4S3EFFXRqJ04E3GdtC4pj4GWG0hKdXazD00G2Gdv68001000AW0
+08WUgDe9W401G0a_w3L_MH5w9aCW1xxoGgvC4YB3nv_mNx6KoE3XKbm_xCKZt3xnRmXyFKqq
+6tlYHkw6G000000LsXyCqJl4dPQG9zFaeU2GX0033t020000Wa0cur040000K00ERtW7XDuk
+O3W00000800006Gjx60G00O3V3Ant0100W0GG000000G014L40802010X00043400000MC10
+20X0C040C00020120C008801201X0022G1000040WW0010e0O000450000W0W2H2Omrt9G0e
+W20001C200000G000G0J10W200G8040040021G0404G80We0GG29mS3_ct002AB00K0W2e0W
+WG60012OVS60101PPQ30080004400200W0100e000400000m0S00110000804400000W200H
+XqYW10G000W02G21094z400X200000420820000G028aG010Z00100W80000AG9800Y40W00
+0G0000a00400400H00G1txQ004004030001000002G0W04120014002020S04UXr000e008G
+00X00CAi18WH2W00O030003GWZ000000Fx00G4WG4G8WAG008400O408g160100W0080200G
+0O424G408000RoP0aG20A0Wm20a0000080122AW00000O000Y0020m0X208G00G4008W0040
+00pmP0200G020GeW801808K5V2004a800W00A0140G0000ajsDupV30050a1d10208kyX1WH
+10pVOGoq608000G000422000K02000ASm0050100WWB_N200eA8G0W10002140u8P30g20G0
+00W10000m4000W1vSdmZ@I000W00G4H4x6G4000014GtaIyIf1LPpW00Wag8J000G020W040
+00bGdmK@6WGW2uuV3UBF1C000DQpGV660m0040000018eg@V040008200G000laR00000120
+03SR0m00WbkJugw70GWrEiX14000NutWZKUO7V36uWX6La00W0W80008000080YG100B0O04
+0100X0000310DWp00GGW4tJ8B_400Ya080804O000GWYl5g00000e0FW2nP8eV3IBPZzvb0G
+4000400O0000a0008000G4Y0028Gf460000WW00Gze64Xw3002000H080W0000W00108000W
+01W0A663N004G018_5FXXyPOxO9EJtWf_CuVa4GC0800408r_4C191WO10XGG00GYG8000Hp
+3P00G0W6KD0210mTh98202G4Y4114D229OXeIa1010rirk4004000qRZ0G4W00Y0144a0xC0
+000mIQ9G000OP23_St02G018I000002y1n30GA090m0008200GG10G048IC0Gc245200W441
+Qqz40020804m8vL3gvn041AG420W00G020W00GW0000IaFuJeRp70q400G41002200400I80
+080008200G01001400140WJiDOzV38W0000010001G0_6iGl10WH0GYK00W0GK00K1040014
+0604094H4eI9b0uPr74200i0d440052LE1G00W7zN1000AA308aI000aI41000000HK1_600
+0200004W41WhxP02G2G2S6KAa1Dpb0WK2002840G9G0008000KY200AG1WWUuPG000HkpCyt
+l1000G0W28iul100050W00sVh17zB10WaL080801G2G00XC_l10040010A00C1OSS3K400a@
+F38W00cqd10800I002G0048ca0011e00300WGm10W00m1W880000831Gvz600AG0000500eW
+v_POIM3G048SoT2lUK10000myZ0W10000O08180eLE604004G730000O08Wike1reP000018
+0m30G00W01000G000W11WO06104002800100GGW0X4080400000a4RWbGMy9Csl1012000W0
+G000000030X0a1vm0000Bh100H00W001G0920yqB38000_dt008107uR0W20WIzDuax400G4
+rml14000W0902G2W02000w31000_Bdto000WG20029Y@0084YJMI00000W0GWnGOe3T6000s
+YU00000QIEx900000W0070000GA20d@p00mY0080aM1002Yt00G0100W4G90000WD1000000
+24010r20000wB100eb704tC8000e22200000WP0apI500WhS00001003O010y1@K0GLL00U0
+MFf2WKQs@TR0WG4VG4F0ZfR00gEWFYC85R323t0x6WoKE00004000WoExV3000PA0MP50000
+m10WFqI00j100K400e3G000Wq6204Xk1a100010002G00404mz_60002100e900010206040
+g0O000mW0OTO66KF1000WkoC00WY0004030414Y00mK_D8WE3W0G000W8ASS3sVm00006020
+00sHG0000083000A100e80001W0WY0Z0C0M9006p000W20_GC0e450000m3C_y40mtV30000
+0@@xKl6000000Q00YA20000000O0gnrWurn00meF000Ki3000W80MvU6100Ym7000WT0JT00
+W_08200AR1e00G000A0tZwM39Gy70wg0iXT5TpaGTiRCyk14W00U_t00200808XcAt0O00WG
+004ghBau@b000010H0gopJ00020000Gy10004000000T6R2JSBnBwCG0010400nfsF0G0480
+I66FnWjqRPB@400G021G09pV600SBU4869BdGG@C0400ery4gxDX8YOuVB30G80CDa1foxHH
+vUKkN2WrR0UptWJKCu5uGAytWb@POuS3UEF18401000A8001200G10W0000G03001hFn0000
+O00G0W001804GCkk1Jxn000000G38W000Uus00200000mnP000G000910110W00Yr0FgQmyJ
+60G00SiQ38100000012A40G004A0410W001412G000000082010H11W0141C0WW04W08N63W
+00004CG008C00G0H02CKxkPGYw60G00008W8GG1mfzJOAU3040000080I0Wm@@9040G02008
+200000mG0Xe0YToW5xD00G08G00O12Y40008416000L00G800G10W49D0XW0X00404008000
+00108010Wm0W00060800040G11git02000840048000f10Y021Kez600GX8Gq40i0G020101
+48u6_9Col100125W00yuV28W0200K800000OG2X8e000G434000G0W031200GW0e00M4GW30
+00OX8C0003004000A00000WW2G08a0e00W00O04G0024080000WW4b0800e0W12001120104
+00128000010G084210GG_g6e60483m4wVm001m0tHp0440WR@P00K1qr@C000Wq380Gt@6W0
+000018G1@9yIk140010002GG00OEA3G00W05Y010000W40WjhI0M02100W0C00A32d004000
+202dbdmIqF4dT20020oBt00008ZdPmIB94s2300u4ltrWe_DG000mcR9Cvl1C01880G0Cak1
+G0000040100GAHy400G0Tsl100W04040WW00ueT3M_t00G00001Kke4ZS_D000be000011W0
+W00008Y4W00W4008uq@F8qd1eFS300WW0000H040nh@68100001000G4WQuI0008004W440G
+0plRmZ@C4Pi100H8G404cnl1zid0000108287W@m6R6qrT20100Oa40m81GeNw4w7d1000a9
+uR00002CWOGt7Q0A10WsvD0010GkX600400W80nef90048OwS3oEp0H000G400wgs000G042
+00OW4WG001000210000GW90nVRmazCizk1W000000402028ZS30600CSU500Mu000000WGuQ
+G3oxs00W8000W00120qMk1tgR008WmywD0008GL@6CfV2G0008080KYH22042eW04W028004
+20010K1000e0006Bd104G400W0gbm000W88800K340BW82I800800GaHkD00Z0GF@90YR00G
+W80G1002n2Y810GG4E00W90u7B3G04CW0HKG40f0X0800080G05K020b80W0003401GWW3@D
+G04G0W4100WC8p@R0K1880W1048G01IW01H08I000224WK0K1GJn@mlP6000110804CG43G0
+006f08Ga40WvYG0002mhz9C9Q2cb00G000W82000410248000e8010c00088G01O@T380000
+02800A022801200GK01104G04kl1G00Y040220100048428XLYGi00Gmf0W0000WKWIY0W40
+01A000bZzGsfF00500a020002002G4W0Gb2y8Xf_P00G0MIb608020000GJ7600W0009050K
+084090RrbGls6G1000090mxu90G40001e4b00400WGK2000104905006X09G0WWOxDW20CmA
+lRG40000082800040W600K0581000W0eyU90iG004p0004G0HO2000014120wHq000000W0W
+8200ial1000200K0W80000Y0vt@9002a1242008W004G82132000G100060K0080WA4W8GG0
+00800O00O00O00GYjF0200000aq1@602100400HLH9yxV2vyd0000UFE00W0000081030000
+W022000a000W0GH008W002W100080GGWh2D04100100aUCC0000108000K1W0IG20dW00820
+0H220041048002008001GI09W008002480081280G0csN20W0H40000802Y2040089c40209
+20W7aQGiRC000000WQK_v680GW00Y000808W00G80G40200Kee10050oBc104004000Ezp00
+2002008W010010a00I004062W00060GQC0W01m60uMV300XGCrd15HB121000001jmO0000E
+1040eS5W0002q3d4Wt8u00000QH0ekV300S00000a8m40002omnJ85030G10020IOuV3Y5t0
+0O2LC0G10vB00000a10000eb2400cwut0mWh1000y7hi20c002x604Y800Ms730yrN0WPc00
+0y300208g20u10WygD81S6000mIEm10Yu3000048YF02IU84V0Uf20492y40000GSWoM00Mj
+047010FU0ul7JzF1G4V00uk08Yx0000W0Yu30Gn55e00nAE0SD400WA00WAW20D1C480O8HJ
+BHCS90011008000u2G0O6W22005600K0V200eYo@F1001I0200G40001010L0n4g0g800OGv
+WR000G401060H440KH008Y08XS300602080bC80Iiu6u0000L000C030M3sHm0eo00e3a_l1
+20gf00YtJrN100K5m@@CW8t1000Wia30000006F0e000000n00W00W@12000Km00E0000080
+bL600000@4Wb_J0ag2mO@9000w6cX708sD08_L000000Ax010000e0GfA30W5zI00W000088
+00KspWp00_dC000082802@l20O105MRmYPRKEj7K100QsrWkvmeoVCksF1001200002vs080
+00m0100G0m01a200G000082O000ZzOmBtC01018@QC01004ul104080440G00000GHtB@900
+0040e400000GY0001W0_Bt00G04trRmlk6000mGW0404001H080PWR010100004000G01WI0
+440u9I3G0W00110OSL3MCs0W000djdGGu6an@60180000G00G0eM630Aw0yul10G8000W08G
+2086R3YqsW4nb00180088004WGTQR00001G00GrbRGwy6Ccl10218_@tWOcCOH@7MRFXppbO
+1T6cet0000yi500kw@X_oCOP_4YjnWI9IOEl7kVp00000e042W248G0408@F30G5I000G83A
+3GW004wk10140100W0HI1H8000200WfeI0004Gdt68W0000008800200GX0W0000X0010000
+GQ600WmInD00800019W0zC030Gb00g038GWO0A20400OW000000848GO1000G0g004100801
+G10840000W8800200800e_gj18400008101XH0W2A1LmG0828gq08e00000042SxQ3030GW0
+G0G002O0_6W000420YIQV6G0H1000W02101K0WWG002008800004e000W@c0W80045GG81e0
+0GL000W0851a0YG80010052WWGG01a0W00000G0Y4080000100YGG000W20G080H02020004
+0480G0001WG8030Ga400nmRW8400XAmGO4e0002W0KWA0WYAmXs600G04W00800G2GXW0vMO
+mr6600800212000018100000a00X80044m41G0880G00440000b920W10G0GGW4W009828Gm
+00E02A8051000090Wue4mC4E8400003X000G041G2A015G40m028AIGm02101018I10010GL
+0X00Wu4g6800000200004888nG0WW081G0atl1400200G000W02Ee00G0082100p_R0W4082
+040ZpQW020040040040lvt00800G08000mW100X00070004mRzD0G0100040808DG0u1kot0
+010001023_t01000PgR0Ie1Wm0DW0000W000000E810066m00820000o0000Ga80Ojx4Mas0
+020H0W8008022X040000nDm6000G4000uA@CSQV2410110000ip0eIV30400Sol1JkPGb@64
+TC3@@RG9Q6aql12000cwt00G000m00000008080W001004Ga1008000108X000204W10000G
+00W10WW08310C@V2t@Q00G00Y000lddW02001G0008004G001000G00W0008E3200xzR0C00
+mrrD000W0040abhV080GmHtIW814O6T32NmWXnD002G0054WP7C004G080092a1O0204000G
+WC0400Y000Y000Gi00G000082iel100G80004H4108GE900Y00004b08000W0Y5tPOpE3I18
+100GGFhdmkv94kC3zYp0008X0sC0HGa108000092nrR08W4aZnC00G0GeK9ahU21b@0240W1
+SDupE30Zo800G4OOw7UGqW@IbuuqA00014af12400aX00841L08WgA145H19KDe0L4W21K82
+OG48WG2G0Q8W006GWA082YY04Ce22100G00W3uC00H08W0Wb6oJ020W0090108040004HG00
+000WqA2400A00W40G4000K00G0008400W006000G081zdWI100410000W06lt00400m00001
+0082080000006000H004W0G000H1012220oe000L0G0WG40aG0H22844I0Y08004H008WO60
+HX0g120C0008G00GO001O000G0840410400W000430WRVCG00C040011WW00W040eY000utN
+00020W20400W0040Q@r008800440W300KGB3RxbGWV600Y2O3I3W040ivi10031001400210
+0YOaYKG9c18a200500W20280aI00W00G00040DUR0810000W2Rn@mDh9000K00G2000GXePD
+0G0000G100aG00G9b00010W4Ker@4aWPWG9b001828IL000004040b000Y000Ke0U3e00000
+0820A00021G0e0G0GA08240r_h102000080002001Y020000Q04G2hK2MztWMyJW000m0lIq
+El1h_Rm@y64Pe1000Ozh20W8c4014820G8adoJ001G800W0400GCG310000000r0040000WG
+000100WOf000G10CeMs4_8r00H00J4O01010000G0K04X800WWe8GC0S4004041500088101
+0000G0002a09GWJdC00G2G306qxl1008Gkht0030000GX040010W0000DZZ00003100C2000
+000G0f080Gnlz6WX04K1000082GW000YW00400W04008rI3G4WGG0e00I80Ori6000400100
+008WoHC00G0000W200H0e00WcKo0020HWm400010qNl1WX80wZ2ZFZI000W06G0qw@D0Gs3G
+vI600800008mfx6qn03bwR00B1Wa_P00A0mRyC0060040W0020800800WsA00Yeg1W0ueV3G
+S0010AU1CW0m@@6qcl12000WG20aFd1j@d000WWiuI8rV3YTp0000mQa_1080mw5W08@V3Ab
+p0qV1m00yN04003020X00GiR8448z2C20000Q20z@l10Wm2m000e1OA8503QbtWKvC001004
+30Kl20Cu73yz7Sn908ZJ0@7l00MT0040W000000F0000WlU2WdY808sD000080b_000008_C
+6Uzt00G4t20YF40000006000yZF30WklD00GStct600unBxQL000WYTC370Gih00iQ10GP00
+0D100O0O0K4eoe20310WP600e8000L000C020G0e0K10100WRnR04000G080G0W001W00002
+0008Iiu6040K401W1G51WUuC0qRSMuR60S0K4Oc10G51000000uC00Wc000C070I2kpy34Z0
+0uE300I4t0G0C0444H018Y00G69MS3000O0O0e2eZW003200H400GK0ixS1OX100HkZf8mrN
+k30OeE0a5G04W80_tl00A0yVLg308000200m00000G0g2F00000W9y000000u1Wvg38JT30i
+wKWU00Is1G1w300000mo200gGt00hEr240KXA004@i700Hy1Hy00Yu3eaR6GEvWhA0WLi10m
+wuaaSq3Hb7200t__zVORU6_jrWjTb8oV3Q6NYttDOq@AAsdX7IP88T6oxFXF_V0yV1Gx_C0G
+020W00m4tCa@l1r@RmZTL0A000G00011002000G4002gFX3ptObT3kWNYowJ8gR6000GOT00
+8y@400G0cYl1Jydm@S64UV2BVZH6y6000WetW7_@lYvaDOQXDQi@100mHNFWnR0UasV20060
+Aqq00W000012000W4bi1tkO000102040xvd0400Wx_CG0000G00WtYC0GY0mZTF00I08qU3Y
+Lt0Gq3400000G10I020WG000G0042000e2000200000506G400200002KA41000002110HH0
+000O0WTfD00G00002W4hDWG000000aQzJW0000a0G048824001e420014K8aQ30X020010m0
+0WG4@64fk1RKRmfw60000a2004W00020Y0DhR0000Kp0WGG4GG0W0W040800X8401200mW00
+11aW08221G000880W02aZ_D0GG00G30aWQC080e42H2300010218W0030H082EG485001000
+W0I00000801We201WWW4080KWm400XETt0800G201W4022002000W0008080W00000Y00Y8q
+Pe10000008A0009600W0820Wc_D00WvF8GW800G0mW2A0000WY00000005A6240i00092H1Y
+GW1400W0200W0H0000061Y8qGG001Oe2P380HG0000c00100PG8085H00826OBX3yJeUC3kY
+nWEDI87I3g@FXBBnuD2300000Qu10400284000000O20003GGrOl110Pm2U600W0s00000W0
+00010joP000408C2Wj@RGmE601011180IBq6000W0Pa1nn094_V5tQ4oz@600014000WY80W
+i@J00P6G2v9008CWG00GvS6yEd1JsR0020G200O00WC10490W8myUD30I02KGl1GWIQ01000
+4W8eZJ3_@@XMkJebV3_uS39000G4080G00204000HjLgZ60000021Wmz@6080002240800Wj
+TD00002000400WHWH000200004Ha0800G001004A8008W810Cal1GW000W402W0000808300
+00200tQNH3x6qmf1d0vHs390eJ0OMA3kut0o4010W10svt0040040G4G0804fi180230IW00
+4012000Py3600008_V3wvt0G00GNmpmHd6C0k40G010028CnL5zPo000018Y004000000WHi
+00W0000H40Xb_D0X1WuFv9iwl100G20G4H02G0isU32Hr020100090000800002410W4210W
+004NYR0012WT@D00X8ICyI0004X0200280nIuC8nyA0004G0000H2GC21040G0000WVH004H
+GG4b0212X0G000100WWG010W00082W4W002121442m11GH00O18O04826CHXG70HI0W0820r
+C00W092H840b20GgWHHK0010Y08iFg140HGDbgY2K00W402mk_FW8W000002G00ehPgO@@42
+Gm00000KW0018000cBGuFz4m20CRaXK0G200W8G0AW082G440G04G084041WA498G2mqW0I0
+4000402gKX4W8008XO2002e1G00H000080220f0K114aI0nA5082FqWjRn0G00W04100300d
+Pu100204040000W0000RU01G0000W02090900080G800000K2WWG0H008A0G29EQ00000H04
+X80WG0aIA1W6aH25f400409O20K200GKP0G9b00WW002K2WpnDucH3ktLY2pDOO7I2csWD6D
+004000WtJG00c00G2o4p040W20200001G0001W040GM0600biGc0062Ke0o25G8W0508GG21
+2004W0001W000G80882GW8cGWGICCS30014G24002a0vJGR41K8B8RWWC02021742000@628
+1W001GXW4GY098110eW408ZO0E2O0000000c0a000kGG0G001W08aZ50244N1C3s0G8WW14e
+401002W64110a13A2M4800a8X20H00000110I00WU8JecNCoAA42G000WA80A22f0000000B
+uG4KYG01W00802KWW0e0GWWAa00G01205F_Q000004WWW004GX00W0b44000000e0010X048
+200GA08Y8A2WW0000Y124a0G090aK9081004GW000OIa4igO3V300C0CVC6TAy080000A200
+0O9A2tWYWD0000d0000Gk2n00080W90aBY100E8808WJ4wF0WG0lN020W30H0180G@D420QV
+1zt0C00z501000WG0000q34800Wc4X0m5N1eW_W000UdsWL@PmtN10001Ga7WtkF00ITp300
+mY0Qi0G0d10H000eNGb00TK100003qH1n5DY_w304N404vE000G0G4VY42XK0J0ybl000000
+0_7m@kF00We@00G0W0_2IW04211W80000040Yu30LX1GPhED@F00zL00E00Ixs0000mfVdGj
+@9W8000202KZ2XG0C000K1aYY0855f0000eaRHHI0gYa0O041e285H5W2AImO602G4000600
+0g0L0O0KHm0uYa5m51B1E3M2W1e503W3Wt0@Cx0_P00qn08GE30WTW30Z1pPK1em00G1100_
+FW000000Gx0OMjMo@d100mCc100mCLL90ggIGC300WuCL54pOE8LfALm3UCp4yW7kW01N11V
+r7bQ00JBDKGFFGxI0mIp09jc1Ybc54BrY50000yNG0oJr0020mcF00000WYTAh400Uk00GW_
+kJeS2IkqtW2_V88R3kkd1mo00@oRmdt60004a00WG2SIqg4C00W0YhrW5rgOpQ9MudXg3CG0
+800800WGmCG_00G1wCaJk1xXaG2kCK3i1hXRW000Wf@D000010m00002000100100k_D3Nhp
+G5RR4yJ2Nd_GDo6020000WZLbRFKuD3bk@0G02WtzDexO36jJYfJPW000GPxOS2F3XoBnCv6
+0012uY_40KX0aUB300020W04K8C3pmNX080WU@J08002000G0002xlR000GW8fDu2U30G000
+0W4G0000100mAZDW0010002efuJ004G000I02000440000020G80400KGyI90GW00000Az10
+Wy_D005040mGegWJ0G204a10mN@D01Y000002WK018000GY00000004G00e0018G00xvRWWH
+04G0003rd002G0000G001500200054G020mHr60G10OFq4sBt0020WW0200Y04y2c1000940
+102002G80W1W040012020G000yB20WW02000G09000I42W4G0400040100WW20080X01I000
+G0m8010GH1e0040024a42000828088I0W4WY128004G2G014000WG04222102400W0004G00
+O01000m0G0400104W220054000I800G0W000G00402000a1jD0800200X4W00eAG1000X008
+00W0800C0108m1W0G40100022091G000OJ2WTkD002m0W5YHe28W@pP001M0084W060000W0
+G2002G02C00200G0W8W82Avt00440480004800X0200HX0206811a0v@RmSpFCSi10008002
+8Cpj1ZcnmC_9Swj10MG0k5tWobJ0000Ey1000G00DIRm8bCW0002Y20021000002aW088000
+2Y1444108000G8W0W46G80OH814208XU3001W4_T200G02ttW8nD0004001W840000q02O08
+00620e7D3IP4Zi_DOVV600WWaxQ2dLdmAnC000G000HmdrCiST2004000A0cDj7z_dWG0100
+000HzQ0W00Wn@CuXLCU1nWz@JGyM100600080080X06DCXO_D0H2G442m02000002008W020
+G01200mQx6800000W0uy1902000010GNv9qcT2PERm_1C001Wepx4wFk2a0G00408IOd1000
+q_400cMfY3eI0140GIy64Zl1phR008W00WG40012000Y0W04uZp7Q5F10002040GEYcXPFnO
+6E9oYF100CT3tAn6E9ywl10812V6m000m00401UCt0G001WW000100KYg400400480000020
+08ohy600G801400680GG00L8000500G0H20OHwA00f0W0W18xI36jF10QB08W00_UmWHWIek
+V30W02G00e01000HO20X0000IGG8GG0040G0Y2000G8G2W04u00C81W4W80400000860WMjJ
+000G0000apqC0G010XW00202g01G00m800m001Y00OINRyTj117RG3h9GK000200000800WG
+00002W00200W8008W100e20410G800mW0802W0Ge090a00042208G00000H0G100G8120401
+10HWm02CItt00K400000000G2040AD_4400000W04082000I9000a4I00IxtWtlJu9V6cXmW
+6uV00Wy@Nv6K5k19np000G100Pf000b4200eW0WXI040J815Af41200182G00IXI20004001
+WN3DWG000500080020G10wpm00G805td02aH068208W00000O4sx600088G00Svl40bE0Qyt
+00420J@d0000G04209ZR00800A00Im4020080HG0801A1B0WbG40W20W00G01004000m000H
+00ZIoDOyt4MvF130007cd0m0aWBQ39TM9000moN000A000W20WJ_DutV3I1m0180G400W400
+70bYC34i1A0W3GG1200281aX90002GGWa0nY@90K012002010008W00f3@000A1000Y00I4K
+0W0H0800092mErR0H0086N9008oT6e400W0U4q0I01X001000G1000G009W00m014Y00pwO0
+W2000YW0G200Uut008X04010EXqWZRD00001001WWmDW8q30040Gc000Nudm5X6ahh4zsRGS
+yF0_d8iFP600E0G00W4042000024000060000G0W_R808a@2wF1K0G_B02000WXW080W3700
+2m51WvoD00020W0000Gu18000q000ul@1OdV300x0000WGy10gu30Uw70Y_720004ndyz600
+y0CmH0000KDfW7i8t1KpI20000LT000000Gi100020000hPC3ygC3uVG9ymZoCJBbPU68p3F
+eLLLnCp@30@N4cPcu7oO01000202000c84100008Y000X100C600G4010202a80800wkmWdz
+bGG000g00WuuV00mGL2S600G10200080YeSnD000e80001WIWc040C0_v00yp101d302u205
+e3uA03mTE60he41MHCLW0860G480m00001W102G610WCol@L0Wu30e@300002ilA00GT0000
+WTqW17sB10_z@Oxb0ux5Vmi9SoU208_00Ax0ibT21Tp000u1F000qYgL1W3n3eI1KGPQ6W20
+0_100C300sgZdQxD0001000mWeiV0000T4UIa3g7lTdGiu9awV5R9k10W0WB8n8923w4FXKx
+D000Vsm@C02G00002obj6Cc66hV@mDv64bd100G00840aKG8nJRGHAg0AJ0O0g7oD5Zb6ses
+k7AAadJrDOrT3oQt0000ic100UmwXwZD8I1Fc_DXiuD8wz400W010Wm8D93osE1000G000K8
+00000K1000Yqky600014W4000000G0W001000W20sOY1WG00006q02004W5000840220000O
+a0A00G10020010I0k0W0A0000G04G400G0W02H0OA0000014010800G10020G0X000010WW0
+010024n0G80040000mG080000230GDz60080eyQ38862200GqW82040G00W0040440W022H4
+402G80610W0xJ0002IxI9004W0X204800G8A04041G0X4G000000y800H1GW0G0G01GW001G
+04W1I800H010W00W40010X0WI80000408C0G4W0W840010GG0040100200000518W0802000
+2W000G22840000aZjDGe040208000Hm8980GWGC180408000a80100GG208WWK00044KfO@4
+00W0W8e0008KW88000000W0OMW0W12GW12Ymm400WKe030000mW4MWWY00400802aY2404Y0
+0K11001020W20W4012c500HW0GW00W841GC0400744G0032GWtpP000I01Wm00100G0W2000
+9W04G000KWJzb8iV34002000041G004eWWgRD00001O40W5Lh00W8omt6KHb100K_1000G40
+0Y001mYG600041G0B00000484000040204qmi100W0kytWUvDG000WA00WKzD0081050008W
+0000080000tb@3X@B100Weh@JupV30a00002000W9W00800W0080W0GW0100808cI30@y0mW
+0000001200210W0Cm0100G0G00000209J0maY3D00004088WZqP0040G8Z6ipn600100Y00a
+YB6N_dG@m9Knl14a000001W08000n048W00001300WuTD0002010W0004YWeE_D0500WC001
+G000a000kxt0eW00JzRmZxI8020ebD3IMd1W000F_8HhdI4lT208H8G0022222erx40W0020
+00040X1000000Yp5iR00W00000GVlRW020WFlJeo5FMY6301GW1m@mhz6SWr3Pnd0000I900
+00a040010021n00o000000ZW005oR0eD1H00006004w6tWRvVOiy4gVkYqyD80r700CG00W1
+508H0080WNyDuly40002qYl10W80guF10CY00005XWCC1245Y4A80GK004m138Y00WXAgY8G
+GG0014000EfHK08Ga888G5G00d10AY0S0808JW2000150G0G008008K000008940OW00gxtW
+FPPuLM3W001CN_3G00208000020100GGl56CcJ2jlP000OWbzJ0W02000I400G1412a000A0
+G0H20W484B0002048a6H0e2000u3502W8080440I0G20I00140108000C10G0G0E1Wc00081
+00iQd1000YQVFXljJ020Wm_w6y6T200001004Y8502002mfM6ibt3VsBXG000A100W220G0G
+0004o00Ae40W01W0fI0004092008000ap20GG00014G000OW00ACBY1K0GG020000b000a0m
+oS6800K008G421G90H4000A02qdX6wU00G0WG0W00G00800HMit00401Bw_mnY9000000X1m
+Ac68CH60100010200G00IIW0001A0000W0HG0000SQ001a400G01A00X4uj@401018100010
+0mWm6030miEE30014G400G241mm@9CMW1X@p08WWW2DV0301GKuC8G008qs700G020021G00
+010020G0GY00C0000241H000G0004000k62080AntWkqD080G12048022000e0000000W8mW
+2W0000009080JG0000200028bm4888WSDy30004geqWcuO8pyDAat009K00004K0000a8001
+004LW000W0G480I00G00G0008u70We000000410O00WW0000QwH3stnWg@Duzx4UTtW7mJee
+_A00C10080izj4YXpWxrt8HS300zW000Wa9y60002ID000@BR0w10800e9000Oy6S00010a8
+00GA_6Wm0000Gq0Q100008100001W004_c18e1uK0000yL0Ai33goYX6wUWt10000e5oR40@
+@R00KFyp@J00Vz50000_u20@@p0uv700yF4YF00LT00Bx0W7@100002OgZLM_7ei50GPB0W1
+00Whdu30Vu70mK720004nR60@K00Uk0Y8_ehD04ggAmm7025K0Z_@000W2q700naX1000100
+WA00000O8843d108006esW1ihWn00Gat60004300G500G5W2Wn0C4g0KP00mW0000008yA80
+00L000Y080O08Ym0eY00G5100O600GH0006W10C0K0G0QuR6W80002000C06080_P7@RGa16
+4cj10H40Q@d1LD000005YdaXSDUu@@400Y@300u7WL7000F0iMT000W0eg_02q@1IsA3Xu30
+8h7Wo000048z10nk10000QnK68_00Is10Wu30Hu7Wu4720004tbs@60uy0Y5t0000Wg600Ut
+kY1ftOYV900G00418eCN6O00000uSP1R9wxNYi0COXWG0040008G08W0mRl9y@F3a000UClY
+AAV0W10WW08myUD8pS30W@1Kbj4W40003000G00u7t46zd1G040NpaGusF8G0G0W20nn@U00
+e0erjDAVJ20008u5006L_X41POyR90004iLU2R_B10002100400G0g0N20W40rtknCx90004
+00420212WTWI000FQDjI08000003mM@CilE3JWdmeuI00I102W0e00000C0040H0m0200GG0
+20G10000aGQI0G500W000030WlpRGeM601000084Gxx6000200024640WiMCW0000uV6WYvJ
+0052W00010180400002W0azE302010008Kyj10G2000220010W0208100aEpDG901u5g6001
+0080W808W8000WG1040002J00a008000040202000GI0W88KEF30014819005K00Ge000G16
+W0A8815010I0WGO00C0GAC000000O_60W10KW20G0580300H06WW40O4000120e2G0020205
+00LW008024200001W00540YA004A0008GXY0G0001000K0WWo4@6iWe1W06G480G00H8023W
+10Gg2080G02re0GG000006804080000050YG8000I0q@l10001G011XZ080004841000W00G
+10400G0WW0O1G004GmG84G0000_usTt00Y84000cHG00O0WK6040200OOG00X01W10W40200
+1CJ23C0C036200G0A100aHC9m00G0001020201G000C08H40B00004W08W001000010mF@6K
+tl1hMb0000ejVC8hR600000005400G000W2m08WW0G61040J00W00G0m@_60kG004008e000
+010e00000AWGqOl1jAcmpS60008ezV30A40qmV20K008400TTl1HxRmH@600G0edV30100Sk
+d10WX8wcm0G43a9uMnA@6m000G0G0m7w900400G000000Ip1GWG0W0EDt08016X5R0000404
+08Y008808000800I00mn@6000104G0004022420NrPW0W0G041W0020004W002GOdV30mG0q
+nV2020AW4044yh18900G010W80104W0GZ@9G09100G09110WDsD00009000G001GY000UCn0
+04EpGW04008G000G01WW08W0W9jJ004010G200W020800001002000G4880008400aFyR08I
+00000GW001w8d1000GG4082WtWZ_De1T30082iml12080sxsWSuVG007pXw6aFj1f_PG6@60
+cJ1u1pAMzt00G0GG4PI000G0Y0008G01W00W@RDG04100000W401O0204W00G2020A040X82
+G0102RrRmcF9a_U2000WW900Twa40W2000000080CWP3084010A000002G00XatD0000Kg09
+yHE3W1J0MWtW@zD0G2010G80G00G0208004010002G0209510G200800G0040860GnG00000
+02020G02G003700800G4004000302G4e10YC08a00O41mG0YWA181201Lyp042100W1o02e8
+G10XWOW0K40A3G8000GJ0W00GW040011000mxC2e010800hxR0W22WJOC08G481eGO0AA1W0
+3aH47OW888W8G03GH1G0Y4e42K80C81Z64u0H02CeOeK0HC3K92a0K0308O0n0G80LG60A00
+0BxR0004H000100W00GW0Om03G00EW00WGG00001m06upWClCWW00028GH28280Y0400H010
+0G4GY000WA0C001tTO08X4G880G02608W01146W044G0G80020854000402W00KG11201W02
+0e084G20008901G0G40WW0A8000044Ae02080420W0a80I0gWW0880WG18000088WG1W2A10
+4900c1400108042A1W20u1_D000A10040H90mp36G100009002K0000402085000mwK08041
+00bK00000HnEd0850041W2FKQ0b00G500001004W90G0W02010W000eq@D000G82G000f008
+218MAt08W0G000G0110W00C0W90020G004640X00YOyXtrPGM200080000H200420Gi0auc1
+RZR0200J0000002t00401J08eS036yF1300001000022000800Q0IVu6080m01400400pUMJ
+00G041WX0000040800W8A010200400G00W6MD0040e00002G003xQ0401W6qmuJ9300a0MQY
+1GG0002W0200W01K00I100GV70I0000090320001610008140G200G000415Sl104G0G0W10
+4a0000000S8WHvC0WOG2C000O22801G0mGW04xl10W0E40080G008zV3G10a08001000Ov@6
+04W0G00000a0WmTV00K000009g40040XI892010H00001804KWnwD00G80000AR2000GG000
+02001JOpR60YG00I4G001W0100eMQI0G00003002W048480000180040401o6e601W00W002
+G000qU1m00q604000020WG00d2804el20J072w1G000e9G810006PCml10002T1100Y6000G
+RAYl0OGGqB0000011WavV220040G200001020000eL0000i80E0000eJ4X08hS3030000K10
+nI0011o4000m000G0004J2000Gc00000000AxP9y04nF0WoE0000WaDx0iIl1nnb0r100@3H
+y20Yu50Y00WQkX010010uVcP6040011000Q6000mb3kXoCJ1NQfyeqIP6cboCC3cPO6iInCO
+bMwm6UOpqFxU0y@XIL1G0200Q00mhU700800P8200W_Wtl00CJ1WF000Km1mV@1m3A0xC300
+000G600_zC00Wc000C07080gHu2O410uE300400003000602080C080G0ZWpGCSC45W12G50
+9060A4C0r8G2gHWO0000CWUK88WcGO0C0r0O0kpn0G121W24Y148010302WA020C0CKO0sR0
+0m00005100m000m5W1030N460g900O000WO000Q200m0G0e9mA21GD200X900uOH6yF0000G
+000_300y@V00AxGm@@1W80yy@30zV000009x0yrl1400082040yY70LfAGPx1Fy00Uu1WU00
+00x_20ePC3GpO6@Vm3_7W7ym30fgg0w1Y00G0804n7H0m08_u1000000i0C000ukR00yq30Y
+0200100i0000002WA0q7000ig10G0u@70W@@5000yZj1FK@mPsF4vl1zgpmNv908W08XV907
+m0CCU5VuXnxrdipK2lBYHblFKkI2@Z@00W00000S6500s9dXzuD8ks4wOtWKsJ88W4MDdXdh
+PuUU3UlzX6OnOWFI040000OWk4z7w2dXZTVOhp4oStWqpPOcx40804kT53RzMnBv64dY1b@R
+0000udot0Cp1m9@LSWF3HiwH2wI08680WW600W2WuxDG00400401G1042W2000W00e200801
+Gkx60400eAO30G00DiJ2W020ATc1000Ka0100508880G8Gz4Ieo0G1G0x7RmIyC080a021G0
+0011H080TMR00WGWH5IW00G001002200000140Co0W240WJ0W80DG441000e180W02W04W0Y
+208O00W0041rR0010G8W050448021G010008WW000008G00G00W506Wy4l100kdNpcXmoD00
+G04042100110W058404340001HW08K003010W0000W0G00G005O00008a8bDG00GmT@900HG
+100L01WWAW240800YK40Y0A5GWA0G04560WY2X40001A0CX00W8@T380G000000183400118
+04HpTR000aG800100K28240ael1W9W000m080a0epJ3Uon0e000GaO0W22421224012udy6O
+0040GW040380C040200WH400001G0010400YXNyD0040020408200P_P0CW1Xc_DOHU34G00
+0000G01W0W0800140W10000G000G008404000YX6D00m0HVtLWB00OOV62ytW0lCucS30208
+0W08X00000G0Wa_D00W08C20Wz@D8oS3kkd110000030W100_@l100H008WH2180ef03G20G
+4cT2ZFO00W0WiuUOJS300H00W800W00000UWGltePV60040010400042004GK020hgdmEa9C
+gd1000200080Wn00188W4JG0IY004H404I0020Y0004W24G2GK202GW006yFXMsDOjB3Ygk2
+8200Y540EXfY06DOER6000eaPd1bgp0202WNbDuLx400G0W8n0000040020G040W000EAr00
+060040a0001800W00001020W3aDua23gB5308000000r402aYE65cAX0090I0003uo0W0100
+0W800082ss0H810080800G002a0ShR68028G0G01GG00000810402080G24000YG42G20G0G
+WJoz8s36gW_X34I8iV3000XqsI280000400aek1@qd0000H00000006140I0604X2o040WW8
+4040OG809CJaWGI06nCJ8G050C0C2001a001X8000GKW82W000000m8100000080G0eQV682
+000000a8000uI1WAOhG00G0C00YG@PGG0D1Y0G4aG100WH40800200W0800W004GW6040401
+444020H840K9400215Z4265HOW01ZQ40mX000C0G80G40GGi00008AI0IXX0YA30006080W0
+W80G000I4W829100G010WGY0PyB10G00000ek504YU_10480tuRmrj6i_l10002W0G8G382G
+800Ob96Ktd1G100010100000021mYr600Q0024g4501100000I407ht0085KWG9WG001axj1
+0010Q7r0A040FwAndo60820eYV300C86Yl1K004Y1mWJHDel_4_0F10GW053aGOy90G01G04
+0mOu60eG00000WI0G10GKH0W004G00Sme1@@R0G00G4GWIhjc01000A0G08200GW80CQV2m0
+00wRd10100byR0u35Wi@D002000IWWO0Cu7@4UoF1X000K440W0C0qxF3000DIut008205tR
+0H00W1uD03O88840G80402W0000G08008G0200804m3sP00010A8GG0100tRQGc@IG00GukH
+3C900iYo3JuRmNAF000e1KW0Ow_6CSb1d@R00004020401010WWG800308GWX40W20G2a0I0
+80a00080IY0002X080W8H000Ga8G091W40OTV30GY00028G400000G41105zeBHfy9008pkz
+V9swtWdlP0200002WG08000a040008CxV2fRP0W40WrUC00GW84WWO10000u50AEr0003000
+0210Sb028OtA1000W008000840000040c00000cG0G6a4i4000W00C00008500000EaG2080
+0W00008043G2D@dmS@6WG10000G0250WVHDeQ@40004I200CF03W00010O0000mA0_F0W@V0
+ObVW5m@0gQz1N@10040GT00Why70izF4020010_W1008W00WOy20Ks1G100204000iwnh6uL
+00OnV3SpD0000qZQ00m8f6aVC3Vzl100uV108p0O@@v700qi53gwV0_@t00m30000MKhI3B4
+00WY000p040S1OOG0mW00W0000I200m500mF02WY0CFC0O800m000041008200e2G0010522
+0_8_3G000UBo0000000AxC200Sba1O200_CoW4oJO0V30o80000000o000m000W1e00007Xr
+WOuI04020c080O0CH00m01G1LB0SvN0ChF0101G4F00Ax0_@t08YF0mzV00@@010r14c10G2
+q60W00cw0000Gq@@kz0mW2myzI002004S3mm@F8y086p000002WhAD000000G4S0mF00mC50
+000000U85yDYktWwLCOpDO000mRS00edV92zMYZoFfT@400WGabT27XN1000YHKUO@S9Qir0
+00ir1ZBnVh9Kck4LHQmTwF0400Owu4AuEXMnD8Nz7w3oZcyVerj40CXGKfNEDaZnMuFqlh1W
+000Ejx1010AB_H2000Sn300b_BnOa6CD@3000GsftWZHDuFy7W000040000W2Gzy600018GD
+30000G004H00GmFz68040G104mZz6000200O0mBy6040A00200010YIbD8sU3kmt000_yX_R
+Gsz980G00G0G000HWdWIW01000WG01808x1P000108000G08GMHt0W00001W28098a_l1400
+W44m01aW164a00G004b02808K01Y810814080220024020000W808G2ctl12410085000000
+200801408X00048404W0rnl104A0110000H31X04GIZ60G00W00200G20088WG00000W0080
+H220ISP@9GKG45YA90044400G8O00008e000G0epU3000W0GK0YYg04L0Y0W08041O02ks01
+010aY08G410I00W0G0040m840C00DTP0000080m0800H6Cs0004H0221980W022X08G00004
+00W28W18W000GRU0H200mmay6ySZ1400080G2W0000G00808K0Wm800000H0240801420G42
+1040W0000GW020WyOk10080m0048001010C010G2021W00G800CO04C0040210000010Y20W
+0W000SvW10004G20GaWk100K0Ait008m09MY100HaG@Du_K3000001GW0G0WIH_6W400PDH6
+04A0AK0G020W28000Cm000W0WckoWGSD00W018013KW0000100e04010GeiV3Y00Xx@D00Y0
+08000W100@@dW00400001FQ_GbU6iVk100oO7fs080CW030Ygtt04014vgPmXN6yhl401001
+0m2ixb1ZKOm8Y60000W00800GGG200C002000m4002804000031GW94044X180WI0000240W
+GNd9C5i1I00041204Wk1HiRGfJ6y@l1Y2C140W0a7h1p@R000W000408400W301aak400W0G
+000040ou@@40041Ckk12800G01800H01020025W0006800C800000242OMD306GW00We054W
+X00012G003ip0O030GO105kymiy600003w01G1w90004G000H2x6i3f1Jkp0W0010W204W8W
+8004W20000K000G02084002808W00KRU20a08U2d1280GNrP048Y0G4GI800A0004800089_
+4010000O0G000mGTF000G00080002000e50000W0080040W0200010WhjC0000ukZ6G4O0Oi
+V300GGW20000G008W000010010H0440T3j11pOmKz60a041KAG322C4280040X80000WGa10
+1K4A40W0AWeCGX6Ue802GH2W020GHcR9OG000G20Y0690W040jHc000W80820XuR0G100882
+80W4K80e000I80044CW0080100u2880AK4ShV2vzR04W030480u0G012Y20860400WC00020
+21G001403E10140200eW0GS00Y0W4WG41HC02AWaH0C000O06190Lg00e8K042100Hnn024K
+YO1440NzR0044000mWGLH01894i08300244000W40W00007b5200G000W2W1WKC10WG1G000
+HO00GX00W00200g000O0fz@40KW0200G40b2240WGa4C50M40n3001uG00G82Lk@60022G0m
+000m0080W2K0a0050008200GY000K0G81020G15M3l2G2000G900001mC0KArnA00aEzdx3X
+rPGBgR0H00urK3kkF100G2W000040G234828A1010e8200020100004080W000080W050K40
+xZb008300440RWcWi000400081J00110SVU50SE0Ivd100GG@EcmePCayl10040000600000
+1G002000GH00260000000021200G050005100804G0040204G89H3008202G01G0G0009080
+005_RmVb6ixl100J400040A028pK3A@tWu2D000G0210000048100G2000W000GW0021000a
+K80W00Aut04020NI910080201O4122000002G08GT303000022228400XW81G0401081000I
+90200000085109020020C2a000800518KgaF0IW00009W4910800WX@p00GGWaFD000YD100
+00a0G7Ad0800020000Y10C001W000O9T60WG20000WbG18O0YG8G20Gi491f004uT2W2I000
+4Ge058qD0100Q0WhcD00mK0000G9GuD00G0I18XCxVW200000WU1W000y50kO@XkdD0qj3mM
+xFKLi11rRGxyFaMl14080000m10W00WY0mW1C4Ok1M9x000000Or12@y31805WlJDGr1W8y3
+WV@38020eizFGPB0WoM0_3mx_60Wk9600yFVzF00MT0PHp0084000W40PWG000GhL26K84Ee
+4WKG@@dGG07@zV0G8g0uXP00Fw100kwB0@zB10mNV000@ekx0G4L0WT000G830un3Wc@P8eR
+3e3W0WA0Z1606400LcK0I0W0W10Z1306000C0023d10O6W23005600KpR2W000W1010I0304
+300006P10n0m0Y1W1W203030606080C008G09aR0010WE1I8BE3004000g0G0K1eW00m4oD8
+hS3W1W1WBWB20WV600m00W8_20x@BFD10200W2W0Wz@1mL@100100004GL70@lTRGOu90V8Y
+N00Mj0m7Wb@D00CpC00u1Uu10CpCWy0000iZL5GFy0WUu1g_F0ymZguX701000ILW70C000m
+JF0Zzp0C000800080201A5K0608I04H40W50002020KK100000z1eYP3I_NYWMP0400meRIa
+yc7000WG20000010W00uhP@SiQ5rbp0W00WZOP0WG0O_t9S7B3jidmJB900WBDz0CU_sWcaC
+OpkAEkZaUrV0010GWnCaik47jpmoz90qN08SRCMqjY7_EPLA3IAcXPuU0000I8O600010000
+I3KLSCl1000GuA0000G08Az46m@XPSDO5mMW008000000C0040000K0008e20G00020G0001
+0W0010W00001GC000CNi1T1O0400WLXb86W400qYU7H2G000AotWdyDuYO60000LiZ100A06
+ot0G11000200088044008200802W9zJ0f0W010X0W22e018G00G110G0084G0G000400840O
+00280a6e15td0004YchD0G00020080080020A002Gqnl1W00000h0000W0X0I11500220840
+109WY00Y0e00C0800HP02WW0231140W0O00600Y1G15400CW00GH1IG0000850W24G001W00
+20120100W040008O02G2078G00040e00e0200P0020W1001808W200400W0820m0W04uhy6q
+pj1Rxb0000G000200G0040020a0W01100000000I000em9W000WH208100G0ePuCuQT3m008
+awl1VxR0W019094800GW18W00880000380G1Gm010G0W0000K080020068000G018WLjR04O
+02800400080HG0M6j10080042WakV2200Gk9t0000GG1406akYCuD000Arx@600K2008008G
+G00WWI00520200040W0F000K0a4801004K00100000X20004W000118XVzR00W20a0108100
+wtqWn@D02000G084080G400008000040W900W040Xa_D0W8200082000W0401020G0040000
+2OsY64Hl1LwPmz_901000Gy1Gqr6irz30W00000e00W0G040020044W08J8P08G4em@D0080
+oa@60068e0z4W00H01100Wn0800W0040800W1Mtr040004004WW02C8e144004W804W93@@R
+009000G108080G141qFi1GW00000X8M00epV94120W80G008010Ga81005W0W000W00240OU
+D34100ypk1201G02080G0H001082200000C00018612qgi1000WC44000GWW000mv@602W41
+40000I000Y8WzzR0000i4@D84U3wx810082000GMhq000Kk00000GI0Srk1PpR000C80W04G
+0041100IG80W00004W008080W020GG0K0W00050G13eW8010P0000060000P0008010W0WyF
+DOB660099WH1WeAU3004000G4G08888100Y8200008_uo00080dbRmuD60010uMV3oit0W00
+00IF0YGtWATUWC00W84000000JMP00440e0010200000K4Ka1P2Q00W01024400800160830
+0020000814WG0020440e080YWW0G182420L3020W80G0W0K180GMm0G1G0GugZDG0H00K100
+H0X0XqR000680400K0040001800104440YG080008s40008840GG44000r@_6000WWY24200
+80gE8W00A08Km42K0hW089A040OGm80Ga1W01000G80m4X242244811860W0880HGW020004
+X00WH8o02GD6WG10e09W4X0bK02mW40A0m0G8b0W02240O494G0X2Y0YY0F80G0484004800
+80020028002G000WW0011G00070m88042048000201060000e588000G1WZIIeER300Xr011
+1080Xg2g9G0420G0ae08002P2020oG2WrO0a0aA6Y8W000nW4084H403H9D088Ke0WK4e2H0
+W8W8440042KG1cWb0001bklp001G0G00000GWKQc10400kWpWglJ00X0G@@6iFf1l@@00X4W
+o4h04000W0WWzfD0010mzZ6CMY1DVnWo00WTzJ000e68900A1000eXi000090G0G0486800W
+FKC00G0022e841008G48UrtWN6D8Cy4w3xXE8J0000Yg10WbnaW20040GWWQwJWG00040000
+c000602Ips00eW1nnp0WW2W4@D0WGI00WY00001m0W8020WW04020040H0CWtxD004020001
+0010080100G0qxV2020000012400W002004000008000200200088W000000jZBrP0000nbr
+6G000eNV3G0G8Svk12G02010aqhW10000GK0001S2PwV3000mG0000001000o980300020Ga
+a01082000040He40a00WC002xt0G252I400010Y81G4SdM3M0dXiKD000H0W80000010G004
+00008000evJW820Wa2U0090Y00GGG0bK00020H0000085Q41008020GYYG0W04008g041W8I
+000004210000W2000WG2e00WW8000000GO80G00q000041002000w1000Gg9W10001W0Cul1
+200uK208WzL8yPf70008y@R5000G4400a@l1P7p0W00WntD8W@4000mSqK2400000050800G
+200mPxC0eI8080j2000H000yy704XF10GVqJN00bj0mEU1eA@20W801@k3o@rV0L3mF00Cqf
+1W0000m300000NuByWCN40@l8pO6JcnCuXxV0ytY0ul510000BR2VHLfA0100m187S60W2r3
+04nd@00Ck202000000C00Gk10_@30080aPUbV@xlNC2084H0yZ00Wdy0W2U00P838e0mz740
+000004100W100G7W2Wp0C4g0OQ00mW00001008200W1W0WB05WV0A900KU00Giu602010204
+GOu60022GW5WX0B030M060C0C0O012m00K1000G5A00K060004080G0G00OtO3Mvt00G5W00
+305460cDd12200G500a0d1m0m000eo4373f0O0mF300KP000W0W@Z0I4vXG40002002n700l
+VR0r1004X80q700000100_hM0uoF00@@BpP0044WggA8XGeW2XGXW0a21XW0000b00008z10
+0lZR0uv7Wc@J000uEN1u2p90G0004058W00WyN0tX10KTV0KKHW0Ks100t1o000HS7W@Z800
+2A0G4PovkwOA00ytV18mSR5bm_300MC2XRfJso96U60800q0_30L40ImBXMuU8GW4MrFXdhD
+8883syjYyND8fxDIA8aQlb0000lb00WIrz8XT9gEGYC6SQtU3o@F100UStxnmIfLCmU2nflH
+qF90400Sxt72qNYGNh8zV3cxnWU3V0as1GuXC000200G0wRu6q4V2NnR0008Y8NJ8H@46JcX
+hwDuzf4Q7aXmrPuFP32ptZ3LJ000I0000MN3010W00EWs0408000G2080408010G00oA26yM
+k1nWR0G0140110010G008Wq0W1L0O0200erxD0XeG0W10W3BOe_V9ktpWmyb8DV6MtpW4xD0
+0ma30200800Wxwb0400GG10W080W@lu10080G40001002G00evV30040020W0WG088001008
+100G000284rn3zkRmmfLSfe7p@p00m6Ww@Je@S3W0G08000A_V3008WSAh1r@R00W00020A0
+020Id8XX_V0009Ges9CJk100GO_ky70008A200w6_XKnCe@y70808iwl1Pn_mf26iW06DzR0
+024WLEv10H8NJeC0028A@V301W0aZj100GY4G4020000908W000WliV04400W000W080j3R0
+00GWBtCuvz4kGoWtG@1yY1mNu90004104000G102001xcR01GG080000204w0t02800Z@QGL
+cLikC3R@c0808WBN899rD000WJ700OqU6spmWcpJOqfAklEXw7O0W0Y0002m2La00H0n@g@0
+08APVV60G0nG042ehB30G0200420410mFe60a0800800108WyOPW40000a0W8CD00200L1WW
+CaJ00e6800020Y140200gcsWfOp18y3Gp@60040400W80400001WG0X15H000G4K41260WY8
+0nG00Y0m000080W020200000AWP@JG10010010010000AG0WG0080889_400Y0005000W0mi
+CUSSR8000u2f810a000GXG08000Y0K00Y0080G1A080G404f000210Y01A08008YOoDuQ63Y
+@t080G00GfG00YY815000000o0GXY@JW1000000001GMNx_300klrcP000e1008C00W2C4Wm
+0C00020C006005q0000A0002000e0rF03nyR0H0004000X4OmHu6KCB30080QPfYXWR1qb2G
+x@600n200002W82051042Y3O401G882I408480G00UW8A8GZ0W02W9G40210000AWZwsP048
+5040G020012K0000H8kvV20e000G1001G0SiuV000GwU00esU640e0e800W040Pmp6000820
+01004G4008HPJmmO@90W200000000Co7qD00X0QTtC0008K000GVu6ahSE00e6J5G28q0X20
+040G300004AQW4q0X1qDW4eL0010g40800k8U3S3X04IG2ro@G@py0y51ed@4000p00000cP
+kWP2VH0y@Y0uVmnCpWBSc1W@BIbgMaPPcegK50000c0qvF30W7UW4yF00pC3cdn3ymJPOU6o
+u100__t00e800G405200S2L2DLR3000AI000jmd00K14Y00e41028205GH0A06WM0C0L4g0g
+800KH0G1Y0W2m00001G100W820@@R00E300W10A03mHWc0AGT0re00gH1eW_sJ02000cy@T0
+G4H9Q@300xoi@P0xG4l0W8U10Qr20Ks50000G000GPpUcx60qi30004mwr6eQ00un@4000TJ
+L00Ooxb8010yw@3WR50M0NbJnz8no46NBaZxOOfh7weN2000CU700_dxdi0OPbS9_ZB4000u
+W500kJuan329gjA_SN800BJXmlq4wL4D3C0800YmFXf_D0y@1GjwjitU2hxQ0008WmEDexGj
+000GJH008z0IUIRZE0x200000y1aotFPrUC4000KpF3nrAHgGm0040uNU3AtF1OKD0hWWnPZ
+U00O0erHLMOOl7wcP@pP00qDDLWeWUA0oQuvG3WEa2CQs060004y400kF9jVmD00m2mRkj00
+WdUd5vQf16GFF0hPy@lBwc6h1LQf2WH2WXcHwXfPoPv@ojpPFPCEys30t60VKKNfqjO100ul
+gt_o2600yg3Rn6aW2000040C0000W1SqkAWU50Q0xD087S8H420IW04fWbj_Q00Wa822W8I8
+7200EWWJ0000um10000vG00vtZ100Of0f_@Fh@x3x@zq_FFk@lpx@w0@FvIQ1Wls7_u@VN_V
+td@lTw@Pl_@rj@Nzx@J7@Vqp@@Sz@DV@@ov@dy_@7t@Vn@@lr_@Pr@@L@@@@le000u8E00y@
+F60800Mp@@@@L1OY1G9_ETxz@rc@@ix@7R@@l_@@@@@@@@@@@@@@@@@@lh0004_@l8000qW1
+00_@d@hnG2qm3m@@K10010W00m6094vFF000OKC00C903r2Omh060G80u@VR000G4Dc10020
+o7J800dldDq20W040000W0Y0Inm3002W20G0000004008IX4YcB7mc40t7amy1C02000002O
+zQI088000002G80W@@J3000EP10W@@j100Gm@@LW001u8W70004W000ebYS004n@@l400W8M
+bmWuBO00GW04200G0G00004cFn3000YjPOG_T90G0010020001WO3mu@VF4Hb0y@@6200010
+04jWX1C0600002iCWA2000010G00080004000G04000800000WKy@FC000GS500y@V5000W0
+0G0KpX1HYO0002WwOCG0K0m@@XKFI2H2QmM16y@lD00_TIA4ZI2C8hm401G009012GO03000
+80100p7u100W80G200W00gEq040W80G4008G8000mu@@P0a20y@l40W4000GG00I00400400
+0H00040008020LWe8a2G21m@@U0020CXn4020W002400002200H00G08000000YaFoC6700_
+@l220080084000a45Z1W00DKC81204A4Y00W9c1W@@z0002404110000024066A100a215C3
+000000yiXKi100G000W28000VCo00850KG1Y_@F40G40JPO000WWUGD000G0Y20WKLo18t0G
+q0OW00410W0GM16y@l101D0IPIb9TOuoK300W0q903vCfIS3O0010W004G4K6040GAs63000
+A0800898F008KSrZ4f0O0100WLfc100VrwER00800080000W40W01000001009GW0SlAFEYm
+WQCI00m00000G0GC00000O200y@lDW7L0kHf2001041006Mo042100002GO00090QeEgJ0w@
+00U_XGy00eg30WK0Im@00000Ax8kc1j00GqNL0X0mc_00Gg09000wM0m0000@VK300RTaGS6
+UW80120024000000G800017hnWH0Cu@@M00uZkH66000Y080I2GW000X0Gq06005100g0800
+0mH0Cu@VL0Gy10n@1eJg7_@N50dD0@@l1sd5000000F000000ew0Gs_1GEt14000OrNYn600
+06i300@@xK_M9atK2FAPm@@v000bgdPL2REvqNIuWw40002TabA@@B1000K_000zCVIOpdSQ
+b104G0RlwX@@Je6066UY400H73GjHxSF0000408080000G100VKu100G0I8000000IGo0200
+4G000000Iia36jVx1mX3WZmV0000o3Y605101080m8Y601000080Gyr6iae7zqO00m0LO000
+lOP0000104A000000GG000000003nAQIKgz6000Wu600ylj40G00EypWPWU0W04001000030
+dKSoht@y8e100s1Y_2308O00401sVp00G00FmnGTTRKHf100G0W00G0000029004G001200T
+5AHJU9Cvc1@@l1ub1WBpgu@G6Amq00104W00010O000cZ8L8FG0a0H040I00GG3V600G0010
+Z000100G018000O00000000840002WWLxC8XUF0001mT00u@@A01022G0W00G010200G0000
+00C01G000G0H20000000O00400008800y@l400480020000WWW00010000100000m4W03y@l
+1421080G0G0000GY40000200W00001Mbo300H_@@NX080880080200G050iAf10004000W9W
+008qH3g5Q30010lrPmtZ6Srl1f0a00W030W008G28800G000024O0G3zX0MO0OxV900G4yxW
+18000J3pWwmC002Gm9S9W0K0u@@A00W021G2W00080G6004GWA0a0410K00I400058004180
+G4KGW0000O0K41210W0WG4120400A222Dp34200@@B1190445W0aGO400e0Mkc10008W0AW2
+OM8L4I00041000020200IUh2100eG4G4DO0e204G8uJ3WK0u0G4L000W8404G110W2482400
+408E00Y000004H00G00082g_V300I8@@LX044G005G00208W80800W02000C82G4IG1040Y0
+20L100a100IOieL0000400850KG14102000502W00008W20000GW0Ae0ef0O0040WK0CWK4e
+0580W@@31iu2GnfLe4004G0100G000e00@@R0003G801GK204EZpW80n00G00001C00000e8
+00001021000010540051600820K4000W0K0000000GXwFD8XjG000WeE00u@V901S02009eg
+H3Qxp001000G310014GX00000G0H00uVMn000K4G40040W04002088A240000008G2242000
+G9000018OG02GW00000CG10W00GW11000W0034002mlNO00GdzXrAcOrWR1D0400000A4260
+800010810kxg7000Y02400Y0100G0800022X090W800W2W02000G48m@@6e8I00H00e481aJ
+DDuxr4Y863mwB0NnM180000Y000400W0G200G00221X00H200002I08szCXeRh004600G0WS
+sI0X10000eX60C8MG3I1uXvQ91D00m@@I0E00000AIx090000004GF9WGOiRI0fqnm@@L8p5
+1m@BgALn40@3UuK5pCj8cPQHLztYggg5PcP0mCpegAc1UuB2ymN4pXl8LLTHCpCu0uVCb9yW
+By51Nu92@@@L00WvF9jA40kyB0br7400GYg900W00_x30dz70YxE0W000JfBX@@V000420AG
+H0KWA0i051O8g0mG00WX0W221WK0e8A03K020A4404000800eW@@h00Gk_@@I0002200G500
+WA02WW0C80YXp00a700mR000N020g0KI00upI6a0N520u@50_u32W@74nhF8YF0G4V0WFx00
+y@10U_12m@3egr7YK0CGy10i@30Uy310fx520n4W@@h0o@30yr70i3A0x0d0W00Vx302G00a
+zF00ymTQB5RWt11e4Mne7EX0040C8T8nY7200Ft7pg0004mbsOq3NoVBP0000e9k99MSF000
+GpG00eqz7sfs020W0XnTILuI0000SLC3Q7p0000YFnRW20002W02G4010020004400000404
+WZkheOS600aUHG10eRU30W00KHU2z1O0Y00m8wJ000W000808802nVRGEzRCph19JP041XG8
+W880010000G10G000G00G08YMdI0GW0GdR680K0uy_D0LO0aXl1000WG0000W0G2900mWh60
+0I8W2G02400G0032G004W00ICdl1taxnMq60002000100W08Gm200400WH0000G00WC00W00
+n_QCeWV30O0GiTk1zf@G6wC000WKlGGGty9KwU2Y000W0W000IG0m0000001W200000040I0
+8W00G0000400WSwt00001100YprD0020008We5sDOVy4mZ04Svj100G000040008010GmltR
+00W4OUY40u000004W4O0mkx6000G42200880001004G00c5m008W09l7208W0008008W0_@d
+1140WlWPGdz60G0X0X00GV860081e6EF0ZJ0y@@3G0102ot0000W20Y0C2000001G0000008
+H8W0WG0002HsWa@t000124G0W3fD0802000G000040044W00eCkV20G0000042G00100W140
+8X3vCux@A0001n50086@40W00W0240000200400G4H004WG40080100W2208a8WzwDW400mH
+gUW000000018W0000040W60006Gy@V2W0W00G41W20001G0GSx60W0WeYV30H0002108r@A0
+04n0400ewv40G4mStd101G0501601W0W00418030000GBOOGg06yvl7004010040108W000I
+@@60440OlD300030002OaR300002100000GX0000G0100W2Bw_73WgA0@@R00W4G00G48210
+0WO081400800mq@90040GC200W200081YW800syF44G0801518W0200Y000WC400W8204180
+0G0A02We00032G011000Ha00W8M0034X00G0804204Y0OW10PSZ1PX0WMTC08W000KW13000
+000MWHe03m881XO82IqH043094bWe04H00WY80AYoW000WbOzW0002W1GG2020201H0WC4tv
+j100GW0i0AW4W009a02S000283W@UP000041A854Hm05000Wa028y@A00Gt_@l100W018000
+KO052pK500W02m0342H4G44120430f820G8W2Ge12W8G250Wa20009ykAYkc1004G4f40000
+0jgl10208850008W88Hy400201G0G00004W00AI1005VR00K2Wz_h0Cx1m@@600HZ000eKzP
+6G90H309W05KG400909qR000G9020aG00WUQlYS@P00A0WY08W@HC004e050100001002G00
+04W0WAAHS30200842W0051WW8WWmlDOHc4cql2h2005zR080500GW60000002402400XK0GJ
+O64wk1eW080002ard75@RW210W3xD00X01a0M0000040890000004W4m8040W0404G28WG00
+009y@l1O0WG012Iy4x600Kh_@t0000Z00200W10W000m0104080410880W00000205002W08
+00e0900000W0423t300G00440KYW000G0004041G4G8e000W0GO10W0G4408010200010Q00
+000b88MGG000001100W008G00104Y873W5D0J@d020012409K91IG9200Y08H0110800O00Y
+W0082W00004Weu9L3oWsZmsU0S08000Ka4tI04G0GfR6a2G2@@R008E00000U1002Qk2a002
+r_p0w30800uB8y60e80D0000W0GXW0008b002GQ5Y900209J4un@GKT0mZ@00r@0YFyX8U@3
+Or20Yu50mLB0ynN0W_F0XdVG4@@9dP0GpE0mhV00zVW00009x@10000ai30um@h00WaVnm9W
+T00Wh4G000FF00C00GTt10000804000nF@@D00100S@y0W8_10000FwQF00019I1eIa2G505
+WA064L0Ce81OGHIWWYC50A80LGI0g04022eWC30X00W23002@l200SqxKd0Z180c1OO00mm0
+00n000q400e3010306ZV0C000OU000P000O000u2K000WI200Iz7300GL2YPc5aggYAuX7uX
+pCggA8KLLGOkgW0m@11Uuf2ym3km@7SX74u2F80aPGgIrWO6pO2g@fgAw3Hy20mg50y0C_V5
+0QB0000000sP70GfF000Vo5L00m00W8000@_1Wp_3860008uF000000G0E30000m0W8y1400
+04GzSRJpuv0V00uSU3gxtWe_tem@P080GK379H4pmEx9SOT200AYwvVc9ZLvkJIUxF4mGB0p
+y3JnVg0080000100W0aD8KvRy4cgE1000SLUR000WWDoD85yDUWM50200000GW0000G00400
+WmNp6y@l1W040__r00W0W028G400002a1O0O38A00W000vVA30080y5U200WKstsWeWDeUR3
+K0081G000W0W1001ZBkDGW00000108022jh620002W0X420G000G0IOG1000000W800208G0
+00005e060000WY00800080X0GW10W0004G0004202K0001005lO0G01000040G200040C1k1
+WqTWWKH8100008300G0200402j6R00002W008G100U9mWmmDu4@J04K004000me0J_v60000
+ABD340Xm00012W400W0000WI0WW8W0420220Z2G00WY0000G100X80wxr0G0202100kVt000
+0C4702Gem000000J00800804G000O00444000O0KW0Ie03W0020008220000H040H001mVza
+0110OfV3010G000GX000HqG9Kck100W000080102OpV3002000808_U3kZt00020lad000j4
+02O0hpRGRx9itU2HHln@@R00430800002800W0028120W0G00p0W00400080200Y60001000
+O001020W0100008O008021001000C021Wm@@L0Wv0000002G030000a45040003Y000YW0W0
+21WzvI04200G0000602I240a8W0a1i7000W0G040W080110000W00002002I001I2004G400
+0A000800400200I020040081001840000A8WI0sXCXzqJ8PV3000H0L000WG20G080vWf040
+00000900201W0G02WW44040DlRmf@6WG0009H0OWzXO0Y8uHG3wVp0W8O4000002001100O9
+c4W04000000GW100G02000WW008002e1I00eux4MsmWt_J080G000100G1000080a0110GWP
+2H300808800u1430200002018W0G3za800000WW20W00W804W4G20001Chd1W10Y01000083
+ujV30GWG0004X400W1200G800GG00804G41P23sp0mIb104139yO000G0W100xyR08000009
+1W0IK04a18002G000nO@600208i7F0G12W0WYm8aG8H404180420G881WWG4LBY0g830K405
+CH1O8Y00GW8084400281G4G02YY0m8mGeH00G0E44fG0m7c6yHV2J@RW8b08AC10Y1258WG2
+G020YWW4022G0C1W0a2GP82J004e008H4X0280400e250W440Jqau3@_B10GE2A00020545e
+2a0rX4o034YGA0H00OG001612Y0200050q0008HG0W4I269042YXWY08W8222QO47W400G04
+0BltWCrD8KR300i_94006GI80a05BG4CEWH3WG8LW2WGX008Z00G0HG4OW8060108412O02W
+AGW0742822200009C00Kix6081004GA1IoA500e40140000XK2G0W9W8I9W00KI100KW00C0
+0080b0G08240KYI00HFZ60G0086EC0JT082892GA10010400W20006k0N20m200O100O000H
+0KuNkAQpy14A2G8W004000002W040100GX0G0W0W082IWpWszD004000Cm82G0141GY00008
+8044000pHyFana10000L70000004100Hqz9CiP5000D0G86G008u9zG00810010000W1A000
+000YXpQGz960e21000020H0000408000410000401BA80W0100a00Dkp002JWUkJ00WQj1WW
+00mW1G00000W3m08GuyI3G00000041100G0y900W201000040aCtz000a8GW00008MK1IW00
+280e48108000HW4K000041H11G0000400a00400I102400001bG0240Iu383ocNY0yD08R00
+0a00WW8C0020G00XW0040W0G000G8100008818W80SUe10000W09I00004I20muyU00wb00G
+28J00000420000GV00000V1Sb005GU510004G04IWp00y2z20010uB0y@l100e80000O500f
+6yAW5GX0000mA00mWI6WG80eJL3kG@1000jk140HQ30KKg1lzlH2S6uV01s@G4l@1iQ10Or2
+0ug50yyB04H4W0000h_@4uC0mP70uvF08_FG8u6Waz@_w_0WGy10S2FL00W2oL10Cr100181
+2000YyFWLB02000_300y@V00iw8000G01ulzl1G40000010Hy18FRF000n100i600G501mO0
+6aP9kPGkt600@04022eyC3W4uCGO000Z100c180m0mmO6W10003RiC3000G000G0010mF_90
+2U3000W100G702Wc0gCC0O800m00001000m000W1W002050608000K000GOu6G7010006JmU
+U00u300008G@78PhFWgE00LT0mhw0G4_10CW14K@3Orm7Yu50GPB0yZN0W_l0WNVG011W8U_
+1W2043d1_IV0mCp00000BMO6a780u@_3GymJZuXdQrx7uwF00000@3000cw00Cr13Hu328m7
+0A00410041G0utl0Sd@bhb30WPIFvH5PC3FyRG1vOa@a7ped0Gd2W2mPOCT3UJt00001N4dm
+En6qZ29px55000eWzCeuzbsoZX@rDeoTRsJF100OZ5Wpmgw6yFV20800UOFXprdfmT3000Y0
+G4G0A00m@r6yYT5fopm_zI0i_1008XmxyF004000W00G00aPMD0000OfJ9yFr3dhNXX40GG8
+80010000A0040GSUB301004fT2DLaGVP6CGk17qOmZ_I0000sa00m@@9010GOmV3W40008W0
+08000010YL0CODV3_HpWAN3H0002W0020G00W0080WG0G8eGG881K_n6iY@3rdRm2v980000
+W00mS_F00mF4004Kd_60008ulV3000A200W1WW00W0080021200101G0DmV2HAun1@608028
+i@4Icd1010G1FcGOp64SP2HtBHzb90eK0uwx7sF@10001JsRmQ_6CVK80G008Y800014000G
+0H0010001000H00000038w@@D06020200ewQ3Yd@1000SfVoGW_900088oV30I00SVf1PzRm
+DJa000G0Y4a84101000W4G0100080G100WZ8oov6CtF6lRPGecL0WmOVq@D2v@12000lm520
+0WeevD00Y4Gf@90W100000002O00000O000IvCag@DuxV302000kB0e0Q9W0O0000a080O00
+0G00100GGW0sRFXmJ31004v4W6000YW000GDz60W80e6V3wBfbx@D0000jH10Wf1g04040O0
+200020eG0000W4ifm35xlXH060aW8008010WYeY0000W100G8W081002100G0000X0084790
+00WCyX1G000A4EXYbJ00GgGMhI0000Y080i0K0O4124W10482C0W0K08lV3G004KiO8KGH49
+0JgW8450040W28802G00G492nKH4ge1G8fV3ceL200802080Upt000023Gdm2i60c30exR9W
+0W0GO002m0W100f001A0G01W011W000420004001W7Nz000W04044Ae4008100W20S@l1081
+41080zeR800I00040yzz3000Oz000yIU59rcGU26SHRBq000Yz@10O0055nmw@I00W1OdMC0
+0SJyvp6pha0000ZRRF10040G20YpUJ0080o8m602G4OmMI0H0001W88Fu70Cl047y3TWdGWb
+6000800010000omZF108228020000WY00HW000qNl12008x9Ea5oh082Y0000AV000N8zG7u
+68100G00m00000W80001XGG020ioy9ez68oPpW4tCW4800080E0012ONa02jaaGsJOo@400m
+WcNiJ00Wg50m0B04n7W000Wo6WyoC00P700OE08Y8GHUB100mUl100fzx1GC7WL@b00n70GP
+700hE4G4V000x801000000gg3mV@300ZG7IER900D1KC80eO00G0000I200m500WB018oR90
+00O00008JM3UnE100184100IkA1@200bPpGcL943d1G0m0W1W0yrZ19ORmQrXew00Wg100L1
+40C3Or00ei5000000YFRE301004Vd4UBV0gMN20G6PT_d000OdSJUe_V30W@@30G01100000
+Wzh3C852FcDhBWaC0Tqv4000mORDe8O3scE40040@@Nnh_90000Zt00mOvaahl1rmH2004Yh
+ru9nV900aNCuGThnd0000YMnDuvzD0CG0C@E9LnnmUzU000YQqM30024ylh1D_Q0G0400400
+Zj911G00GW00G0W0Uf@X8pD87U3K400CKV2BDaGWyCK9l10e00M3EXSf31020n8M98000000
+8mwo6Shc1rxd0G40adgJW200042G000100009Uox100F05tR0008eUwJ000WW00G001W0000
+WItt00801TfR08G0WpyPOlt4g_d1u002jzR0W00000291_R00G2Ye3C8yt400G00080004W0
+0W800000G002mG00S@N29vp0WI7WZeJG002mTS600040080ugx6y6l1luOmux6isV2Pzdmb_
+F000m080WGQjCCHS20090_@FXbqCO0U3Wm00SAU2TtR0C00WywI0h00mq@Lizl1f@dGJr64b
+j1HYx100804094VbRW000004G4@@d0K00W@@h00H0Gr@R000B9WV6gyrWnkD0400080GG000
+8@TRGVu6028W0G083800YG9n000W00300040220014010G40000000H00Wbnz010G1200nU@
+nGyR1mYdU04000G000200G0004G4102@C4000W00H0GW0042l10010QImZbwDObj42Qk2@30
+0ff@0040001200008k@s08010RxP0040008007O622G0awqD0008mX890080ObZ4EB5ZQun0
+00nKl@a01004000nZt6SQU84aW8W4G0W0X400000Y080W801820000002H0WuizA8200W908
+QbYD0uJ0S5G2ZSQ0G0802020000W04G0KDj1WW00W180000108040WW100048PiRm0@L0010
+1I40e16C000W2OG00G40208W0uyN3k1jY9AD00OWm7q6iwl4000GROa1000H0001E5t00100
+0081018011I000a0004I404i0808200G00H20O9UF090AK5K20200wapW9Tp1005_yjC0881
+eU3C0001aXk19s7202104001ZwRGVV6SKxFfnb0040WgmDuFQ9_uFXHSF1181GZSOyEx61TQ
+GbxLapa1V0pW080YNpV00402000WwDDuQuG000G280041020000Hm0K0FzQpY@C008jEfWAQ
+1@120W00000G100KKl1N0aGtyLe4800f90000002WG000800108LvY1NAZHYG6yiy6Wc70UL
+c100300002RMEXjbP0GG0m_79ai@69mP00008WoEGocP84V00gw00OzUF000s30000yU3Wz0
+0W__b0000B510WM@DGym3000WAz700@sRW000Hu3W@y70000WLFaQ220Or100G56k79mP0T0
+4080OCO2G000W8jbV21zZnDSIqyF300K6N@F1C10000GWU8b10202040808000W008HS300H
+02040yWCCYlp0100020KG11000Yu1OsV30mt10O00uB132yl2p3000G4100y0qxV5WYD0gzt
+30eE000000A00Zx0WY_00GzFOiZu6RW6otaU0000oi00G5S2r8E93Op0G0000080022W69d4
+00v2x6Op@wTLxx3W5F0wU@gD@VeJM3_0c10088W000cTF4000i4400Ef@arrnuuzAIss00W0
+80WW0_8t01W80NnR0200WjAU0080OAoLy1c100OARdF1220000G0MbF10400004082W0CfU2
+0014000W040108020001GW0000100leN2080100G8801W002GenB30200201000280004G03
+207@R0080A002001G000000W840WW00GWOW_@D04G0mb@6SMk10JG06_oWv3J08002000mU3
+C0002001W400000W40000Wsvj1lvR00080G000hIP00WGY@@PG0800GW111010GG04010401
+1040W00028G14000440IAs0G0007lQGpt60G400000GTE9all1nGP0000Sn0000000800018
+010000OSW64ul10080021G1W80QtV300C101G00040Ol@60G1010000e00000000150_plYt
+1IOrV300005VR20000080GKRl1001IG0GG0080OfU3AmFXqwD000Tov@60401OzV3Uct0010
+00012_XFXmxJ0000KnL6KCi1RdPmBWLiyl1L@RW8W800000L5P002010004I4W86ut00410Y
+0040W0H208820O000100001420W0014044K2Wd00_lb10G600054Qlt004160W0X04041Y40
+0204900608080W010000G820Gyf@4M_tW0ibW800mKo6aYl104400209ixk10G20021W0201
+W8aG0W00240GY000004G211010000opz9q@l100WmKA00KoF3000G0W00008W43046008202
+420W802Um080W400800050I40020008J000400000G0H800100Gw8lA0G00002W020000820
+0400W00004G00c00020400000800Y00000100TPa1G000MtnWxtV00GVnKuC80W0OJV30W00
+11000048000060080eX000W8000W0G0200Y410W0W02000X10082248EV3AP@4G000008000
+8000W02G8040000G002200801200W1000G0mYs9K4F300L0Uj@108040G0G8002000m000WW
+840000000GG00G000010142100Y810080W00W810000SY0584GgzLC1k10H0004441410000
+H2W4G84000O0Y80IC200f0a0O0aG011Ze4Hm02HC0H08u050I0010018W0210G8GAStWC5D8
+nb400I000U0GK0021P04I00o480MnY2C2a8cW8X4A44IAWC0KWGeW80p8WGHBM41DYG804o8
+0WGe02WGD0Y1Km0004mYuFChl10X000W000100004120000WW8241884Y00GW8e22W01G0aG
+A28W04HG4GWm02080H0A8G0W0008100400W00X000edV300SuF@V2840000G4000G1W002G5
+094004060EG4G0IG18068G0WBG90G8W00qGW002X205KK0Y0S8WGW00f0O4GH000001deEPI
+050000080060000080002G080e4W80100WIW00G0000e0000100200jc_30KJ0IkN200O0W4
+1W0aI00m0000A1805000G0G0488BNn0G200K0G0500008bWa0GYW00IXS@hW800mquLaxj10
+W00GG010G08WC1K400W01e0WBWd0088WmmV0d00mh@F00O00408218X040W60100G04G0400
+0G4eXm4100H010WGH0000028a0000A20000802bdlHg_64pV2006W7ct00G87W91Gsct04W4
+4zdQ02400WW107_B10Wfy7pPOjV3000K01O0W00001GG0X0010m10009G341409000000120
+0000018A00Cjf1H_YHgs60W418eS6_3t0020000014W0G00Gb40009W40o1kJ8psA02k0yjE
+3dmR0021420m00410G180010G0Ga00050G80000000X00Kinl14104000WW4AWf_QCISB10G
+B0v@d0540WaSD0GYGB0W084I00VmR00eD0000YQ060cWsWayP0000gZ00Wwub0zW0000qaEv
+D000GF00000Q2SW0000e80Sil10Wu00000u5Y100200J00WFrh0p00Gqr6001WI0l700020i
+28y1mR0008004O0KrS0W8Y02Vv100t34m3GHS5WUG402G00xfLK10000W@1000uyU2mC0000
+6yKV2FzR00WBV14G000Ks50mg3M140WLhEWoE00MT00kw0W8_00Hy140G1X0O7P10WcoC0GH
+40p0W005x0000mE@b@V000m400010Y40NpRGYR600C040O0e0008D1002300uC000301Wn06
+0L0CC00O8d1O0000101000404UgF1GP70v@d0000ZSmD00Y100C600G5e0GHWK4LWnC00IH0
+0WY000K100e280e8W1nC0310WA6008400WY000g08000mW0uW@G000_xV0000q500y400mGy
+20Kp5G2102r16u@FBg000KzL09mN1000SY100@@d00s70000O820abT082@0W7p01As1lAw3
+Ks20Y000s9B0in60goFaH4V82gwStD00Hy10um30ei7W@hIS000so4002FBjxoNgs@A6@FXw
+@DukV60840CvV50L30sV3lv58SyTCYK0ZXoC8IXG_CLeB_De@R36IrW2T3veW7E9@101009C
+cGp@6yBW1J0aG8z60W000W000002XpvD020W04G0WWvDOD03EuzXEnVW02200K0000014800
+lz9102W0V_Rmrh6W000W000mIgL0000sl00mHv60X00uwV38004G0020A80mR09000440080
+4204080060048001SMk1h2KHQR6000GulR30G000900u2B3I0dX4zJW000me_602W0uIV900
+8000OX@ZV30004K2k17yR006GYEzJ000W00m2000086020400S0040023WGJy6a5l1Xnp000
+010W00dzp00G0WJvD00100W60WK1VeR_4Q3uXp@P0Ov3mizF0140efU3s6mWE@J8ue480200
+00G0000I38mlTGxrEy@i5@7xn@lcyVhB@lQp@JdD9000XCjJenQIImzXYxb00GIpfrE10004
+100n_@I4bC3XYp00088G400fRw1On5Wtnj9JRLU5lbWzgeMP6I6mZnrF1418Gqw9iZj17iRm
+dyF4pU2a082MBjYU@J0007QYRRCIUE0021gxs0200040424000KUV2lfP00A8WZYD0080800
+0nhzCeoS3820001GGeGO3020800000G21mny6008WuPU32qtWSeD8kT36rt0001400K0se73
+8W00J@R004W4208004G00mWW2K08520000004014000G0H0XW00G10WW00200400A040GG8e
+W200100e0G044W101A08HG0W08W001010080002040000100000mdll1jmomHw6G00403000
+O0002G000G000400W000G140002W208i000018040Suk1Va@008C0000G8X0080K020M4004
+042040000W0284W2W008020400040a1e20WG12000010G0W100G004008G00010100100040
+0200Hhp6010000GKo@@60A004W01mPw900W1000m0020cVyD00001000G020500008080ySd
+101W0MxF104G0pddW0004008000WG00G0qll1G028ksFX7qI008000G1580G0000CW048018
+060160000GG1G0044040000WW0ebV30wL0aFV5Bda00G0Xi_D008000G90000G200iAtV30O
+000010I3r0H00082000W00TzV200H0UxqWpqDe5W4E5F18002W004RVs0000A002100001I0
+085V60W002G00GG00mny9S5k10802G0082X00G02000I0mD0Du@@A00022081G200Gou6000
+0SdU308000HW00Y00000089080DyR000801210000040410000H4000002820W8a400sHm02
+00008c8tA_X8pJ0a0W2084WrqJ8f2302800GA0e0G30WG4rbP54G0W404G0Io0gGz4080000
+00K4080004000G0W80W00W8Y00W01WXX80004W0400400GWG20080IWPGyw60H000400HT_6
+00F1ec36G10GiWT21@Rmry600G0WG0W4000000600W10004800W8eVxDG4G0000000YWGH76
+000Y000Gnsz60CI000000H4000G004080006120000XO200OGW@jJ0400eC0000000Wa0400
+0mQS008_V381000082eGb4W801a2l17WO020020W1W0008G0400O8101800382W7ph078C2X
+064im110e00G4041080GGY000O2019302G4W480GXHeG070H2bf0089W0Y04082800GWW1A0
+61A20K042G001We80W0WeOa08010252am2000Qp@@t0000Bm000W0W80O8Y084G000G4WWe8
+0W504X00G000G9040L2H048204O40m20WG41G020m210Gqdmh0W0W01G4GW0380LL0G200W0
+Ga0W000010G10WeW02Y000010901W020GG42m03888a0n8IYGH584024226e20WuW0CG0WCZ
+q0000W8Y0418A000000Y60QvF1000WO104e40001W00Y00u_@60402vrV3G8W8BY025WZ2e2
+r8G0A210224fH00C2l400m0NOFXzHCeKP3W0404YT28200G000eG00010000AH800WI82400
+000I92000W0GK090W20emR3S300y@l1I0200WI000101a0f0001G080GK0044000G90080Y4
+0eIA1I600000q103KHS2@@B1040WazD010eHc@60802uTV3cfFXhwJ0WO000800201000P20
+800G0o0ezV6010000OIDm@44600W0000G182m0G10GG82W00eW0W4tl1000e0W208C307140
+0X00Wz0C00GGGi_I000Y00a0000G0020G9cO00AG0000200GGozCXQwDWXG80000000K8010
+0G00W0H01240H3e10GO8GW0G00K050qjV20gB0Ip8XvCC0G02086Y1u000004001W0090000
+200A00000Y0000002GGKsl14081UL@XSyP00WG8002004a8G40H40008W0004W0nTJL00010
+9000W2042W0020010X000W108RV30WG0aSb1Q400IwF10WW02040a00G21G000408e00IA00
+2zzR0008H51108LI0004m000G0Ym8mcE6izV54000000G00f0000030020i20X0000G010qR
+U20200000Gqm43eF1000WlWGH00G0Gm2yF00GvAnV6000qA0500WDGC000WajD0G0000e500
+00W8W_00000w500eFU30780Kpj1LhB100@V0mDp0Q00022@Zw030_v7W@Q70whB0000s9pC0
+0W@mKY10000eV000W280WK50pOOCp5_GXj00200W800uV@100000g_d00W8iDC0MeK000000
+c90Cul100Uz10000mg3erz40Ax00Or1Kr00GL_68y0G4_00As97Hu3040mgg40GP7bS50800
+006000C040S1e0G0G910W00002ns00080m000W1W100038AW4080A2m0e2Gb10G530083000
+30006W20C0K0O0OK060000YY00GX@600Z100Y0em000X00021008800W8000L0H400LiJDC0
+00OC00mC020L0CCC0OG00eY08N@AO00G0Y0_7@a510O@t@@D000ak0G0V00000@V@100tZCo
+00000Wv100C300KTNGGWh000yeN@10ay20U40m@kFWgrD0gwVLtbPI2GDw600ugeWz4yF00G
+V8YN00Mj0WFJ1W8_0000mD00000004n7000000uA00bz00iwkxkPqKcg22C3WAP60yrwlHCr
+a4Rl1@8ZHwy90wH0O8t7o9FaDizeKV3MjFXHlCehxMog@1000Wa190_hFX9kHg8V60200Ku6
+F000000K95cUKJEPm8tUqyl140G0kkR30300@@R00mCmcqJuikJ6xEaMzD0YG8GhR6Cgj1G0
+02000G00218Rz400A0Sxt3BipG9x9000WoH00m0vCClk1vzRGzr9S9U20050_@E4000W0400
+120GaJe10W00000W0101PrV3EBqWOwC8sQ384000G00L000ohr600G00810GqS6a5l100wtZ
+NyXskD000W000088002ZWd010GWGlPW0000100Yy@h00W2000100W0WLpR0a00000010A008
+200000ae60300W00202kdT3040000098_U6_vEX@@D0eO0GVaF0W00erT3oUBXVxPOuU3cLt
+WmUgO@k40302000181S30500SHd1DjN1002001000400W000qDk1rvOmEw600001S00msyCS
+DE3WG00G004C6l10800K001qI06@@p0G40nh@D00i8GZzO0000400GmA16yjk1dvPGTX6yy@
+3008t3oVZbyP0048m6JLqNl400m010p0W0W100O82Y010GG00vaPm__C000YeVA30WG10GW0
+2W00000040018000148002GG0G080G6@60H00G0D2mmAR4gvC0098g_t00410W000W0W000C
+18u@72rpWlwD00q00Y004c148G00Wktp0480280000300yiV2JPPG@@ayXd100000I40CDJ8
+01H02wt0W008tv@GV090I80OW_4010Y0040W00100W0mZCI00800010000MY@kt2801eFuz0
+000404I400024X5Y4WYYW4W0040CGWeCiIe1jfQ00G0900YW09G0122W8040n80L80O00XA4
+1GG00gCmWE2D0SU0GZgO0800wvV60m00G4104902GYBU005PI48Yeg8AGG0W409W8m0eW88W
+3ukr701Y000414X828004G2Y404100HCW0YO010Y015WO408WC902W18200100800082000A
+g3001Funo@60004Pgs4M0rWFSt0WGg0W00mYRD0O0000K2W3Yy00A1001000010549180000
+03tN_V2008Xr@FX0Y01G0W00G0400000W8m0000Pgr7cnD10G9000W08200W0HW02000e000
+G100HrA1WZ7W@@T2010ZG0W0G400G4G00082GW50e5o700G2y@l1008G000000m2W000a220
+0580MWG1004800000g603_TAXa2W9q53_@V3920WGW08400K00H08623swr3000W0080a8W8
+0L0WO2P36Ru1005M@@ZnJW9y@l100I00810000888OF000me0840f90GYo600WY000WaL00W
+XOaeqN3_Os0000j4000G810020GQIt4I@D1GPF01ULnfngy@@300L0mF010HKH4e0ull1730
+008010u@@N200Wl0ul@1000mNGY100GCW2000000Yu@0y@y1W10ys00ebg00nRmIGF00GsOR
+4vI5@HvXa000S100m0G0W1eoWB0300WgsqYFSKR20030004020k0G0O0Av00miuO0206mvq9
+00eY94jDcfcXFaCu509_@@100W700400G40W38a00020y3000_P0@@d0ee20000gG5000000
+0Y080H00400uH0000U00o000000ctK0@@l0_@8O200a820_@F1mE10zGho@@5b1z6000WEoc
+XrbJmC00mRsBz@@3BQNnw1j001000GUxTSXSekAveVonw9iKE9G0000P20y@lMLf@JTu9eK0
+0OczAQINYnuF10100100WWvJ8cU3Q5331000Jq@0G00Xb7De__400uysQF300WW1000200c8
+1L30GWG0W01O_O300200008220Wm_pCyeIEpumGEx6i1E353Pm@@904q0upACovt00800000
+0@jt0W80861000002000800040140WqcCebV600088020OtYGM@F11002PKp000201W00010
+0EsF1000CE5006jL2G080040001W0220We2S3U1t084WW200040600000004WmW@6O000eLV
+9oUuXzA3PdU9A2q0000000_v_id1000E0000gzD10W00@mR0G042000000GI61rWTAKv0aM0
+40H0000GW02GfOC00000Go0mfvLysl1G000020WCpl1G014oQtW3xD8H5agEtWzPD0cG0X0G
+00Y0050002sgF100GSI6006TiY8@D020GGgz9Spl1B9QmabBjEk10000VkmWUMa00G8w0bX0
+W0002G0Gob6anl1L06IIep00H4fxV3w4oWv_P00S2GGFR0200ewh400GG80W204010024Wb2
+MQ5R3G5G0G4X000GG08a80535400W0QvF1000O86002KV300GW02320G000a0X1Y002eG280
+200Y040E6Q941000W8000102WfeY80Y0G86004400W6Ho@F100WMp4K1008G000W08G10004
+00W000Y000200XY80W8Ga004WyYl1nU4rc@60200A_@4wIzXK@h0aX000K00000a200WkoqW
+UVkglG30000A10O004emEGs8G2001000100W01ifeMI8000002W0G20W002WiOP000HQd@RW
+0400000280002040280080004vj1fbQGl7E90W08f030001yDy30w90Ml5308a0000002020
+0G0G2WG9002008004XG0cJtWNkGguy4000C00OG04GnQVLF000WZu00G9pU0008kFS3oMEXV
+KS20U000000y600K00OG40oGc04Hy410082p0@J0007IQqU000_70000WoE00300kEA0kM_d
+esh0600m3S6aAN20400c1A10000WmP0IMR308802W804200ECj1PbR000CW3wIOTQX0mtVF@
+V208w0G000G2ajF1u7S600qGV508WkrC00xV0W000bj000000m@20001WxkYV00u8@4cCaXS
+vq20GRygsXyls3B_RGQFd001089w4Q8MY@vE1eW1m4SICYk10008sFtWPh3feyDUbWXo_i10
+008M00WZ@SQNTFEJQ600Vs1qlHFS9CoE9Hcd0000fyvDewC3_UBX_wb020200G2WlxJ0W00G
+XSL02t18q_4W8000G80eUR30008000O00000044XhtDW002W0000Hm001ud0GG0WSyh00004
+21020002000O008W22G01080440020W80rUPm6xR000WOvS3Ann000A0000WH5000080OkV6
+00WWW0140000000H5002004K10W0OC6k144m808000G00uqR3_@t002G0LS@WW00A0040TTR
+GM_6W0W4G0010X00W@ID0G0000080040WbyRGQ@CCNS2xkR0e00000gtXtOmH690002000YW
+20001000O800010K0B08G0W00060G14020WOMs_FXK_J8BU9kPp04G000400130G4RW1dD6I
+wz6qAU2xYd0m81WJyJupJ3oYE1000We00000808000OsV3008W010000W00005WvvJu2x7UJ
+mW3zDeFP640W0200000W4GxtOKKm3vsd0000skWhOHV3oqt000200X40grtWN8CWW00mFYR0
+0Aa00WGqHbgKde19LY1800004SLv@N102400WC2@@RWKW4W9BCG000121880000080400001
+006A4TC00100200Ga00GuzCC6P8W010wij2mEC0jhN10400000C0Y0EH140W004040G80G08
+0840RjR00W0008W05xN10401000500X12ftWA@D0200Hny6SIi4JzdW000WGyPO7@40000vG
+00epV90G201GW8GW00HIM9qNI2002000009WW0W000SgnL081409aY8G0080Wb0topGjy6a1
+f4TuP00086002EfzN10Wt_5ch01qm408i84W0WG01I5854GK800ZWm0G0008320A20010W18
+00gH40JqWpL03W1G0480M0004040fyR00800120W20W0kQMYZpJOTt40800yRY1000000WG0
+0000yx1mj@I00KG0200eW00K4BWe410Y0241W400200W80g100WAW005W40DGy7d19@N14W0
+0A14800Wo_@F100GS000W0410Cwj400W42cCXrBCuNS3IOE100043uB100000A40G000eW80
+6@l103G008G0000GG00eGdW60000vVTC000H28480110000WmT6U0G00mQvFaJh4G000GW20
+afD300aGVgl200G04000gMt0A000W00YG001cmD3@POGG@I000840m0020Y8X000LXdmVw60
+800PuxD02084Qk100e1X00000A0O@@400o0y@l4000e0M08041040000A80000000H00G1KW
+0G200W00000W2G000B19Hap90008X001a00GYxVJuOS3W010Kgy60002Y5731300@@BXa040
+00Q00X100W4WO4W1G10b010000GW04001W82000001500mDtO0kA0W48l210000G08rkb000
+00WA2Gtyl121080001eK0010e40800etV600a26sG540010010CWi100840100G425000GGs
+C64B_600W810yw300044@@G_uCKbO2Y500ITx1z300H@x1GK6WL@hW8m3Wt@720mE08uVtzV
+00gw00E5U30C0t160000m7UGyO0WW000K100u2G0W0uE300@@t05100m000W0m000W8gw@70
+00A20000WX0Grx600C08uH3k5F1000Ko000_@N2o000m000W1e003030L06000CeK0C000W0
+G10302043aRmF@Leu04Xx00mAV6yBA358ZXw01000WgmC00_@@XD@C00L100Wjv@@b000mj0
+W6_q_D000110H40000008e0UZt0c96000000V0OA@0Uk8xJY6@7mO50Zc7LU96CGE9W000Ax
+d104G0riQGmUF8DG0eeV6Ue9Xbpv9RS9IRlYnmbOOI3Q@@100wDXXVrtTaSyk4RiOmx@F0kD
+X8AS9MqNYCSCuw_JW000G00G408GW00802000G400wvtWO@DW02H00G2WurD80Q3shF10100
+00040002MxF3000Gr4000004OvR300180010004Y0000020W0rKnW00401000GC441820000
+G00008000XkuD8D_400800400021250004J408GW400Ae02W03yAV30W008G00OEV3000G4e
+l1040Goa@XBuCukT600md@_e10040000WKRj100500004001B080120G1K0Y480A00010030
+GW08HW0G01483I8050G0GeW0K000WW02G010002WDZm000K0C2G0801G4590G0G000008008
+00009000000940002OcQ30200rvl400O027FX2yD08F0GFQ6W200000A040W000WWm000001
+0055W0002mj_6W040Ue53G0WH0200222010X00C60000000H4GSwF30G00W300G0K00444O8
+M6W3W08fV600G24uV2PFy0W40Wa6Cehl7MUoWjwJW000010GW6wD000G100W2W2aWpCO0i00
+2u01E4000015G02G000002015W1iDOtV300G008000380mlx6000DOLE3g@t000800400E4q
+WO@R10W@LU@IW0G8W00080000c1040040W2G0awF3z2@0804WyhD8JS3Iko00W0001006ct0
+0W8GX_RGI@d0204uz@74QY04zB60050AztW0nJ0085008800W824G000002008W100811m0W
+hDJm0H00K00G29K2002100080GY000002G00000X0W0000060CXkA9ud0000IS300H_B1908
+2I80Y0000008C080040021010840114W8W0K420084040G0Wm4008000I00001GG01a0Y081
+G40WBwJ040010004G0WOb9RW0G2WonDuvACQkV3007N37M118000821002000WG000010202
+0C00OG8W0I24012000820A0X40G000WC40800011GSxe100I0801801bKG00CWW1404p3n0W
+O600002GW00X010900H000NPFC30f6W3SV000W08O00YCG0204I100o03OW0W0509020Q0W0
+GXW0GW408W0eG8J820meG0KGKWf4Y088111GG408008G00I401WW4808m2eGW100YY0000G0
+014eY0000I800020Ga0GQxgq4V2000Gu9004@A3000010500K6m0C0GiAG0H250H080Y00WW
+0m00210JeOa1KXKA986421222Y4GO0K2G00Ha1QG8D24WQ8A4X0G52240C40300808GKmCe0
+04800Y00W40000200W00400bonQZ8Lt00WcHrFL000W20A0m@z6a0N2pxR0HW0000410G000
+0KA00m00W0e00820G20000G0X000005W00450m90W9KCecV3G00G8WG000482008a_a3fsM9
+g9pWQ@J8B73c5mWOgCO8p4eW00CjR2808580000B00WC0G0u00WUyD04Q04000G00W8G04H4
+G022P480000044000800g000UwLbR3Cu_V6C600y@l400GWG02I0W80400WmwS6000WOTT3W
+14810002O04mO@6W04001002014G00G4O200000082GW40b090800W8K200048208e0A2O@u
+MMty100und_B10H00Wa0002H20G0W000000G02200004H820000G24GIWGG009W49108G00G
+0e8130G00100040000602000000YX00200J00008510800044000482j20G00SduGUxt0W20
+Gl@@0mi5W@@be7Q3a000000qOxV6041000000401000061W000C1040000W40uL93Ibs0982
+000K0mFt0000u06@1mV_68e0qd_000W06W6nRfnv4KE00iwl4IF01G00u3Um100_f310000W
+80000410yx30G_7WixE009M8c80KnD0iR000Or302005eWZUz30YndPWG000A200e2G001W1
+XB020006400OC000L00040A00q6j78000W00001W1eNQ600Wr_3E3THbGEu60G0W0eoWnz46
+46U20WA05WA0A800K800GYu6G5010606280C000YC000@10pi30GX20008y17m@@D00x7000
+2000Wz1zR38P4W@@D008gu@@C0K03GZ@32jW7AL1Z@_700_gt02002002004Y8wV_@N00rf0
+W73108e20Vz10W82g@152V408sDWG7KveVLWE00qzR5DmZKNRjy@V22G0025F100pKfe@m@n
+6KjP2Bm@G@@FqIE995Cpx@F0OD0u9yhwud70GG0Lod0000S9300R8pGOx6yzl1400040004a
+v3fm@GlxL000G8mw4004G100000e0G5y9qNY1zmpG9_942j1PqdGL_600W724200202WCvD0
+W20000G0Q140@ePGzy680a0G00000G04e000001CW2004HM2HbdmOvC00014080e01H080eG
+4G01IgtWjvC0000020GWCfDe6E300040G01002G0049W3_D080004040100W02200a002400
+0Ct10000024082410020O0G4G0f000K0X0W008A00483m500G05800201GG0008200I0GW00
+4G0OEV30008010G89i4cmd130m00002W041KtY1000aWY00ifj1080001000G108n6300200
+408G080W0500008Gbvd0000mdwC0000hfXW0000G80G1010020O8000W1026O0W0100G2000
+e2G60048WS3h608C8000W04H0202G000Y0crbXzuV08000G022100G200440W0i4U57UdGct
+CG00000010042aImD00K00G04000qvlFR000H00000404180G4W020400300G00a008TWQ08
+01011000100W802z3E38W00_2pWKzV0W92GxzI4vY10020410000000G1400000804000W00
+850I01GuvV300a0CXX1@hd00n3040000W00G0W408W0440400202G080nJd0010Wazh0W00G
+OX6aId15q@m4jF020800000WO000o14N_@mkt6000004W00W00WPMa00049_W400084t9Q00
+600a0000220cst0W000lld0000800149rPm7@6001000OWW420WMsDuD@46fr0080G00G000
+40G42000G0W00IWBuPOPV600W0GW00SIR3o0L2G00000SoG004848000G00G0W00X0W0W880
+W1G018410a104820W010200I2wb1H4000010G00a16104000X000800100G2YwLl22000j_R
+0800YE3COHy4UztWtXJ8o_40018yX@3WaD0000000GW9sV3842H02008iU3007O0004i2z76
+QoWFxDW0Y000W000204Hx@0200482G0000800001W900002401050001Ga40G260CoV28G00
+00080400404e0W30GH010@FQ0W88200W43sd0000SSG0182O0GYK408G12mmmW2108H000WG
+0IC00204I10038Of96azV2000G000210204n4M0Hm020008W002100GWA00uwV3007820050
+04GozL6ark140G418I00100W8G02042000200090002100010Y10W00a10Y00G1041000001
+Gyw_42zq000EZW100G0m000G4414806W24CA890TKLW000Y0W742Y00e010000W80W000400
+28000001P6000WWe05000200Y026se0W44H1004I0HUd0GG010eaI0814KM2AH40G2800IbA
+6G1b00G000p00WHsCu@V30G80qdR8W3A210K0W0W0u_V300X00200ez83caqW8UnG100mpjL
+0080GH51028G404008a00000184000004WYW104821081000002021ORS9000WTnl1PlbGQl
+90D00200002008G200000000G0201900WGOA_64NE6zNO000W0000Oz_@W3o04008O800008
+04000OuhV3GG0GifU21_RmjY600000804Oit6W01008GW8040XNoI00020100000nf002000
+301O00000CGM@6yfl1400H8000_GE3dwR0G2G0G4W00002000GCxY1jOo0000806007GPm06
+6W280000GIo@6CLk1G040gWt00W009fPmYF600W00200880Y00m00040O0000WO8000000WC
+40080000040G40000A1H10wCr6e10A0WW890WWWwoP0800000WG008400G00WY0004X00040
+0HeWBYP00qV1010Ol000060202G0WM9000WI0Q30001O3r@p0041WUvDerxA_htW8sD0000l
+D120000G4100004248G20210800Yy4i71sRmVy6iGE3y70000000032000000yl_70CuoU3u
+F00000M50000tVF0hu@2UuX5nCp00Uu1W@@3kmN4SXl80gQHcnyYCZPg000W7E0W8Y4xD000
+nb@30080ml0W@xS3m1WT_m30Oe100D000WA2W1_100@ZxY1W0W7Gu@CGdd100ChlF000U70W
+y000mU0ggA0000oStw@6000EBoR3060Q2yp00ud10000004600mO00W802000G841GJn6000
+8021M0C0i0O0O0m0m048W18m220W5W10A010202DHp0O_200002000C080O0eceA7S3YXp00
+G5W00105400cqV2W000010003020606GMSC0G00OX23000000y3W8k3mb6F0W0Kr@00AK000
+00Ae@@pW0Uu10a0a42129421H842I8Y1aG84000WOn@p0000whaDm4H00eu600WlVy30@z70
+@3K0_pV0GF_15WWZDu@V30m300Wxk30gg600uV00000Ae0Cpx1GNz10oouVewFChl1FIpG6t
+F000CewRL00Om4QsORtRmoL6alz3ZY@GGsC00408QS30vJ0E6W4rU7oiwmSGg13ZJIU@I000
+0zX33Y@Lbutdvw_42i@X3yPOcT96st0020000QtALdaurR1800Gfw6040000W02004040G0l
+gRGhnCW0044000004W100W00000X000080W0200OltCCIl10K50000010048PC340m00400u
+mB300WWCNi1G05GATlYykDuqS9Ezt08400000880080G04SzC6Mkn00008riR02002000080
+20G0W000C00W000090G8080t@R0G00G00042410010W200020W20WG1800Q00180dMtWFvDO
+PU30080100Wf2i4g_V308a0RCQ0102000480Y0eUgF12G001iR000200G028400000CG1W00
+10WGHE6WG002W00mo16KpV200SVFntWOyD0G82CW4200200G08W080G090020G00820eNoD0
+003mMO9Sfl1xL7I9y6O002uqU9cyd1000m20000400900000W00G40aRqO0OLH00010m0W00
+40O0044Ehb1F_dGL@6i0I29VS2000510G00002Vh8awyP86O6csFXSBCm622Gl_60020Y0G0
+00000004Alwp04X0WCjC00100mG4W4@VuE@4ooFXvVCOu@4wEU3C00800G0ott00100dxRme
+z60220u_@40G8I000a0900830001000I8WW1040080C000410Ga100O008000G402080229I
+00300000Y00W8MzcX04IuHF600C10I00eT86I91ZA8DO4O3Act000H0rWamhx60eZ801008G
+410820GO020GK0000800HWGW828900000W8oG200W8200J40008000G042G400G00N8A9BYQ
+0H00Weim0W04GnW6SWP2Pcpm_w600400000fT1440A0W4060G00G010000908480WBuD04G0
+0000G86003wP00828080DTkNHc@C000OY080C2W00W080l_PmPzL0080Y01G2002O2008000
+W000W00H80G080401eFHC04001W002200000Ae0380GG84m8W0002W306m0422A0W84W001o
+G044e81004Wg092IWqC021000g270101000m4RFaGx39qyV2000100W00Y20WA0G058W00G0
+0PYQmj_IG00G00000080H0009000M140a4HV2440840f0auU2WCd18WoX08a14Z5n4X1X943
+5YG2bOWHe0G4E0We4204OYO230382020W02Pq9402oWg1d1WFwCu4m40001cxF300GmKI000
+8b0OgJ3IhmWLqseNs4EVWXFIJ89L3y20W8W080GA100G0H8eW800Q0001A0W0000004W0909
+000K200ULp0020aWG90syF4G00W0182G0041Wm000100004Wz8Cu@@7AXn000W2D0OmdX9a2
+G2v@d00WGPA01cG002G000e8348913O0008mo0004GW0G00X0010008EEt042m0PL7200G0a
+400002WK0208W30ez@DQMp080400008W0G2000WO1T3I1mWcwDOmC30hC406W24A00A8A010
+G310H808220W0282S030u000G00000408000o28GY0Im2800080000W00ZcdXeqV008I280O
+0G042e00G0800rvj1x@NHwS6iwk1LtPGA090000Q1h4000WHdWAG420045G8G205000XW082
+80Ya4W210400088240G44102000Y0000WW200e4QCe0F3wHDXXKV0z00000qcf4I8rF9w_t0
+0004JwRmi@6iT_3R@RmGl600mm0z00000qabzD000GeRG014q0S0020Gi80Ssl10WM00008Y
+0WY00ImWL20W8@z000i60O6U1000y7000Kkj2000W@@3GFDFy@l10VeILQmF0UFALfcX9cD3
+J1R6c2U6mDScPQuPOc7000F07WD_J08ALh00G000iwWGTt1Uy@3mC300G00GW80mVV0o8200
+Ax0xVaHWk0Wj02mV@7m360WxSZV04rn600000WO000Z10080A00084H40dwam@@F00024a3W
+186030E060CGC0OWG0m0XW01211m022W1W00005840S3k10008LXP0005100K160q4G1f3WY
+100530088000N000C040K1KJm0Kn23F100WR04000OO0Ccc47rd0g20OH3007B_GENL0Uu1o
+Cpul@1GLgEZ@208pO6GpGLWUm30zF0K500egg_3000W@@BW@100G9hi30Hu300A28P830Y20
+0m400540u7008I700Gu100000406WL700kC0@O10UvN00Ax4aqy3080aXC0000VF9XRC0I00
+yaT5X@BH@_O0Y21OXyeAWdXt@D0002mHb6a8E3Hn@mGv6aOD31xb0_000000G0008YecXevn
+OYYD2EkYNaOekU9oilYYxbOj33YKGh6YVuoR3E@hYwqPuxv70nR04uk15JdGAu6aSm9j_N1W
+01040804200gKr01000800000012001002G0GGGWYPC005102400814A4086gjs02000G004
+8200G0G40000009G00000000OLD08irl10144004800G410W0Gav9C1E39X@Gg@O040108WG
+m@u604000000A00HWFgDG5G04G840W02GhsR00850W2080000L0W5W1080W4202140220904
+5210X02m0000228WL40000JbsP001100W0gG84H8008KMV2NiRmVz9yk@90180102008X000
+00060000WA0W0000000230G0G0G8a02140000100W0031L2e20O1a08H15LW20e0WW21e0W0
+0G0A24A600i040800224p0GMC0Xjd0104GA01G000WgZE100O0tmdGGb6yPO8002000G0MZc
+10220_@t030GW000000D00G040002O6r6SIV2tXd000080W20010002G000G0040K4W0K800
+0Cu00a0000G0G0000X0X4021W094000YmTZe2F9KrAwntWdwD0100mVX6y@V2NzQGZ_6ygf1
+BxR000WwkDhutnV8W00200208000410eeWD0WW0000W8020WJ_R0O000400W060000002241
+0W008004mk@J00G0uhu6qal123S0QBt0000ahwR0020XdsCO5KFAoS30140t_d0100G8W00j
+BQmgn60200eXS300W4C8S2p@RW000Y4oI00HG0GW9100G4000WP904S7l10002100X82G2G4
+80mgdyqJl1thR0100XqmD00K8008608801Xyd0001800000GG60000G4040008qrY6qZU200
+G0gyt000QDG0018002Sci1doOpY_F0GW00121Gb_600100C300H00089206082842aCRY100
+024400W60021eG2W0140908000WeX8004000400005X500W8010G5WG0G4000yx90G8W00GG
+10W0H010YG0H2a0YCmO6v0000000309G2000q80H120W24118000800WWWG0W0K08m010W00
+4200G20500G00IA08G0WG00GW02008000Y1001000040001000G0040080g0W80000000eeD
+W2ahj1G0G1Ysq08000WW002wrWLAc1W410000001WK04000410008000A1GdtI0001000040
+00omSb0008500000H01200000G000mn2a48500080H420G900a8020800m01mIkv000q04X0
+080W000210002e4009C00vAw72vt0G020pyd0000YCvDegK3wzt00f48o200G0000K3L04W0
+008W00K4080020W688C008x1U0W8824000G004I068I0G0EY00A7cXLoD00X40000Yr@C00a
+0228400010FRo0407000G88W02004210007P601W000040GG2IWO020W0620400KzlLCGy9G
+400i800W004000G04010a000zi@000110822hyd0W08WyqV000G900004WWG89e4100000GE
+0G0A240080005G000102214G882NRkzZ10200tUR00WB0G00Xs100oUGYtsD8dvD00SG0000
+a8000GV5E00000K40oZt00070n0OGRpv00g20m5300143CRE000005O00gv0000041048008
+00_NLL1W00GG000WFGW12XG36aW4C429420G2G6ClT60iw000yXGy10Xu30H000e0kw0EFq0
+000Wg6V0LT0G8_0GCMQUKKa2Wg8506090k0C0O0OG00Cpozs004020K0C080O0m0W4W10X12
+0YOuIG0O0e0W0G10W0XVR000G0K100e2eY41G59I1000W3gYYK0O4f0m081W1G5XAWAIa0L4
+850Wmtau3xJ000XB80_NGCpCmLLLKL50000W0n510Wp3eXT30m@0000yN00eAL1wVU0q@00e
+gKb7LfApCJLcP6W0000L50FuR00_70000pegg0GLL1XP000SL4kWKLL1nCp07Uu1Uug20@32
+0_74L10WyZ_vaU6G0G04_DF0008W300i2NK00G8gfkYBjDebRFEapW4qP00WHv1tjan59040
+0cK7ZMgEPfz70PK0KeECrTJooTUKJ_6twRmMyC000WNn20GFyE1004y5J60080W000A2U30K
+00KiU200100420qjE60100001GKRl100gR10W000208Ir48W00X01OOoT6QstW1589K@40G0
+00G8000024a000W0004000G0002040OtT30Y00iQV2000018W8iLD3000000A01P410010m5
+y600p0OwV300E0qMg100001002800062042G00X0BUeaVIG200GG002e00000K000000W040
+40000I0010XGa2CG0W2e@V304104Jl13xd020L20101a0020000200WnE00H6q60A000G02O
+VN6e04O00000084Y5@JetULMZE100W800G000e0SdF3400000W1qvF3XSPGWzC000W8R13w@
+t000cA9@_0280WC6C0e40mOS6SobD00W800AW5eV20002800GiUj40820szF4GLh8Lw@m9@9
+y94CvvdGZi600W0uiE60H802W00OyU66BBXc@z0004h6100441000000104yv@3rmPJks6iV
+l1000210W0Y0000801Ksl6iId1tfq20WjzWkJ000WuJt9S0w3hUeI_w9yEc100010W80W0O0
+Obg4AEFXgGK10y3001000G0H3RAnW_6447CVHQ0020000102aO00W0HG40000X22Ib004180
+0821MvF1202000408400CAE3FjB1000OI518zPPme@F01G0O@eS08000G0G4H0000GGG000W
+49GY1GW08eGWGG000W05We5hOyoD00qF300GG40400G0G040Y04X0IpW18080LqQ30K00W00
+20W05G48000HG00G220G000f00PDp0008100W2H_Rmx@6005000800G00eDvV0yQ0mj@60W0
+ATPE3W020G1010Wa00bK00042G4I106f060G40BnO001GaRwD00eGa0OW00820NrPGo@6000
+8400GGVT64HT22000001YMst3o400k6D10GW8K0W0K400G608WW0G0000000160G40gkgb_@
+D0204Oc@60W012A130000aKSC8rJ6061000GG8yV32_C100883sPGa@9008WPGE3kup0A6XH
+Y90W0506X5G0032I8G0000G100G0u0050ilcA@@Q000040008000W00211Y000b00m9f6810
+08Gk400008001uozG0i904cF3G00201200G000000201G1G000z4nGjddSDX1z@R021010W0
+58600800cSnF3000OK0000m40eLV30005W000G2m00000qlxV00003o10aM@DW01000020q6
+10Y0q6GS0280WU1008W008cT_CODLRy00000tP20V100gR61Gm@00000Hy0yzl108e0mmN0y
+fC90029JacA00W800011G8O0WG00W10002100e800WA01000A8008N3601W000G687y4sdtW
+TeV0W@6mKx6001m00183mF8IWCGa4OW89WaHI0T0X0I2k30043090Jk23ur708_F4Y78WaT0
+00000Gr10g@18W2Wi10004Bx800000MPNF1m@4nAu1Nu1WfC32UX74pOE80yFu0uVgg20KLL
+_1C4aRH1P7oS@C00eRSBQRYi7ZYabeceSIsF10YF0JCnJBRaS2REnFcWE00Wcei9iTg_bl20
+0MdjeNH7kv4xE300Y0_gF1080A00A02vtWqeDe1@48000Mpi100010800201002W821W0000
+200G1000000Wc1010G0O0G40W104W41MSp00008W24GQbt002000000lesW0mDuQOF00WG0G
+80021Z0004YUzD00100WG0GW000b3OGG@6020W1G002W000100GJsPGWf9000H00W0000G10
+1800024000WG1C00200010G00WC00005_or0WG00004002C020GW028080a80800W00G82it
+WGaz01W040000YA000181dJo0000W00420400W1000W00m3_6008000G0100G00G000K82_@
+t0408004820q00180040303G0W1000000gs0410W0W30H14800W84K40@@RGAk6080000m00
+2000nG00d1RmK7X00002000qa@Cykj100Y0_38XjqD0GG1mCXLW000000GHBy6qbW10JT1YW
+t0000fnoR02020001A000e00WG0408iPG30WG00800Pf03Ubs30418GW800O20q8V5zwd000
+80G0000Y000W800080040G0W00040Y0Nbp000806008000Om300SLF380004000Cn@3000Wk
+ztWl7910WW800G40G00zc@0G000S2005NAHer90000G00880004000maaOWUeo0000008m9A
+qd1W100Y0W00C00800X403100214e048bSP0K00WW_IeMpGm000Shd1Fwn0400WWTn8613MD
+F1K0000G0301000O8000000eh1WyuJezV300W2008WXX0G000X200080002G000010000W04
+000800403lRmYeR4wX1js@0080aZ_b0002Otw68200G400W80G044002WYW0010008mW0200
+0404000OU0002kF10800xhR0W000044W0120000WG00WH022mX_CiRl741mHGK0Y000000W0
+ofwC08400400mbe90020200G41024H04000ag000HW00Z002mY00040484OW00m0W3000401
+03000_YN@JWG000U0W4C204Y10WX1F03Xf020210P0W020480880120Gqtl1000W4100CbB6
+00W0G4W8G04P0E000420Wj@JWe0W0G0GblLV00104080000WG0000G880001G460000O0Ha0
+4CGEG0H2C2GKK0000000Q3W9kO008200K200009000I10WC31YG0KW042HW840aW000W00m8
+00W1yHrG40W0G1b08Kq78000G12081O6W00G1250G90050W40400W00G0e00021000009oDj
+C0000Ij00m@@6G4C000AP20LG0P1WI0408K82AH9Y04W902b800097Y0H9000WG25bK200W0
+4ZGXMRtW20W0D4204e00jdA1W00WGyJ00001008WjxD87o4EQsWttV00Gq@uS98G00010110
+W500G048G940014G4Jq0H6H0W0800O008000eX80W020002OmNd6yqT5000XGHq400W0X000
+0024WIlV0008GC_9G040008000408Y0008000a00002a000H0002a0X00000020082qpk1WY
+00Q@t000YW000W5n08e0aG0G6G0a260n3080bGGK411X4400HG00W2K400HG2MW00O10200G
+080GH3@L0048uC73000Y8200ulg7wOBXMhDG000W800mdwDG40000008G00G084000C00n00
+042000001000aM500wBF10G00G5K0W08208Ie00b004L0G08W000YW0800001Ju9T3424200
+40000GI4@OWs0W00CsmzzC0088SsK3AYd100G10002YXB10K1100W40340Khf1Pgp00Wvdq@
+D0000E0000010zkX0Gm_Bqx6m10xl8404O0C22G0W_80GCax5w3W010kN02Wiuy000Wf00zR
+1KrT0000uzt0Cql100y0ei_0ir@3mJ9Um3omx1yqYMOU6jm3FA3W@IMBw40ei30000O00100
+uVKG100iw0W8000yA0uN_788138126K2G2eW4KG90900WG90o0I0a131006qWWFKnV508C00
+Wp000C04000QEw943d1R@p0000G0K020e0C0O1O0qHn0W120G71054400WA0004020C0G0O0
+e000G1000000u_vF10uD0003mT00WxW03m1160l1C0_1_0m0y3e3u78ImFGa3SW87GJHAWE0
+N09pYp3800mUE000000008A@_V3000nB0G@l1UCyt@0000Sdt1000000_30KWAW@D0500G3z
+6_00000AR1WF000C9YKG21a022A811K84I8cP600mC0yF00uVGOEpW0Fy11W@n40@30@1Wgi
+uKfTSFQZZX1rPOTV60H10CNcJj@pGMjmKzT5000WvB00ysz995CpjUj4ca1@_B10WywXt6BP
+_V0d404fWJriRG7A6C@j1Njd0G04W5tV000GGpZ9CLf1@j@mAK6m200Ozz40002q@k140001
+000804G0W00GH_9ik_940042cn00802WG00IR73080000G00W0e0000W28001000200A4805
+80200044uvU600C7I100W080W00000W02G14400080008e8E3oxbXxxDuWd4_@7300G1taP0
+00001G00G080MhF10G2WDp@0I000A01000040021Cml10G00AodXM_D08a10008040018000
+800GW000010000O000Y000014W0W000e0OlU6Qod40G00nmdmW@Xe000O6Y4882i8W00O023
+IjE1000CgP00_@F128044000swtWrvDuk@4EfpWy65ge3H7E8y27_VmY@@6c700013xPmrgd
+Kch79ZRGM0d450At_dmNxX45090008_wtWK1MQGb@@k6foyDeWU6sF6380005VNnLoF000Wo
+L00GM0dq6_9E740068000105BY72C400WevoA14y02O6G4Y4YU0I1j4552AG94ymJY2u4d00
+000m0I58AW000010Y80u@H000W0002100aeuD0008WKVG00yd002K100e745m9E0000O00aA
+WJE00o430Gs@l13uoGi@Ca_l18B6061WXMkn00003h1Wii0E9LWJcHw@Oe_@5h@R1x@Lq_@T
+nw000GnF000C02Gh@5jsqL00qu10y1WP00ecIEJAenmtVOpV3000mqXV2VeEJOgjafB9W004
+QTL200tD1mwnrgdqkF6Jk2JV@L0wr1OmrMQsdasLp100Hmk@CCfj10008TB00KvgJ4000W04
+0Kgl1dw@0400WgzD000G0000G0010JJd004G0480W@zR0G100045800LH_@t000KFPfR00G0
+00020020WAoq0000G00108000q1l1G004Qrt04004lhx100048W000014W0000240G00000G
+8000W20010wMsW@@JW0080004WjpD020f00000000A012000G000C0e_V3W02004000S_Y04
+00WivD02800LG0000203nc0G40WgqP0000uRz6Kdt60WG18G0GW02K0000K6@6G00000A001
+000WK00ltd02000020W0100080000080WAG008000I0m010008m0C9g1820180000000X54G
+000008GG1000YG0GKG8000m00Ga2600200000KYx6800000800040WApDe4vJYFtWpkh0080
+GJ@6izG25tQGgp600S000O1m7s6000gk43900W0qyl1zCymcnpani7hdR0200Y7pDW010200
+0H4020ppR00m04c008I4000Vw000G49ZU30200a001J4iKmuUq8i108G0G0010X000W0HGT@
+68040m800W00GWqzD00Hu920800000W0800110X008uzzDgSMB001G0WG004000420084004
+C100004xod00o7mMvP0W000014WNfD3G000400I001000248G0Y04100a200008000400001
+400202000O000000KZ00000000G040W0001G0Gxri104800W00M0100200AWb8WG4H8001W0
+82811W02401000E0G520uA000Gm7008200002020WG00qsl1XKO6K040m000G400D008feI0
+202H4W4Y20G0Y8X04eG48X04cH50H502E00000W1e010012X80420288m0H061004W8_KmiU
+IPer130012020G4G0198940004e041000YA100WJM00GPgF000KAwSpshd100400040040X1
+W080108200004414C000S010000cwSU30004X800eVU30810aK0R0G0400000G0840aC2483
+00G202mO0004080mm00410O000WbE01td000W01008pzxH4_FSrKBT_B11G000010850Hkqs
+020000GH0000W04I0010Wo9y60000Zs00G8_90W0010W0mj_aynk1tSl400110000W32000u
+Y4NV2A0000_E0008tj896000090001Gh0my_fX00mdy00W@X8U100r0GTA@Nt000000WIs10
+o100u20e0008A7W@@t300W1000306060C000O000WcoW0Oa51m082W1GQ23WqKaWnF000000
+1x28G00HWrpOW0G00108Wb5xHlj6SqK2TWn300800K004vV@nF0G8_000200Wb2O6p4abiK9
+cn6yE0600GG0Gi000000AG09W40PG90I9I0aI0Yx00001G02060svAgux31200GzyFKsM20E
+M0ArmWOwF9qCIU4M28020Biv100G004000001QvFXCjI00005h00WDryu2EC08004@s93dPm
+E@U0050000000G0m4@b000WueHKLB39ph42000eGnD0eS0GMZX4p731xbmCq6yqh4000Gpxb
+10W400240c1iYQfD0020m7S6ajW1FeR0a0040000020408020000s5W0n5060G0140200000
+Ge0040000000I0200OzC36It0200001G088G00GO000080000e9OCO9G9W10100400WaWW01
+00W080000042000G800G020000G040804000W04W000W814A00020028644880040G0020Wm
+0H200W82024W0kRt0001sG010Yns02W0200040G0e020G08028G10000500000008024G148
+000400412Y0tQR00W00G000rfbGow9000G0G0G204004000GW0X000O08W0200G10004010W
+z8O09W08000008240000I00900030W1K4GW4W000WETs04W40000H0W00018041000WVZ020
+02W002004GW00800400Ac20GG00000WG1400804edT308H00000000I00W0400A40000020W
+0480ONn4IMC1000WvFR0001YrctuBS30020CJc10010cYp0000460H000WX_VF30780RSq00
+404HnR000200088nCO01000000W020W00W0G02008W2e200WDlCe8V364VZLfhuYnA0G00HG
+08G024GzV9y@F300ygIbC41810Wm000001000042H0000mmL4J0840GGY60011eO@7ADCXgz
+DOU03EjaXUBD000WmlH684030a000032m@@DG410mu@98ef0emT600020002v@@4Y2q001X0
+0000G0W40W000120GDR60400401Gmgt6imT2TSd04W00000WLTQGs@60002u8_78000CBQ21
+GQ00G040O00GW00xbF1000H000uvE00i8_30100AyC1Y000G020008G0J080019WW220o000
+0mG00002044GgoK6YCD10025bQa0808W7IJ0040W400WuGhOuU60W0GC2c10G40sRn0000pP
+fQm9k6020YOrM3Y6r000100G0C002020800H0008a100010W00GYpF10005080YUiqWIfI0G
+1000m041000pfR00W0G0020GG00m0G2000Oeoq7wyp00024GW0840880K0O100K44100H400
+nWP0Y0000P80Hid000200010080G_yF143504W415ge5X0KPX0gm2M1f02010004000W00m0
+2GC0011G4G0W0404G040W00G000W00001200240000010Y020410200W000000010Y000020
+ipE3m00048000006400C82O04WC0m4G42W80582080H0G41000000H7pRWm12WOOJ0012044
+00G4000800oer05000G442004e208G1002W1X1Pg080OKL400811GG0GW8000G01G4G00008
+E5E10400G000owqW7xD08A00mG0100aIHq_000040048I0A400G41000040e40J00I1X2Ke4
+0IwnW1xD00GMT4_I00b0500e040I1409XV2Q08X08AHG000000aI0284W20A18G100202GXq
+kn2264@L22800G01YakF3BqP022WG040080000500162W0C002400001000m00MsF1WPA0fz
+R008amEVJ01H00Y00040We4100001000X41WOG00HW800818G624000W0PYW000IWS6idx3h
+bQGPK60005W0002Y01K20D83kcmikF01200000W440201004oC00M088400020C8b00WFXD0
+000AJ00W_@DWC00W0e0e@@D0800d000aXUPG0GO06Y1010K00G6000001W8200K00u00WhSb
+G001HieFiLj120002fW100000410000082000080200W2nH2000H000e0X0W0210WGzf6000
+000WGzKnC880208000000flICe2R3820W00490401404H008220000W49a81X08qtA0004_e
+i1d5a000009mB00024PI00y@F3W10G00f0080002000000E10000V565000WW60u@@70Tu0a
+KC3nmPWL8M0020G5BO0G000m50200mLGb0020mD1G00A0004010r400GGk90aRC64lU0_@d1
+d0000804yj@000ggw@@70m_5100000X500g800iq2gggbPfbAHLre5B0000M4WmmDWw00000
+000300@@B100mIfHL0IZbf10BJ30Bd60Mc60iCDi000OPwP_@tW4lhG8000110Wx1DW80000
+0H400WP000C000C1C00ucy400H000c00000C0G000e2GO20Wq600GK08WY0K0C0j080ge1Kd
+000UmtbJ00020L00000S1XlP0000100040400Ybp00S000030006W30k0K0O0i200G1000fo
+n0008WSqD000hUoa6000W700008tD0w3T0@@x1r100003000ug50YuB0000W0000h6W@@J0a
+X0m9bF00m0W_00m@@6moq000MoCc1GQi4GQc60Bb60QfKMiKQiCD0OcP00W700024G84AeW4
+aWXG8190Ws2h8RHUYkE1q100@@h5000H00G0DKPG8u6010WOCR6Up6Z4lP00WxqQb6axj7pq
+RmMu9yKVB0W00Zj@70R40@@tb800WitP0010Gux6Ce73jgx1000487007kRGtwRy6V2rjRG_
+wU040400200G0400H0KhPR000HG080I08008000bGl100020W00G110enm4GG05aqg1000O0
+000LNl17KP00WSlbvDG0W0801008000000100X0G005040880G502W8GG002W80801000222
+40000W2W0HNP0010G0022LiB1KW210W0IG4K00008_Hl100G0_Am0W00WVnR00048W20000G
+G0AWA0020jwU3008mqOl17qO08G0WemD0a7Z004010W00G8G4WG0n05KG0mW000G403020G5
+0G0W8W0GHm00m484180W2804G450001G1H150G40000284004001@wo02A00tsR090YG4301
+4WO211040OX0e9T3GC0aA40040021000W5MD010I40OG0W08m0100W0X4002G100000WYeqs
+O010G02101000eKc00WX00G0482HGG020004800W00A0005Y08015041C00PW6408U2G4W20
+204eG81000a8001100H0800m0G20G02000400Xq_DG000mqO6G00000W0KDR6ywF3800W_xt
+00008Bvd0500001000006Ypt00008000G0YG0a@V200MRExF12000OLG010e200041100804
+400240e0W08000042000W040G0220000H0Down00G00008042000002uXL3wIp0080G0GW08
+000at43G100xvNYzwDeR_4szd102029xd0OL400000W0204040W20Y00H000009180W0001w
+ms040G00120sls080Ga0020W0880004014100YKG0000W80080W00I00eru7sPd18G0WfxR0
+C80Wqxh000080G0G00Y008G00400LTl10200010W000Ysv00mGz6G0808us4W00020000G10
+OzR608080WW06400iRlD002o02W0000S8zlR0010000W15voGc_641w35WRW0XWiJoCOUL90
+110CWO2000100G0W004000000WSlUMPW8GW0004G00080W101220862000G8IGX6O0401100
+208OG2G0G010G004WWW0000082024aOIVW0G00K00mNlP000294000W803jmdmq@6CLy3020
+20000jUl1Zjb000000QA0T6p00W808IW000040W022I2000IW204402WG20H00000G20080a
+0000G00G820b_d008080300FQc000100009G0W00008sVV282qG820CX051W8K0000Ge1bP8
+iV300801016008000W18020001000H4W8G10040000006200041000002G8H910Z80YGG88I
+00YG0HGOD2XG601haA1Y8A04F0ee88W10GC30K1ID0001e01S5XG28GWeI000008YC12800G
+0100WljR0180HC10082G00002z@V2GW20080010004Ia85000000A0dzdmyT6W01008m00e8
+00800025G0W841Sjk1048000Sk2000000H200108000W0K410WY8AX41W8200249m880204C
+08n00K50YW3G121W24m80cXHGX2X0W408cG308800782O0009010M0sHF30G15_@@1W62G0I
+900400Cdk1hIQ0000800G00Y00040G211024A0000004e00nFp05000GB100GM104GAX041W
+80040000G2W802W00114J9W000GG400000C00W005U8t000012000e40088I08aF300G01G0
+08s360WO1yTL2@@R004e004018008000WiIk1XMQ00800002102020W2W4Ih1ToPGl_6iNk1
+000W950000G00140430000G00002H0G44G10L4W0GmgP98G00S923020000b0100G0000C19
+2G800W460WW02WOfk4000000O210Y0mjt64zT2W0020880a0830O00YDd1102240000GG4KB
+j1ZWp00WuL20080c0G000800080G0000041000W0HaW08010HG0G480e8084G10424000000
+G000H0W010G0G0H000000CYWe10102m02u@@9000YyMuAK9000G400500GCnI8100eD03000
+0W880u0Q3ULd1GG200400G800010000024L2042We0006Y08G20IX44000a0000080X@@R00
+420GI0WWY0G4W08W80000001X007000180001K20y@l10Wm20008axM2N9R0w104GGg90200
+0040SDk10G4W000008H000W00001800J1800Ib001aMW1TaRGgS60000KMqB0010Gc0000G3
+00I000E00008A2uA0000uAbBcW0W004a00HLcGx060108a9m11000TY840Z1@000uV@1000m
+@x_@t000W@200t50SupD000GPpE00000bT0O200Yid1000csD000000000G5g000_10We@J0
+0WJ3M28DM2000GwqO900mIfPH0iCD0IB210pT0WdX1G00Wbf1W008010GG10WW200150028D
+B500pmYf1W5J30pO60Bb6004473nmPmIB60KP0u@V30GP000d10041C000G0H5000005400y
+RT2O2OYW1m410G79tR3000g000G0WX82010WBKD081DI2S60K0W0m4XHku641k1002050606
+Ek100W0400103020602040C0G0O000m000058G0mGW0m5W1020N00nmP00gE0W_V0lzR0g00
+W@@DGr10Fz10WsvDWg00GHA9avl401a0egu00000Isu200008P70y0000Z481Qf5008D0000
+iafN2IZ5Bb6Uu9DcP60iCD0i4lWzC0UMc6McEjqzCWb44WW4C890fW2XGXYxaXWtD0G00GT@
+6m080u@@44000_Q_3Bycmj@O000VFcF6MzFaj0s8dV9M8tWShP8mV3g0a10080tj@0800mOp
+V08a0Guu60040O2t4_@tW3JDu@@7We00agD300W06brWdiPeRu7sGEXzaDegR9YmkYd@J000
+0fp10W1rLvTz4UhNYdmbetxDMlFX3BDeKyD00W000OUlVQ3000846W4bnBH979y@V2400GIb
+X100000A0402G0Y001W00010010080W48002gt08800G000E1BXMgDW020mzm90002000KGS
+@60500fmU30Ro0KQE34W00X82000100W020I0000W0g400W8G1IW0104800000G1g0G8mGG0
+0IXW010140AWGzy6W000WY00mYv90W00000A200W802GmGW0412WG04006We00000L000001
+G80001A40000X0g01100X0W08m001400880vbT3820O02000e0W0G00020Y0000m1EG8G140
+02000K0b14X200H04WiK8Y60La0200LKX8e60X4X4H14W42K4LX0g8W9050Z204LsQ01q00G
+0W0q9218002800WW40010000I00204e0K0GW0W8040800094000050W4C00W10G00uIP300W
+0001000010A0W000114W4280501800080000040100Y6W4G000020b00G041820000C_0W01
+2Ts00I000W08WO5198Xc283Y104008W0YW2400Ce30GIW041W0AG0084m0GAO010032W024E
+00040W2a0000W0100E0yvk1zSRGCL6G2W0082X0I00O000002410000031000002G00WpsD0
+eW080W0WLxD0002Gdp6ytl1vDPm@@60o8W0018000800018G0H21W00002X00000G001WC1X
+0K46eG41W188I0aG2f0010mYm816000101800500800O1014202O00W0004ad10010ASr002
+W1000BhltWrWC0002GP_60001u0x4w6FXvcD00e004H00801YXyd00100000G9xR00WWWqzD
+00081148021G00W0140080m090G000000G00X89_R00040I418G40044284nV500GY0001W0
+020W004080W4cCeuD30004A2018o530800WG100208W020924G28020_vEX7@Dez@40G4Bsv
+k1xyR04001000G00014408100W018WY01210G40010G0000A0000DWG0284008020G00gyt0
+G61008080848G0000W000G00aIsDevV3kMr04008e080404mW2020W0O1WJ0120008300020
+2X888008000W000W42hhP0400000a00qI06xt0G000WPVG4040W023W0080m004u01080209
+280auT2W01A10D40200H0000201040800X000042011140K80CC0Wt9DOUz4wYt00010vHQW
+00000220W0000W041W0WeIR30W0Wyql18080G1W000810G00010040120npa0082mz2C0000
+aN100GW100180018106010400KQz60000fFT3IEnWkwDG02000G100G41plRmm_6a1l10004
+000W00402215A00W00K810X4000000W22n020004042A288a0KXAG00G48GG000K020X802m
+200H201G6004054000WKC10YOD0082Y011804400Gpy600eD54013I9GKa6C029GOG46400a
+542YYY0180a44W0W10Cm0e01W424404Y000W8G4KX4i0284H85X0058300W01M0Z01Y0X080
+04CcW0I00KW00Y08400W000Y824400YHW06G20000G00K0X4W00H0G1m0G001a50Z11Y2019
+1042GA4W8b4148401C22WW440200I00000848000G0CI00AG20G0024000Gp2oa46W0a9480
+01G0504W2W2GG0CY40W05O5WI13G5aK32XG0b08CH882H0WG40m8CG820e2Y08W05Ge0040G
+4200X014Wv@P008205K20I1O80G920000210K20X850008A1920100e4WG2G000G009W4A1W
+0aI801Y420014810W004b210G150K202Igt0020000050000QN0Yuy@40W2000GWK0004001
+00040K0007qt000102280000G205K000240IG900002eG0e4e482a0WIA184H0GPg4800041
+000H1X0W12002414G00K8G90001100241088208W0A8W00002MSm00e008100G010n800004
+40004YOzD00WG000204100fyd000tpD_D8NC3000008001440W10G4Y0000G300W240008HO
+000208808290000uGC0WG20W80GA40Y0I08eaWC2G04680D0011005CG10G0W010W00140eu
+05W0000i0Y8wDG400200Q0G0808802K10Gm2i010Y40GW000088@6c0800WNGDeG53gsE1GK
+C004W0080G00001H00oz@60G1C401A0G2e080W0G000480G00WWK0XW0G001O020GG200H00
+0A0144WL00000G0aXY0e04W52g1nG00000WG00G0q0W4001044004020500000G10240049X
+48IG000a8240GO04028261Y00G0GX0041m800H0000WgWK00G00000G04OVS3IMA1K300W8W
+X81800W0840WWW0AW0100bWG049WW0804000021K082bGK881Ia844nO8612XK201209ea80
+40Y29GGWm200W0000B0050W008040W800Wo00000sGgv6G00uJ2002kVXUG00W0s40000002
+G000q20000G4GF0000KPIG0ayl1WB1002mh0e000G0iICSF00myA0A60004300000cGOhD6S
+sl100E00400I4231081W60000200G010G@01004V1zNG840y5820X0e00W80qJWW00WcG000
+zr4uJODP3Wev1m560mV@J00l700eAWgE00Iqt0y70m0mV0TFcH20WoEf@44WAg300uFwQ60@
+Wu5LM2ebsqoBpWSmD0ppm2BjabyoI0p0Ofq00UFmibIZbffABJ30m3t2gwl5X7UBggg0GLL1
+W@g2ymN4uXd8L3100OC00G4010N084C0bG00An000X100i600W1W0WAWB26WA600C000GP00
+05100S1O0e2W1X10320WR609WR00C300W0W2J40t7t0000GwC00006000C0CyD60000a2W1W
+0m0IWp000G00004I1m006020T000S10eW32K1S5e2u2S5m5uEW9mT0W0Z00A001W8y30Uy30
+000Yu10GhB0C@K004i00280myk07U_100i3G0100G40cpE0CnE0cPNW00C00000IL10ai300
+P60eKD00TFW0000hE6k400mdXM0iKQ0OfqerIf100IZbf10Lh20Bd60QfLCS6WbfJ3uV00ym
+30MED0uPO0acbi4373XXd02b0ammV8Kx7citWYiV89E606004VE60u30EH7ZClb0400GntC8
+040OQV96qnWe@DuX53000024004022Onv600810002002008W00XXBHDo6isF3000WY3bXcq
+D084WmG0Cqdh1zZdmA890W00ef830020K_f1Bu_GJL9y@l1O0G00024yt63tQBniK9StF300
+WEsRNbytV8_TCAYF1G000dwR00X00020WVfc0000200W0JfRGywLSf_3WI00gfx100O0ljRG
+XW6SeS2FvR000OW6sD0008m506iok12W00wWFXh@D0008ri_C04W1uT332_tW0pC00000200
+41W001FPG2C6yCg10100100W0G044000ey00WThC000200W0btgD0000840O00G0000001A2
+W0200120200005WA000H1G00A800401210040000332lWQm7z900801240008G4200X00100
+0XW0G010W1I00000X8240414XeA00G4100u008G0WA2C0208Y1002008W0G100G020080f0R
+38W280000000u90G014002000Ye032GWWOX21miWGW9CgG0620W0e4aWP6G0E218281K1E2W
+41518W8A1018H0eC08404WG4A0W0080G4yqi10G010G000022OBT34060GOK001000a00000
+08829W000A020000W0uQs608W0OWT304250WW808W0G7Q6O0400A02020200G00OYG0G0000
+sR1W02W008008016A80C04ZCO046410m4EO0080810232084L060104O812002C4C200a000
+4C921G101410A0000CWnBO0W30W4_D00G0ox@6SyV2048Wkzt000H001928W8O00W8000GnR
+l6a9a10C00000W0802eht4000G8W00000010004G300pqR04800000Z00008C00G30000CA0
+00A00WA341e0042118Gm0G10A0882Q8GGG002400X0G02440W00G2G10000004k8n080G000
+1180W0W8000009mmR6i7V200028080Kwb1Hxd0008860W80W00_p0300mYZ1OW0408000004
+8O0044W000G880mN@CWG08W0100000101010G04GO414Ik100400240Su@3bzR0W00Xs2D8V
+C3404042b13zd001080304c008_@F10H40BVMXWl1Wb@D0000KA7C00002H200G02XqxD00W
+0HQY6802Wew23IXt0001WW00G00a0SYd1000OcOt0G0W00G00000210W08S53_EpWW@D000G
+000G010a1G000G3000GWC00400490Wmph0000dd00W8@V0C000000280G40020G48G2m8001
+0G4002320040800EMs00420G02H045GW028GG000000Xo7C0020a00000X2H82W8000o0080
+001200030001001202Pt0080GnmdGrr9ai96000000mHtBk4020o0040100W12O00020H000
+W0080W00G00aW00201000mGECuYL6sRt08020000200830AKX2W1e0eG4H0618m2G2W50080
+0024008000H0A0048000000002WGC803P0004053K820g0T3GN31NzR040W0080K00G000W4
+00G901e01M4X0400H8W82088110WO1000W1848X818G00aG004WW0000010090KG04982404
+0000804G00430m9G10810G140800W802112005Y00000W04340820SQl18401G00Z20W8010
+W0H34040300G160u0G8200eLM9000WgM00G02000800W0A00W0G820WW401021YC8012823e
+e22K11C4X02551Ge26X2619e0G1G1W550H4820GY4828Y40JWG4800080a4UX1000W00W002
+0K200aWO100A10aK0G21YI00000180f4YW00I1W2XXd011000141W0000W2WSej1dtR0W01W
+o_P00WXvC@Fa8l10AH0XWI0X00008G2Gi@9800I0G010C1mC0e4000X4510A1G4W440g4b00
+3829YK200003H00bK00G2Kux6000800A0WI0G040000G00G0100G50vmV38204G1G810GG02
+028b1000805W000aIY1baRGkt900000OX3mz@6qIk1jsP020G14G088W00FztWzuD000Z90G
+a040W0o200G00A08805040XW49C0G010G838Y140002WWW202W0060Y000Wm42000044WGCY
+01008402G0600wqF1G810XHP0000804CX0810TW1i00A08lz40008KlV2000OeF00cuD3Z_R
+0200000W1W040W08X00102012108080W324KW1aGWWA110G022ZCi840J0F006C4082A0132
+54401eH0M010I0481G100A008tD30200000240GGmv@6C6k148001GY0WI44XW8X08000920
+0ZtQGQpO000W8i@405000001G1K08G2a0aW8I80W08G000G800mG004WX804JHW4481H0W02
+Ym0250008H211Ga02001W0G218210eG82000088GY001WmA100000G0040ej4400eUXI0000
+Wp4W00m000G0004B10000J07000005fuR30004B10000l030000W20Gvt@0GU5Wj_D0008ny
+p9G4u200G0iL00WivC000W10G00m10000TH840Y80001G0Gl8082a_2z2GW0m_B210H200n0
+40el0402vU1000Wx1u7000uW3l8000000HuE006t@100Or20050G1Y00WLd200GZq60Yu3ut
+OCiC00ipl1K008uVQ04Tz3I3yFO9BJ30Mc60fXNqr9WbfV0Uu10Mc60mJm0I0o152X2A1854
+100Gtz6auc1S3G0e8WX130330WT200e400WY000C0C0I2u2G08Z00W82004400WA000L0201
+1KGO02H00Cc1008200W00000W1eiV6004t59k1G000W0W002018Cy400080G0m8CS30O000W
+2000O000u2O2m5mAG6mTGaWQW85m1HE0DZS0_1_0y6y3W1u70ImF000Wl04NS10Fs0Z9s1Ks
+@3ei30tz70_pE0mXF00LLWQjd100WgK700zF0WYT0020G4l0mFWEkn0iGzHX@6mV008CS300
+00mop0Wbf10BJ3JMc6BcEDcnC00000i4j0Ofq0GLLHB0_dbfnCLL90ggIGCNbW0uV1fgge2W
+@1Uu0Wgg2QrRLgWh21002TwQmNrC000WM500mmrLihT2bZvHfuL000100G2IJkC000G8pS6M
+EF1H208Z@Rm4i6a0c1tL@000Zmmpn84T3wub104G0n_RGl@68001OGE6YyEawqzORk400104
+sl1DRd08l1W9vh8cy7gPNbwxDO5F3YK0ZAsJ0023mLy902000188GiVI0000XP00mFvL4173
+Rld0108WQpJ0020OdMCScV2204400W801400W180G00asnVW8100600mM@COyK300W4000G0
+20W2100WKxCeV@700qfMZl1vtdG2_C0W0GCRz4000W0G4G121W24005a000200400A0qbi1X
+id04001000K00W00800058402020101022O02080Q9q0A08GXsR0940020000510020800H0
+028W0020KeG02A0001004W000W00004200882040000Ba000GG020000GG080WWG210eW841
+8L8Y2Wea20f4eW8B6I6500A2HuG9X02010G000Y0C4041080000Ge0820mU@I00G12240Z02
+80W48280800A00W804eHV3000400HH00301009cnxJ00408E000140060200W0000I08cY4G
+00203020000dC10808W000108802000440080C04042000GG0000A0H2O082W0200A200002
+u0m028e8i0G0i00020082IK2000YKW10400xkRmJ760020108000G10200000018000iWb1V
+FQ00000a0A1f@R008G0400G4Y240H100000OGR66ztWBzJ8K030060808G06C0X0O0GS089m
+0Y840002H4W2Y84mNq60W0W9pV3Eq738000zwRmQb601020204mA7jKRs3W610_@t00860@@
+R0808000W1H@R0G04200W0010X000X800Y00C0400CWiND0002G9n6qul4000W0W004Qk100
+2X0012CsV20400041000A02060G1I6008040G8mSt904G00AW0Gs@C00027g00mBv9001800
+GG400W280e040GG020e004020G8000O0010800W8022ey@l14002sKQZmzJOFS3EFFXkoD08
+W0OAOLCGA600Sc6oi2W0000804010000W0G40G02X8WbxD020810000q004TR6IvJ6010086
+L6cEt08008Ffom9V6qmv3tnp08I6WlLb0000088M2001008G80GW00WW00042000128000PM
+dGjdOial1@wP010O00000GWX0000000X0OEE30GW20W0X00208040000W0010G0042CHQ202
+8084G0CEF3000uX400ill1YG000W0G000m2044W021G0JZWGXKGm45GOm9Aq4OG1O22KW021
+429KX8e082W0W0000g00WjUgW0A20040WADD020Y007400G80c000o_t00004002014018G0
+8eF_404000008uwz40010qlF300YukFc10400G40002W4JGXOG0W08064GWW2G01008I8AGG
+20mWHX0A4G440WG840Gs3nW4Rh0Y0000KI1410a88B5Y_t0A00WW4G4e400GAG820A5B010H
+001G000X000A180420H01W0000W80Xwc0008000W2Fxd0G_1WuvJOUR30008080C0WG01bK2
+09G0WG0800W80002L0040WG000A1020Ga46Tz104001wa000040e0080000W80_Pl1@zR020
+W000084002H00Q00300W4820m0I0G0100300AG400H0W100G9q9iGR2F6QWH10WqqJ000e80
+4W800010G2DeaW4W0H00WQO82000082ae0000X80WK08uoU3_5FXaWI0040Gmj900003n100
+040048W14100_Ot0i020000008003WX000WW0aA2GeGi0W2W00Gm0COk1800W0W00iXl154d
+0001000QmFFoW84000m00248QW1CAW028080WGl_60W0904H0008200G009jnGsnC0044824
+3Awt0W010BEA1AnI00G00G00na88080G0G0W814We21002GGa000Y0100W0G2KW1G00K000z
+1n0uq1WwXP0010021G0G000444Y4902GG0K1I000a8H2HG04G0a044WG20054224mlICCxj1
+xRd008q20300U100kUt046000WW60K1000aMX00G00804820z0800Ge9mf1200WhW8080050
+0Y00E04000E@N2XuR025000001000Gm300Cal1JdP0Ya00W0a9eV2m10vl0800W000200061
+0000C1Q100G0G20u4T300C0Kpu30080gdpWcmJ00WdPRqF0Wgg200eACpS1OcvYHUR00_70m
+3Fu2NLgKrYWBy4L510C300GXMCC8oy400mHKWM2g200000000Ae000CD00YeehD0pCNQOu6G
+BM2GQM20BJJQMc6Bc60MCD00CJT500WH000I200m080e8mE0206200H40Myt00m508mPmT6N
+0hC00MH0K0Y0e0C1G1u2u2m5udX9WB200J40A0WztO08Z0G@@60k60eRV3000Q200G0e3000
+1000S600mR0002W3080MH80OOu900008HS3M5tWJiV0m40G6tC00o1000uDl108H4005kd0y
+100C3Ks20002gp0000p0WP0AYs3000m_300_st0Mc60000M2Im000WbI30Bb60Mc3U2fxb0M
+KjAqIB0rhHoErgSag7HLaGQPmqZj70a042ftWjyDetS6kE@XOpDOTq70040SYE30780czyXJ
+tc91E9k0FXVuEPujD000mm400u5SFg3daqZaelS6kBdX8pbOg99oEtWmpJ000HSC4gaT_9l7
+Pm_l600G000001004080407sR004Gegwn00220280WsaDe2V3I0t0GC50Vrd00G1euxD0000
+2D008GG00W0100002MPl100044G00004G08800001WauJ87@70W02000100128G8K1001000
+H01WW00W010G0080000208Y00W048W80G4G90V3KC020G4Hm410000GG02W0001S001H0100
+1WWW02001e000000G5A00000G42100b0040000801202G0G400W8080082000WW0I2X008W4
+lF3GO00MvO30W00060280802X01080041020G100090W108080020G4H0I0Ga_cDW040000G
+30400820MG00000480010014248CY0000W0W080018M00200W9100000G82G00Q800H18000
+2W0G000002H412W2820300W005040121000004021000G000fW200eTiD85HC_YsWtgD000W
+000KWl@P010040020K000F@cG5_608e00140mw@6020WO@@40vk0qQ@320080060SwT2G02O
+2UcXNlb8R@70024000040141000280000008IjZXnxJepCL000mnG00OSZA00001GWWG010o
+v56KHk1dVGoT_64ND343G0oYpWQEi10X_LrZI000800060400000080WW0YoE10004000mMf
+rWxit000ovnbB10000eN2GnPF4mX1dYP0001e1jC0400100040001NgPGNdgqOV2lc4Im064
+lk4000myC00aZA3PRoGry60200SBV301W0Sqk1rwv1K02Gg280AG8000180000G1000Q8105
+0002001cX940W00PSBHSQC0100000WH_z600G200010Y082400H0088wdq0W000DobmZhRSD
+l10400EztWP@D0028OSw90050uSeM02@0ie037vR000O040ee80G00Y809241H1000K00408
+8Y00G210M00WX1OozD000KqGW100000WI0y0m100000WIAH400aC8eqgs6y6k1jJoGK96000
+0WIW0mMyC008czOM9000W018Y52Af0200G0010VsO0500a@qC8pR6MgTZBzD000W0084WnIC
+014000W0GHI00J@p000WeBoD00010080004G8XXR0HG0Wm@J0WR3m@_I0W0W0G000200G0G0
+002W000000m408kT3AeD40GW0000C80000820W207O6U600606W00a0000000164000W02CN
+a420000050qoT5S600Eul202HO06000X020100000100W804000RdcmAIUW0000004000Y84
+000W00G0008coV2NKYH57R0008_VV9000G10640W0W0W1eewaJ0Y9I0041WrYD8DOFG2000W
+40OX130056W0G0tBKO0G1WKl040pCO0AEW000Q35y_00004092j40G00A10ri@3WwE06FN20
+Gy1048W2ep0W00008080009K1d4LfN10eLPQfboCpCQPcPqYM0mKc93msbC00Gf@xPO000Gp
+N00ebT9CD0MAD0000iOfq00W4nD00MoSvP6SaM824W2W104030906WE8C0@000_100W3000S
+100m0u0W1mE02WV00dlbmPRCW800mP000C00000E0p@p00WKvWhVOq83000O000m0W0W0G71
+X4nPusKI00y08WTt50000lU2W1SofKV60rl0ilV2XXR0cP60M20000W0eFy000000tQ1000W
+5J3WMvAO00O1WLm3H002GqrX4U06@OB1000Ih3109XfoCN6y5U8BnRG50680000WG2m339yG
+U27lQGe_6000W0004Kk_9yyA300G000m6jug40110MQW70808H38HNkOqRU27@RGuRI02000
+GC1oEuFyH_CvuLHVx6022000G0o@u6KD03J8yGyd648O500084200aj_3j1k100IWw1R1G0G
+000008G047SRmwx60010W003mFz90GG1OJy4sA8XHRC000040K0000RIHh@m5P6SLE3RHZnj
+zO0b18402A0G0W0CY4000088m01q393ZaR010G000000W0ecgp08Y00000W04G2004G09500
+0G00200WG000Q2t00qD00000W088000000H0nF06W000W04400W0Zu4O00G0020GW2_21008
+01G008XG408020880G0W2G1382902WRrI000G0080h3@D00W21044O000H800000W0Yu00W0
+248500220O0bwO014W0000a210000020G10W00001010080002W00401011208000030WcuJ
+ulmGo@8XS@D001HmuPRqWd17CYnV_600801080000fktwVO_V6A5y10W002002oUm30002Rp
+RmWS6SGH2@@@00W021G000080004000H005G4Gz_Cyqk15WP01000mMF0W000w8m08000W0W
+0Mo6ZyeDG000GRcU001000100040aCLa8@Q3002110010G0G4034G00008024QqD1G041bZR
+W004WqpJ0004aD000120000000O0miXE3rKAnntdCJV2BWOmZPC0080100WGfE60GW00000O
+Bp60I000G00mxV6y0V2h@d0007w6jVuzDIghq34W005wR00G0YsmDO3S600C000040808000
+0200GOZGmGP@60200gVc440W000000yk0G7s608000004KFy6yj56BvT22400WC00t@R00P0
+WixJ000G0e000W80000c01X0318G808H00G1IeavP8aT30180020G4G04GZO6mP002800W80
+0HW008082G00100G000080G3fLa5p3BxNX160484000G404e850G0GuyV36gt000C2000412
+60W0W02e0I04122Wm52040CG29GH800W8W238G000048W044Ymt0028G00G000uTKrT2G430
+000820020W010800WcACeFV60081Kbl1trx10C02Ge4G8200I@s00080lXR05K000000W080
+00G0000K0000X40GfY0CepU300G0004G010e400000WW23_d00p300002d1OGh@9G1004W0W
+1W02axTXv_V306WGW02KOp@4gYD100G2W4WmMft02000408Ye010G4e0004000W0800G0800
+08W00002000YemE@6qea14302_vtWP_P000e100W044000G30sl9a@@VG0W060G080008NwR
+0W0021005HiPmpXC00001208ovq60010OjV30200iPj1000QgDF100JThyRGPyCaol104C0Q
+y@X7ZF92Q300W210042000A0GWm6YJW400GUs60H0000W01X80001G5000K020GStl140008
+00a0080edK3_@t0m8A0RlXn3@64O_3HxPmxpR00u20020eL00W0rD0120000e14O0W00W6kQ
+o0000C20800O24h0048My4UstWOuIuRV3G800000800009d84WSHP001000081m1080WSH04
+004aH8nKN1r30000A000mgJu@100uz000z1Hy14_l10W@0m4x0O000Isg300002n7WAXKOm@
+@6GL00eiV300qi1000Wx000000Ww7JO7xDOPQ00000t700mNuO0008200G4000301040pCH0
+o000W00003000W0000180WAGCWA0A800K800WG000A200e2G0W1eZX8030002KCS6000W0u0
+8802010420PsR0GHD400WY00000808Stl1084000H000c00080SfS6C3_3FR7oG_6000WGyA
+3000mVx6Wo1@d0t100t30000ei50WnB0cO700mF80W@iEDui@400300ml10000Hu26000Wsb
+P70cO7Wi_D00u200008P70yfpzp2rFS7U5jyQGgtLCzz300AMVe@1W100bZtITZR0G0GeMS3
+6Zq01010W100MyrWnnD08000010m@nJ8k@4W0W0iZF3W030QFNYc@VOz@4EttWkk3fnV3cFN
+YclP0G002001Y6s91000dO10WOr3X002mXxCC@kAl@OGbL60410PCU3UlrWh@D08G00010W1
+qV0800OjxC00uCUbO6MX@dlzDeoz401G00W0201O10i40ecwP0100IRy600200G0mutz9000
+402m0000802Gm0000W02W0y@l10rDC0810GGG020W2000G0280G08040020yAU2hfdmmM60G
+80eMN36fsWOrb0082W044GY2W20001040WSNh1a00WWO0XG0000X1280Z00824e20500080I
+0G2W208000eGG0e4W0X0W00811G100810G14100G0W01001Y8000Wa900001108408000600
+00020G4010W0082m000000G00438040W00000W004008xw@mWr6C_@36282W40X20500082C
+000G8G4o08O600W2G0AG020W00008YG0106K1010002WK040W063000W0G045G8W04WWA850
+000D8G658000G4W9000H410000Sc80W8GG0H02GW0m00G0282G24000G00044V@R0W40a0yD
+000m00W00004W@@R00500G000V4PmuzICtV20410000000W0ATV30084rOd1ZBQ00000a800
+0000G20Wyq53000GQqd1WyA0W0000104q@V201W20020W1G0u@x40G004xl100100100yVK8
+nvRGk@6Cyh10040YqFXUwD0000qgv60080Y04108000000aW0e8MqN2000CM40000000501u
+b@4cst0000n@Px1000YUShex_4wEF10W80v@R0W0100000WK4YwcC10000GW80w5sWJ9CugX
+4E7s0000008krwYC14G0G@@d0300aEhnul13E6r00004G100YlM22G40vkdGLuC000G0210m
+lZ900041H8200000H00020880G00qck11c_0mVBaKvDW800000GWo@DeDV3000H000GwH_4Y
+Pd1G0H00008kOt000G001000250S5V20004000240l1N6d0004014G4bAO00W4430f00000V
+jt0000HRnRm6vCKUV2000Wq0024AL2LuR02000000W0G0002H04OU5RKoGnvI000420Y8200
+GafCD0K000W000G4H000W000A41W001o418W0210J29G4805108IW8G4H004092001004I80
+840GKt@300M6H028G0W00002W0Y0210G0Y104G004W0H429002610Wh@PulU30YG00020210
+00002820004Y00G400CjF380004800W0080000020G10HW0820000013G0m0W0W008000W0W
+0W0000W000200H004W000g2G00049GC900001000G401000G20HMa0Ou1G20800031RqtW0w
+D00WWW8000aI08000IctEXx_P0G00200G4G008X_R0010WUgP000W0W02WmmD008m04JG900
+20006be40020XGyIS300G0208210Af40I0WY8DOMR30900iCk1ZYd00004I100WeG0ea2081
+000H0100W81002008CJ0000j_@30W00W0G000200a00m@@60802uNz4UwdXSmD00n102000G
+8a10W0H08000028W8400CC0000000814G0400G000140000G0GHW85tRG8z60000OAC3k9t0
+009s0000X004irV2LxR001201G01TyAnH36y@l10802cp8Xv@J000K00W10800O0W0000862
+13000Km0Wy000H0204G4W800W000150000600We3GeG00@1t08200W40G00GG0Y0GW000mjh
+9y@l10dL00G00l_l14m0400000110uSJ30080sNb7@@NH8Z60GW00a80mZz600G40040GwC6
+08005K400G0012002082W0000HW0000801A00W2xC0b00G2g6C_L2000Gm60WiLC3Rsp0040
+W0MIOY@4QbZXjwDu7P900oYG0004000200W2cG800y5A0088WyN02003000900Ga40004O2r
+q000HrB11mPv606G000e20W81000mA000W10X00008W4000080000wI9ob00820010CG1000
+A0m10040WY0GxuF0000Y800Gfz6aDd1bpPmf@C000EN08kB00000AYx00000uv10yg2OlP60
+mJ000002G0yF000004m@C10snC00IV0mK000k0K0000002G5r10000ei1O@@40OH0ikV205N
+0A_t00aT00y_0m4x0b503x@d0_100u30000Yu50S00000u3D30Hy04hV20W8000J010g061w
+0c300C7000C000uC0003m1WcWR0c0T0008G00WI000Q200y3m0W0G7230n40XVd00i30089e
+620Gotq0000KYC400WW000C00080cpW0O410020004400WA000H02mbf6qFE300040CH4L3W
+19YR0082We0aOxV6000L90cXN0000m@7G0jE00m30cyt0whB01xd000W040W25wL100XAL70
+Sm70W1FW0KyV220Wg40mCtqx9q700caUZdaCOyU6Qst00W000580sGRZw@P8_i4W008Coc1R
+mPpOuF00GG100000Y11H000tKR08140G000W40000200I018_z4Mss01000vud040000210B
+Cb0000AV300042ewA81000W00080140qSE6HxdGN@6qXk43pR0030001004C42_rtWJuUOWE
+CEyl200NFLYpmct9a5K5D0soWU600G0eMD3004020G000m00000XDRDeST308000W00e9f40
+00W0040e1Z40100G00004Y300W04G000PZOGPP60800gkNCMsFXjzDeUP90GW4W3W000W200
+Y020880X@R00e0201b01YR0600W@cCG00W000001W0040G09OX0000W000WW00X400eYWY44
+00008014G0Y02000QCZ8001G1020000040G04X00400008G4090W020101esd4cPt000GKtL
+O0020000409vR040YWLtP00q0W02408G0W0CG00000eOI40002uiU60K084W000K1C2WW080
+4041I0W2KGH50K1241G0041AK02080e80000040e0H200XYK80440002000OQJ4GGW0020X0
+1021000G4010S4441080844W000m8006ut0W080hzpGKpR0002q84A0Y00K10404101000A3
+W000GWG3002G400e00900020202W000600G0030CW02G04CWW0026082E0W1000n0G820OmG
+LOH10W11H808G0841000BWW022020Wa080010000gY00W21W8080WH8W010GyP96G00W0G20
+mE@900402204mdW6iBh1ju@W00200G0008K80040000mupV300G00G00202101428W8W0004
+0G44000GWWA8001e02O0110000002O4hl10G000010Y0W8u4430E50082e8qC3020002840G
+004C00anlDu@@7000uysC6n@pGP@6Ktl10OW0oXpWuxC8QR32w_Xy@D0m21u@@680004W8cu
+r@900uOfVV30WX88G00H000000W0040YFhd0CW0WD9C89SCQi@XyyD8lI30002820W0G0004
+000G00GY00200000G08W088Gid9GG030WHWW020a2qC002G8080000I04101s@E11M4B08na
+000W004014001000G0280210040a0iol180400GYW00G0AwyA8K0GyVz30008gRpWoxD8eV6
+0001Y4000200000W00400Y8J0W0Y0000400G01008uHvDu913MNtWDhD0000j_00WorD0420
+4C006P0G0Nrd01402000W0n2cYcCXlwhuNQ3Aad1W0G00W00EetWbVb0201W8Y0WnzD000W0
+80010010W000H0I001001490800A0000002X4Wp00002000G990C0000W0a008A@t0001100
+800001002XO1_40q40CAS5NpRm__C0008098G20GG480e0GG01ee034Zf1teQ01900WWm044
+eA4102W82G401WC2KC4Y0a040WWGQ0422G8I8GDi0GIG02CWOcn1WK02190G50000ezK48m0
+82G7H44IAY02L00C22g420a21W005G44I0G0511EWA8T090H0I0L5Y10G001200Zmd000100
+0G1J_RGXY6G00K40021000H01100400G040GG040W000W9I0000G02G4L18X2P010K1n4410
+YpkCG0800G0aG4285W004100m9NC40C32000aG424gG16O02088G02GG0W480000YIm00100
+0A0O0P810q0me_L0H011WG0mx_C0m08G00g4500G1000K200040000b00W40000200420000
+W00WG6sc14810eWI41WC100A00040000eIVkb0200WonD0BA100Wh4000W000We0W80H00WI
+W2820004e400aW80WIA00405W0eKIk6SCU2@@BnD0C000W8nD38Y9O20Y88cV3sqpWzhC004
+8I@R600301XG0GpS9O0000K4004000400008B01004G4080000A200009A0042H4D100YYC0
+00GW8q00000A800W04e8W000W06GGQzU000Kezy70W50010G08WS000e8000640c8W000108
+4O4u40PA60I441YWGKKh6G04W000G0mG0WDqI00G62G44000020060k7o0tW0000010082mW
+8W00G01W00004Y004AG01s0000A000C0W010100G72xHa@C00G04102800G200G8GG00gvt0
+000K00000W04idU2080009I00G241501041G09H20Bldmtz6010100K04000000LY2WeA001
+0200W4G403K4A1W00081I40800DNi100Ma800a0040O9_AQ6N2000n81000mB000044X0000
+el2400WU188oPZ1m13000GHGR7GGG2ROYK30004B04000l00O00W1@J00mL0W00Sh000W57Y
+100GaCl1K00000z10100qB4700008l0000G900200WsG4020sG_@IqEU2jnB1GP70000a200
+04000gw0000000000_r_D00Wb60W8U100G2GVT50003W@@BnD3uXl00Hg20YT70Hc10005@_
+70W4K00Am000000AvS8020G0g6OF0Ce_vUarrx0000208000004W@z700wU000y0bj00WR10
+C0TxV2H000G000i340e9e313WA30WTMER9000m0W0X1WA200L4008C00Wt000C040A2gHC3G
+X00W23004000030006020C0C0O0KJ00C@0000008cENy4OCW1nC033006600G40006000L0A
+063uoq1WX10031W@@h8LE301004TV200Wp_@t00ipT00000G01000000160Wd70000W0jU00
+0p09e000u1eA01ONt00000Wg1C000OV_N0Wxl0YE210Qz20UL1X0000g2W@040uZF000000@
+v@5Ww0300XZzeWF4108oC200CI0mRv100020G001LK700yDGoE000H0C@@l400Wu50Su30KH
+DiQCwztW8bJOi@AUotW_yJ8CT90000IX00O6QC6ZEa46befV9ostWpzD8nyA6odXewI8yV60
+0OwTOjA3L23000btOJuYU32lsWuzVW000G4wCawl40kT16KFaguvv_0Ok7sWyZVG700mcx6K
+I0C9wOm3xLqnc1TOQ0080X4xV08W0GRn90W0G0G10000GeWkCG400140C010060140Idn000
+4000i6GG0800001G800000000C0000G422008400G00qfyCawO21qRGlXC4hF3000400WC01
+0H0GW6W100020000900080A0G00080W0W004W2024W0G00000041z5H308W8200W040801W0
+G020G7uR0080K4000000a000008M000082012000WW70C000GG0G000101Mgo000014002kS
+FXCoIeT@D0W000e140C408G5OWcmC00002080A000WbCP008A8001G020084C4000200054W
+800412G002404800W0X00800412880K0G000001W000WcX2WW0W0403K0FQQ002008XGW00e
+10G00ahW1pbRm3@6agD3TuRGa2ISmF3W1400W0CqtD3PUp0000aOlD8wR3W00003GWO3a4IV
+q0020000_J30F1e000G100Int08000v@R0K20Wq@J04W8m@@60044eyUL000104088gx7W01
+900080200840108082tkRGY@9Cab1Nyd0uf6W4zb00H00000exCpPvV38020000222001400
+000030001oyt018G00G4000800G20enP3E_tWqkJ000GGiX6002000W100088z1000000040
+40W0WuK@400020104W800GAXUCuR8d2OGly90WK0uYO3c49140G0LZ@0200100080H02WWG0
+jbl1002m7@F1WW00Y0036jqW2X996bJC201KWl180W0021000020002m_pIKYE3000200020
+0C008W502000WtE0FedGo36Ke_35Vc314000002000I904W00240000008GP0000G0240200
+W2cG082200W804200e800snt00G00GW000W080qH1W0Q082G10G4A0000mnB004zl10WA80G
+0080a08tV38480CGAFhrR01aH00W006G3000200060020WW1000A1016D0001008W00G1040
+0G0WdLI8X@400200aG0511940G1000v5RyR002008W00450IG00W20082020008W840008G8
+0IdrcXyDu6V304000XG000A1W0G000e400410000A0G1G0a0e0b00WV@J00A080W0000a200
+24100A1G0100c10b0000iF078c000G1410000W204W046k4Vza30WWWa@D010WW810048244
+000000G0014100GGd_C00800WA002000XP000W0DeX090WC800002t10W_@D0WW0000G10W0
+00002010056k49_sInc6anh10001gstWy_DW0YXmc46840000GWoP_60004W000a30000m00
+08080C0K000CwfM3004uS_l1008W4000SEl1001Ge0U0VBj1fSOmDkv0400g6z4kvF18020D
+0OGC9CyFF30120Ydn0K04840000n42Kzl10W2e00010e00W2102AI040G00000e000WaGoFf
+TR0Q10000811@R000WM50000j1Q5000KvM2R_RW48600000C1000A0000W00zNm008z50004
+W600EqF104008M00002c0E00000Aoimy000st_0000G0G00Ks20WiF3t0011SNxbmOjU0Gg2
+qV00000AR108000AK2yd1S30000W040@9B000G0eYDe000G5B0PIRplt60m000G4100C300W
+10000m0WY00080IR002P000b100K40001G000G41400000HaKvC000W0G0WB0H460@Ca1sP9
+30000aP5Gco6000W000m5G61006400W80002000Y0g6I36ls6@xF00009kXr0h600000000W
+0JT0000W0URX600WLN0000300WarD0s15Gks90_7000u9Df1G9B5qX000WTb209pC1OvO300
+e0yDN2FX9KC@9G000Om66gxt0000OXv@m1hO008_@XiV01080X008rSCkyt0G0a00420dxt0
+00100100@Jk220009YP0020WckP0qm0GQs64OD3P7Howj9Kk690O406PFXdiU8ES6000Gy@U
+23id0000A31000008ch3cNsPe@J9QbtWwoJ00W0100480200PcR0G04WXuDOqy7gUFXioP00
+W0000as8mb0002m8wayti10101Y5cXxwD0W0G00B0200G1010000410Y20edA369tWV@D02W
+80C0000820004429pWGsJe6Q3ckt00200WXL0oq7320000400JlN20008fip0100mjfP0002
+8005G00W000G09800H0W000090W0HAWYW80LO10g000004w4_403800W008yT30W08G01W00
+02Gvp64IM2000Wj000aC93000WQfsWc6V080008204X008dpd00021810020084841qLj100
+W00G0G0K000000010a1024060000000A0060W042104K8304220008000080001040G0GG00
+0400G4G00004000404001WexJOyV3004000Wdxm@700W8ssL2HAamk@6W009eqy7QkF100a0
+Z@R01000010C0600W00W00a00C801000G128025G05000SBk133O000G002400W40o@t0000
+20014_@t04400pKp0Ge2WJ@Je@YAgtFXSxD0W00Gv96000WW0K000000292m6000Q_F1WGG0
+0W004004G8W10040020W01002x3O0W044081G0000XW1e11001YOYoIeCSwF60008x6sWXCE
+9lV3000800mG0240mpW600809qQ664t02002G0000010yxl140a000040440020Ga180000W
+00O04kst0040GxuRGmaO0WGPhBpM080WCua1000414000000iKP3YFh20G0800G0wBt04000
+6200QoqWNUJ008020a10044520210010qV860@L0sdaaCFJ8eJ34000040W0A80000W00081
+e000YcpWHsb0W0G0890000000W0W6SBXEFD000080G100062000200200a408EzA000mu600
+8ipP82100Y00W82100800e010Po9110O00000W10Q0Y0000WGG0i004G010208Y10080W480
+05m00X81111Y221060P400GG008M00GQ0zL008JSnJIMgF1W000821000H0030Wm01G401W4
+i08101000W82EkV280020W00W0W461280a000XGS0G002012GWAG8X4HGWWGC0XW01G210KX
+0Xe20G01e2W20G438I0ZTW10000mrB0PZU20008004000a005808mY0I451A8mW4000480K1
+9A00Kp13G40004G081G000A1mpz60GGG0YWeG7064yh1lIQ000000G04rjdmG094wF3000On
+F00KAR800106jcXvADG2000088840G10200000GUmV200030004W008yRG34000012W0W1O0
+00WWQlO0000Hle6G90100400500WxJm00W3UsoUiyl1XqoGA06ihf1K40WE5I2G220008040
+40000200KG080GAGH082Hm00WW1ytV2vgQmp_6041000HS4808W8@n0S32mEqa00A0u@V300
+0ISS9342000022Coz34000002G0Ii00000a08W890040240aW000080O4x484000000100a0
+0480080E00000G034_T5000uOB00KOD98800Iz81K0mG000W00a0004052YGICc6qRU2Xjn0
+00WU0000Wq4Q50000q60000Wru19ytz3WB0W00WhaaV500IG_np3000G0060000a_@V2W088
+000006000042GDT64Bz3jlQ08G4V0MD_eQL000400H_3m@@1W7W7W88Du_B3gms0022mg64W
+0WLM5BU2P_B1uT2W9mF100Ofq00000GQi400a6BJ30m@00MED0iCD0OPQO100moq04zO2001
+0002010g02HK1An00G1100Q300e80003W006WA2C0C082O0O2W0G40O0G0m0W0G503030640
+0pC0Uyl2000CW300MqV3C10000OYQpc10206000C0O000m008XS300402000yPxAy7GPB000
+00@tC00bT1000myV00HyQXMQ1W9P3aI1C8bgLGY82@ypjSxV000000Oa2O00m1gtQOOcP00W
+qOnq0mYf1mI000Fu10Bb60000gMjX@404G0iF63lDPmOYIirf1TkJ2u51WinbO2NLMANYszP
+OAD300W0Ccz3Z@d01W0Wb_D0020WW00Whjh0000Xy00WQnV8t@7kGdXCbCeYy40W00Sf_35b
+dmcuCiZE92008gR730023jZRmevmy1F6vqPmcw90400Ayz7UNB100080O0W2soZO@D0qt2GN
+xIqWB3HA8n2w9000G0108G@_LG08G000KmBk6ykC308040005G000ut93MjtWswP002Gm4n9
+0020000W00008F300pyo00A0000109uP001410W0004H1wSs0000W44A0GG002001W008000
+010400G20100WK101GuzT3800W004000e0mHs9W0201982040Y1CW00G40WUWp0230100001
+4200G0041W4808O2G00W80018000WG00W0200000400YW0040180000GCyU@40I0W040000W
+4mrz900G0H020W0016W02800aG02002140GW00880aKZ2082541WZ800H01a00000Y0G040W
+zWR0000022WW2000C004001002GW000G00g02000WG048W100m08080G01002C800000G803
+20G4W0q@@6000O110WGvz60048ecS30CD00808e9f4000C0220OdV30040210K00Gm820624
+0800G00014mG02K1401CWuH700W0m00K1HG0000mWC00WX00a9yDOXe70034008AAMA3cKE1
+4W205vp0G000C0000110YXpWR_D0W008G002W020000G3aAXf7J00020004ca_D0W0Wmmu60
+00044G00H40WVrJ04m004880084901000010W80008400201eE@V0082Gk@6yHl1X3YHznCq
+w_300Gtp_dapnD0100800G01080040GO0W0Dgh10WW0W008C6f10030kKqWexDOlV30G02i9
+l1fIRGOr9q0r380001G000I00C0S94cX0KYE3Xg@GnD600G04G000W1080H0X601Y10X8003
+01149201m0280300O0G40018020A01082o2GG00dyR010G00W8080000808Y400OZV30W80y
+DI2XndGcp6010000140880008609kb00020000KC2W0glyXIlD8i_4W0024Cl1008W00W00I
+0800G0200124000C60004G0010W000C0H0G00000Y0W0Qud104C09O_00W0WMlUeOP6G3000
+20GW000G@yC00OEVNT9s_tWXzD8_J60G0W01G0uM33Mct0000G0W20Q5r0G0W82000_Dr020
+0000H0000n0c80G4G0W8W0002GG40G00W0002Y085B60001G400u2G30G0a04005G4G10000
+2880N_d0eo4020000200Qkt04000000WA8q000000230002082W122010W10H8087Ke2M03I
+8W51Z0m0g1H2512G8240XGX0GWY8G01K540iAG1iG00G000X008004H000W020W08G808004
+000O00a10882400040G4HPFy004110G0008290a200aW4Qqr4cCr0E200zgpGvz600100042
+m@@60GW00000800210G4eG24e02W5GGQW0A4n0b0A04GS02Iq0HC0Y2n02KW1g0W100m08W0
+0400G00GXG0G4000500G60000G10000X00WK0802mLi90800001000K040a00GG10_@t000G
+48Y1b04e4CyC30085Ist000G800G0MhF1802X0H1W00W08480W8G208001A108dfPmCw9002
+100a0001G101000848caFXy7DO2Q3sZr000WXW402H001W008w7O3Yk910400fmcW000000A
+0WW0241W0yPS280000BS00081uBM3G004yED30W00G0H00G00001082XW000080m00QYB110
+00K100WH8GW108uHR30002100G00200G00Q01I1401080XHm1174W0A4E0404m0G2SGG0200
+1S06W40GGofF000000M000200600300401400kLU2000uC000000S02000G00008O0JvbGfy
+60008hrR3m0HW0G040X09mKv601000G00002W060K000000G400000isC3ggr00W0e001080
+20W40I08W002050G4040qG00021004AOvw724t00000I248000086200240K_@900uqVPU30
+00100WIu9P90008W200W002080G8I0a0WW80m0CGStl14000009GY820W80cWG4100G04020
+00004UbX1PvR008C00004QWO00000n400uLO3040200041X20uuw6G200e@23001m94000mh
+0G8E600W000W04H000mw7G0000Wa824Yl10060800020OA0000g402WssD0G100G0Q5m0100
+0K00400yFl1XsQW00080c00Hqz000O1LL50W7UCb9yKfg5nKcB2lCN4Uml80_7JLfAcPY8LL
+5WOb1087WupO00000@N9002100Mz0egQG4Z_3o200sPd1U100Lmzm@@6000cE1E3mYbf1yFI
+BqC3YXB1Mc6pOEDyW70OwC0ia800080W080I1K4G0e2eY00G5105820AGH0K060b040SH41G
+000G410061WbjCe8S38200cAd18200e3G000WB3200mtR600GLO0k4W0m4z3k1XXR0000203
+020P4408000uY0005580m8G0W1m00305060AW01K012W0000G000G0G0I1m000O0000qVzt0
+W13T00WN06w0W2w008u206u20@@36hzZ10W8_1mJG0gyV0qF0EN0exVF0GQ0000Onq0O9008
+000K00GW00W0000100G200W2OwS5I0BJdMMS9q0k45L3Ji@C0000Zy00msRXy@FCX_R00G4W
+wdJexV30100qNU5plRmkt9W0200000uBt6001000m7qyvXqPd42000000800K0us@4_kpZri
+3fLzDW0000aJ1OSgDI1VZGtt8IX4k1tWNYVOvR9IMtW3oJOdU30180q@l1000GH5004ar6JT
+Nnvu6010GOsS6c5kYwpPOGV32GF10080G000001400G0eEB3000WI001G000W00020080045
+02Ip000Pd000005004Tl1G4000204004001200001010000000H001G004uBV308200G000g
+02200018W0800440Y008G10100W04000200240900H40ySj1000KX0000a000888W0001010
+40102WW08i1l1H2cGy_680GH008GW010L01002004100G0800e_R30aX000G0080G8011WKt
+DevU3048W2WW22e002e2G001ACG22W0WGXGKG24AYA1GZ008C2A46eGW3018042W08201000
+Z0A0Y000WG008000QmP3010000AG00008100240010W00100Gq_U2002800Y000040110200
+0025W40000043o00a0008800112000m0018000G00007700001620W00W0001G002000W004
+00800004G8e0W0040X020uQS3WWWe02In0Cu00X0001B002WnI1012e0XGW0HW000OGO4W80
+002K00ZKuF3VKcG8u60800024WmtqL0000c008100002280duR0OG0Wo@D00mSy@@6CSd1W0
+00sWs0081WW0001140000XG00Y598K0020400GG001100W10EKG08G6mg4D00204040adiIO
+mOCo_0ZqUCubQ3000XW002e7@40010Crl1W_C0UWF1000Y00H0spt00GG00080040WS9G200
+00W0JO0YOm000202W0mZzD000a100W8300W0A24m06981W083@A000100020040GCK904000
+0GGqVbI000520C0GW@60080G4000008A71100041Itt010e00WGG6Vt00I00200000802000
+22G0002G00G80008WG0090b480060010I0004WO001430W004005I00100481001at20HGaW
+@P000G4GG00GGK00We0W2G02W8W026000WIXK@DW0001m00uQJD0W0HG5_6WIG0uwV3804G0
+0m08TS30802020000H04408Y6oD0W060W41WMKD8tyAwAl20W9000C0_xtWvzDW004000W00
+o842W8WG00000010H088O0000N70000W040GiQl1004000a0Kqf1G1304000O0120WG00400
+G00W4008480000G0004100A00410W88020010000A00000uhv6CmU5NbPm6M64aU2a020020
+G0000Q1W200041006K14Lg0GG818000W2G51f00W0203000OtF0000M4000000X2WeG41832
+WW00410001K2G4H021GW0p2W0eG00024I200IWa8iW0Q22JGW0I2C00ZG8A08k008510e61m
+W804qH82oq062G0Iel20W0600000GW04ZE302W801W882080408Ku660000K008CYGa88hu8
+2f0G00WpG6g050007DW10000400L0020000W010800WG40a2008030489030G00802013a40
+0eK00H1W1WXA08W0BaW8GeP0Y080K0WHC8W22107mWG150m05020049W2Az7300W2W420E_c
+10G01K08008094Qk18GGb08e2023K0G40W4000A1G800000e2000Gn101W080G101G0G400e
+400204000A0W0G00W04G4124G00AiJX102010G0008b00KG1ZG0W0040H040b0W000400Y2G
+Y04W80A1200G44gyl200WW0840BmFXctCW20e001004004840000G00000K0401401800010
+A421004000CwOE307D00010200G000n0X00100208G800000WH000280006GO000n0W04844
+9W20e540X0400008G000G0G0080I400WWI0WG0008W0048480002020K7rOKNc10e0Ao_t0C
+0WW0G00kRp000280401002ACuY1C00W000W144a04aGW0000000K63008021G000W1040054
+0000001B000W0KCk108080148028M0W0416040040G0W04801G040100d00W0G00G0000080
+110q_a1@3Z1014WRqV0080I5v900040200040WI800aGW48XW8I811I402a0H48H008000ez
+108020I0000010W01000K610410010081W0K05W400GZ288002G0K40X4003WG20010G4W82
+59YXY0a0G1H025080000080a00000W292090Oet7cztWq3D8H@42Vp0mK30nkP00001100GA
+W00WmAm82800X9000W0H00000Ws80004g1000e92Z0000Wc0G00K0000010Q7108Gg6W3000
+0e4180gWs04300018JGF0002WD10000W004000G20000mA4300022c4mW@600Q10000u6Egy
+_V2000E000000W2m@02W@D10@hF0_d6440m00Y0000100000oxcDm@@1W7U400086leP0y0m
+If5GQi4FcDZqi8D0000W@10ia51acb0moq8jbfXbfJ3pC30MQ90M_10iCD0acbW7Q66Hud00
+0Gmi@O0m4100A200W100G6W100086k00000gn0001100u200e2W0mR03XA06600C4000000g
+UJ8t0g0C0u2mGe3ud10039G03YXpWmtC0m51m1_600C040O0iYG0mTrDeiG3W1W000038HS3
+gyl20u900QE0we_1X70SW10004u000G1z@V6408r14c@cL@320080_N1000000gT00000G0H
+0F0000OwVNVVRW@100Qf50iCD0OPQWxZPOnq00000WPJ3WbI30Um3Bmx1MccbiCD0ac51asq
+nhR0MW@XOuC0Uu1Ga2F4KH55QBHK0R0000U1EXk7OZqnU0G00m3064Ic400W0QeDXs@Veiu4
+Qi@aniheqV3AoFXEz_9zV90rq0CfGKdjLnjo6KiS2ndpGkM6W000SkaA000W6kc1Pmdp9nL0
+40000W0418W00W0G0000W0G0W000eET60800G000G500000008W50W00W02GW24000G0W040
+008000njp000OmwxJ0K0080G0WjqC0G00G@m60100uS03cEt000429LR0G0100W200050022
+4qsj1001400AA00W00G104K004W00G040O000815801200040010100G4mWgfs0008000401
+G0W01K01201800188008010000G1e00001000WG0WowJ04x1GQI9KXl1010W00G004W81000
+4W158408G00GGCYG0W42L1Da02X02009J04G3Keo880404GGCX040O2O0004H80010ACSl14
+08000001814110X0W000050G0W020010I0005G40mjz6042000W0010W04Wmm00O004K41A0
+00001047W0040000009400a3V2c600Qds000C4000400100G0100008002mZzC0002400K20
+040OeGaW1WG9m0W0G400Y8MH2G06000E889CW0H410001W1841K02200Y00400G900W02Gkt
+6G2A0uLQ3w_t002003HR0000GS0000400110G4vl10520gFBXk@P00Gls_@9a6P20000120G
+030004G0A0H04000G001S00Y0100100800W0030402008C008080W2uYU300A8qci1dtdGDu
+600028Vh4_2@1W000000I009000I00GW040002G004000m00YG4_@30AH04900y@@3002IG0
+0G080YeGQ30102080000K0020X5040Y0090HG0000W000480010002H400040Ha200q00011
+480W00WG00100080180010W0000W0400GA00140080qSa1t@RW80104020XlR000000c0008
+800G010010000Gmp@9000YsO00Gb@L8208004400O20014G01G000003010W004qCw608W6u
+@V3C000000018WaGxX6KCl1RqR008Zm6kP8as70G00013000081X8008G00V1QW080440000
+8I0sqE1000000YUoQN2020W002000W42W00h9O3400G0040042W008020828W008W40206G0
+08010000G2W08FzR0G00G00G040G0W22G0600e1V388W4imk102WWcCd14006Hoa002HWxwD
+0002mYz6aJl1z@R0Gs2WnGhG48204008G40000040010100G400G4G04400000GW00112024
+I004002W0Y_8D0G0048G0004050WWXnYIZG4W0080CYf0000508000G00W4102m20X0G_u90
+00042Ae00GX0800Y6YHg44320W8000280G980p0mW00WfUMF1000W6008QOL200q8W0W0nK0
+g868W00C010K4A80K4OWrWm5Hm00GA01820AGY0YK04402802H22W024000AYn1610040440
+W4002G8W0X230W040W0408Y0WeA000W010020090005100P@R0060GW2H0a80P4Y002W0W0C
+WW4Y210n001YX008280ygA300E70W80iQ@3000I98WC18I0aK02WH417m0Ke020ImX801021
+06CC3DW07YC8Ae8m00301geGA4W0WCH126eE00000I188i8GW1Ku4410LI141fPWIAb820GW
+181WIG2G@@I0G0C110gKcz600Y0W1000A00I0100NTRmNzC0gc000000GK08042020GWkwF1
+00e0K00002000Gb0000820g00000W800be404G04HW240GVV6800WI0A0081000G80010000
+W0G18W4GWY82000Y0000X000G21H40800G0mFrF000W00018m8WW5iI000G200W00094fEz0
+000Gi300LnP00004GG00fuR000104a2000W08204W000GH042m100keHeIW0200WWm0910G0
+040J0G400O000W000A00Y0eLV3G0Y0m24WX080C2F0406052AYH090a11W0uFR900HC060G1
+8041008082020008QPt00W0080000G49y_V200qY000000404W00GQy9020008W0GX@602O8
+000001020G088012842850130250000400010004000100G0W000120001G4W0400004000A
+o8000201G0080W828100UPk200Y00041X00200GWG2020W8004W00jvcGx@C0cx18hN94000
+00044401010W08840004Ia21G2YI44I528000GW8I00004K408000I0G1040H040W8106008
+0222W80004V00H28l000050202G0W_3808a@I3vI000WJ00040N10000I7sb000eWQvD89O6
+000Gf8OA97S3000420W00C000005Wi0O8yD3081qR0012Wl0m8@600Y100000J0800812I00
+0clt0040400W4SfofX7bjaPenfnOfM4ILLI6000G888WG8CFU32cc18YV00000egMG8U0000
+00ku1O001000CW@vF1000XGuz@400S8Njk4vWpGWr6000087y4eLfiOwPOnq0mYf1WPh2WbI
+3WqO9LMADMcMQ0000myC0Ove0e0C001O0K2u2udZ1mF30WV6008000060alt32200G500030
+106WP6C0C092O0O2W0GC0O0G0m0W000G71WCzJ0maI4000100WC06040o80i8k1f2OGM06O4
+C0C2S3I8t000A0G0G001W100038V0323t00602XXR00M50@@R000K@Fuc1440004000WW0ag
+F30elw4Wx@3X7U0WLh5gM50E4FGATbWafP19Y8K1008ZP00Wn@D0000fA10W85mGQia6BfbM
+f9DB2WMQJMF1impmvWdGyw9moqm3Uf1Giu6S3EC40G02YU300000087k2Je_hF99RCEMtWfr
+JeVh4__F1Gy807jpGHwdqrw64040kOhbIs310009c10WQuwg5_GU@qWIoPeKU3YGF100iSp@
+p0G00aVz893g7osJ2200H080004K1a5m35iRmKy60000201220014G00e000090000K0186y
+4wud1m270fEun8@68000uWU3000W000W10G04W002W002028W0208010G00e080008004008
+aW8eGW0400100140010024G01a002G028G008002080G020000GG10W00WG2e5X40G00D8l1
+08WGoIm0100800W04I08000WM@00oj_9800000150020anvD8eC3028000W010W0AI4I8010
+X020XG40mG0K00K0A4000004I908G00808A080H0200G000480GGW00800800e06000200CG
+0800RxR0004081480G00wst0490200G005W00A0000020801200008c20000G00050002004
+G24800006nQDDXKMDWW20m3N60000000o00001020004100X8G0G00008000040W21W468e0
+CC001W0YK40W2G001Gm80020040G100W048088048G00W0004100G000W00021004Y@KJ000
+04W008000W002W_tt00005p5Omq@L0gt18KVFsYB1GW02m02002401X010880mS_90L00100
+10W0060GG05zRGEz6S@l13pOmh@6CMl1D@dGt_Cit430021cld1000mS500U8@aWbD000W01
+0W02000PLO04000000A0000084000G0400G0004W9cD00G00W040W000m0W00W02000G48W0
+C002G00W0RzQGTq6qFZ1hsR000W02A014000Ixd104DcJflnDUC000302400000G8082P7O0
+G0100O4080081C0uGG4400I0000G0004W0H00G000iol1HwRGnt6S2U2000200H4G000090W
+8090WuqDeUT3G110GW00OVp70nc0qvU8G480W800Wm0W000000G01004W4W6a0080Y010xWD
+3G10000C00400GvS9Kt0395c00G00080W0001hzDXBxP000400G1WXnb0000UyHLyq960W4S
+00C01W4W00000G4W0W000W148wqt00800zjRW01400W00W02W404002C000H0080800G1G40
+0Wm2GGG0200HK8000W42GGGWWG0W8W000GW04200H00005004I110Y08Wa0087T6008hVeW7
+hdc000f02400028G0LC8W1G00A4WZ800P0eXI41WIGX60W406000G000W00G508A008308ab
+l101HG020404H00020A04000020W240040YWO00I40200e000C10lyRmF@60848G0200100W
+@kO0qA1GT@U00418x13G80nW20G0X8o0082GCM3W000XC40230034WG04G450C2gG8500HC8
+0002G04000W02G0009RndGEyFW0000100881Ga5uCuEN6k0tWcQV8Jg42ylYt_D0W0010K00
+W0000G10ICp00000W020e40011c0YIA921000O04Hz_R0b08C0G0180200GG0iwj1tUPG@_F
+00DG9aV90060CWl400cSgxd400490001oqn04G40020He0001849000Ka00W0400808B1H00
+00W000400W4W10G8400008bW00000002001108X@@D0004ITQ90800OvD30024sYl1800B6t
+tW4vP00000et7WPg39iV3W08W020G0188380W810G060m1080A1048W0GGW9W000a000002W
+0000W410WAY0080eiND0880uuB6GG408Ys400W000IGuq0300400W00gdK3gysWvXV0000iK
+10W_i310240008A20GA4YXO00W41HGY1W8G42W20G01904A20H008I40G2000a4101000W32
+G00xYG8000200of_CqGc1r3d008K60080HedGEn6WG1087T9YAqWZlz000420G0090G1nob0
+0400050201fLGV10G80V9xT3okqWJpJ00@@Tx@90WL5m3FGiCDZAbgbIc60LiInc1013W700
+000000u100WPc510000pwI0@J000000W@@00000Ha0irV20U40M8@4h2WbI30Um3LMADMcMQ
+W@100@30Ovq0WdX3ap0iCTfXXR0jAAR2mLs4WBW9060h880K0P3W0mM016v0m0o1W1W00103
+ikR30G0n000qCoR30O08Crj10G6000600040zlT6000mJS008eiGo1tWiuC0W0W1G7Xf4nP0
+0G080W0KZW0WxlPWF0GBQ14Fu1Sje5UuX7Qf5GCpCWu9S11m@22W@1E000pCHCRe40021G55
+m000WfC10WR_DG410GWtI00We8pTF000M6_c1IRQ00@30moqOXbfHbLJZbOuUGQKjQgtv0O0
+08av7EVz1Gc30JNJLe_9KpT5LydG0jCSsk4nuR0000yoUbO9VOonoWbxQfZzDU9N2003Mnm1
+McTRyeT2VfNnWw90e@1O7_V0020Kh@3HncGg_6000W00K0mvSCiQV5D_R0000a2YJOEB3000
+GIE00ud@4c_rW6vhuYW400806A03PjPmFy6ayj120000000lYi15NP0W0000020xVRW00000
+0G8084G4000000GPEM3000m00K002W000G00W0480010ovt000H0050000Gh00G00202Q0z9
+0W02Oe1F0a00040008WG0000WKOIes_42Ot000404000giF10200XiPGFx60020S4P3w@tW3
+nDelM300002G80eov40WWG10000ex1001a000100W00oDt0200GFvNHUP60000_G93gr_110
+0000e0oXF1G0G0Rxd0GW000G14bPKnoq90G00402WGvw6Kvl10200QQs0000O4500QcDXi@t
+ezV60040008WG000Gw26010GesU6witWgwD0208GfXOKW@3lrR0040WgiC0041m103S3b100
+Om3o@XLAF9UV68040ilF34Ga00W81Ga00W810GC@LilC3NVPGH@6arl10004kNd10000Y_E0
+cytWscJuyHFEH@100Ha9K@mlj6qlU292QmPMCymk1G8206ZF100W40001a10WbOX14020Y1d
+1000uS1000400U0N2VJkH_9Oiwl1nKd000200400rmRGH564OV2HNYHQS60H00G02GnT794@
+l10G4000OM_Jd100aW00200G00ucF3Ilf5GW00Xgp0A000182045008201000GG0H0mf@9G4
+00000GKU@64zl1000LK000W414m04X400800WWA490MC0H0OK00e2V382000US00040W0920
+0W10000W410GarA9bvdm0z6a4D300448J000mG00212e0W01800000m0AoNYQhD8A_4W0200
+12YI1Ym0018WZ_DW20GqdQ6000WpM000G0G000WGPbQ0W0120106fsU200C0IW304CG2t5vX
+qlD0a0005000000Yxlb00210000G00I0wWZ148200G1G0000008K201008WGXrpCeKv400Sh
+sbR20100e000Sue1pxU20I2XlTV000e0010I0200L9a00C0WoBt00008e00WjsC00400H00e
+MsC8oN60BQ0iTO2fdR0040eRWL1G20mHw6KBG20W884Ce00820080410W00005G041GkzT30
+06000000W5We0280041000428000G004G400kTl1000GzF0046d1W00000GI00e0ezgGQ4_1
+0400B_Y1WG8002GArp@0H0000W88a000YhDXamD0W200Ga8WV8J001Gq@@600G1uAU3IXt0W
+8G0@At2810IA10WNk@W20004a00HWR008C00000Q000YHc1m000DuaGkt9u1000Hl0W20G24
+a00VD@0mQ6WHxP0042GOE6K1D9LmzGn@600_00jt2WV_nlNzb000uEN10WeFU000K50000Ku
+F00ee0ymIBeggMcbMg4cP3UE0000OH0cOt0r_V0cP00000k300000r10000000mPPLV20c60
+m@00CpCMYc_X8lD04WA3H0HahAO000m4000002401A_00m0Ko00Oy3004804030A060M040L
+sczJ00Wcuz@60001WW00040Ha7ly8_Q90100qHd1rqpG8s600WL54f70YUF0m3005Tx10083
+10GO20Wi50e@dKZ100P0cvF1Wn00BzR000MT0000W8_02@kbWsD00000Qf5WDg3igSL0W0Gq
+uV2Jvz0000apYJe86I_@t000EBPS@MLujaol10UJ063t900020100Fg330280vnho9@60000
+nT00GhvEb2a1vpdmdyCiJj100HWYaFXf7D8PJ3IVs01000000G00200W0400100001000Mzj
+qRW00008W00pUHoYzC4QV5DtR000WWxqJ00W02004000200080020W4uf101OG0400040450
+12A00400500W04GG88WY42910W00G152e080G080000006l00W0080000421004G8cYN80W0
+0r_Rm7L6STB3000010WG000G0G0W00002010W080800K0G8e0G800C0G00021AW864120002
+026K0f8I001020G0008qC00010000800W28We@9f83Oguo000080008cas0G010@SPGf@601
+80uTX40008000GG400ob@C00eC10010G0000W40008WIydaywPun_AW20W00G04W00m6_LaD
+l122008280SXl1C000000400YW00000200100W0W00008W22040uRV30BC0CeV2zBQG0tCah
+eDG000kwl200G4G000wNF120G40G00@_F10444000088A04Hg140G0W80H000410046H000H
+018R7Q0004WabgeXIRwe430040tKR00Y000m8000008202GC1401080WX040W000WG20Y101
+0p0PsV3008s10I824iO2041WA_DO6kMk7j200G0@tRGOY6ief4G080Q5n00W00000HM5q082
+008Ga10G00GW4m000WOIn60HA420000WvB0000000WC1004G0G2u6v7oPT600OG4430Q4tWO
+qa0H00000G4G00G0004950pW82O50C942005102282208oG8064AG1YK01023G8Xg4100814
+8200W0v401YOe4gEI40G8G4030W400OtZVWWW000GX0002mvq6yF_3000IW8000H22G4Y0G4
+V60040m44Ia29A0C5120ae182001HGHKX4m2K00H0oCI8W8000u92L2G4e02005201KXK020
+40102rFBF0008H11101WK0a000W40W1@V0a00G6_60000Q1O3clsWsmDeuU3000ACgj18000
+Vut0W1BWA0G80WI0G489i2V300406TU8nyl10K000120v0Anb@Cm0200m400G00WEID00000
+0K82000A00060G2Oq27300O2000WZA8W1105Huq9020WgVQ6s2U6Y10C000W4Gm0itl400EC
+10000W1000001O010008W02400480H000450200000K0G02000G021000e0009010002W000
+0yKO00400102001420000W02K00Yg6cd_4sutx7002002009hT3aG00qfl14YX000010GA42
+Y0000W080W0eW0000F502e80000W0000A0W003fdGtov00Yb0W004J00WlUn000048000082
+0@dOGX@600250000028KWuaJ00100WW000WW8000eS0GH0050mA00GBd60e00000iIQpym@a
+DZP00GT@O000e60000WoE0rFJ2UuXbPfboWPsWd3s300M4GL70ygE0WzF0WYT0dqa0GWR000
+100G0uE000CI9G00Kv10Crn5000KsO7000024KYl49Mh200O40G06000C0A000uY0OsR9002
+080002H00001W080G1m0m2W1W123Gb1006GOu6000m0e0W103WB06000C80000006z3000W1
+00mC02000gCg00000Kn0u_wVG00100W0000W8@10W@@P0004bx10000Yw@@dW0_@R0000yRt
+v1KW10Yu30y1500K800C0WSuT@nlQGmZ00020eA000ST340sVM0W8_azAl10000LT00apLKd
+zBHvQd000000GiTm0jaGhAFzfoo@X0yW0ewjnwKQc9sJ0000ev10Wwr@PeyAM5oWKtB20WbU
+22HzFV22010Ey2ZjFaelU6W008aOF3WB40w_FXxeWv89LU0EaTst0000jK10WVhzORU9ccEa
+0ZVOL@4YLkYDxheHQ60WR9U9F3pPNngqjKxG8d_NHJmCCpj1r@p0mk5WP_99E@AU5xdfDNzv
+WpxSu@DB_FpZ@lCv@ANakzIO00mZyPp@T_y@cH@dvq@NMzVbN@FPs@HkzV2Iy3000X800maV
+@dWC9n_72O43WG4@VMtY00yTkglGTpIoT@y46zCDYgIGn5100Sw0XP_zlYcIpv7q@xHz@TO@
+F7t@l1_@Qa@V6w@Zn_@Nm@l5z@NX@@Ky@@@@@@@@@@@xL000GQug0000ae00G3v5DiN2DJc0
+800W5pJG800m@@IG008ubo70G004Vk4004h3H@X60C87z4IIFXiqD81XA0001Kfk1x0AnaWU
+Cmk495amqWC0us08Qp7Q0mWqDJ8VJ3G0024xU2J5An@19K@E3HAm02G4Wf3bu1X7oUO3I200
+@@BqlY6KrW10002008010002G410008800208WW0000018G00100m4Z60WWW8cn400G0000G
+00010G14WaBJ08W0W000Wb6D00mSB4G0WB8O8iXG0001q6H2DFoW000Y@@D0104W00e04G00
+0eG0W0008020011AW12G0040X2WW008W00020002W0208000O08eW040300008115n028a10
+60500004011W0200002mja60Y81001Gmi060020G140W028014010W0000110W28000GG2b6
+8020050G028W14W0G0W02K0140020004G008e04G012W0000052000110400004W000000G4
+00401001200WW0G0202800900010080002002050108000Y00801aO0000012482001C0Glk
+QWG4A48W0001004400000WXQ00022000W000G004008Seh18800I1m03W00ZOO000G010020
+8044W2800C0001mGuk60400G0C4mU060WX00004000W04800A8WG0Y0a0000202002AW0840
+GG0028W0800H00000Gq0600000054G796004A0n1220000e000pS_00WWfw6C000emRd6G02
+8W020mYdLSXg100W10001avX1D0O000801002RZO0800mrHC000Wmb89KcX1neO000200I04
+WG80s9910002202000008001ORr7G00080000id3Gd9CKq135dO0000cPTPez43cyWXAKC00
+08080000008000Y000008G81O0I0000002CZ0050G00H0004W00000020G001201W00G10W8
+00000000414108000A0044000004X0X1YWWTLCu103000XPV008Bv76PD10005e004000000
+0m0010102WYXKDG0O0GShF0e00020002000800000W498X0G02H00GW24400000W000o0400
+W40G0GH080GJ003100000008400000088Y40400W8003010408000uG0008202008004100A
+Tn000yZbmOGo9Fq4Z10008000201000W200G400001001000G0WajG5040G0080W001vwr40
+400100000C00H0800400Y00004030104O6Q30G08000464Y0020020W1200n4gGs0822WG0G
+Y00E00502u8M30cO0qDj4tsQG1r90200em4300094Dh1vtoGLr9020G0000044c882804cg0
+0peK0001mG0H0GWG82IWE21100qG00KH8WC0I440WA06888G600GH08W0GWKa400q1480C1m
+Q0C006u8W8e0Y414251020020108000W2O00uRN3Mn_10200000H080000200801204I00G2
+W0W01G00808W0ugt704W0000018004G204000989800WK400W4I9208CYOG1W8A04010o852
+mO4G0130KWW0H0m00Y04401002I86L2700efA0GWW6801080yG0086HX0006C40480600000
+2000eiOWb4wwm00004nOa080G804WGWH408m0080W010Y0WG026000160Y0E3AXe0IW8G804
+0O0W40K08I00400GA0W000001Wo0009100WG_@t00490vPOm80600018wQ34W0G10G82O00G
+gG60A0000000100a@@D0es3r@@60A000Y000eW20H000B1OGA090A0Z00000e20W01C00a20
+0W2A0090H1a0e0820200aIA00942040G084X00W24Y0e800AG0G2X00G000G100G1W2pDOu5
+3EuE1W0000W8i020OA000000imEt6000WQgu40000xR00u@V3000500000000s@@Ca2W1G0C
+0W0000G00W200mWI9yj4300iC00HW0402Xe2800W8WYeC0W004G40086G801G00O0W001087
+S3G00m00IWSl93080000040068002K0W1002401001000G00800e00202000G00000u@J00G
+10CY2109000GW024W000420W400e007aH0WW20G0010Y0000WeW8200K0W00808a0H0000G0
+4500140418450G00404KG000GmH40B000I0900G10A0Ii0H28G842Xa0240Ga4I00GG08Wm0
+I48200ORw400G0W80040041040009HI8X04G0W1W08G2100010080W088002cfs0WA900000
+02W00080W080002WWG5C85030002010I0000048WmDhD000010001G0G2010000080400000
+2000080W0100HG00IaGGO300G08K000084000010P00000Pe30300000300000Ga00008W00
+20040030000WW40000WC0000WO040kgm000W400010G10000G0000hCX50820W2100W80028
+000i008W0CaK0e0iWWOK0U00wJ0W0XeNY00080001WFa10@xA00200wl004030ug20010mLd
+BWFUW00000@x70kv00SJ10u@VuA30GCHydL@70FS0Ww74051000@@_700ig@F0000m7_0mN1
+00G3M00OhSF40088810GG00WW0W001014000oxN2BJ300W60000MAD0M600Ge00085G5HAG5
+0C0L000L000Y2000C000O0m0K1W1010300WA00001000600480CGO0Y0W0e200e200GG000W
+200250602We0G08000W00002000wW0K24ZW4961CHC2I284m4GIC9Wa8n09HY9GY4J0c8k09
+1K1u2u4b5m9YOWJ4n5a8YBWB4JGM0c0cY2W14mavC89WO0N09nr02Yc@00rL50cQAW@U4000
+0mCp0mL3000V0G7000C0W5if00200_G402000G030G0_3000mLVw700mV@D30hwA0_xN00Wk
+0080u30mm@1000S0W@@D0iXC31Fy02ggAc9pCyF00uV04qCp8e@cHmK0CmX7yF0KP6p8u@0G
+GLZ2m0gCZgKvV0Sm3FGmggYW7EJK0F0W@1ag0WGHxCy@M87yyGv@I000W4J00mWzEzoE3Jlb
+GdRCatU25kdmtyC010Gesz700W@00400000HPO680000240GGS9010000008400WKZIukU90
+008qDc1lsRW0G00C000Vo7otyOCQN2r@p08K3WEuI0004mpH6CKl1fhaGi_60010edkA6rBX
+MvOuQl4QVnWvxbOIF340004UN5Hpn0000UK00000000e00yu09N@N120WWj0P0001WW10001
+00NyR0G00WF0JG0a00A00gf2D0C0YGCL6041W040000402A400rmP0000110000001040080
+G100GMLb5daHG2HJz0Y00W@@D0402G9H68W00G14002O00140408G201IG0200G05401000W
+m0000W240W0W048OB6300050W00412G020000K0080020023qNu3WO4026qZJ4P0004m7U60
+00G004WmyX901088K13sHq00010ZUa0021040000401U7p0301001010001G0aYeTH30030W
+GOG00180070WR5J8_G300800W0W00006b10W0G8v@@4_inWL9b000280G8010000G81WY200
+40O01480W0G800440180000AGW00024002002C008G00001010040G40W0W40WbIC008W00H
+008000r5PW00GWetC00WpR2bUi1N27IQmVa9W000012000000a0000W00W0004Af1LKcW008
+GeWG02C00Igq0041WPLQ0804WV8DemH60003yO93000488000G00000021000WcA0@@FJAc9
+aZf1rNomDb6W2A00800001W04000m000WW00Khf10G00000HW00X0G00GRc600WW0W0108W0
+00200tmP0008280020820420200000004gZ00W@@X9Op40040824204004080Wl3D060G000
+0YF0C0000040240G20024001Q0W0Om188a814G822085WQ00200006AXdOGyM6000GH84W04
+100400WYG22W0800000000Aqjfj00W08MK60G0G0008W0800O405W0200G40G2O00402200W
+008YW3IJ0Y00008AaO3DOP230008W8000H0Wa00000G400600000Gi3g100I000801000020
+84GWG40100WiD0_@NbHuU00800808WH_C0G00GPK60100WW05000W084000G92G40e080002
+C00Ag0Ap040G05c0W0YG0G4284G408W9002001518Y0Wy0X10G8202A1G0G8G0W0004YGWI2
+Y825X100mP300uuXMI2a1000e04420204H409X00122208040180G0800YOa04bGa810Y900
+0m00C6801hX0a10mW4G490aO010Ia000ARr018A10048045WO00W0G00480W0400C804WnnG
+09YG6G0W01030000Pp@@t2804W7FJG0040X2W43003a100840WW020282C4W2LA084a004G8
+LPD8000WKI104o40185C040Ha00I1H0000005f0808000a2W0000100eG4Ha000aIA0KA208
+1e0G0000G00KY0e400020b0000o000000z1u@@JAZp000Lf082000KG1041000050G000200
+a20041a1GAe4G2020G013O420CI0G00WO1000180O4000BW8H6A38005858102100020mA02
+05800hG00M00W20GG000G0100800W200W500G00000GG4000aRxC0000UI1dK6d1rtPGTS6K
+6d1C404050WGJ003080200a848eK000H000u889000eO0a3K00L0520D10HX0000HW063000
+G0W0000W02X2GmG8W80A20WY0744W080100O01WHG4C00044W04000G8FTc00Wcm@@F100eW
+0GWGe140G1000W0WG002G0E4110G480HK000K0O08G0G0000002490000H21GWG04vG0000G
+e0AW2WK0000W8W1aGGI02K00Ka0WK014102W0W080000205W00040e08941100800044a008
+0000G41G0W4WJ0qn1mSBg08G08WO602a00I0020G01G0010X00lgQ00fF0820YI100000028
+000z10W00y5qF01000L000C20W0000HF90480E2zPln00eF0024WM1M0W828A40000G08W00
+0G60000040000lW93@@l1000s0vaG8mM2412Gj0W0G400H4020sM04G8sYF04H80eW4u@60m
+Vt10uV0W8000_7G08tT0yGL0WW2e_22m7H0eRA0GhM0WQi10jf0lwm0ko0l0000yFV1ul010
+yX000010406Dq01W160y@D0SJ0000E@@FFWCO88Km40f480IXG8X2XG172X062Wa8n50HYBW
+R6LWr0o0g000m000OE00Gm000e2G533OC04060A1C0KY42e49b09Ie0KnK2W1G203WaeA09H
+21IY46049C0O0O0m0e0Ibp002000AB0_@@a0va8BE3aev7WBYBmU0V0k0EHP1CYC@11z700w
+F0UWdP0Fu1e600muU700y3WhA00ta0@fAL_x77CpCXjP01LL52Uu1cHLLKLL7azc1EiA1bP6
+0ApCgog1eALzuF@084W004000W0J00u@@J8OcPGm3Fm@7UGMSCuF04qX7CZCpeALfoCnmPmQ
+vhc6E3I000A@kYxgE1K@3m@@LSAc19dpJd1jibk7O300_@l22400@@dpJjFqPt3twzm@@X00
+mcE8yS_@73000H0080004WUKi1ViRmLt6CPb1jzbm94CisU2foRGCG6qxd1WtL0kh@dPfDeh
+_4001000100910480002010000O0C001004G810WW00WnwDeZL3QYFXjpDu@V3UmsW4cP000
+0e@10Wp5buwU3AOcXPuUOU@A040Wy@l1610W100G0602OqN300000W0g00G8G0f60G008f06
+0G0G0001uzi4ovtWX_DOFM300iWUZl4@znGEzFCHd1Z@pm@@6arf1p@Qm2l60GG0uzT30C42
+4Xj1Zsp000CWi@Pem_A_781G7B0ZcS51W100080FYRGI_y000WW600GxAEjr030000JcaXdl
+JeCR3wz@404QhnmS500010002004W28t001000200008000G8OUaM00000uf1Ol6jsIGYNeD
+OU36_Fb4z1005xu4000eQeD05000e8W08804toR0G00W3fD000GW002WRML10GuV2GN14102
+00G00W120G20h9d0012mvzD0005OWig0oq0Og8dcLbX7tJ0K0000W004002W4000W0G14000
+890G85gWU008XYe8210CrV2ZwR0041WYFJeq3L_@t00054XF55O00WCMU0100H_@6qVl1rZq
+20000G740hK16802WSdu1000jx00WwiSQVs4IQE1000a1_pGuR9qky900QlpzAA0UO6XpdWG
+840k3FWVromg_6000lE6QL00r0CGMK0H00oar00404000CoTp0400000101000G0Y082S3sw
+KbrZnu@wYy20000000W@200T71000008300000u@R0CNxM000f5v6gn2frZoOKYz3VmW100G
+0000KC600k1QcJuCxMV300Kjq8iAvizJtLmqeU2WOD0c5ygXiJ0001qkBd00W00410GizF00
+00B@O3kkFX5oDu6@A2nFXeUD8bjA_xcXhjIG0W0mbKFCTk10W08AlF1G000W0200050qu53t
+7R00WlM0G10leRGSi6Sak10002xyt01G0480008000G000ujlJAtFX6rD000G0W10WtnP8YT
+3gntWyzV0206mE@9qOS20OG0wvF1400GTmb00G2WpxD8oP36ztW86a8APIwb730108npd000
+10004G008WoetWHwP0000eO0040020jsdmOTIy@h1rt@Gs3R00001000800Hm3wD00804K04
+WbJv10WNwC8@iTb7@MAHz@6CzV2DUR0002WK0U001020010000401004nj0SLF3020As5qWm
+7C000amFQF00W0uI_JULhby@Ue246000WGU008GV6_st008040WW0_qtWOnDOoFR8000CTF3
+Vmn080000040D0Om8vFKK@300_XMQF10100Rcc0000800O05Somrdm0820000012WGWHsD8t
+p7_vmWL4COh3300044_P251OG_@90650u@V3000820W84GHG0220000W0G4W0501G100eOPV
+30044qAG2tX6IUT60a010010400G01I4GZxLnea6im730000108008000W0200W000200W08
+8000WhO00ONo4wws0G0400080020G0040W080mh4mG000uTU3W0008004G400ow@9000Y000
+00140004100G0000Y0000400H0041GWK0CW080W40004A001rc0200000EpblR004G1H00W0
+H0f000H02040WGW80200I1K404HG8b000o80002080I0WRNC8UkDkEmWAOD000W0001WdPCu
+px4o1t0W1000100K00000G00O0KGA09000820G10G00WpnO0ST2mjz6040030480G0H0X0M0
+00400O1G01Y011W1X2404W000030esc_aOuI0m000000G0030400W@wa10I00000400u000G
+04443020100W006G000020100G08000mYeeoTP00003b10240G48001G2W0WW04WWO00W00G
+2W180400X0040000G0280C4WW1@D8SQOsrXXoID000W052000W4128008014000KW0000a40
+20000GY0854e2iOX1j0p00WfT00G40W000W02W0002GI000005808Q0m040Ga01Y8000e849
+G3020G0440GxCE1e000nmT208IWEhO00020008245000107GK000G0S00H00010aK0IG8008
+0S00H000vVo00y5010000W10400m20G0G4K70001KEGM000Gcy20H000Xm8041o200X0qB82
+200802KUQ80000TU000000Wd70mVmF000oK6000LUu1H_F0YMr74TcP8QLLn37UW@1G5pCJq
+f0OWCp0Qggo30000IPE10008y500000HwF00mX7KbgKfAL5z3U8QLLLq7wWeLbALTe3Uu17C
+pCYkgg4zXg2w3F0000GarX43d1002PwXpWLRDOoV30W830006WCW20P050Y0A04P008o0oGa
+1a1e38JA0CO0P040o0IWf6000100mfrdl6O00Ct1o0g1q1K0e3e2KKG5ee300pFWEYCWz0z0
+o0A0q1K0OE80Ga100008JA@gida1Z0Lni@U000CBmf4y7000QD0u@@74002Ehi1p29K8s510
+0Wpt00GsHBDDFC040GQJB400DiBrHLxPpSz@60Z006s_ajeE9jRLEwwXVqm0000jL00WQuf2
+0800808Wukbu_l70W000050000005020000G800b_zsWnmI021000WNK00040010000GS@T2
+00804000y@k4lqdGWVdaJV8002000016lK2xtd014e00I081uR04000GNi0fjd001020800F
+Xp0080mkdC8r66I1mWoyPewz7wusWVvbetR3YKu100o0jyR008100800R0OW040810100100
+0G0C000W6D100018000000C0W02808000O2k4000001WG0000W000aV@J000W0W20WZUVup@
+AwnCay7OW0W0mQo6000400W0GBT6iwk100y9_UlYV_bOFR6YFf80o20G040W201sIW100G08
+9J0W000WW020010W0xDu@V30@g008008f_7_dpWKxL9z5U_wt010W884040000aqG2PnR0H0
+0000GqUI00Ihd100W01zRmzcCSd_3TVN1200WZrR1080mldI00GG8gB3c@d100K6JRAnw_9S
+nl1XyRmOZIKD@3XY6o2zm00G88wV30Rg0Svv65hbmQa6y7P2NydmVr6qCl1JrF3H10aIFC08
+0W800W100GG000214101000208000O00H080000W1A08im@300W1cztWa@D00W0Gjx6abk10
+00WG0024Gv30080G0G004W0gbUL009510X000400H0000001000g00Kp0008Y009GtzC8000
+00G1940400G202001_LDXL2C0A00m586CwW4zEmGM86C5k1rio0e00WxDDu@VC8508A21210
+I51020H085K0e48000GLAk1a2I0O6a00A10O0T3018GX00W440a01K00Y08800A066m0G000
+000e0G0cDNB900081004I000Sb2L000W0W2034000G0ZGOL00010004G40000WX001000aD2
+D080Ga4000000m420061m000008G00_pn000We0020G400izW1ZwRJioX000GGG070000000
+GG0000G82G000800GG4m120WA081UP04000001Q204008000a00eX63cmt0G01eH_R000CG0
+00000W40i00SjT280W0000002400001og_600080a10GV_m008X02010000e0lDG800GH89W
+0402H00Ktg600I0080WmOxCqvk17S_m2u90n04100024H0W@@J000We00000022GH002@t00
+00G2100g3s3000zEWWmG_B0G000101001Wj60S0wQ1s20G8ah5040100W0000a90060fH000
+0e78B10W0A60G000208000090000G10i000GGFaaFCefS9_@730410bgt2008u5MJ8Am4W00
+00WP0005KG_@9000pz@V60mC0y@F30Or0000g0000q3F49LhAQ@1GqoCZgSu1Fu1LcnCH@W7
+YMLp4zXE8QLfoCgIb@1W0m3Fe1000k90000000n4C0V8000pT00cx0k8M1O0e3m0G0i700mS
+000n500pF0NYC0C0W0G000I200GC000Gm0004J004T08GS1q100W100y@l18c00GC18041I2
+01010002W2000500QAt0101e202GJ1u1G0g0W040oAlb@@D008Y00000p00WP@B100u100O6
+0008y100StI260W841004vDa00eH_@FdyVU8yu4QVdXo@Pe8SCQqUZ6bD0yv3G9UdCwU2rkR
+mMpIaxV5L3bJwv9000W6w00GbRj4IG81SjHVsL4sr6LjR00WJrlVLfXTI0200ycT2TmdGIy6
+00W202010001004G0ZOpm0x6000KuEU300G000WWW20400000W600W0000oZ0y@l1408Woq_
+XAoJ0441040001080NURW0G0WPtJ8bU3QUtWuMC000000A000800840004000208000Wm0x6
+80004000000W200022008MPt01W10000A00100G0W06K00E00200H00e00580K0228060400
+00OFJ01PoR022W000008W00A6t00010m0GW1004220800G008W020G8YTWdGH06008001021
+80000200Dgd0000G3000200acFtWX2C82C34G80Cll1L3RmbR6G00G008000004308100WHw
+ot00E200040W0C3001000mPIqy60002W800GU@6iIk1004I00e000W010GG2G2000W04GWO0
+00000Y02O8@400080O000080200000W50zpB1801WAwJ0040G6L60440Oqf40W00jyM202aG
+60q020a20Ge0W08080W00W0008DBW8uDW001W00000W02nfRmgL90100G0000002ez0DeSV3
+Aat00108zqdG5y90080ydV90H00C9l1zp_m@@9800WG00Wmc@6a_L2XXdGcY6C@E67rp00W8
+20080W0C0Qkz18280Hon0200W_@D8AS3M2aX0mCeGV6800056U2W420m00W000G0088GCu6S
+RW108sr3pt0004200W0000C0W0GOF@4248110000040044004HW00000010I0a0W00000130
+000010H2mI_6CaF3Zrp00G001000pzp0080e@@J0H10024WW@@DW00G00W0YaQV0CF00100W
+1yJ8GU32g@Xm@De4@42_t0W00G00000W4WiZw6NXpW04WmWrDOK@4_bmWzYDOpk4G0W00200
+0W4004W0blfD0000lw1010040200G02G0000G0008GQ@6aLu3f_Rmd@6q_U2W000w_tWbjPW
+0W0Op@6qDU2000G00221120Y0000142000000WW0k_t040GG00W0GG41108G0K2006B03120
+I20H01G4098W008540804000SP0W0C000400aW000G000a10GG0hcP0080001080W0G0400X
+0W0008A800000120W1GG04W00240140040O0G00YC01000090Lob100080002SOj120W06_q
+00GH04000011080G0G010mj19040200000D00008GWXOR00400401400110G408G000W0GW0
+000Gi90200G0HW00m00HW00W0000O000@JOmPzC00800G00CaX02H03000GC00m0W48000G0
+40428G000860GgkB10050Y000000G1H0Y00005e00H0000WIW8000000eG00H000a2A0a0Wf
+Kd0100004X84G000W200010100mmHT60I04W00004H30000q4K0G000Wrsl1Y001g6tW01I0
+H04125G00202400fW0YW0W020KH820000G950000W4WK001IW8A03Y@F1000O00G0000500m
+0OT63c2t080000mG0c2t04H00a240gOF1W1080H00G8800400000X0001000G8004G000508
+0000meUM0F000Aumz4I181080200a0KG0G0140eU03020000GG0806W010WatP0008004108
+00I2K4000e83G1000W200400100Z028012100GW2q000041GaN_C02000000104W02002C0m
+00800m4CZ000000G0aXVc00_O0W02W7ZQ00G8Ws_D0m2W2G00WIvC02G007020000G400X10
+0W8uH02G0Q000K0000180T10WOG8000GG000GC0008000WW82xt0024GH_d0480G00041fQ0
+W00XK0I0e20000K4G4100010W110i8e1W001018G8200008010010e0000000z00WG0200W2
+H1100080442200W20008G4000081W0YORDe8S300408W01u@V90e0G4eF3W50410WX000G40
+024000M008G0C4OJ181824020s008O8g5Y28Cy40201a8U5202G0W3000OPFNy40e4W4EU5W
+We80000G1w19oV3IMn0q30G002GGT00quk1phQmKBFug10OGo40000wtFk200y70K1000m@0
+8IL3Rp0gCpXEuV00m3F8wggQrD34zV0u@3FmCpSWggAQLLLqE4000Popa3k1c9pCyF0geggY
+sCp4TW0C001KbgG3000SJ00uZG000pYpWO_D000410tK00_82_000crt0000WM5e4GC19Yu2
+O2n4a5W8W90bOI0AHY1KY4hW49M1SHC2o287m4GISFmXevW20H700YC0T4T0o0w0m0K0e3e0
+GKG1We300H7G7YEWEnWR0G1GK000ym3K0o28XO0I8SS68WCWame100C300G503mCGK0G0C00
+WVaC0O600G4G500040G00000G0000HL2_704CJPKrV0uX7aHLLHm7UWWP201pC32cP6_FpCy
+F0PuV044ym3eCZ00000000WF0000004AG10ylF0yHt1uc40m7XmVF2X@@00@@10V00000000
+koT7WhA00000@j910000ytN0S602p73h60WU410if0NPW000002000SL00uctxN1101WFhbu
+VyGk@tWdoD8dV60OF0iNU5jngIRpC0000yN63M0@10410000W0000I001urQ9I@dX_hC8nV6
+000mWJ000000mL364bj4G0412PF10800G0e0hmoWKrPOlA3wqtWWRC8iTCYO7Z9lJOgzA00S
+ObU_6z1y000WWqb3viyA000128000440mMI6S5k4fZdGRP6S9_3WE90A9tWgvVO783APYXDw
+D0A82m1wFKzf104W0000400002W00002YWxwJ00002G1GWO_D00GG2G08020G00G200000G0
+1O0W400A0C0LG02XUP002a2A210882W000G1810000GGUT6WU0G0004W0480030088000G0K
+W100G011mCw9Kgk140a82qxXcSDup93040000200000220100C10G0W0010HGm0f0000e128
+0X00120W040008028eNJ3MTo001030e00CGW0W001010600000O0042O00W8H0GW08010GW2
+eW00000006hG001eG0G0W10W10WW_JDW0000088G04G00020X010ksk10010G1100GA0O3V3
+W40G0000200GX1000J000rdPmFv6a_h1080W042000G008030220000000002542080008kC
+300040148024A00GK1e0020I000001GG5a014080180o0010804C02000000q0Y008881008
+A040UTs02YG000144W00W01000WG0001WiMD000W0400e2OD000GHHv60W04uoA60400100A
+20WG010202X0101000m04G09000400140W5uCW0Y0004200000422188040W0PwGV3028000
+Y10e0400O150000G2100W00120000009n1800G00OG000830W04G8lB3EVp0000800e0Mut0
+20070041MntWZ0J0W002G28004a002200W040020uf@7k2a100HW0G400GW0A0C0W00004W0
+0001000G1020020450m02W00001G0040144W000180OzV300104id10C8G00000H00yqV300
+0G2180X00Gm@@900404G800004ar@V0400180WWQBCOT83EgDXuZIO2V380000WG0386202G
+X0000W0009PW0011G0G000000082280G0000WG01000Z020000484034dyR0G000H@04peQ0
+800WfCI006001O002060G8004000800GfiT363HY9_DuyU30e01SdV2004000aGy@l10W01b
+800GC02000000f008081e8430100204410W000PW400400414C8QGE8d1z_R00G0Y@mC0000
+7h000800000H4wbp000210108_@tWn5Ce8V6gbsWg@VOy@4k7CXdzDeY@400WW002GOOG3MI
+d1000G2G0000X0010Gu7U30042000000eW000810W015RR0004L100020W00000204000e4H
+JzFGG488h_4gqFXWZJOfW4W00801400020001000W0X0W000400kil100W00G0G12Y000355
+Gn92i00A86Ze04W48W000Y0G0K02OC94X6W0GXWCe08S2W00A20q000W080KG00WGH90X0M0
+000uUN00WW8G04GG0W090Y000014002G0G802K41W18G000YW04082080000642G08280zjF
+30008K06G0000048W0000144WKA800xvt000400W40gxn0100D86X1410H0G06W0001ka800
+8W6G8OX109216GeW0C01022O1p092W28G0DeeW8A00LD105e01HI4pBQ0000Mg0208108C01
+1901410a48108G2GG42I004000eY0G0104002000011rHQ000WaRxPOx434G01GG02G004uP
+_6GA0YG20000a21GQ6Y0GAf009H00G40Z00022WG00000810ojBXzmP0000000CXzqDO7J30
+00GH040000000WpYFwb0A08mew900489HS32glYLxD8T@402000G0010WH40W20WOO80e000
+28088m0WKW000I0W4YOOxV30W80K2j1004004XG2000WI000K00WBJJW00810000mu80vgdm
+y@6000m00W0004100G4041008WW0002I8u@DMuFXvxD00210q0W2m080G10100mHe04100q1
+410200a02BUc0040WX7De5B30044ylj1Xmd0H00Wx6J0000h510WYtJ0000ye@6G000ur@4g
+XrWtKDOQNI0010WA04a1G00Y40180GW21Y42hC1G0G080A00000W008vJ_4008000G010000
+030000C02G0002002200082XW000G200000Ma_@t00G0XW20000110400e_V3kgqW8xD8OV3
+0800G200OxV60H84a@V2j3O020WU1W8WWy5041Y02Gm0G4q70013HlG4400G0800GCnC60G0
+GK0010eM0OE_4kAq0G00e000001S0ybi40W81G000G000OMV3I4tWYYzOlV3W0000WPYsX74
+j3FO6PcHLgIbPCJqLfgeLr@GVe30SJ20mg2uc2inD50mPc0W@N10@z30kf0gQr0yH48u@F0q
+D50e770000000GWh000V8210000ydl0SJ0000eu60z820w70_700m4020000mV_2mLBUp0h0
+000u@FQeB10_V60y@V0000OY80euV9000Vaaj10FHpTGYcx0@Ct1x1k3y3S9k7uGqSG0We30
+003WE060C080O000m000cdm006040C0C0m1O000m000OE000G100W203YH0608040ewV300e
+xD1X12030104043G2f2OGM0F46k1pKpmzQ60040K08000m000W0000G08eggGGLLn@PcX@1G
+5FyWW0uV0fQL0wH40qc2SbL3u65WmDA0mF41WF2000000_l70uH8Cp44u@F0u7H0mD@2WRA0
+0pC1@102OW00IFm00000WVq2Q_t0t004lzb00g0GPc0003C0iv61000_pN02m@@O000F004H
+44m3WerDuLW4EYNbEv310005m10WXta8I0Og8d10020d9P0208W_ua8U@Ac7@XhiV000r_ku
+CiEY1PWpmQ_RikD6JpAHI@UW00GOnVF02K0agtCdk4Y040Wr@U8IXD_MlYqUPGd00mdv9Stl
+1B0RmexCqwU5VwNndk9iXj10K00oVt0000G80000O12Lsk100828000000900GGW06Y001W0
+40010100W200400I200WG00O0LYd00W_V00000028004000eGeqA3sas0H0002030WO00Cxl
+13FR01WWWnvJ0100W0000001G0W000W00WW10000110H001008GW04sZF10K04G4010190W1
+000GaG4Y200a801TsRW00W2G00G00W20004848204H010W80GG002020K00200028yD30agG
+q0d1e00010W0ill1NeRGwr60g80u276YNr0G0008000W308020G04Z0000aWWxDG0000W000
+0210hxPmV_60G081000001W100nWK8201W08yQe100020020Z0CK20i0002020G0881G0020
+0bnl12800000810G00000js000000Wa208000G0802OmY44000GW1G401Wpc_60440040000
+8WG20000a0W0001000W10C04080KY0000110I0W0002400H08000G040wbV3800000502004
+0G2X000000060WW000m02OX130810zml10G018WGG0008200A00L2008A0O4002wF1GX7Gx@
+R0K0080500@@R040G00006z@RG@XO0008uZV30060W000W00801000400W000G0o0000004W
+8Y000019C0WnvNHpz900088z_4G402Srk108C40004W1G0W00W000081310042000500100e
+9T3YydXvvDeYT3QtN21000G010W0Y20b4G0YWW0A0008260W8003Nt00081000008W0aNW1l
+xRmKtI0G0102em8000092004200kyt0000C0000Cm00011000nW30G000G0G082mEOoW4hDe
+nV300024Hb1RNYnQI6iHg100m00G0Wm020O7a4G0422000W0001110W3BC8i03gvt000020W
+00c@8XqyDG08G0010uRvJexV30Eo0CGN200040800o010u0V3kOFX@mPOez7000120002040
+3000010880W004e0000W0W82D20002G080pxdmp_6SPU2ZrRmz_6apV2JoR0AC000G00G0W0
+00W0ygd1m010ocF180G22840lwAXO@J8EK9A3tWKlCuFS3WW00yFi12X44L20H8aOG00q88I
+0242I09WW42QcFX@_D00030200Wg_D02H0A0GW08004802aHZ0WW2042h4W0W810140JW100
+Cm00000NJ4004800088024H480aG2O6Q8P883oft000GW08G0Ynl20020a201W204W8141N2
+83b5020LHG2K61009002IeW049a0G122CG0xZR090001W002H0GQxB1G0W001W0G00G04020
+WH011H8G00G0YW0a0400042q005J51We03C3000000z50012GW0211Ga100401244040008g
+00O2@4400000108cv4gfE10W0000140002000Y008200200HmI00W2Y400W0000400054100
+0G4KWA880W00GA0YG40000aA1822Y0GAf0G0H000a201410010I1G0A1n69W0u0W80eDE3s_
+F10860RGOWo10Wl@POucAQeGY0zJ0H000000A0000004f001418W2008000Y0WUwI00Y2010
+04006O00A002H5ee2008W00i030G120m2C0850W00i0I1002G200W100vqR0Y00WmpJ0Q000
+0WLii1I8ts4290ZNWzW0W0000W0WY00@tPG@k6040010KG0nW14eZOC4G00041WW000X1900
+2ZG0U0080m3880WW3W1008400000H02E09vRGPmC01000Go3mR@601008SO6cqtWa_D8MU32
+@l24800NZR00000110400W0k@F1G040007040GW8010G2a00000I00H4W2W08000108201K2
+024K004900G00002W0W00WG88KU@60W008BF3Q3s0000WM300kAnWr@VOxV30200a@l1FCN1
+0I00G000G000G00SMFK2pbQ0000n_mD0002403XU1W8W0y50oYB1026WUX_0W8W8w50Y0002
+8m08245Y00107EN9XIVP000UPzy94rk1X@omJpXCfg1FkcW20000rI00yH40ullu@L3mV0WW
+RA0GtK0WU4W8fgAHxF0_tV0CZP0O6p4TLgAw@0GqgIbeLbA@dfCUu1gym3Y6W@1jg70mV@0W
+FYW7000V4n3kQ00Cp40wV000GjB00LL1000049p4000A0A804J008L10W3f99GV30uc2ucC0
+mL30W@@3G008080000O000e2m0n5W10AWB0bGM0AHYpYJ29QEuIqy3Wev7mFH7mUWF0T050w
+0204500oYBX0vI0000Ag000040004080O080W0m81x4QBtWBMJubw4U1WXirD0W101038A0O
+06000C000_920ta00U00_GLgSJ1EuV08uCpGm3dXW@101LL5pSu1Uu10yF02wX74qVp88LL1
+GPcnCU410yV0te00lH10kA000000ul_0000mCJuXFY00FS00@7000wyxzR000uG3SJ100WAQ
+Y_1tKG0tvbGcUI0000000U6m0OL1Sr00ug10800kuD3dsRmcbL0810OxRL0pW0itz3LX7o2I
+Lahj47wmmGH94mz3xtRmsv9G000O_y7kIoWWKC8dy7gBlYQhJG004mVUUih79rXBHduO000b
+Slx7MI0ZIMD8lT364oWgtz0000oNtCSht61oLHOwC0go0eeT9M6Kb7pnOV_4000WK3l1Dsd0
+8W0WIxD0G100W05WrGD8t_40W00qrj10GY06lt0000i6500wmo0G0C4xkR000400804000G0
+8WGaSj1XtRG9w9000WOCV3wgt00000bXRGoy608000GO0000000044vwR000W400GGvAR0O0
+200010W004Eqt00G41000W00WG08C2000G48002G10KW0G001W01m010GG000e0000Au000G
+s4sWWhD00010020W5_DuSR300440W0W04G50W002G000040800W0000W00O080W0800G0W06
+808000A002Wm00W12G02004220000002G08oR30GW0Sgl1W00800WG0800104048090002m0
+41010W00OW2484000G48004G00OW43001O80010WGQr60Sn000G82000200OK040008000A0
+0010G20100008W0C40Qks040480I10Z_sW0nD02010H00GW080000G0180140000G04e04mm
+NV0000qVR6G000W400GUy6irj4HxdG3h900PG10G000005000u2500UWyXztDO1V322FXJuD
+00010001WHqCOrS30020W0001020Gjl6Cmg1fCMKa085I0a19y@F4@tZn@xWyVEA@V3JNNeN
+HGmj0Cj1eRWVolv@xVqQCR9YlFXwyP8RE6_3m3GB00l_Zn7QCqBTB@iQ002012000GW002t_
+XplJ001500I0WdzD8z@48410Kdc14040w@t0000SM000QPs00000G00WIetWR1C00040028Y
+IlVuLS3e008Cnf108X02ZC10WG0PcR0600XVxJegL3MEdXNoJ06X0md@644E3lbB100DWa2I
+u5O3YrtW2uIG082GHSL001081T38G00aCU24010_zd14W00p@@000YWMjP83J3EQd10WH0xK
+Rmbg9iuU5ZcR040004000fucmrxFS@k19pQmXwI824W0000W002G0040tOR000801H00000G
+140H0000g6O3Ytr00401800He04001I00G000040000150011H03J004840508000A1000vS
+R02A4XWMD00010420m0kJu6T3W060802G0X4W00GXW49C0000108WYgWPG48eX0812W00WW0
+00W500koW100009140GG8G000400Ae010O0G042404XAG00Ke001400000a0W0000OH1WW20
+013e3060180GWf_R0Ke0G0G0000os000K8aWem0200820H01088C0W0010Ced108008W00Sf
+G2a000880000Y0008WuZn6qBk1050e4I0000000002Q4T60G0850110e0040000406G020W8
+46000200a30WClD01014002A884000W00H0WGW10LX444609038212G0A81H0001AW0000a1
+20O0000c3000o4IYG2G0083142G00H0A02GW0054vl140m0Ezt004G4000G000e00022W000
+260000000C000010001020WA12W000482264Y00000cG0ubz40800006000100G80000W08X
+0SGW003020X420mCs6000401004000WnbD06080000004WW000C0GX4005000001O00WcJDW
+084GAh98000ycu4Umt00001GeW08e01000K00200G00800000G021800CSd1Z_R0C00Y_0Ie
+F5Fwot00200404G00W00004180444004000001n10100040000880W000007_d7mmOz902Y0
+evV3000401028CF3000G000G404W0050W8zD0008908W01W000008H120004000W0680000W
+08000052000800eQV3Eks00080f@RW0000G0010200004O8G0I200012400m002a04CCC1W0
+008000220040020120004ZS0alT2TId0000fjyD03200004aQSD02W4Hl16iuO2000K0000@
+bh1210000IO0G8W08000W02Ws_JueW4szdXZ8C0WG0my56000I02204WW008210G0800Y000
+8039WG30001000Wbe00GE@6081000eG0KG000020bLR000000G80LAc000O008I8v@R00C0W
+vzD011084H009A094G008120I2088eT340240040em_4Yts000400W08szt0W0000A00W040
+0008000YHLs60Y008AT3W08OW006020W4000000EdPqOGl_600G0020240440000000J0G00
+00400020040G0WXkPulx4UUt00W000304_vt0820G01100KWK02000Z000W00WESI8nT3oct
+0500W020W1G00040G0o40041192G852H88e0Ye0YX95134aP8e4O40G0W8118000mS1u153_
+Fs00GY0048G410082001g00490OA0005m8421001IA00010G4a1108G4020W10008W002000
+n5W001aC4m0Yg283K0G01W0GG00O04000G04020srn00004000G03012000140C00A000200
+00090a0Y0WI80HYA0GAY85I1W2A48W1B0X41P101458e00n0X04DW2580500002B08000041
+002WW8000982W02W00000mX80W010W34W0000n00001480401GGKG040080040WW8ulV300f
+0G302GL4400Oe210O06GfGXCI5I0000Y0100a2H100Y0GAf009H000a20HW80000IX8a8XC2
+9bK88200G0G1W000GW00K00W2MhF1002000CGcpF12200820000an3AG0CKR3_tnWs@J0W90
+mWjCy8T5lnp000G010G00C0GG0050000085W50A00W02022C005800i200K00Y2298200801
+0me908000mQ1V300I0m800mH00GOA6C0a10000100Gaxl1W6M00G60qgV2FyR000Wa0S99dU
+3YyE1002100a0WW0004000g044005000K060f1W0Y210401ei8Y1O04WE20W538000823fC0
+1Y0020G18200Fim00080020GPqp0000QI10000008300afV2000WltkYOpb00G0000104400
+00001800G0000303000D0000W0048004f008040Ga8GW88080001GW8G000W41W01G08I0Wz
+@D0W09000088000W000008A00000I40W0400W0Iap_d00WonvxJ8jV6UMN2000G000XG00W_
+qE30Ga60aG02600ec1300000848J00080S10HW8W0040YtEXCkP0zX08m0y5m20Y00nG0000
+G001wzNCkyt00@Di000G0680qsa10W81wBdXsYh8pR6wacXy0CW0L5f@08QPcHLEyW7yG6@3
+We@70Hdf7Y_F04jgKvX@0m@0uW7UGq0yFeFy70kf00y@DytZ8egA4mD50e@_1GR6100400jf
+0V0002001yX80u650ug000Wi500SyV20u70000pO20@t00_lV0000C10XHd000O00kQ00yH4
+S500W8Y08MQ30G10QJ10Kc8S302uA3e2004W@T3Wx2K04r008c3qnS7e3eEmFmbmUW7lj1PS
+pWz0BHc3KY8k04HS1S1m0o2G1WHys60000K000e0m0mCkP00G9A000O400m801GD020anT2f
+IP0C0C00000m000ousWClD000W1020WK1OG0O8B1m0WWlD000_00ND00Eu0_8pC000gegg4q
+3F88LdHGPcXWKLbPaP6@30LUm32_F04KLp8uV00mCbnChA00_t3@z30hg20_@40ym10u@@0W
+7HmCJeW@_2GCG0WK5000uz0C@l12Or00000ull0CD13y820000ko@@000EO610u@k1mF1000
+000@q70000kxgFkD000C00p410khAkwn7y@L8u@F0q7H0e730000e01qdmXr60100OMw7Uqd
+XWuau3Q666ZXRuaeBE96ooWKhb8vy4000G4pl1veP0040Wz_D0004GvP64lj1TnbmL8L0018
+G0000440WSkD00WJC600090G0bSp0000YE@Duc_4Eh@14WG0G8000011qkD3xidG9JCarl15
+zd00G0WGmPejR9Ith2GjD000W1o__10031HcN1000eouD00180400WS4COhj70418CmV2Z2n
+0448WR@J0044m@1CSXm30004W024001G018000001000O8f00w4VZrugetA3sXZX@tDOaT30
+G0I00000084H2w600060004000CYWiJ00Y0W00WWkrD00G005W00100401G0000GG01Gb404
+10mW00000840C4028002000W23020000220W00C0402W80008800040G0180010AlE11G010
+0220000W0W4K01800G0202008W028G00Y00100000G0Y8G00W20W0010C10224200000a080
+0Y80G2400100480302W0AW08A12G8220m0W0008001K015G08G0m20400G0YW0281H40G739
+00aWGL04Go@60208043Ge002e5vD0211W00W00K000e00W001S4U204W0080eqga10204001
+4W020W420W0YGO0CG0g040sis002208e20CeG40000081001021W4002W00002C0800G018Z
+00O025W808008G000062I00Ge0O520600W8OCWGWH0200GC52000024010aG4L1801800400
+00iHH081W08W0G000106lb10800V0p008W01uR000G82G000W240000ycd100044W0ZO00AW
+GJ1010G5G0200HK0000W0G0HeCV30G0O0010W000008G0000300GC0012izb100W10100000
+KOVV3M2mWB_DW020m@A6yYW1A000G00000mc001G0G4800GW0G00010700W24000400XW00K
+00D0c0400000510W00G4820144011WHJV6G000400Y0200000a00000@Uq00W8GG020wPC1G
+008000G08WeCvl1zyRW0X00002WJoR0180YN_J00W0020040I2401G00400000G0G000WY40
+00000048cy@1e0000010Yed1G000G0800e00CoV2000880010040eLT3000G0191004221I0
+40124@jR06010W0WWo400G2001a8Gm00003W8901010W0C18000CW0G400m__9000Ie_U600
+94000020041K1G00W00fmaGm@L4Hc10G000W980I000401m@@60G100400000WW8BCeyV340
+X0100200O00S2G08X9008H00100GW40002ae0G16e01GY021O4G8W012GGX803442000IhhR
+0100080820G00X00810040I8400W000W0000_FH0WW03408XqA80000G4YeLq4W0GW4wk17w
+R0000000030W4041W2010WG404ORf90002021X00G4000C00810G108004Gu7L3W44100400
+0019008042080010MgmWFvP8XK3WH000eK000000GrY00C00pwO0WG4WvvJ001GmrS6ikQ2G
+08mW1001G00100W0004WawJ0W00040002W00NXO002038200Yf00LG05ZGC2WGK8280K9Y40
+2YOAXC3Am8GMe2340W04A02XG0eeA61105JA00WEbGGXz600G010WG0G0081eX08g0WKWW4J
+2042000c0q80500G09m0wKb1400HJEQ049I0G0G00000000H15eG1m12CG0002050dtR08YW
+00W8G00XY80330248G01G020G022YGqW220u8WY6020HKXXG2S8e0OW8X8I0G00WW281010g
+OuX8HG3WaXcG00G2P6020020GYN6000001CG42GI0490L00800HX02002W00200WvV004GgG
+020WG00022SlV6G0904Cc1L0P0080058824XX1110HP000ib33000i0W8A04000G090q0W80
+4WW900000084W00012m900084GAAWG4300f00Ya0WG0GA1OM4I00185090I02X0G01G48400
+501wc00I0A2000W400Uw@1m730RabG_HXasd19ZPmoGC4hW1DWc0000800080100GaHW04W2
+0O010G0e01210004G00O410G01G0420W2400K0hBQGbhCKDO29wQ00020000SY30H0010zch
+18400AMhYeWD0A00001GWzTJ87Q6000G200010G002H008000080X010W0G108M0300G00A2
+00D010020016G40000C200GC00g@43Qc_XhWD0000ual6G00000mdHMe9Kna4X3B10e0a@@J
+0008IYr6W8K00W00m7nC0040002G02G0WAAJ040005W00K00WG0400eG020G1G000100G1G0
+2000IuwBk20200W40IG0000yL0ecu4GC00KRB390QGYo9KEg121G0waw12088840400G8C9X
+100WI000GW10401W0520G0KV0000K7G@5404qV102HWG0O0084rk080Gg3aH2200GY0GsKC0
+08100e0o7n9aVS2Y7W20000W104u@@AYsh2800000I0010000G000GWKRh6G000eI03y5WRI
+00000@z84kQ08yH40yll0uZt0mD50WFYW@ND0V412_@30TJ10wn80qc20eL3u300m@k100kT
+p020egK0mCbW8RI0L000@@70lf00000006e4100200000V000Y8Y@@D000y70ND00000_700
+MXp000000u30z820wtT_700yl@00W@@Dm70_g30000yF000000mL300004040000C008w0mm
+y3e3034_c14500O_10my3qXv7a506mlK0C0008g100O5e309kPGzv600WB00040C0C0G0G0P
+nb0WI5WK1CeFE32rc10404ffRGSs64Bd1203WG060a4T200m000Z00302GI0808000O000az
+70z820wtN_pZ8yW3_u3H0u3E0mVD000000@rBNz84cP21Sr00yg10ugV0mD50WRAW@100ND0
+01E810Iu100W240mC100mJE000000eL3uXW4OeSv70m@@1G1B0WFY00010t000kQ00o_s004
+100000002Vimd100W@z7W7yMD33H@mOyUSY33PYd00140009pDalnoyOKBM5XLpmzsC00200
+20WGxs6qT_320W0AEF11W009_PmRT900028fD30SG0qbE6ZPdGht6qCU208010040Ke63000
+0kRsWeDbOlk46L0ZmjnuvS300G0100WFFWD0080SuN2japmXs6y@@3F3Rm88Fiwk1plaGjvC
+4Tk1Nnd020WW@rDe7T3Eat01001001000ezCCU2ZapmdBLyDV29TdmNzC4yU2040101000W0
+0_@V30G4404000001880000640W010000G0G00urU300018G80CvU608W00000G0G811G020
+28004000KY000032004WG0GWTmJ000010e0024G4088040W0I24400000030G0HC02aG081W
+0e000OwU30X20cFg1W00000400088CmU344m0102008410000GG0000064L4000GW000CX10
+1202400m100f200z@l1A00W0000G44G11000W00XFxP01000000492G1VocmEg9000801002
+420G100G@hR020011G08080031t0AC09N_P0080012000X00WA808020000mJ6w60K8G0600
+1C0000020004001G322001WG4049D0G000W020000LqfW1280C08W0000Z00040000G0010@
+RP0940Wk@D00GM@sG60WG00W020G18Wo_D0400000O050Y0080C01W00W00002G0404424AW
+00080WI0O0C00000010O0G009W02840WKbhj10W2001020G10Ot@400M40000X0W00800000
+Y000800G0400f0OQw401104vl1dBR0104Wl0J0WO000100mN30O0G0kqoWD_PG0Q0011020W
+2004008G02004004108G840080GaW00003000000W800800XW@J00IW000W2e000xdyGVuFy
+yl17wpG6lC4og4000eW3000W00AIv463MYl@DeoU3W8H000000400oHK6qnW1lmRW082WjGI
+uUQ300C0aoG2xMR0WW1000100n00gzNYE@J82v4_@F104hkbKQmES600a00024G@@90002G0
+8W02000eW18XYd000AWnhbej03m080yjI2PidW00WeYaJ021000040008G5_RmOnFKvm39jd
+0eP3WFpJeqV3kAnWT@D0440K6v9002W0000018G020007yRm3@6000800KG000G0K410nlRG
+bv6CRU2DlPmxq6irl10410__sWP0IuitD0000QQ4182k4MY818088028S8028KJV2022H00G
+02400fbT300G0W080000W0K00100W0TsR000WWPxD823300K0Ktd1Gb10kOr001520084083
+003060W08mWhLq0V2200040010G0000Wkg0BW082111eR0a020040100X2004000i2000I02
+00046002C800C400G0b0YGW004X00040820102G001WW02160008G02800090G028Wc00OwD
+3IGFX_tD0020qqf600G200m0W0WAW9lCuBV30W000010OXU38300Sd_30HE0M3r02e0008G0
+gFr00004205G0001A04WG084000000032G0nG00A0e08800O432400G0000G004G000002G0
+0WY02e2G41244200XK00Y8000a9bGG40A9YKa208e400GA00H4G00G4019WWI0GAf0G4G0c0
+aQ@9305200H00u2S300K0000W000050W8000WKf@R0000KW20Wz@d000H02000K200Uir048
+04I008GaK200WW004A54G80500f4000e0f0i1x3WC20100IH0000aa00G008W1004042LW84
+00G0100H00004040O00010YX4902828W00m4508020q4400000G00A8ss4000Esxj10210cE
+F100hcZVR00010Q200404G00040000110O8000GW04H0GK0028102H100WGW0m28G908t_Rm
+tz60008iWV3061000G010G520WI20100mHq000O8GG72W00000C84Y80008W08AW0m407W14
+808WGG0G1x000W04400004vwM62ep000000H08svt0e100WUV208G00GWW0W000000I080G0
+114W4000S0G0m000K00000m10000KG283000H0GG4WW0WH1U000040010000O0G00B1n0G00
+0048G40K20GX400001001G00G40200HW60W0G00GI40244XqltO5v700002BG02020qzF600
+2W0G408410110W000000040YA0G50040080G0WG0080Wcto0Ga20bwPm5N60G00W041002YA
+004008q8GV000GWT10H00G184041z20WHWsBKB0005eE0W808K0020YW_G0m8ix5w501W0kG
+00W2eC0a0000W50m20001SGQdt00808A0W004A000m_60L008001080004100G44900010EG
+a000G0u00Y000108082o200X0aNeE404AfS0W8skAXJyD008520000GAm0082o4W0X0eN0Ga
+ggYepC3@@70Uu10CpCHxV0YsV04j3F8Q@1m@_3WgKr1@3WeP6pGVOF_CSQc4vvp0G_7W4_D0
+87U000u0@3Ga_7WeTOLHBpCYcggKbCpO6p0m3U8wgKLq@fge@30G@70g2000FyGuZ80m7V0m
+718mV30mX7000KHLL5f7U8Qg2A0Cx008_1wGy3q1e7e3G1OFW2Wv050pT00YO0TCt1o0g3y3
+K0i780mS000v700Y9064N0400WkGJ0n400W90100020u00000O00007000dz10004000T088
+w0O0W1q1e0e3G1GKW2We600HDWEYQ0T0r1w0A0q1qe1C00YE0@080w0I0bnb001004J024TW
+a0m1w45W1000H8200avl1ttbmj@60WD50000W@_1mN0U8dLC_Kt000mI@Sd00_820yH40u10
+000F4id1_Pr0SJ10ug10qL30Gow6uH4k100yVwq9uF0L100000_@H8yH4GuZ80uD50m7388j
+Dg9Waumb00v3mjzICcD3XVdGFv6Sci1rr@m9_6S4j19bRG8I94N_32000M3sWg_JegO3Qt9X
+0@D009Wmiv600040000la10WhpJu5U36GmZBrPu5T96_aXQ4s0001m6v900G00808mW@FCfT
+2000000S@z_V22000@pRZWsJuxT3w6DXQtbeT03YmoWKmV8zRC6O@XPsPG00008V0WGmbuiT
+6IJFX5vDW000GnkFKzg1FjRmFw90001W200GPz90001ivV3010060a1mW0000002GG00006G
+cz900428tU3004H000XuxV3000mYM0000010020YFyD000G0200000WWreP0800mRyJ00041
+0WGH400W0000100I00244200uL_6002800H500c800880RTR0000880400400000XKwS2000
+2020G0000200X01020GK00020000G0S@W1BydG_K6KXb1W0000042048008000W00G800G80
+0YwwF1002X5MPGlh600G0G1100014G0G000WG00004X00008G8101G04GX04080002020K08
+lP3G00020640400Kv@F00CW04X00000004m0W000484W00000Y00uzQCaVh124080CW0UXl1
+0eV0120mS@l17up000400Y3W0G20oPm00000W006K10Gaya1m100ouo0G1AG00040I03G000
+620me900eiDJeEx480000G8WuVF3out0G00We00000G400800002mds9Sza10W002sc1000e
+M400000000C00GA00010002018000000KKWV5004E0201k0d1W80150W08000G00W0000G0W
+W00200Y3WXR@te0IIQwt0W00000qsdbJYbAbOES64010yU9308GCW000000C0I00mi@F0000
+fTG3wzpWDhC89MC82004oB6YJC0kwbXLpCG20mmh@9800G00040080XPZJ08GW000210Y000
+G02CK20W4000000G4x6SEE3tMOGy56SKb15skHicR000WJO00mBx6m000ult4onsWfNIuvp7
+swtWLsD0010mi29CjB3fw_0100WQtD8lOF62bXZcJ00GsoZALC0l1Fmp0800WjADu3V3Q2tW
+mzDe0L30002030GCI_4sir00W0000GW10010G000200uNqCCe23dmQ0800W3YO0000KG3608
+F0ekU6C000G0W09VL30G001100010W000W0008GNzR0W080124020801C000G080e1mWI000
+0002O4001W01rGD3@wa040000G0200K8IdqWkYheaBC0080000WW40Wu1@6G110egV3000C8
+040080GGJg6SJg141X0oLtW38C0280W02808WG18008ee2300200330044001040pyR00WA4
+000000AeMct00094020085084eA30820o8tWmsCev@40W01a7G2000000iw10200X0000400
+41004H0000001Y04ONR3802020b4X0I104K22080000I000920G00WIc25104GA000a200G6
+0000f200HW0Y40A0a04W000kjsWSoJ0X00400100460nmcG3_604000O00000X8O100004GI
+cB1000001B02@c1miB01qo0G0000G00G0400G810A10X0P002004W0G0800e02008400WWWG
+W40W000080X00000W02D300G15G01IWP800100gSqWgoDeQa40400L7U2Twdm4z600m1eUy4
+8e000C000000mhR90000X00050000y300NX@0220020080080100W200K00W80080000C002
+0024m00u000G0W00X000110086GOI6m000X0000220WjpPetv4000G0010ewN6MntWktJuHa
+4Yp8X8GI00G8wE4Ca7K20GG100a00211ew730GA08Y00040000002G0WAdhR00A000GG4Y00
+8NLDXVqJ0GW0Gvl600O10010cG8x0400HG101G00280000H20000004T0100040W04000000
+2GcJ0e00X20A1000020G000104000W500C0Q01000IF0e0000080m4@6800200W0068A0088
+0S0W800e0040Y0r180G0rXK0I0W0020WWCG0m0GQ4wT31fWzN0WG0821E0020P1000GRZYXj
+m4QyV3q600q@V200WRK00Lfg8@pCHVe3YMLgCJcouV0eILL9w7UGqg2WeLL5HVu1_@m3CpC0
+0W@XEww4000Vi5k1jQd0000uVtCeuD348n08GG700WV0C0P0O000VaO00100WC000P080o0G
+0W3W000eJF560000n000C2a104W00089000m000GKPpV3C000A080m0O000a1K082e0Ga10W
+e3G6pFWEWE0T05WK0OWe3e3G9G7W0GI000YpAt07u7n8OF0C0204Ok1Du@W00GmEpIeXDR0M
+G04fm3Jxp000uA30mLdZ@00_828Sr00u@@08Y@1G4H8eT623tW3qm8EHIE9L2000uU100Q67
+Znmn870EMeYXjUV0400002411W00tVpm7rFK2U50qC4w@t000I0DxNnPjC4sl1@wcmFtCq1k
+71xcW048W7AzewV90000BA10eJzDISdXUsJel_4MMgY@VD8ty7wUtWalPuwT30010ahl1Jed
+m3LCS_l100MC7bFXamb8_t7o1OZdwh8He4QptWChDO5T30000I00G0004GhN6asb7W7K0Elt
+WKbD8Bv7k5p00008JMP002G10e00AAW8_jFXOPC00G00001XfTDeqD304C0W0a00G0400000
+04IG02020501020G0C01Ge_60008G00020G008040000WkutWHeI0G0040010804002W0000
+mJ8W8ebV30084i6l1bYp00O0XN_Jui2300108040400400A014G0020q040e00GW20G01400
+040101000004W0060GW404md@60001401000004GK1Gz@d088W0100060W100000005euz70
+040Ckg10W0000493m008o730820qTZ1f9p0080G0000014GsXt030m0201101m00020m004W
+00010100010O011W820200GWGzZ9i9l18000000IG00000230100WDpD0018GDa60G00eel4
+kVCXlVOuZU30nw0qtV2pv@000800GG1dvpG_W6W44OuyV3G100G01WW020ukz6y3l15X@mqz
+F4nl137PGv5Xq@l10008b640KeV2VeWHpSRaIe1RUMnA@60001udG3cwF1000220G06zF1W0
+0WRlWn3@60WG9Vjb7kSH2OW00ZLbm@@Ca2G21oPGZS6KLd11RAndp60a01W0Y8mow6000204
+20m7xCyrE3TjpmzS6is76G1000020G204W0YmmkxCG2000000W0Y0WgqD0000HSY6W0A08qX
+4gVdXnsC0I0G0000eTyD0GC0OowCioz3pOaG5x60500ugV3oHQ30W12dq@0G4418Y00bkR00
+0040040001100100W0200100401WOoP000G0A048000G00040084H0H00DY041W0080W4V_R
+0000mqha8dS3000000u1usM3010WSZV25_d000Wm2rD034Gq0@90G41000000L0HO9000008
+001G00eG000G001222007BCoGnZ60200G0W0004000CG04I40810010400404Ij490080yPY
+7MiFXNzD0iU3mx_FaAF382800018H320Hm0Koj@CWY0H8x130W0000002004380801400200
+140K0032100W854J08000Ka2080000GA8Y00000GWA10e402GAe4040G00W201002010G100
+400000K0qel10810wi@1000mI5002PBXd3b0Y00004GWqCOuzT3850G0A8G08I1008580GcK
+0mCOeK22GAG0WI0000088000040a20010W80010Y20000400M8tpP020W9W0004501Y_t061
+00Lz@G6cI00m8ETF9U_F100G1000e02800WG0A@@404W000Y010W10018AW000200e80800W
+0900W0o6k60010Y2m1404280GW00K0040140600W8001G0222G0WiG00000Xe0001GG41088
+8000000432LtWeEbObV30p20SwV20K00caz10400088000O0iWU200W0G8000202000Ge88I
+0A10WG0CW00u0G048002004K024000W4WG2UC1000G00a050000W4A40001W00000H000W04
+WW0W0808U636n2ZCsD0000hP00WLhm8L034a200400wea4k6C1G401Y050012WI00WW008Xa
+442e0W8GY001R1004GI102m80048000z40GW0O8qJ0610WX000G40024000s808G0A5O10Y0
+GO0y90I0W00000Y4WWTcV008000Wvz8XO8Xp7000O10000045GgU6SHQ200W00I00042Q1z1
+00G1@5041444WG0G4KB00011E0mbwL0002_gS30GL100WXXg0WHvwUSFW100000D000sg1uR
+V30G0v5rk4qfF00WR@xE0@oF0_Vi_F0W7UGa@1WeFyWiuCm@0eIWv6GL000m4a0oF01aVGM0
+Y0k0KY91e496G9Ik3IaO5m5nA8BWP0N0Bnr0IYa3449c00041O282W0004IT20P00U_sW3YC
+00002000uyHC0G400G40X8QV0008e00001W200050g1D1008000W1W000OEG1WfW20pF00cV
+WE4T0T0w0_1K0q1e1AA000008uV000LfILL9ZPcXWLL51py12_704yF0yWgguX708503yt@0
+ILL00n5101q3W5xz00GjJyY60D00ux_A000Hul@00C00GM@9WOk000006m0eA410100mzb70
+0000oK60000_QA0600Bd_mX_UqCV2TWBnDrC0_s0OQECAnsWZoDegx42mtWimPuHR3AOEXIX
+UeBT3AwAXt@J00O0W40GWYoD0084m3u9qhk12000W0094QM2k000gtk210020050gl7ZXlDu
+XR6EAFXsZO0040Go19ie@340050020SRR25JnmBq60860uoV300yU6OR5JDdm5tFypT2p57o
+IhUqC_3VSpGjzI0Oj0uxUCG00KSG36xgRmNkCyuy3060W4040020010W0Kez9001e0W04000
+4G400001000m800G800408WW200G0W0Fwd000G00200000GRPt0000CO2000800qLI27sRGL
+oL4uk10001UTFXatDOUT60100inj1zkP0W00e_wJ02000080W8xDG080208220000G484HC8
+0010048010000uZaC8RU38G00dBk100y@Ejs04000htdGjy6W00801000804YF@J001800c0
+WduJ06000e000004Gh5PGVL64Gl101L0024022004G004G00WiwC00000C04WcyDW0W0W00e
+W@@D00eC0002mW5V00040g00WlpD08h1WG0000W82hRpGs_Caf83080042004gG200001200
+0G00ihx40440yxV2ThOGMPC001400004000G2800W00014G00GQW0DH91000002WW0000030
+0G001uZ_40C00000W0000FC10WbyPOuV36ksW9jD8sz48002Cql1G00W2ytWr_DOSE3ostWJ
+cD00P2G6uRqql15jRG8vF00Y0fKD62yt0002pnho38000K004rjgIav9SPL20080UlpWh@Ju
+4V3Ebd11290@dxnz_6W010eLJFI0lYeGVu0G3W880224H040000Z8211YP00200YP0y@l1NY
+M1000Ek0009jlHz0XqbH2f1G200Y000WWG0400Y00G4W00G40Gp764bk1BlpGCSC0088irXJ
+Iel2000Y00H0AqAXGlJWI00GZzL0GC000A0211K63G8601G502400ne00G043W00WbBC0601
+0801GW000010W_gB1WSB0Nt7oZ3R0W82G50WHP_FqgF6XWP0OY0510002G4014CJ80Q410G0
+0P4000220W00801W0ypU2pyd0000S@1003iwHVb6StJ508GW0040020Y8WE3_@t0I10a0400
+0WK00008Df@7s3t0I9502eG01WK01000K000500eC90W0W200c3n00G00Bnbm@@600e7AKvV
+003000f0eAT60G8PCLl1bxpmoy9000018DG6G800WG20rwdGq@64lM2D@z0e25WoGKPCuAg0
+tWf@J00Y0000700308X@@mCZ600000eW00b2n1IHa00G040WG114WW404000400X900tmPGB
+_6ipU2000OK500KJTE0W40000GW500uiO6W0006XN51aa0X1000101W0G201G002W00080mR
+Y64RF3TXd0000000JMvP7I7j6qhC90000000qx0221Rk00100WaMD8HS9GV1000mV1zW00Wm
+UaA_D0000f0W000W0Ptnd0W00WOuI08u2muejqq@3A000G1B0qe29VnRWF000O4H40S1D006
+Y0m@@101020000500Q@@R0m100o150d@R00w2WrsD0000aA00W6o310jrILvg0004t108i2u
+200a50x_p000c00Ok1G003e2000300WV000ZA00C6WA0YWi0W08q6i1000G8000X080OPT3g
+4s00026PuGIurO00004008c3G0Wly2vvV3CWP00W46m00K0I08100ui20GGem32uAeA8hT60
+0qOTt_3WEO0sSF7000y0e@p0W8uvV00mzp3miGmKGq9000mm300KE@CLgRmX79yIE3W80000
+000W00AR6C2pc104G0fPdGqsC4Ki1j@R00WdZNlV8_O6_zdXK2C8jxAG000q_E35mRG8wO00
+80OUQ3EP@104W03ZpmptC0Sa18ozDgQ@XOLI8xS300100800000Wmkv64Wk1@jRmSSa00088
+OEFgIE1e20097Joaoa4IV57XRm@v98GG0OhU30802G201W20e00080G000H9dmdxCa2e1002
+E7bt000040900YHd10520Ti@0280WkuJ00G00D00Wq@J00e2800G0m000040W080008W0uyV
+604G008080102040000100022asdd1000W0YG000080H200900000010140800W0220CUk10
+c7G000000AGShC3EvFXM_DelU36SF1000WL5a01400I80G8000AW@10188h@N1020101W000
+HW1000280140000044G0C00602000mG040W00484400H00000G0801080001410G24001000
+4_B04000084W0GW0XG3HCitd1W0W0g6cX0wJ000010K0eq_JuWP3G0m0S@l10028QXF1O000
+00201042ak@30401k@FX_@JeIU3Ax@100yt5pRmyWFi7E3D@dGs368WG0000000280GW000C
+00QutWevC000000W0G000OnrdGcD6yrV2hxp04004020W00I0140G4vF30020180G000W000
+W0000G01000W70UoO60414ZTk1000en@D00W0nrv6CvE3nUR000163080ztR0020WnrD0021
+0Y04WIHD0m00Ibw600069or4gnK28000000H_@F102H0lpP00W0WyzD8StDAYeYHvU002020
+G20000GfqR00008003001441aG00000W80Wvz6600mFOrqJUUq00Y08W4G000G02GB0200PG
+JJRq2F3LVpmrPISAh1t3Qm4z90440us@40l604MJ5loZ180WW2@C000amJz9yGF3bbR00050
+0080012Wgnt0G8000400o_Z100Z400G0H4000A000C400WW03W000028A0040HaW06W0I5W8
+2GW204W108000mau23ruBHrr600000008q8_60409000G0280HGH00JZM1WG00m0003hR000
+02404Wdl@0G10002040086029006Q00CG00OW0ms@DG00H4a00GGG0000W80804eG0008000
+00wx9_n0204HP_F04100Ga00H21425OCmH0040WSiej4000e0W80WW408YD30b00yqQ2XVdG
+Eu6GA000005000200W1000Af4G00W00aQa83800000C100G1000G09000WpT023FXN5z8cU3
+000G2I00002940Aaqv@J8iV3UOtWwqV8TUCG00W00000280580001200004W02000A400200
+GC@68000eTT3000maUx6DuM102940000m0Z40I00iHL2DGOGcx6G0000Y00qUwC4hh1HlRms
+@60410eJ63824108418BH3000YZ0201080W0A200000004Xspt0009u0G102sVZWOOOSV300
+2000WW01CD06W0jNsO000GW022X9@JuuV3gvdXd_Pe_V30G0080e0OXL60g00iMl100L1AtF
+10a40bAh2a0000G0402002QmWGWJOOw400I400O300W02K00WX@DewD30200020097S6000q
+300W0WX0ma_600w10G008GeU20000S000p_t0G220nPQW901WaZI8HP6g3U301000W_30G00
+w5008fT60G00040O8bQ3W60MLyM2z_d002CWVePWSG1eit302Sbwl_d0W0yQN002j@RWp000
+0mF@00S000Ctt3cA_@70z@F0GLf00WCz3W1yV@18pZyp0L0000yF0YKL000m400mC02W80C0
+WWrTCO@U304100e2G88u4000an008G0OG63m004W10nDP00ag00880q182W101Kvc104000t
+X00000004JmDoI0G008Yv74000808iZ1G003C3004500mU0Eza10000a1K0opn0eO6000000
+0O000000004tgy6eB0AR403Y@t000GE0G000W10000gw@V3W100gn600W20W8m3qj@D00004
+000c0Mn000O6y00000@@Bu@00oC900m76UO0LLb0wJ00eDQLsXqWQRd10m1HWG9a_D3@DoGF
+rIa0k1RyMnrp60001G004SKu90G80002000W0000e0Hmd0800WQnPOiS900G1y@l1WiFW27@
+XUhD00100009W2tOejS36FtWK_DeUk4g8t00040Pfd0000XflC8gE62bGYPVz0W10mSz6G70
+10010GftF00W08vW7YhtW1iV008WGx@C0G0810000210WukDeiw4008GyRK25cdmzr6iB990
+0aXtPLYEzJ0280m7vFC7l18008sIdXo_OOXS30001SRj13MP0024008G000000800bFU22Y8
+0gDs000G0b7R001GWQgD0G0000WG00480W8W000000G0X0100mTnC00I0OKr400050800008
+0oL@68800esy40010000A04000010140G0G000000A00100001220GOG04G420004G0G80Z0
+000000WH200080W201G10008KW4000000241808Y14004GWe8070001802K000e0Y004400Y
+000100108W00X050000W61KWY880000W2800G40008020004080801W000H0WD_J04000180
+0G0057zd001002042G0G0M7_102O0W92W014W200444040W61000020880W00800402W2000
+224102000aH02W00e0000100W2G40080G0W0ECpWeQDOh93C0A000GH60WWqGq9G0008VG30
+Y2102000000Y10000002bSRW0G1euwJ000G20080Q0X001G00W80i@l1fec0W00XYxDeyO30
+0W0GW1000000210aCyJG008000G0480Y080610202W000e09000X8200e008100420e02G00
+200000m0M4K00G40020W1GeeU34W00S3W10081QhdXNzDeZL3spdXQnDexQ9ojtWS_C0m000
+0m000024G018_qtWMyI0010nW@68280000G0020au2D8Yz4000mp4000G08Gp@64CV20300O
+000m200Oi@4wqtWH7P0000000nWBch0G00m8T64Vk1f@R0100e6qDeyU300a00G01000080G
+8W2yD0G008800aYqD85V3Eap00CcL9@dW080YunPuKV3W0W0q5V2ZaR0W02G08000008tLFX
+1RJ8GQ9kbF1e040PzdGX@C080W000100W0800W1x4R00C02W00G081004G000G800000Of4W
+@@DO1U30G80ChC3dgp004000GGGxsRmVw604WGey_4YZ9XltPOzV3ohE10004ZloG4Y64xl1
+IG0WooF10002I400080000W00800200047700RyRmbU904000191C82140W100264002G004
+1uE@4W004qAM2XNcme@60H20Ob@4w@t002140048000W00W024G42WWY040805_RGc_60O00
+001G002K2G0420604X02102WW0W8o08WG3420W0888004000e3Y00410W0100300W00W8010
+000004CZ1WYG241521GW039W80000Y0H080G080G020000AC000W044004Y008YK80r8R040
+G8020Y1_RGiC6i3d1JGQ0GZ0042n04008000WA408O3S30Q802G00040618W0204G000m200
+8W208G00340GW001000Y00G01G801000Gd2000004080200D41G000G02GO00000414IW0A8
+8000182000800Gsa90W00W0G0WA014001601G0cU8XT9P0008Gez9S4k1W20000W0aSl1VZP
+mzz6W800u9R304000G0010G1oVtF00G00000Bj00amnJ8DV300W000G000Y000420GG04zvR
+040G00040004G040008G2WKIDW420Wckbua29Ag91010HjWRm6d6a@l100080005100W8FT3
+_Rd100100X800A00000i8Sn400000A800041m6G6m10W26004W040W0000WG00080W0H0WHI
+1100022W080n0eW50GzmF60088sttWwyD0G200W82WBFO0108Y1000000GGk0G0G0400W00G
+W41E0GYgzD0O000088G1000hlR0Og30G800m00G5G04008G2K42000A8W0000012UIpWRuC0
+110060020800G0020A0C0K01040Ge403WJrD8XA3IfLY1WJ0W40G_B90n00ex630W80Cpk1G
+H045000W030uBO30001G400X80W000000c00000u11W8W100W90W0401000KW0X00GW00200
+Y0G00800GWyyP08000I8460410000808G4a@U20G00pO@100129mn0000I100GDyR0800000
+92000010i00040CqM3kat000G8W40002804JP20000GG8000Oz580000W24000040W0Ucp00
+42820080GB0K0V20002m0P2W00Go800G@z6W_0000W_Ioy94YV2ZqR00WEA0qzVHld00_70e
+000A3ik1uV000pW7yHeALZmCg6XPCB2pOcgcnCLLrVm3l80uVH08pY0Fy4XPcXvgg20@@70_
+F2m3V404000mrgA2ymJ40_7LhgACpiPOcv8KLLGmC00aEO0Wup3000000K000000000ty@V3
+000NxA000A0000UuB0_60000000nT10000p@3mM@C04100G501000ZDMD0000a200K2W1120
+30406W00801000208800GG0m0m0W18103G006W40209G0NGW0C0CI1m0W4860102000m0PG0
+0W100WB0304060908020G0K084000e00mG1W1W1KR00W0008200Gq100Z003tCGI0O0C000g
+000xlP0030WmmDO7M3o@t000GS0300kKm00UE000QikUo0p@F0XopW0000Ts70000H87W00G
+120W200W40001000200V_9100Ooe3m@O5004vl1U1000mSG100X200I50ouFpHiR00G0el_0
+000000@3ekx20000@YC30owt0F0e9000000WlU1e161000G4H0mH1O@V3chpWofJ8sV3Q@q0
+080GVoB1000mPlPevR60jj0y@l4000X8300Koj4psdm7hLijV2hGQ00G01G0H0zFR00G401W
+802000W00X8400G08080004001W000004W1q@j1jTcG1h6Sxb100G0000WW9000010G3M601
+00uN@4UsFXPuD0102K2v6CIk1TnRmmu6Col100G4UxM206G01UpGNP6yzz3b_B1500WOjJ08
+0000WTvZwDeH062TlYZrDOyy46nEXMlJOPR3gg91000180G0gyE10WWG90Q0C20000010100
+080G04000002oLy600e0ggT6MBpW@@D0ax3GWK9aTE30X00oNFX0MI0100mbU6S3l1Lq@mOx
+6000G00Y0080GesUC0000wdx600W000W014002000220G0ssA1m000d2Q000010004W00e00
+00O00cuTU300WG000WoIH00004aoGDW0020040XCVIu3V3c4t00400000X0002G0000004K0
+y9KyW1lvd00084G180@@R02X000280e10000H00G0201W000A008W00008001002808i@U3G
+01WW200MG0W020104000010aG4H00188o00142W18000000C@0O00O028GGCHW20W0048W00
+40C00404000GI10H000Wm40000WC010qSY100001010000m0W005100040G0V2Q00WW00G00
+NZP0G0080080020a0000X00G4m00041040800W00GmO02G000G0001000G06403PR0020500
+31GWW0480802800W04004001203W020Uno0WOEW00W80400G10520A01G0108001vTP00103
+0400Y0001465010200010X00WbTC0000400E000GW0WW0kPB180G0000G04e100100008000
+G40008T5c0021Ws_D0000840200500DlR0028WhiO00G04A0CG88WG24G00G0G0G800000X9
+GX00GG02W20X020000400201WG00100000Gaw0oWs@POYS30008X900eXy7YTCX2bb0200mS
+x9y2d1jmQG@w60020ee13Abm0000W00G018000200OsG3008u820086u40680aWl1004GQot
+WRzJeyx4M_b10810NjdGz@Cice1BcRGda9KWh1008GG91G0210050W008G40m000G42020O8
+0002000300G402088G000000028GOzI3Cnh00100000140201G0800Wm0080004W1000W000
+8100042000000YiIU20001disWmyD0004Hw_600W48K33cOt00804xPZ1400000aG0000002
+24@l1FLRmV_601080410444G8Wa0G000410112000ptW808230004O02200Y080a04020300
+042304000200W00TAV5024Wh2pWtpD0Y100402401209eRG5dCamV2000802X1MB_3W02Goo
+M2010000040G2Z00004G4000WOl7TI040W000K0000A0004WG20228P4GW0mTlOCnl1LOdG_
+@6000GO_T300500A0000010W0000G01zuR00120028X0080HCH0X000W0021000H2850G0HW
+IqF1004o0GgGG02004000X4W008j0e000We8Cm0WW000H002KCW0X70IK841AW0YI0OGS21C
+HG0800e2EDuPu4Ylr0W02GW080sZt000400G4C0WG1W48008008Y00WL4DW000uj59000W00
+00400K02100e000404G9080X0bG2X414100G8IWG00o200a000X60210H008K8X425SD11P0
+A20W81000Ev0480AGe02e03O0WGW0G449025015W88GG04CWeW100L480W000W80A000g_t0
+00AG0000W1009GW00DY8808200G409qRW02201220a200410000fG0Y450G4GA08YIW00XEN
+m0I10Y29W29aG4I1G120I50020m9uD0808K8_60800004000400000X9@R00I00006A42G80
+00100fI009a1002A0W104C0X000GGK00W000G_5IG10000W00f00000E0JzRGLu600e000G0
+02004000O00A00I0500i408W0008000030f0O00CWGOX0CW10YK000040008020001000WK0
+03000G4190WGm00000W88000210e0040iQc10CBC08G008iW22000004AG00W240YW06800W
+00KG120001Y100B1@0H000I1080100W00W000I8A03krt001000m0K0I0100G100002B0882
+061G03J106e0G8W3400402J0m6Y0W347w0t000200900440G8A00080G0mCW0002102800W0
+0W0804000HzQ6Wz60WOG00G0D02048S02G0000W0AWW80402001G000TZRm0@F00020WW0GQ
+L90480upS3Yyt006I00YW8904GKyl101Wa00W11028001G4DW020WI00200000WI008eNT3W
+00W6_l1I001_zt0002X00004WG1040G00G000W4@utDG400vGm9009G00GA40G80W000djmG
+w@90WH0G203GPx6Sxk1HgO00000008z20001qB0820050X0W8uE1002eSW_400W0x50Y0003
+WG0G2yN1000oNGz14000SuMG3000W800000j0f00080o005zR00W40200Y00000ukqB0000m
+k0Gq0600O10G00eGuE1000WS000MhFXKeV000GD0000000H6X00A2t00W00004804008aPYs
+X74j@0O67Um3U0W@1Gq@3We@JLHdfCY_G7KbgKPcPy50@3QGd1W7J70plB0UyR8200Wu30Cz
+l14m90zdL0010KmVM100sZ8q1ew02Gr100W8D00KEe08p500zP600050080lG40p1W0Ojh0S
+L10000Or1ct@100e20000y@C00000K8008tT3WrwD0W00mdv60K04p10Ok3qnS7e3e6G7G1W
+CW20H050cC00C@0wOo0q1q1e3800300W9000nE00YC0L3zR0000200WX0002400220C8K0O0
+W0W0WmmD00md900m000Wm803YK06080C000G0008400OO00GK100W0iDk1R_p0030004WPhY
+cW10G010102G6000400WW0004200GmjdpguFR60001mP0Y3O00m2@6yce10CG00W000mZ@20
+V_1YepFG00WudV0W1000UR00WuZ00YFF0y8200mk6sr0S380EuF00G000Qzc3K0uEt10Wn@J
+000OC00000yrK9p_GLQ6eX20GX40Kx@CCRZ1H@RW000an@Dutb4cGAXPaOuy@7000Gv900Ok
+U6_jL20W00@fRG9vCG000e2t7czq01080FuRW408WCjD0282W4W0WCfDOz93Q0bXMlJeWV30
+100040G02000G00W_mC000000WCZHOJG220mzICiDk40000m020quk1hn@W0W00G004PvdGA
+r9iJT2VfzGl0LCzi10W01kR@1WJ10DyRmQY600W880z7Emc100W2Nodm_xCqfj100202vrW3
+yC0200a000000090G10ZSBXgrDeCR3s@t0m008z0cGJW9qIj1zRR0000SK100TpRmYw642X4
+1tN1A00WWpPG0001080WosD000000Y0004000022002W05120000JQc60252GK18mRx6qfb1
+080G004a0002ASU34G8K00Wg0110mFG6W05007G0000rL80G00G00W0WGiPB31hpGpy60200
+iI03gts01406W0000G00201G0W00A408qzuC0004Z2W020050WWA040K000W0040G400800W
+04000000g004004184Y20W0CL018Y02W01K00XeW080000GO00000Y0IG04I0Y000LKWIT_6
+02000au312002400000Y04280000A50G4000W00m510000G40510Y24110102400G0000200
+81C002G0F50000W04000t1O084000W00AW00000A202400WW88001X20WW2W00A8Y00800W0
+0020000283G004G0G10012001f8M20H8WW2G208C181040G001100G09A210KS4KG0200014
+002400a04000C6E84W083yfM20O60AMt0Q50000W80W4082K2010101000820G011W0G1G80
+02W00WGx@602408SG3G002S4l1061W2XpWzBCG0040400830000100000q0B80000G0e80Wz
+@J0A00440WXAbJ028120000445Ax8RW004000Hr@@RW000A0G14000000GGLSB3@xRmZI642
+P24WK4400H030000804040100Gm20WW3tt0b000VyR000GWGsD000080G40X0G02080G40H0
+4001O00GP@600801O00H_@600G00104X0000a0I0010000WG4wl1W0000QT8I0m0000Wmou6
+0241OlC9W8008G1002W0Gx@90040iAA30100KNj1ZeR0808004f4tnbGDP680000W010Y000
+006G24200G0004W0J28092004182063WW80WGSTf1W00004408088OwJ3G0002GW0000CAm5
+100001G088W000G000QZU3w@FXQwP0200X0010004WViR021G0a100W40084010W0Gyl_400
+4001000202GcH6y5V2PoPmDB902009nJ3W000004Y000804100000I7lRGXd608G00040000
+_80012zpR0044WP8D8x@4YJs0800G9wd00G02800G0020MqoW@hO0200mUq6ihG200020010
+6VU2000400G00G0100GG000CWVxCuJU3sPtWzJC00028052W0IJG4000GB20000W00IGm80G
+048W02000G22a_@J019000000W0G004100108sOl1020WEnBX@@D0600GNz600W000012061
+0040G0W0WCX00W00101W00G4C0060004We00G00GWaY40G0WX105e200C60HK0W80G0GKW00
+g0000W8000040HW428201000020W44000000ueAY40607GCK880194104m0W08024XkzV224
+000010000261000Wm080400W0005e8G0600WG044f002020025000001y9h14800L86W0G00
+2D00Gq_9000e08mG4WY00nG0fG4KY880WW4GBm00340XI400I48c0011H2W0100H384W2WOW
+0YG01e20W4GHmX00YO01eO5000Yu41Y200020eGG0122222G80WY0vFd004G400G00O60900
+X00IG004G088A0q02000W10C0O04000004400G00KA08WK0G00000011008rl@6GA4000000
+1a2000000G8C000G000W22WG44008I1040000050C1I9000I100W40000G4800000GH0H000
+00210001G814G82W04080000SH80G00402000G44I58XKoJO@V6040000G000201D002W8bG
+2010000Gz2_30000a080000810G1Y00G4000801054200iMl100W08G810A80139g0700005
+00rGRWG840001Wrxd00401000800G4W102GK1m20000_11WjqJ000W0G00042000100W004D
+jV22W802tt0A00001G010G614O0Y000000WWRRPuUV3C00W00O00410GrG64qY1W0O0G0000
+0K0516018S000G004n0A440088W00000020026G0GG00080000020Y004W00m010100W1Y4G
+00008q730000W18000W0021004CClU2G0000W40r_j14000IwtWg@JW101W28008080G000k
+AmW8ED0000qlC60400exy44100CfR25vR00200000548082QF10G04Tzd0GG4AW0WG08508G
+040I000ao3mDMCail1t@c081000900G042Y@t041040008J7o01G000008o0r00W080900mG
+C0100000yt2001Ke0W0tnQ0gN1080g2e74002uZ00080804000WV20008T4O51001mM0eaV3
+00a0000850G60000HC000000a0002Ww2K000w0000AxGa88004kZF1K7W00006Ga04ChD3G1
+000G8GA10000C0mv_600_30000AKW4WPub00080z04G00000u@zT0000WxE2W7200@h008oT
+0GztukxSH1d0a8o1e@_70uP6WsK0ufhV00W_KWJ0gEW0iJE1Os_2040W20X80000CnmP@600
+m44W04ly003_1GZQWV_b7000G0040n3G7@9000k30W20tT70H0000000zwS0u4H00WY0Fu04
+000uEk7GjP5000Wx10000W300WKMD00aR000T0OOw0c3W0W100qHj1Cc00GS1Omy3m001W10
+0030001000YK00cn0g8Exj4000000YA00220CCC0O0m0C300W100GK0008L3000T000O0m0K
+1W101WA00uDV30o00Csl10808000H10084000800G01G4nAG40OWA000C000W1mMu6WA018c
+Q3ozt0000W_xF0000Y3O00e_V3K5WvhB0@pV0R6y00W@pD008410V410_82_0wh00000_@1O
+wU3y8200yy0G4HmF_n3GW00000m@000WPC010tT1WuY30uZ0p_70Lf2W04x@3g20000Y02Gc
+UefU3yq@T000SmNV18000GE_3WqL50000@9Y80OiL9A1@XThV0000Ktl6yo@3HYB100qkSm8
+vIV3o7eYumnOgR3UtE100800020Ist0G0G0ZavHSSC00000u10GStLypD33cBX000WahCeOS
+3Q@FX5SbeZWAIAeb8uO8rH9MMFXD6U000WGCt6q_v33_zGovC0000vyA30800asE6LkZ10WZ
+@4pn8r1LgA0ZeqCua_70100SQl10K080000024W0004mJS9CIF31jd0Gb2WgsJOgU3UUEXjw
+D0000300080W089spmFS9amE3ttPG6u60088uV2300KGX00020400W0eWjCOurR3gnt00120
+RmR0W0W001009OR00G0esVD0000b4100G0001zRGqn9000W0802K2q60G00G0W000000010Y
+pJR0000303O0000W810WqXH2082GQZs0W00mrNR0G00220200164AotWgrDuyI30H00q5d10
+2W0080GyOT29_Rm@26SiH2fPOmlc9C_l180G00080_Nc1000W0C000A020G00808100020@x
+P0W40000GGJxQGcz6G0800000KVh6ioC3ZypmRYCaQe1PzR000080020pAamVo6iuT20GJ0W
+0G0q163@Yd0800al@DOgH9m0e0qcd1bxd0000eq_IueaM_2ubU1yAl0U3cS300090000004W
+dpm@tKap9z60G00OcV3m300qSnabKd00000000dHSO900WqHxD08000Gr6WjGi4010004000
+0W0000OfF00KQ2U2000NZb400WxfhWtcu6KRB90mH0cXnfoaK9Ni4YJN20050Bgp0R10Wy1S
+A3d@l0w@Aa_V2g@Zmw@7m_l1j@tktZ@zC002W000000e00000000bI5qKBO000000OG900eR
+Ej0F0000W7m3y0m1i6000006Z1mY@R01WH0m80C406Wf@D00p0e700000gC00a1bF00qYdb9
+5O0Ob0Wa2q200010004004000C0Y2LYr7DOJS301002804uKpA000myLh1ji9nlgCymU2dhM
+ns_647V20080gTsWYvJeQT3040100008GT32Td1G000I000Axt04000DvR0020100G4LfQ00
+0LS4W00DxR04G010000G2200000G00Gu1Q3oGD104002000WG00800402000201WfxPO9I3Q
+utWjLP8AV30004yCV29kRGfjCqLi10900EisW0OJOjr40yy8y_V24000sjtWczD0W10Gs_9G
+00085r40024axg40O0G2bFXR@J8M06gI8X1@V8CV3EqL22000G4000G000000oN00Gx@6802
+00100Gl_9qil10001gfcXE5Ceh_4YltWSnP0100002032004G800515G800W00J0GVd60004
+utJ3000Gqjl128WG1048W20W04400001WKmD020408W00004400W0WG00H20000mdi820000
+0008W0gWt000G0000O0130qZh10002e240002WO4V30G008W000W00001A01000G840wmt00
+IG0G000G004000u020050Z82GK104CW0Gm4002000mOW800820G1H2200K084W00Y010G1W0
+4003080040G14KW0W80H0G0200G0H00m0O80004W1220X00408W0G0000_B0U8sW4dD00080
+908040040020W0W028010W20000074G160WG80040iXc12480100W0GW088D36Ym08W040G0
+01GG582I1Y8CXYIGS440G061WH10003K0000a0WY04G0003W8040W810XW00080541008GOG
+0Dq108211042G001X00W8102008W0WW0X00CG0G122000Qz0G0@oQ0K000020008WG0W0108
+W60G100G01201006O8000D28KW0GG010G00K000000GH01801080200W4000001020101WG0
+2G010m0W00200000040000104Ge00W0000001WWo6DG0C0n@m90001208040X0myYVG00058
+0400G24XWO0100000_gvoRGZn6aAN2W000AitWuQD00100110W@tD0280000000202G000l0
+m08000bMRGZ790008300000GG00108NhQmR@60800004000040000G0a000O00yEG2lTa0W0
+10W0000K40wpF10l80DPmmZ9600000mW00G08004Oa00G00800GG20efP600AeqhV2fCB100
+0avOD0800m@lCyrl10200804000W00020mzm9Ksh1BuR00WW000I0lUO0000000mqK500kri
+20G20002000100408vQu4_4W180G04300kTM2W100W000X0W0SJl1I200Atb10G00Y820000
+1004G022081000008001G0Iys00002a0G4oi_100yyJ_p080WWJ@J01100W0G00082P@QGu@
+90310OzV3W2W0aEj400W000G010000W0410G0Y1nP008200020008G0Y00Itt00006B0Kmye
+F4yl1040000WW040000GqonpCqnj10400kss01G4W7HOmXD64kT2riRmSvO00We14WW40X00
+WK0900WI000W0202000W00Y00e08000h84HH01a1X280000GG00m200X0X020010001G0800
+0008H0G8010YEt002H1000008o0CYU20004BCmWAYD0M008I2580C80808WG204i7E301100
+WW2H0K1u6c7000000X1001000f080820W00804WGCQU20008020HyiW10002eGHa08a4AzV3
+Azt000518XA0145010840nGW8800000140008K900S_l1DwR00X00120000W21K5200c001S
+02G48O00GWY280EIs00G2H0001GY808400QF73Qfv1I10000W08YK001D020285000o7sJuY
+T38b0W008500240001WvJC0848m2b6001000400G0220G4080A00010010000WFJw@6S0j1X
+LQ020GA0WW3020G854Q000QWK20000W00040PzR00a2000W0a20000WXKHV2rS@00GW8W0WX
+0Y000280aQh1xxR0Wq400008010e424004G1G020040G102G004400G2Gkrb1000101W0Kwl
+1rsR0eS2Wg3C0801GOq900G0WH0200404028000GG0I0000208vV3000Y04000HW0oPy9000
+82400mD@C00Ge1A00GXz60002Z0m1Kg_6G000100001Wm0m003pwdGyx64HY1Wm00W240aHl
+1000880004aY1QbW0ghF10008NnR0Y2008gWGGW004000002OuUf4cat00G00WW0Y_ktW4@J
+eda7000000828wV3UjFXIyDOUV30G0W20000030mBwCSMK2Pup00W_jzsPuM830001W00000
+G0LTz6yyX1HxdGa_6CRG2lwdGv@6000eN00W0WR1WEyDWGKV30000U0025_p0o2001mqB821
+0000Iysk1000850000M601000KE4900G0000GWG000mYB0A0000020i_l1DoR0OeF0000Im1
+00cEm0a500000S090004GWeyV3000KVIL20A406@@1WB60SpD0000H8Uv0000eFz1Gk@@D00
+0y8400WImC0WR6102C00001_0006It0000Wsq90rPV0At_K000m_dz9000Wdi00mB@IG50FX
+80kZ8KT7Y000GvXP080@1mS0uyV30Wv2000G0pC18uX3Gu300d_@0Y000000PC00dK06Yv0L
+0m0w000W0008207xR004L080W0m000W100mK00WW10002G54J040G04Y281100120201060W
+04000800082000OTFvRW100WcPC00110002000K100S3O6828B02W800Wn00002000c00000
+80e20001Osy060000000GC200WeoC8fV3006O000G00WB6Lr7WS@PWtV10mFx1@77y_70_nF
+0nT4n3Zwo00AhC00W0W@V00000QJ0008D0mm@9000S00000v41062304z00000w000000e00
+00WPC1OEJ4d040000SqHl5VogyFaQD6fuRmhyL000WJh00mXlC0040e@jAETsWlqaOt_4MrF
+100G02010sYpW1@DOEE3Ygo00004r0OGv_CilV228W0IUpWlvIG000000XjytIuFV3ERmWOk
+C8_D6000880428ti4gRB18400d@R0281W8vIeO06UiBXyrO8FE9_xt08WW095810e400001R
+ubmbU9yv@300020W01GW00eQy4_ppWesCeMY7wpoWTjbugS3MZxX@@31000kk10WakPejE3g
+PtWHBa89E6YHvXqtC000G040800GK020018W00000K0220080040024dgdmTq9Knj120000W
+008040uKQ34W02y@V20801006000Gd40H00000XrfD0080080001000K000Ylp0000420008
+00203048OF340I0C4e1BLRmYX90080410501010210001Ke0000080400001G000Y00022W0
+YsB10XG08800sFq040GGG0000W0G0W80OOA30480Cw53T7P00W0f@@D00GWOzK90A4004020
+88002800e000GY00Y0GW03088800W3CI01A0W10G0I0X68W040G00G001010G02282000mm9
+A080002W00m0W81004HW00e0G00wfA10AG0@@dmBF680K2up23080GKdc1nUR09W8G000W87
+04wZ9101421zP00606201G020000018G000024W12D002K00O8G0G08SZZ180m0C0000002Y
+8WW0480040000X00WW0X000G88I3MRmWs7DuL93_@t0008100010008q9X1A000AIq0000LP
+MK100nK001080W06jmWy9D8LI3000000WG10000422000800001W010CVg14000kBt00m002
+000K000000000O080G20800004G800O0MUZ1ZePG0O6axl100W0W00GiPk1001WdqtWiuCeu
+y4YVq082G00480100006H1u@V30080100WehH301000e0800001C1mG000O04W000010W014
+002uy7CGG0000G0H2z64nZ14HY082G8yu930280Qg@XHzO08002O0240000Y0H0000008H0e
+y@4084YG400000W000OKb100Fip0G0220000W10W020G200004W0100000G0mvAaW8000000
+0ztP0G80WIED00Wae400XTHJ08G2GZ26qHg40404EXt010000180omHYKIDODU30300m2G00
+0GRq4AISvW100W008010000I0HGGlQOW000W008088A1200GrrdGvP60400e9C3YDb18I80T
+eP0200a1zIeFL60002iof1JNo0us0WXyVOVG300G0yGe1G1200G80I0G0v@79000W001G008
+YmEh682000000100E0W208046000G00GG0e_13000W001W000X0205024WW0001006000a10
+0W0Xe8000102820000402041esH388W00WG00G122W708000OQ400I0E10410W06e081G080
+01E000014B8H1KWYWeK0K810I0G0010001045000000W80520000412W8044CYG4O402800Y
+G01G408800020031800O000KW00000G002W10000800080014G00004W04X8W0000100029Q
+yq00200Y0800020100000Q000000W00W0WP41440064000WnqKj9020000H00428000KW0W2
+040m18820G8100a10GC014Y00G2iDXhRD0021010G05000e000G8YOWW0008Y88GGIgsYDWK
+8000W40I150m2G8aWK0SNB3vRQGbR600e008G6000G000G2HdcGRk6G0040008W4000GF70@
+@R00K200009aIA20GY000f00441000GAI8900W8f858000000K0400000W8G2000W000IzNa
+11wo0040200080041w3n0610X000GsTqWHtCuqa4GG20yGR2nsQmAj9awi10020sTs042000
+000i9004pR20GG4W0G002Y00818AH000412YG000A2p00G40jkP040000G003bnmyaC8400W
+110Gam600Gi0018000GW8kC04G3002GWbSJ00E0Gzm60800CS53cupW0vI004OoDS600O4v@
+V680800188G00GW000040W0NYQWW5W800200YG604WC00000GA202100C0000410s4s00002
+4402G004G000ug93KQ0Gqrh10300kkbX9dC8ze7EgpWo3bu@@40ke04I13088008000m000W
+G000100G008I000MTBXFjD8St74000008A0000200X00040GW_A0000f500ALO30R1080mR1
+r00m@@9000W4020001WC00008O40w5q00Ga400048100ieC30828003C0000bv00GdlCW_60
+000u3w30WbmC8503K0G000KWK7002GO002G08000000r20208X0W0miH64ui18I21cun0k1u
+4@@p00d000WWR@@pW@@6WEfJ0ud10000U@300@@dGeP601u@700000V4000o4@@R000ul2PC
+8YQ30u@F0GtHWgN41000Agg2W00004q@0m0@0u0S3_@F1t10000000GLCY12000tf001eE00
+0000C30WV6G721060O04000O000i7000c10000m0X00002W80006DnP010W84WX86010g6sW
+4iDOo132aB1Y2000UQ0_@t0088000W1G5008A00We0000300WAWP0CWe0m1c100Y20006000
+O50W8603nT040S6Q200m000G503H70604GAT60G0002k18D00W@@P000WXg00WDiDeDR30W0
+@30yC30100u10Wi3C0@y3GqE60yy0G1zvEtlZVy30@u7W8000msYT2_V500mAAG10X700_F5
+0yVF08_GG1p90pC90LL1WtH40F7W@@D00MPLE390Wg0qgg081tuAL1m@2eghK500000@BESC
+_rDXtmP8Gy4A5FX@@b000xo@@OC_x3hYB1040WRVPuoy7UoLYCmJeoS3I3t000G0G800YjhY
+_pJ00M1m@@C002Geyx40G804Gd12010c39X3UPeAM3oI9XuZIu@@DABDX@@J0818GI1L4f03
+i100_@dX_mJ0001mew6SPP28800_@@X6OC81T32ebXVcDOyV621@10008Z64Iyx9000CBy0C
+kvsWFRCu3XAMaFXgwU0G004W8825080lhR0020W31C0000nOz602408tU36as01000002401
+002040OKS3000G0228OEQ301000W7100G00800400GGW000004K02H0W0001200WujD00044
+908WDwD0G000808mOwDe_B30004GY00e0U30201q8e12881G42m004YX210W82A0H40G0000
+40020200180840801003400OWQ581GX088000UesW_zD0102msy602000000fq00WRxJ0040
+021W20H000G0W04W00000200H4A0W0005G00224OG20200SfE3G000001W0G508Y002G00GA
+08011G01Ai00102000G0Y4YY6S688043W4081W4e410100801080W014W0W8002020O02W8V
+J0082A1W0H001KD5b00W80m0e060P02mt000X_000050W0040808G00008O22A02G000e402
+40W00G000Z01WG80G5G00400H2G010W2W0100W40000204080e4G0002620W20G00000A8K1
+000400WG00Hp@6W400O5V3Q@FXfzD01100000A00X03VRGpyCKwi1@s@00v0W3eJ8sV340f0
+a4230084Ubt01G00D@R0402Wd_D000200YW001000O00048020G0208W000H8000WTKPGI6F
+yqk12000Ar@XMFy00001M10WEkhOsC3w_FX7uD0W82mk@C0008e4N66Tq000002G40IenW@l
+Duv@42ms00001peRmNdCKIT5@@R00cYt8Hh0240GZw601000009G7v9Clz300001WG00000G
+0H202800048AzwoG4x6000e000aG5QIyIg49fW1O72WGJnuKz7Q1EX2NJ000000808201003
+38MMtWEtOOAU3IkCXewD02G0mwy6Sig4NQY10006O200biMnoq64VX1djYnC_6W90H0G21G@
+y6008100G00W040W004012XAmF1402W00800400040G0000ogs6CQC3DTMn@_600mwDDsA00
+2000A0W400021000022004G3eFXPUDOGH30WW03W1b10m08OA223G10Oa0W040WW104GG00G
+v@600060004nTh6arl1W0004W0080G0u@T6W001yXp6WVB0o@f2420020W00088i6C3FFmGm
+_68W0W0810X08H1G00G09000H4IG0f80W00004HAG2fIS44f80040C00uJU30WKG200200G9
+LiFXaKm3Y200cyNYYnD002a80000005KLYQGy@6KPi1JcQ00423b981091fO2aA80Y4YGH85
+e0C1W0G6I00005808420W0W0200oW1xJ08X0G2S68300uV4L000w54S5084e00041420uMP3
+0100afP20W80oBrWhCD03085e018X008003CG08Y08e4W2YW00022000W@uO00e000B00000
+8G0000801a31G000044mX0HVWnB_I0gj18BV90011800GeZu4000Wm070ecV3Mzt00003000
+103080Gm808130G01G381aAeGS001C04001101000020W00znRGAu6ypl1e0004501000220
+K0GAzCyDL5jsd0O00WviguyT36wnWo@D000aKCuC0400008H21WX4800W201GWI208W000G0
+80wFW0WX_B000200030018p10C0aUXC7000WG502Rp00Hl40O0qBZFXwHy0000000nnCkb00
+00f20000Y00RkR00W50040ODqdGIh6We3000GW0wB101GlA0G020W05000eN1000mV100000
+0C140000eA00uAT3e2002n00OTQOs@F1m920ZXB10_3WZvC000000K10000000WP10Wk1000
+00T3Gd_9000o4W@040000P_@1000fymX02Ae0qX000pF00sR064TWi0m1O000o200OE00G62
+00OE02ID06000T00080GGM9SmD3vPN1000Kk300jcB100WG10086WAWH040e04000O00086W
+uvD04WC000OWuBD08000N500WVWRSx0T0W1g000m000u700KG200000WCsLx10O5KHydWx@7
+WckV000u000CmWlh00GYGywI000Y0Wlg10000V000jWx101yV@0u@_10L9500eA000W@@70L
+1WNp29IU6EGRZAnJeq_4MXzXmtgeHfGwyF100400801EVsWMsP0040G7@60400eJQ3__FXc_
+J01000W20WhVI00007130WZ_JOgz7I4FXQGDez@40101a5N200000G00_dU2tSdGZUFSmV2G
+000wpqWnWI8cz700084Nj100W00200040000GQzew9yus6fSZH_@6ilZ1pzR04000000IV5Q
+mDz6W000OXS3I8dXSJCOxkG_@t0Wd105pZH6x9Cmi1@Fd0004WfuJOlS90W2H0m10040f800
+0202000884000H000048W00a0000018G0004020yMl100200000208W00G001G0qQYD000W0
+802YQsD02e00000GT30XW0400000Mwh1ZjpGlu60GG1OoT30G0I0860erT30WA000O008W00
+020200Z00G00040W0W82OSS300CG04001H0802Z00W0008008sitWPOCO3U600m00040G0C0
+0802YRybeIV3000tdL13G08c80H0010221810W00200CK00e80000228G4002mmk6WAW0uBV
+30000100XG020C000002X0W0WAMqt0G0m0W20WD0412Y0GXG00C008WovD01X0mZyC4fW105
+00880KO00050W000G2W@@D02022010Wf_D00000Ot002I80Z_R010W0G802m000kZo008210
+5G000n000W20G000G004I0Y001W00800G0000G0050W14W0m0Y08G80041eG00820040A00C
+K004000A00crl108W0000128004GW000020008e2000Fd@XTfD0110QlaI02K00000Yu00WC
+qCecV3480000200010oYz6040040m000020a00008000G4000O2000000O1W5@JO@R300808
+8C0uH36I_uXm_P81pAcxbX2zJ0000000XmC1g00W0WO000000001080000004GQbw4Iy@XGa
+JuNV3000001a0OKR30940CLm63S@mAbLqnl1665000W0iDd1ZNw180000860R88H0M6CnT20
+0G00080E8KEfhLH6tCq1E3JeP06000000GzuR0040WpZPOwb7s9F10G000000hUDXtob8NXJ
+6lF10076JOjHTi60210umV3IfqWpgJOsqA0000904108m00O00081400000000Iqc@315Bnz
+nFa3U2BiR0eX5WLrb000e0G0WK010G0e000010031825220W40000a00201EN_1e0G0dIRGH
+q600040G010409WP_D8aYGoWt00001pfmmGy64JR2W60041040H00y5sA01808GG80G040K4
+100G08TkRmZY9GW00OvQ6AntWKtD00208000GY0b0798HOR6a_V296QGM39ypV2xmd000kiq
+fb000858I0480084820eW6D0AeW410G10402GW00ZaRGr@90A0O201000W2WjuCufV3wut0W
+010LFQ0200YHvV8tH9000W0G02Odw723F1GXC01s@00W2WyMD00IX0G1000280001W00W004
+00AjV3oxd11400R8A100800W0000q1ovt00W0m9@dm2j6010085W4wtkYu@J01100000Ej20
+0zjPGWtCm02001C20810000010242oKt0S882G080cOoWo@D004GG796qUf40H802ne20002
+PsRmY7OSdi400iNBji2000G01G2Q9oW7iC0W810A220001G0800Uid1G000nxRG@x60008I1
+0000O0WWkD00a90020emsaOsy7YZtWBpVuoU3m0000sJ1ecA68005000003KV022XME0W0Bp
+R0OX0800I88J0200IYaue1jRc00004W3200W000G0000Y48iV3WWR0AI00uBnJ0mc2y0T5Px
+R000SL000W1aM100SV@100000km50000tT70tK000O600000G8YQ5tWUuO8oD9800oG0C0n0
+G002W000W000WO0cyt000o0XjnGl@6G410eSwAMgr0082000OH7GtWoyDm000GC0600pF00Y
+C0k0k0G0G0m0004500WG00W8300WB0204GMjwd000WO400m801GY9F100u0zxRWh00WHSG2u
+@yF0mmF0000O600Q_4300m@k1m7Fis33K0032vnssCClj1DV@GOl6yfQ27vd0000CA10WBXB
+1000G0O007pdmLB9qwH2P_dmg@F00048d23__F10G902000M9oW2zDuMw4YasW3uIOuQ6Izt
+W6nD00Gap5r64fT2W000001104000084Obx6C9d11jR0W000208400201024000W0104Gn@6
+0X80G8080400WBMIu8k4Q7tWnmPOm73sMXXTeD8bT3EhbX5yC8pT3QFFXleC0010O1t9C9d1
+vV@0011WAoD8Oy441000008Owt42CI2300WfXNnhxF0400ONS9i60WaXq3lgdWG00assD010
+0mLs60021PpO36K@10G0008G02Ut000G4WG00450080W1G0100e24048002808W001140000
+80W008000H0xnR00004G01W08Y000Cg800H0010812000400G8W0cZt0800000O@004Wy7l1
+200G000J802000400804W8eC0W0GC00a000400108G1840A82GK00000HfmyJ0Gm0100000H
+0XW001W1m00092050800A20m000G8W0N1C100G0444040G104210WG4003W10G00q8000030
+0W004004040012080200000G101208fe4000006g10080GrW6yzc1W00000G420W00m82W08
+0G80040WWW0400W805W0K00008W5ACG140e0WW04008802AGe000022m804W10W0080A00G1
+40Cm00041121002AW6_D00342O00008GW020W0410Z060000441000C00W04840010WX10KG
+0400001G0m0v5O00000C400000er40GicV20100020Y000800H1880G80000G4O08200A011
+10WW0W408e0402OW000101004020GIBj604W010W8011G3280D00000001210eG000W0W001
+400042000108W0040040W40200G020W00001008G002000004020100Y00WC010400040820
+004000X_d0000000ov000YErm08001000EW0004wl1002I0W000020480G00040001WY8020
+8W00K00000m40200010820100C40AW02eYO3W82080110221400820068008000O0akl10W9
+20000G441000010320820400800W40W0880H00og@6800000W020082008801000001Lzl10
+RS0_i_1000400W000W0G010uLP3000030C8H0e0600200W0C9vRmuI980Y00YW022040IG00
+001W00a000002804900WYfxD0W00C84000000W00G020G2G0004Z82G80808c0DyR0020HG0
+i001024100CWj400WeCD0WT1g40022G010S9l100G2G0010008080G20G10G200eGG0_kt0W
+004W00GsXs010000140l@tWRyD00040GW0WarJu9U3QSp0W000040200408600uwV30W80qB
+U2t_R0H04Wa@D00G@UKtIS@d15tR0004aqGJ024080O2000G0000OIUt000060101W208010
+002W02G0160YW0022CW0GGqfk10200IiqWXAD0200m3t60WC008000W02041GCW00401Y000
+W00802S3qC00A0OvD307_0qfg45pd00e000G02vsR0WG00G0G0W010QNF10W01G002010001
+05fwS34W0000G1W4G0C0H2K024L02AW03801800YC0005H00W006e10f0X8W2WQcnK21341A
+G000LWeA4111H0GW2080Z0HW20014W00H0028082Y0Y0024WW08000KU60f6kN2W0284YGW0
+490I8H8I90K210i004G920121O5W00a10Y30mm_602HGH00W8401403a842004W00f8G1G0Z
+0aG2W40A0804W01040G08W0K0204004G00X0G4000281G0YAuV3418YAc000001WW1980AK4
+0GK8MltWmPIeoV300i2c_g1plQGU@60G08GW200G8WWkMDGK000W0gG01eK85bW04Z330082
+404A068400GG000Q848KXW190Z8006fYA8B14GW2fG000GG00WK0000200I954I819U@tWK0
+C0HY85e00H41G0W200001000f000H010WIA0OO2Nqd0e000G200400000W200000KGAmkzCC
+5k10GA0KK4G0W0a2002080GA08000G0085859W0000Gb0Y000080K0H0e0G32G4WW00082f0
+810WG24G0Asgn0X0000W8G000Y0BY09u@4008G10G00041000102K00G210ISt0W0000580I
+ZtWmlJuX@4010000006kWGGv@6C40301340670W9G84108AY010010X020G808WW0e820000
+H41WgQD0GW0024b0GH4800A2P80W04400X00000G40AWGWG000m0C0000000Q0207000002G
+080000003000100101G02004002grt00C0A020008W0ywl1Rxp00040008k@@d000WXS5C00
+0G000400W20801W0Y20WW41G08800c10000W40001040W010W80040G008000008W0A10W00
+00a40040W100400004G040itB3tmR082000008080H400201GYuuU3Ga00000G0G240I100a
+0803AQG1@6yHX104000mQ00000000AG2ZCSNZ10O00GH00010842Y044800880068489W002
+0000IWW0040G00O20820004G0000100W05YAK00000W_3008Wo500ePV3G@0010GL185000G
+gbIYD0000hI201it2iA120GQB0Cwl10aU9C008R4G0000WaG00WnzD00b0040W1000CgX89G
+000CnS2010040GWW_0008mv200002WG0000G400108Me70000a51WS@DW0GM0000GCGM0000
+Wy200W000I0084Yk000007A0m180W8AWR2a0000e00002000mA000000GC100RAWh6G0tK0W
+g200j9000mC0qc20WD5u108mC00G0I1m0g0G4Y0W73wq00Em00yH000SxSol400WF0uZ80m7
+Hm@RiX@kB00000_xE0jQy0wpl00284100u65000N_RWu1SNx1u@M9Y20mL30Wh600V410H00
+0Ol10GM1WXV68A0C06000C00WrUCWl200638B040N00Wz000U200OK00Of0uoI1C702mE00G
+M00061000400OC0G0G0o2W00100G600W4000mg1000w00000e300agk1G0000C00Gu20Wm5e
+203G50K06000L0002300CK000i2CZG1a506WA0Ybp008O00mu2e2e3G506WE000C000Y20Ws
+K00jQ008G180zG10004000WS000000WRI00U42L101g200_000SJ0Y2m0py82_l01yr30gW2
+0qc000000GFY0000W7A@c1W2000O30Qu73G1000O000m7H000Y7W@V40ee0HywR_8204Hy02
+00000@00300000mV8n000G00000_G40kw2uUSee7J@QGbuF0086uHyA6arWvqJu3W4Iazdmn
+be7L9AWK2GuB0HuR0020Wp@De_@40400KEk1W0G0Ij_XnyJ0406GBv60002421000H0Wa2Wv
+@@DouE1M300ZjpGLu9KUF3xhRGb@U0044uw@4chjYFXheCp70200Kzk1Xxp00WVbrhJ82U3_
+WdXraDudV96eF1001G@Ba0W00WcGD0000oiy60m0800840W0400200r_PW020G00GWzcd003
+0W8bCG000042W000G0Y8000000020YuwK60DGGCTg100200GG80W0085Q3400000100408m8
+_6aKg1200008W0Kxl10c00c_t0G0W20001000G040020G00800400GC40Z000A029W802W42
+400000100A0011I08810I4000G20Xo@C0I80X00A8H0G4W030WXK400004040e0080O0000E
+00000GG00000009d10WwIJ8Gu4040O11100G000W000G080048Y020G800G24001225GG000
+002200H020800WK08Q0kYC3D0GY0nI2604W2012002WQ02601Ga6A004008004001YA2GGH0
+X0m0080e00800000GC11WPW@sDW818YX1000000G0410W028Y00X000000A0800000s41108
+80000100300848G00XzR00c1080WW00G08008Ktd14000003010034LG1000000XX0T@R040
+E43LG0440000802O00irV3GX005yi1jzd000WaT4JeYV3Ivt00004aW8044800W00G004WW3
+0WylCesU60_H0q9y30020A0qWu@D00010002G02C00I00w0mWnsD08001G00000280020140
+0W00W00040G0G4G00G000008G0234000W010W00080O0I8W000HUgl1ljR0002a1VV004000
+20YwpD040002000004802040000wH0320000001i0Gm000080G0aEzJ8lV3_trW9_P0400W0
+a040001JzR000G80110402804Y0G00200090G008010044010e40GG08W0140288018004W0
+X1400008Y8oS34C2000Y0W00G4022XH2D00n75G000W80WVlAn5b9Kv_30C0000002206000
+C8G0000800010W10000030wKv44200000W8z2300GGEsP202I0H10008000Y0020000m400x
+RO0404520000G6GQes00a0a000810G0W80040000WH2WwNJu8Q3oud120W0Jh@mzz605018m
+R600206EX100008080yWU20W000e00Syg1W00000Y0W00220O00WX0102000GG1088W01006
+080440K0021O00G4_ut0G00WvbP0400O000SU308042066N21opGOx9KJi4O004gX_180049
+qRGae602W6qW01WH522300KY16G910010002K01gW48GGW840H4258008W0H54H000045W04
+W4C0PW24006A0104080009W2160He01000ZGY000WbDO0680Y0005G0008pyWl48000000A1
+0W0SGx404G000W4010m210GbvzDOpD3W0000G0100J0e80001140VMR0802OX6W00W040L4H
+0B230W201S0A405I4244W8Z0IH82418n4gIW8GK44G4A001YC88025L0003g8C00824044W5
+J00120004j3W0WO4G0C00100wOF10006000W8002G0W0000GGfGC000Oa00002258H08000m
+01000800240a040244bY41G1180WK4yvj10004q80IHA8a1a202f80004000GA00Wa010fW2
+0G00A00A0000e00G0500G902WKI101240900GZad0210AI1GH4110000GGO000000W48Ggpu
+P0K4500100080aY400aWK2avF3DoR0040aEvbuTT302W0W80W2KW000C40412800mG0G0W49
+k10100WG641400We4Y0e0mG00010G00000400401840260100G000050Ygt0000880100100
+00u19ME3088000e0y@@400240008AY03MRmWupP00410GG401800ZrQGzX60A00110eW80e0
+40C0WWDY4W008W68W80000WW00868ZJR01400XG000101020000240G0208800200eC02002
+0KCpU20GW00021X080iLV30kn000800100mOxC001W040m001000208C4G0GG00I088f9z7_
+ZtWB0C0006Gqk60G0GW000W80000020W00840G2800002400481000IW82281W0808GI002W
+00Y01009081G00Oa00040YY00282e842003hO0802082402W40W0002000Zd1020000H2X89
+UBX001W@yDedO90G00G8K00400mxa6WWG0403G0u4201102e@4002el001W000G000aUt042
+8z5wD0000vN0uiT300ib0040KBm20000mAnD00008wdG010iB0e40000CyHj1000w1000WqH
+000WH7GA108XKB3vc00000000aQ00G0220CHX14Wi30G0G15008XSCs_tWmmD00200034100
+00vkPW700G5K0WU400bG00wH40mg1yZ7G0000OL00m7D3WF210V420y844H414H40yZF0ug0
+00y00WRA0utK0L1W0_V00pYp0mz100Sr00ug10000GL00Gg@60Ws1e5y40WA01000000Cxt@
+6000_rE0004_820_tNrzd0040000W0W1007zt0sR00Cx0CuP0w0W0y300C700mI00Wj40075
+0L4AWr0G0K1GA06002300460giC0H1G1i300YTp00600aC0CuO0w0W0SB1S3000GeG000W10
+0F30300mUXzd0000O1008603GC040u08000O00007Wz@D002600080g000ven0H701040600
+0C2Kt000OW20WL50008Wg00W@N00NzZCyCm7RAWg080Vy1W_V00jw30QJ10qZ8ybD5uV54mN
+U0GL10Wh200V420k910uH8mC02eA00u@H0mL100mV600SJ20uZG000YK8Xdn8nD00Gx@9m00
+m32R000G010qG0@lHov_Fy@@3nId0010W5yD08L0GwRLyTV2B@@GBTd8000Oa_7MPAXWzJei
+_70800SUN5000uN1tWbrJOv@4404000010000vr@602810002o5J9aVW4BvpGrvIqel1nvRG
+u@6SGj1v@pmAr60000gsV3AkF100HYnyvndVda_M5FnroqUO00000mx2mf@CWW00eJ_4sssW
+tWD00G0A00080200ZcOGpvFiHg1R@R000050GC27lR0G10qk@DG0010WG0000H008000L000
+0040I000004002H0G0000G00ipb1W101YXF1J00GbuR00002f340W00Gw2y14414W002ADsW
+G@JG004Gky60WW0000Wuez64lk100G800WG0W0W0080020220020002WG000820225000802
+00140002201IeyUW102A4040G00G00081m@@6040WvkK3404G8Oa02GI1mP_6W0e000Wd800
+1mvuD004GKOu60400404280W000210TfP0WX04G88080A90514WG0W084000000001L02080
+01K0G2800001000H00000WO408020100080200WX00J00000W000W020G00808650H003200
+08038000WW00G008G0WeoD00u008W002G01000901W02251eFV308000AN10403nzr68W010
+0W00G0000G4WG6808200rMh12000040W8e0GGCX0YG20910K0200040W008a00018W020814
+0404800eG10G020g0W2GW120000009000G00Ga00000e0040W00G008001000000400GW1W0
+0000400m1oMc10100010G44G2ymj10200002W0000bp01GdbIiKl11Od00W1WgyDeWV300C0
+Sdl1W0G004004Wl4000HG600000my743I3t0080Wr@R04G0W6_J8aV3Axr0000AG000cnFXK
+0C000000Wjd9UC00e000G4m5_PG000GD194zl1tBOGk_Caaj400080G0X0208000G0W00Yfg
+D054008G0801G00000014000080080Hzi601000120m3s601G0u@V301080090O_@446o0W0
+00POJ9sdD100WWPuP008000180BV620GGmW@D0A0000G0000010W080048G600020mGF2900
+W000801000XDzD00400011WF_D008H0200WEDI0000dG10088010910o7d108000030cRE10
+G00p5Rmzfa000X0IC2Gnk9CPd1Hcc01001G00002800G0010Y004000WW0i4IP0G00980004
+1005_b000IG000G000K2YdXM8C8lu7g5DaUrJ0gWmWH8Y0W0000160G480A8X24W218W84Ka
+000G08G0402G4040100010204I0GGW00028W0WI00401404H00000000GX42C0WW01840Gbm
+60sV50100W0W09200013RmCw60004yky40m4G002H002WGpDO4WF300K180eG0We00HY0028
+201000044Y0004880W094H20G00L140004G40m010I0104G2W8X0820C0e4000080GW000Y0
+0O800W0200WG0Uct0000ak440G2L094209Vn400H000500011G@_600C00880WWW00000GW8
+0W000001W0uU89YwF1IHW80000aWK0002W4028010WK24W060000K21GA000082014G00a00
+0GW10000UdW1I0008G000100uuU3wAq008000008140000WYz5030W01000850G150000G0W
+K0WK61000Gg8200000fa2YC3Je79C0009aVV2NPR0G000A52001480G00CsX15SQW2W24W00
+0824e_uqWFMC00002O0GWF_DuwG3UKmWWpD0iy1oH@604I18tS3000G00G0G01000004WH60
+tMoG6@I000Kee@70G11044WG4G0WG282H001W040G200G000G0A041W0H1000002D00Wa080
+5OkV3010422900100K8g601000W4cGyX6G00000G20000G18WG0800088I004109010000G2
+Y14400W012W10GG2m0420280A6WH2KO0A0FXI_J00C0mILI00040G40X040001GAW8e0G200
+0We021H1b000000AG0W00002400100a00WeWg0HA00W220G04020G18WT30000200Y24HbmS
+v68W80000X50G0I210WP9cmlo90W0W00GW01Ga8G408030IW040iZo6PUd000WUN0G8O@502
+Ir00GK00000u0P10000YB00000201000f0OGD06aus320000030CbC3u0000QT4910022E0m
+z_600O1003W6Ge@1442RG101GG80O0040zl0W283baka000G4180WxcV0000eL30G38mCU4X
+F4X0@R00@o30kf10SL10ug2u@D9m7V8W@B0W@y00NT00_820Sr0y@g1uZF4m@308H41GR200
+m030jf000F0_m780000u3V0uZ0008KU10c5W100WFy100CKj70er3AiE400WrA00V9WV2AWi
+0G0g0a4K189A8GIKm0aem5G513WA050L0AnK0IWW1eIA060e4n0G928WI4G1aeW20305WA09
+0C0IYg0a454000WR0AH150Y2A0L060g042G000a4000O000u700mF0NWVWi0O0S000q0000E
+000G00001WGXsC0004n000G_dI0mL300PcX2A00LLbWcP61zNL2ApC4aggKbCpeALTm@0Gm7
+yWW7gA1LbA2gALgAJPym3EuX78uCpGm3VWWPc11Fy0FaP6_7W3yF02ggg4qX000mRU62cP60
+KLLC3000Uu1OXz7C200000_FwQ3M@yXImzeCS9I4dXfusOjyA8600b@l1by8nNrIqLE60002
+YCF10W00RbdmFuIyhi12000s4oWJXC0000W004aq@D8U7900qHLUN50800006001000084uY
+n608001W800C00WYohuaI300W80081u@S624l200G0FsQmcj900028vV3AYsW1rV0aR0mCRX
+ysU2b2amWVO00208IT3cMAXXrbW000mswLKPJ5xcR0k10W_wV010000080000X0W00000409
+00QmT308G0aFW4Jqd00G1W5vC0400G6o60001OOU3004W0A0204eWW020m4nC00110020W@v
+D0000INx60G50eQ03QdoWPPJ00mF6800000A0000100e0000204G1000520G1G0000RZo044
+80K02800000G0e0100010G0G000800GG02100G0G00WWI080000W00G408008008010H0Y00
+04040800Y440118G1030000G200136000WG4400000284040200001G04A004G01O0W0GG0H
+T_6CTh1psRWO0800000WR80AXE10002000110200084eoV30002SeW10402G2H4W8000W0G0
+W0GG40e000020140GW200WG000G084B010042414820010480W000H00G40G29004G040840
+0206W8KemK0W0241220008Y000W008000080040011Ym00GW08WWmAl60060000A00040008
+DN@R0cW0W5rC0100300008WAC00000G0430000408080000G0W0O8O0G010H4Y0W40402002
+4O00Q000o0X8002I100WG420300YY01041YW0020G08000G4W9@DG00001002040G0108kzF
+1W00000e0010400001001IPz90G10OMV3MYBX@@D000oMe@6ikl18000000400eWfX@44040
+i9Y100G00804000001G0GH@6all1G040W0000GG000G000804e004jFPGoZFqti102H00300
+G0000003HP@R43_30S60MxNY9HJ001100020000Q020qAxt00090v7Q02W0W29C000GGt260
+00a8pI3_@t0820000041G0G00083C000W0G0W0205cdm5CL000100200G01WppJ00000008U
+c002000000814CI2ZoR00G0W_cC0040200G0880002W0098200G0uTV3gPt000Y1x3R0001m
+8iO0G0Wm9tCCRfAfQB100xO0800hTOG6Y6y5A3xQPmKy900G00020000G800004012000108
+40gyS6IR_XssDeAT600082080yHJCsDcXaoP002800W0WyobuqU60W000W000C9041H80060
+0808mQEFXXuD00Y0IZy6yWZ100A8grF1000NdwR00001m004a10WYJsWcVm00020010eaoP0
+000Cq20900e008G0000Y0G008PL6000e2000G0aW108215W00m10W000C2041W4S0Gaa6000
+5008600100H01WW00002m10800CFV3010C300040830100004Cm000Wl@t082100G2008047
+GR5200040000G800005G_@900W5644020G040840Lrp05000u0000W0C0000A20G06G00X3M
+0WeOm440Q0W0W040YW0248208G10240G40W8W008020C8286W0Y8vJ0K00Gly6i_g4t0Om_k
+O4wf1Nlp0OxMWXwD0K00101XWk@D00I10IH4000WKG0600G0IHA08H0000f0GH81G00HA004
+0000f0080G000GA0000W202kit00001TiA1G04W_0FPjN62@d1000qW741Yjt0008420GGo@
+t0W0G0A0000086I80002W0Y2224010820230022048XeNV300W0W8G200Y0G_L6840080@40
+W20aUl15cQmxlC000HSMsDENtW9wU00WfNkF68800uM@4008BG10Gc200C02G0XP0G8WW00W
+08004G00WQ0G050e0A08080GG000040030400GG4008008W040200800ifV600020W0800e0
+00X0WHoJOiV36uqWFYb00G0GDkI0_900eG00004ePFOW080W81800YW4W400000080001W00
+ee0820Gg0Y020crF100000X1000000G6000012200400W0NtOGSy680008jR62gq0000a002
+0EIdXtvV8HS32jc10Jc60000C200sRl10e100008W_N808eX2040000m10G0wL0000mLetD4
+02mG1021000e0080850W002BKB0201KI000vuRGJ@9000YG40y840000yV4XpdGKr6000A00
+000H4105000dLB1000bOoV0000000QD50uZG000I3e20iQ00000y@L0200000T0eNG10tZG7
+000jK500000goC00GSrO00WB00260C000g000ZTd003010J06080cIxEXOjb000600840O00
+0vJOGw@60_z100I400840o00022W12nA1WV000F0COO0x1W1C3004500WqiuCm1w080q107W
+0000300Wu000pF00020C04080G0f0OGOu6OJ10mg10000uA308000008205e00NL0YiPlz60
+G00O6M3s@MYWzC000yVG09000W1C00Gg06000_VGN3YKu12ytN0yll0uc00W7U0W9W00680p
+S30Uv10Zdt0gg1WK010Su4Lvg1gID02000yufk9ftxAUB0300_qRUdGePUyTTBDcpG8G6Kul
+1Jzd0000m@ph8ayA03l0Km63@vn0024WSoD8oy4AK@XVuDO9U3gtEXpuDu_yAY6dXqnbukFC
+000GuU0083UII@3c_tP8Da4U4aXFnJurz4k@sWWwb000RqQzC060G8246sStWUoPu6U62rtW
+K0e8k_402G000080400nZU98000G004002G014W0080400280000GG2000W000H000GXW000
+4bQg1G000000A0WW000GF18W00084002000004Mhg101W0cndXfmC8wF3Ast082G00004400
+0AG08urK36Bo00480G000024000Y20401ngy60O1000008200WvmD01020Q008010G200W0A
+I080e0010Wmlz600gY10010a0A0005G00900554a_c1WqT0G04018W0umg4010000400620m
+V@601400G80041808200W020W0XK0G8041GGmA_6q2j18W00G8GG020104020W002W000200
+G08800KG010W040040G0I1zpPW0GC0050020G400Y0008Yo004WW1800C40L7Q0e4c1O0014
+G0608W0GW005A1000280000Ce120120q0GG00000190800008014080028001eBU38000YG0
+0200840104a0W8211W0IK18W00G01100G20400021400O00T9l1lSPGoR6y@l100G6wz@104
+5000G20m04q4O2HCQ0W080000G00GO0000Dxl100W100C000uI8rY4A_F100G03pPGt@9002
+18i@4ENmWX_D8nM3002800400AW000m1WZ_J001DGNu60010G410Xm220G01000880000204
+0Onx701Y0yzj1F_Q0000mZ_P0is1c00G0000G00H0W000Tu@3C390Qbt000WP20400000H04
+0e1V3gmtWY@z0040Gec6SBb1008W0G000m0000H0mln9SAl100G0004WjjB3L6d00080@X01
+LZR00103G00G0404lNZ100000W0W000q010000m0GlY6SMi1frRGHtXqtl18400G100Cbk1D
+A@mx@60000iuS3kOtWr2C8DU300G1110G0GG004G0WV3C8mk4w3F10800W100000K012G8jV
+300GIcbw94004kdFX@oD02200050WyvPOoV3G00000800008M0o6q_l1dzP0810WYrD8HB30
+002W800woU600G0DGl10Y00G100180238a0G2a60021OXzD4G10000mep130023AG0100000
+091010248G40C000Kuk100041000Y0040G871W0000m80001000e004000K2000010000q_0
+L600WG04G1W80A2G04810mCYGGWxmB123000WOW0X841GY01YY0400G42G14WH500200W680
+8GF92bz1C002Y821000H0OG0G053eW1A0G48W880a0G4WaTN28240000Wqok1820002W0W80
+0emK30100900000W6220W425048eg01G0H001XWM00WG40Ws@D00Y0000W68818m0Y04n0a0
+2585D10CG0G000e4WW10000ICbp90GA00004200W2008qr@600A0eRU600KGjvj14000o6t0
+00800GA9_@t00tW020004409GA0000900eW2780G2x_p0020AI10Y01W0850G009310G1040
+0000bK0WH0cwFXDwsu0V30Y10aIl100Z0000W800KuVy700006Jc1HycmGv900003CW0GS@6
+00084H0000Amm2ECux@4W00Wma2404O1260I4000H00W0e00000G0W0000e0000104rN7204
+00040G0005kPr0000GRURmA_9ynl10W0WkzpW5zD0Y00mJE6000zH0010082on@D01e0OlwC
+0W000004420000G400J0082080402a800000Q02010000qkut00080f8BHHw9008202f0081
+000240W000aI40KZy3LwRGZ@60W88gEO608G0000000P60Ge00a090e00000I0HW08AIt700
+W0800000540820000G00082sJuXigg8G_7GF000007vmV300W4H200002G4180WYbJ00m2W0
+00PX0I0000Wm200W0G0G0000g5000020000855P100WGoF0008W800000W5X000xXazF3000
+w1W000mHed0400W1100G00080000zI0800K8W0GKTCS8V50Ox@000pi2d1kxH40000eW20ic
+V64O00000W7000000eguoI00VynKz60mL100Gqd20SJ20uc4u@D9m7V0WFY8rQ60mg10000o
+7H0800C800OG00eWsqr00200DCOGrrUKtj1VhQ0330042WPa8WW000oqKl1000GC0000088M
+100W0m000a50FSO004k000_1K1W0W100Srg10TP00WW10073WAC6Wr000S100I200Exm0000
+0Cp000G1c100m0W0G401WC700mA03oS060Y0C04080mex600W9en_A0K00000gML0Slx100F
+0uZG0m7XmF00W@ZmT0000WYB0kF0PK@Wg00Gh200TAO000G1A820ZaR0000ML350m030jQ0G
+PJ1c101K500Sci0C0000000uH8000Gug108000m71OLE30mc2ug14uAK3i900Krk7G010E6@
+Xxhne4xAEmt000_klvBnc56q0x6bbdG8uIqok1W0G0Q6pWBkC0W00000080100fjRGSx6aTa
+1NdZH3hC02H1uO83ILtW6obOFI3Q_t040047ip02W0WZrJ0W40GFuI0028uYT9cRFXAhJuEf
+GyE00KGk7XYpmTzCyZ_32000wCt0020000GW2LtW9qCev43MjBXuuPuHS66bdX4wD0008000
+40007bfbOGLwO0040vZ_40020CVk1hnR0000G0G00PeRm8w9KmV20W8W00400A02I0H41080
+4G0L00004404000200GG40K00001G4200104AnGW04500K0084WLrC0400OUS60000I00W20
+10003E0jtd000010001vkRmKq6S_l100K8840000W902020W0800XG8JBR02000102080000
+20GCBH2000A0GH4kNl1Y00000G80H00244L000KA80GKeW1Y01G40003W00H02G0A414G020
+e4014080eW44040XW8HG4W200000I086WWO_P3000GBa00G011GYC608aGG0000048015H02
+0W001001002GG0420W08850G6GOG0000zDk1024013mm0W01002308W0008004500000012W
+00W10W92200009000900C00350GW08YeO4O1Xi0GWZ0504Y024W0IA108000CY5480a80803
+Wu0WG00C1001801WG01600000W10cODQ3000000WBjSQ30100G0004X20000G010010IG00a
+001000404G0000KWAC5400YnS0G00O006W40S020012C0L40G00016101801W80CeCmJeBV3
+000WW0W0000040u1WujJ08W8GO460040GG1000202G0IGa104000284W20400W80030G0W00
+0800GG0402080W201000J200W0AIht000G00W010000W009enU3AXtWljC0410Got9y9Y1W0
+0GW001q_l1pSR0010G000W001OQxs000000864IPy1048W1WQGpX90G01ed43088000802W0
+2Hy@90WW000007L00028G0HKomu164tj1Y0000004yKe1008000120G41y433oBq004000Y0
+8_fcXsQD0000020W9WG000020010012Y8IW0000280G4108000004100080161000004O002
+400Q8q040m020100004m08WeFz40GaJ200W04W00880G00140WW0ctmWk@D0501mRw604H20
+840W000300Y00G40000a0Y0000802000G08W0tPpGqw68004G0e0000GWn9PW0800G0100WC
+000202Rm00OeGLmb088G04000VRRGQs600G0uiD30kO00I02004W00G1XqvD0W0Go2z60040
+04002002401400W0008G4oC04000010Y82000400H00080q5U2rDPmC@601a002G0G2y6020
+0O943kWpWfuI80T3080GG0W0RbU300G18G0G1001W040001400001000018W22000XL11000
+04VQP0080eupJ8O_7kUm040C00000G4H2200008Y0m5vI000008WW0L261A10G0E0H009W07
+000e00004GG3000e18W001WYAW06801000X0004D00eI8aKWW4002G072X4Y8aC000G8Y441
+018G010HH0842A2G2000W1G1WYG50G18q081014oG480140402W840410W02I04H0GI00010
+040408Y0W0492W6W443mCa90g0XW4100000C0840000400HAOmVd90000G04800GGm4IC08W
+0AG01A4L208W0a0K11W04000iI400c85W0n8000400GW8100200W0X000M4fm00205150008
+20012008600000l8W04000L28eIP30m0000202H000I0004G00010G00Wm0GCWG410X0X96O
+4G506H0430802021IG4Z0eA0020020Z0010080000004000G400504100000IX00110085f0
+81a000aA08J1m0009a2GAfGGe0200ag7V385e0W4o4XKIH0b0421850W00C00HInC0W4f085
+fI00a2G0000eGdK200004018Lcw6G00002022100008800G00010G20fa21mWGEu6yGd1G0I
+08bK12400402010G2WoRD00080e00WZyD000100018G40X004G00H2220015X00YW20W4602
+944028CWWCe0KW0fG0W0G108Y0WW800W0408G68W0GWKqeyD00X4000144eP0G010008oTLj
+1G040000Ozel1GGAG_yt0W00G0840028488102KWK10009G1080WG3520W0a0YK2005G200H
+00H004H0800W8G0e_@4011OA0K0400G030000G110G01820W183YGeW08C0e0X211810018Y
+X21W00X1Y9000100n8q00I00092Ha8400G802510018GW0B_ms0WxU0W40GW0G2W000G0021
+20GooiD0W00000W0c040G000906WG02G70O0YW82801Wv000X001023G005a9mtj6008040C
+0Sv_6S7g1080W002000G4GA0000800eW000W4804G42G0K000a02080GOfA01GW00KG08G10
+08801G000004gC1G02450G1a0X01024K21W000YK9100mJiK0G406A00G0000KA806402110
+00G0W2ueX6K9h100040001103121G008000WW0408000G204Xl1001G00200840O@V30R100
+4qP10000G0O0080zA1W20@BqB0021vl00008404000W_00q0ix5w300XmUA06O000850AGV0
+0O0sV10009AfF0002QS1006pm041000031GK00000SegV323F110000y50I1W1hGq18000W0
+0200G0000808B000022000000Wdw00ML000A4_l00gW204n72Dp0@if0_w11ypC0wZF0qcF0
+eL30GFYmFU4XlyW0@u10@o30kf70SL10ug2ud7Xm7V0Xxg2WVy10V4000RQc1m7X0WRIWVsa
+0Vy13_V00UJ10mW1IIp0@lf0_w10Mlt00C0WU410jf0NPJ1_G4PyX804000miZ_N108c008l
+1Gmu2a507G500WE000p1A16NGYCk0tOS1g0e2S3G9k6WIqO0benf0OW2M3eK0e8A03aen000
+er5G9Ai2IKO5eYW2ODW4WA09HC02Y020048008G04nC382070300GK000o000cP00Cp0pOc1
+Z1W3K9503000WQ000r0O0C2m003W000020008_@_l1k600OuW5y@l1AeA1Tu12ILLgoX7yW7
+Eu1F8u3UGm3zWWPA31@30FafCggAgKLL4igg8eg045W1_@m3ym30uX74KLL9e@000WeqC4ym
+38OcPOc@0GLLTWPcHGCpCWE400YXB1080000mRK0WRA20NL00k91_uH8SJ140000u7H0mDFQ
+WS3S400uc20OAyGwntWP3hetV3080WFoj40008K100yFd7FdvHoudCvf11tR0108Wtwg0001
+0G00Wqub00WxPusU0100K000udt6000WuqR9Qnba7XVu8oG_t@1Gs80Zsw1201WarLPYTF6O
+t00m00PcBnve604012001G1yF0000Z100mGmU0W08eDU340000240ud_G00100801000208W
+0000000e000000CJb14008010100GLumU30000I20GSyh4002G0GW08aA3owt01009040000
+ih001087N30080YG014000IJx60025ihk400g0iGj100090G04Lvi10400048W080WH0G1Gt
+m608GG00400I220000080W840000e0840G0002030100018X0Z01000A20000W80811KGmY0
+8420ae4YOIG404W0800GH40QWYG11b0068Y43K000090G4400000iY800200080442010400
+2eG4001i02Y2001X08a04G0062W48C0021002GG5Y412P250H1W2W0020010840450WW2002
+0G02W004K00ask100W01100000G40I18000G24m00000GWG221000430301408400000CW0W
+00G08002314a000Y0004G8000186X0Y20021W0050GGAG000070G9O000005Z400180040G2
+8010G20WG040WGg00J0000401e14000240E0X00Y860G0280W0GW25GO4G182410000W4182
+04800010K14620G02000W04020020W0204808D@4AcmW4nD0W0W0200042y0FyP090630G04
+GG34G8584Sl1W0G0e838G100GW00nqX6000000mSQ_z6040000W0025GuL@DW00801W24002
+2hTP0000008OGa0480400W084ufN3000400I41G0004000008001020080000YuRV34040C@
+V2HpQ0A00J010Y0050szt000G4203000G3G20W00400080GGI00004000O010011WG004G00
+008800000MA0CCW1P_dW8Y000044024200G0qth100J00000800G4Y000IY00000C0410Yit
+WtHb0001W014WJqD0200W020Yf_D0024ny@981G00E2G0K0YWu@DWC0020800G00100G4000
+0000e400W200G000060040000X3U0WOGJ38000UNl10A008018G0W4W02001b824024086G0
+W8m000G110002000cDW802400440qsz3jmb0000aqsDW000908G8080GJUaGcx9iNk1021G0
+000ahW1200W00G00204000W400008010D@R000gwY0Ce_z40280iFf1tmR0020C08000W100
+0208800HG00GYx68084uSTCW0060040000GGYw904000002n7T6000G0X02Gtu6000W0I400
+4201206G0300W0400e4G0000040W00W0402e000008I000e920000G042a818WImC1010GW0
+W0000WW0A010080G001G00G5MP0G0WeeCJezv4Mqd10050m0110O0101W100000O0290IG40
+04c082000PG40Y001WG0H000000Y08gGW2G1WW380b118CH400000484825400COG3401G00
+2H8Y0G008q000WcJ002002Kq0eCW0000K001G0YGC414580A18H00804XH4101800GOC00WW
+OWeYC8080H0H0fgI02GW2810204101DXBX0AH0I0GG04088G0HWY0801080080G0010WfO04
+00q0200I00I088WL121I0W5a0Gf01aG1G4L0X00591FC9004111040W08b01582Y00048G04
+00000b300824000G084W050000044G0000W0g80gW04H0AW80YAgWWE4I4e0G88000308Le2
+o08200H44804026m00022WvQU010858000C0G2W2004104IAe0L20220W28c1000W8e090G2
+00a2KW080G00G9000O200WK8006140285008242WK@Yd0pC5028582XK000000cdaA@V3050
+GA400W02000G0008010002G80G1040Od63W009Gg008GE3002000fa21009220A0A2HW000M
+ztWsmDuEJ3050000003000200W8G00Kx_R00084042000400G60qaV20900801004GY40W10
+0018009GWY8Ggut0W0002000000mO9G0Oq@4420W04W0G001GA09800000W0Y00eG0158000
+008K804H0WXQI4G010G6I0dOom9v6008004840WI0D00280520G0000820100H0Y030000G0
+10a11WY0020KH0G02000204WXZR0G031005W00Y8W102GG00W040W00040m00@rR000YT000
+00mX0001a12280G020804004W00G00W00H0HWW000010400000209G0446OGS2A0A0444H20
+I0J8EO90804G0040f8U6e00984AH4e08000002L4K0H008C208Y0000G800200A20W088G1G
+8022WYG0009001G001aC2I44Y41000YG0Ga02W410890082W0022GW000080001000VR0000
+000Y20W000W04002000Y20G0000n000WW2G400YW002000a0201501G08080G0000W810110
+8000A6rWG@DuQ@400zIW000K80040WG00000WD2000Wj0M8008e720000f0m00G0OL207WzK
+WL0G05IR1000GO000000r10008X3qt2000Gl0W09fR0g30200e3000Wu6z00000ULQ34002X
+eA0000e0oaW00W480082oYp03000Gm1wZXpWvvD00q700004l0P1004Gm002yEV2208G0GqP
+AZepK6@hALggAHmCpWkA60G4M3WvV0000Wt10WicC0001W2W2GFY0WMD0eiQ0VuZ0_n30_XF
+0SrOnD00@i910008y@0nmP000C830uZG0Gz9m@W3000WA00mEn60Wg0000g20Y820CZ0K500
+C0K0Qp20qc20e7Hu6FYm7Y8WhC0W04YT2@@p0000K0Gw00We2O7X18AGB0LW00L00061008k
+00GC1OWO2I207m400OF000v00065006A0k4M1Z1W0S300e200GG00WX100J7WP66Wv080c10
+0410080000eS1006L000k0g8g0m0W1e30003000e048G78G0NWE4TWi0W0O0W0L101AQCS6m
+0p4d1Z103K1004500mC000m400H60200m_3601000mH0e@p0GgOGi0CZN0I15u400000cX70
+00m1G4Yuvlz600G4O00W000041WWzCGLOWX@B00tK00_@30Wo30QJ10qc2yb7HuV50m@1jR0
+000Ae20W2D40W2A0eA0000PeA0000F00WWKG88aWGGe40HG909XI0I2c0a04Y8Y9t0V000_8
+Y00000ug10CIXA_i7ZpzD8@V3MsFX_jPuU@7Mro0000000AbEoNYJWIu9jMozFXRtaO8y4_@
+dXrUDe205kl_XwLJ0000cI10WB3muuV3I2d10G1Wp@ZHnT2jqF600ihsphbcxsu0S9_sdXVR
+DOcs4020000W0wsx4o4DXMtP8Gk40ki04C06ttRmv@6yLk100047e7300W8HoBHAK6SOF3W0
+00Ift000G000W0G00000022W00800212008zkRmuyF00003WG0000G0I000bydGCq6W824W0
+0G0A80WFxJW04WGDT601220200010W81001008W040008W01020000140G000024Fht00004
+000W00A000WG0H040Y80100400W0402000Y00020480G20440100W2s7sWRTCGG00000140G
+087xd00WaN00G400200040300000WWC01040Y48088Gc1t0aGA00140WYe00G0W00H400X12
+H4G4a0280X0G020W0420W060000000801YuF1W84000OWMIB1I000HXP0440000100W04000
+01004G0a0W14000000201WMDs0Y00000010001Kpd1Z5d0eU6200200X20k@t00m00080Wm0
+00G010W02001aG3u0014000W3000014W040404W024q8FkPGs@600G000W00G20000080101
+gb@XG5C002001G40000400W0UQsWu@D008G04004420000a0G400yRK2p1OGt@6000Wri000
+20G00008W20000002OW00W0010102mG04FzR0004G08800080020e0000680121004X0I002
+8I04G300HK1000000YWW@De1n7k2d1W0000C94oltWehD0200XW8002W00001001200005OW
+@4EYoW@@D000QRjo94rl10010G02049z3HjQmHs6084000610000002WPG4100202004X008
+Y80100800WvJ@W000WWtDevT300W000G40GGWW00G0000401000G00GIG0PdV3WW0GC@I52e
+70c@F10W1080000CG4yvV200W00GW08000K000W8404040420G4chp0C0G0000H0G0082000
+0004041002005SoGuw6Kad1ZzR00G00WW80G0W1G0000080wOy44004rlf7C7G0000004G0a
+0G0mHy600G00010Y001001G0bqR00002302000100WG000G00082W8Y00444W00000GI000a
+0uAbDAHL2a00W010G000W0G4001WWnJT600080AW0GUjL00Wm8JJ90021102000CH4Y00Wny
+DuDV38010010m0021200W8414G00G02rtW1It0108IWs6G0002H08420K40030A21202602G
+1K42GGX84X04100e2008804ZA00wQW4UEtW8sD0KA300020004G000012G0W000W00m02020
+0m408Y8YW014G010W8000I4004HG40W028W0H09551YpCZ26e80X8Y0W0GG40C1000X8p0GL
+B9q_l18200E@t00009bYQ00082Y0008eG01LW40W1G0W0180G0010G4Y8248mC0GX02un43s
+K@1000yO1g0gFq0400020100I0m04W21118400A00210004G010000e042W0W08H804582b8
+AEVm0W2144H4I0qW0W4051W00mwe60880SPs70009C_V2xpomUi6000WA0V38b0981408guA
+00G_J008000000a2I00O40GAfGG41000aAwQ385000H41W0G9W0W0WQxCOT03G00IHAWG0a0
+4mv@600f000G2820GA0a00bo@0001mkMP8JU6wkF18000000Ga100G0e0OJvA0h7W0GW0000
+05G2104060014006840AG0G6080eW24X0G1A0AG000W0804exV3YHq000280mmGW02W0G000
+HG10G0G40a1WjwMnV_60240w3@40012002000X800000AW0004020801J41000C0GlAL000W
+ot200m1W0W30WG1000W15800201C8038G0023A40a00000008W000G0204000W0YW114CeW2
+G2G6302Z2G0711004808W6a00000G7020600WRXI0008nM@6000I9Y@40003Kul1O4X00000
+0WQ202H0W4Y2m2tC000aGArL000P0008Gb@6000G0G040002G009G80I500W0008000e0G6F
+60m00Ga0G089202200220140109H0W0G401W8W08e000G00E7MYwCI8FU3MnE10012@KQ000
+24000121W0000KJ4100f20mQnL0kQ9J00000U100W80068080z50GW0qAqd04H0Gl000G410
+14000o00004o083000183PGR000WU1W100y5oo3mW0TD00KB0800mlWPuMw4040G47g10000
+e1X00WFY0WwpF0FyF0000_100000H0010m4p0eC10000004H40Az81Q100000WrA002S00K8
+W0W8Y000aH6daR0W0C4W0O80Pe84H1m0000003140CJK0c@10Sr0ewc2uZ82m7H0eRA0Gh61
+WMD00jQ0V000_G4700000000GhDsdW000WLfIetQ301W1000206000C00002000C000C1Omm
+0G85W4cmE10010D0O000000017000H8G2cp08CM1P1a3S389c5GIaSWaev68HpDWR4NWr0A0
+S14YnoP02300Y80LCp0H0W1c1006300O600G420WPCG4oSmO080C0uJwGyVE0002wMN0EZP0
+W030exK1mD9mL00W@XW8xkB0g100W70BfN1uw0000004CpC0WgguV0KnCp8e7UGGgEZWEy01
+Tu1pGLLgIL70W@140000W60GLv2000Whsa00004kf00_H40yH000000mL30000Yh60WVtgO7
+S6IzUZ4kh8ww4iF000080ufR9k7@XWuDG002GHTXSMU22002W0000028OqQ6wa@100a0Rf9n
+MI6qBR200OcEB@XymDO3F6Yds020W40G00_EOZUmC0006GpsFCY_C1ZQmE_90W70eLzJocrW
+_mz8e96YHp04002Pmd0120WKub88K6Ip8XhqP00004S0GWklCeIU60G00ysi180002dt0042
+020W0Yw5ZysJ0020I6S90W00000A0000200WeTIOW000eflDenU3002400W000H0miz6a6N2
+Hj@000jV00000400@cmW8qJ0G01000480001000Y10W0WG1001080040020W040041000008
+40008A10000040VHRmmK6000060150020000K40WWWG80009AGuIT300G00W00G9n00G0240
+Y4G02400C0010W040010e01AW0400280Yit020020W000IG0yXc10@900001004000004000
+1050G020040GW04G020W00W0YWEeD08W0400880500220040019e020004W8000340408W00
+0018W00W0240W0800040eG4000000GH20206000W2nG00W1001040004000Wm1f400021844
+20000mG0002400002020004W02008080000000600800800W00020200000W6k00G6s6qBd1
+40000W000GOW1W020W0022W0441000e0I0210W0G81040028W0Y000000GG000X02C010144
+40W0W0200018W00SD73I@B140i0DuRmUR600089Kx44040c4d1023800G02A00uaI6400000
+0ee_V300aA300001008010WwHD0402mDy6008WO0R30040SXj14001wvs04AX080008W00l7
+P2biP01000200400G412W000002082010O0000000X00400q@j10G0W00002130ugQ3s5tWb
+3P8zV90_40000WCYV3008a0G00u6V3s3t0WG009oc0G80001W00GC0000001046W020004uq
+_J04000W80G40001SPmI_60G0W4Y0080104000G802Hwmn00114200G00O10040002800030
+000004GGMS1300GSe300o6F100G0W00Y002WKeT2004G02G000GG10W880000000A080G402
+G0C400120mc86801aeE530G0W0500ObV3000Y4NN200000G0W000Hi@V3cja1080008W0o8L
+YhqP000wPpu9auj1jqKntx600200W000I404010008W0800G8004I800000W0G00WRpRG5N6
+y3k11SbGKy6aJ930240W100y7k104080228080GOvKC0KY0SJw3Pgdmfn9K7l100e811W888
+008cU3000WX00006050H00G4000W044kqt00G500G4W00LW0G800H8G408040005410S008H
+04K02mWG02WH420YKG0WI00020W0610eWe081002000020VIl2000mq4G0oQF10W01000042
+8G0000080018008008W008000KG00e0604X404c94XIe81O05e6180G804GW2XX002423241
+10H40202GK04480044000G000H400G008GKGK010020100H0082000202G060G0400GKG100
+G000l_t004n8247Ck_9XKyV00GQ70000W2000200W20014G21043Oii9000200WW10G02040
+00G1K01WG800XW420X0AI4W04DK40LC200O4CW24G10805904G40200JfDXQxD00I18G20WI
+JCexU3W80GDXx302000Y02W00W8WLC0qe0SvF3a200010Giz_3NVP0f00008K00G00002GUi
+B302002TB1000ONgQmm@6W80008040G80WeMJudP3e0X0S2k1XxO000GAW0200GCeoc53Z00
+0Rzo0020eNwV0000Y00I14108ztR0G0002420000m000W1008000q00000000X35aGVHF000
+80108G_d600W05080h2CGB12W2p_R0001m9lJ0110mR@L00eX_es40100000100W0G2S64v7
+360060300G44m0PG0000801200Vrd0GX0ekUP8vu4010000448Rb44080000W03G00420804
+0GF5d0G0C00000Y000YXR3GM905iR0044WYgCOoF30G000G800WG0mAx609G200000018042
+00@Jn008000G0aJxp0008amTJ02000g10800e08A00000E00000401G7260eG087G680H7G0
+00W300GhoLeI008pV60I00000QftV6000a100000ZGj00000w00000Xgat0G000004G00048
+400e_O6000UA30V420y84Yu30Sr0rrR00tK000010001SJ1W0000S6o4W1000F0_tL003O00
+WHgn0008VdR6u00AG1000KKGXBzC0000000K50y82fgd00A0GRAGWsKWR0003O0020016002
+400480nGP00G4nJhP002608Cp0w000K100Mvn0YA00480C0O0Y0W2m000W100WfRuCG088g1
+m0WiuC0022mSsL0UI0u39300W103040600We000c20012O0H503000600WW0004200CZ108A
+1K1G1W101qbW00C00GK1m0G0W1W00100O9830000w330mZ800041000uHE2mTm0Wk310000@
+W1C00WF@D0W0KLi@6exNGnpF@ZZ00G@pAW_700YXh2q1000000X8208Y8000g0000e0m00W0
+0W84100w00YG400W30000Sr000mP8ug1GG00mC00W000010WW200110y02004qg10F002002
+400K00kY1ZEDbOHEF6TdXyhIeKxA_fzXmjJOQkDQ8zXCfIujS9EaBXWfDW002G2rL80000SJ
+1GBw9aIB60800U_FX_qD0200GQw900W2eGz4M0CafqtuauA40080000tH00G9vCKBP5DjdGb
+xRCXQ2l@zmAy6yJq3RndGPk9Kkm3Dnp00WObi0tOmy70002qFl1vW@GvwF0000AsT34W41y9
+X1490000H20K0000H000K400000G2000G0G010200G500800000GfYdmJv90100008800000
+Wh10RxRW02A00GW07ncW040041000GW0G404KXl1821200040WW20100mIv60K40efU9040K
+0W02240G2000906G128022yD18GK0GW201G808a0G08YK04W00W0H0000G84501XG0eVV300
+K000420004W008W2_D0000dr000000020W84G01SBX102W1W008SDd1zzR042020008pJO0G
+0G0O00020W00400aeb10042002404G000XW042900420402G0G400060c21002000W0I0000
+G00m0020642091100G0C24W8W10H0G8000M00C0G0G0a000puQ0010WutCusV3G00000WWEl
+T30WAXW114e3R3000200600003GHQ6Sog10GO40X00000m120GIaV9irl1W000800G0280W0
+2G0011000089FQ084004G002080G0000024024W010040404DoP0200el7D04GW0010mzxJe
+nA30010g000v@V30Te0aSU2Fpd050G0080040008W08W008000GGF_64Hl1A0000004W0800
+m00GwW980000000800W020120000G4G0WOm0vjU3000a9000080XWW0W000020HG0H00000I
+00020mTQ600080D122W01a0sD0040miY900G00000dx0080020r4dm8l6000G010O0022WSn
+Pej@40001C8k1V5PGy@C0108WHW0WO00049200G08044G0400uLF30144048001000030Wd_
+J040001X0mN_D0W00mOjF000W0001002flI0Uu@@4C100800008Y000101Z0002W000G0800
+80WW20Gby9C4U2G000000480G0H00002480a0G004W0000800400024000Cay@D0I00nN760
+1W18YO6080GKFG2xjRm326K@l10CA0005GSQe1@_QGGc6aNP2BjRmbu604m0OT93cY_10406
+000WG001SZl1ZJO0008G80000008XS00002W0010IUz6Cei108G0G2W0aRl18000000C0040
+uv6900W00000ZO00GqeCCck1FbRGDX6qke1J5Qmj@6i2i1ZMpmkj600G00200egg0K8CY02K
+6Gm4D01X0W04G130G4H50218K241H000OW02mWW0f410p0Y0e200048K0n080015Y880OG04
+2WW10g6pWq9D00014W00000j3WWG018000601G0G0480AWdyDW2040Iu014E81Y820801Ke2
+0aW02000m010030Y8408280ahD3040Ce00GWW08G40G020000GWC086H4G4G8W082KC1006O
+0W82G005G0a82WOG4014C01080005000G0000K00G008G000W04X6G800Y0UztWYvJ8vU30N
+700W0010H0GUT6000000HG2GW0K30O0DaQ0080m66CG8000YW10C00000W0X0401000W082G
+S@643f104G20H4082100000W00GA000W0101AF9110008G000009000W2010010GgntD00H0
+W4000G950000G0W0000e0G808bY00010WKa20838r0q954W8200G0I9W004040LC06GA82G0
+0100a2J900000Af0500iIH238Om8_I000aACS302K0002G00W0008GIG120E102000W00001
+2008G00WwwC0800000X204200000WO2000e0080090000W00K410005880A0010W0Izr6000
+178608a000O128G830080W800008G121m2B010KPSR000100004W2W0ggnWp_hWP000Y0146
+G4000000Y00880100X0IQ_90G0008120G08eDkD00004G4800000WW8W0C000G080a0A240W
+084X0WWO0b0A020000040808000G0707000Xj210H000W880X000u400H000008GO20080X1
+nH04e000I4P0G01G04G0xGZ4G860aDa4000a0H0021Gm091H288Y0G2040O4Xa4000GY1000
+0800oW7aP0m4W02W000a800012URp0005000CW0900002000L0nKk60W000G0O00002Y2010
+0028820CAl10040040G8W04SN630W08qDk10A000001S_l18400QzM200a02041W801YiI00
+00y2000080025mR02OW8NGW2jlP0W0000090020810r2C7g1pyR0w5H010K88h02010gKqh1
+000w50G10iL000G2Bw7W000OA00000300000e70000G2XUdG0400508010012000qBG5864J
+d1r6BHvg6001et10002Jv60Oc9007KK0020Eu01000WFY000WCWoS70W008xu3_60G00W040
+C0W0A003000O0Z3G1A00WC00WcuCu@V30WcgK_h10000bF000Ua1000000rN00qO3BLNnfp6
+4Yl1P_R00_@tnaD8EP9y@l00000WW100B3G506mS080C000g00044008g10GM2W1X203040L
+0ymk10Wi3000103G7040K0g000O00086008o000i3WWu6W10C030006000o1000xM000P700
+oCWAWR069mb0000C700OE03mSmS048W1D8P008C00080Y2W0W000aGU20400Gw080W1u2000
+500WK93mco0mJTIo4nakO000m00_hA08200SqH0O_v10W008W0mRt6iuj19yR00ou6p000W0
+m@10000007r800Grz9000000WvD00yB80mF_XP0cmt00yq20eV00uaJ0mCLH0NBWgU00t92W
+3@d00V10StrDA0WPyFWGLHf100WMf200W00004py30_lgzoEfkR9wGV3Wc00T2GIm0gyRl1t
+VRGQ_IiG_3HAQm3y9W0008Y83Ify1X100fWRGCwFSwX10010ggpZKrJOiB3sEOcJn310GCP1
+vOqUL2joLnI2FaKY1pgRmvN6aeI5@m@0060020009bO0010WzuDW00GG3_F0iT0uP_7AFFXh
+82fFSCG000000WH00010G01260200K0YzrWQ1Pu4U3040090802G000220eT2CODS32OsW0x
+JmJ0000W804100HpdGK_6W00000800404000W22000102028000Y0Ims@6acj1j@d04H0WWw
+J08402WG00440I8W0G1K00000210WWY02AA20WG00W18G818WG200W0002C004W0We40ElsW
+fJI0C00W00aW0uCeDL300yJ002B441021GG0a0G10A08G5G01000X058o1v68WI0OuV34040
+000204211G002400G01088I0000002800qM_6G800es730W00G0020CSW08WAG08G0002G1X
+00WGW30WG0002800IW4e0000e00W42001002C20GWG280HW00200002000G0A00e00X8WR_b
+00000GA002H98K0G1G00000801002WvuD8hR38000W300m010080W0m020000WC18G0GG200
+H0100AY1LD000200G8WF_D8kB308W0yoi100W10101G0000W20014008000ZaRG_@98404fx
+@4szpWH@D004GGKE90000dt0000010K000OW30G00400KX000000380S0040010YRrWvxJm4
+02G@bFSXl1W00001W0Stl1O040040002H8eBl480002O008FV3sGo0041000808W08jbQ200
+40AVaXQtCOW2300u_80000C60GEq600W0uOr4on_10001010GEdC4000O60000GC000200W1
+2mA@6G0000610mW@68000el23M@pWvJOevU3w_t0000aNxdWOZ400040psPW804Wt@D0G008
+0GWeSKC0c00mHtFiuE37dP0G000e00000W4UVt0oG00dvQGOg60000101018H00808020102
+Ad1000Jr@pGak6Kec10802UBt0000yk240EAsWIQJ000040006000W03G0olp00104TnRmIe
+Cazu30020wyE10100000Ww2s01000000H001000400B000140WisD003D0001010010002W6
+00agA604H000e6KYl10022000P00800G010080oWuD08004000of5CuFPCQomWUyJ040W448
+2200040G800080800001000Gg0GaGW004GQ004Ae001G40100000A1I0G0Y048100018DkG3
+01005Ii1000W100X80G4008X84000WZl0000GX0G004Y10H4100109410W846208GW0gW000
+03CO0600G400200GmW0WG200000G0a6q4T2vyR00002020Z000W00X41YI00na8Y00G6L00G
+0G0G0W0A0aWm0K1KYY200105G0000W008A000qW281H8W01000G800UaFX3JJ0802W008008
+04000ODH80W41421O000000H008VwR000588I00W0O0Eet002040100108004G48ds740000
+0024W04H2zF00f00002m9V6azl12600ATF100G00GA4eWIG00H40GA1000HgjtDW00045000
+Y85WG00C1WKI120WW200000aNI1WC84000WKb160G00I9Lzz6028500000f04G0080aI0800
+0000eIWi0000Q0gyRb0820X4000c9bKDDdW0000W00080I0sXq00002000MQytWinDOQ33GW
+00W8G801000101ad@DOHV302110W0008W0GO@60I70120100W20W0WGn0O00002002000100
+5KW0YO00100oR@90011OWV9000104n820G10G0XWLmDuvV302004gZ1Nvd0180WsnDugW40X
+90Q000b0I0gW006110S0I00WE000500G02C01W002098880W000WmO1GK001CWW04W002O40
+00001e0W0WG0163088G00OW0460AW2SgX10G40gZqWLcaW800020000YW0O02s50000W0Y00
+G4mS@90W4WRsQ308000G40Ox@44H42004000082KW000000G108_@t0002Y0040_5o000000
+042X6GG20YW00080ae8WVqDG0G0010040W0009000G02KmV20002werWkbPOT_40WG000102
+100Y800XElJ0049GZL6000G0300GSz900400rtG0G011084100020WGav2020GeGc38000v2
+00W200G0000w7000G0M000GR2z20WGGYA0Sml14W_20G0015oc01GH0M0004000000WGs400
+00G1iW00K01ag_VG10000O002G08000080zd00205A@18sH2G1cGR00XNy100Sqj127G5K10
+0xhm000FHKs@6000k700000@F3_30004I0ACdXbuC00@1GlW6000WGrY08Lt0Ggcn@G9ZPK5
+0tT8W1000WW0WBSwl1E00000000GL100Ucno@601W0eWyD0000A00CI1O8B1K1WEwI000600
+4CWcuCOsU308000y300e3e3G6G70SWC000C000W3004n008F3W0K3W104WB00GK000H100mG
+400GS600e4mDWKmO0u0L08B0300e300H506WCWe0mW01C0O000WB000L06Fubmtv98048r0G
+0W3m000e3000C00ex80m7H8fJ3MYt00y7WAn30014p00000mT1mUo6G000000Ka20000y@V@
+@@00oC300GBwYA0z3C0e5000S02000000UzV0uy0ymC0a1T2_J00C200000gN1g00000000u
+X000000WPk2X1X@R000uB0Eu00000K5_7iQl10000z200KYi4zNxnKO9SiV5000Oe300CUc7
+XZxHZSRCnO2z_p0200XclV8bM3ABdX3qP080000Wgot38v6i7IINYF@D8my7I19XFvsOyb4I
+sV30n70Fa7IlQO4OE9Nb@00G0WIob8UP6YZtWVnJ00G000004J000JplH7v90010eHU6ocFX
+CwJOLU3ggo000A00000900O4vj10000f0W0cyl180G0IiF10040410Wo@tWyuCeWzA00yaTO
+c1PrRG@zC00102408400Ge3ED0800000420010e0800400KTl100001010W00088V3oht001
+2G000W002010012085W0200108GzlR000G000GW208042010e8WG8G0088120010W0Y04041
+0W0WG0G400004L404Nzp08K31X0G0lqp0000401K008000410qQj1PyRW0020000G8040000
+4G8G02001090280000022G010W0280000G000080004W1GOcOr013W04G228004088W8iV30
+03G00I4000G808G0200D0G40W300a@g10W00G0G2002000WImczFeL2a1040uNf9C6U24000
+W2W0040O08200800000200408084G020100W410W00H0G8W02001020890fxT30020SvG2W0
+0090000200i@V3C000ixV2D@R00044W0080080040010W00C20Kmz900a4OxV600yZd@l4lO
+R00a0000W0DeR0000GG800tzR0101WssJuQ@4EtsW9zbONV30000zbk11GQ3m13Ww@b00820
+041WAzPu@V300W4jyH8fcbGkl98Y008rbGMRpWvDPu_@4000nHQ00u0qD0004T_l1000H2Et
+02000G4H06ny48002dFR0010Y4rDOSKF01I08001eEl700CFSTYDXKM10W0WQgDeA46cvAX8
+fDueFF0G4020Y00H000YG0WAuJ00B3GZHUa6V2vuP0411W3tbeIg700G000W0wIU38210040
+0GGG00C400G0000W0WdRT30011413WGKW4ztG2fKQWo10etgbeXn4oU81000YG804DG48kwp
+6dSR0GG4WK@D09000I0000001800882101G20X000mkiO0W01000000G6WbkIOK@400mUEMZ
+40000080Yacn30001080W000m00241450W7PbOkV30002i@l1400000Z0iCT20000100GTkM
+27m@Gwx9WG0W8lB3osd1GKDK0010wr_Xz@DOzQ3MSbX0bse2S3cKnWyzJu976oY43000W000
+Y_sF1008873z0000aNwDefyA8580SFH575W1002mQiD0W90yoqCStl1dGQGe0O00K0W0W000
+024040808O06gc100NQtwRm9cIiz@37yRmE@6W400uUz7E1A10W2W@QR0800WByDe0U3wA6Z
+v9CeT63Qht00800pk@0uL2WTiseRbD0000URC3Tid009g00000S000ECc1W00040eGkOU320
+G90W00W00L00000208GqCFWU81evF66MDXeDDO4P6000ISlf1HHZ1G00010K8000KW2084Ul
+1W10000Wt3mmF700000V41P300H77otqI00ezkcQC08g00000GyX2GFMOq3760G410WC2020
+00404Gtz90W000J50HORCCrF360000WC000G00004000TWe0U04A2000cWppgW010000GciX
+P000080G000W00v3amY_900080200040004300byW1S00W5WauEvA000m7BP20000ZwCXvkz
+000mD00ND0_zVW200yz@0qi@3_pE0cZMYIu8v0SI00uP4cjA9EQGf4aClN20a007D@XPl99n
+@70Fy0yFD3xoQGp7UyDz3dKdGzz6iVT5rXp3000Qk300rZNq7nF00W00G040101XBYVucuDw
+Y1300ynN7pm5D6CB260081c@tWLeC8Su7kQ914e20zmR02G0G1082bCR0000u3PD80630200
+Sql14G00040009008O_7cHE100000uMGYDrWEWJurA300m00001008100K000041vhR02000
+Y2000404Mmw1500GY02G7t910002tTR0400m8zDOEL34000aQF3DwQ08W0W@zJ000011W00G
+4H0rjp0000Qi2005PbW0Y0W8OJuSq4Eyt010800000RYt0G000040800G008WaW0mGWe20Wb
+xD04I08A84001n80G00008W000604X0m3i90600G0000GO2W3_J00010042WC_P00050G008
+2800F@p000CwpqC08000I0G02100zmO0000YM1C008CG5K900Y000m000W041008hPp00G00
+048KW100_as020005@R0100000O01yP08W0WWyVu_V30W8WKGj1t6_004Gao@J0GA1qzXF00
+088dQ3oeEXEhDeEV3YuF1W00W00G05I0me0Y584F3008X0WW200200100fF5VeSV3ct@1008
+W001100280510M0000410WkrDew@7000GwH00OpO90G00W8082H000008204H400W8Q@FXxn
+PuBV300206Th1BwRGWY6q7j100208O00STV2tnRGp@6003008200G000800WW000000Wqx93
+zMo002Bsk@VOC03swt0001YI400gz4ZdkD0180mzdIyLk15qRGQL60100w8z70042qeh1000
+2G0001200uKI3cby10000WcF0_@t0041H000ZY0mWi@DuP_4Y1mWfpIG000W00WWfpJeRS3s
+YF10110rbR0A00WjtJ00210Wa0WDIb00G8m9y60012eqR6o0c1000GM400_WEXt@C0GGY800
+0H018000H41400qkh104H00K404kd182001000rql12G00gyoW0fJ08C002c00000G0W010W
+008220004009020814G8400YoE10G0W0K0W04003440IGO0Kyo6SOC3xxd00W3qS2J8@_4GI
+400GWYW0H410Y20L0G40000801282000H00000G40WX808G02an02W09K0000018Ksl1bUO0
+G404W80H8G00IHt0W00401aGG080YG00feV6W00a0508K12C1HeW00DWW0Wu0CXG2200a8qD
+3ked1mk20L@R0040H000Z00n841gH0043G4WW1080H0430Y0W8W8W8A2C000W0mlYC000Y0G
+001W000ZGY002000Y01iol10KA2X04G84Ga2041901GgPzDWKG0000k040500m0065F11W08
+W81G800OG150XK2K00a4G42008200wRBX0IJ0q00Gz@60W4000W85f0G9Ha00a2004H2004f
+002AXe6bIA8eaG2801YnF10800W2A0030G00f80K00fG0HAG00WWW8e850H8000080O80H0A
+H12H0842008000Y8200028100CW8W00000M20SiV228000W0W0W010aH12Gm608000h8R0Y0
+0WI@P00WqTjZCG0G0n04060W24300O00A10206YW2008W002m00C1205kd0G00000GG0000w
+@s0H1Ye4n4n000W00mG00G90O00GOWFe004G1uXG2G1Wuq330I0001010000oa2900041080
+20100WE0W0301040481G08Sr4grb1m9C0J0pWm0090m04802G02W000WW0802010Y00002G0
+A2Q_tWEDD0GW80200040mW0W04H5Hm2GX14G4Wi15200002418400210000X10800G000004
+IY0000010a0WCwX4QbF107e1W0202qs0A04m240W0001aex3000G4600SFF32200000HA0I4
+0104900G0401A82W00W08008100GAGHnC00400W0G45000G0W0WW02gYt0010We@0202wj00
+10000C00404r0G10g5w901W0uH0u0T3k_t00GT00000v000001000080oA003WaB0100010X
+Sx_300qwdHb1041z280GmuBqB0804Zl0W8W0G1020YW_G408Cw5YW8@E3Yut0m20000qGGV1
+004GV102m80048000z40GW0u82A000GmG8aWWG81980I0IW100000P0K000e@2G_W_PGQ0iC
+Q0eQgOvoePEeqYbf10pCh2z4ol_1GF90p_R00KL50000_7W8zm3HxlgYsV04DLLfA@1m3UGb
+gKLq0uVeLbe0EW00000SA0N@d000eE068000000700W120edx40_100u2m001a50F0202WE0
+00m1004h000K080GatC00pC00260L4L0g0G1K100a500agf18g002@c1000i1Md0J7000CWV
+05Wz0A0c2K0Cr00Og1ypK3i7e6mFG1mUW00J1OAE383m44xl1220008000m0I0m5W0mF8B0H
+0N0Ana0KY07UU50mF@svN2BJ300000KjA024F0m30Ofq0mZN0IeoV6008Niyl1000H10008W
+cJ4WRg80JWH0gW00K14qf30eMOHG7C3efX6mqGI8LQ3000qZA004000004CJP0Gcoeggan@0
+Gm7UWWP2m_OE10000W40mjS@a7_3nQpG3SRSpV2HSxHEJ6OG008QDaAK8gM1iw_y7M7TZnzK
+10GSqNvd4R_6PkdGS_600G0StJ32_qWjdDeRV3UPdX4lD8jz4YRtW7xDeY_7Yuo0080C000a
+00184c_3VmbGN_6G000080G00G02010000080500G0882000000GO401800000W200000G0H
+0400e842oG240Y4I00WWGW00G0020020040bqPm0M6q9l10W000W0IW004ONU300800090uP
+P32Vt0000yk300_iF100G1Fcn040001GG0W0022rdXnqD000GmRt6020A12010A8G8L0000W
+G1Yds0G000000W10023000eIS3MwN20C00fwdW122WAHD8pV3420180048@@400GUMsl1DtP
+ms@F00081240Ia29ynh140W0c2q0H0100G480G020000Y40W10000W0m000000W82X200071
+0e9000H8e0001A040W00480G0011G8WW_J008GGP@Cisl1L_@muy604J1ufU3000W2010G10
+2mv@600G0u8Y7ggZXZmC0800000X4I00W080KC1HW000GG00WH9F60100u7T3AntWmaI0000
+uO@60008CMV30000MHi1@@d00GKeK@P0000Es0G0000000H07ssW80DeuR6000Gibi1000ow
+rdX1KD00002000YfsDujV30042204005W00000G000104040044S5d100W0GGW0Cql100G04
+0200n0G2Y0We8G0000210409W0010G040001mHP6y@l108Gxm6008200W008Y00000O600W8
+0WG400W0H028Y8008H8Y80O400004800W0Osk4W900GW8G400004GQmGmD0X0I407W13a02j
+GQ002204800C81X0003qnl12G01_1q01800TzPG5j6800GG002000W00008CG08G8W9_@l15
+Gc01000WVE0hOO0000802GC00000G4WW80W0001204004100D@RW800a@vD0G04mJW600002
+108000GG0W1A0W02000106W02G20W00000G0m00020400KOk1200114000800444W0002WPB
+D0800m4S9000W42010GO0WZsDuG1600000000RYZ42Qt08040TudmUj90800uvR30048qtk1
+00G0UAo000W0GG04cXF100150G050284YW11W0IW400002200009I0WA2000821A00GOG408
+008W8000000H4108104C4000X40A2m1H020WB2G220000Y2000e8Fxd00WeJ4J800480W000
+W1GWOgE380000G2G00H410000H41W800000Ga00e060nG0W0008W01Y1Z8013080KGW2aG0I
+003A4030S0140EG0HY0002HYOWG0H4080G404052Y82GWG3G090e000Y0a10G0W040A0OecV
+34C0Y0W0G41OGWOOc1IC0400eO8WM08A1860CK5240054103ld0ey31004J000Y02p02WYYY
+8OK2cZ88g650m0mW001e2n900084X801HH4HCrtRWG100020000040A6GG200I486WO40822
+p0W0519G140Z1fH4I9X4GK010WK85H4H60IHA0Y02020fWoCG0800HA00WG8bql1000eUBt0
+GX04W00G80K0G1W020IXY8GGG00YK00WmoPB1000qa400000200Ya20001820AI114001005
+80K0k100H002KG10D00Q080018000GZa2000GGaIA1O00WX20aI2m250I80f086a800aYK0W
+04G20W00HA0040081eW2400W0200pG0058000W00K1040006I00G0000Ge00002060400Y0G
+009A04040e1080G0028WnG10W0W0G746y@l1008V00W04Zf100G0n40WG0n410G103000005
+K0000K00200020G002e0P00022W20G0W24Ya001840W801AW0H0I82eW08PGmW85HW02WCq8
+G002WmCaX0C0O4um406040D80040ZGZm454i00EW01GGCmzz6WW000406008e0002GWCaY00
+000449G082W1G1a@sDu0T60sj0ayl1010404W0020120040q8Y8aX80m12G020WW010a0012
+8O0060110F0K041W310e0GW0004W0Om00mWG4H7GG04S9G800k0U022mWY0B94000XGG10W0
+0e2W0000HY4K240408G0WG28rU3Ehr000G0412I8440yzi1008I8GW40o445001205020G24
+Hyb0000MN600Y00208000IXaG020mff680A004W04000082G811Q0045018A080G00G00H10
+00020092A0Gc60020001000GW0Y2002W8G220Y0e@6206fl00XO40GI404WUtW8H0y5wT2Z0
+0nN0W0000012020G10000m0i00000K800mzr60o04200o0w31000uBDDQGz@900GP48X0080
+e50004400400Wq32000XZ0RW064yl100M00004A4oY0000WN00eQ7D0Pd0W3Go5qV110XzN0
+WG48416002GlR0e0i@2XnmPWGWG8XG80I0IW5aW100836421C2GA100GG4y00K00MAD0mNL0
+_lV0mSPewCc1_7GZbf10BJ30Bd60m@00iCDi400acb0WvP0u_V30US00Gf00We200c00n7w1
+EHL0LLLHwG0YsX74jCpuVPcn3U0W7yGqLfge@ZgGdfC0yH8eA0@@d000GG100026aW448198
+11GG22iW4C000OW0@W40_1w0y3s3m7m5WJSF0d8u0EHWLGYWx0k0K0O0i1m0000100G4000H
+500230L46We0G0K100K1008A00mm00WH5O602Gd9tJ0000lm0000400CC08OO0p1W2y30045
+G1W8W20HA00YK0L4AWe0L1S1A0Y2K0G4800W00WP602G7GK0K0C080P1GW06m01_110y3q1u
+7a50FWB06eE0CGm98WW881@301bfC_707CpC4yV08uX0GmCp0W@1W@100@300W@102sB1pCZ
+bOQ6BbsFMAD0@tV0_lq0e5j0moenI02sZ100iZhmP040e10SJ14O3L1uL30mD70WRA00tK0N
+DG0kQ01Sge0wc20qc000000GFY00AeWF4XG90I121X221814419000812WKG2IeG8aW19OSi
+64JjJNJbmZtmyV43NPBKfvR0000UU13sltZMiOuuiJIAO90050twLKUTT94z18NUR0W00ihj
+4LiBnfz6Kul4HcxH5_C00003_00mPS9aBV8rycGW_9020004G0100002080DxRmL_6CiVBZo
+p0040040W01jd004000i55zw9K5o6WW20euT3UqFXZzC8v@DwkFX8tPG00W00G0WNyJG0000
+Ns6W5y9fnZ7U8W1001WW0000W0GCrl1BxRGPqIipOE000Q5400ysuFVMR00GGXZkIuuILcka
+400BI12mp8z6SY16DVIo@@RizV20PN063Dd38h8ET9ImtWD289xZA000mmL00ux0LY6uadKj
+fe4C00CbqD0RXKuHZAO0yU1eNcVGG00SqA6lDoGaBOigl4Hq@0000O3100loIIq0LiYV2pDp
+GWiI4IX7hP420WZWGA_PQU3QrrZfBJ8TuAkK94GB007ogIq0vybhhP6qxjoRazm97EZq94@V
+4TNbgbJq0e5G29XKiqPKyqM_6fPiqYr90m008DT64000a205H1a0002A000000mWo3GY_@Ju
+Jz7I58ae12HW402Y020000882000001Y0000G04OA0K45W1t@R00mXWK0a8lk4wpoWK1K9QW
+GaZJ000muyxV3000vm9000OScJA0K45G8LuZHg0yKC09fvy@PG@Ncq@FLc6000Kl000Pfroc
+L@N0B6WzD0QFzghjqTjJ6sN3ZGBV00GdqvHKrUl100W0pBL2040Wj_23uO5WHvsuepAMPz10
+00WvgAnSh6y1u3@0RmCz6Sug47XdmYWF000St@00Grb@00W0ucG9kaTZj0mODPC00uijKw6d
+nUIlU@VBu@rA_@ia@7hv@lY_Vhg@lAx@fw_@fm@Ngy@ZI@Ves@@9_@PBRJR_6Kq76PmdmezC
+44@6000O0A00yGkJ0010W0000W00e@V3Yv7ZJxP000Wm_@60W408pV900mmSP_y000200100
+00G8lw4IicXIhVuc@48G000000000mGvr64VD3000G8400CezFtpB12020H0002000W00000
+0200400W000000WDAk1010WXiJegr7008aktg1290Wgkt0504e0A800001CSf120W8400008
+082008m4_680G0u@V3000XqHk100010400KcT2G80110300X000G40028WYzyDG010000000
+G028W00G021W208010001W004GG08eW0m002W04800400020100010802KG0CiQX180000QB
+1CVk10804WG0500000044000X0110YG80080W88001000G028004000G010G810000G0m008
+0O038005200108X500028X0348010G000000Y1YG0000428W04000800000W801000004020
+W04008W01GOj0300080100W2080000040H0G000QQr020W04G10wlr0000m2d00W00000G30
+94G01K800408mXa00G0K01HO04040W6G0HX0000b040080004W20Wa0G040G000080K01488
+440000a0G004G210024000a00101048WH00000W0vwQ0a80WkpJOAs4cIr0040GH1O022008
+Y00G000car01400HVO008002000008Ktwz1200000807R@1000HHqo0005WHMD0800WG0084
+000zk@000GeuQP00100YW1WENJO6u4ITr0W0040200010my@l1G600slz1WP80Xm_0000200
+G000025WD00W000Y00000000We0nnA1G00YaJO8JM30400A240000000W0Y7ND01000Y00Wo
+uD0010WW00600GYxw@00208000GXy_00220008000Wu900146I2000G0W002G00014020200
+0800805100G90002eVL3Yxd11W00000000a0Kal1000W00G08100G0000800H08G20G00W10
+000002G30000002aHO00W90000000m00020000100WG5@dmp_6alS500UkgiF10800220800
+100G200808pH@90002uK66_b9Xw@D00004A002400G002000100410Pwv4002082a21804mw
+860020000X8C04W4MD010400G0WZCCW0880000XaPVevu40aG00020040000G0H0000G0W00
+0220Ga1a0808010G41000800008KizB38000W100q@V2002000200G4m02000G000240000G
+08IW2014821HG0I0W21Ge00200W512Gu800m40aG0W022090201000A000W100040mW00W0D
+000O0003000a8x16Y5s0Y102800W00040H4000101048004228110GCo00X0420GG4282028
+03cH80omE1000G0600G000008000030WHa00200048e0000W00Z0W8AY00002041410CG081
+GGGa00HC81YW004H000W24n0K00i00082002H020mC4010002000CG018WWG10WwZV0100WX
+10000JK0W00oZs0GG00W8W840W1228YWmH402YG602032804003864C30K00sVm0102W@jO0
+008080H028W00K410824G109000mCIH4aW0008500028000G11p0400GaK04I8010IH00W04
+000e400000000g0004000fa25W0000GA0WO000008L4000000KI1000820000WsVfG000000
+8Z0DK40W00I95081M04WK08000004950X960IaKa2Y0a0004yF38L0f008I10Ia20A0000G4
+2010Gm0Y8b000I8100W008G00G108000092HW00404W1100810G80000480We0Y8G0H00280
+0001G40010e00200G0W28W0W000G0020AW90000W0iG0G200Gtq6000Wq@W0004100408024
+0a40W0402I00W0G0W9b10000a648WP00G014OH40W2WogP08WG4101012200000050W0G020
+Y002G000X01KOG1G0A0C0G040218mHn60409GW0WGor60040605WYW8G52K05G106W6G10Y0
+00X0D00q000WW88m70080000440e300028WuJC00WbB1W02822GW00G00000804W200014I0
+845G08i81810i8k10048WF00KZC34000004GX1000W0WC4905W00GW001000828W00e100YG
+01001GW2D000G400042W0H20020000a4000W0120eG000X0P6s6000Y0G00W000WDfCe_T38
+04000000001o@@606M0egR3E1o0W000000101G0DpS2G10G00G0a6V25HO00W000G4A00W00
+I58O080000020G00G000001101Pj0000mA08004004000091a000j0s0WW04sIHt6000Op00
+000Q1N00WA0B40001Y0W00WGyV30A0SeG@1884oe202WWG0G0000w5003m68000euDr7W0G0
+X3080201000W0e@00C0wlW_R8G8i@204Y0X0G00G0wT001WyN0OFB641r100G0b3K70005KE
+0G400G0020HWi00G80zYq0OPq0000moMq2yFO6BJ30Mc60cnC00000OPQO600moqe10000BJ
+30BF300000uX7C300CZPg0000W7y0Gr@@N10WfS500000000mD0y@@30KNL0mc2egh0m@V0e
+RA0W@@JmX7000EeAL5PLgAw3zGqPAZeLbAFSe3ggA7CpCY_V04zX000H400aL0H0C0Q0G0m0
+00C600mG000X100J5WBW4mO0m08000Z100C3000i00WO5W1vA0304W6000D000W3004@000_
+1u2y3W104WB00GI000W100GT100Gy10W0103pF040S0C000P100C700O_10my3yZv7W10EWB
+0006000p@@t000WOk500CWEW20T050Y2A0C@008w0qHq1e3e7a2W1H1OWbf10pC320u0cD30
+MAD0mdb0iCQ0aMqa60HAa00M60000000@30000moqEWMQ10BJ3WqBO8DT6G400y@l1U4100G
+0@v70@t70kg00yH80ucs8600mSp000000tKmTML0000qkx080000RAm3_7W@z1W00G00OhzA
+oYZXqrU8qU3wSdX4nOW000000XdApbu@@AW000000WezdAoY@18000001000W0K4d13fdGOS
+6qhl191O000028W00xxR000010W10G0000061010G88k4W0000uP0OdV6_vtWKvCub93M_oW
+C@V0004004000G00@rnGQT60404uO@4kXlY0yPObA66uoWipgGk00mqTC4Cr37CbG6HF4DW4
+0001QmYXc_DOIV3UqpW0eIOOV300040000140GmKV9W0084000000WG1G004002cuA100cdz
+@@0400W@@Den@78000CIc1L@dGqVCywt3002801002000Q2B3s2q002W0t@R08010G400000
+8000WG30200000O000I000W02000030000PNG30040CEW10vJ0EPo0G81G02005G0G50d1W0
+G00oWW0000b0W000001WI0008W00AG0SAe10204020282W8000422000A0000100000ATNe1
+8800G004W0480X40008W04G000042G000W020014G021W04811G020H054W020018G008e04
+000800101G000W20100W2GW00W218W04H01800000800800CWDyC001W4G801010I0002M0e
+00WO00882oQp000G08840001011020G0004G048I400010_Hm08KG0000040Y0W800eO1300
+4004a000050420WLnC022000000X00W2200D000108GG0801060000G8G00210002G010052
+000101G000WG00020080O0000BS00000a208088110001f021G011WG000YWG004180G801W
+e100020600002e04830001060020C02G028u020008G801W0O00082500000Y0O1000000G0
+0W04G4022010000G0080020KBc120W040200040G8800G00181000Q0400200190000400G0
+ep2D0088002000WG40Wa0W000000FOtY4028000404C00mZa60GW402000Y40000G09NQ000
+6000009SP0001000CK7UamCU6O00000O0GFRC00020000J1OF0W008f3962AXgWIeUE30000
+0_a1u@o70008W00I0100mCc90060eOe423X10G02G600080049d1P9cGR96iUN208000WW0y
+vP2G2W0g@q01000nPcGldO00G00004Zo1WWDGDG204mQe6yjc10W40_@t04G41002001H000
+80OOE30100ymY100016Lq0201100021W000100y4bDQap000800m0YgGfYEHUumK300m_F4g
+1r1Q000GWQ8J88K60W08yUe10001EvY11000600J2FD10W00voaGEfO0WG00AGGml86acW4j
+lK18F7000400Y2000C4120YG200Y0Z0Wy_C0200GcX6C6Z4@eQ0o2000m100000m8900O600
+2040G00WxKVe723QSq00001q100W40eI40O6140m95I0004S_L6009000800000Y7000010G
+4201030400H020oC1H0O20C02@@R022004000K48183H0G00008010WK000100K0000002IW
+08W28G30202HW0YO0924q04209K0020G85CW0000D00mG590004414W0108A000197o00m10
+04400800YnZ10200010000Si10580000000Q0Y0200e0X4080y2e1e900w9q0Y8005tQ0I00
+040W0tMQ002800WK048AO800rWWH408a000240W0G001G1_@t0I100882G8bK0mH51eH830W
+820080GGW85fWI9Y000jvQ00WA1000080AeG040820W2300W000420G2K0000b0GKch10NFf
+0W252004X0H0Z0We8I9b5G0100WK001CX00485a0b84aWKa2168905GA0I0000000mK04280
+HAfG0OIAW4aI0G12WI00I9I0A5G08bK00f0mv4J3000W00002O20Io460400O8I3040CGAG0
+104GOxR900Y086N38A000000G8G10040aneC0800qNZ6eSG0008000824WA82041G020HnG0
+00804b000002I1AGaG158W00XG0481IAg6000820180G0105020004WaWH03A001am1WC004
+W4W4012YGG2Gygf1000000WYinP200001G04O00W4060300000H04r4Qm@@6WG00aWG0X220
+G82W8080KEF91A00000aEn000002024006m1W012WG02m000m2W2YG220100O10000002G40
+0112K10OdM30200W1060004W204010W8082G010e000800WOW00WXEtIOxK3e0200000u@J3
+001G01W00080202GXRTCu@V6K000W00000H2m@@9S8g100000YI0qbC301XIGG00008000W0
+G4H60G0800W00009mVTJOE5300a0Pa40000002Ae440G4HCd008x1400IU1010G00O0042zN
+0W08@54z210007w6o0084z_000G_BaH0200GW000004040000N00m0eB48B10W0A40G04000
+800WGc6080e210001Sf_0402eO001GG8000040zt0a08@5qV0101yN0W048502002GlJ0e0a
+@2r4W0G0g0000229GE30G0ax5wF9A03G080e0000z30W00VbZf31002GOLLy@F600Q_z1WF2
+10000@@AL000gyF10igh0ek0aSM20000SJ10wc2000N1OK06qZ33_0mD90000W@10000eKkf
+000000CL00W8300pF04U6Wi0u0_100XjP0H600I404ST0PI1m000WR000G40003088618002
+G000a400WO000n400G602WC0P0W0o000G000GC000Id100aV004PWOuC81k4O_10my3m86E3
+000wa5d1E000006cx0008A09e306030006000o10W@@31000ua2g00009Zx400H0000_G400
+GNb6000000V0m@@OCkd10u70jf00000_J20Sb10O630OK@SdmbPLy@l7blX100XoKuaONxDc
+Fx100a4PoPGAuC44U22000QqbX3pDOOL3000GaUk1Jgzm1v60X00eRS3UFt0G9603ap0020W
+WnJuay74021Snh140040001yHk1bonGlq6yRS200W0UFdXSpJeWP3UUJYZsPOiA32nD1u200
+le@GAR64jU5fWcGwwLaR_9hOQmDc6S7@35nbmjxC00W3ypT38000ztU5jFdmvA90G400100m
+Fz90GW0u6w4AmZ10210f2o00002011000806Xt0W010NYQ0800210G1tbR0000G101K00000
+0402WW1CW_40qZ0C6e1PoR0804qQwD041211W0004gW0800000WI00W0420o_BC002106400
+804WIhJ0004004HWGyJ000GGTz90900eYU3W000000GYW0W0080G4G80WW00H10049Q28110
+G020W008uy_4W0200000N90004800408000H00040000210G08G82080050W06400W00000A
+0048000a4K002100G1X0f2WG8eWIvT68WG00000YWGAA14IGG8A0_p@X4zD000GHf_600G51
+000005440840G084W40WO0WH0410qDu604004X0W0H1010005W00GZct0C00000Sw000C800
+G0m0012000008W0c20028H0H8u003010OO6I0O0000A0ZWW0G0X0f2000000o805800AGW40
+0W0401G0100000WXWeG81GXW2WB041103Gup901208@L6EnWXQ9DuEM3Iba18010hzR00G0m
+z@J0GU0G3RFKAV20104_@d10e0000G20001020G0G0080440K0000I02lItWEBteVQ901000
+20WO@U6_sFXpxDOED3U_s0000CA300MaDXPKs8HS3goF10W8200H0csq02000hXRW4G00006
+0fzx1400080405TOm69900Y0uvO3G000Sok1pzR00004200008_f2vNY@@zetz40W800G00W
+00W01020400WJHcms@LW000SuI30W8001000A00Gjz60800uh23UCP3WB3079aGZ@60008Sf
+WGg0nWZHD0m00110809002R6jHpdI0040G20001GGWHDCe656IfF10420G000000Go9008tk
+7odRZzrVW82WGyz9qTX1jvXHg@680400008204I2084000W100212W820005W08200880410
+02vt02000G402W0004hk1TUOGewF4W_3Xh@WG100000G8X0W9KG08mA004m4Y0G20eC40000
+XG00WyDO50001W00W800000240000104G000v041G100W200000100G00W85@dGEp6000W00
+1W00Y010000Wy50oom0000W000C0GW443W1f4j1I0004W10W01001o00WI20020110W004H9
+08000G0GaO160040G40oeG0I00I95AG0010WK0CHY0H04HA00WHW1myj600100W800000A08
+B40101801001000000851WWiuDW81000000I1G2FodGo@600e0u0H3ESp02a0000I08WK100
+0000I11H04004W0a5aG080GHA0A99@A6sm000000084000414G0WXo2000104824O20G0G28
+82Y008800H000W0012000G400000500W0Y00G00100PNQ0Y00000200100000W4gF3ZsA100
+040e90000G02P0qFb1oW00W080G00o0000oVm6Sfu6G100mGm0G0400000410G40YWGBtPmC
+Y6igV206S000340022CzR30bM800WWuUV60014iPP5hyR0000G82000AYGWm4WKQi1008W00
+A000600820G0e6KQc7fLaGiC6a0k1@@p00GXWD_C000180400000G@Cmm_nIiXi409I00004
+1Wa00090mQN6iiX49A@000W82G000G00001W0000W0qV2020SlG@1804qz202W000G0000Y4
+1000W08J0200GZ00080004004W870000G1000Oc1WI0000W004W0W001000g9000Sfd1Nbo0
+0208X0G10000m002qrl1eE0X0008Ww780CWw004W0W040000w90010yH0O6EF0m10000Um70
+_P9_CO30000pD30p4WC@JmL30Gi@90o_1eUiPYtp00YG10ytT0000e2008XV3KH50_ZQ2jyp
+000GK3000XjPW3m0WOtO06YC0C080G000XmR0H6004N044P0C0m0G000m0000A000Q210000
+000o00my3a100WnHr6S4p39oPmX0600mC04040g00Wc4DWv700H703cV060e0C000O45W1@f
+@mOY9uA008sj40m000000qd7S500u@VjhG100Gd2600mAAuV6y1000W360W@2mBGUyJT2600
+000W@wZh000LKGiuO4rWDH2WKsWdKaZ7Z562000KC0G0R5XnJjL0W09uPV3I5tWnFDeFAFA0
+Ibazh00W4wMVm48k45NTo34v0ms08PdAs@3ZElD0G00GJz6CM79DqRmH@6G00W000080W00H
+0008010G0G08002W200000e8W001002000K0X00004004400000G000GC0000pN00euV30G0
+W2W08eM_400105cV2200002G0C_k120O0ATF100W000400001W0800102180YWa4nW000Os_
+60009e@M30000290008G040H20O11G0000G1W00W10015081000aW000082GI40900000mHA
+00K2b68108W8000108000GWW4002900C00W0W000010E0201100W0004010C00m0000WX000
+W0000200A002224W04419W062G02000G8804NGB100084G00t_R00e000300W000HLW000Hg
+0020CWG483E0L00G00281H40WW00WA1410000689000H0Oe484040000r40W0004210G0H80
+62G4004888408A10W201W2W00080HH020AG00W0284001G00C004W05000A000020G200904
+1a044146020Ga0202W86040xMpZ3jg0000Iat60002000W2020WPkJ0006000060200GI70_
+ka480200000YfoW7@P00400Xa0WFX8PyZDU8t00W8Z03402@@100u4@@d0101Wy@Dugs4I_q
+WeQC86D9g_tWw4C080W0010XYhn8_V3U3rW3@J0100800014W00l_d00001Y000G110G0008
+YC0O@@44mp0KTE3N@dG4p904000088m0aFCwl1jDQ0G00WNsDeKT3k9l20042zYAncw9qtD3
+08100W90KsX11kd0Z00WgzDOrqPoptWDsDeTS6AG5ZtbDu1y400000G00f9_7000Ham_3006
+vEALYvuDe9k4IAV30G00v3cmkUR0004u_T3AZsWoyD014Y014404480RpR020000202g11SK
+1Jae40002G1m3_902B1eyT30402000800404080mj3D00H0myz6yK_3G000Elt00209040XA
+qt008280We1009IyGV500P100C4j@c1Vrd0K04WLRDG0000000P000G0W00Ga0W0W80000GK
+Q_9000WEOl4gZF1004020104000000G000410Y008080fRbmX@900400W0GmZ_6S9k1bqZ10
+00A4c005pRmxR6800W002G18A0000WK83G00A0IHA2808G00f08H5YG04HA000H8K@V200wo
+_@t000GG000000KG10018Ft4gSq02000t5_mpy9GA0Q200000WY8041800A10010CLx3Jud0
+0W20005840W00500qxl10100X840W8G2G34Q0001404cXW00GW24804400800W4C4Wj_J08@
+1mbkC0000G6001Y00WiuC00420800awUh0G00W000480G800A0000X0i0000W00WK0YYzh00
+812000eOPP00Y8081000040I0O0c1t011820G05020GIC028QN60000ZA00O_V300Y04Sl18
+00W_0cXX4heDV3YoqWc9I00000200aEY3PBK6004WKUf44030gAc100mMNmcGs@9800W8pV3
+UUtWR5V01H0GI@6qdX1W000_dDXNxDOuV900aL00G053080001frHC00W20oEW08GqB0G020
+201axj10@5wT31XWzN0W000G0pC0E11OaI600i00W00F1E60002K2d1HWB100WU2G080V40o
+cp00Gc0080WYXh2p0Odo0000mS0CIz6H1OWCt0GlUmE00WvC300KkH2820028cXKoW1000eL
+30000m@_G00000@v70tCryA00n500H6064J0800WmfJWe30Gut6a5t3bWRmSy900WbAsQ300
+44Z000G180GkR900H700020C0O08000W000oD910200ViQ0000G00WvE00YL06YO0C0G1G0G
+CSOSnU580mFT000aak1Noc000000_w1_000YKW1mkD019iXVtvVV0G5Y0G0wmF100m@T@O00
+L0WQ_i9kR3_LnWyfFng00mQjI4CE3RpdG5N64kf17r94400WOoteWS600Cy4UE3taR0004Wu
+qJOrr70210q8h4@FaG@QgCpU8Tep0uL6WRyAQHFLUZt000W00044Yad4000eS200YZFXsvD0
+008KDE6aFh400G4Ilz10W00ZfpGUy6qnk1nmRmbz6iAV2xoRm6E600000040102G01GG0A00
+2stt01I00Y0W0000084000020WWW0000j@0000G0100004400900200000A00050008W0001
+00010G0400G480000W0W0X000401Gyy600080004400800400W004Elt014400C00ckdXsXC
+uqN300100W010W08042X01001420054W0126vGG4Y4AG204905K00e0011GWYG4GWW8A4050
+G81HrR0moR0O4WG00020010W013200C462YO8120W8800q88002PI4C546GW0a0G08G00480
+48W080I10420e02103288YWI0380H200n4W0GX081482e02kpt001001xR0020WgRDum9384
+0G1044058840280W00001GGCL9325EG173WX12X10000YOY1484G82Y2H0p00W2G02C0W000
+0qP0a0W900080W9005Z0820e06CQ4G0200XW200Q80014u8KbG6Wu0G0014G81400mG42W2X
+40200m0HGW28me0A14KW0GG10AIW1G0020GCA13O0nO_CyJF3ft@00W00WG101zOme_90K00
+000G0M00WmyJ0G00000LB4001hxd02000G0000IW1Mxn0000mV@Qmf@600I0eO@740040042
+00008000YJXDetPCG000000We_r4wQp0000200HYc@t0G208DypG@R900000uW50C000000W
+00GG0080SYX104G00G40280nG011040000W1000080O00010W0G00mjv6Kei1G00Y000010W
+20008080mW6ft8CT30WW00404OCi4Y3s04401RR@0808000010WW040000002LD0Xmez9W00
+00G00Hcu68222OVZ400A00400110AGwL60WG0eez4ger000GG0408O0004Ul1feNH3y64Nk1
+00022qt00W00000202001008wuQ3krt00010HmR0801000nW00088001110G0004mC_6000m
+00G0GL0601O02004000204000202m4030SxQ2X0Q002800G2W0W00000010C0e6kDwRB1080
+04100GW02KQl180800101000001820401004203iRmBo680000G60004G23002tzRmev6000
+YG00W0000100W0GG0KYMBXBXC0820miC90eC00010008WG0WWW800G04A04PV5bvR00W00HW
+000400140HGG082G0H00100eW88OW8Y01GY00Y84Y0W0A0G2G000000A001a001121190000
+UTW41YW01508000004IW04WaG40100WH221GX1000146A020101C014000XXG0438006400X
+882npSI0H10142K00GHH0O0XWu02XG05OR@AGG000m80G000080010WW200WG000CW1G023a
+G0040800G040Z800I0ymb10W2YIQq01G00W08000yTZ0a1G811e22W8W4W0xqR000Y1X4WM0
+Y2QC0200Y92GW02b020A16W0W8W848310W00G4000880012002Ca00n0210aa120488WG0G1
+H09IN104W201008C1f08eG0W0aYK0W80n00I10JG020KWKAYe0GW8I95A000G0WK02YiW085
+GgCaa02H2faY09Y80010009VI1GP014082f0800W104GW000c000f80a80Y00GA1G81We0f8
+5W80082WK0824000085020G0t@t040W00000XG00GA2W40H00fa2G4Y80@@N1G002n10000a
+I41Gn21G0X05e18W24W4GHW00412190E3108W00do4200240208K4YW0GGm46222GG0260GK
+000GL38e0G3X0K41200HJ2108010080000a02H0GW00014YeKIG44GCWHQ2040H00O44W2AW
+008A9300080005000W000qW88008020Y060W040IG1G0rSzL00K00001100200m0n0G00Ce0
+00C120A000W028i000O0Y48000W020Y1S010I08082QW00210G243k100u40024008mFVN30
+0068600020000010G8E000542b81Y30001220600qwl1F2Q0100504W0000u10040WH4G4Xi
+8403Ww5t00G0mGz600040200000G2e82000a00040q6R2fwdGLd682000KB68W0001000z1O
+0G00WHuDW0000200WlzP0008W008WWwb01G41840000840020s5oWZ_b0P7G000wb4uO0wlG
+l3805W@204W0mYXp0040vUX_3G000d5N2e@40K0ul000WYSqV220XySnDG1000Y60000W3e@
+0202uh4B730t5wz01W1UN0W040082000Ga0000080P7W00GYB080000030W0el40K0mlaxz9
+0O0000A0QJ1k200ydl40000m7Y0mDNIt00ync40000m@t0mRA000000W5F000000mVz2022W
+R0G0LL001000kQ41MRWF00W@iD8T@4if00000_pF00mt@6e00NL00000kPJ20000uc20u7H4
+OF69mXHCSF00pE8BE6e300mS000aP0Gku9G7048NS3820048W49apmh3600018WE3WXP68B0
+E8LW4cvN2V1uc40000mV00000m30000sP60UO4N_RWFSL50000gwA0dmBXOYbmuL1e@H0000
+GTTVpWl0yH80O20ul7XmCH8W@_1W@@10ND00_@60yH4C300u@R00000WgA0G8M000000jf0t
+uH4_t7R0000yV10u@LPlnd_FibF32000wo6300XjJPB10G4W6jLfNQ6Mz630210PJR0024WR
+kh0080GK@C0004OvR300W182000OP0muN6KMj10804UqyXbvC8zx400048040OdA300G0Cy8
+3I0004028yXlD4W00oT@XbnJ0000Am90WGjP8VW4oId10400vfZ1020WJq310W0Hfy6W00GP
+OP6oKdXlGD8E@7000W014100GOLAz9Kqj1PkRGrA9Ssi4G01200Y00040ukV3MLF10m00080
+2ElCXGuJ0004GTo6CrT22410sQt00m2004204000000W00HemLp90W8GW2041000002O0000
+00Lm0y_l10020K00080100400m_364gl1W00G800KKNk10Y000040I8004I000280008W082
+4a0W200G018OU3kttW9lCe6k400W10G022W20122G000060400W80i2G68WW52A00024G080
+WW8G005010e0240WYK1A510W0800WH040044K0118000Me201ee24D0W000W02442002014L
+2nYW2aK1G4W0Y040418M9W04G0K400GHG0i00E45120W184808010GY08402140200a0W0Ae
+4400G408W0J80100200W04040WYuI0G002900818I040000WG0000800J140G06g00000O0X
+0W080W00W3G15GG000WY440841000X14208001WY2S02000Sp000e0416080018444X40000
+m8CGK80904008W001A0804F00000H0000G0W050WXY1G10002600QOtWfKC0W0G01e1000G0
+0K0880W0Sil48000UosWgtC0YX0000W104000b50oLsWkhD080400080Gf000232000QipV2
+0u10W0WCiyl120000W04W00W0041W9G1G00G000001101P0460e8000H000J0008009I108A
+0G030441qG0y0K84GW008W8014004000802Yz6nOHU3Ewt082000006@@F1001WHuRW40400
+480ruR00101008001040000pH0Gm000600006W00000040GH0100G4G0W800010017iPmr@6
+a7l1NH@0002cFuJ8HQC6cE100240020gAs00003001O000008W0G000108034W10P_dmN86C
+8e1086aW80008100040008G60G0W0880440400088F330G0280200004I2v6CoY1G00W_br0
+0004G800W200i@k1VXZ100080W00005000G0004002004O8000140W00040090000028W0W0
+0000I01GRGit9Cpl105600100Cxl1800K06200000W100000m00010HoRmW36qCk1ZemGe_C
+00W0001WGKWCqCF6001WQjFXQtD8Du400W0W000H0G00802W_sI0000B90220W81G0G003o0
+001H00810a11ebxJW00W08400482AG80000001WGG0440000808W8a04000284aJW1G0O10m
+824Ky3Txp020G8000G082000G020G8100100m000GC80000W280W0080930212a8H1002160
+0400002050202G010180000oDWAn200HP024W5M90480GG2aGI81WJG00c0C00802800mOm0
+WG0D0W5em2004001A0008W500e0W01H1802m00IWb08805000Gi08K801eW200W80Gq@I00H
+0i3S300D0G0Y24514182024n8020G0C30400025He00W30805000G001W00Y0I010104G00W
+U0D0u400020L100CGG0040YqOO21H882aI00L00030W10G140000AG0g0X00400010210040
+m22082001404X02G00Y000O034G8W001080W0W040W10xhN11W0080004100000A00e00000
+0W0GA044K004G85W011I1XK08880G00050Y2000I2I100O0a08004000200000mDcK00G410
+0085W0a1W8YKWIW810G0GAA82C0000aI90WO04HAfG80W040a20A000004I10002008b04W0
+0810IX2000410WK000H000ITyk1PFMnO@6COl10001wPq0ae082GAGG015A01010W042X000
+018XCQ004200020tcP0003RW024Y0900084WWW400W0000XG005800W019041480G4O10G09
+0GA08W24200000A10100010004W00G08800IG00W0G00W000820002800A041K0irl7O000K
+001000G140020Y0I000A00G3Eur010W1YW50m0GG00G00040OUW604000G5B00a32e04W007
+00WG200W000041O88G0303000W02Y0o080G0W4W2nGE4m28002PW8000m0A02190X0a0Y0O0
+K060f0g020m0G030AG0040A14nSdGC@R4jY1480KccFXLoP00002100WPBC000800002i10G
+000W006G00K093N3W002Uwl1YWW0000020A20800W0088W80020G1G5bO0000140G202e40Y
+G84a2GG814G0801A0088210eGGXBxB100W82G00WG00cF9120000X_JG0OWd3k1A0010I108
+0WQ1i100G0lbN@JG00000O0000E9eV0202Qh0000G8040040M50G08h5wT01W0iN0W040002
+001G@0G84Wa2z100012A0410440X0G48B0142GeW_000eWa20Y002208082oa00W0WK08jRC
+yxE0000cG400000e2L0u09kP010G10yH40uX10uC3aFc10yH4Sp@R000Gm@108000GF2000L
+d2ozt0tiQ000WNytN0wZ70ql00Guu9eW3kH10CZPYyGp4zXE8QLfoC7wWPcXA@3WeVu1HhQL
+Y_F04jggegCpm3FeYggAQFyGqK500w7f23000202010404_j10080o1t0O0O0q1W323F14N0
+0Ct0C0G0O40N200009600my300v6W1YB030S0NvYpW3mGimnD00w0A0C7K08s10my3eZe3G7
+GFWEW2GA06my30WP7e3H7OkK0C0e0OM9wR0050OhD3U7E1@_1000W9C00ViGR2DZO00c9YQ@
+J000Ug800000OcsuZL5mEpGW@_1WtKGUw60mL30080Wh6u1ND0W_F00zF00Myl10GaRKW8NP
+00ko000W10C300ug2uA000010XFY00tK00V4W9hPO3yG2utWkwDeh73cptWEmP0KZ10800We
+_Du7@4g@FXt0C0080H@uXKzF3fzd010000200W0004040icl1RCoG7@900808ey48400S8h1
+VoPW0000000aU300gLn004G008W4002000448vV34GG0S6M2G820G0000W0H82A30000G00W
+OBO32ft004G2G400UvtWHqJ0000q9w9qhE6@6bmxUFqgV200cdEsdX0uO0004Gde9W004OU@
+GEUFXHqP8dS3csrWrPJeMT9gWo020000070gIF10044lnR0m@60041002000001e000W2000
+00G01000phR00O0000080G0G00012W00004WI6k6aZh1W8000000qBh10204G0H04E830800
+8011SkC32P0W1G00AW00eNp4WI0WO00AG4000020000W2400004004Qe140G000G10K20000
+09602GC440044000G001C000001W0008YG02b000A04q_l1dWQ0001K0I002CW0010008042
+8O008W0H200K0800080810X000C000L004G038a100G100G004100808i010008eWWG010a2
+i10W0090GC20I701a20W000015W840a0400100121CM0K00804214WGYW8008449001000WW
+V3G8008801492f400024H001S80G40018400G000WgG10KaW80K4L880W050G18048004110
+04W4C8Y02eG88G00040AIG510W0180G2H0f0210H1804023000100000o0208044240002G0
+44W001102020100WG0101I00M14W80800W0400Pa00180080GH020cGW00020q8W04I40300
+86Gn001000mC210EW0000W220e0010003040N200C00WXC000G0WWZK80Y0G005006004W0W
+G62440O0Y0X0004C3g1W1H4WG82104K3W10102031HY00Dm0IC0G000580mli64bl1800000
+0I0G00G0204008G8W0001005000W0001AG0410WdI8DeVO38240S_l14W00000C00200000g
+f22140YWW10448A000EGeaD30HW0012W8rV38011004B0500W0001G0080012w9t08102011
+100000G1O0W04mua60G0G00002004012000800G440Soa1088O002WWW18uOV3WG00800G0W
+00001G0H410zWaW0C0WilDW00000Y826008000000GL0W001004020100084Y0W0WX000m8W
+G2042G00WsXCu@V34H0000G400200O0000m04W0X0ErFXR3DObK3000200100011WW4GYo1C
+0AWW004900802G042UGtWXBP8eV3G880G044006GItw90W04201000O00G0002tX00CW0800
+1008000208YGW0Z@PW00008YO80040W1GG0210Wm010W088000400800GGX004000W480C01
+WW807wR0400000W000G000W00120eyR302200G00WW00001000W0G000G00IX0009W002004
+0WIED0000003008W000G00040GW8Y0G000040W04W02000q0H080000n70W04I408WW0Wm02
+00280400u@338008052W41081400104a00041Ycm08W0080G000001000xu13c@t008107rR
+W020018W0PZQ00G8WkuDu7q4W080G000ODO36O8XHvP0100mXc6SUP200mc820000000WYGG
+1z6yb_320046bt000G0004WX8cW0X01020046008800W0W00gUn0a000NaQW818024W0GA0M
+4KW4YXWG0W230081088O000u081E8AW08GG8GY00000021GW0X400011GG4Y0400X0048G10
+800C800W0400010W0004gYQ0e0O080000uc02J0f024800G812HW8G1G20088I4420521020
+WW05K0G880G00mHG010040OY28YGM4K4HG521S201mG0W8204Y8044H00008000A002400GW
+G08I08190G4040WG001K4W0003HW042XaAeWG8G01420HG10G004e22805000000420W02G0
+H0e04GH02000Gu408Y9000I0CY8525K008G0GCG0n0000t@C28A020OHZg20L10AH1OW050G
+080Gc00402YO514e051f2W0120G10YQ40m00KH410852W0Ge00KWe0242O4G800100G0O009
+2K0G008400I020d@R0040I000G20AegBo04380W00G8500iMk100400WK0aLj1Y00H020GzZ
+j1a204500100eYGG0W0YaIA10G40A0000yzGA1G060400aI98100QGAf000a0m0aQpV30bI4
+204QYKI12004018504AW0500G10Y0G2085f8WHC100pNO024WHA00C0HAf00YWC_l10W800I
+80008G000CGWg602004H20200014200010040100a0400000100i8PJ00G122A010Y0000CO
+0W0004G000W10c000G4380mG1n024142Y00E28G0100880O244e900asl1P1OWC00BW006G0
+0c_@t000280801020W040Y2K008G20004a00140KWK0Tvl100G04110aLd10WW8004I0O04O
+uy403000000WC01qw@60G007WA000030Y4004105440WWK002320010000GX8000uL5G0mO4
+ZGK040HC0042H804G0e88eP082WYK0C00HCW3eW82W7W0060GG0W2Y018Y60WG4Y00GW0W00
+006H0G20P__60CO001008120WLUC001004012010402000208I48100GYmrn9Kni1bxc0002
+m5nD0240e00008104WG01409100800G0W0084000p60W48001G0BW04GW4000A0a01282000
+0b0WW60W00000G08Y040W0WG4O000G08040000W0KmG280088@6nW_FC0800Guo9e000wyS3
+000000S100000GWj0000eO1002utW8lD0r200H0L0000YG010000m204120WGF1O4008200W
+H809G0G0_F0W010N0000ZDzEWH00WB0G06X0W0101e@40I40SXV1m80004000Y009W0G0qN0
+W020N24m0000140GWY9t00p2HEW01GW30G0201400Giu6Obh0q@100G0uV00000C30000@vB
+0tL100000W00S341vQGit6a8D3kf00Yys0uX700000yxENPWD_N00U300yV000qkB20G000Q
+J1_000ydV0u650G5g0G1L000000@t3tig0_u1V0000yZ70ulH0m7H0W@lXF010@700O600o1
+NYK0C0000e00GM2W1W003040H00We0000200Og008h0mGM1450003008oR3Ol100G0m0m5W0
+0AWB0bGM0AHW1KYYxW41M1S9k3o287m5GICBWaeu000Wd5G9Ak3IKS7mbun0OW4t389AEGP1
+O0k4t0P1K1P1O0X1An01CWP7a5WE0ZOoD0008g10GK3WXvPbd00CdW@@D00h6Wh6G0Vy0W_F
+00j9W00010qg100008000mDA0Whw_m0000000W3b10WOYPgYWVf01diA2gw14in6CJgfuEHG
+mFm8ed7GGk30006zf8O_1GmFCmKd7WZEI0FFWWgf61f@02QqH4K_1yCtHeU58mT8ImleWWwZ
+81FN00_2KkxH8y3CUuZ80u@10m@X0W@900000@300kQ040000uXl0qZ08GCbIqyC3PlYnIrO
+00007a00GSrFahg1ZNcmAuCKe@35PpGk_C8W00uNO60800qtX1ZzR0800100X0f_RGJj9SJU
+2FSdGrj6008000GTM7u600420100W400Xv@J0480GW0CipD3t1Pm6wF0104G000W400WAqhO
+Pz4000G00200W00uRwXyqU2WT00YEt004G0hmOGet9K6U2l9PGWuFKSd1NfpGVK6yek4dgRm
+iw9CHk1zJbmcSFi7i1p_dW0002000WI700W000CDU24G00UQtWB_Iu9U6UbuXwpPW000GNS6
+W0G002W0n6l600400080X829WyJDG000002G20010201000208G4004e0W0GGXAxDeRz4004
+0001W0G8080a800280004u0G000A000002m1_6amf1W000000G100K00W2000002W04W000G
+00000GW0G00X80010803ptRm@z60050000A00041002W0W0GW0448Y18004C4WGW10800201
+2G0040m200Ia0001WA400W20Y1glt01G02nBR000800202A0e240308WGG4048WW88004C04
+0000SJ004e600a0020e8n4020WZW00mW020000X04g008W0200W000K02B00008W8A10G00H
+0001080KK0Shl14W14000C10080800W00081000018WWG44124aG180W04430K02Y826KGW1
+1W02030000188401608440G010082200GW0880CW0W001000101102G45G0400228Y0W00CW
+102G38W00001e002GD30W0W8006CZ010G1I08X1400000a0Y0180GW30W1000822U0001WWO
+80ALt006AW2001C0000002W22000g0000mW0002004I800WuOG3ggt01001Jrd000108G820
+00842000020A72301A0qoF38G0000040010400W0K8002018080000yjbNV2X3QGnq602000
+0W0KGz9K6l10C00W0880801000GpAr6yNV2G0006BC110O2008W0041000100e4440W0O400
+200400I000018FD300aJ0002I00Hms_6Cwl1dvR020000G00G000100Wi0g1W8B06@tWqVD0
+00Amdz60800xMx400084lf1W0816xW1W00WfPA1089860004I0W80ne00Z80008000030000
+e0Z08aGa042000104004I00X0V3Rmvm64vF300WG0W10004G0H0W0800000GeY200QBF1000
+25lPmpy6qyF37QR01004W0W0W00G00W000058uS6010W00001000IMG6004G8WJ30088TYh1
+0W000088WG0H4090qWy90808Oc@4008000GWusV308G00102O7U300egjvU50200olp0W100
+BoR00002O000BoR0080WrlJ0W00GefCa@l148W0W0000240W082G7u6W000100G01400e002
+0180W0004Xg10400Y4rWNuOu0V3G100804001000mr3WCxJOhK30004qCk1020WYKF100010
+O00s7r0442YfQcGNzLeG2H0048Y02K64409061X8222I00AI00GW9880310DGbKg00140OKW
+00121GZ001200G0220W00002WQvU3000K84G0008HYW0O0A003000Oy9004kl1Y04000G008
+G2084W80202003W08810080C_l12G00C1W1808W09000g2KH0KW0@jR0001G0040bunWQA18
+81mCYA02H42XG44704H410290200fKD4W4YKGOa08G01eZG3602600nhR0080mJvJ0018102
+W20001AW20GG0204G0200100WdkrvP0010W1W000000059000I00200G400000802000003G
+G44GG40W003200000GW80g050ElXXE_D8b@4800000218uV30W0G000000Y0W0040A4WKaY2
+0a0000A0040000GW2WAVDe_M3G000cOe14080gnD10nF0800YQWtWBSC008060400021GA00
+f00040I04uNV3oYp0085004H80W0IXY00yz@485000I80OhS3A9qWoaIOGS302Y000300H0W
+520008028800082000020utQ6MqF1410800040100iwl1000Gy200yEk10800090W0400WX0
+00G0W0010I0040G8GXaBk1000G81XA000828X0X225AW0I00n107trW_nD0G000008aMWJ04
+W00800WZpDW000GIO604144W0801G0GWW8028080120ybW1v3d0000C0X0G0200000020G0u
+u9300OAFrj1000W10000Y40000OW40I0mW2000S000000041000000404000C450154GGG40
+0W1G000000640088000G2W00043G0Q000n040Y0V2dmtd6CcZ1I000001200204a40801G29
+020IW081000080W40200040WoQDOrV30G20qod1042W@Qt0WM00TMz0G04WqvDG000Int900
+W00410W062100800G50QlDXEoJedy400254373HBR0c40WsoJ000Gl14000e2i00000A80Kn
+S2000800a500004308GK@C0000sE0K00000C0W0rpR0Y6020GW38h4000Gl4Ek10G04K0000
+06et5400WN102H0C080080r7000053W40000eKwCG000081000080Y0mL500W0WFUq300e0_
+@30Ur00SL010400mNF0030W@l21@z3W_u10pcEXslJG100Gtr60WF_t60008_F00UJ108H00
+0WR5tF3XiR00V4WXqC8Mk42Cs0@_1000W@JWZXOoD86v7YXp0O0O0m0W0Y0t00200aL000O0
+OGM1m001G500OiiuC010080G000440T4d008g008o0m0m00101a7G20dE0E7t008w0W001W1
+0049k14L00O_1O0W0q1030Hku6000Cp10Ok3qnS7W106030006000H1000000Ct00G41ZqP0
+00000y1WsL50jv6@xH4_tDPSb10yVt0ukA00000WlwWRU42@VJMS900G08u03yV00ipU2U41
+0MwF1W0mDA000000WG900ekV3mC200006s40200000@0uc40000mV0iwF30SJ1wds00WuB00
+00yV006qU2r2OGM89Krj7VU7I8QF00ut9Rk7IGR3W0005b7o_rO0W00uw33MEt00102bxRGd
+@6KOk1R0R00G00400WprQGO@60St08TV3G0000000440Wm6J90W008ty40W08SYN5200100W
+10080002a00W0XHuauTT304004mE3tmRmTw6yhU23Xd020WXhkP0000EV10WJQPu2B3cNt08
+0027zzG5u9a_j4ftOmUzR0000fft4g4G20200rwbmEy6qQU200uPYxdXwjCuzE9UelYSwDG0
+00a000200006000NNt000800060000GKGZ1nndm8z680C0100008W0aY0CeSG3sgt0H40004
+G84040028GeRU60Gb10W00uQE3000n0A02uGA6e200iTl1ZtR00WW0081802080A40yzl100
+G800GW0000G001mO_6010140004002121000100G08K1K000H10000000I4L001W010010W0
+40014080G405K09000W001GW040011W8CG4004Y00010G00Y2021414W000000Oa3W8000G0
+W0400020O0000124WW4W040O080004W0q2v60G000mG040008004G080G0404002005010A0
+00000G0W0W40G0e0200G1H08008G14W002W08012G8W00W408Y1cK@D000220H502W1Y0200
+00CG0800G00Z100424200200W10G000O00G0718G0400C4200W08010G0X000000WES88220
+0A00G00080WI80300104G0000W80120W02M00000qGK60000000281W0G20C404H05008100
+G20001010400W0001I0000020WvxV30040CJP200001G044QV200800800200W0W000000gX
+FC04008000G8WO080000250000W000KG@p90M300000000GZ3_D000Y0W00XgmDOPx400000
+0W12W000000G0808vzRGm@90G022W00102800081G000IUMYlIWPGWWA8Gm44_@0Y@Bmu@1G
+_F0b@@V9jeWn8WcS00WvaAm9v34LQE@tdM8PSdmqQIycj1VFdmXz600G402W000K0018G01K
+pmyr900W7TRQ90G00aha1NGRmmN9qsl1hPRmVp9aA03ZVP0420WOmJe7S30G08anl1vxQG60
+9S7k10800G820002004000480Wa_DuW@4W0000IF08Qv440000W01ehV3GG000008OzI3w9@
+XheDOuR60010000420G0000080101pDpGXv6KCj1TJpGPR6aql1200KG002CY63G000_AmWz
+8Dm800GKrCqYk1rSRGS0CyXV2P2ambw94G0300G2ZUxXmoP8jD9MPd140815VB1000000XqF
+Womqw6iNh1Ned0010WGuOuqK300G0yvk1dkd0C40YcsD044K2W00200186400411W2098040
+LW0084n0800bY0G040820WG02010002800AY100AuZ10G00G0000081806WG04008200G000
+WZ20001H4Zl1000e01009090exE6040WW0WeuyV300042001OBF3gXsWQVDG010024WWIQD0
+00K0W0114G19A00083G1002O100We2010402004420H8GOG2201K00GGW00m00W000G413W0
+20014L020W04G0000W0GW0A00WG044002AIG02e0000Ov5J00044G14G0OA401eW08Wf0Ge0
+3GHGGm02e40GG044K1800Y0W040W0Aa0880000840WI80dWm0208W0G00b00088810420002
+008090400K0000K404J2226G41I0H1248GCL081WW04402254G1Hm0Q2Ig20L00SG000400g
+80W4Ke8802GG004W0B0004G024020G0800201034W01W0C4CG010000SiJ10400CGW020841
+W048W0GG0I90042400G476WW200800243002eG04800880820PGWC5G010G0aG00zcQ00401
+0KW00001800I100000IWmol6GG00050000400a44Y0000W10000Y08WT30W4KitV2nzR0020
+Xz3J020W80820840W0010W1000MJ1400m10200001200WO010OX040m01002A20L0W0G0080
+K00OG08Ozx40100010004100000000G4000580802100000GnD06001G0040W000100GGbsR
+Gd_9yJj14000GG04000000W88000G0090HkP0G010010WpoP00W000440lyR0000Mx10094R
+mIk6000nSwV3spm0000402m009W080G0uoV3sqt0004W4G200000W022v5R30000bcX1a000
+00G4W080W00W0W0200011hzd0W8W2020C2000000Oa@i1C000000G210WWC080K02120002W
+43G0200301ujI300000W0o310W0G400100002W080820000X000400WWZeDGW00000818220
+400004080200gs@40040088008000K000041000W1W003010000C0400440WY00001okr00W
+00G414wss0010W040092081mWG006000080K80WdUdW0G0000204400Y8d1WT80NgQ0q2W3a
+00I002000A0Oa00021040G0HO408NTNn2C909G410WW80Y000022000040W000G00W4420G0
+100H4W4000000040myVy40m40a3Z1000GAZt0100G0004W200KMU2tuRW40000840W400000
+meO1C0G00020G0010W010XG000012040W1ocm6000m00e0GSD900010048o6x9KAZ1400000
+I885qG8tT30410I11mHWW0aG8bKa0400G0800I400G801040X8G0X8000G064091G800004K
+000I8W00G219e040018G2c2X014W0G3000mWa1420GCxk1004MW018821c02p4101W003410
+WOGGO0506GOIW02403014G20e9020I00GH000C040000800140GH0000002G8mGW0WAG84W0
+46cX8T40W1Ge08oW1K1WO020BW86W024020W0100GY04A00540004Y0004GI0GX92808Y002
+2q439020b800127A48FN3000000I40331WY104G00W00950GG010000KM914810X02X004Me
+54C8m8222JW2PW9042110XHXG10G9G8204eY18G0ajiD00G8W1010080W0YW10000OYW0280
+K10000100f2W640GW00000yCU6wptWMACOyV3oqs00aW020000080asj14G000G4000f000W
+0a400000W0000f85441K800000BFa200406000f00018104WK4W04W84I10000800WK08083
+00280000201WKXxd002000050G0000W050000G208GJt6GA8W40i0GDu6iUj1RoR0000400G
+2pIQ00000W022PQR00KWmq_D00002G000W10K011080GG1000W2W00001400G1200000iP24
+10024000010002H004G0G0I2200XY000N000W00P21BY028I0W4100WGm@@6G00I8w4300G0
+yPl10040000D20G010XKQG99qcl1I40000D000WG0208008a0aJ80000010400081W0GmW00
+08201800G00202000S028J0Y000C1G000CWH0X04cU20S60GGm0028G40a00WG08We102204
+44Y004410000eWW0WRuD0J0007W0A010G020HghtW4TJW0W0082G402000K1008200O00eFt
+40aW0G0G15040e000aePD000W280G00000008Kgzm008000G5W020002011500A8000GA402
+010kZtWcmDGC800482000002W42W00C02H00G0n088M0000000G6000e04000G00GGw9020G
+f_V30A00100050080100GG24WG100W0m081GgOkO6slnW3SCuh@400J7000WW34L0000Ze_J
+0J1000Wm1K300FBP0GG20000z60000oB000Op5z3G000rbgzD002Gj24000g0@A0080uB04q
+j14Wf3000048W14000008G10000a00000504T1000050WW441k160000OBN1m7V0WVUW@tK0
+@VbA_F00ztT0wr00qZ80000uV30mDAGW@z1W00G00G00k910040y@ZG00050000G000Wh6Gm
+s6uV00m7Hyty_60U000GD300@l30000Gol0yp35exk1qzz300U0GZg200WWlyxFNP00_7@02
+mwsF0WRA00l_000eA0gg20800K500quj1kQ00W0000m000W1W1030304WA0A1C0KY02e41K0
+92e0KHM2W1G403Wa8609HP1IY0604bL0g8g0m081YpE14L000C0L8_1O001m0004500mK000
+C8200us10Gm0mWP6CMos9000CI10Og1KHK3450nRd00Cp00000mWu2c0nW8mDWa100H7G7cE
+060e0g000g000CoN0kBL0SJ2yNcouc20mCpGmggYW@L51LL52_70gApCym37egg4q@08e3dH
+Ggg2WoCZP0600uV04000Sb10W0C0ug200000300WRAW0000004O0k9000iKjFWhQ50xK6@k9
+1028KyH40C000G400m430Wt@70_@1Vz40k100v_@0m000CpR6000Fe005SuS3WYxu10@v72N
+D00ghgGrD0010mTy6imz30900MibXw@D8xw4Ygj2800005P0gutWckP020Dm4x9CSR5dU@GH
+uCaxc13KRGQJ6SIT200Y000WO0440eLR32jF10100G0000e20CBK228100G042G00evN3eF0
+0W00000120220W7wDG0W8m6vC008Y000m00G0mIkD0840001101002ZwR00O0W5nD0040GXt
+6akl1XdPmlvCy1k1ROBHN@9yMU22G048000a0Z1000000mvMNF395OGDuLiQJ2N6O0140W_o
+b8zS30G000020eDg448004Zl100080010H28000000K0000C00rmn0002XomJuA13EFn0400
+0Wu800G000020101CGI_9G104efV30W8000WWG400W00000100xfR0002m4@J010KGTUCCOk
+10280GH00020WusR3410X000W000040042H030e010100000Y104101021H01G000G2Bst01
+000W0G00G00000eOO_40000QI0300G0GRt6W6H1000085800021WV@RW0X04W20W69814000
+00206100002K80W24nlR0082200GG1KR000180808K004000208000A20008W006000W2000
+04O0054H2G480400G4WW001G010Swk1002Y00Y00000000GX00105400JnRGiX608a200000
+00F704e00000W800e28000G000H000W05202X014CY00200100280011GG0OW003001W0100
+a40GWW00X0080G00202W000I801410YO0420810000000400500IX0000062mtqR0G0000W4
+02010100020H10010000W50002W00K4Ae000004W00102Y0G0G000G8wGo022Y079P00000W
+NDW4008000C00002Gm830000240100101C00100000821H0610CqC0W3000000A0000000T0
+0LW0040004420G02000A0I141400038e10A0G10iDX14010010100040004440018e0C00HW
+01Gm03W240118020XQXC0000W00WbKvJ0228GC@CCMW10008z30e800000m000K00200G004
+090020O10G400aIG00400000W80002000AW0K1090G404808000X002000000a0GvS600K0K
+0000020800G0G80A10W092G000H2mP_64wl121006bBXokPuNnA6zd100qQ2W400000WC00G
+W000W00YWxDebV300420008001W00001000A0C20URy100WW0044X00003G00I0000002092
+0040Y1W0Gqbf1hwRGg@600002004810WW5DDe@@4sndXb_hG4w2800W1010000020004W040
+0040nqZ9yjY10000G040SCP24002w3D100G20G0100G0G000W100WX0002040G0008802y@l
+1001G000408000G00mJV6W800wzyM000GYO0WOw5380G000010YW0GZx9Cdf100090000100
+m0G88W05818000rWQmCW6q4Z1G000w7r00W04n4OW0G4WkJO000Ya0GCG000Ihvc08000004
+0b_RGQV6CsU5010000m66DV2000C80000W0G9@T3400000001082810004A02GG00000W000
+X0000qBl9y2O20001008Wq@W1m02A02KYO640W040000G0WG0G80G040248YA220GGW00W00
+000e00WAjCX@ID81c4EnqW4QO0qxN3O0G1e2G8000H00Gq00G0X0I0000W000110800W0700
+n8KG40K16812o008GC00e880S7S2G0W000H30YGG011GW28W2q010A200D020eeW04382000
+1LO0G0ljQ04002WY200020W2YG8G0mO5V3080W4_Q2R4RGGfL000W7m04000400G1048G0K0
+22eG00G80H041008000W0011000W004010084280wG090M808001G813eMI30W0e2000Y020
+0Y04410G000000XAW2A0410400008025008I0f02090W040808400G420040G9G8b0000b00
+02W004200qe00000e400K_l140229220G4e0004000W2W30D00GVF04W804000GA0001Gy@l
+104010009000800YW00I000850411W0W0400498SN3418200200X00mYj6001000001000A0
+820nvO01W200W06G0000280G4Y00JWG00m0841088KK0GWHW040001005G000O00H0040AXD
+XKVD0400008200520@@d0W810800Ha000020008W080u4000010018hN3024080000800W28
+000020800m8080y@l1I00W_28X@@J00W10H008W00W080G08E20100X0002000m05D027006
+00108i2W140_AnW@GCuya400000006OcC3w8s0EB00BQQ00W0mwRP0100C0G80G0000041G8
+020020G0020027WZCI000800008W000010001600080ZWG0G7E684000I280008021800G04
+0GW0001820020D4a80W2G08H000200240W000005GZ8GD0401OqLO00OmesO300808500000
+0Jw96Sfi180X0000G0080YK0040X000a400096kupWUbJ0008000G1X0002W008000000W40
+002G100000e000041r100G0b34500040E0G400G0020HWj00080u2Y21002X30820URE1000
+P4W000q804mi100400G0094000OO0Y20000r204000QOE10ma08G008000CmW1eM0100e2We
+380G8umEY9e00000C0WA0000m00zcO00m40000g08200W00IG1_Wggyl@KP6p4v@08QLLLq7
+wWeLbALbfCUu1gym3Y_V04jgp8w3F0qggYP0000yF0@@l1000Ey0007IO000uF@i7q400008
+Wx_@F30e00000200047W@_70TtDp300ZDd00O6G@T70000zzdE0860_oL0_bl000000nA000
+506cx0C0m0w0A0a1K082e0Gq10We3G7H6WEWE0P050p1A045K08o00Ga1a1W08pGW6qme160
+0YH0400040OnQ300n000007000000mS7000203040404_c10Ga100W002pF0204G2S9Ga10W
+e30100030C00PpP0000G10We603cK060a5d100m10uZ80m7HmL00WFY00V41000000m00c2W
+100W@z720000_N00_u@@CCgi1@@Z1uv2WhQJmEA440000k_F042000000AW10004zl_1uVz3
+mCW0W00000000@tR0000_l@l9C8VI30000Ga030020W000mweDeEx4_@lYSPCeOC6sWNYcnV
+0m02GD0C0e10000Wm9t9aZc4FshICQI002G0000460GW_lJOU36YmsWbaOe0F300mRy@l4zu
+P0040WnxO8sS3oKt080002800wuEXNzhe3y4Igz100X2nSlncv9qaU200000vdWCw@695yG7
+kC4vE3TvMHITIytU2l_dmNj6a_m3LZRGzn900003700mkyC0020000e00e1Ws@bOY93YaGYg
+oh000202Y0WEbD0e0GJiq6G040W280m0d90X008HN30000028WObU3000G020Y0440m8z600
+01000N80002G4100e000040086XWG02100I0000W005180G400804G0W10W0XdZD0181HUz6
+0800000W4K0204080Y000WGG84fd100X002040804410H102WWozDG9088020245A00WG000
+00005e0042020000H000W0YG000KPh1Jpd02WW000G00010W44000000Cr2003W08G8W0GG2
+X00i0008000A1XeW252102000WY01W00A080G500015m00220W0G01822O400K0aOAG81I02
+2A00001W0a00010000g011000G00102000W040e4GXQ602W10XW8X0021K9G0GP00000080G
+0080W80080040W003400040280y3R3810001030g880040WczC0000hv00826uW218444202
+WAW04001e0A0Z00H0106000q001G44Z0W0X028027A048000XGG102223000X0SG41W94I08
+0G00C0W414W2Y000CGXBWdW0G024080tYQ00O488001dGRG0i6S1f1G024cZyXXJC8aU3_Yr
+0001000g1wvF109000P00e20001e00A10100IWoRC00020K00WMzDOKA34000O001000Y02W
+044000880000G0arj1JzR0080elJO00110000045000I000W0000001G0m00H0WODVO8EC0z
+L100800081000Ac58D00400X1CWCiJ0040W000H00WO@fP00W0WVNDe_V300820000W00O40
+WG002G84000Yqs00W0I00X40Y08100G0W02GAm60041W0O28GIW1W1G00402MNP30440xMO0
+000000GewZ008400G000010G000W00C08d@R00W0G0W0000H84200W0010804000H0100GLI
+PmEk90010uRT3G101002W40W0020WWvgC0200mCw60000001H000080W0al@d0m0800828nb
+RmutLS5l10Y0000S6000G01W002W4000008240009047G2LjO0WH0048402004G000Kek1zU
+R00000IGI000m1X2832000G444400800G40VjRGsd6CXb1G000G00G00800I00040020002m
+000k@p300040082Ikt0G2805tR06W000a04G08010GG0108OjS3Q2m00000G080gVt00W00Z
+cRGux6000WeCQ3002000W0000110G00000G08uW40240GC2200000a10S00204000K41H5W0
+4ZOG807W0GKW0A00G00800400eaK9o9E14010000W5F208810X00G05001300X0e0eWY8008
+52icB3W00000WL0G4H0I820028881X281000H40eUT30W800a9Gn0150KW00aee02YOG04GQ
+100Gm004000G024G002W00G01AW000W260GY8G0G84m800G22e0uG10m012W80aSaDOtT982
+00W440X0100020000I8400AW00OOWOW1oY0We219GK002WB00000148022X8W01fG40W0Y82
+05X84W160WW05000GWgtJG48D0G008K8aW6Pa014I4AW920Y080000H000048X800W0GAf00
+4G2004014X000WGf0G000m0WwKP380W0Ke86lERG3i90Qe08rs4000c00e01004mGc6qKl10
+e8005W8aol100Q000K0qEh1LNR0W00WruD000820W2180G000400G1000001HW1WC824W4We
+214e0200mG0W20W09G0838008C00004KW0G00W241GZJO4IM2000Gn400yQ430e0H000000Y
+IuxV3000421000K10mK@60O0000040200WKpC8cM600H000a4008001008G00GW000080000
+040G4G0203041560G880000146128100020eo_bepV96ys000mIl_dGfX600004aY0qOE60Y
+02400O0e03GG0Y0200001G4Cgg1h0pW010WgsCW0WO8k0n0004G88200000028800e0180Y0
+0400481G0184020W0W00W00GGe0g0W14AZfAaa2CG40008F411009DZR00000a40000010G0
+40002040008000804XGW80aWGK2YW04000W880WI9D8vh4o@8XBuD0045G2S600G108041w3
+00X0_B8B40080ka0d1000oW06000G8gGXD64E10002000G0900Cfj1XpR0C1010mA0Wi0000
+0CSzi100081100WK00180W0021W8sD0049000002004PHR000I90000W46100g0egeFq1HVe
+3gwG7KLLEuV04TLL9w31Gqgg2eFy0@lf0OcP0yV00w@@0aA000C00G@@30buW1W0000KVL00
+800002HL0@JV0000040WqLLoggA00000mC1000000p1508Q00000G3D0u@@000z30000008m
+zf4oW@007e0ewKvdC511001001Wm17000q4uCWEcV0T0z0w0A0q1K0OEe043d10CWv0I0g00
+0YAsD38000qrW1Zc9100808000XfP0eE7W4oD064N0C080S100HWR00100o80HOC08I1W110
+0X203HCGK0qcT21cRGCSC0m200000e30u600m@_3WhC00@xF0FG40k910SJ2yn@_v@0WmD50
+m@386k7MuM200GHg200kNt0ewF00C00000@xz@Sbgl00G0yBV3uh1wR00AGWWbD001000mxZ
+_rDG400W7q2Wk@D00m00000GRk3T0Sd@X@3m320Um70_ukDR4uQBFud00Wsu8nb0010IvqCa
+gB64GW0o6NYciV8CQ3ovtW0nD8203AUb11400FSdmiB6020000G0C0K4WP@D0y31Gmv90040
+8x73s5rW_tCeAT3QKtWKlJ8xV6kxEXDegexy4Imt00004nUdG8w9iFk1ze@00X1WgqD00006
+V10W8jJe5S3000480028XS3400AayE3NwRm@u9y@l19gdG5J9CRS50W80UEMYQ4COTy7YbtW
+57D0000000Qkq8_v0z70008WG220W001004012W0BnQ0W4W00WGW01X0MyW1G0G0W8W0Yhd1
+2004pSRmZzF0ib100000O80WNqDe_U3oitWcHDuzT300W1040aumT6EQqWqUC00000012Wyy
+D0GWG012100H00080000m00W0100H8GrO6y@U24040Alt0G0000I00ord1G000Pxdmh_6000
+0r600040010010W20000400Ge00G01X0004001X0008m02G80102HO18808010H000104804
+90c12X000800000020096040K1KG00G01400228W0G0OY1K8400H0WW0O00O000W0804A40C
+0080340uxY4kVn0008I0000FTtWJfPui@4Ejt0007Ur5R0G00eJ9DGK00190W010100P400W
+0200G000061211O10004400G00WG00409G0IDa60060W02020042G008W0200082Y0WY85P6
+0024ygV20A04Quc1G002H@Rmo_9G000Sj33Mu@1mYA00000G300abh1fPdGW@604440044Gp
+R6G810QOM34808kv13G020W2800280OqV36nEXQFU0102mnt9S7L2ZNJ20008r000JzdGzkC
+ixV2010402W004000m00008WXZ7C8tV3000904810A00Omu6a6R20G00Ivt000404c04kKJY
+8p39wS60GOykwl1010GM3tW@iJ00G008W000000W180oQqWfrD001W200108400W01041400
+0004A82017CY9rPu9V300G44zk1000WQisW9tDOE56k3d4m620LjR0100W8vDun33Qwt0C00
+W08110024050W0G0CGzK904104008qhP6Kbg1rARGHC600H0O7F3wqt000144W00000YqlU2
+zOzmEyU0000Ho00Ggz60W000W010002W8ICeN_40022G00G00G0000X00000G800402000I0
+00200044WAoJu5n40WK00WX10400W008288G0220000G0GW0208G0mAy64ai1vhh20WGtSND
+0W200W00041010201MSD101G042040m8AGaW00A500DA00S48440KC0WW0WW040I200H0D0G
+0Wo00A00H143G0Y08001000H80G400W0kQs0010W8A0GGG08krd18200500000A82008qGyg
+0MsWOfG300W20001uiV30000X40009000M8000GKf00a0G0GK02G1040002A0028G1GX0SG0
+04A01Ym0Y0200O650G0W900A_t00854A10C400G10CX40080f00042804W00080100100200
+n_MU4IH5E400MwF1000K0008MZtWvSVuHt780040000ioB30G0202000a00rs@60a10Y2HW0
+Y08424Y8004G6fs000G6001Y020200H18@B32fBXnz310m5r5zCW800000208a2W6UhOaw4k
+lt042401sR0401eKyP020000H3eQxD004G20880800000W0WC00q@U2BgyGYqU0Iq0uty400
+80X001efB3caFXAYD0Y01GUx600083400003Y0H4a1Y44002W0000W180000GGWt@DW00100
+004000W0K000W0A4cf1Xyp00005W200B5h2000AD300I000MHs0G00W0W000f0G20Gae3S3_
+Nt0000440100G2eG850OAp402G2G000Haa0W811G0004I800cxt0qB012XyHcXo0080rA102
+0A34v02000E0maw64ee1HAh20WCumcV00080a21Wg@Dey@4c@tWvZCefT30G1000CO00b0mt
+g6K1H21bd00MDWHhDesV6I1GYpd91ia3ycz9000kgM73SzC00100000S7W00000m@w204800
+OiFT20G0ejp@0200O2W@g200W00O4H_700cAmWG@DWv700Y9WB4N020O0L000w00045008g1
+0GK3W102030snsWWKQ1s0000200020404040G08000o200mOOy60080K000GOu948d1m0W0W
+1024Bk1a5000O00Go0m000ep@g64fj100mD90000Wh6000000kf000mV04H42Mt0tK00th13
+0WBqsyD0000e300WWxV00V_100000e2W_j200G50gm30KkvyF00uV7y7000WX1CW@gB002G0
+080_200y@000000G4HKek1TqomjeOCybA0BB0IacX8_h0060mQDdquV2D_PmHvC8W0100G0W
+080WstCW0100018WglV8exA000md9Q25xdGs_6SDc1pcN1004WVp3fuR6UhrWj@JeXQ3QmzX
+isbeZy400C1dK06hCiHiIdC7r3000800284Xk1@2OGy3d0Y00u2I9kqrZdun0000Iwu680W0
+8IU3_ad10006t_RGik600L00000Y000WiwD8UU900084@h1000me0000G140400mqx6W2Y00
+G0IGBH90GWG0000A4000W0X0mG02AitWmgCW812mb@C00GW040W0010000028100G000Kkh1
+hja0204Y4yJ8W@40201y@V220e2ksN20400008h00406RH280000200108W0124020800100
+2002GG01G900GX040W00GAY4Da00Ce00K9G842W40000060120P_R0G04WusC00C0mTg64RV
+2L7RWG1IWtQCuK@4QBqWx@D000GGjz9qYV24000e0000uX000010104az_D0022C0050W0I9
+2GW000000088H010010W000mG402190C20082008W00W000GQKDpR080WWWAD0002W004400
+000070_@t00044fG@0008W4wD00i0000048000TSlHlC6000WtN002050WL@D8MR30042C49
+3080WD0Y00480m000002I2e0204X0042H15Jk1D4a0000cK_P83iGQTsWrPU8yV3Q@@100U6
+Jvd0W000W41W0100_Jp00004W002k6n0GY10BImmSn90G400044mDM602000080000aWZSD0
+0000810WuXJ8sJR_@t0n050pzd000GG4100002004H10WW10W4008W1004C02001ISt0G204
+h_Q08W004000G001gzE10A0H808004a04ul12200w6LbWuPeYT9000WLWM2GO00kbX11G108
+H040018W040028000W8002S0002Y0HCHSyi1Oc80Ga0090I00G2004W0W8wPOmAL6lY400XE
+5o@00Ga44100xWR040400W30GG490020088140009400XESJ0040m8_600G00H20ml_60W08
+00C000240G000220004005_N81inG2xLy3T208Gc0008Q200102KA09AG80CY08KA4OW12Oc
+80M3W8G0021188G44WW0KA2PG02Yo412K4H4W81W8Y002410000408001020204000000180
+i8e1fPK4000C_3007dd00018W4m4G50I409IO008a01G2I0O0G4410Xe21G9G081114L0e20
+104Y1820800281G0a800aW04492a8268WO0000W0204X0000I00049004008q8020G0K8x@D
+Ikk208000008ZyF100fBHyp0040A40040600m0G00mG0WK000Y0G400G8000110K10000400
+85000G000Ka2840YW042g1000WeK0004f400020000440WWHQR0045WG_DO7iD2@sWGWy0GO
+1mtvC0400G205mor6W8009GW70G0G10G000P090004dOe05_d00W02W0W0014001H00A000O
+H0001000700S00080C0yf@6BlmGPHO000WBIX440400020208Wmkj90K100802Giw600C004
+20W1mH00822Gq00H0000008105G1e02001K000WGS041H0000100Y00G0010W00200440008
+G100WIw@RKPP25dl10WdfGFI00000W80G080040W444101420W4002020cjjD0a000AGY402
+000041s4r08040HsdGwH60K00G02Ia000GKu00Y000908002YW8MTC0G00yW63f0Gnz_6008
+kk@y40400000mK1800IP04b0000g5000080W408lU300i10000KB00mty6WU12008E281108
+0A0pup00Q10HhgAYMLLy@X7OcP0Wgg2TRvRiFh10060Isd10W02dx@08G0WyoI00002002G@
+N500O000000AZ0cH_vCZ9_v3H0OTW1m@f2WVxF0HG4ggg3000zz@V04000u@000000W02008
+20n3G60100ebM0OJG3ae300H6G7YCWC050PU6r308Y0fzyGA0646F3000mn900i_l1OC000W
+0S5_M2200hL060A0T086k400X100pC0LsPWe080O000o200G800W9200W1W002030OW8000L
+000cbhl1Fz8KV@900GLyuV30006I000G15y00@200KrN08000u@luV08oC2GW0000@V30CZ1
+0zz702o0OmX0eYA0mV@3WCc1G0e200w70000g200StvD@DudT3g1NbzxP0000Ifx9S0E3WK4
+0Qud100a0zidmikjK@e19Z@msu64fV2TWOGY_FKT_6040180000000ZQ00GRy9S9V23sQmQw
+OiY@3G008klUZMqJuqA3wO@40800000Gsfp000WB1kN1008W_YW9gRI21q6m470fuLnFCFag
+_3h0p00800G0005hdGOx6ioJ5VhRGzd64mA6vjN1l10WurJ010210W0202000G00AiF1W0W6
+2000f0058084uxT38000004G02A2Glz9ava108006YF1000G000Ys4tWDyD8MS3AEBXPyDeS
+P3YG_1W010Flp000r8000W002011W000800440GDp6G008221W00000OW0382000a00Y0800
+6K00a00000402Q0E400800aG10000000Bo040200W010000O0vTvDUht00100fsRmYz60280
+0002OamFaty3WIO000G0040018000W400820W4420000A00400140000G80G22AC004HH004
+48M10GGr_68012G0308980WtrC0W0GHAM6068W0404mO798G0086F3_KEXp@s8gV9Mrt0000
+mq60000000404ebc4sxtWluDuKD300W00W0K000040W00000K40G2W2100W10O_V3GHG0i3V
+2JYi1000G000a000mEo7600it00200800GG00e1H3Epd120000000X040X028O0Q30402kWj
+1GW00W0000101ulU36D6cB@RHau20408WOpP00004GG0XDvD0001004100HG00403000W108
+GW188010WZhJOuKK6_2calURPkV3u800aIf4Z5mG8v60080408820400G010luQmJ@6C2k10
+0G8cVJbtuW10mjzy_6yOU20001000W808410G000G041100G00000G00010W008OOy6004G0
+001200008W0W6W0G6x8XWw2100100W1WRxW18RHKbr900IG04040020402W000H0800001a0
+0082ee44003WW800e022IG1GG00G0a0080W00000H50GW3W2C20200qj_FKcQ502000800az
+0C000mX20O00H04041Gq_6010X0000W0HY404080G400X8G0a10003WW02051KG1W210m143
+W960GW2WW880000G8rIRmx76yNT8txR0f0000140Dxh200680800DZd0000A00200001080W
+qlU2JWRmU@6CIE3L@RmM_gauc1W00G000G0208APVL0sA04zf1T_cW000000209udW400Wl4
+C8m@4olZXgHDuA@JcWb10W60NBgYk10WU_D81M3srt0003024WG010YK@l1004I00G00220O
+FK3w@jYN@3fGbS00mc300KOyV3guz1008000G800020I000W00GTk6GIO0en@4c3mWibLv2x
+40I00000QPQvAwRk2Gu20Zyp00m40G00W0W88cKtWuiD0aW000G500K00vWRGrIF44l1nv72
+00GWYcOOQVL000GOE0000008pF2000G0PsdG3G60W@10000W3YAA0y@@0m0e0e000mTp0S00
+m7@6Ot@18qV6sWr000eg9mv180mWXSDWP00mQ6gyzl1200YG040004000800004008Y000G0
+01n501028CS68h0O0G0m001WGYu90000i303s9pZ5AV8udM0xH0i_l108I0EL_10820_y34X
+86@RH0@t_0oD01K4Y00000W7zt_@3WTc1WH6900u@H@Dm_00GHRjK1D3R_R0210eqzt0U00m
+SHRixl1nId0W00000809rd0400e7mO8WwDW000_SU2000KgDd10400x2dmXr9qn2300sI101
+00800eLV30028200G2002110000084j1P04W800G000484kAF10W00m000YWtW@oJOnA6Q6L
+YnrP00I0GCxC8000ulh4EL@XyrD0481GNxCavl1nidGRJFqx_3HfqIIkma8V20008v900000
+1ebT30004W0000X00Kpj6y4l12W001008qui1004000800008urK3k2AXswD0W000000eLeb
+00400008eutDerLFkftWO5C8A_400SC20000G00IFs9KOV2004001WG00W0GW0000008W84G
+60100000084002480G80O004000804G0866O20G0800804tQ20W080W00qak100110004020
+8OeQ3000HKbF30410kSs00482L@@W2000Wog40020snt0100I6000sWs00WG020010008100
+G00eG00300000G00H2W06W800G0001002W105300080kvtWsKDuyC3o_F18020G000w1t0C1
+W0000W0003zxl10G40AUFXjtD0400mEn904G0Obl4000mWsW000010G0X000000WG500000K
+000020020W80410WW0W0010GG0019W80GK80410181W00012G0G409301g0080Y06Y0a0oNq
+W_kJ81S6kMdXouCucoD0004dux3001000uK_EV27@_0100000800400W100qeW1040040000
+610G0001000mhxh04W4GbPBz@l1WlS0Eti2W100040W00200044OL630080kgf1004200W4a
+Zl1604m088eaDl13xRGC_64@l1m0040008suV20W00000100m08HyM0001YU80erV6IlF100
+18zWc0080XnlO0002GqV680000010GXw6KpB3W00040005Bd1@JzmESgq6V200qgJSV30201
+00020G0W020WOi@4_gD120488280wytW6wP004000W0G0G00j@R00002020012QGiTdSph1Z
+xd0u67W7oJOFR96mFXCyD8V43MOt0W000000AcgM20G1000H00K0001000m011000040G0Zx
+R00800000100O0I4VZ@uIOd@4000G7aY1NfRmkz900402001500L0C02040m104442082000
+1801020H4000140010X0000HA20W410WWA0004WQRF110W0000001022002Ob2302K0ydl1h
+@pmcuRy8N2N@R000Yd9tVu9T3AztWVUCW0000220340GCxlP00A04GG0HG020m0400aX104X
+0020100004000WG0000004uwP3800H0041W02000Y0008000800o1t08OA0a2G5s37ZbpPuI
+y40q70anD30GA00000q0W1j@R00I0AG1W008G080141m00u606And100G00G08_9r00K0000
+0G00O0e00018000m00AW000m2000080840C4000IZ6LC3F3fuPmJy60000by00mMxC0402X2
+00mYy60A00emT3G02000e0100q0O00WOcIe4E3cJt008200W900200810001118020O40002
+003010E0E0G00W118850m0C0804000200070ObP9_ZL20C00@@R00WFu_@P00140O000G031
+8000hwrW6wD004G04O0121G0G3m0G000mG00ePK3QFr02G000W01o@t001S000I000002285
+24000G0000W00285288H0iQl1G00800e0a8_6dyB1mE0W5SbG0000080We9D0010PUV6880W
+04400AW200010Y0080208z0U5GWe000W0m10Y00020G08245000X07I1W1001rW0000e00K_
+a4Bo@mfy98J00uhV3G08000000rA0000L0K30001K0MTs0000iG800WA8af40000u00100Wv
+dJ000WJdu6K1j1801000020WepK6H@70_FJPCpCEuV04z@08w3VGqPcXeLL5FSu1_700I4V3
+00u100000007SiC300es0000000ztV00mN@C00engl@4y@V0u@@00000eNA000000_@C0000
+8G001vtV30202G00000W2eT00000000SNG1W838GH7WCYE0T0T0w0QWa1K082e0Ga10W8383
+pEG6W2WE9Yln8m602G4uCS60V90qdl10my3010003008jV3Gk10000m0n50GEu6yOc1400mS
+0408Wv0G0G0GYu600020006084P0O0G0hwaGBi90002eBR6_58XBnR1000BP00Wg_b000_lp
+00000mV@AO00@f30_7000000e_20000mCL100000e200fVpG5zFqxC600102KpWAfzO9j400
+0000m1ByU30006yrF34G0GUbEX3eJW0W00W0006400xSdGp_64iy300WGs6dXuoD0005mux9
+KYl12010EDtW@iCOzw4ISB10200bxQ0GT0Wd_DOIV34020000WuqS3WG080W00OnV300W100
+000096Gh@6040W00W0GA060X00Os@40G0OcXa1dR@0G00W7JCOQT30W004OZ1R5Om2NFakT2
+fiR0000AW3003skH3zjSMW13vRGk_Ii3E6b4@m9u64Sh1000080G000uy200W000WW9vD001
+GG2@908120100mM_64nk1000b4000005000G00801YSsD0024G2xCafZ10000xG_10fA0jxR
+G8y6Kwd122080W0004000001G1t608520011GHx6qlW1G0000t1000440000200WWBvD0280
+GFr6010000A00124000W04102YTr0G0800Y0W108200004G0084000014EPtPm5N60840G40
+0myj90000KW00uCe60G10yDT36qt0G0G00W10_qs0800500W800W8008mOR23m14080020W0
+00000Iy800000100240210W0C40400008W0W0e04008000e0000402001300W2084Gm0120e
+G0I4402eG3G1022W00G00DRd100W2W010002W0014020WefcP00092001000mK000WW0G0c1
+X1x@R00O1010000050000aqjl10YW1400X00G0H00n000000G0C001000803002W01001008
+30H0K00000018W0W0W480080004400GG4800430H0b0100HW0WWCD09emW00020000e80Y00
+0W86GW008G0400000284W40oU8XjvJ0000IAm6q9V202000G80000euAY4W280G4000800Iq
+n600G020a0m@@60uz38fV6G0104Yh1LUO006000010jyR0O80200200I2W8Z0GG0W420408X
+000G000b6R0200002G0pw@G7zLqsh1z@B10W0YFgD04001004000X01AQ0000IA301000088
+00kCe10060ksd1200040212XpWs_J0W402GW000Y000000W2W0040010080K00WDrP8dM3EH
+vXDXD000102W0WylJ00e0Gl@900108T0302000800ekD30GCx10001080os@6qUh1@Vpmpz6
+00210G10oZ_60060enV300Y0KnV200O0_iL20002DvRGid6yod1bwRmNeCi0C30G4004Y000
+4004000A1GWd6C0uP1mqR9idE3W00000G08100000Y0010aKhC00008004YZAD0W00000GG0
+0G2000a_7i200409dBHBpCaLF300500020100Y00000008ZL_J00040000Af108rPNH7B901
+0085@400W00WW0O3@4W00Wa1y3jKaGv@6K0d17ZR000800GC1nkR0202WmzDedx4WW0000W0
+000X000I40GCW0CK00CC08820W88200WZur4D04400140041011cQGO@6004420002W01mMr
+COE230C9W8008W0GG01W0041W8G10G001001W8es@700G40008gtU3_tF100200W0O2@tWgy
+J0600W000200G4G400C0n00Y01G05121000A001W00084000iv1064206820m0000420008W
+yuW1000040W0W400G05G11008K00H8W10G00GG0G4G0001I01A01402e000C040W2868000A
+02We0DuNC300H2Sll40004X00000ea20G00000A0W0Xvyd00a22W4G0000G0800000WIa0G4
+00GAI1082010000muUf0002Wmss68020O5M3050H000000GP60010005K2800000IX08K000
+O6fK20b0W8aIA041e020e0040180QIAA10Y0G4eQ3mWz7P0K00I7TC0W22eaS38A002A00G0
+0000004Y8200W800201SeT2000GG80000G01m102200000XV0X2002800A00W8Y02010480W
+0400000O0SPk1A2000000CFd145A0000WW00020002Gm0CH000002HH02G10G80050mao902
+20eeV3000G000YPzV683W000O3q0Q000H0500110022W80Y00000W16mx5601W0000X0041H
+000WI008_@t0G_40W100m080080000420000E40G00M0282eC0530H0Y200HI4240084H000
+1112032GJ8A40yG26u18806X1E821X8W3u8004080G0G0K404G8AS_F30C00sr_140002000
+AiaXJtD0W01mst6001011m0mXF605000A000000Y3uDGWq8Gzz98200utM3040G200G0G401
+0000X0O20020K2400001Y00GGy@60m4004G120H2Y9sDOWQ30G10000G002Gm8y6y1a1r@p0
+0e71040W21o2Y2mWitC0r20000L0W01000eG000004b2000Gl0000ag2000YpHj0404G5000
+G00G00004Jq0000W0u21410WX000G40024000N008G0A4_R0Y80eS0G0C20W0200m@28280V
+1k9W800Cbe0C0000B00480620@@R00_pF00080000rV@0SSV2E000000L100@oN0YG3yLKfl
+10u0C00020Wx1400081100Gsot0Cymo1tW4@Dmt@3O2l90W00000ql@1eV@3W000mJ020000
+0400V@jk_lV06Hy0eh000001G@lxUB90o00Ga1W8YD600002008Z180W2K100W100WO000G4
+00G602cVGsR6a0k10C00GC1Omu2G006e2000ZPCCmh000pF0002064P040G0oaWl10A1YHGY
+4Z0c8M191a2u289c5GIaOWa8v68HoF0NcVWi0g0S1KYM3e4PCG9Yu2I4n5m5Y9OD0H0J0Ana
+0KY47y@600@34G00aft300000W60000aW00_F00y7G0000OE0e200G0O000000054000G100
+m@y7W@@L8300WP8uV0Gm3FmC7UW@100@3WWUu11z702ApC4qV0yl@0uV0anCcHmgKbWPQ61L
+bA2Ue3c9JPKLLoegg8OLLHmC1eqO600W000W4uy@70a01yrh4b991202e@@D0a1200a0Wz_j
+1080mJy608G0OrS6Ivt0000GdvpGIP9qCY1p39n@@90G0040820000XgyD0000FE1000400G
+0W040W0iJC320W0ocn0004620m001000001SkV30800_@l1W0G0AlF18GG0p9Pm@@900O8ur
+k720AXXzL100000WBZM_XvfXAQ5@XPsDOx@760EX@@V0108GswC00W00G0G2W00WCLC00000
+G72000420000402WiyC3tFP00208000W8C0W40400000AdN3_2E1008Gh@d0W80bJwD8oU34
+W00i3u301W0YhdXYCJ0010GMs6y@l1008GYXoWmvI0000hD05W_fI00H0mwu98000400GGj@
+6iNi120m00000WW00004004G800KG00W8008I2XW0G8CV30003SPd10e00G01001210040mH
+e6080021G0000aG20001uR08W00K400W800Ust00IG008000004Pe006W4088802K1GG8030
+G00000OF500I8010000H00I000G008002G80K0c801060G0WeG40X40WG848060K8601248W
+Y204383X0S0K00G28W010GC42000006801e202000000ZqZD011CW00G08108hbd00WA0000
+002e0ckt00808t8cGaX6S_W10021G2Km00G01I0W04W0WO_D0Cf31WG2eTjDe2e4000AA060
+0W02040428400W8aO0Y0G08482W00444O600W0eAa1406304141000024002HW0pjRW182ax
+pO8GV6QcsWCgJ0800400IWOIC0800Gu460000G0e2Gu@604f0011040G00000Cg240c@C10W
+110WW18W00e000000H000G24G0GNwR00482001204GW000Gem00uIE3000u0qH010840002m
+hEy8wV300Y0az@300W0G0H000Y00004GQ@60040100G4IW4WumC0000000870W0Wlkdm5T6C
+by38000a02G000C0G0I4440WByDeTH3W800001040W00m00WI_D8yVC02000I0W4000vtt6K
+N9300G000WJMLg11LR0810WsxD000J0H000nx7HzwRmXy6au@3IW000000020W0m001802Wf
+tC0084008A90014r7OGV@680Y00C01GYk6CLv3XmdGp@6qvl18W400W0GW000W008GjZ6qcj
+1NXp0GW9210000008X900Cav60400W0080H00009000G0000C0GWY4k@s00044rUQ0X410H0
+GCt1QG6fI4ef7pzo01000040mnmOm6e6ysl1004D0000Wm0W8tt4AvcXkyD05W0m8x64sl18
+2CW00G8008002010004useCupK30040akq37Nd000WG020G040W_pr044000W010O020022G
+400W80W802002C0Ge000GG000GH50G020000YY84200000gw1a0W008021000W0GO8cm@11G
+20000LGXW2080OW0X010GE2040W8G42W8H010e8IXG0022201000W0HGH20006W10800p6W6
+aD@30W80100W008410G0W00G210000090ket010W0W00GW1Y201C004004O090m02W00680G
+8H09G0040WC0006@BIG0GgX004WaNl1ZIm000W4G000820G42II0HW02141208I8qeICm00I
+417X8W0112511AAG03FI802W8K44100W04404G4x9G80G00280800100W0W004W0090W8830
+900faY0H0002GA0W820240WI65W800GAI100008G0bWG02W00HI108maGW8b0@vR00WVHI18
+YGC20aWK0C5k1zBp008Y00000aI06000100e20402000GAAaG0081185000Ym0WKWW0009Xe
+@D00I15040WzsJ000W10400W0200mG0G480i9k10B00000W0400300Y5G0e010W000001Q10
+0AG018G100400008WG00002XAI00Y28W400WY80000W_VG8G15G600evV30202iiq3BiO00G
+000G8GW0100080W8400KW0210GK2308AG0H04KG1000W2900G0008G40820Sky@10W00816W
+U5t000W3GQG101800Y204Ye086W09H0300WG0C000042800HW1v2c1e1P1010GO809I00001
+100000GwGG4C60M061300G10100GMY9aHN2080003H820WGuuH300048a20002048u004uWW
+00011682G61GW32m0ZW0044009_pmA@6CFF3FpQ00I10G6080W0G08G0H00000L10002WyVJ
+0206000003004vyR000uI000482410300K8f40G08000G08K00X8800G0402G0Y00001G02W
+801000W04200GI28Ha0845020900020W2000008H4W000W00CXl14We3000Gm1Y4ezS3W800
+00040@508W0C5qB0Z00nG0004auc16001WKAmg2000mj0G6b6G0sQ000G0M000Wn2zI00mW6
+A0qnk140a20000W500Og@40002WiI0010W2O30000EAT7R004WQ10100m1kX258SPa100000
+0kH02004B00Gn@I000MnA00m8c60W700W30G1yCCml1Y8205800SYZ1o000QNr000uV000WW
+600w3C0ax80000uktpPeOQ38600008u60080080G000G0ytV0Ghguv1_3yF00400G_710020
+0500pux@EG1Yyl@14000W8000HC0000084m000W1W0WxbD00oA00000OGk100W3u6G98BWI4
+v0b8oF0H4J0N0xWa0a0O000M300mA00W850WvE03G9060e0C000O00042000uk000mP00Wp0
+C000h1W30000W100GC0s_t000g000W3e200G7000O000cA000N064L0L0m0c100m0008A00m
+K300W2WBYK060m0g08F06A_l2@10008ZPCZWFu11pq32gAL0KLgyGW20UuXm0H0ml10WA000
+Vh0000008I10000uk20G4508L000WBF000000G0H10000y00so@68E00ef@4002@xF00000s
+Ds10010000WTLe2000W000WTL502uX5wDm7lLW000CFy3W000047G2iwU2rdbGBuC0000iPj
+40800_zj1FNpmnt9yAk1000u1310Dc430180wit0000G0040spnW4oDeVyAo2FXBPJ8yV3YB
+tWgnDG000GXR6000WukR3MOoWbwJu1I3WG201400020WW000008020C10ott000Q9Lyp01G0
+WDRVehV3E0@XakbO_M3IKF1X000ttQmtvF0001W0800G0014000nZRGH090104OnQ3_0FX8o
+J0ud1GrROS3U8n14oXu90W00uoZ4gXJY6uD000WmYo6W0400004GFu600080000Bo10WG@D8
+Up4UfF10G000102McFXH0z01080002WhqDG004HTt6CvN2000X0W0810506002mfy6G410W2
+0005000G0100W1WG00400e009GW20e0010e000126dF100siGH102gt0W2G00000Y_pWVxD0
+000802200212W0002UtW_sC8t@4YZE1YA0000W0001G8840utz4IlrWYtDOQQ3Q2t00001WW
+000G80WG000004000GG04W000Y000M0G30uW000b8005O0104020404082000eY300GW0WK0
+008044800i0c108YG0GW000020A420G04012L080400GH0P0800C013P44GC0H4G60W11HGe
+0O2K0501Q0W0K1O80010G5X04fl100G0004Wq7b15zR0002001m0W008c7o008Y0eO0a0m00
+009W000901600WG00eG4GX0032048112C2H08000W00102000m9m020010e2000003GxQPW0
+000aC104000001K0A0m1GGG08a8000086429040G1WG0GG0F008X600C0Y00A0X80G00W00o
+C0Ge0030We06440000010GyIm4UUA108G0G00GgWtWZ7V0210400W0005G0O0Ge2000K8004
+00mji600W000m21W4G020000001G0184@g1JydGK@600G3wnV30020W04W0Wn0GMr9044012
+2W0WG108030noR0402Wr_hevj4IacXHnJOW@40200W000vvV3g_F1GOE0t8cm6@F00800003
+mg@6KKD30402G0012080uNk44820iz@6fzR00200W000DKp00C000E00fAO001W002WW0832
+W840HG000008OIP6O0G20004jZ1aW5kJu9T300400014idf40080040WvrV3000200IO1004
+020914Ge02W00_@t0GI0I2410G181_vv33i@000GaNKCuaV3oZt0O00WPtRmCSC820Ge0U30
+00000eNvXXAAot00I00NSOmO_60W009FV300G04uk100W0G1A6G8080H8004G0802001u910
+0000021pwdGZz9qRV2XkOG__6G408000G0408208440082048000000KM1GUx9iWV2004810
+W000041W400G00X43m8OU380G0000W0080414010821tqN1C0201200G400G000amk105000
+W200K400H0H0I0G0e2W000W000A523G046a080m013WC9eH2WGe04000WIA0G14W0WvAU00X
+62800HG04YW2G8014KX00W200YGb@6009640G000GGG00020W01X0W00a00GWL0020002001
+GK006Ol240008100000W0W8000Y020000004W0140G200W302000802286008E40808G800W
+00W8G0200808102060000C@124W00041020WbyJ0000nm@68204GG0GW000cXMC000040m00
+00202OAA0CI2Q60aG40005OY146490fe8K4ZO9uO4I0r0G_@Cibj10GA0402000G00200000
+GAG10000200500WG80002080000D0b0200000XI1WCn00040fG03Y090aIA2190O000004L9
+520000100aA108I00aAG2000m000I116100085fW000000a2200014040W008020a20020K0
+84fW1O80000XK0008W00085000a0FwF1Y0000W802Dr0W40840808006YG00OzV301000YG0
+00000GWG1000W0044100020G8002210O242840000G0220aMh1c140G8X04Xu30100051000
+G28RE300004za100m000W08018280G000810020AmGW0bKWG404beG10G88agFIOs@40082a
+YP22W041030002WOTR3k@q000008020m000W040m081100W8102g0b060aW68YW4100100Ww
+D001848WW10800W0D8VJ30W8W03O050W20100G00W0404e003Ie000G082000OWK_D020482
+01DW0G0608001A0000GW00040XGiuCn8aJ6QutWYDV0000a004I1XG40A2O80X00G00W0000
+8GI0H0000gM00GX0K9Y1Nud00G2020004a81G960000aG200X080on@D0004Xe000G00200O
+0420H008220G2010000W00005I0024akU2zmR0810000A0eM024290ail1000O50010CKWK0
+002GG0W4mD00i90X208Wm@9804qn2020WG0m1000_3000GMA000GL2zFW000aA08Gvy60I40
+00W00_R10000E0G02000400Wet60000GXwOnDuxV3008X00400By7280WGl000ZcR0g1G80W
+e0nPIY020G861W6100X82300400000F008W2mD000Ul@0GG20GCQ0OW1ukH0m6100moPUsL0
+01qx_P6SqH0oT00uq@4000K000_Nz004Y0yN@0000Wekzd@1ulxZ2Wm050x7Ww@D004JG8oC
+0y300W0m5W9010O02000C000W3000M10021m0K30109mP000600Gw10Gy3W1u6OF0C0N000L
+000i100WiO000e300mE0L0Jmiu6Svl10p000s1K1q1q106O700G5000OZPO00m0G1W00nob0
+0CC00OO0Spm0C701a5d1VNpml_C000L020000cGWmrVG4Z000000HC0W00000G40Q4008TF3
+CZA0000QG10gB0000yh0Wo000vE2k7sF30501e70n1CMztV000mcVWiuI000U00040FSqV00
+00K200Q@100000004WR0000CulPS3W@vV0tzQiMopfYXVO00G0000SnbTteFS9QQDat@POBu
+4M@d108020011UtmWaiV0040m6u98000u@6300000GA0efy7slFXinJ8iS30G20CNk10400U
+1dXywPOE@726gYfqD0002G4l9qD76lxR00004R200LhVIjRCC5U5DjBnpSI00020100mb0FC
+4V2hgd00G2WjjC000000W2acon0040mjy9CG33NLbmc_R4Qb15dpGY0F04W4OW_76Rd10004
+7Em0Ob0mkdbeuz4cYoWqxDe0V3sUt0H020dupG0xCKOG200080G00c8l10288000G008We6W
+4004GSfl10011Mmt00200m084EOs0G00C0280gon0000ea128044002011G01m9_9KKl1W22
+80200100140G0500a0001G040004K00480000208008401004000W0GG00WW00GmVqF00G0e
+e@401G000G08ID3gGp02140@@R022002000000OgPc104C00002wmt000FRW04012005RW1H
+Ld001200004000O0040280008W00W000W01GD@R0WW0Wi1I0000W048WmVDe_z4W20WCPV20
+00G02W0SKW1XHmmqz9SOP20G40VPt0000WTKd001008f3GjuR0000YV_JelV300G0b3G204G
+0cLt000ACfUR0001WXwI08000W00Wmrg8l@PU4ueE24AcnAQbh2000y4200k9GkbsJG000mZ
+aU0000000OPH3F7fmIRc@miwR000Wcl00Gs5xzzU5Tz@00WHzEEIhDU6G80Way_3@xRmG@L0
+4I0eoZwspWX8ID8IXDGC00qcn@lkex@n6iWS2PydGPmOeK00OybJMhQZaL_lf7@cnvXQen00
+00SYqCCNaPzsnmju6ywb700Q0ALwjCjVepw46sU3G3A0lFP600C0000IW2000040A0000W10
+e0G2A0600W09eI1mWi7seClMQiYdRIDW8400vWZ4YG0824EI000W8G0aB5030790SLE600QJ
+xpoC00W8I0000GG220000a4980491GI402Ia4I1814n100XJ0szt0000E00000GE4a2W1WW9
+06aw@0j_Vs75n000000mqI00mh9d0gd00KF1Ww100rJ00FrP60c1GF00000M5QnZpa2C0iI0
+0G6C@xyk2W01mrr9CGl1tnp0W0GW5xJuYP3_vtWOqDeVO6eC0010902002m0g600W02020Gn
+d9a4A3ZvRG7XR4gl14010I1tWkoD020GGvf60048404004G0WeKDeIKCUiq010040004Upt0
+000ONzRW0000W0024000000Catv60100cEsW8_JuMp4AUFXpmJ0011000GWSMD0020m2iCSV
+_3jd_mWo94sl10AO0QttWK_JuDU3Mb5ZtJb0W00080000008bgRms2R8002W04Gmx@CStg4T
+Ga080GWHvD0000XA0G00020XsR0220Woks0008000400W001jcGYmL04G0uST62c810m003y
+dm2WFyvx3xwRmv@9008A6080200000I010100sbt000G000480000002A01000K5Y0aGm002
+K08m000a00WW00WI01nI2O8_T3spF10G20400000022202uKV30000Y00100O00000004805
+LO000W0408WGW00080000080YH4i1W01K81W263801Z00022W000W1W0200000MA8UXt00G0
+1TeRmH@60800G00402060G1100Y20040500W044G0088G2K41000W2000112A00404005GZF
+vD000G0e0420028R@Q002240G088000040800WG0G0C0H08Wt@D0008020800W000200W00W
+qyl18Ig2040094080G014400010G0W0W202G0000WJNW40I00000b0K80000G2aIk1Y00G11
+0400120K20AWG06X0248W5O0e8808G2I0212HK1014000W2G040014X020310X00WMODeDM3
+_AqZVcJ0080mBk980X0000001200e0i0001I2@b100hYreNHd@6002K00000W5G048020000
+0WG00000GW100001G4000NAdmRoC08000000njw6ahW1fzRWW2004m04008200O0G0000WG0
+IGxIW0040800ODqI0Ay0O@V300O0KuV200820800SKh1WG84Ajt000W026002gt08042GG00
+00Wa4Si1JlQGL49Kwg48G80YmtWrUD0205md16yay300300W0004104000W800WlhD000ChE
+W00000CdOR080000080PpR00004000c0020008005I000I000G1Wb@D0408204308a8WlEB1
+W0004000BsBHOx6001C0G04001402040vqI24080000000oURn@XmJC00001G0000WWG00W0
+Yht0G4020000808Y0G400G0WIWn60000KW00ISt600004001mhl6a7j1NZmGW26080002400
+G0108001PyN140W000040004tqmW6gD08g1mS@C0602ejV3sYs0080W002a06028O00G8G00
+20GG0W09rqOmf@9000G4100qEv90040000IGq86K1U2G444W8002G0901088Y8W00841GW80
+2mG20G000G4000G000410G00008001800000uv4G40000zrc4000W00016W1110022G0G400
+A0Wa2I0W2a00888WKa200024P4f44WJW6a90G820O000WW200002I8E1G0800000w8t000GW
+Tud060400XW220aG5O0H0eWH4013nKtF0W2000800a22G104WO0G00002800Wub1300y8KEl
+1000WNXt0Q1800000008G00W00C4nA0WWGWY4YW04G0L0208K0W645mQ76G0WcW0030a0G00
+W0GY2800201000W20G0IHsCiFU20GA0400Gq7k1000f0000000IW000W400WfuD002802004
+000KjnR01O008090W2A0lZt0G2h0W02c0000GA004a0001aYm71I00085011400WKa200010
+0G000GH000048Ws1C0e00mep9GA500WGA2fW2W1zDexP300KGTCV2G00G0W000G084K08200
+10H000zpd0000k1TC002000008W00W00AG84024YB3G5400a00S2a1RxO00W00W0008Y0000
+848W0W40W0Y00080008040G08K00444100050010X000DtR0e0040001210G000O2I082H06
+m@@6aWY1x7PGss604K00000WW88WhzPe9U3Qft02014080W018G0004W0WG000W0400000ml
+GG40008Gfz730004W600044O0O01040000122001G008WW0240e000800G060040C0011800
+20028000W0y000m010u0000040A08000004062100000W80GuJR3wstWcuVO7S3oht040100
+000lS@1W01008WGkpt00eD00W00cc@100G03uR090200W200W0IW080aEb100041408800YX
+00000008W400ru@00011000G210000008004005000003Kh010161Y@t00808A0W004A4H32
+0elW480HF0000W2GM0001KS000084000000M0000a03000QGGs2800Wa300aAW1ek180048W
+_6000Wo204000100000wr00000M8I00000G000008400000r0080050a500001l0007_R0O3
+0000SBpsl106G030026820TW006cX1p@B1000FW0000ee2o@F100vI000000WdB000dO00m@
+@9001qRfB30002uXg00SG084X1GlW2Wk_gVWD0ROZkgo30E400iR00O120W@Os30izT20yH0
+000000Y90000040OWyyD08000nF000606080C0m1G000m0000E000430000G61C000O080eq
+6300n400P5020J0C0W0C100220004000Iq100WC008t0G0c1m0W1W100aAW1Op008s1O0e2m
+002O6008A00Wi000G9000A0L8M1g0W0K100W1000G00W8200J5044HWi0m08000m000u6000
+0000A00mRvC8207W00c046000SW000000m120GC1ufzAIco00004W010000VH10x60002Q00
+Wq@D0qO1md@9000Ha0047m00Se100O2uY1m6R0Wdx7WP_70@lB@x@V00GHK500Y@@1q00000
+00G7U00OcfFq0000001000cn5gL4hU2t_RmxwC46d1vknmAxC00W0000DD040WGVPu2T3kRd
+X_Fh8tRC00W04PF3ftR002014W00JhRmkL60000008GGXS9qSa1000040G000008yV34108y
+_l107R0020O00020214000008080x1dGR_6iAK200W0Q7@1022000W4008002020004Go_FS
+lD32G00G00000100014GUz9q1Z1LuaGvhO0000sm00OxJC0400Ouu70G00CC@65BRmV19Kx7
+3noomfwCqhU2rxPmgoC0W0W8IX4U9A1007KLERW088WiQDOeV6IT_18000zjd00400002W00
+00W000_si1ZCb0G280080000K0g8q000010004000400G1OQF3cxr00020Htc0G00YOuD00H
+8000001e02r@RGMW606q5W20WW08G0200000WG00400W1000G005W00KG41080aC051022q2
+810021800040GW0K00200WX01000W0K000082000eUdEXJ2CG00800WW04400G0180000W08
+G000002a02004W5rd00X004W000020G0W8012100C0048G0400100G4opr04A0WTMR00002G
+B004130slt0GW0W0W240C308W0020u010842G120800AG00110080nGG0WY88Y44008W1001
+30X2Y0008020G00C01G00440180420010004G111001010O800aG0H000000H4001000610O
+01G3qil1000e0400H0O008000G4W0e00080004G000000WG20002O8A008G0400011W00000
+WHi1O82WWW04e000000H000K02W250G02C1W8I8He2000X1240O8WPa100408G2088q0G000
+2W03W2G2G0A0m0080C4000O608004KW080Yi@J0200Gv06CxT29rbmutFa@l10104XW000W0
+0G0O0m7uI08U0euH30000000G28002084WjmC04000Gm1A080201100020GGC0020108KWdv
+9D01000L00WcAO000WGsa60W000GH00000WnHCeWS3W0001100uKI3g7t0G400@dPmkqC0W0
+00W001220WCaDG00G00004m2000020W000J0GWeZC3080Y10041W0P8X52YSyD0G00043000
+0040908cAo0000080001084yrf10002W0100G00408020404080000G1040000X00004210W
+YKSI0080GA294kY440G00WW000001802004KW@@D00pxCG4W80008040W00000WC08wB3040
+001G08FC302000HO00X40000m002000840908000004006X001WFsD0PW00Ye000G2000000
+C0G000000W042004000G00GO08020220uEi4kj4ZVFPOjK340G002000at1m@@601W0Qsf44
+008qFk108201800024000008000f0rC002200000f8208000004W00009DU300002003inK3
+80000020eCB3000201G00006GT16SCF3TWaGjzCqQj100G00WWW4DZ1PAP0800000GG01200
+016iCg10400000412I0W1OW110I0W006603C0240090020G0WC824000004W00100102Gew6
+382008H0000e2X018m6MDW80HA00XAe40J4W2002X010000XX0miv9000WeGF3gDr000202G
+000G0G01GH040000X8G561000H000Ka1G000W00104G50024WY8GGG0m02P01840A80Y80pC
+064WH8GG1Wq8e1A210aG0OX01e82GIXCWGW81820008224G0G5480K0nCW0OK2010Y65A813
+0000G2W80HG2B24142008400201060W980G1GK@l10G500G0000CGOyK6gEt012020480004
+80Y0GG000GjS60Oj0G0Y00081Gm01Ca0004148WO00G00e0G588L011086G02Wn022HWG0Ge
+8AW2qm0W08009I000WH04MO0eG924202G200W4W0001100GJ04048808407nQ08DB10KWK4G
+0801000A2004000Y42002100GA1_@t0400a00008L0800000GI108H0008512440000I1081
+040801W0W87D05I1GM06iCd1a2400110GA1040G000aA041H20GAf0220100a208Y00081I1
+G0W4808WK0818900I100H804M4K04080W8GHA0G20000O21WgmC000004114A0ee00000G20
+10000CGc1H10W5LJ0H0000004W8000008020AG0000800Z21000020210W008W000C4G0000
+WzuYtC8tM3008W0000Ab33000G14G0GO410G01020X28243KGX0W80010m528W24WO400000
+0214G080020G002500008GmW4030300G00b00Isx600103WA00W80001X202O2MWr04W0040
+00GG0010500e000G1000G0Wm10000A4W2eWb2Y000022Wm00lja0Omp0K0T000004C08200W
+eN430q30050Y0H010O224600G4H308000A4582as0i000400810Y08W00a01W000YW1C0201
+820000AH00G41i1200000GG010004G0100108000H6R04040010000WWEBnW6eOu9K6w4sW1
+bJ0000F500WSZD0W200000YIsC0G2000481aGHW020WG49800GW100Y0Ga0128188G0K0G00
+qhP204801W00X0000G10GJh6WQ1808e2mxk60008J02000U1M500G0E5080100W00WGaT106
+0Be0I1000WW202W0G0G0004wr0010_Ce@4200Gi0018000KGMS601F000mx8_B00000ApFR0
+00WU50100W5wz0000yN00004212002GVBGW0In2z7WWG8NB080200010W0e_2000YCWUH800
+87ovR6000e70040q71W@@D00h6m@@6ug10G6000000G9WG400W52@V300000ypFI@N2GgRqb
+mP0WHmD00G0WWR000002n90a2208D0uVWZM1AO5G5B0F0003CTQ34HL02W8Y028I00Y820Y8
+00y000WTs107Tm@pZWRA0GND0WU400G_100G0mWe2W00A0300WA000Z0004f008t1O0Y1m00
+783008B000u0000100WV04Cy0O001m100W000WO000O740XF032E0E0O0C0GWO0W054000i6
+100WP000x0L0c1O003C300W100GE00WVC00xP06ap0C0G1k100Y2008400Wy30Wn5WBoE8GE
+3W100GK000P700YB03ELGM0e0L000O0008sS00400K30C700O28_Mo00kA00KrJI_t0t@F0F
+Gp000OXa@P000cgK40000044A81XK84ImW44W40000_500OgI1WuIWp0W15p00000GSH0GH1
+0W2AW8008000O8800eCm08Ey100m0eia2H@_2049Wly5W00000mN0UX80000ybADpO001080
+O00ByKH2jFarR2@Yd0W0202400PZdmvtC0sV0u@V9cPp00000W200o1GYe1aejr78040y@l1
+0804EXs01Y00fVO0400WTID0090mZu60000000X0000100WWW004o6F1040400020G08000W
+bQ000000104O20004002000M0evm4W0G0800502040080W0nDe8S3o4t01800RfRmYL9qza1
+f1nWG480000020WG800G0001W008GNwFaqk1xaR000WmUkbG000000amMtV060WGKV90G000
+G08m6HCyrU2LVB1180WQsDuUFCs1aX4tVuk03E3pWq@D0104GXo6W0000qx10000020GGO00
+0AesWdSDu@V30420qlY1bqdmKy9qcG2XrdmGv9805200800004e3FDu@V340800000g2k42h
+FXePC8nT3kWt000G0W004W0W0q@l1000WD7W080000H20000041W10820Y00ea0080GWm0oE
+e6W2880G0002040G4G0048000002102H404mVd6aWW1nwR0040G402008Ge0402940400WG0
+2W0000410W80410H800X200C0088WU4CW00C0W74200e0m2W080Y0200e020014aGA034LO8
+g0150G8G2W2Y204080000ez0a04GW040m01WI20C00a0KG2m4G8008L08WWeG10402eGGO05
+G4EA20X0001W803080X4C0W000020W0W8Y02000808000W00Aa0W010wXF100050808030X2
+4000010W80G00C0H010000C0qhO20W0W948008084C400X010WWY000414KG010a70Lq0002
+2A00e8hQO0mv3O0C000O4I040I0eWG00Y02W120Z00W002A8L03000KGe2A8H145K1040000
+0G0Z0W02KG208WG0G8W30xdO002000W0Gn@P0040000W8WYH4oXoWUKC8dV302000600I100
+010WWb_Du_S340G0S913W020100100OG0044GQY6000WLU0W0020100W000X008WW01460W8
+38009680200100G00009G00G02060210E06Z@RW000102000008W1G04UX100090080001G4
+0W00028We@bG000HV9I08008A56wwt04G00@GR00002G4004X0000O13080eHM3000000G20
+002K4@604000014uA16SQj10W00Uxt0004W06W0IGNYtEU8lR3At@1000G00W03mF100001f
+PG1_C0W0G008G0000812100000C0U0y1l1002040200080OjV3000020G0004W0008eT_JG0
+0000042W0814G00YQFXrKOu@V30004LRv30008000Wz7b1G20001920CWG0000mL@6aUP50W
+200210qkh1u700gHmWtvJ0W004800YVtC00002X000W00W40a0W08000000014GGz6Cif4dZ
+p0GG0W95O0001W000G00W03odW10mWoNJO6T66do0X000WWX1G0020a0100Ge00480002IPY
+Rmjx600WWesV300G04tX10Y50wEDX6_D0040042GW3LbOH33wq9XNnJ0W0G00048WG2420YW
+40WC000f01501042G20809Fm0D000G00008GC000agmH2X0JGX8000WYA04400G180G00018
+004W020W0320240084820G0G1C04OW9804414G14G000A00G02020a1G0100m0200cttWlIV
+000W00W82HWG000W823F10088W04WX00C01G0GH281KWP2WW40hed0880000G0000aUQm004
+008G40402002AY0GW800006V1024204C0WG1808G000W0280000WW800048W0G001m10028W
+60WIeW2e082840084G0X00e00KX001G8A8glbXDxJ0K003202008500G40o_t000WGGmi211
+0DI8m8YZ810X0Y4I110IGA0W0X00004W8G6W01G0GH0000008054XG00W8I18pW0H18bK01W
+8GG80008VaKGa06240085a0mK00WKIX041G000rrc6GA14G0492fa20XGI421A0kxt00gG00
+eGew1rWN2IOfQ60GG0Mql191PGm@600G20K0WX80005056W8NG043GDel10040008Cy_k100
+0G000A000008P00WC01W02100C005000AA0104980W20W4200W800280e0210K00W4001800
+8G01G00KW045WYW805002WLvD00W00400400G2G0002epWV4P00200X80WDtD0O00Gs@6G0G
+4108A0000404G000G3C004W049G00W800W00G000W10000G000m04200W0800Y0084K0O007
+08e2GHH0C000OzPO4240AWZ0X90G3W0G026n80Y0eOC20H000W00m0Ppn441S00000W10000
+8I00I00fFP0K00mmOJur@40HGK0620OlR3o9c10110WG0I00G0K6l15fOmq_C0G000004180
+0G021K0040G401W08201L0000iL0G0b8200100K00eG000400031W000A0000W00GW000080
+10200Wa0040000G4200a82400806000021btQmc@F000WL1000aP1020000O00k_t00GV900
+0Gz20000aW21080O30000VBe_0242fE001008000040ID000W11oy2100eN0W04420A002H@
+D0e0su200022ftDC200R102W800a8000z50GW0KBmM041WGi000086W0002W_6400a_2810W
+RqJ000H69080K92800002CFXfmt000UeX00000m@_100y2002mgg4Wl2GHz9uV60OPS90GG9
+0o0I0a132000Od39mWG80000901t0eXV300W8200H420M800mF1000wxVz1OK00m@10Wg000
+0000S00c9_1sStW0rIO_T600042004t14100o2WfyJ00kP00iC0OmK1c3W3oYp0k100Cz008
+m0O1O2W003WGiu60004m01Gg3W0S7e30EmF05eE0AGm100GgAWJ0S7a8uEWBmPmU0n0k0IYP
+1a4b7892S10GE3WXv6030E0N000C000c1008g000O0OGo0m005e30003000m1cpGkw90G010
+W@VY9000@@00vUdWT820eW20Ocf70VO@xF0@tV0cfl0yRV0000uB0Uf@120000W0aYXp0909
+W80000VOpGm3FWW7UWPoC3@300ggA1DpC2wlg0qV000hWgA00000GXdj00@hA0@tF0khD000
+0y300u_xD00G0W@15W73000000U00v1LHOtC0004euS3IoW16100@Xd0G08eC_D0020Ogu9C
+Ij1000GI8FXquaOFR3_1OZuoyeXP3oZrW9_Jua@4000W0002Oe@4kRY1801Wfep000WhGpVu
+ay42aDXieCuhM9wVd10002hO@Gj8FaRG8Jod0W00WlGU04L2mUxCafh4nhBn4x9K0N8brQ00
+G0e85g0W00m5N6K9@3WG08_Ud1000SI300sElY@rDOIc4wet00G00XFWnjt6yJf18GK00001
+04G00m00m7L900W18VV3UitWVtD00G0mWzC00040840mpv90W0000G000WmmgfC0080180O2
+50W02004401G0X80014G102002G00GKc0eA00G28002400L100111W1wR0000KW004PoR000
+50W0800GK080gG9GW0210n180880000Y02G00GG0400000810008G008nMP0808000400008
+000G100G2G0000G08004H8Y22G0N413W114011W0280H40m0000SM4000101W88W8G20100G
+G000Gm00021000J180WO008G0Y10H000eAW0W0401Y600CGG000008014i0l180020m0400Y
+8005m00GX00040002ICeW80mI0I0o0muO60GG000000821000082020QkoW9gD00W0800HWs
+7C000000H80A02324020200028000040000G000iK210000802K24081094W03000A601WH0
+000L4X4O10W0GG24aK0O0I0W4H00G4m00000A1m5rI000W08G00IW00m000GW20020000201
+W0000G30DxR0W808H000BRR00060G008HJRGRqC02000102Gor60280120G2411202400120
+18WO00H000WL9000hWTD0WGWGHz680002012Jz@6WG0204140O2420002G030mA38000WujO
+3002m04008dV3W0C8040502o080G104080jLpGUcFa@V2rLQ0012WZ@D8e43k9tW_wD000XJ
+t@60M11G0000010aF_DuJ93W80005040X0200000008c@@R000050G100000440000o8Bwt4
+c5gYp5J00C0mdOI0G000000400W8010000400G0e0404OUV3cztWViC00800H81000mea600
+c@F1004408WW010083Y4G2002G20Wn_D00008m010800002H044408G01uV03wU@XduO0000
+4001020ZG080008W0KPP2FhRGow60800Opp4G00GiJb1JTdW800WxuD00GAxcu90O004080G
+vQ68200whV3460000009bF30408008Z000G803000801lmLnIz60800002G1000C8010008G
+cnqWNmJO8y4_uaXZRUuDN60LV04Bi1J4pmzX6000G0500m1_600400WG00810WWRC000000W
+4Z8pO8G@4000818005G00aW05008040kWGG380Sw930000K00004080400qmv60020408800
+001G0024002NK810880Ye00000GxK028e@402C218282KO0008DAC0H0NuP000002108G2G8
+8aG0Xq801G04X100Hn42102g2wktWFXg000081010W6Y0002008m00100G010mEFC00GG0W4
+000922040W00101G8G8G0000W0002I00G000G004100A4000K0000W1A01000180020a0600
+0000X0000082p2G08G4mWYOH1H4G02g06H021W0084W841G88c0KW03O01006K420G0RlLYN
+zD000G0fW4IG010aI000bK4S4l1000X00001024WKG00G000GH025_RWY00008bGW0m8000G
+1040G4000e0W9H000aIA0a0WG000008n1rLz6ikl1aI0Y000180f200G010AGA02I40m4f8b
+5C0002WKo0000C0585000o00WK040B30G10000cqdh10030G4HG000110X8A0X24W0800HW0
+0080080820me0JX0002281tR0040oN2D000G4GW104W800000O8000000Gi1060824W000C1
+00000GOG0002000Y0040000840G02042I0G084000X00822120i4088W08XSQHD3G02824Y8
+40O10G000420AJ_@GfU6G0002G90C0240000100G302W026W501W008O1W8OD000030400W9
+00JnR0Y10040818W200102800540A8002GCG6I08EA00I0Z02W0000RC280a6@D001C008W1
+00e12052GWO001m10He400808e8080W100c1H02200OG0GCC60050uLu70004Kw930A2000W
+00002XG1800W0Wt5D8_V3kZoWHBP014500000401001Y000400008001000204WW0080000K
+F0y7U2hhQGWo6W082W0aG800200201Xpb0W2800010G200W0H008G0uee4_rc10GV3004mr2
+020080G0000o20200mB0f1000Kfa3k10G0gT000045mK30000G002G00000084zV0000mBmY
+002XTX0008840C002W@J0G1yx2000ON1P1004GgPB1aL0000eMG@1000mNvAO300Gqx3020u
+lGl30000z20vzR010f0040GI100_za1G20000K000W1Q500000ivb_60mh600g0mIuO02800
+00yNkq9OA008VS3M5d1009j000000W1210GWR00000Ew_RC0W94003C0FS00Y820y0002000
+aXV08540GJ0mtU41000200001000_OGvL00oD00cV0C4L0O0G1XXd00100aV024@0C0m0Oa0
+d1000WG00WO044p1G0W1q1000100GG000m500W90N2VWa0u0S100q1000E0004S1000J00aH
+080Y0W00382000300WV000@C00iT06Sx0C0W1w000m000OF00GE60WVCWA05060u0C000O00
+087WnjD004JGLr6qsw30GW20000000tSSV3_X_XSkD001kIGx6GNP0ilD60W80000gNL0g70
+00IZ100Tj@Ga26800D402aW0Y8YtlD0WPmD0GmD0M80WOr00000eW20q7H0Gxr6GG10ucw7c
+Pxa2qa00002044000080080gZD100afXoB1028W@tQ9KS908a104000084mml60001ubV3MT
+Z100G008G00802K@l1G0G8000G_jZ1W000180020020a0G08000GEE20402_ND14G000WG0_
+@910004dfPGou6iBB6Jld002001010000GghD1W0008080AWh20400010GsOtWWsIefI6GG0
+0GW000000WM00WkoDOcN3IVoW16be1SFIAW10G00000W40000008ehX40G004YL2RnBnaY60
+0000K00rjx604G0080000060008000UyH0804BV20004EVrWAuP0102mOy64fm6Nf@000100
+0e0G0020W004MW1bjR020100008W100e0000002yoT3Ukd14001xkR0020WNnI0GY0GoV900
+80G002ni1C820004G0000G2I000vsd0009W79Cu9D38000W000G00WH_w600G00G0180W000
+00G802800008400vWE30000000aO@T3kHFXghC05m080040G0W00080040000G0420Y8Y008
+0000000uH300S8j100GW0X00010m0H46800508I00eW10G01OG000IK0G11000aG0G0W40G2
+1000G800W0000044101O00008W0G0808zV300020G4000W02000G24004141000q0080e_U3
+0W004xe10O000800Kjb100000X0012G008002060020000100000C002208020000000wop_
+R0W000000K200010G809Y004G000014800000a0000WGGf2000W14000G00Wm00G48200G00
+000W100W10G0G0GW002208O00002800200008W9tR0030W4_J0800mUP60008gC_40000000
+WfE_4wjt00010000804001805exV30Gd00004OcU301008010a0G000008082200114828GG
+0104I0Gv@6020G8@V3E3n0G000G0m0sSj2202040086@d10040V_pGJtL0W0102000004020
+02J@R000410004E000QVs0G00000280040Doj1p5Om@z6y9k1FqXHXBOayP5vcdmHdF00600
+210Gbf6yrU2080400000WHyQ1z40C000800G001Ob_64af12000MGtWBJbOwpAkwD1G000GW
+008000KHi1FMkH9x9008002G000C0000240040YLt04000WE006oyXTjP040020008000400
+403lTZ_BI040G000280840zm@0180WdF3PhU3Q0_1000a00081F00a3U2000WcYqWP2CezR3
+gCt0002G1NOGXeR0W0400002G0H2X0WW0X22EiF108G080WG_S9XDvb000080G000G4W8G00
+REp002080W40m89000W000WtrMh600WW08010W000G018xtO0A00000808200050000806GW
+0GdoC0WH0e@L90G400Y80uN@4G8I0G002W0040001WC4J8Wu4EZz120G000WW4W0W0054X04
+102e0WmFC07000mu6000200040008G000W0KWM0GW0KG0010120G2WW08G100G00e80cz_D0
+8G0Gm@C0300esV64102KTl1tsd000G00G00040080002I0000I10080chJVW0c100W40I950
+A0200WK40040G0085pWiK04WKaYY0090100003x20He@9000aYK400428W1MD00G10080100
+bK00W0G00Gzcl1a28b02HYGA1WiLV6010000GWYG004500WyzJ0H000001000011nc0G0000
+940Htp0000aYmD080W4W000W0XcCK0i0580840002W028mA40W5000SG2eF100W2004G8Wc6
+20401040ma@60e0W20W00D11Wv@D00002288000080108b140KeV24100O40mikc1020GczF
+10GG000040e11010I00W2uQKCWW00008000005820004010882mXeG04c118A20Zm65WW0WC
+W0OO408GG000e2pXtRP0820W0E00W008jTQ0H0006000S000900YfG602oAW68200W2000O0
+0W00202W1eZO6008wCSi1G4A2009210000010vTy64fl10W80wxM2008400GA020W0040145
+000080G0100080400G0G00G2001000wtGIeXu40G0200W20010GZb602E0ewV3AZs000e000
+0000WWcNY1jhp0400YHebG10000OWC3GW0XjPGQt9004A0000060G044200001G@1028IR1@
+7m84WC5080Z00GW0W0yx2012Yl00003N4900B6d000WU70000@5o80000eH08kM300z20800
+t8m60001Si00080004002XiB0G00zIqlC000ed0040W69YszD8qS3U4F1000WJnPmhuR0008
+K000WWXG8X0IG2IG0a0a0lul1Ws300O21000000H2mg@60000KXH0e810000G4I800IWp000
+8YLYRmYqa0m000W1W102030C040008000Y0004n00OE3W0WCGIeeV30W8300mF040K0k000P
+1K206u4Z1t0WVGM0_0k0SYO0e417000iJ100o8000008ud10003m86E3000oG00861Gu73G0
+05W10003000J000Y900YR044P0O0m1a100W100mS00u@V38w00002e200W000WuTsJ000eQT
+yICbj4oFF00WA0000@702ggP4yF08uV0OcCbnCpGbPcXW@300L5000HvJ_R0000nUtD0W000
+0D4WmtC00O2mAI60000SDB36WV30yF1tnRGPtL0004i6x7EWjYGyP000Omy_60aY1eE7CI2@
+aSlV8@R3o3gYnRPW000mvz6i5G200GAW9400G00G424nFj6ibV2_600_as0000400eGsusWy
+xgeIV3a0000G00W002GRw9SQm357ymz_RCaU50004InoW3tJ000hOW@CKwW17X@mMvCCbk1V
+rpGSvIKsT5000GYzqWhxDuD_46Nt08000000WW8nGiia1z2QmW@90Kc18qC3_2WXkot8kD3E
+gFXJtDORR3Q@F1GG1WGW20GG00W420G0GW080W00YG0liR0a00XG_D0G20002KWjXC0000nd
+0CKjl1ZZc0000SQ300pdp008G0G002VHnW040WgpJ010001008001WG00000040W020W01KA
+t6000G0W04008000004802W110K0608040010100G010040001W0000100G0100OYEIDOa@4
+05201000G80040008G00mW00e04008800100040W0000awD_R088O000020WG06kB1005040
+0001G8G000010012800W001XAR00100G000pFP028W00I008W121000800020m0000iGW6W8
+0G8K1W0a004W12022X0048G0800000I8088G0G011m4H9000W040051X100005RGR0001000
+508041s@t0X0000ND0Mvt08M000G000404G101GW0028000m002000Wolq00G00G0080W00G
+0200200C8G0800004104W0G18444200e06220000020G1war0G11020004200qil10C006td
+12W000Y0000Y2S5f4W000ALp00010fUR00008Q2007hinqm600400880Gg_6ak@30440kst0
+00G00a00000Wm00Wm000C00100O00BVCJLz6C@l1b9Q000Ve4_DuXS900002001fzV308200
+04004u4e8Y0WRpC0080W8010000402W8008KSBG2@zRmsQ6i@V200P00081Sjb1W400A0j50
+0006S304000Kqd1hcP0W00004G2pUd0800ePiD00G0408X8000a04000020190008002A0o2
+0GaHzUd00100Y020G04000A4000W9dc4002084008EbJYQ@1000OS600gHdXHwaugT3URtWC
+yD0GGo48G0000W1C30AYNtWrsCOvR3_0tWgKb8hS3sqtWoubO9dD00WoL7e7Zud0W00G0W00
+00201G0000W00W00qpa646l1jpd0008404W002GGK5000Z20ukD300o000C8gCC301000008
+00G8mghOC9V2Ddd0Go4WC6D0G010000001W0jpdGjv6CFk142G08W0mW2KG4o8200W06004m
+a14GG1HqWHW22G8AYO000K920T@RWG400K4416X1000025NV2F0Q0O00W_xDePrDAebXlyD0
+000bM0WWt_D8BV3000010001H00G_d60400210G41010004eW2WG8X84G4X55G0K34901G4H
+8Y00W0154Ga01GW00W80840W04h_R08W504800p_OmKR600P186E3IVi20Ga05XQGdt6i0l1
+QG01skt000qA400W000004e0000amjy60004W00800081200000m28W020WC400I5000001K
+WK000413HIHgaY0C000f00WR1C00O02040A1a005SR0000GW0G8Xdc000100q82zxRmCbIG4
+000080ox_600H0000G400GK000WTmb08T6adxCugE300800050OiU3I4t0GW88LhQ0Ga1000
+02G4400G1220G010W580004i00000A00004A810uNV3AlC1W000G0W1u02000001308002G_
+cjDec@700m04YM203000W0088W0uzV38002G00010003OT0YHTVusR3E1r000W1lzR000500
+10080G0wzqW2sIG01G01WWXZ_D00020H00aMED00040000XjWC8@93IbbXuhh0W04mmG6y@l
+1002WGW800W0000WkS@v64Vl1dmcmvW9a4h1008248000200Ga49080208G4420400410000
+W0G40X044WX@D08WWGAY60060eVP300H2000000qF0201cUWDurp7oNt0080HE000003G210
+21900GTp6G0cEP8830RXaH000elH30G00aAW14We3G000a8U28Q00000EW_9W00i@2004204
+0000GwDH40WzNed4G00I71WizDW0GM0000G8y102800zxB@300kA_R600WhUjk17pcmrqd00
+00KU00OCS6q3d1h_d000CG80W24G4HW0000mVU0WFE00ND00kf06Or0yn78O600q7V0e7Z0G
+FY0WMDW8OW1te000eo_44002A0C0n0g0Gfp900mF00cA0C080H100DF@0G60W0vI0000C200
+00m48f0O00a10002000IoJWp040XC4010QYE100o00G610XC20202OVE38000mp00WZ1u7F3
+OD04WV00Wr000E200yK00Ge0yZG14506WA0004000GW1W8A00000m100s000Qud1g000vAym
+Qtd0sD1utxJC0WF210NL03y84Ae08Cm00y10oL813y82_l00yp306Ux64080cIRZl_Pu_86c
+io0v3009mfoQQa4xR2TSRmu@645D39@omFr90201eYT3ousWBRDe@V300S25ck40014sZZXv
+V2fyV368A120W0XRBn_mCybT8Jk@0eq5Wlsb8oP3EUFaUoJ8fW4E_ZX318fNU3000Gqkc100
+012ut000G0zPRGEJ6eA008ZO9IDBXOpLPb_4_@s0G0000804K00100020080008010408dfQ
+m0@64Uj13zb0080YorD0010GzD6SYj1082000W56Kn3t2@0W20ebGDucU302W10W08040100
+002G002002040800000400W0040WryD000G0084001W00400w5mWkmD0400OGp9yik10004Y
+st01280hbd04Y0140084e000002rIl10t70Evt00004G8400G10SzC300804H84P00000020
+W8024G00W028044008025002W000eMzD0n4002W80400G0110tktWL3CG0A40400080G0020
+1W40e00W01000IE_604O00000008840000000X12020200PAV38091W0000100W0W0WqCCmy
+00GG@600W8W4000M10WJcCu@V3080YWc8600001O00010062088400OW00150230O0W0001W
+080G000131020I4G0004220040000X0081000G0e00041WXAmO9KC0G1010000W1W0000810
+1000300048bIl70210s6F1W000008G2C810202z@R0W00m0zD8DT300W0000e0W0WmMU6aUF
+9z@R001008000G104YRE1020001000Ql0Spl400I80480W9H00W02Gch64uF30010wbD1W08
+001H0IoEXenD00Y00G00WYxDG214W400WaG8fZS9c3s000mGe300wzl2100G00G0M3tW2_D0
+0G014000004G02804GG00282OA@404G0iql1hbdmwY60140e6cMWG00qAl1doR08100W0000
+0Wf6Rl20Y80W000G020040I0300100000W44G00006280100008040W0020090G008201010
+Gm0000aG4G00000K600080S9l10051Q_yaqpV8Pk4M7t0mxE01zW1008Yr_Cu716W10040l1
+bsR0000mmhDOmP380002W000C16001040800W001W010SeB99bR000e000W00G000200G004
+108A2W004000a9oM1OWGK0eXY0O4W049001502W09200Gay5DWG000H41003KW4W020W0000
+W0020100G0001W0000WG48KKhl1G4214441W9042028GaGX0080005008000400040K0EWF1
+Y000020000yu5TN5220H04GY02240WmG3e08400008120G4G18u200H0100AX0K00G020a0Y
+8WW2G8I1YG2I050434G0110g4rWWrhuhTC0400041a2404008GA08W00e108500WG02W0IHW
+40004000WPU0_ndXLyD00GH000G210W0nmP01600G8804O000080W81000001G4G010WI000
+1Q@t020000WH28W000084ekU36dL50W0400W0028000G00GW00G8500208410000MW0400G8
+008000YiPJO5p7000800G000901411400We5@R00W20W0000GK10280002G2KW0n_@9G0011
+8000HH0gg@D8D53cnz400424060u00YXW8814G0310G404W000080014880100WsqtzFyeV2
+pkP00GYG9W107wR0410802042100HY0000080001qzA60a41000G21WG020000284Ypt021G
+A0000QvtZp@J00a0Gc@60012001200000W100K0620G000I000eO0mFlL000804000G82088
+04IWK0GG002000jcJ300020We2000Ka2WG0001000G01G40yKg1WeW0onrWH_Vuzb4wuM20G
+08000080r70000X2qV022XCf0W000404002YwR001Wg0000GK300fVpGsS60oIW00ao00000
+0012000Y40000078I00000S0W@@D004504000EGq40000u000c@l1H1O000yl8EImF0G0002
+00_B0jUsIwb6G5eWAvU300S75xJ50SJ10uZ8uc7HG154W@70GVz0WMj00jf00QJ1_tc2yZ7G
+uV50uFPnPW00SL1Cmg2uZFY2m00kA000m000W00302GG04GHu6a@t6000WL000O0C000O000
+05000_100q1mba10306WE00GCS60al18Hk46kc1C600aC0k8O0w0W0K1G9e2WIKG0beW28H1
+5WA2A0L0I0g0a4L189A8GIKo0aeW1G71385W48800Ap60SdR38000iG29jqQ0000G@100TjK
+Xx00W4ug020O606uG7000EuX78u3FGm3dXWPc11pC3pSu1UuXCCpC2wX74Kcp88LLHGggoCo
+CZ7ym1LfA1hIL2UOdtFaAh7bxpG0@Fq7U200iF6Wrc3HneiU600040020000GG@k6CBk1xod
+09000e40080080G00000W000WW0W00000WFyd08W0W@@D0K02mNHCieL2NS@m1RLC8c1W020
+YXBXDULf9_42KdXRqb84N3SD00iGk7G000UAl20008W0000000220W82T9MUt01002JvP090
+000020000GsIF100800WG400204IL28010QItWbwDepz400KNy1l40080B06cxyP00H00208
+08e80800840118004014WGxU6G000eP@4W000i8k1rx@000G08010ZsO0G10000000BA0820
+2ySF3NzR08W0W4088Z_4IjF1H040T_RW04000111W0200WM0820806G500W20000KA010gnp
+0GGaGe00X0S00G00060WGW00e000148008Yst0400100010XW000W404025W00WHPD00105W
+00mXrCuIV3004n5pG282401000KkW1JkR00h20005W808011G0020801010I05G0G1G800XL
+400G009204H10WGG0G4080Y8G004100e200K02m0140W0G00GeHW03152r00m01e11GCW04O
+0082G800K0G000000808400GG1GW2000W00I0m0Hc@9G00b00030I10aATC08000Wk6Ws@D0
+0441801WyiC00001O040028C660015G10GW02W0000301G00201P0W2418WeA008K0W20216
+14098651Y1GeOY12O080G2WmzD00100E0000400r25osc6ipF3FUbGa@60000nT0Gow@Fypl
+4bad00W0mx@DuIU30502aPV2800000G00G001W0000108810A0000X04800a008000082800
+00G0CHG8082000WO00GOuOque400UflTi2001008200080jPh1TzR0004XYmD0010uM59000
+0G40410G00Y100bxR0W00008a004H01WW0C@b12003G00009G0000G0G048H00282007apWo
+p9H0n2Gv@L0108ufZ40400z1k1T4R0001YcoD02OWW00000G645_d0W8400X0GYO20cbm000
+80W0W0ExrWkjJ8g834G00S3U5dRNHigR00WG08000H0004000004010G000W03000o@WC01O
+0ORV3UVqWMqDO4U3010400200CG0nu@601G08jT3a20000009UTL00eEM7u60004_rpWrbJ0
+0002480W4AD06000G00WcpD040Wm27600001801202K18D540H0HH4D1G1Q60Y0W451C0a00
+9GG4f0044J408401G1020W@UbevrA0xV00800e1T6Mqt08200G40800oG00Y00eO00Y00W6@
+D0G0W0WW00410mW0GG004W0000K0WW10Z0041aC210001020O6nG4L02W06G0GI426W010Km
+00O81WI0400030Y8n0C088I0GOWG86W10GgvI0000ThD9000GOL00eg@A0W80i6k1mW4002G
+120Y060023IX0202e400OC03210W030I8A0Y012224G0140480020i01501mzc6iHP26000W
+6008G0W20XG81GWC0000aIAo4G24qbk1004f_utWRuDeNS3wt@100Ak000Y000000e49Wq40
+10GDYE3aI0001W0EXE3000fU9oWBoDW8G10082aEvC0600WH00W5yP000O200mqcyDWX2002
+104W00MVmR020002020FzO000000G48000H29m00e003zd0Og2WYQt000420O24W80WC14eM
+yd1412080GW000WWG00Ojb4000W84000004GBW6KsF320GW0120Svl100G3400WSGW1005W0
+0002010SZU3wvtW0_De8y4000G4Yh1G100YkFXsGJOaM3041GaXk1B@R02400000GRPO00W0
+02040W002c_sWXyD020H0G0040G01nrdGP@9W010000g2X000AW00TtR001000G083xd0K00
+00G008020c@d100fGHtY1000e1XC001GGYb6aB532000W000202W40a08104Yc3C0m0WGl@C
+G200OxV3000L00000308myy6W_20000k2GA000W4E0G0200034Bk1002Y8110aBa1lYp0mY6
+aO4C0000I1b6000010G2080Wq5@J0Pb0040ub2jVG90W00QXC00000O40oTt00090000I100
+0ILD2442102GA44YK88Cm40PW4GG01HG00002IWhhD0WG0mHWg000Wtb00GPxO000sa00004
+_V00_000yH000000mD5006Om9x6eW20qgH0e7H0Gh6m@MD0000A0000X@1034000A0C0K0O0
+W0m0WOuC0006004T0OOO0m0W3O60003000P00mZu60a1oA4_4000YO00000o0m4@C00uTPwU
+3G000Z040Ojz400Z000000J2400080Y000c300O900iVa1v3OGA060004K00Ge0KXH14502W
+B00060000F1WPs00FU0Feg3UyW4KL702000Ksr0eCJ1G7FGLK1000WAte000000cR@wg0QP1
+8y_AiQ00000c9sV3000@h00V400k910yH80mc400080p00m@70WR200m030kf00OJ1y@00u1
+004000G4dFq4x60201oX@4_3001tPm6vO4ql1DydG879qG@90024IxtWmRVO8S36tt0G4000
+0W06Ip0100002001048G000000W00W00001KhUNnUu9KGE3RVQGlvgamp6pZp0100YX@DuQJ
+C0bu0arF37zB1004erpPODT3AGLbr_De913U5eYSsP8CR300400800ysK380002000Jj00me
+wIK3_37jRGhS9abW7W00080400200X000ucr600801000A0G0W6AC0000GXr68000eFT3e10
+20000018Wolz6W04G0040G1s6004000GLj0G2001000102cbtWF1D86V3QZm0040000W000G
+408000G4W0G0G0010G00Y010G400000H402e008000G0A0W000030W0G01100W204049W010
+G100X8002400W210O0Y00Y00W8404W02W02K00098mNvJ0L43mV_6WG030m111W000204202
+40E6m0GO30FmR0001G10G475a0804801100W08014001000H00q0@60G0801004O0804W000
+00WGGW002100I500WG000H0H8g0200W2G200400200600020800Y80000200K2GG102G0000
+1008W04G0I010022200040400200OmGD5000010084W4I00020262006089G4dd1000eaC0n
+iLl1a0010YG000WW0000qBO608000YW02G000000400G080100004I01400W0408GWc00080
+40G8080808G7T680C24D1000000400m001e0184064000000011400040050009W00a10000
+m0i6i443t_R0000020A4BwRmgV68000000ew@@60400uL@4gwt002A0fzR00O000W02vVR0G
+000W00102GWkzt00W0081a005WY00051G02IYk6qyF6810GEWtW1DCG0000004W@XJeYR900
+10aXl1W7M0A@N2009000GKgl_10A00000G00W18000200080W0200K004000GW2G08010000
+8Y0WbCCOWIC0X00KOf10020MyF10100X_@0000eDeD8_V3000Z8U00OtVF0248Es430W8GW8
+0004G0vjV3cOE1SW0G0G00w6LYZ_D8Z93Any10400@a_00W12208004000W92qnV200kLpXV
+30021XzRmQ@60008O7z4_Wt002WP8W00EztWJeCu4LC__DXgvJuGE3ge9XQ@DG00100aCWSx
+D000YKgw60A@0eO_J000e00001080880000G00000100040102uB@4ERjYXjC0G000G02005
+00084WUXn0W0I00080020824000GG0m0@600284Y0000129GW1008004GG000Y10000dm10W
+YnhOXU3W0005DJ200340040104HQ_T300000Y220H0044H00G0000210fe00Wm10OhS90000
+W1W004X00W02WegCu_G30G00Sml1PhR00020W04880eG800000k800G080082001000s4w@l
+200080008Qyt00W80020004o4000G0G045H0CG02CY06G0XC0014GYW2102X800W0W2814W4
+08WaDv34G0AEQp0W280000f014G040aYK0aW8000I100000000KA0000080050000G00GNzR
+01W008080W2A0wXt0Wi60FzBHCSCa205PA@Gv@60014040Gmd_90004500OK@Y60040K4G00
+0004Yc8G4W8G02041C200808IKQ600Y29wU3gf818080402Y0000fK0W20000ui5Wb_hG80W
+IYWLW800eII30200W5008Hy400X4144000YYmitCCFf10010OG0000443i023G1W1W2Y0W00
+600WCq@k10100IWmWFDJ000418000W0AAC020G010000WGP00mM@IaLl1fUaGzC6awV200CH
+_LnWDLD0802Kvt60000W280GpyC01G0e9U62ltW@@D0W10mbHI800Y00000YG000002YW00Q
+Tt000uXXjN1G00000m0dnR0G20000W0001025F1842WHoR000G080W0VKP00008401IJu@01
+8w00000GW_2008WP50400W0W00G0qN20A0yVGF2004G69KV3oUB1H0003BO0000000B0080m
+52000eT1ORU900a00WGe9V6980W0Kw@3A000W030Czl10We1A5dXAzV000kg00Opb@IO4gA0
+Wg0W82006OeQvV94Tj1q200AxlYK1a00OW10Cm000O600040m300000qZF000p0G7600G15@
+zF20000_n30_OktCO080uIM30Wm400oF06cR0C0u0O000q100OE00GS300X0W1W98ejcJ000
+Ge00G01G5J8G40EWp00GC000023xl200C100m0m4010300uJN30800Wm000W1GLATF800ab0
+O8g1m001W100G500WW0an56vcBnKu6yrT2000H18JLTnY1Rrd0Y000WuE0XzZ13C0WmnD000
+G4Y0m0F0uZG00p0mNF21Y8I00y00L500kwC00mC0u@@10y0W@@300000Cm00C300E3RZXhPe
+IS6AwEXe0U00044000Ul3001waGdqIygjApBPmhG98002G000GFu6CEh1RRd000C000G00G0
+Wgh0ZleD0008mgO600OEUIA38G0ISsg1jDRGPu9q1W10080Ie@XbUOG010mon90042uRT30G
+08CX93PjAHTrC4uQ58800_@t0Gt201kRG8w94OU5DvBnEu6a@k11mRmKzR0W00G800mgS980
+00G004GJvL00G2uJU64042000W0k00080000W20m0406St002000448wYXXEoDOpVC00240W
+00uIV361r0408000G2G000CEc1000000C04ic1D_Rmxx6ivk10080f0W0K4a1000G0080000
+2n000a000eR0D00miNTJ900282Y00IiJ9iMi1200G0040y7U2BrdGx06iIl1vQPmh_600202
+009W0020004182O00CG01GW00GG00080A000Gm0YY0840000W0W0W0W0Y0400K02W00W0012
+200084W0W20C000028040002W000G1WW004012000EaWs4rWPpD0W00515W00201dCO0W02W
+rTC0004028802J1Ke0YYC005100Y0H2GXX2c21Hn0a088G0X0G8001055102G2G100GO01l7
+s00300N@R0G00YTwD00C04G000001C0G00008100GW0040W000K10204W400005S@l1G8800
+02024480G0W4000Mj100LtR000G00418VwR0021000G0ViR0W00G1004W004414118001280
+0000010400C802Lo00082G0G0004G00I00008201020004000AK0W004G14m008004000K00
+10808BWChh1020000WGaBj10080D80000000020C000000A40G0G800Y0004eIB300GtJG00
+W00002G0900WG000W032105G0ebV3W04GCpS2400080W10g00Y4C0WA00044OG0GHH54X8X1
+4W0GG020240000Z0001W240imf4HCdGC_F00GW8xu4Mvt002000GG208000G004Y100G0000
+2000n000200yyl1zzR0000C0002lzRm3V6828W0400W0Y0WCEOOwV3oKP30010000200X04H
+G2@JQ0002W4xCORT3Q0mWD2C00W00q04oj@J010W020G000mas2W0YNFX7EDOWB3ov@14001
+hzR0202804002A000G000G20uLU304G10102G0G2mx46qwV2G0410000O001W0G0100WD001
+00I80I@F11100Bn@0400100004WWaH200000040G40400000Q702000420010GefI3kXNY9v
+J0QX100G04801O03122nt00G0AW120W0080Y000200IoyC00Y88jw4G00000200E0WHcCF00
+400080GdMCG0068cN38008010O0009001000dDGnpP0000G00808G4W0128q_U2G010E@m08
+8020020000O0040000W0W000001G080000040080AwR6sHW100294Y000qG208104W0044XA
+O00bW00408H008K00WW80GQo68200000G0000G080IG40412YbOcI0200G42K000D0G000WO
+4K41026iyT30QWa80G420X0204400W400004X800020WWC02e10O4IW4I200W9800G8Y0101
+180800K9460280108I100BI800a0G04010DPUdmOx68GG4000D100G00489XmR00009G0W00
+004080W0G020400mxX60000040G451Q220000WH8CK4X0eO600O000WPH2000W080G104800
+48sI30110i@f1TzRW0301040024mGG140862219m0X88e4400G@@R0900440G94100G4141O
+00Ou@40W8m2000W02PW0I00W840W4I04002H32308W85eei0GW104W208100001mG20820WI
+AG000PnPWI00W@@DW001O@@60Sja20IX082X8I110WWXc05K0080040IH00G400qW00G95W0
+8IHA8W04010f41000014HA00WGa2014W000100G030004000800000X0W024oKuC00100000
+2C00408W0mWXG420800C020O951010006GW00G000820e8281200WaebFIW8002082000W22
+1A4011A0A010000kO011W8000004080YIG00000MIM06e0000WW0020mG61288GKH120Wm00
+00A010G000O40H01a00We4qaX133O0C004W400C410wxF1G000041H040S060G20u1800G0W
+Wc00X14b000aQa10368m0m028W08dV3m04ue020G08041A08020We8Am082Y01W000GcF60H
+0007WGC03000W0K00W00G0380m2ZDGG00400G0Z02G0WW0_Im0H8010440W104W40002G200
+00G42000W000G2G000H0a00Hl99008G200W09G00A001081I00508I008@S3EBn094G00I08
+a00800X08vz400001090000e000080a0941H000000mU008G002G4001H40090000YKNl1Hc
+RmIu681000000fK0020G2a00001808G002001X420C0GK90ee200Ga200K400A0008eWl_J0
+110000G0KN0G0WK5G@00000VvlV30W0mg0020vjGa38000u004W00000000w500104Ge6000
+2g4000002O00000aL0000a3000KoY_1GG8yx50000Y0W1000m20060zGGzD404GT002H000W
+0084zk0000uBqB0000Wl0mux600Y20000078AWAuCelV3GK00108S8uV3000@x700mF@0C01
+0G0_F00KPb0udV00y0mV02mKuRqaX100WxW78WeY@X7Wo010000007c000000W@B30m3VG00
+0kQWAxn0050eD50GFYm@U4XVyW0@R00@n30kf20SJ20uc4u@D9m7V8W@70WVy10N5WB@D00k
+E000O0k100nmP0R5006L0L8kWnI4t000WX0001500YO0C0p1G0W2m000W1000O00Wn50003W
+A460C0G0K100m0008B000AW000cV00Ck0SHS1I202W10089000n000pF00YCWECT0P0m0s10
+0Y200OA00mG10WX2mC15mO080L0I2g0a45489AO0IKm0eYW1G5W2WA0b8L0AnOugmm0_lV0K
+LADSL0OuX100LTpd1VvRWwV1bPzJ00@3eT@3Gz@tz0WAG1A0CZ0088mU3y1004gk1jld0004
+mq@D000y840002yp30y@80ucF46k1_9pCyV4guX74qCp88LhIG7UWWKLbgaP6@30L_702EZP
+4KrusmG0GWGqqUSeV50000008isvj1HTRGZHUC479lojnQzLykl100026an020004001YCy1
+m@F0T4SozrCy5I2N4PGNuIqBi4000O800WChl7dE_GHt9mK00eUSCQ7uX9knugy7_v3Z9uhu
+qT30080800Gent440G0C@F300y8sXGbU_Jug83ILt04000hYPGKxC80020G200400008100G
+0000G40004WG000CWWmarD0G0G02AWWJsDG0G0mC16W040G01088G1014012Y0Gglo0A0000
+fL00W08G01W02040W00H0200W000w3cXqcCOvT3Eit0O0820200Ijt080mW000000WGi9V2G
+08000008W000104WW0XWfvJ000H00G0040040W020020000020KL8WW2858G4AO8H0KC1fWg
+002W4AW1C2W4480amWG48WWA140K2000004410W00G00030W286070A00480408000020804
+00A001200A0W00G010G000X0800Y00H04880WWQkCOtJ3G000CeO200000A000008W0We004
+GGG000x8Q01000060008Y098e00X0003W002841e62005250G82210n08O00Q0W0Gm0gW1qG
+0H4894660CG0ZG0061e0000K_008288040414YW2f0H5002024040000402010WW08G000A0
+40050008000o00080000041GLEc000GWeCDOV@4svtWqlCG000W0a0WNvD000G0H0WWZ_P00
+280244000028802X004YWYG01800W1002081000205W00W00G00010000mMD000008005000
+0W0010800WuBOuAn4Mmt040060030824005008VC3W028004000G0n4P6KlF6LaP00G0G0YW
+00000W020I24H0600000400084hUP0C002010W0W0008002i0W0002040001000000WH9W80
+420W00500080G02400WW2xt00W00R@pW800W_@D000WSCa94HU2Jmom4@Iieb100W4000402
+908XQ30000080GW00W40e000020024CQ@t00W28804000GW04WWGG82980000C91400G400W
+G08m0W0o0042abwDG000uGQ90002AhP3Mut0G00000C0YNFXBBPOI6CEUqWdmDurL3I_t00Y
+2GfaP040G010WC01G20080000eG000oJr60018G0000GL5809000001W020250WW0W04G0Gc
+XIUuHzAkdkYd2m080040O20G0401VOG3x600H00004004008610m0W06rt0222G94d0001e_
+@D0Y00040a0G040N0Qm5eFSf36Xpdm25RKsB30Y81121oW80021XG414X1Y0008X4110G208
+202IK00080HG14H85e0f081W08G440WW0XX01W4W02A000Y000m97C8mAK1gK8IW00YOM04I
+W20202mK08210YlzJ0000IB@64Xl10I20gUoWwbPexT3080004008yK900m120W64G100I80
+8I00G000082h0004Y118X1GYWGWWeGW081K8Y002W0KWG51K0f013iG002X11JK0XXH2G000
+8@N122W0400I4SCG010XW40WeO0a0X0G0000cUcF10G000W60YnF1W000e2000000TNW1@wQ
+GfS6a3a1b_B1WO0000008KA0wRn00100Y00fGG2HyPK2aI809B2080X80400200GA0008081
+X0489_3X1GI82008m0a442001110H8010GWWG00538WG00002f45W42W0bK0020W00GriV24
+10000K2yOV2000f00a020040K0400W0WDwJ000emg_9yMe1G00080a0008GG800800X00W42
+W20GG80800eG060003101O80G0G0005200W0o4KO0XIW0G400000eT0330eG0Y2Km002IaK6
+1340860H0K00W00000G4O800Y0eH00408g80CyV22100Q3F100048420008X002840W0000X
+m6zD8an70020I40K002Wmj@6Kyl16010002Y3W0000WC8O1o000G3W2g0G0802610M001g02
+0M880W4004400004e8G4m008C1PW0810OKA4eG000000I4u0WW5002A002840000G021CX23
+EMtWQDC01G000000KG40000000182000W0W1n1_FKVV2G04W8000_3E3FYRW0000Wa008010
+G2G5W0050480W0G00GI003wR00092I62b000u0J00G0080010001I2G04G0W00030GKcT20G
+000048CXH200W0cWE102000010UyE100W0WW000000W818Ohy7000mg4021vi0000040K000
+0IG040W20gB00e0840G04000000XG@D0e0WV1z50040q50800m000000mA0000aj000WNGqV
+0102oNIet0080ig1020OBmg4021fj0018840G000YU90m0iR48100W0Q7x90I0000W20GA00
+0WKB0G004203001WK90G0IP0Wr_b0026CG2AOW4KG80fGG8I90oW3YW0J000y360uZG0W@rH
+00Od@h2W@V50L5WhrD00FYmdp600030W000Gn0G110G220W0000100500024000GR200DYZ1
+00mih@D00Ae00p4WuzhW830mJwF0G08M108j2uYO5e3W20301040200000aR000P0OOo0W0W
+3e300a8k1C0008w0OWm0Y20001000302W1000uX4W0ma10Wf3W123020E04040T000c00086
+10OY1OoS7e308mF0oYp00GC100G0W0n501028Cy40000my300n4a506W900WE000HJI730_V
+70000y@30a_l10820z820000_W0000048WwtC0004000SJ2CmZGecQ0W000m@_7002000l25
+0G000mD9mDRI00200040010W0hIuVV98Y800000OkT32SdXK0UORU3EzYaCume_V60hL04i6
+61c5ozICq8N80400kfrW@rbuqy7Mot00202z@R0000Qr300dhHIbwRiJh4jOZHRROa_Z700u
+OJs7Zt2K1020GAvFKzl1tZpmBt9CBk79RRGRv64TU2WiJ0wMIYDZ8vI_4IJ@1000G0080008
+8aDV2PGR000KWvrP014002G08080W0a1WwYt0GG010000kenWKmC000H8H00G0008i220014
+4202e88h40420W00W83V30000140W00W40005WTnCG0000008mdyJG000muzFCWV2vldGdr6
+Kxb17xRW0G000G2W069W042000WG08K0YW000G800AY4W008GG0W02G44080014010600000
+4@0WX801004H8W848a081084003880W214G2H28040006H024014G004uGS3sxt01001Jml1
+G01ee@DOP_4G000yMc1B@R0200048W02WWGG102020H0W20X0HK0008040W80H0022020002
+018040I00WG4008000k11K4O419WW31400080C8080004Y00W6W0102C800000AW0A28G001
+00084G000210801000040H0WOQ@4AbiYOtDOVt4EV8XU@D00200000GW08804G10W0W00002
+0020042XsXC0G0080W800100009X0W20000WYg0800000000504Z8wvt049004000W820004
+08sG3WG01Sxd1RX9nXPR4ak17TBHWR90G000841mIcCG0004W00uAb90G0001W0000UzFzD0
+00W841HWlyCuxU6cpy10G00000GkbqZCq8180108000O20000e00000950010160W04YJbC0
+6001W0200ae020W04200O2L3O7_480400001OVk7geKY@tsONKF0000Tva1zSR0W40WoDCW0
+01mLW6WW008uB3Yws000180400000WgF000Y200404040W40048000W0a00eqR3G0400040O
+Dz4wR0ZmRWPSC3Upt040400W500008m000W00G00WW010207zz00Wkw1vDG200mCn6002800
+0500W08I4G02000wisWqED0G00nIU64m3F080041008GGW020G440I0834Xm00G8152I0Aa0
+0O04G00008W0G00GG01004aG6G0L8W00002D5WW4W0010Xe00WK410P450294001610004G0
+5WvQS3U_s00004LKqIjCCqjV2Y00001W000010400Y010630200001G0W88040001W51A002
+94K05AI820W04I8050G000eG000iU18G0W000e1009aW0062000000W11800aWaG21820080
+YevdD000030018000I01004280ic1Fr@RW0aY01c06080f426000G4YKG08aA00I1G0dJQ00
+00MW8bK6G49120000OOX00000084480000010W0280005W08mOn6G00000m2GTjC0024OW8R
+szF10050W00H00080a0O0X00040102200a26G0GC6SNh141A0W0042014088010G03G1000X
+248100W0e0420000O408W000G2W05224Wl1raRG5k601W0000050H0W8hs8E3L0W82G1WH44
+W800W3PWG0O0a0A021102500I2060004e1008HG8Om04W22020006j8O8090002200a04W40
+8000811220A06001800048Wm40eZR300068Xm10089000000m003faJf_6aul1I000580W80
+00G811W00001920G00G008G120004W4040008e80em2000eO304W00WA1008204K0W0W24W0
+8XKeG08GA8Ae0WHbI0000120224000nkyGcBs0I0W00020wB10XG2A0G020200001et1000G
+VXQ10080n30UJo02GV1080mv20002s9I000Kwt6000082y40020m10083Q6GK00004SO@hM0
+m100000000qQIuL0mFC00y1m_X6002002B00000GRA0WU412if0G0WB8000EW10qG000GQ30
+0z8208004mZ8yX8G0010e000m710WhA00NL040mOrCKDj15brITJFqlj1J0P00100WR000x0
+kOS1H1W1m0000100mK0XWmA0115026h040o18044m0888E000aC1422A0444088e0m081W0G
+G01WWWW011130226040408040f0O0012122G2440C000OyJg71Ex1040000mL60mD1000000
+V1A0W90gf6203C0a000ucmJ0pCZ0uX7uDpCCpiPOcP1mCp2mC000SAgA1ggA2OcPK5Fy0Fyc
+1W@50ymB0pOM0uXd0CpCcX7Um3_gKbg2mCc5eAgA0W_30pOcg00W7U8cxGwe1cwpyGj00qwQ
+siZD6XOZH7v9KOF3bydmbr90100K010mozC00GSjsN3800GCkR5W000E2BXmRhe2T9400046
+k4vgdmBHUa2k13j@08b0WAtDuWRII5lYe@c9yF900Y0Su53zbp0000AR0005VRmSnLinj1Z0
+sIvx90G00u_T30W00I00aW0040008G001WW000Frt0388500000100srW10460480002A0um
+k44G000G00000gF8082860000W00H004Al1HqRGqwFCal10048cCsWQyPehV3oYpWIaDOWv4
+6nE1100G002W24m000G0810G0400100W2G010W0804040000200G002Xm04090W0200108zO
+R0000009O10008kXl2GG2180W0AX@XfUbezT6gGCXQID8gu408000G010GG0W8W060280WG0
+C01402050a0W288W0GG0G4W0000O0W0W010Y4I30G00002W00000021q1j1K1G0W10800400
+206GC@98000000Wqz@CKiV20400IWoWNXJul730060qCe1W000GW00yyF30G008012a5l1b_
+p0880mn@P0WG080010W00W@SR0O00mP@D00mAX1000O100p@NX02004G00FH@mM@9qfF6008
+00010W800ODnAEu730104BWRmav60200000WGc_60wf18xIFISuX6EzuqU3g4tWqjJerV3gH
+pWzB99iS308001I000800000O0q200Jnu1GW0mhCC8JqJ01204yl10800_lp0000800W4_at
+00180fqin5m6afE3G000008n_JA600406xsW8J9fD5F000108G008W0GX16KAU5XFpGE_600
+0G0400880000HF0x2II8hg008806040CW0YKODeKU38010G3000001000Yawnh000GnQ_68G
+01G4G080042001G0Q0G0ZW000001L00GVvFCil1TrR0011We7gOHsD4000yYi100G0040W00
+00000030010101X00000H40CnV50410U9F104000A00120G0G0000W000W7ky_P0400u4hC0
+4W0OUT304WWy5l4fiZ1G00WZwJObT30W00W0O000W8KMu6aml40GAf010W000W20D100000G
+1ac000I9b08qzl1WwP0IqD4200axk9n6WUC6l1VwR0Y00A8e0G42008060002S8Y@70GS4b3
+c1I800USd108020100G8AG1000KG00mK7Xi4k11qnGQmX4XV2W0000082qvf1@yN1m020004
+WCW0000201002200W2008O100000GD000W0W0000GpQo@OKMV20K0OQuLYyOPuVBI0100002
+WuxS9IwFXEyDe283002W00000088mZx60uW1ugtD0010SM03dw@m@oO4lE30800000CWi100
+00yIVsL002096k4e2i0Kwl1tpR0oA10504B0008j108Czi7000o00000WH0Otu70G00940GO
+9QFO00000000W@100FKA0_V60000Cpa04BT800W6r000O2000W0000W4000gOvWN10NDWVXF
+PkvAAWs080W01xR0H000oA00CC0C000ZLR@3000pT000u0C000O00003000800082G482010
+A04000T000I3000bJ0IdMYGkD0000110000004ZGbGz@9W04000800086Wbrb000AmGw6000
+O6p00GFu9820@tF0000gIrOsb000eo6z68pP0q@@0e3LvcOfJ00048000MF100XJ@GywLSxV
+20uypk0da4n_viT600SQS9GHtRtIlTOaWU21Gdmi@60aA18uV3EIdXcobu_xG62NYa2cvd@4
+_OX10004i500MwJefrbeENRg4N2002000eSI@tWLgJu@V3G0044SSE800004008000200000
+0O000002080QfN20014DtRGdn60020040210W0140040G01oWt0001840000BJ0iQV20220A
+2F1G0000A804000H000uoU60G40iJV2bqa0028WN_DOWT34000G0G2eLS300020A0000GGqv
+p60400AnV32XF10G0WHlp00X00G000828001H0108W11800000EgG002WW0000a0W26118GW
+I404WG00bsR008014G01LKRGj@6SLc1800WYSdXv_DOz@4gVrWibC0000W000O0408ZzRGtv
+CSak10000W0m0Snd120G0080m881014000110812e00108G200000s100G204000W004Wa09
+00J008WH80080W0010020W1040116rl1jvR0800H800WF@Rmf290H0G02800002W7uI08000
+200840000001YXs00250F@RmPRCCsU5000000Z0K@l10E00G0000uEHeoV308018G00OxT3_
+@t001I0080WQ_NY5It000G0000bl@Du7H3wstWCjJ8LS9kptWIIDeIV6QwtWrzDWO0Wmwy60
+W00uXR6000Gy7i7p1o0H00004100004titWnfD8az40004bwV20C30Ac6310000200Ist0K0
+00002Wo@t00CtAO0HW0000100G4004800Y800XW00100002Ebj1fvR002WWmJbuLT6800000
+W12G0EY082010104B80000GW00GiV@4GHG043960040W000EuE3XjR0WG0000WW00000ju01
+a8W021410100000502020480001440820001800800010k5YXopP8H@40000lPG2l@R00005
+010G004W09008I100W000W0018Y000G0GIVL5W00Wo10W000WhV000088001000H4AdvR000
+08800G00a00220W01G040000008W100thl108000400210004000W1G402200W284Z40a140
+9C002008218Yu4@600Y0uIb7_Qm0410081000400yfl1400G414m000e29W000WSKI80YGSW
+W41482W8A06Gn4022800Z000WG143H0A001240400100G45@wB1001Xs@J0800WA4IAW201O
+G6002800aO0G0000800000200GaW0G4000G0G4H41000ZBUOe2@4G000KWM20100_Xt00L00
+W90401000OkG0o010GW0011YA002G40080Y864218aG80G0II00G014010SF13jsd0024W4s
+J002E800080Y0086LG0WK08381G00850000900KW2301040G000YG010042WMGDu2E30G08i
+uU24G000G2000e08CS30160000aYK000G000000CoKA0G22G000a2W0Q602GAI1008D90858
+1IMO000IL2G04049bK9yA10W2WzzV00005f0G82010010010080AG410G10e0000a1000040
+04O00e826000055WDyJ0810me2CW80000002210000Ye4400G48W80020800000uIW0IGC40
+0008b830002W0Y0290O0080060800004W404G10G01W9QbeRV9050W8ACG02410X011UGEWW
+G4044100400G620Wm400We002080000eagR2400WBtF1000300060006ihl10H0Y0000212Y
+vx330nZm0290404e00G1930Y86H0S0011024nXO8100104W0A00020G4D0I100w@V3000Y18
+00eQ@70W000000202000e08050100408010apl1b_R000G0X00Y00200019aqV5W800k@d1G
+2200W02U1m0000aQC1201201GWW00110421002000045a0000800SIU30041q3N23AZn0j60
+00000f22wlW0XGsA0G000201000W58100K3XC1G00nmz00e6Wp_DOQU3Gq00000S0a100G01
+XJ@D000Gl00200e2000WaH@D4000J1021000W0000z2GW1WiBqR02018j00088480000W_10
+G0aX5008lO6090000G1u@V6000q30000WZyF0_@F0000_7@3_gp0@@5W_5000000ILc0000C
+JoP9000TiVS60WxAaGZ10Sd80moqaSc1gQ60b9000aX10W@P000000iCDOU6Q0000mCp0moc
+10yF00jqYP000Bbs40000Ur30UP_@R0WD50000aRA0mt3DWu700oFWB4N06080C000P10084
+008g10mK2W10nmn000t00000m0a10001i7d100000C10041GWO601040300mO000G100m1T0
+00P700I7mEcPmS0m0C000P10047000k30mG1W1uEOC0O0N000L000Y3G8pRmC30005e2008A
+020Hc3m@v7000We0u@@40W002m@@96E3ymX04it9y3000u3p0m@000mvbq0OPq0u@_nobHZb
+fvW@@30Mc60mFD0uX70ebMO900moq0Oz@7W820000Sd202m@@9000U4200W00000UJ10SL0U
+JbaxfFfgT30ay047h7XX3p@@68040ukR6EEt384003ApGyq6CgS2000OX200aeR8jrpGoKCC
+N@6DmRGGjayWb1vzl10W3ZgsX9skGI5daBqbel@4oSDXU@J0mE1mFgUaHlD048000W0j_l1P
+sB10G002040hxR0040YmxJ0800060a108Y00G620510W00021e00000CHB00vr@G3xCWG0Gi
+1b40G0WqGl10008EX@XElD8wV30a0484000008mLK64@c10G08ctdX3zPupU300400e018IV
+3Ero04H407pR0005EWGK040400005eW2000544I89251GG000G02G1Cll10041YztWcyI0K0
+00000eUuI0G0140000401GraRmpz60W0Y0m000020080C07x9nv_600048QC300W0080WW80
+0004012000400190e120100C2420000W4k00GW001000046010000a0018310G200100qyl1
+W060Myt000G401001200y5k10120Qvt0G004W0201003008WW00004W800G10nQRmc_O0W20
+82z4Ezc1W000G0G40W80G0a00024ut@6000W7m0Yuty6G002000K00G4YctD04G08008022G
+00000Nj@X8mh8@@42@F1000Ob@p0000b@@V00028011WtnPGW00mW_CSDa100217YLY@wD01
+0O2000108200000102GinT8h_RGIS6iil1HhpmI@U04000G008000G1X0G000H800000W5ec
+_4CML0qwb12000006048O2hEO0G010004a00000320qlD90040000W910O30e1mkM6KeG53c
+6200W0001G80000080000Wt600200082G00PvpGTY9000WG200mYT6q9w9JZR00C0WeZPuyC
+3Yy@X6iDOP_70008080a020000m000W000W1000Ki@Qf1Xwp01082G04J000G01G01240fLv
+AwCV34X80G5WO8000G0X0uQ@40010S2d1Xud0G0000130P@P0010WzwD0G8040G0L0802204
+8GH10i_l1W@N00000100G2000GiA6W0000000AWB64000W04GW012mG04WAQTF6kd10e2W40
+11W8180002C7y402000401eo@7408001W0Pw_400401WW9001040001e010W0XG0005Y1W20
+0001h1H4200f4002czA12W3161000020ZBG0X80K4Y102W0GX24O025c40200a22a010500f
+0004XmNqO0000002H00GC000W04100000G1A0000G00f00I80H00GA8X00000ea2GO220800
+00zLaIW0492500fG4000PM06000a20129e000I10004IG8bK0G1D08IeG82K000W0000024Y
+GC0X4H0100kJc100W0BxR0210W@@D0C0003000G12XzMPGe@6005Y40800G0G0009000404G
+000G000W_3200140W800f00g6r000W400a00J8400001000XGa24We000a04ESz400W20100
+800G4dV2RdNH1e6yJG20W00001400180G000G024GW00O02GG01002000000EfDaH02820H0
+0X200G0000X40028004IIW0160040WZ000048O040W04020t@l1q00Wu@JG007Wg00YrMU00
+H0Gov6GYW0OdT60m0GyJE3G0000102Cef1xwP0I10000kJ0040K002205000GWsNw9W44120
+020020400G081m00000f000eoOI000qR2240Ih00W000GC00jXp0600W@@P0r500G0510800
+0180000m200008WGl1804Wm20000OISp0000i61000ynqR2221Pj00W004040000M00m0e14
+w310W0I2v601040z10400qbzoz8c@4Qat00W1K00WvJA81000000GgH500aZD30qT4kFpW__
+Vmoq00yF0000WbI30cD300000WIy@100000BJp@xfP0p0GLL10000WbH30BZ60I40fP9K000
+0YDp0KF0kW@400WOE0025WT0Kij1VRzGG6900000v600G6030J04vUR00008000uE00nO062
+AWe0G0g000Y200G8000YW000Wx004b0_1i2m005W1008B000m000nD00660CCp0p1m1XZRG_
+vLag@3001000HG0GtH0060Wt100oC303th200000g@V00000O_1u@MQHDrq2BJ30Mc60Q100
+0co0y@V2W@106qF1dV0Wag50G_VMAjC00000F00Sowj91000OCSOKpz3Dvpmp_6KBd1Hk910
+00oPHJ8RwA6ytWlqmOQQIc@FX4hD86M9wxFXAwD8pV66ct000wWzz@G2SF4xF3Bb@GE@Ca7W
+4Pk@mKxRayF35n_GW_60Km1OHR6IAGY4VIOITFIGGY_MmW000m8xL0006OCS900040000TQ3
+6Q@lb@yUupUC4100y5Z1riR0W00WasD0000200GeSED0220000005040L6R0a00W93C8DE30
+0mw20000W0140080G00Gm000001e00G00401HCi9000W0800002000G0G00e0000088G4f_B
+3cINYy2P8YV3002008000410Kfu9WW00G0001W20WkpD00001208WRkDG080GwS6040G0010
+00Y800000WdY0IPF101G0400G04G01W00G840a2B000GI0W00W0000WW084041208W05000v
+vR0220WErPezC30000DhF3020000Y0W0100400msp60W000200mev604008vK3_4s00e0G0W
+0X800W0WW000201060040004W00000m2S20u@V3404G00A200G0W8000008DW0WWK8W0Kyk1
+W040G08800048nM300AW00000900GQD646830022w@N20010DvQG6@60WW400000W0a000WG
+802000008W20em83kvy1080CJbQ0000002CGR_RW00000888048200010G10000082000020
+00010400H0202G050000W00009l9PGG@g040100W00W020040004880001S2l1vrRGk_C0G4
+00004Hu_6awj107T02H8102W09Zc0010WA@DOfU3Aouas831G45mu@6KYl108OC00008200Q
+cV30404000044G0000W00800041G00000006s10W0X00mzODu_@4G00482208CV3sBdX2uDO
+0IO0008Sfj1G902kks04000000AW000000422001WGG0GGW04200080e0000020200040001
+0FyR000MK0026tDbGheC08G00880G5r6040muHXVYyc10010G10008G0230000G00W001004
+GdUdmZl901108EU308l04zl1G0W0_fFXr9b8xKIE2C440020W024C0e2A002HH03010A002W
+0108G48W24Q008000G8200G0C400YW124Xe0X04100010H0008K5WW08000K0e004G308002
+W00400082G4L3l10W41gztW1yDeHU3wsBawzb00aG4W804a01M010048000Z80008W2Q2004
+YaW8H48411400K80n0G008W8010G820008000W02091600000001d00WY00W40WW0OLT6000
+21K24194000020a00Y020H8005CYe77CTIsz602e08PT30W000008400100X0Wx@DOY_4000
+WUal1WDH0kK910098400200W000e00800e241AG2000eGf853II080WKK00100W8ra8a_J00
+X0004000009eG00400WG1084800040W22000H00AG000VVRmM_Cahj1000eT500KIV2080G0
+020W00000G40000H00000eC0W08W024m20G12000100LH0100sqYXsPR10W000m0ecQC0010
+0H08100G0G100G042MpZ13_RGg@6ymR200Yh401WawF30882400200H400YXC012S106u8W0
+044080C1200000mW0a_qaOKNI000200YuW000042We@@PG40G0000mKICOR_4G0000000Pju
+40mwG001X0000qZn902100000001WW_yD0200W020002W0HxaGWBs43732000013GA00W0aC
+0GNd600G00G00WG0000044Pf@00006q1G10000m002Kab10e00004C0MG0G8a7Iyn6001eN1
+040uVXQ7G080H106DcXiAF100m50xEF0KG1W2000820S@l14WB0zdL0010WonV100_Y1k0e8
+a3mif3WNwE0xKVm000O7aL@J000PA01WRT100F@d002XG10WW26aW0C429815GG220NT0m@@
+D0Ae0G5EyGW0W0W0820001000600011004800440O0W0m0010100030cjn000G0W0G00100a
+5d104000N10000300YC0C000G0G0RtQ000400N000C0k0O0O0m2G000W1000O000mA00GY2m
+WOii100eFt000lfEG0K4v0un000100Wgl70000Y870Na@WBl300Sb8a3G0080M300WWXF0eT
+@1000m@RtWK2rOiXE3zuRmGwFKxT5800000CGdSB9nmZ140IWalPeRR9004069k4DP33834W
+RnJOxV6_AdXweJ00I0GewOitV2PYZHOu6qWU2xEdmLyX000WrD00mYQjCmMBNePGgw9ifZD0
+06NdUlYvYV8MV3080OCpg4Xg@m8y6aik122802vd10180trb008000100Xfc002000002800
+000W0Eli1vLPGi@60kw0Omd4_et0G00W4200e00004000e0H04000000J00200100CHl1zdQ
+GAz6020204G0m1C6aHS20W090G00KGF300W00C00Kii1W000444420000048W882201H0W02
+W0040e000uvU3YHp02050lmP00000j305@qdG7n6800008200100001G020804L0W800WG00
+000Ae030H02Y088010000W8x030204004801004W8A04HG0fyRmXh60WG0f_@4000GrVS208
+086Tt00010G0001W00qFl12G00_bB108000404ctt000NHPpB105000C02004000C00W0010
+00WW01m4wD0W000006000Y0H1R00040148WlrQ0844W1PD000W0a00WdhVur030W00G0W000
+20440000102OG48040W00G0140040O0W8oC0080000W0WW08fza00w008900000000m00020
+SyE304W1KZl14G411WW40G1486M3CW20H0A2OG430008Csb100020000H003001Ymoy9qUV2
+1zdWC00WwvDui@4008W0082e7V3k_EXyzP8MT3000WfT000044GO@90000480P80000WO00X
+zR00W0010200010041090040060GGR600002W04GBU90H00As_769X1009G1bQ000G4W000G
+40000P80W000040nZtCW020uQV30800aSc100000muhCol10W00010020W0000W000100G01
+0W0000I00GW00G00OH16yrT2200W0001DYl10080H0a4SDk10C0000H0K@l4H@R08m0GGG4O
+G1001C00W8W8012WW0W05W100WG81408W022W001G800008G4201Y000010820uc3309A000
+4W403W2000020220000Oa000000wgV3004247l1vzRW0400m004080200G000A001G004aG0
+4000V5c0G00aGageGR30480120G80I300O0q8l18000002031000G8H0W000Oc00000K40Gu
+8981000084WW2000Ok70WW0100IG0GY1W0004HG420002001I2StX1nkd0000I2G05080080
+G0W000G208m@Y60800020Wmxy9CCl1dgB101C0408E00ne04G82aG000H480O20WeAW04HX4
+3e23cG15W0Y3O482CGG8cW0450002HW8HGI5400028150000a14800H0320K000G00WGb04O
+010CE2005Gm0404000G08300200G2000e2710K1024C031m0800a1mWK1008480W8Y0Y02e4
+X0G8I009000e0GGI0mmy9KAY100000WYW04X10840CG00252K4W0aO020n0Y1e000G2HW001
+0m0080K000100G02002400XK1B08Y8080040WcG0W0000GM000KWG2GYI52N4H0OeG0018O2
+1120ag0G4G0012O40a000G10g0010W001Y14G98092W000Wpis603a4G9a004248G0402000
+0800Y0000GG1080000G0K00W4_cFX1sJ00800G4I000W6680Xk6s0200041308W0W0W80wcV
+30000H0X820080X0G48O00000m5YG1m4O10008a80GG80WKa2041O09GA8G09Ga00a2Ic51a
+2GAf0020200a2490080e12G4X002G850O00W010G1oFd6ytd1WA0000000004jSV300H000G
+00000900032000820e0000G0Ha26800Y0418W10BBQ000002152G8O00A00010000C10eW01
+O0W8001C010620e000Wt8C818205H003m0066204G0c5430004OOeW04000I800iGG08W013
+p0000240GJW05WW0004Xe20200WmkPC0080mED6W80004Y0000GG0W20840552GGUlV20I00
+020CW001X481231603008A81940O080a0K050200HG06408000030Y1G14002GX1014G04G0
+G00C0YOW9000WTH1I00K004G808W0010m000G00I0nS22620F0280WE1XW0W0X1hW01uW02G
+2m002o01801Y30042g00001004808G0400004H08jD30YW800080000201080W00G0086QC1
+0040g0081400e09008248GW8Da0fG20IW0W00G18g8vV300421Y0404X011Y2mt@D0400100
+0AD609Y0W0IXB11HAGGW00001GYG0Y00W00W0AG00000H4a0Ga40Y80euU30GA0G040OcO30
+5000G80ycU60B0820431000000480800A102003K30000W20mK@600o2GG0WbNeE0001WS00
+00WG010000H1000Wm1a10002WHMvt0000r20800f3000ek3z10000_bj_D000Gl0048W_2zE
+XH00vB0G0610W4101e@60I4YUXwRG08Wo104Q7K30ID0e0YQ1aD0000aXyyD00009C00WYZn
+02000K00080003TRmHh60E0400mXm8w9aOY10yul0mm3H4vKIyH08000Gg200WLy31udV0m@
+@n3nddIBziC@DGvG60008OG8K209eGG80XWGW100000130004C82A82WKG22WW44m00000WG
+10G1262X42429181850300G92O2I4m4m400010D00000P000Y000C0000e0mGG0W1000300G
+M000710064004C0g880JnPGMS6GG000X1W1pD020806000C000Y200WYk000ZA00ELWA4k0L
+0G18000I2G98CWJ4S7a8uEWBmTmU0x0k0MYw0a417G10_124q1e3W1G70F06068T000W3800
+C000o0KXe2W0W0WHJq6O61Fq10gALc1W7tO008000F_D0ydLKmfV0SL02G00Kc000100G7@5
+0wiFH87Ng3805XS0_dP0KTl1uhU1q@z301u7000W0080@7000P241mm56Wl0gNomVAeW300G
+0yF04yG08eggGm@0m@7UWggI5@3WW_700fgW20004442542GA442GG44G00000eE00K00000
+WRpo@DO8NLo2W500zr3YUIHuRC0E3D5dmszOiRE3LcU28X5WPsDe_qPEN@X3oDOw0IkJFXQY
+910006h10W8P@fznAcWSZfLX10W4oEh@yi@3nqRG8y600G0uQ_7cdtWe_a000WmI@6ypk1@s
+@00E500A0Z00420W60W000D_O3004080809tV30100y3e1000G7xt0O00018d080400G0004
+0101G0igb10002G0100028011G220080G00A000G000W4100040W0800GK002200cyq000G1
+20W00G00e8000040m_0604W0G040020e00KK0800G000mxF080004120W00G0102WIWG10e0
+1GuhV64W0000001000IKL6WW00eqB3000XKeT20W200000012AGG84Gw@60040W0G020000W
+0W09_@000402200Bt@W0000A0000800ETn010G00G10G008008000mZNdt6000c000000aG0
+20002G00pMt00G0000G2QIrWTmDW0000120WPfD0040mDx60001m002ogP60000028WmUt68
+0408UB3002000CG00040049000W275OGK16G120W008m@p900004000ubv6000GCEV301800
+12uW08H04001301m2004G034K@V2P@d001000280zgR08G0W@@D040Wmuh6iJl10W058054G
+0000000J6i6aVj7trR0000mviD08000K00WcqJG0W0nOw60000sC00G@z604400001000080
+00OBjsoAuF002W01400W800000b0080Uub10310080800G0044000G000W00000a8W08g@B1
+00010W0W0G40S3k15wR006uB400W200008000G808CR6gIpWezDu8y4oMD14000nBbG519qe
+l10008G0020000ebF3oiFXqwDOOu4AvF100W001G0G01Y000004a0Gi@6000O0120Ho@60IA
+0G0002004100100WW412W80WW0W0G0e8220G0440003g_tWTvJuou7g1u1000O002WATtWvw
+DuVE3gzCXUzD8uT3a0000000OzO3YitWctJuTg40000100WIpG004000001G0080000W0410
+00W0Wa8W0406I0A100408yBV20080080GqjQ5vup0IOG02A490200000Y08W000400X00WM@
+IOJV3ANq0080001409010X418600e0W1040X830H00020WG0W2101HX01I4002000SZGG0e0
+8000WW0AC0I4n0I880qQ00CuG0291G0X4i0003G40VkoGIo6arY1V9d0002W_uD0X0004100
+W028Y0018200G48880@4W080W000a0W004W20000Y20008a00140003812G00GX0W820410W
+0000GW00Y00I008I0G9W041Myt000E800G200Ga0024101G09e8020044G0a4KW0g21500W0
+b80000G20BBO00W0WjzPeC53IyFXoDD00IL4XW0000YK41G60002GA021W8001000G200XVR
+004G00000DPQGOu6aIj1LGO000GG0Ga0rlR01g0W8ND0t20mo@904G02G0140480210000m4
+0WGA0009K008580000GW000oY0000GA0G0G2101a2000140GA00W80W00000240G0GAIHHWa
+0W4020O0G08IKW0WC42I002800WC00KW000210G10G0810420G0400GZW0140400m0e00XhK
+I0003mCH900004H0W000G420000046W000Ckl100W0854G83P0W0CX101002050m0004J8C1
+0G0W800001100020820GaWXG03Y0180e0H10AW000HkR0I1H0G1280W4410KX2GG07210W2A
+000w846m2A0000085008425Y400098WG00010S0WW42XG8000W1K00008COI80W000010009
+00G009W00WW12b012007000C00W000GV00G00219000Gn00mS0H9D6W5G0G080010WWodDe8
+S3002W1K002440D0001G000WQ4342O200W10W0000022W8000n14401Smi88XW0008500GG4
+0VCQ0K0828HgGW008004GW00K04080000G00400088WGG004000021GJy6qUk1dQO0010200
+400022000Gn6v06038000000011480000000YG0GIa21W00oFXCW0003000000OG0808Y7t0
+Ga00W850000W80K0OsK3000005800W004W000qV312XzM0WG08K0600HGj0004aw0H20001W
+30820040W0088A20000SWe00000m100eDV60G40Kck10210Euq0080000I7H4000044e0V30
+00m20a00WXGl00000_200W0G010008gb0000A88B0008KU1W800e0840Y0r100G0r1K31005
+K100440400002Gl7080m@2a26aW0C189X3FG84UWggAIFyGqESceTu1HJLLcnV0yF00uV00D
+0HuOmli608004G00eW00G110W020W00200W0N100y5000Gg34Wo6000u600mSG10G000we03
+SrL6uA010W0mQ01Gyv1W3_3000000K50Yos0F4vV08w3Tm3PAZ@100@3WedP6H@NLW_m3000
+0eA00uhP60_100u2y3u7a507mFW2WC050G0E2WQ040r0w0g1q1S0W1uG03WWWW0111102220
+C0C0O0S0m0O4W1m80GWH0W1W0110322060A0C042O08404000cB12122G20C0CGG0O0e0m8N
+S30006A00CK000g10001e300020000W20G600WV0P0@0w0w0q1K083e004G10e3000103WE0
+20O0C000O0000j_R3UqpWR@D000yF1m3F2KLL0egg0m@uHLL500@B0yWN0uXd00yFuX7Um3_
+@Kbg20Fu50G@BGLgIWgK50u1F0_dPm3F1W7U2O6000Qgyl00wF0m3U0WF4_7020000S750ev
+02WC_30ohNsRmSWsCTzJ2Wl7WDprgcRC__rWl_F1000bT00WkqEPVjPIu7ZglIueVI00GxMC
+t6jXZKL0giuV5W_E0chFA0004FPc00400800000G0_fFXEvPeHTC80004jP2000mX900SkE3
+0001_NVcpeJuoV3_o@XyyVeeR6cfYXZgg0000000aktg2PDYJgydX8mC8ev7_utWLhC8_H9M
+8S3ki40trpGlw9yrFCRQRmxn9SwN20G00o@lY4@DeCVCG000agQ2000YSA00qb@3NxdJJRpC
+q1900elZu8gwMAAyV60S@0C93L3c4IDbg0000pg00GjbgyFw3zoRGA0IiNQ5xf4IdRO00ee_
+A2Usv1cx7VuIr7_hoWrVb0KG1mThOSnA3jX2JywCKZE3DaQZ200W6J9PkU3IV@X4zD8509Ef
+zXL2JOQ7FMS1300V2b1Go2Y94In9FDZnejs0W01O3OLgf@XbyD850A2VghX12hm0KRx560FE
+0xCyVE5q2W10egwP01W0CnnRZQ33000QB200TXysOQm00WNDGFd_tDXE0Ouat404K0S7f1H1
+KHRxO02N1eO09Y6OZe02101I0G82800000X8000008G200001GA06yzl1000SI1WXe0OuM_A
+000mTET2f28Hq0L45G8on9000OS_hl100WSu4000CEp950AY2GYs0I82@72QqWo_J8LWMY6G
+bXS_F8e@@Hw@Ue_V7h@p13C00Gii700_kbjrrc100gNAlK5MR5@@cZTm4Wl7fQLNCkDT600W
+Rc100sjApR@D0007P8U@@1ew00o1oXDd0IF9Nn@pUGt0IF9a2uJp0c0I@@Mr@hbz@PT@FMu@
+VLUuKILfU0m_@VZKIFPRRRIq7f0I@@Oy@BM@g11V0000ZN00Wf2JxdPR00OR5E@I0008gNZA
+0zA0pm39100Wu@V8IXe000018W200000X200000002800001i4U200e0AiFX9xtOiR600OI_
+@VB00a06oFXhyPuD@4000a0WY2008G012008I0I0800Mqq020000a000W018400eGJO0Zx0y
+@l700H0cvaX5@DeoV3w9dXvED004080G00rG0G60108013909001W02100080085AO004W68
+000ZF4I6tFmN00u@VF8400KwU2HAm0000X_oJ0004mQd600G00W000G0000400FUoG9f6adQ
+2@mRmbgRiI13004X@@7620001lZnEg60Y00eu3300010W000110OC1dy@w39XO00000mD30b
+YeIv8UCFI2PPO08G1G00W0000Y08045tn300108W00ylV5poR0000IG00180W440000002Ih
+00GTiX0008SlV6kar002000080glr00400W40Wwar00W04001W8009qvX12000GG004vH8xt
+d0104000209Aa0240000Vs@@l1000fURVew03kyF100G0@nQW001WPJIW40041G0WJSDezV3
+kf@10a00DAKHS96008e404G0008Xz@J0eO0m_kX0400OXN30008aeG2f2a00081GG00lVc0C
+0OG42mW000We4600W80008X04cQ400400020oyD130G01_M1002080000I8G00W01828010G
+022000008M100IVn340W4040263E11W00L6p0b0000G0000100a00H000000040021W0IW80
+3000600WY2W0Y0H6o6qyl100044G009002e7vA40GYW4W8040801W00101008000W00008jQ
+VBF0008204000H0IWnC80C0ucd4820W80P4W0W0100020018080f0G100200WKocf48j8I9L
+WWC1402K0G18W00Y85004KG2WK00G81900a_l4000eAIs0G100420005K00I0008000Om5Wv
+_R10G100040005K0820000GT2j1W200a0000Ae00Y08000108104W20G0004904018G42YW8
+0000H0400G48G1Y8000W0W000WhGs0K0000003000000WG00020000oJ00m@@a0S008GW46d
+r0W100W208_@t0000H000000050000mW00Y0008W30805008G81020O000108O1nUcPeaMC0
+001002W20Wm200Y001YWVER0002s@@91048000002001G1004000SCY18m3f800100000GW8
+041W020e00402G000W01020H00A4000W200400@@d16000ZSRmMtL000200G00GK02000980
+00000410400W000WX2W@@91820000010G00000800080200002000W00001020G0a040iOT2
+0a_J00eex50Y01W0WH0G0qV1020zN0R1004mR1020000800808A0W00KB0y@l400M0W800A4
+000Y008W000m20W02nG000mo300u@@G0200qej108402481024W21M0I5u101O808w3T0qgI
+b@lq1m3F0UwXbmRnC0wl@0002yF00eW20mV@7Pi100uU_@d400701hZ1W2004z0O0hW2yt@0
+8W02G002A0i@00O@1qny3i787KGY1C700GS10my3m0W0W10E0XK0CebzAa0n58HYB0N4NWi0
+g0S1KYo284HC0002e1uvzG000O0000400080IWO4W0n889WG0J09na0IY43i49kWK1CGM0N0
+k0EHP1SY8k001000000k100000Eu3H0mCk1mN@@d10yH40006_@l200WWKL51Tu1@xm3cnCg
+Kbg44Um3eg000muD00StL80eEG0uV30000WW7UW1KL5@3m1_701zm32wG04qX78e@0uVggo3
+U8ZPCZWLfA1pCy_SQl7300Pqfkfog_a0002yQ@GUXqZdYI8Lx40Gt0ytl7zQhIQK9ajl7jhL
+HhtIipM2000uL500CWd7jG3JBb2D@m300kCYbhbjpzeNF30020W0G7001110L44000000K00
+00X8200020000200042G0000010A18400001oSs9SBM2PypmB@606C0Ok@G2yd100100W000
+W20iGd17@p000W04000005040108009GG0Y08GX10C0000020001WWA0K40200W000040000
+0ZsZ1100WtxzmrfC000WZA00mj6O4wa1G50W00002100G0100008000I10WG01000e002014
+0GPy6yic10G000004G00A020G0W0e4m0044T00800m0040G8C6022H4010201WG0A0000000
+8a000004W000ZpR0000a_@I080GGVCC00m0w7G66g@10100000f0080SVQ20008010004W00
+00GY080WvMbuhR3G0m30180WWZ0mBX9000Gv@V60303iW73rgw1Ga5W@@t040GmIu600108M
+838000W11G0030GlV9000002002800000m04000WG00000G48a0mBS600WGu@V3W040a3VEW
+700oPS310008900QOC10G0G39QG1b90408euC38200yok100840W840080003040W0008023
+qQmM16SU_C08sVY49aB5CWG0308H40000GY0W00101200o8YT3080G020m0000800W040425
+oR00020G0O07xP0G0W0C0002200040G4zc1@@33eh4W@@z00G02WWa008000W210000100WG
+4000308000400A000G210004Y08G1G204aH00000G080WW800000W060020WG0GW000Gm0SI
+i12G00ozqccDCeWIC0900W00400GWHTz60GA02000001402GG80O00010000Y0C@V30W8000
+G000W8804G10K2HGX2400X000120100WW4102W80W112W100yZyC00k0@@V304IG000DC2Ym
+8008020Xg00X0333EG02805688028c2G4A8W05OW00g09a18A18YOA0X101829013Q0W8204
+a810bW2G8041c2GG88G00G040100000W8xXP0XA0y@@604200080Y000HC09301GO8Y100W0
+P4010G0294W10000O40GW8W04G8W0800P020020W308G8552q1G428IXa03X1W85f0W4Q2G8
+aY258G01W4f000Y0u@@m0000ZY00m@@R8100GJ0850001G4000500a001G00000G00e00441
+0000W10000800W20009000AI1G4IW0002KC0G00WKW44600K2028088000KW00YO20C98G00
+0GA30@@330W4q@@310Wm0H2008005000000JWCcI200000m2041S2000G84O000ea00W0g01
+01W8220W010209804008000C000e1C00000wj2Z@@t08r2m@@R80100060000a0G0G040CG1
+0802090002G202W0G001K00001AW20q050W080000W8WIG0mS840280041WY000010010HI2
+0WWa0220WWOcARoFs0T0005linEg6040IXeG24I040W08H4W0080000802eVN3G001Cke1WG
+000002W00W0zNGWG8t5084121W00W0qx40E0xlGl3804W@20nmPm@@m00WnwouG00r00008b
+00K300YX8oC02000G00000K8014000GXy@l1000w10400mH_0WFY000y0@lQ00000yH40_@F
+300WRK000y@FCWI00_@V3Gv70000W1C0CW10GXA000F00B8e0H0u@@100A00WX700y00@320
+400_NS18007uV02qCp4j3100cV004@0@O_1O0W3u200i700mS00WvE00pRYpW@@X1000BF10
+W@@n000ue00001u60nmP000C008P0m0m0e305qYf1O2000O00Wf2mWP6W10AWAW0GK050Yy1
+WRI00000@300g020yH40ug1000V0m7H8503_@V6007m@@l10oC000mH0WA05L40wmv10100e
+gxwVYqNLgQ5YG00AG00N5000000m46eGq2eBkWnJ01mv02Wg0mEjOyvP5@@@0W0GW@@b0G33
+GmqCiaVHzlQGkrL0008G0000000aVrg8QyA000GSFb15PlHPlLK0t3TQxndpCKZtC00o4YxF
+A000WvmLnuw646k10C00I4lYkXh0mc1Ga2vC0V500001IG000018lS34G00G000400208000
+W20eKG10G00000WG87D3QdsWXgD8sN62ec1000CM000so4308000040cGN20W0040002Kl2G
+000G20G0We8000012G40aY101H012X2480G0c4k10C0G4400Ga0020100440WoRDe_UF00qO
+z@@30410E0F1G058000W00X0000W0Y10080004010080W0G040000ARR6MVF11025W0c0010
+G0W840820892O28e052W0808C000O0000C42000000C6030800380000100Ia2CK3l1HAy0m
+p6WHxV8gV3000010W4u_R38400Sq7300W0G01000CW8UU900W4020000WWK2z60010Pp63Y5
+s0000m6000G150K_C31dJ2b00W@@n00W0JLh600000828000200W0G000101004Nv600400W
+W0K0F300W0W00042l1200000800001CiU9MGdXySP00msGI5ISoF30004UGqWc_nW80Gm@@C
+000o000WG9V9002GO_V3002W0400yfz72xy4nWB0ziZHtx6q2l11mOmgk6SZk4G000_pB100
+G2G0220W92SSc17iR0028004000W0000G01H000020m5r9aFw6010008000000Z_00Gb2O00
+00Bz@40WO0KD83Dpd0200WzlVeEE364rW62J00W000G0G0001zcMnvfIKzE300gMkVt3020G
+20Y46zDaN@J000C2K01On024020080p200260040400018YGG04G0G00G0000002802W1W@z
+PG00WGVpC0000QrV3Ywt0m680Z0aGuzF0200GX41100060G8W010YkfpWS@P000G20GG400W
+82000W010y_l10002Hm02WWY40040I_@600C0G44000W80141040X8GY0Y0000ffr4_rFXzz
+b80S30000hD00eD3C004W00000930Y06200W100W000W00G800uS_7_Y9Xf@DWK8e0H844D9
+52O8K01W0I1Y0WG00850I0G0400a26HW0090AfWQHQ6_aq0G102Nip0810W0vJ000R_8@I00
+0WgF_40000G0eGvtxD_cM20G4KA9A00Y02YWO828W00GI4000Y0Wg4WW00W880CacG10Gme4
+90029_b0800000200G08Ma030348VspGetI00e0100aGI_6yyT5K000_a@1eW842100G440G
+000W00002800ZW02000nG00680002000000W10860xbaGRJCK_F3FEP0000Kno00@@Bn_f6a
+fl1002002200W01OlNL00W000G0ugR30400000W4GK001006K0180008m000bzUB00qZIsV3
+008ItNQ09100G2080000a00GEul400K0QzF1000zEX0GW_B0G020101001e_0000eSW_3YXp
+040202000Gl00O0q7fwR60W0Gg0000eC0mW@CCVk1G0000c04rpi4J4aGfM60oGa220oGqzd
+0W10qlx0e3VO200mJU000000LSL@30uZ80m7HSmk11@lHUe6000G50009f10Gd700V1l1L2e
+80yrN0GL0kTt03000voA100WvwfJ81E3S06cx0C0m0O000W000820f0a0C0e0O000o200GC0
+0y@l18c000m08000m0008QmsFimg100W9dVtWP_Vu@83W0X100020L000P00WOtDOm@7kit0
+1W00n_@00@N00000_720w_t00y1WsK00500@7it60uZ8w_73Gv10ZPMX6R0Wu_D000uF700W
+t_h000KVi@6ahm33Bmm@r6K5N5FxRmDtX00002r00m5udinV8JZln4z6ydi1boampG6qO66v
+@d00Wg@0on0W00mhs2jz@3G800UrU60V40pmXqVVFC7U200800001LpZ48000kKmWgtz0000
+Dt00W8thOX53YNlbQ@D00411W980G101dId0G00YkjD00YWm5P600G8000G4G5000G00804W
+G0000820020G0001WetDOS1300811G00000ND10900110XoP0040WotCGGW2mns60K400G00
+e00010100R8om8_9C2l1N3o0W000W0400G8G04KKqAU2xJa08004G040GW08000002CW0440
+W0G0004O00eY04000AW0Wv_S34G0C0W0A02WKW2000Wt00TUP022000802080040200022uL
+K300000W988oR30008qll140020104Cjk1vzd02G0W@@D002018WI0O03064G01S800GA000
+W0001020800000100821080040GY1020000G814W000aW41000a0WI20020a8VQR02280200
+04G0IWi6400007l402481G00G081040010G004W0800061YGWC08000Y010GW0020400m0Cy
+@l1001G2qF1080W@@RGie900X0eDBCW0G1KSV2000I0i00iZi1000I0010azj19PQ0080030
+00ToR000cqgAJG00WGs3600020001mY@60u0GeDD3sz@XK5C8T_4w@d10W20BXR0004WxjJ0
+010uL@Oi4N202W0000H0G000W00ni@6001004000GG1081340800W8W08G00008W00G00W80
+00000X0G42001GW020110WV@h8npA001I0W0800G01W08W1NI0Z000090WBzVOw99Yst0100
+1000a060020000WO20008g0xD010020044G040DXO082000008a00H00o000G00H80Kqt6K7
+F32010wM8100G2000WYpt0020000G0X00800050080GW2R020009e00000820040008000W1
+00o1000020WWP_D8vV300i63H0G0000080028804mG0010G43110008GGg2600C4G0000W00
+mRxJOfV600010000gn_74200rcP5HyRGLo9KaZ1xpQGoQ9000W00O2900W1WW09GG00cTq0m
+L58000200a40100004WmLs9040G0400o@_9SMb1LzQm6P9Cld100W0Zvd108a88Y0G900a04
+08X00G000H40000A4000000O200OmV6G0Y408000GW00W42WE8D0W10W0H08H0gG0e2I1150
+012W00u00000G9IaWG200W8121K11YKG0254W4a005hpRW880H000808G0026206C0m000W9
+0000002HrR020040040G0100O1Gyxd11sR00240WG0881020000bai10W40G00A6Lb1V5Omx
+@608W00I450800YLGJ040G4G1W410GW08WGWGWK0H0c00G000WOPG005440H0H440WA0GH20
+40W8220IH0WGaC0f41B04HKJG204P00041trb0G02WXfJuQ1301004gU2000f00292W00WK0
+0GYs6000040I1X0G000a00HtPm@@6GAG41004004020W0a00A0Ibp00G4C00008L0W000AWK
+IH121000000WaHf0Y8W0000WKa098100I95G000W00KWW80G0000502010G2Ka20W4009GA8
+I09H000a20G6H00G0f0G0H01048cx40G30ypj100488540010010042900Ww8IW023GvjC00
+001W0000m2AW080284Y00003A0000W0WG2200008OIA000YW04b0GS005000M0220pOQWW21
+0G1083gQmA_6000C3820011040q0840AG00H2200008X42mm20W020G0C000840WC0000020
+21WdrCG80000G880151zoo000GWPMDedL60W14G40mfF@40000100G11414880WxgD04G000
+0W10W6000_7040eqjl1020200W2W800G002Gx4601W404W0000Gl3zD0QG000GS0W08000X2
+q0W00088a0m0o2S60G00Ocu4004080808dj7orl200WW8222W40029X0082WW008WQjD0042
+10G00040G@@R0mZ2040e0200Y0940yij100100800X0W0G2W8080009C00vCQG@R6a9g104W
+WG20eX00H311000040W4010050010W20K000qV122XSl0WGvWRmBx6WQ1808WAm@@C000eM0
+0W6GT0W1SJ0010aGeF00000G100glo0qV0020eN000W9Ew31000WM00WctDe9030B0G08211
+00G0G000004za0W0G_8qx2201ul00X08K0400YWw0008ao1Y2000Y0708200800108G44000
+04mF0kg00yNVytl_ulV0m13ag@3kQ006yF1OW0Wks00CW8FuB00OKL30201000V1Ag2GluC0
+00O2G0W000yVP0F6GvkvW10T1W@O0WP000G010_@6O000y@02KB030000y70000LgILH_W7Y
+MLL5zV08wCbHL7wW7U00LL5e10WOuIWV04mAS6a5N20C0C23d100WvC00H8060A0H001O000
+G000GC000e200e2mCH7GK0S0g000O000C7000Qs00003006L0p0g0w0G1K100C60008000X1
+000303aVGK0e0T000O00086000k300S7e3uE030CWVW20T0L0W2g01T012w0q1a1e3e002G1
+8v@D00W@R300007Km@@6000_7Wg_70000y720pqc0082GkZ0020Wxa3Ag2X00m30_lR0SL00
+0O_z90W0008@y0Gt8000K1000uCU0m3L5WeI500q1V183KK108IKtzN10KL00eg003C006O0
+0000TeWDsSMYInhOXV6Ykd100wmVgXKfbLCSM5@@dW040Woz91eX2m3nRisF6d1dm0wyqYt9
+000OY5sWT_X9YO9cKdX_qV0G00000GWCaPutT3UM@XCqPeNK600Clzvy6BfF3000000AW8W0
+000G0HW001010W02000100W045_dt007051do000900811HhP00220IC2G0000H1000088O@
+@40MB0iAb1008000W0000183V3000200448k@40W04qGl12000FqtW7WCeGU9000H80100e1
+0aW2080X02021CW05080H3400404008G400mG02eW2I0080W0G030W0G0W50WG0C40080B00
+Od@40A94902000080c000000eYi8ICYG00020IG40440W0000I00900111g020I848012040
+80080080040W4aGvtV3K0X0H008ehB3YSmWNBDOUP3008m0204Y00GAX002a8GW8O8604840
+4Y1132G00448203J64W2G0J0040208G10G014O1Wm6G81001y0002102F0G0000A8C040940
+000W0g000000WYU04W464002Ys00W040GY0m10011H0m00M112800010G0W000G4G800m020
+00200G0W00604000m00W4uv@4guF108008GW0G0400200W480Gp@6yWr372pGz_6KyV2DnR0
+00011201j@d00Hk206000WW00eC0yYc1@@R00O0WEhIu@V3006GKPl1080408004wl1fWRGQ
+_9C_l146004800_@l10010100G0G00X008o@@6i9k10300001YCNl1Y0008000KPl1080G02
+0Wq5e100108100000W7m000080G000W0030Ect00W00zvRW4100e03mc100Mct00W8000110
+W8018W0_AzD82000H0000W04000G006048G00008020W02801004081000000W10000Y0fL_
+70000GC0GAQ0340GpqCj120000Ga9o4C00W082n0100W30H_R00G0210W00G00__t004000K
+004G04KYX1BnWnrwCW0020080Gcr6W000m00W042000W00I401mO4018000G002084Yxgb00
+80vBY6W00Iu9u40mSW02W0u@V30W0018082090GQs60GW82600mAT604000WW0myK6004181
+V3_utWhzP000G0008580000404W006qgi100080W08000002C10K0000W00CY444080iPb1G
+X00YTB110000W00W008K3i10K001000000WdL000W00WKHC029W028G00084011WM_F10460
+008002000000kT26U6730WWGYG3IW8L110K00020W16000Eb881850OHWO4aY0GWW082iKQ1
+1C2X8L180Wiok1810000020088GK00400X80X200210W101IG0200G000WLNbG10OGe80548
+22W8I4GK060I0K04X403000W00GG01WX8001C0YG0000W100X20280W8GGyDP64mQ500W88Q
+W00W80G04201Z00n00GW10W0021O0G220500A0W130n800004W0K000G0HG08Y2G000100G0
+040000400005e542WH00m40gAY01G1021500000G56G81Ae00e104028m84G8008CY048YI8
+0f80W4p1WG122XeA4H0021989818H0284Sbi1W24W6yqWD1Je@530048001040DXe00GA1G4
+4WW0f05WYW082WK000cW0008La41M01WKI11414eX850mG12008W2H00G20GAe00WG200a20
+a18W000fG800000a2K80081A0000yQG08c6n08G40000f0L800Ge0WKW68Y0200854P1O010
+0000W080050101G08510WK4faI0101031O0201000082001Ays0W0100064008800WK2WW00
+W82GGW08G84101000448I0b00G0906a10004044082010W4Gg9000400W6HSP07G0A00I88A
+40Art00W0000s6kJr041Ga00W40080800W000020W91005009C8@ut000W1ByR00O240000C
+41G020WCkj1phR0020axtI00G00AO7WUzJ00400m0G1m0010220kAp0C0GG8W00082W00800
+0W0IFv60W02000X00422046G809W000G0G108UD30GM00WG0eD5300300020G0W00WCG0W0W
+0008000uGyti1G00080KaWW000000700W00100m00240GC03P0u@V34o004Jk1PupGw@60W0
+40005mJw6W800yiU648000G10uz@40G20K@M2n@R08082000q800000A280004000005W80L
+02G0000m02821YG0G0Oqy6000GY000000460084WG08000000q0OyJCGs1400aS10200G0O0
+080iA0W00EBqx0201uk0GYu6G0wF1050kNeN4402u6100008080040i50W00l5q70001LKEt
+t0080iA10200B000890H200a8GW@@D0000hGW210m2z200aUtp0200000s0W00005Yk01800
+700WV_D0z10000bbKwO0020W20000WmF0SJ10000ulVV1000WAY0G00000820z820QJ1_mlV
+ylF0eYK0C0000000iJP0000OkPMkE10YF200rCmC00uXg0f7M3020004810WYg30@D70qP72
+e00000028000000ekH00L1104M0H9Y02000X780Oa@1yL@1uE0eh300HqBZP00W0000@4Wxz
+hWe300pF034NGM0u0CoTpW4nPm1O000q1WK0C004N0C8kWK0C81E3GS100K1K1G4i60E0100
+WE000n000W2200Wi200030306060e0g000w00042000A100C6G5GAG50K060a5d100q10Wi2
+03G5060G0L000O00002000O00a8g10O00000O0000L40_hN0SJ2Cnc4ug10mV@4fW1h@RWFU
+41NDG0_x70z@D0Qrl0qc20000uX_@PG100000yVeSZZSuV4K0000mCG005100WxQx2uMq201
+0mkO1Xt0W00y40_V00UTN00mH0Oc70W3Lnx@70000GF00W24008Y80IVL0OFx400W2EtF3E0
+00UvtW2YC8eMCwHBauSb0080mqtLy4cD3YN1400W9gVOvR3Y8@4000Ca720QBdaZxDucS3sB
+7ZToheiyAAtxXOoPupD900ag6VU55SZn2RaatT2DUpmB3y0ctWu@DIYVdXCttOhA3840000W
+0W020mh@C00W02000AGB0W5vDG8100006Wu@D00G0uEp6Ksy3j@R0000ED100fB@0010Wl@V
+e@V30040q1d1xvRmbq6CfV2f3c00200090I0900000W00WG10X00002025YKG100020100G2
+0201080208042lIdGmg601011004q8zC0480000000WuT0G000200_JrWQ7D000W48040G00
+0W004Mit00001000208G0KQV2000800G05pk4G000CW8G80101028mwI6CEh1a04X120G041
+204480010404I10a0Ic8C1000000W10040COc1H9OG7Y90Yl1uVw4grs000800W200C0W000
+0fe@40800004060008G10WetDO0r4Qzt00W01Jop001aWL6O0012W8000000W0M00MwpW8XD
+8q@400W0Lxj1T6A1000Ez202p0d0046WrwDeUR6MitWOjJu@@40400c6e1@@@0008ewkV8lU
+3EttW8_PuaH92@l2008lFKMnfs60G00fx@A00H0Ktl70G00W4200080OvV38000KQc174RGe
+@C00100080GBI6yy@30400g@t0HI70fOMnYvIibv30W21EhSZU0P00002Y00002208000gQF
+XSiDOg@4000141o35lRG2F60B00e8K9UMdXKtV0OW0mdeOa7V27hRGLx90W00002G8040G00
+40B6R000W000G2dzRmmL64GF3tX_000CmNvn00G2P2z6Kc@300H0000G00G083LC0G400041
+0G800002W2zD0112040488480000L010000W800Z000G0W0yD0100010W038W04K00_Db100
+W0@KR0m93WrLn0W0220000G020LwRGxx60008G400049100GK0rdY1040440G0VvP0008000
+2I0000eI400W00PZV3Ixt024000800WW0080000100KBz64nw3004010001E00udL6USs000
+0W008G62tW2yV0eW0Go@60080uAsA8500CAT20G0f0G00000a201000200I10XI0029WK4A0
+0100I104W5000W0K0044H2G1A0310PamCk98100000850410G000002gJzF1G0008HA000G0
+100a20aQst09CvX10GA00Y80y@l1000e8000KAG2P_B10W20Wa00I000028004000KW02400
+08008I00e000W040G01000G0G0200000481W0W1A000042mKo9KFk100400G200A000mc2GI
+E90004480002800G1202000MntWclJ0806msiC02218@8C01W318m00801030004a008W0G8
+0200G201002200W020WZG000000200002100004100OW0010Lgxd1Y1400000G0100G44700
+0KKL9088000W643m0G6008C06W0100Ctl1lgR000WXyRC0000wi46inC6G8e8X11G08D4G0G
+001q8800H008G01Ga6yzW1q800020W20K08@J3gxF11040L0Z10WcknYPOB134W00SGE31zA
+1002010A0NeRGMvF000eM000AOG00H00e404041r100G052q70005Se0G408K0420IWwA000
+ao0gFW0W0g30G00a200000W500C0s31WzaP00KB0000K200005U06Rd120I00000q2z1aBk1
+hfd000WXvAIeeE300000WH0eJT90mCHxm3YsV0CZCpeALfoCc9wPCJqgggeLbAHhALgwF0KL
+L0GLLJxsWfuPmD50GEu6ypk4000ub100ysk400m050W2ccl1Ltc00F0000000ur@0000eW60
+SURC0A0cx004n0wOk3a1K3e3e0G6G1W8Wc8k1qny3e3e3mFG004000H000cV004P0CGS1G0W
+2u200a500WuK_D000uc300WRnJ00WHGSQF00C000c1000p000c1m000W102qfj141000c100
+00mW010008G400GGlzK100800c100000C30000008EF32Vp0FYmD00W@z100a0N200000mD0
+KRl40mpCwud1mUF0vk91y10GP00WJlPmT@9C2m300A0Af0ZZmD83xVkqE1000eQ600A3F404
+14pQt2428W7VJG080mauLq3Z4jVZ10W4wTqJuvU3kj6ZgiDOmM90008aDD3PnToawj0cy1OU
+zG000Y44k1TzYHyxF00220A000W21WKuVOyT6QHdXguhuEc4000GWK00OPU3cAtWt3sOFSC8
+010C2F3pCRmCx6000100AG203WG0GWW0401G000WG019bU3sYF1000GG004VktWmtCOK6344
+00I0600000000IxWWCuJz4Ant00040m000m001020214000820WnlO00108004Wt@J0080GH
+g601G000000W2K40GI02HeWW03180W20024nhQ9840000002G2C018080G0G0000e0200W00
+0004cmvD00WG01040001GTtd0W000ml3GA000G008X0040G400000WkhD08110Y24A0040hF
+R0C4110600e0000070W00A0I0000We0800004W2I_t080000W000G11010048HW001W21201
+800A0000O0GGW0083100000050G200240W414G002W0W0800G1000G0K0008e000030004GG
+402020000W0spi10000100WRS02000W0098WNwDOuO3000m0W03W8J0080KGX08000mX0WW0
+X000AkU30W0S020W0GyGGQj94fW1000G8W040208000W02100K0024008Gm00HG004000Os3
+6axk110cGsz64A_33qQ0G00m4LC00098840WltDG006mNPC00800G0WmMu9adl1000MkwEXO
+nJ0040GDv60102OoA3Msd100080W0G0000cel12G0041200WG0uF630050iy@61zR0m11WWz
+VeqV6Y8FXnPDeH86Uzt00004000ngv@10WW0d_RG7O60400euS3Iss000800GG0YnbXA@h00
+04000080G0000Wen800C@F3040W0800bcv30400000a4rk18000EVt08aO0DyQGn_6S@j4jY
+pmG@60W82uqP3o3q0G0008000UA53002WViR00WA@_pP0104G6fCKZU200H10000rEl10820
+W4A04Oh1rwRGhx601G0vuSCg2p0040000G0G08880000Y0Wm2WR00WWOET60nB0akp6rup08
+40000W8Y050G4800002Aqy7clqWWlD001GO816Cll1W040W0K401W10204820G0820440G11
+O00e80182V3US73W00H02G0000WIJ00epV340Y00W0GGW400400eGAU0008220G41ee00g2Y
+81082GHY10p4W0gWWbzD00o00W0000120BIRW021W8KC0004Gly60004020G004G020G4801
+24O11BW0G1W0014008O004ZkAniq604I000000140000RE1h_0001YE@D8c53000Y0020S9K
+30080000300Y40880000000AW08800qxl10100G0820004100052G02G000aA0041400Ae0G
+90000WYepuC0J0a001GAIH80Y000854O2H8210I1m4y6qsF30005000a1010000880000G_E
+0n0amKc6ybP29s_0e000089000A00G6000f00040vjN9GA0001G20140WsgDWX0210824800
+O0200IFF10010W24147HG0AG010D26800408W4W0A002008aI18ksA0200G40000007N00WO
+0UOs638200yzB3G4000000qHf1JXR0W00i3RJ8YV302008300W0G00GY00002A05G3cyt008
+c00G40M@F1W8020G000q000D88uJn4oyw110003sb000UgMUVOXT3ozF108GW0000GW0G141
+0G0000040mG7DG2002080G400WTcoGM160020fWT36qtWd@D000842W04H0000220AxtWe_D
+8nbA0G0XSHS220000Ky0iTy6R@d0004WZfC00041W004080200W400W0800H8Su4Mot080R1
+004mr20200G0G0000O10000Q8Wj0002Oe00180A04GOu9u0201ul00100W6an0H00000G000
+04K70069cXQHD8Oq70200000W58000031Wx@D00W4W0001j0I00000q200yil18A00000EqK
+P5HyRWF00WPmD81EC_wt000G@4000804G000000L100WacFCJeoT3oRt006O0pB@0Kc10000
+WUyW1000EuX800004D00C70000000K0006008W8aR3080000Y900cV048c0O001b8P0Y0004
+N00XXBX30myInDulz70W82yGZ1fnR0871WFyD00WAGzt601000W000G40WNvDOJG30000000
+8K00Ga2e2G0W1020100mQ00031000000Cp008Y0K1W06fpW2tJ000K2GG00000000m7Btt00
+0ml_uZ84GL10m@@0Wh_30ND00000_300AxsZm8C85@4002m000_300cGF4L00u030O0Wd000
+00W1wkR0yo30oI00000004G0W6lh8kM6g0lYmiz000W0W000G00000avZ1NbYThuTtAwTcXi
+mD8aV6000248_3G800_FV30j10xexHDA6Chl1DadGCuFCEj18000A3l20W0G7@6IXwR000Wa
+S00GXxUaFt9Hgd0040WqoDuuy7EVY11002ls5oMU900uchu1I_p8Xm@aOkx7W000C5d15gdG
+zy64jI200G0002G0G008C_4kft000W27rR00G000G0000W821F1W9C0xCv1GH510000Y0001
+1G04Ul1000W10W8SAU200W0404010128aU3000WW0G4ud_44001000200X4W000080W0zld0
+000e5uD0802GR@90GG0eqW400W00020G0G00000Ug201p_Rmvp6iqa10XW804C000A88603g
+ut0000G0W80W410K8j1G0W0sVoWLnD010W80004800WJJPGb_60004002400800K8X000010
+G00020W00G0080000014h3Omuw68000m0002800WyJJG000e00G0000000Q0h_D10020NDO0
+W0001020010842204Ek1FaP0004002GX000011000004uwB30000W1404G080062WyyD001G
+1400W45t86O3AZS30G20JdRm@_608K0uNV900W0G00XeyV30Gm8040006008002WAzC0080q
+ua6G0008nV30000_7Y10G00Izt06300Zyl1GW0Wx@J8yP300YG4y634400QkB1000ibn_mcy
+642E3NsRmIE9azk1W004I@t08600G80WM_d100mG001000O0iA737d@0400080G00G00oUtW
+8Sh00100004G800008UoVqd104400Y000004G804fN@40400BG000060GSw6010000040008
+1G0GW8000008G0a040W820080G08G0rZaG0eO0008eyV6sltWE3Ue@73c2q0W000WR00_u43
+W400W880oGdXZqC8iQ3sxt08000RzR0H00WLCn83_A00WWq9g1XYYHIgC4nL2pipmk@9W000
+8mU30100SfW1ntR0C00002000G4000G10000Ay_4000G000440GWC0q2W2vbepB3010X000W
+G0002004mlJD8RU36dF100WW040000G00GW00001000itmxPOUV30004000G400480001044
+G0600H0001G5000Z00021WJMC002C1G004LeWG002900X000H00040002W0044008804W00q
+6L2XYB1008G00442K00W0I002000H04100We0@P8mJ380W1128201000uy4W0iP01002X000
+a41I40W00400021100H0GqA6asl1800H100Z0aI000W000840051g618C042m8201upG323t
+Wh_Dezy72@s0085K0820110GbVL2tnA18W0008YKWY0b04W0000WTxy72FE1H4000G08840G
+04f4000eKv_6ygV20G000G2000e0500MWG8G04YO0000f80000I0008m0mF_60W409m@70WY
+0200828000m80000G07cRG7jI0004DA038014000000WDVX@F000I00G12000CW05H01GC0W
+e614G000406e00WSRP8qV3MZq00220A012108W0002100C104P0m8Y0rkbGl@CGC00e3V3km
+pWsBIOH@7kmq0W8000mW086000Og1uwf70000100G20041o400G02080Y08000000GQ7U300
+0W30000W0m000m1002000a0100001u100c002G000W04060208G00G0W0000HNtIyrl10004
+og@X@ah8XV30000dpq3I1K0000G880W000400W82010000A0020e008000004W100C400vYR
+0800O14004000000I4pd1I080W004WQ00u2G3M8MYv@DW0mM0020Sj090006GR9V3080iI00
+00OB000uEv@V600W41200002Ga000G8u00Y000108082o210W00NG0Wu@P0H20000G0O614W
+WL60G0045W1200G0WB50m7H8mQCwQ73R1000u@z1u_0C_l10ul@0000uV60y@V30fE0Szl10
+uYA0000O@v140000008IPcHq_3W@Tu1pOc3gILHhALX_mX_D000W30OW9008y00000u1J0G3
+FGaggYPoC3pCZAUuXezF0HJL00WP60000mi2_b000GC20007W0000300Wv000Y90002mBE6y
+gy38g000m1O43k1000W5C00qxl14800_@r00000050HC00YQ0P4r0w0g3q1K0C780GC000W0
+000302oA0C080O000jzR06300YE0NH1O0G1G7W2WOA0mL500041U50Or00000ull0Cs@4yxE
+0000c8xc7000LJ500eGT30mZ0000deBVC08W000G0GH18000005K0WPydW@xRNW2m@A0G000
+00eA00dQ04b800008geGmGT10000G41Oy_7Q84ZBwDOrRF_@t00P701mpmyuviUD30800U2d
+Xxda85V340014yZ7DrR0000Ct310DR@0G00WNODu1S6QuEXskIOiV30800itR2fypmJuRi8M
+2HFMHZcI00WAPHTCoGlYqpDuIz4AcsWCtPuxo4MDlburt08000Go6YkoV8ky4wUdXEpn8pB3
+QYN2G100xTpmUvFSZk19ldm5RCCTQ2bYR00002000uI700YjNYHtVeBV3MN@X5zJ86d4A_t0
+0042BoR0G0200020002GQZXXkwb00G0ndxF000WuNS3UUt000Eu0000stoW9@VeK73Aht0G0
+0000G808400200100100X00000G0200041Gy0k1ncR00W08G000WO0000G0Kff1W04004W0S
+gl1J3d0010mvjV0G00Gx_C0000jhx401000K60OKiAUwdXswD0G01CW00ataPOYA3cRs00G0
+00600Ivo000000420wwOZQ3bu@@4g3tWlyDuqV3000WgO00O@_4oUWXFtD83V3_@d10004@z
+P0010WVuCOgQ6wlOZ@@XPIWaA9Goa4_@8Y@Bou@XG_F8b@@X1frbt89vG2w63Gp30P1SooD@
+dyJT00H0Y3FXbMh020WGKuX00GWw@V30TN0KLqCjBv1200W8WJO@O3AMBXgwb8Vi4kJEXZ@P
+GG000000SQ300TWlny_6Knh1bPZnhN9yqV2000cw4ZXoey8IV3cslYEfC00m1@uJpKve4hSB
+H0x6qwW1vEOmFxCiST23ZBHFx9ieU2jORmklOSck10010cGsWMvUey@4UzoWXrDeRR300W8S
+@l19@QmOy9iXE3JkRG7QC00W02011Iox6802W0020H6t6e4040020040WW32O000WW0W0W2w
+J00C0GGk9ysi120007Tt00G80JyRW088W2uDG0W0WW00000W00842IhEXzpbG00004G0WmvD
+00100800100802000QYd100W0WG0000y3200001800040Y3@DO2S3020002000400W0W0XZo
+D0012003EG0H0520ZWGO08W4080002022H80GqGAX110GH00W00010G402I2G0WW3ER09000
+4800TJRmGzCqQh1000182000200100002008W800020I0202z@l1090201000Y00I0000uM4
+000024000m0G0W1008JV3U@r0000800020201010A89V304840We80H02Y1O0WtKD0W02X00
+W2140044010008qYS2PtRGq@ICDV8RtpmJ_6000WNh08Gau6Kel13zd04W0WhtD8KV380040
+0GeW00600000440000384G000W080240e13G00WG0G00600000G0eu@@404024ul700C06xF
+10W0000247yt000W404002Tm0000000E2ZoN200G0C00410H8100H00c1800000414W00008
+600000G020mUs9i@l100001000100800H0002000040G0W0o@tWrlJ8KwD800G80Y0004H10
+000G0840G00G008W0800GC000HG000002630oDGYViD0000810210W80Oa000004n8080000
+02fW8I410410000400I0220G4000X4K0Y0h@R0W40WP_J8OlGoImW@@D0000JXv6000010GG
+00W000m000WGG00202000E@T3UcE10W0000W0M6F1H000GGC0009200002004010W4001G0G
+040mm08201040X040G8000HG001M@tWhqD01G2G8DaCsl182200W00yll104060820MVl10X
+00Mwt000@fzX_04G4XhzDeW_42st020W0LmdG_26050I0221uX@600WO00600W20WI@D0G08
+0W00201041dl10010W280040H8200H0Y8030G4G922W40K0b00fW40I0W00HaW4H0202000W
+Q50sDD10002G01MW82280XG408204H00Xe80G4809W00X0800A800a900A84W608W4G402W8
+8200W4KW0GGGGGO0c000W1G2401G100a00009G4xbRm1@64gV50008sGn0000200m0000GH4
+4000040A080H00001540On0030W02g040006j300lEa0000mB@DG0200H200I080021Hmu88
+2e0Y02CB804I0W02e0O4GHG543WX00GH0i98K0Cn0HGK2WH005h80G100e100W0I1WW9HRGi
+b600818qLCMIn000000401Ebt0GH000W000W0G0100G3I9510I9G40000S2twN2800KZnQmx
+_9000200G1010W200WK0040G800GA02OhQ300a0W00000100200A1000040GW030Skk1IA40
+YYEa3NC0HW0240GiNxD04000G0qGXG4W0140q01801000iO1GNjFq@k1K000gkL2000HW240
+8GS000001980mpz60900Si130004G40000E00H00WPEDeA13Q_130000bXR0080051000WW4
+I1m00XC0G100G0Y2008001402000QH200b@RGS89Cnl1000W004W00840X010W000I2000G2
+0H0GK00H20049W060G00000u0282Y800C3H000mh_C0W00eTx4EuvXwVnG0W2mC@90008000
+0e8a8WNzD000f_hkOaBZ1XnR0X0W00008W011a08000W000e0nwf6i_l1HyR0I0000002200
+_100W0yH0eLN6IVe20K0000062sE1N0000m18L000KYg1400000z90100rB0000t5WSTV000
+G00W4aMvP00G000G00m60003qM2@t0000r0000080G200a8zR3810000818QQ3if00000000
+0SLEqFSkl40K500GX70000W2C0eh60Gg0100000f20QWLL000@Tb10SO33m@000uO300yrV5
+5GP01A82Gn030GNO00KL1mL30WcBWwL10@@T1c1001040wm@100G100CuR0Wp@_305olt000
+WvC00YL06000C0010000G0WVOCOQzA8h00GY0m00283000300Wi000cK00oI0CSZ1O0W2m00
+0e200m8000Guy1D3zTR00040004100m0G4W14lj1m0000800Wu20Wf2W1oC8A04WPf0O000W
+9500W2032506000g08F03Ek_1000WM500kWlYp5I000000K0000G40C300uc2u3L00008300
+0GC41Wa5000eZ0qnF3s000Hq000W80KW1081082vdN4AGl840WrhE0rDrV3e00hAWRAmCV41
+0lgA08pF003S000Ov50Am@G00280WYah8Zx7Eq8aliJ0801GcF9CCuC3@RGZ064Bj1pUymIu
+9aXi100040012yO890G08gutWpcI00WTw_XXatV20000kKcX3PCeiyAAWvXPpOOB43sjFaMn
+DeoS30sD0CQk1bcFJMSRCoF34G00gWK50002dIRGSaCSUj1pHI2200W9ZU0e0000G0W6oVO2
+V3UMXXWuP00010440W@@D0W81m4@90010b2004102WDkD00A0ust900eKxxx7sdFXQ_D8CU6
+w1FXYmDe7x42xnWptDeF93cDp00002vrdW020WbuI000G0200054G021000G008W24e7034G
+800006000CGzx6aVV20rH0oPpWKyV0040IKT600100280W00001GG0W0080G10adV20GW0G0
+4W0008K50040800G0H0W0000004W118ODU3cnF104W0LTPGpP6000G000K020ecoxJuGV3Gi
+0W00120040100OWpwDW00020008K3000208cKdXnzDuf9300020108eVV6W000Kzl10G00C0
+1000800021200C00800000GYZdXr0DekV94W00Szl14400000400280228000WO38000000W
+0W080008yV600imFZO5rMQmXz6Ktl10G0480801808e2_400800040100004A000002004WY
+rNYZ@J0081G9_600200410000W0G0O000004004X000OSG3cRpWxzCeQV3Qdt0GPC05VJ200
+9Wm@D00028010W@CC0040o5@60040000Omn@6m000u@V90K0002400000941080001003400
+0000GGypV300200W01128000000W080LzR002000004W400100HuL00Ov9CM@t00W05RzdmP
+X68O00ue230G000800u1X4000080004000OK_9qtF3dwR00G003004000m84800000GG0H00
+0GWu@C080021000002G0W0W000G202014900080000Gk3kx100G4000H9zR0c00000G2G222
+000G0020104840001001201G2410800X6Y002m3e6Kwl1judmn@6020001004002W@@DObF3
+6zF1010004G0wqD180000W40Q@t0WWA0LwinoP6aoh4W82W_YF1004100a00000G20G00200
+8010W82095O00G0WoxJ01002G01080a02HX2GnG10Y0000X00GH0G14H0FBb043400410090
+04X0C03HW0H02CX000000uM000gc1ZaWDW80G000040X004C20WW00O0CWI000C0028C1A04
+00000GG08X0m4O00XK014e008GWXJ6L2000C808OW00400b1SJI3000WWGS06WH000H0020W
+2A4HCe1AG8480Y0048009G0400010W002G0X2W04O0000sZj8tehG3W088s4O2Y00GH40o00
+4q161080Y0H210H00020W8WG0H000o480G13G0W0dSP01W4WUuCeyV30800Sqc1000e85C52
+1000K00008000050001000K0W0Y00800LJ@901000K0GIcW60AQ0OYeG00000G02WKG0W40B
+WgqC08I150o0e3FCOdt40b000008G0W00044WNRP00010004Y@@J0K00200900050240001K
+00000Ga00GeO60A02000G0e00W0GJ00A0LahC4Au60008002Wigb100000G2204040G40Jyl
+6y@V2010ea048C_K2jtQ000K008000W0000H04oh10K00C03AmC1q00161n00GW0G020000W
+I4GW5m100124HK4H20000001112000800e000Wii858PbQ301048O0G0A0202W8G7e1WCG3n
+_@t000GO00000w0C0Z0D06W3meW9K4S2W00Wspm01G20h8R00W0000W9000280H4000804W8
+0W0W001e0000001G004H0Oi760u70y@@60W8000HI800WGG4410000a0040G02W000W400G0
+00W080W@@D0a40HXm608W2G145m8tCSUh1pto000WU2W000V4O10000qG0eyu401009481Of
+O3YCs0WW100WeG000mWQ00u@@GK208006ec0400050W@@D00m60100Oj002@@R0000900008
+J0000HZ000L100Y840000K50pbn001000e20_@By00W0YPcZ0Ug610@B2cPcgCpC0y@V0u@8
+O6pH08LZmCc51W_JrgK5pC3egg24ND0000000lnbtzm@@LG010K7Z0eN@3000mxW2000G0@J
+000000kgA00800Oc0uVCW0ym0WP600lyF000000Y000410100G408u1Q304000W000G501@C
+030K06000C020C140OI10Ga2m0G1W18A03GI18112O0f0O0C0DGO000O20006Q0ixS2DeB10
+1000402000P000I000Cp10000eY85000C030006000t08YG30Xi2020A8GE3wZEXh@IG10g2
+0000008YG0WC00000Xh60WND00H4m4uC00FYWh680tK0WkQ0058W0A30400410002W1OD000
+c1000saKJu@VC0m@p3000000C00ND00000kQr00004uNG1qF@0m@@90@C000xCFy1eRT00Wr
+tkn@@dyWT27PR00WzwrnP8Ck44000qBF6W000YA7ZYmDOunDQYrWbiz0W02m@@F0UB1OKS6E
+otWPnPOPy4wCsWe7Ju@@400440800ODFIY2tW5_zeFP3_@d1000aXFLHXn9SkE90010B0dXg
+_iPZyD00mh10G0eCT6YdFXoqJOWU32VtWUID0GW0G0VFyHl1HbR00X0ekgDu@@40003q8z6L
+wbmjy9Sc_3WP40_@F1H008@pR0G0GWyvD040000e1W_ED8pz7sTr00I01005000W00004veQ
+30100SGl12000_qoW9kCOxp46gt000GW7fR0G20WbNC00001080000800W420G10yIX14000
+000Wu928000WW28aWdkC0142100W0020W8i0A8004000400K800G00081nAW2GG061W2I1G8
+0I009880IG0GY20840H8WGf000G5G0200804010000402600we_4ggt0OG00JuR00a0WDrDe
+3C3000GSGO20040MEt0O420600WA_o0000000c71G0000260I10mSc680W80081420A820G0
+G8200G00B00W010014GA080H08200420KW80010003080080170W0H040G000X0H04msn9ae
+V29zRGKuLqqL24000oyWXIxb08Z7m@@90700As_400010500OQF3400000001W20400002W2
+WNmR0A0800m8G00020I0I05000A00H8v90200OXVFEqdXrOJ0400001X00140Le@0000KN10
+0j_dmFz6000080Q3_id100G400280000000efGi482W0qzl10080MotWYUt8zpDs@t000aWD
+_R0080Wp@P001Iyca90800000WnXt6KlQ2000WsutWg_DW8020000H002H08W8s@t000f8Ty
+Rmd464Rz6pcNHp_94yl100WG00G0UA@3W120cdEXJgV0100045000W00bqR0080048200828
+0000W00W9sT3war008102000W00G8000gVJRW1024Al1ZJoGScF0000Pvw4wUoW_wD86A382
+000Y00OC@700E0aLj19jR0000XzxJuSzGotd10600000W4W00200G0GX0000WWdzC8e@400K
+S30GWukV301000100QlQ38CY00001uuU3009004H008H0001a08Y000480414002000GW821
+40mCED0418080408C00Wf002Vu4080GHMa0024080G002q080XX2O03eDl70GI0C@l1040G0
+80m0W01eGV3000G800241aW008180W8000410G808WG00W8Ia8Y0018AGeXe0t4r0YW19Ga2
+00800e00X04G008W2W_gDuWiJoksW1vC00G1400GYcnV0000go10W4MJ8Rk40080yIw3400e
+_tb1I15GW028EvbXzmDuvuDg7fYSxCG2000002W6sD0011Lpm6a@V2006usw@XJyC8vR6gc8
+XyxD0004208240GOY040000I0azF34W80k@tWcOCu4lG000WddE3000100G000H0080000D0
+WW_J0Sl1mqtFaGE3ZAamlh90040100G2828001004G800004UzF3PeNHIAUikY1lspGB@F00
+00lJ63ctbXTLUe2K6Axc100W0W00W1000000O0000A00GwjXJuizAgs@10Ga01WpGpz60M00
+00W7I7pF008SfSv7W0000eG0OHS900a0020Ozq@40R4000GRPxV6_dqWy0OelUF00WPSCD30
+400EEt00_82jy@0W16Whsb8kW4002000Wc100y@u_9000W0E000041aInD000000pFllyDGL
+L0mac9KID90G610000yvg1HUd0cA00CL06000C_Bc1C000LXRmNx6axc1zXdW00001010RqR
+00O400080OYf2W0020300GK000J10WwuC0W10108030002000c2ImWqiLH000000O030mT_7
+0000WP000L9jz700GNLwz300OW180dKvc1HYQmZ@600k00Ak0e98YBu10KmM00000VzYf1W0
+000mK080008WR3EbtWKmFP@xJ05SWasx30G01g3@XDZyuny4MtEX9pPOFxGEENYjkV0000iY
+00WCpR9Z_4gVtWAqbesC3IZbXK5_10WBIeuOauV5NPRmn2LCRr9la4ocyI02n0uoyS_jAXd@
+VG08000000020WJr7oKVF4rE3Nrd0000IQ10079RmVx9SSl1W0K0G00HCwF3DyRW000YMwDO
+Qz423t0000H9sRmC06yEU20G00o6pWMrJOU@7I@JYe_Ju2R300S0zCV2A002W4020220gRV3
+0010000BOxE300G08000W00002c00H0004020089400000441001W2K00G0210eX00008G00
+8080m8WozP0208G3_900048DT3gIDXqDaOhV3cntWGWC0m10mS@600GGW00K802041080800
+04040B0100o30mA@60304000C000012W0800W000009600O_V300G2000Wm004aX000m800@
+@dGs3aaiz9s000YJ8X5yb86@70008102W8KV3408000Wm00W004220G000NzRGwQgCwlA00g
+0ZYrW@eP0004mqz6qrh1nLd00G0mTkD0Y00mv_6084000000048YRaD0W000482Wj7v1GW00
+WG00W000lvpW0m500W000K0000G0G0408lV300800201Aig782840aG0000020GKWGtC0002
+010412W2WZwbmuQsi@u3Nj_00004Y302Nny0000GY0008W0040004hj15yd00W0XnkP01000
+4W000G001SfoPAp00m1zip7s@t0W000xHcmy@900C40002IVdF00020080meC5jtl10520MA
+z1Wx20040C_xFXMzD08H00008qkJC8Me4m0m4YnW50222upJ6yzl1G0140e010W80W400W80
+0eRACeVKUW8000102iAM600003i08020084W0101G020006Cn0Y8AGO40WC2G0CvK20000H0
+0WW08e0010W9010120024004OWaW28GGW0M400091200vtPGvH810108@U300Wty@l100A05
+000W0e4u4@4EexXVoD0000rPFC00G1004aG0T9iGJ2Hko3800WCqD0800mX@600M1OwS3001
+8W80040W0Gl36iri400B0Q@tW7dPG000GPoCiIHHhod02Y0WqUDGa00000W001201_R0120W
+rzJGW00mXf9000000e0mn@602m0eb@4UXp00G8WFvRmVO6yuYJ00Eeo@t0m000W0080048qN
+Y70828RWW180I22G0000000001AO6d0100G00A8TE30rmW01040GX0mQ@600o40010bH0040
+W02lC@0O1020GU81oZ140000090000Ilm9A000e6200_@t0Rc10v6d000yHl000C00000HCL
+vl1000v00000m@goT00W@@6W_yJG150000Wv_oGA0E6C000008000Y000WStpuC0188Y1G00
+4010001000n0000200060800W4vO0Z100cAWhFLO0000e000G0W1n8010U1J800G004HCI@N
+2mrR_00000eW2eV00mkx0GevCu@l0000ylx10Wk@DGL008H0G02Krz_hex0G4W2G00000410
+@Z80_@AYn00yz40WBe0OXj7AxkYSIz8wx74000000WNG00m8MIqng4lyR00G0WAjzugT3cY_
+XozDePS6s5dXQi310mrt@@CCWi1joXnfw6KQk4LLdmNj9S2_3ryRGHr9CVk47tv1Gj2WeYSQ
+eCFM98aGSVeKR34500yHC3ZhpmGwC001000W00080WomDuQ2C2sDXivJ8QJ60800yfY1dxcm
+Rwa008xkd_70040CVA3rZpGSlICJ53jnpmXv6000101000050W7@J000Wo_y6qqU2W000sot
+000W2FZR000408000ZFPm@@60Q91eKV30G0009028GV3Yar0G10020000W0020000G28GVxC
+0080G00000W180000W02W00G00240eFv4o_9101G00Y0G2hF100800W31kBsW6@DuwV3Q@t0
+0K04@pd000GW1uJ0000YZ00WGuD000010400000m004802G0100WfEl4000G8W108nU9Ujp0
+W0W0pAR0001W3ftOuU3AWC44008PP@0003vZ_JOif4Iz@XqxJObO3U6tWUdCOSV3080GKwG2
+ZPGI1@Xyfx3WU70_@t000681Sq2004WXnO0000s4tmKnf7VMR0010000GGrYpmQy60200gbp
+D0040200040242001Y8TP00200200WQ4n8aKU00i@Msx3Z@dmTeUywj4rH5re_60G000G70m
+ltI0400uuzGoXxXTLDe1NCYTj50040W0200400Klf1000W0A00y7l1W14001G010010G0020
+0W00401BiM1001300040212140WKfV2fwR0WW00a000zr9qNBF00eNB@J9_rdXhtn0001Gxu
+CG2000p0Ke008Wnrt0048GBIXS9U200I005K0q6k1WU60Ivt0G10004028WK0Sfr9PnB100G
+W0Sz0WW0GRyaSOV200WGoXt0X200rHR0000200880X0H4000SGdD95u1880W@z910HG00002
+00010200010400W000GwqvR6000CPLU30104CNi79jR0004YYjPuiU3675f1pV00t2manLS@
+j1zVNnyy60801e1y4MZt000HGz@ZHnR6CXC90080gQC1m20000mG000mQBG0e8S6mT00000T
+OIxDUYbXFKZ2000000yb_1VeEf40007A300G100001000_o@L_RGcP9CxF30070Y_l2@1000
+u@k0ul0y@F64P00_oX408Y00W820104yuc182000Z_0000000CH00CpW8mD8CE30G00qd66f
+QOG2v6SV@3m000Mmj8Pg20082000W0000t10000_100000WE000SO604VHB4100UgqWxxJ00
+00S9@60001SvwG6zL500H9pzN1190WEWs8PqGoy@XZpn8V@727tWSob0Sv0GbjjCgU5RAPGK
+x9000GAAT3cEOZppb8pRC0000BO00O15CUUOZ2c4wtQCsvN200QnL7eIa2UaUL2PidmJy6q3
+F3XXnmY_9iXg108W0000W4Kj100084000LrV20180szs00004W00010101W01uR83e080800
+001010000WOSDugU3Y8r0404000100W20042010W00G010010Irsn0020WMpP00G00000XCB
+C000W0090WMyD00008020Wd@DOBk400200WG0OmV3000WmN00uAV3G1W00m0000WGGbF6G10
+08pV300W0HW29K80000800G04880m0Mvt054G404300W40GG00002100W0040ICe109_@F12
+0W0jlbGv_9G0H00000018081K00HyR00014200081W0W0000400e103GO00W600O@V300qul
+ak10004014WGG0400108A00G00110O0G002000001806WI2Y6W000G0GW0001042G1000004
+W448K88100048i000014W02G010nG300888g1hYUx9fk_4MRFXIyD0m61m@@604G0QQO3_zt
+WfxJO8T3YttWAXC8cU3gmt00mG0z7OGE_60WH1eYNC_LFXpqC0W00WW20bKzV8vvA000GHO0
+0uFI94000KsD373mmH@F00YWuoU30003yHf4@tnG7y6Cll100900000z2U28000000HyGD60
+8sGNzjY_xP00HAGu@9ivz3BhR028G0W000W0W8IE1ZV_D08W0G176apk10100000W11WHepo
+G07e0S@V21ldGyz9Sni1h_RGxx9CeF3tRb00401000GXsnml@C04W0200080010030000010
+40000090001Gm_9aA@60008u5004B_60104sUFXIqb00WG0020eOuD0A02000GGW00Y5qN10
+04G004mW0080108000G0W004000L1G0GW00G000XG000104G002WWL_h000NsBxCW0080008
+00080000280W010041008600040e2mOvDeyr780W00288W0208Y8WG0W0X003214X0q@l400
+WH0201020000X008W0080202108840m040G1H8IK0m9KNA6WlI02n6Z5sDG0000YH4W4_J8Z
+T60000I0260G0080202040L848010GG40Q5aY00000100f000G200a2gK0Cu@V3850002018
+lQ6cLkYFnhW8000GW2000K0XoRmRc9CqF3dBO0000A000azjkndx604400800WGq40W000Ab
+GW008WCsY100Waa10004018@PC00yn7_A602010000W0GWwH86wZtWueI0800moz6K0i1JHO
+mXwL04000O010G0004W400000005G100010804040WGx21uS0GX@ICKl100X100000W11uQO
+Co7m0A0GWG8030034qlx600W00G02CFh10200IV910304XaR050000W20HwaGI1FG500efEF
+oeq31000000AmG8000O000W0mSyCy@V2000wT0000mN0u@V300i50000LBq70000Sl000XIO
+0Y00WUXn00WFHS@I000OZ0400061WEmJ000WG0TLWCH88A03QXt3000Wo0005O00y@V200GL
+00WhA00VtR0ylV00G0KrCrIlHuZ6qwx60G00000thU0tyQ59000@30000W@@d@000@@tFudV
+0yJ40UAd1@@@000mE60WTC03cG060G04000H100i500uc10mu2WX01G500eDBC28r0n200dl
+zmqS6O00840G00022WmtO8WE98o00We2W0W1W1020ZOus0WRA00ND00W821vPWh6005y7WEC
+00UEmWQ_z00m7oT@O00m030000W0uF0000_@V0z700iyF601080m@LL1S2ZWOm8t60100wfc
+DoNy40g80VOBHjeCqiu3zgNnru6y4k1002G00000G00Puy727t010G0GW00kqdXJgVeqz4gH
+F1000Ko2W0YA6ZXqhOuL9cnr000040820ZN@XTpV0004GfCCiGy9004xYdNeEuPOfV3EDAX9
+uJ0080GDA9S8y3PnpGGw9KCF30YM0c06ZjuPO9y4QjCXovb0404uly60e00ep@40W08G0000
+4W000020200W2000W008002000001028YYoDe9_40400KaT20G10008008002000ZU120100
+0004W0e0001K0vzV3GG000a020014000WgDRIeuU304000040faR30G0800W00G01200G00W
+0001008008DZl1hhQ0C00Wh4C0102800000482W010m00102801W00082001011200040110
+W0G200K04G00WW020W00IBt00WW0080000qGK8k10e02_pt000H800G0410080C000140010
+YU@D025K00Af00WG02i010aGOWW03208G0421004020e0244400184GXX0W80000G20dsRmC
+U900W3100120800WC0080W20W0Y04800W04041001WW00801W010001000b801G0G4G00000
+G88030000PuE30NWWW040W0002IGGWttD08K00G4O400Y2O104KW00jtl1000I0m00W610W0
+a8420011G20020G8000W200X0Y02I0GG20m0094L8X0YieG208000W00azW1XoR000GG0040
+20W0YHt000Y00G0Wgct000W0TeR0100WT@P0A002000Ii000h@R001001440t@@000Ge__D0
+00m000011000000440Wm0W0805000468WazDu1b4sj@X5QP8_U3kkoW@@D0800IDZC0001eN
+F30001024GehV30100008R8_O6G000080Ga000200A0041WW8000101204G8QU32Mt000002
+01040402000300X10040008a00O1W006X0408aE3Ep@1W00800P0AhpW5mD0m02ovmFiTl1L
+@Rmho60600W01040000XQE0@Qpm_f60W00W009000004G10dzR001G00G20000G408W1081W
+0000088001W00001000X801400W02800Wy4VOx@44020Cul1FxPG_xCKld1BFQ00G0W@LD0G
+10008010400W000000maIf10000005000G0u2n40020W1000400040800W0X0001000GS2X1
+0080wEn00W8W0G4W6GCXW_DOcT9sbt0X000@TA1800eO_D04000Y000000180W0_@t04W0X0
+0G400n000Ouk5V640024xW1j@R0400WyLCW0000040ei6COBV34G4000100800101G408802
+404W020000G0W80mx@6avg1hxR00210003508G800W08401uB13Qyo0002W8540000W00082
+eG8028004GW04W858W0LW022GWK8YG0000MD09qd0010A04120W80108100G600H180q0G04
+2002W140W10000c40015W000024K045G0K40HQG00008G206GX4Y00K00410W822yVT66jt0
+G02W0W30W000080048G080W0G008KzyRG9@90G80440800000080C0000W1W0000YI4W0W0G
+K2000m2500knt00W400O0084C082H0m004X000344030AWOG805W00W100e8P000G04401A1
+0130GG0051004086Aqm44eXW1Ge0meW2h0614e01Gc@@P00G15082000W0800GO000aAl1a2
+A0a00000e0G200mkz600HW2K0e80020I1G02010Yct000bK00Y0a20000OVPUN3020000500
+0G1Gl76ail1W2000100Kph1IG000G20840W2200W400AI50201m0000G200J8lN3a0K00081
+8LU9a00000G08BG3000080001000vDrCKVl10020000W004GuaV3000410G2GYW020000GBD
+0Zw@0810600G0000G00H04Tl1TZP0G4200G0000WY00K00000116A08G0WSzP000GnC@CG40
+0uCU3G000rol10W0GkptWL5I000140G1001GWlHQm4_60CW0W013000401G808W0W100Wf20
+WuhT60040yhl1l_d0G101G00100010180SQg16W004G1400200800000n004O0V1cmm_R8W0
+00W2000W000400hxpG0zC000W0024mri6W02G0G0081000007hVPMHR_6007000000YW0Wf@
+DG10400X021020@@R002g000000IW4E5r018005tPmatC00OH0000gG8IWa6DeGV30R1G00G
+R1a000G05WSmJ08000W3XQ2GG88100001e000000qB1000KZ000WX88Nbd1002A000W4288i
+7l10G01kvt000K8830000GZaqk1000w90010yH018000W01W2yD00e00100Wk1n000kPO@C0
+GL00W@@p@@6000C30000L@70LD000000000NvmC_G40CZ70yZnPCGo00mr@C000_t00_@cp9
+0W16GL0eA0Uw90K10B3O000C2G000_u30yH400WV00800exlwV40WxS5W@yF0tv600u@V300
+0CX0008zx40We30003064J0C0m08000m000O700Wu20000W1Y8000K02000C000C1000t100
+W0uoS701020300GK0002100GK400W84000PqRW200Wi0C0002008C080O0Y2W22Vp0C1004L
+00mK1OmU3m850300043000K000i2m0mOuC8L03_@t00a100001IIt0R20WUz50q@V0Or0_tV
+800004000uZ@@R000unyoD0W0000H4W@@D00@@60004@z5Wkf0000000GU10Wg0mDzCu@N00
+0m3elL000W7u000W000@xE0K400g700KLF0WO000L9oFF00000WypF000O0_xV04000y@lv@
+x2myp1ev02WmmOugtJM4t3000iT4cGsuaqK_3DxdGVvFW080eQy4082Gy@l10480M2NYkVJO
+nz40W00iul10400Myt000N0r@pGrO6KEE3l@RGf_60G080500musXaSL2DyJIoiRyvV200R0
+gocXplzOGR6kGdXJqV0000p@@900G4evU300G0UVB6BoR0W000004000W0kUtWYpJ0000DR1
+0WinnufT36QnW7oDG0G0mrTXSAd1W00W800201G00020oil6G0b020W0K8i90X020CGX2400
+0410400280040H0100eG4G4N60103000008003000000Cn0GG00W02GG00W0000042200X00
+18082000040mAC6000004L00120000K40W8W400108080G0001044101801WW410002X02Z0
+1080100GK0080008002000G100uDW649f10H40408e20K0020Wb9G001Y0008000IW0W0E0G
+440002X0000280nYXG0qW2012300128Wmw0C0O6210O808002W800100800eWIW020289GC0
+01040000WC090WGG041820280OX01X0G20O10021W0304gWWcvC00018WY000G040021000I
+G01201000GW00W002484W000204X001080001Ou0010U800002000AW00Ga1058Y0040G04e
+A021100a400004613L5880BG00WI80G000H9249000004o700K0110XH011100080001p821
+YWWHH34Lk10Q0E000420PK5121006100A0o01K040501804m82G11002W000m8K090Wa8410
+1010202QaErIW040GT_6Cul14O0000G0020440000f028140000m04004180000G080008A8
+00fgP00G841W0008W0_@t000Gd0250_ut0W00008e0BpEXo@Je3V30m0010O60040W100001
+WW0100400W80400G00IX@68A00wpC9Qtt00WG8bLc0802WphD8@_44940aLe10204_tt0G20
+80000W14Wqdl1WS400G01SCe10G04QuN20880lzR000W00GI004GW0280KgV200G4_yrWNxC
+G080GUvCSwl10400029a88000002mQz90GG04008290Ga@@JOL@4088008000000a000YlzC
+WM000002WN0C0A000008WwGO00000008YQyD00W8a000aYfD08880G0000O8441800I41ahj
+1LwRmDy9K4V280C0100G0000xX_40W40G0002400ms@6W0Y000G00Y200020442G00000W20
+W0P0G8000G800000yLW0W0HY080Z00m6_60084u5@4YQY1000aG0000G2000028I@4080880
+0204021021Xd@D0H40mfuC0200uck40G008u0900H4e018WLHCet_7000W00W0IY00008000
+G1000W4480G88000il2p7z605018ug4o3l2030GBlO000432100XqR0G00012024100gQEX7
+wJOeV3000W0W002eiI1W10G4H0W0K8P0i4I00Xa244200040X084W000010810G64004804H
+00240040W024024a85X29bGW18000qIO490X6128GWAa13000K4uk1N_pW01W8000L0540e8
+6GX801G14220020G0200aYg0a202f2Y1W0K2048020008084_@t0G01GdnO0000200e00041
+0W0022H40408000O002G800G41G40004000n0W00401200Y100010WWYX1WKG8WI0G2K0G82
+0018W0000e32W8X0W00354W080WH801400000W20mQ@9000820Y0mjr6eGb0X85W10G16X40
+420504000050g0m2H8e40040u40020G0Y08G0X20G0000W8G110G40005K082000820000G8
+00WKG0081802GA2002042e80002000G08400420f4040a000GAG0400WGG8500GnW0WKG100
+92000000JDfG100002QWK000DY0WcjJ8o_4s7F1I1GO018082K0alV2020fGXYA0Y44XK000
+0W4WZkD0X000H100000045W200H0000030085GW00000K0041000Q00G010XOOd@904W8Z20
+00G0H00000W24001002010H80016004000100I0000W23G200o21W044410G0300gkM20020
+00IY010WW122050000000H62HFqb080000058000da00000K21000W18802G1K054X000013
+88010G404100020W0L0G0806ul100GS0400G40m01420G000020W5jOW50040010084KY_t0
+0001808000CDJ00100GG0024WdmDeaV9000W00400A100Km0800H4@GPGv_6G08C142G40WI
+200030000X100002G00G2020022014001WoQpWIOC0X00e0GG8000a9LBHhx60W0G0010mJr
+CKQY10TP0_@pWTmD0e00000QWRtb02000K00GW80220G0000fK8V200G0820OH0408Py400i
+00H00K8000410G0100W51014YXWi10000yIF@6000es1G00GT0I5000Ga10Apn02Gs1080We
+2z30000sB0000G121000Wj0000Oj000WHvqV0200Ol0W07@dW002aaxVG90a0WQXU000A0V4
+00002CkV20W_3G0Cax5000080W0000G20400K0_@t000mcVQb000O00g200SJ1SbA0uZ80mD
+50eRA0G7000hC@000yH00u1000ae10RI0c1q0p150Vu50A8000iQ10W1A00@t30000kx00SJ
+10u@wgyN2p30WwW10z@F0080w200yX8600000000mpL0000802G0t000_@F00000u@@00009
+HY9GY4J0c8k09141u2e4b4G8YO00Wi200ZA03sRWA0G0C000O000a500G420GK3WW86030S0
+4000C000W300ip00OS1m0u2e206axj1y30007g000J700kT0g0CWmtI0m00Gt@90W20000e3
+00mQ00WnA00YLWA020C0G080GYu600pF00sR0COYWK0C0400000GG7UWWEyW@bP6@300Um32
+gAL1yF00u@_1m7X00hA000G000001000kA00Sr00WSo10000erZ00000V41WU400jf00QJ10
+WW2000G0000u@k104000GOz700O0000HW1g0mV_100IvV30080000m0OkfG@@10000el@700
+02W0000z82005G_G40yXF00WFgFfI_DQ5N200A9flXHtyCavc4PXv10W0110G00C0400210W
+00040400I0WlsP00200WG00010093RG3uFSFi17jQ00000Wq50R4Rm8uF0004OE@4o@FXj_C
+eTf4AjJ22800Vxp0400WUmJOTS9Q@lYFUDe0T380004Nk1A3W0IHtW@yVOTR9gWFX7cCemxA
+k_t0000W4800Izr000G000G04005itF30004_orW7tDurV6cEN2000tLSMnw@C0000iE_4Eg
+tW_rV8Zz7G00802KW20W0000210GG00G10s9F12G1G00004005000XODL30G00WAW0e1T3G0
+00I00200X0W00024F102S04H1m420000K81GXM6880m200045000Q98040841004Syj1200Q
+004A800W00G0103g0A2OG4000W0020880W004A505901A504X008G1000W0K0400008G0WYb
+rRW0008440K0W0005410h000G200011015CM00A0G0WG8802e7I3K2043980050AaG1000Z4
+W0W0KG0000G004008004W0000au0800q4818eG1G1G04A0G400080080060X8We0148X8A29
+200000GW0GW0XW10G001002084H000WWGKG0a064WW0002400004400002CW00000W002020
+G04m000400H40W8W1O0G0003G0W6200W2I010104YO80WC048W0YA0G00G00000Kr0We040W
+W0eqW2000Ku04GWW4002W060W0086463200002A182GG8A04Eo08M3G0aCK000451WG0f403
+aWu4W00Y85o100400D260WO004WGeW0600a00W200040C2Y04X0F052005000G0402000030
+HO0020108080q400@_R0040WS3DORV300CW0000m80W0000msmD001002000080G004000G0
+ckX120108e200n128_U30CG0ivU2jrRW900WC@DeFM3002aK@l10CW1008I0G82W410040G0
+2W004080C0WX00Q844041002XW@J080202000W0G0000010WGKBj14100lst00W1008I00G4
+0A000eaV3000G008100G000m000A00lyd0G02Wf5C01W00804020W00001000W10G04He000
+0024110Y0400800SWV2vFd0004mLjD0090q8q9G00418e0my@94Gh10800gCY1441Y0W8064
+sWarDW008200GmH3COxV601G42000000I440000CLPRBO01W08W0220A08Uks000400G0WW0
+000HA0ewV3Y6tW7aDeoX401016Sl1W01W0080002X00200820WAyDuK7300005yc10000510
+W0028uYu42PtWPPUG00000X0W1uP0ON000100800200Y018084Ti12HG040290C1000GWudL
+6C4S2G208ASEXZCD012W00O0WzkD0W008a003W0007MdGH164SE3tXPGay9q9V20008080G_
+dc10200000G4rl1000mHW0300200W008200W14C01000081WyLCG000W408esiJ0000K0_9K
+Rk10W000004iMF300G8025120W4200140020WG400X0Gs_q00n400H00C0048200G4050402
+0004400m002000e1004W0004542C088400tst002e8000000GsX0Ie0G2GW0a0080G8010G0
+K0L0GiA008300f0L02WWeA610W800020004000K1000Y00481Upt0W0008W210O80001Y080
+020A04001G0W604I8000000Y00W800WfJC0K00024104101W8220K0G1mW0fr3300G10W000
+8G008W0200000029W00G08000GW02W0K0mGY000W2010002DHI00e00WX80nCKaH02LC100A
+WK20Wm80KS419G800e08G01qZl1huR02X000409G20OcVn0001H8W0I0W80O0202m082I008
+8850000W00H2100aGa005f02YTOD8jR300H0000W2WY0W000gr_DOUR38bK4020000IH14K0
+3082K00088200GA80G0000000KZA00000100828100GGY80e01404K2aY000049G4f200Q01
+0W2ghLC008200000G510W40005K00G0000I11p000WG4KB6Q0f0011000G040004410O8208
+Y0Y0040ae080G0cxT300I80W8G02092A00OXI3G4000W410H0022411020000gJ12000060W
+HW0000W4G120G80Y030W00eI00G10Gm2001400000O802KZi1W200060XaRi1ZmP0HGGA000
+00841000W041G0208002001020G4500W1WF_l1430000000b01G012GtU600810W80mUT60G
+084G1A0000008c0000000G49GG0m004OYu906410003GzM90400G20018302a00003e0W30G
+m0WWG0G00Y80030W4002K1G8o0000Z10A002W0080800Da108014G00WY0W02000G03f_R01
+0GWqvJ0A00mx@900G28bt7UArWYaJW20G0002eikCe@V3000mHI00G441GFc60W00CYy40G0
+2i_l17GP02K40W0108WW00000004020002W010Gc00000148A080000I00mqw6W_208tD300
+01000e7004GQt60eG0OhU300aG000GitF3YAF1qV0000qMGl0486I7fzV3000KJ4000W2000
+WU84D004007Mvt0000a2000WA3qx0200wj000G40040000M008G0A4O10Y01OAT90MG04G06
+2w5WH0Wu8zBR000WQ20000L000uVe0GL000h6mIP6000000@2e_x304xs@g2FLzF0mVzj1Lm
+PGUz6KOl104H061m00S00_82p0000YPu1GL000Wzv708W00Gq0yNTeug1u20m3WV000041Wm
+7100O0H000_tDk10000020ex_20000WF2Xl00002C00000y@@0ul2snt0ta30kf03yV@0200
+0aB0003100sR0LSg0C000g4jj100004004h088I1O000e2WyjD00CH000808ms1W0032@s0s
+100C@00GK1SnE3m001WHy_6000WGQ000P50026068k0L0G0O000K1008800WD70WzC03YH06
+0e0c0I2P1a49689IS1Iau2m5n48BWA0J0bOA06my3G4n5m5@C8B0506P_RW60SL10000uL4R
+SDXq@J00RA000mDND0WqNV0GS40IG10000yX030WOnJ8eT3800RUTT2000000Wd200n72000
+00OBPix4gw@F0eg@30yA001K000K0tegA0u4Lym32wX74agL9e3FGG7UGL_3WgKL6pO61Vm3
+2cfg4yF00egKfA4W2pC3WVUujvGsyd10808NYV2GR7WNmhu8R9s9FXVvUOsV3owbXczP8yV6
+kjtWqtIeZV3ARZX9gP8zx4000Gcb9300W0w1WXNlh8sSCc4lYUnh8ISIcwd100qShw9nhSIK
+P_3XG_G7@6iTU2HbN100WWeQCehS66KtW7rJOrT62UoW@@D0Of1mmyF4Wi4Lfx1W80WZwP08
+10mfl9000000HWmwR6030000G0GIS64Hk1010010058000W001000W84W0G6020YVt004W0u
+008G00082080000gj0020X0Y00Y90WG10q0W01140WG002000080WUFsWvxJ0000102YWabD
+0K0800040240WY0G1C00C0002a0004180010W0j6R086GA0W040W00084800800100802G20
+C147bP044010000K00084000540G9G0m@y680aW01G00f4A0X00W0W00eG480000000V8c24
+80002600a_Zo0W0G802020G040002G5H4000SYtlC000KY000009J0YA210000020n2418m7
+_602W0G800Kdw6080G02221G004C0200080000m80100GW408Y204W2W2O40Uqt0100000a1
+0108IW0W002K3000020I00Y121X080402LW2G11Y10G8G10OG0800002UrWKm4001e228e86
+0060X0H00Q0403000280WGm04O000q0GKql10801080OG214bG1000W04280K8O00410G005
+01700X8440W001WO08giF1820100W0_OmWv@D0008o2S60020eAV3000100140000qP464II
+20010G001Kva1000u0A000002010Wn0P6aSl1z@R0001aBgJ08000900000KGW0000010040
+02K000020012017OyGQs6yBl1PvRGd@6iNo300G08Z800001Az_400O0020G0Ce0018000W8
+c00008008Ksl1jyR08C00W000GX000008280009a000000820WfLd004140820W00W00000H
+0W04400001WYrD0W22m9e9Sml1xKQ00W000108@LR00100000A0G44QytW_pDuiC340a0Ga0
+3PhE380G0010004008100bpBC0000WGo586CWG0W400244CEe1jz_000020024000W0G2000
+000H00IUD6800WOK13G0100000GW01mww9WYG0unT3seE100010W00sOt04000l@Q0m00WMF
+PW024G7u6008004000040WiIC0000XOW0WhaD04008000ZHOO8YU3W8000004uzz4000H000
+G103200000008W4G00UDz1010000300820Kzf10010QFzXjvDOvv4a8Y1K_a1diRGYd902G0
+020W8001000Rs0080180G02W000XW10000Gc90npR0020We@Des56E7W1C0800W10ANtWlxD
+00400000AW08602GG0H4000e00G008400800W0W0006GoWVyD0000100G6Y0Y000g8C1G2WY
+00404G0A0483I0C600240W42100004G00K41G000WcR8GWWW2040YGWA08018J04CGa09800
+g0800030C000G400488G0080G00WH1W80W8004GK00HG6W2G0051408WGWA090W80000e100
+sft02400G0a04G410402G00000G0G081400a0M1t0860020G0100H03001m0000W040G00a0
+04G110000211G04a4041018008YGiE02b00CJG3SU8e01400DO4800Q4H800801H040X000A
+000040018Y400800W0C8000G41010000G410G8200201m8108W00W402024I1WeVWRGw@60A
+00000500a20G01G0GAe_Ns0G002010H8500088000G10408WtlJG0000000g5mD0KuY00010
+W8500080AgF100nha200009000e000G000a204001G00104000aG0uqV38W002001G20WGH_
+6aAW1W2G80010iMj10GA0ksb170000W9Y0200HK800800008220020WI0000KW0008Ge00mp
+iC000mQHr400K0001820085G000D00001006In0Wc78000000K410Y0WeX0GC8600G0uax44
+20W0440G600GFzF00b0OWV3G10004008Ut4008Gm042W0200K840600840WW0000108000GG
+2W0GarpD8yD30100W002400GOR_6000WaO2000242G59W0104_JrWzjDGm00Z0800I301010
+00041G081000WIs_6quM20200Aqt001MW0180_Zt00G010G0000W10880CtN6W00G080WirV
+3YCE10G0028W0UFcXcbP8yu7UbpWk@J00Wm90002052400G1000880K0e8V3Y0r0000GtpbG
+gz6001040G8q6@64jj1G0W4s@F10100000O50000mM0uGU380i50W083BaT0200emlDG0000
+81000W80m460cws0W000000O1001WDGWLD042IJ10200G@LR00001C0000sAw90000mH08@V
+3008H0W082BC1m8w6000K00008YY0000W3G040UlC1000i00000U8We0002Gi0mdpF00004A
+800y00WKft000mC0g2F08dSK500ew@0ug10mL3000_70eq70ChAL100g2U40000ylR001000
+WCw708W00wY8_Z8t1002WSa30p_6mLn4W@xB000084Gq_60Wl_xRV30uxn0000m@8000000@
+@102000z@F08A00400SZ208YYID000G800mK2G4mA8A0S06000C000Y3004T00O_1mW82W10
+001008BE3GK100W0m0m50H2u90008M10Gc3u2G0W104010Y5t000hn000R9004A0g0K0H1Ga
+u600n1002600000g8G0000183000200W8000010004028c080G18000m000m4000G10WyJpn
+000G40_vV0S0yWQLc10k0Wg@3000000yDWo@F0000@Rr0000k10004Kr30n00mL5000000mZ
+P000vW@V0el_0Gk8Itp0VuY1000y2sB1mfP100r00GX8u6erpD500o97WRom080cly00WRHC
+000000lQ00W600C7KM2@aTlDuAU3g_mWUn914000000Oo100H1Go5TRSK_3HZpGxu9W10000
+0WGCm9qHU2Rx_GLvCiaV200GRNkt00a00bhlHq@6KuI2P28nBv9aKG50005kShYmHUO_xA00
+000mV0uhTFUfXXVqVecz4247Zq@UO8J3I@t08040DnZnxUF00000T00mlJ6i9k4roBHzyI4A
+P25qp0010800000W0AgIsWvsDuyA300G0yci10W200000aei1xyR08000480000G80S00a4l
+1hzR00WQI0000W808040082WWW800Oo_60G034W00Oi@60G00ubS364tWIEDeYV6sgp00020
+hqQm_z6yYH2WWG0040K180000G010W001G40W00A0000X020Axy4m20002X04G004WW28008
+100082Ws0400002000Pk0zGk10A8C04000200010221W2YuwD00G1Kvr9000e00G0ur@902G
+100080004WLOC08G000000O180NlR0I00002WGa000100W0A0000u010000G128010IW0Wm0
+0K0000Ae00400004040000W42200I003808W001000Ec000GW0820000W0010G000uy52100
+400AG004p050824001202Y002eG020104G01OW0eaXC01000020WjUC0400mA160W000G040
+0W0G000W010G000Wy6j1Lrp00080001GFX8H@6FiOl1W0286qsWr@P008A_Kn60009u7B3Eo
+tWdBVm00000000G180DudG6_CKwV20WG0YFvap7XPLWggAGriLmOAbDUIMYLdDudX@hCjY85
+Q10001Y10WcB_l@F9YM5Zlkt04q3GW35zE09nzomR6j4sZ1hcyp0E9iZo@vmmsoH9qpy9000
+uT500KYHKVR9HC4FqVSB00A8sc_4000v2F8I1KGKe8jGH0U94H82C6GW78Wqfb51008C8qHq
+K0W0004O008uS0kWcXyjmeaQ6wkE4GX90bOV2mB000LW00oV004yL2800010002000400G80
+0W0000n@30Y80G000W008H8LXRGOu6GYG0u@V900KHWGa0eYxJ000WZJ008UQLA93ZOaC000
+006D1W0IKvByJ00mx7voUfcV2Wt2Wnda30LIu_h6Cl_9W400QnfkVFKvTL3kpQ900GE800S0
+000000mf303m10WaUn3000E0W80qlkAWU60szw@Sp_@sj31001aPf1Xleo_@60WF00000Wy3
+0Iv70a_000gghB0C3WU00000iI00G6K_00GBU4200GM10oLI1I0MT08fWqs3T32000hZp008
+0XsxJ0000AB10WkBJuILCMPEXlYEvFV3QEEXFXD8oiDYUdX3Pb0003KE_9KFl1BgdGW@646C
+3zmRGJGXaPQ5@cYHGiOKXD3Wy40kbjYntJG001mn@9e000evLCwHOZQiJObL3UY5ZIfsmF00
+GVy608Y0eeEasrtWCvD010WGDh9000G0005mDlLG8000401401805200402GC00WaYg10000
+004iW200000W090840A02000000DA4uV208010W0000828@U3022000W003W40Q00WWPPexS
+30G00000400GG0G000088800088W00300W010001W02098000244001W04004H0GIM600022
+I044A202G400082600G40e00G408Y0800102G0W00G10080000Ov900202010XW0488040X0
+20W0004002G5400We0018410GO00404e0W0040000G28000090W000G001Y8WJ0C000H5008
+04040200044100Y0W0800YG04000m020O00W81800GG8018W000X80020W08000H80000100
+02000G1X0W0W808WW0G00G0220Z028e880W00XY200c0102042C0W0000qQO00800G8050I8
+WE0KW0000me600000830000X00W4X4G8W00G2G410I010000GGW000uW0O0A001W18Y00800
+0001100Y1008G8W006000IG000kYmA_Qt0080080e02C@10Y0000G08004W100fpS3481000
+200002o9_600Onu2U303002000ukV3088067i17hRmDz90e0000W00002W8XP0000nNy9Kry
+3DzQ0001Wl1COQT3wMFXzvD00G810000G800000W8400010000GA100G0020300040010100
+00WZAG6n90028uA@40008I0050HG00482010G0bzR0WGWWCzDO5O3og6Z3@D00410002Whwy
+OzU30800000muXU3028YG0002G200n00WsXD000CgE08100000H400000shW144G0G0G0X00
+0080204244080001G10000jtl100G02wr000004080EelYRwP0208GKbayPl14400Eyt004W
+000G4Rkt0005g000W0X00qQz3001WgztW@yD000XG@@60WW0e86CIgk200W07PUY00008480
+01800002qel1N1R000000Di00003gYu100GW0020010GKRn3m00G0022i_l1VsRmcVL00021
+0000041000A00820_jsWFFh0800009600004800IG00S0004044Y1a30008088H10eW00H18
+01000AF20000X008000040GH40u4Q3G0fIG0H118m4101W2O000W008802W0W0Z00OW08000
+0020Y000010080WGOAy4QoEXkzJesP3G00G1200gKy4Y2GYYyD0010280Y6aW8A02008OeW0
+f0H4001241080000004g90JGO0eWWWG0mT26000Y08008002K88X480W083008W01G480A00
+80002100c04101M0Y1tDM1000e_mDW00400840G900W40200K0000W8ry705000G000H2400
+J0208bK08161100W400000001W4000G0a202kat0GREK0C1001800A01G00G4eW20G004L5P
+0000A000a000e050GcDZ1HoP00W4WFvUW000G2U90080004100004G120PEd000G40000W21
+0I2cXCqD08OH00040W0208I02Mwt00G480000092W0W0001000000Ak20000018000e408jd
+y40YG000810004oj46G0008fU3cgdX5aI8Es7006GK9V240000n020208G0040049000000H
+002qFXyQCGm04428000004A0Ze100W0G100X00mF760008G00100WH300H000W0002004080
+00A000W06000rWR0Y0000m020H08g1o000W29Np0m00Wz2CO_U6g_F10K00t@R0800G000m0
+0400m80aZF601000WW0A04GG02Ynqy6SxF3WnP00050808XW004JNp6y5Y10W000004Y000u
+vU30G084nD302044008yMl17VOGH@9008B00W0260GWLxD0PY0W00AaK0C8PV6000Gg0000e
+C00100400004W@30m0ex50A000X0600000440000WI1080WO1000lpW50040v2100Itt0m20
+020iGGc00004610000G200000i00000M8W000000n0m@49G000iKA3m0004yF6q3000Wg@30
+e10000000yZ7@hW800000ulh@D000w2300G80WBCu@hW0000m@_2002000Tv@@J00@Kp@@60
+00A000Y10Qf5t0009b@0051Wq@V000kBL00W@@P000J004P080o0W0W2010003000n00GA06
+SUE3000cG00YO04id1G0W3m000a500mS000W100P506040C0mWy0CWy000er700m800Wf2m4
+m403088aA3GC00GM100X1W1W98hK0C000mqL86e04840O0GXtC00P48uMCUGp000uZPiN105
+K000000830Qzt0000WEe000020eAyk1000l@10000mL6000000m2S00aB600050000mV_210
+000F000VCT13000g000001r130lQ00OmE0GC000AeON00I150mLigaFq67ANH6QI00OReATI
+IflYnzD8AwAE@nWcsCOy9301G0igF30G00xcB11000bxR0100X21O0204GM@608Y3ukV96St
+00W82RzRmd_9KGY1F_d00W0G008G00100801K@V2RlOm_xISCD6T_p0W00WcYa0000Xs10WU
+ltukQCMjc44000fVOW0G1W__Uua83YrZ11000FEb0400000010W00kxs000E@9URG6nFW000
+0008m3u6001Wuxx4snd1000W020W080200W0O2y400W0800WuqB30208800G010e000400W0
+0hYRGVq6800WG000AG0001400K105wGsWHaDObB3KW0m0100200029000Gu700200GG90002
+000200080040080WW0001000080WA04004000G020005008SvV2020We000SjS2j9P0G000b
+4000000H020YA09eQA3440202004YmG080G0K0b4A00W40400Y80G0000400WDqD0G010000
+AXG0HldR0282WXxD0I1K0010G000Gwd90041000c00CO000WY2W4W0Wf000G443m00KL2508
+0800G000A0a180GW000W00Xa024mtqD0401000a0GK8G0000I4p01G00G4W00G880GGG5G0K
+mAG68W1013W0CO2880C0A0904004K0000288800H000020G8000m00Q00000mGZ020e@@D0Z
+00W0K00m0W4080W00K000ePK5W0804G4K0WG410101A0IW1WH800WG224404G6K0X021G000
+WW0y02012110G00K02848080W0G800GaT6e480100KW00060001GO00k_F180100000W0W0a
+7V200001a000000AJU30010N9f10100xRF100W00030_ct010WG800W80000m70000W00G80
+0010000W0W0000040048088000K100C00gmpWNAJ8Zy4C0G0Cel40X508000afF3xbdmpO6G
+4000WG4380AWIkJuYG30000_pj1BtbGQt90000Nl00mK_C00G800002W090C020@@R0A000W
+0O00W1002J00008W000mjoCSKU50G400000Y8008ZE3_5pW8_P8UT600H00041W8W08404a@
+@PG040000900060086tpUA1000000240G00001Y0001100G008X020408W400084ual4gJF1
+0G00taRGGvL002WekS32PtWD9D0GG0m@@6022WO1p767bXd7DO@@40Ah0Co9320000G0O080
+022GG00G008010G004000GSIc1W00W00104r96hlRG8yFW2048oX4saR30G104022kLW100W
+0802W0G00000WLF00m@@6iWe1jjR01000008G002G0W480080W8200G00WWQC080000G1WGw
+heE@40Gm0ybX1000G0H0034000G0000G00000W000W009G0G40eR@44Xe00000mC250G90W0
+KP00200G0Y0G01000Emgvt0000eZqP00OA000H501W1G52AH4OW0926062162048g020K02W
+8242000GnJ_6Sdd1b_dmRY6KMV200GH000G80A000040C000H0WGW00008HG000W0Y000031
+YE_P0Y00001C0G180ZtR00Oc00001GW00080208000WN3m@@6006G0000W0G0402WC2240n2
+K1W4020384W00460YGKm8GWW0CG02080022mAa64@l1000W040WizF30GA0WO00ayj1010e0
+50900000K0400W00Y0000G10_@c100W8WA9104000Af0W800ny@9azc1z@R0000Cx2008200
+Y3F1G102zvQ00G5W@@D00G150040G00K3eRG0z6qHd1v3O000GA0008dxc0G0eW@tD00Q6G4
+T6yFh4BrOmLv60248eCU30004100W20G0000Wmv@P000m_Z_I08000C00Gjl9000CG60GmE_
+901029t96Eft00K8GX@Rm2Q60100G0Y0GC5600200G00msR6G402G012orT9000G10002210
+0W000004Zg5c110000W48wyr0Gm70v1R0000nuWD004G0000G0O80f@c00p0460000028krn
+WsGJO@V3m0GWY0000040HJmCKGi1l@An2nL4ll100W1Bry1008008000000oD00eVu4UAs00
+IW4L6P00Wa0000800040000rSZ1@@NHRo64Il10000Hl0404q79Z63000m24000eX09000a_
+_C000000W44000Y00400000940001Y0W0000qB202WSGI1mW7kD000028080412000WB0200
+00W0vdR3000G20800e000G00Wf_J00m20400SX090vVOGno60I0000W01O300W0UBnAZ100m
+D0000StT0GC00q_V20GE0000kpT0aBAWD0GLc10000y@3WFY000000WJ20_@t00y@U0000K5
+00200000p100o3GRkny_@7A000NP001000cXV10000000uV0kJJ208e0JMp0pF004J06OYWa
+0G18000m000G400WO4000001YG000804000O0mwr600Y900aV040e0O000m000Ygr04J000C
+04I181000Ck000_cp0CL02000C0008aqc12000506Cf0C08G0300J000cA00020C0cWDZJOP
+03Ok180W0mOJx72Vp02SJ104000uc@30pg20000ctK000mT0000ny@0yTJ2ChA00W0gwV0_G
+40kPa2Fy@l100_kppb10y@D0020000x0m@@3W@lZT1455K70_820Sr00Gi1002e0e@tvA00m
+7VwmmCtdy@V50420AaZ40P90hZ@0000mgRh0032mQHCSGU2LWd0000G4W0000040G200W400
+0100YI0WqWOe0k4Ix810402JdR0G10WrBDOsC3o3s000A39kOGMn9CEU280004080y593ZdO
+0108WrgIu@V3GG00Cgk17fP0000040047qP010001002PAPmzvRibx3HhbGBw6CTc100sa_p
+z100G0Nuzm@@60W00PFz4QC23W003rkRmzw6ieY1zaRGEN6SuU21iR0W09WAtD00G1m_w6qo
+k1ZnO0000c@@D0S83GnyIiWa1fjRmhy6W0000030mbmC0400Okd404004ai1VERGLz9G08mu
+j_4W0WWA0000040WW0008W00znR000081050040100W0GGC0W032X0900G0300000W1000G8
+0W2200000I17G000W0G1K200W800180080qbwDW00WA54W0800g09201W08SSl10Q0808eA8
+0G0G0G0mTl9aoh1G200Ihs004000CW00003zwh18080110G00X100001A8024K00RwR028W0
+020G0080C012080GI400000080mO440A0kUt0a28WNEP00WnO04W02210C00004Y00AG0010
+01810G21G0K40018G0G880W0000400000WX0101iYV28000G0GWe000W0W00i008X400RsP0
+0W20000G4W000GX000014Y0W00X2800202D00008811W6G101Kds60140G0000W1e604800G
+2G0W0000100m1D0O046000000GS04CG0a14040008J20A4W4AGmQ0000J20801000O0GG000
+40IWA0GW4GY0WWEWCuLY60WA014a400W000W0GG018000802800014004WK00Wm8802Qyt0m
+0W43HamK_C008Wv3360G0000W00W000400100e00WG00H4002EOWW00G6a6axV2000Ou420C
+ll1000400YW0W2001W00050000Gm40G0srtWi7COfC300m3a@V20e0000G06pl109006qFXd
+_DObi4wrt010001PdGL_U00002800119GWdmD00muNk@C040G00G000804208000001002Sf
+j10820IfB1800900G0MLFXrmVuIS3000W00Y000G280008G0020I04020004800000801820
+0400W0W22rZv@D060209000XA60NkpGSK60m40WWZ008G8G082440000001Y00000J02WG8W
+DzDuOV304000G14eRV3OW00SFA6zWamYcX000100I010G0WcOC0W0200W08000aJBp00G000
+220004000W00W10020000e00431Yd@R0WI0000Y8G00100884ci1lqR0200mjdDekU30880S
+F734800G000000G4000oldFS9F3tkRW082WVTDeVU3k2s0004dXkdGpA6040eW8G00480000
+2848080090800I100100Y000G004004Yet00400WG020W004OF300000a02c6l1tmR00W00W
+0W0005200Y100e0S1230W00qUj1pnB100GG00W000BI105Y800000208C000GmA0Jzd000W4
+08W0000e041800040802000W0W2Y48001G2W200400810A0W100G880H02801W8420000008
+G20X000liO0000800440G4000W00W800402002H01W2G082010002004gaU30200O0W00G00
+mE@9qTl10GaX00GrqQl1000e8oG11mW020006z00Wd@D0W200008KWWSW49W0XimgYn08K9L
+80c3k0L00gc224X00YWug40G58Y24W4X001pIQ00G82iW008800W002LQ_300gG0000001W2
+000080GAG002P_RGnt6qQg1001000HGzLg1W2G400400A2040G000a2200944HAeKIe00200
+000Y_I_C00fa25G9002H080G24C42U_t0200W00W00W010000I00800G0010W04000Ugm001
+008IA0c5M2000aRgPG9iCWG00PMf40204H0800000I9@6Snl10e40W00004W000015G00GGG
+8000000Su0yxl10GHH000414G000a2Ght6qvl1000G0m00WG800802G5d6G00W50W0280eWe
+xD0G41GqrCCWV20AI0G0GWG00WW0804000S0G0084014C0Ky@l1K080sHC11800x@R0H200W
+1C0lBP020200Y00800W0000HB00u@V3064000O00W80e0W0800Gu000W8000kzl120234900
+42_30G0Ooop0013000e0_v5ZZDIOdT3gSMY4tP00080420W5vPG000000iZRyP0G0WW088bS
+VJ83O600A08200G40000100e004htQGd@9Smg1v_R0G0000420l@R01Wi2000AGWQ1G008_@
+V20120C0IWWC1881E302014El1050OL00W1iM0egV300i50W00NB000uZ3W9@D0040200000
+H@5080my2H2W00OOs@40G10004O0Jb0000m1000102040004P00000E0Y20000n20VtRmNwC
+WOt0GLcvEt1GrZsI000_ly00Sd100HbbmpuO0140WEOydl20000u@_0W0000mTvV22C000G0
+0000@pF00e20uU@1u@_e200m@@10zl60tK00Yg00_xE0y40qC00eeYsnD50WTK0G@wEWsK00
+AVN2000HA00WL060O0C000O0000500Gs100m0W10103080400Wa00003000P00GC1GWO2GO6
+@40000Z00id18ma2m006W1000300Wz000mNCuV3000Yx000W1w0GC0600G700060C0C0O0W0
+noP0P1002600a80L8o0o0W0W0008I3B68004t1O0ueS6SyV20Sr0oqB1g_F0a300jQ000Qz0
+000uEt10W8lz0Wg0Goj6ulV0e3030aF04GE3hxP00050004W_J508e00gAH000020W00G@0W
+000000mV0y@V2HwR00000t000kf00Cp@0q8UBbVJISc6aQN2ZS@mbEC0C00ejLCAqsWAoJ8R
+P32vt02080p@p00Y8WcfJ00000W1K200000420haqWV_DeYR341008004G002GDt600ew_Zy
+7M1cXx@Duft4svsW5jDeey44W000200g_L3oyMYbqn0000uHv9CBl4vYdmGw60uq1uN46MhL
+Y9rDO_S9kftW0rCeYy7ADtW4pV000WufF9qsk1G00000802800OoV3G0000A028063kysWRv
+JWz00GZ3OSnS2rlpGEt6SmC300G0kFoWLxJOWK300WK80000410840100010DwQ0080mqpJ0
+4S0006604000G008oIp01WWC014801000400GCW0mZp6000Lik63W80400000W00oQ360800
+0040212W0001K028G84GH00GHuDJ38200G18e00008I1880120m00040000105w7E30020W0
+0800GH00000G00YboR000W2H0020208G1K0XW01W0000600ZoID0008WW010001000282Nt0
+00022W8000088W000GG04W0000VF000840GK0209mOrU3000u80002G11010080G0200XG0K
+001W082000W00840009vKRW1YW014082820004G1b22000GW08A03W30LwR0O000100Ga000
+00418Y0000eG8080G002200060801000600210506000mW0O0201000O00G80900080o0200
+K22W1G000G011058G040000y65000W00Wce00BW8G4j600Pe00W0001O00HH06W0008DWW0G
+1HX80000GG08100OA00G0oGG08Wem80M0c4a48009821G000458G40K0Q0O00W00G004W000
+00800B00GI@600G000e00001602WGT_d00O4W7iCO7C3cxt08020z@R0E80WBvD00WwLA3C0
+000gmV30842a@l1002H00WWG0000407moz9G0000080mEA600000W0K010K000008080U3tW
+n_h8uV9E@@XEvDu@@40W0W004020000em4Wy@V000200W8080W0JMQm8uFKsl1dyp0W00Wbr
+D0200GAn6SQU2W40000G0Klb1fuknvuL0080PND300016JQ2lVp000G4W0W801000W8WqFz3
+XkR0000cItDG48208G4WIYC00m0quw6ynT2rmR0Y00nGpJe0D3YQtWUqPOm@40GW0qxk1rGP
+0000000fkjhK1G000a000Y004YbtWWSJ004000W0WnWJG4G0ney6q1V28000G000840WuwSC
+_DcX0mJu5L9YEd10c90BhYnD_9CQH2b5OmVO6G00GWW000a40WRxDu8_400G4KUL201800W0
+00020ed_42utWpzDW0000a00WHyJ0004100GXxfC0W41m2p6i1l1g600IoFXctJ000X8036H
+0E1040H0100010002e04m4A60W80400418W0G00G0082a010G0a806100080W800Y0W8000G
+G00GY108000G0020008010G4504bNF3JzR000080204nzdG179KtV282GG43W00O0100GVN_
+iFyFe1GK00wMq020WGzNPmj_C800GG01XW8WA0001JG40A0m0W0GP2u@F308GGXm0004000f
+I00nG014GA9020OiC83000e804G1002XK00050WGW050WC800WK2W00040085A20I00G34GK
+0000aGAfWWI00nEE9CbK50XG0480000GWAXS3QMt000020200Gc0Gzcf12020080D1A80040
+00e08WqfD084100004082G04GG0201eK00eo76Azt000088000000200231CX00G0100a100
+040WG800001119820444W001W40e000WR300un@A0002000m8pU3W0H00200fWV30G040004
+0804IUI64@f1040W00K00001204800H044e00000GG004000O4200mU_6000240W0G2z6800
+K0m000a1180060820GO000008000A0C0G080X00000m0C02aDh1G0T000uTjvz6ZHO00000W
+804zmc0G020CW002400G0124Mk10501ILq0420000G00W009000ebs4YGMY8@D00001W20I0
+100hwdGO@9001G0801mRu90Sv1uGXAsL_XgoD000W000G01000WX008WG0004XuAU3004100
+020W804000000R1084or202WWG000000g7000Gg3xxRmtv60008Z0040W2XUIG00GU400410
+0W10W0aT00208kGz1804GX002W0K000000wF0010UB00080A00yYk40W6000R0yel1000OX0
+010iG8Y040mj_9G08BW000A6010000GY100_QA12WKC000000WRU8530SL0000000ku20000
+c@7WyfL10@V3020000jCpjB108eM0_@V0y@@iE00agl1U@T06hf240Oa2000AotWW@J004J0
+0Sx0CP_1m001m500ypc1fqR0G6020G0400040004300Cp10GC2qH43a40E020006000n100a
+V000P0OG_1W003YXB1Gr70rs@me@646k10c0CY9t0000n000GC00020886180W1G000W100G
+K000W100Y90604Gif689000Z00GkR64sT8nVnmq@FG7C089z4000GZ600u0V9iFWcnC0@tFV
+1GF_I0W@FmL380004G0mFWsy10z@U0mDC_7008A0K1W6laucR3c4daWfP8Mv4U_t000AW9ld
+mPt90002e5J3kUEXE@J8Fx4EYXXorDOPV3_FoWboPOaT300G0a0k10200BzF1000m00G8oIB
+XxsD0100omu6yFk180000Q00csD3N4m00W004400G00000001008G04GmDv60008G00WW0GW
+WNpUG404mML9C8S216nGo0IiZc1P3dmAZC0010W018GzG6WQ00u_R6csq0240041000e0180
+008US30G038000e7S30G000012W010G_@Fiqf1r7PmbxF0000CtM3E9c10000010GA4DXRuJ
+u9S3U9F100gO0204wmRZPqDeoh4IfFXOpDedP3IEt00X10nnp00W00Y4G0000G0100A000K4
+00W0e0040G002000001088Wei_700e20G0000102028200GWfhR08G40m000053001000010
+104A0801WIcO0003G2T6081000G00G10WTWC00K40180840JK4W6240109400SUM30400808
+00G00420WXarP000Y040001004W008W00Citg100108I50000052O4009WmaaD0GG4140000
+180G00W88404Fk1000m834000G0W000I2@6W00000X00218G0W04000W51G00G03W0W20800
+04GHW8000n4E1W24W08W8m_y6GG00X00GW90W004G1200000E1000G0W100080208I0O0000
+44002000W0I00026080020X0020001O0C2R300m0U7k1@zR000H0W004W101080X08000G0C
+80W0000FZ00G008010404a8022008G00W0e00W00H0W0G060WA48008WGY2W10W10C10bY30
+0040H4G8C0040U0GX81SW0081G00080800e004W52000G02H0uDQ3grc13800BzR0G40WBfC
+0008800G900000W0Y80G00800000F00X08440008W000010G0600000210001000n4GYvDX6
+gbOsA3Yyd1098400308a000000100104G00e600GI40o_t08009000W0080004100G0GkL60
+W0000C0mNb6yvF3D@AncuI000100006QX0WSwD0800GWRUiER2lLomS@600004080ea10WXE
+b0100m8N600408Ko46@tWIkb00G2mv@I0Wu_g5k7k6dXd@D00H0SC_6KaT200W80102Cvl10
+80100CH82010200mUx64K939KcGzz9Kit6TiZ1eU300294zYYnsV6CuD331PG7x60080G88X
+mGS60000600a0G0108610raoGLl9yiE3D6y0000WqGIeDU9000G2E04uFU9gmFXVpC000G00
+2WWvyD00200020082GC002001100010000m000GWymD02000HG400100410000001H0G4000
+W80081W00rxRW001WLyDuUU3Y5z10010XEQG4_9040000Wv2001aSvOOzR3obt04G0G0000G
+0GIX010y2z4KC800004b0082G000244C0G20WWme05440Fe8A10Ie4JJOSV30004iBg100AW
+4801_iV2vhOGfC9C2R2G200gnFXNsJ08O0X0W020000W0800140y2d1NzRGGx600I001000W
+2G00020ZkQ010W0a408u11000f8002O00LGW08W2m40008WW4G40qwk1P@R0000A20040100
+0508001011G914W0000bK0W0G000GX08W04W00f0X8G1b840A0e0GG00e8W800100HA00eIW
+K41051AKOZ181A0000410G0eV63_f_XmUC83S9czp00000020W10HG100W00405004YvvJ00
+W00H00A41087OR00200040W0091a80000G00G200Y000X2802W8GMoA14000000YG440G0G2
+1440GA0900OFlb49Ejz10024rNbGtXF000W00HJKX@60G008aU6cys00400ZvR0400XNCD0W
+01020000WWO000n040Y1204340AmmjC4ll128080014ack1WHE1kysWgUVOKN6UYMY2@J090
+00000000700W0002001201W000W800000W00W00c1910004xQQm@@6q4Q2nNjn@_9000W5q8
+0mbAIyIE32020wwNYh@D00H9400e0I0080G08180C80G0404010A100003@sR000WC2400GQ
+4O100W1yG00040282000Gl0080mC2i500G0JB080001010W0Wi0000eC0s2008WtIA0C0K60
+000e4810W2vDuWU9sDt00Ga0XzdGJz9000GQqV3Y9tW7VD04000021WehJm030m@wCu@k0OP
+QR0nU000y0O9v7I1X10W08000W1FWFcnV20080W08000m17WF2000K00000068004000WP0m
+@@2mNd6GY00W838J4R90008610Gi2GGS7W108030YXp000C10my3W0n40306eRM38200WO20
+85W7000GeK000H500010ZglUG00000W0430002020U1W100O0W0W0W10048N28k0C_At000G
+K7imGaz60W160Wh_70_xF0UzLRTR30WTO00W7q000Ai9Xql310W1GLu90S0NL00000070000
+4Ue@w1mD40m31eDSUwIj2Gk201IZnKjOyy@31Zam7lIypj45IdmOtX4lg153Q0M10WKpbumx
+4M1YXFDaOLV3_BwaTBIedTIo0d100NiHqAHfwCyfC3XWpGO9LyQi4fuwHM3RCwk1vxR0036W
+Y2gu61L08044dE300W000448W0000100804080008W00G010Cwk10GP0MtpW9mC000000K0W
+htDebV3GA00CFU20W0808020000zm53Iet02400nkd0900ersD8Tt4A@CXNrDWW0G0100WJQ
+D00G0mHm608000801000011W402e080001Shc1W0G0W0G0029Y00H0G1P982000210GyU60X
+02GW84X0200G10008WG0000WW8820200W00000tv00WW00W00Y0G000058202G4G048000G0
+44Pl108080W000400G0GGmX160800G0u000000L1002008G00010030W1m0G12811GG0180W
+10GGW1G010e050220W008W010W0Y04040000aG41aNbI00IG000W040m08W000202W064Y04
+H01a1O00008H200008W408GW0201000GC900010028WW010002X420280G0280008IX0Kwk1
+4080C0000208180CG5n600140D00004WA2801004580W00020W0J028W0G0G24LxRm1y6icd
+1Lwd0W0000m11L_OmHGICol4TIR0000Qy000a000ottWYzIevZAIp@10Y00Z@d0006001100
+G0001002G0G2062000000X9W@@d0222WVzDuOV3_ZsWp_Dek@400a000C00O00GetC000000
+W_@j8O00W0000X800G0e880m4G1Qh_10020000010m00G0001004G0GWYCD00002W1000G40
+0101AqDX7@J0G00800GCY00GH_RmUg6qEk1rWb0104Wg@D0004G_Z68ML18wEC0002G00040
+G8000004W02df@00W008400vXR00G0G0040040GG0W00414080000G4G0000hEcm73F0G00u
+SvAUjsWN_CuFz4000mWD00ezyA00404SQ5xZdGil9yHk12001czD100W84900QaBXloD00W0
+mYx60008080GGbwL080010K0msTC000000mXVRxO0040OWO30200bnA3Nb@02G0WmuD00804
+8002000GGWY8WS4p0002W8G0GRgCyel100Xe4X0W0YH19s_4Mrt0000GW00W8O0WGO800Y00
+000200001HVQ0e35WRvh0Y00000018000008a10G524C0eC@702H00H002W0C440000m0008
+0008GGW00002I8iG0I0410L002804408Y0004G0G7r60W8W24H0080000510t5QG@U9KHb10
+GYG014100G100008900WhyD00005310e7tb001000Y8G008D8120801a80W8W013mx@6y3c1
+NxR0X20800000W9001C0G8070WWW8O002GH0000004WK0004100G150o00400K@@R00081Y0
+00WIA00P00aYl1000eW000000a2K0420100IHA0G0000W002c0000I9504I8000000m01500
+y3f4800Y0000GA0124G02fWYWjLDuaX4008I10202G00GUx6q6h100A0oiD1G0020100K0H0
+SsJ501WGW040iwl1000310H000G000G2Hnp6020828o88GCb8W020m030G4000uN00090G7_
+IWG0000412880G0A0800W81150CUT202008080008W0441W000WTHCukV304000W00H00000
+90Wx@DuBC300W00001OUG300A00000vzV300G0aqh100080W11GC60S_S6m000W0203000gY
+8W0000100H00001a8V2n_R000050101h1RGqs6000000W2mlaFqfk10011Aqt01H2400004a
+80iwD30100wht00W00480G00I0ytF32020wjt000I45SamTZ900O1UTTC40WGKjk1b7_myG9
+0W00eNN3wwt0WG00000WC00mg48a2xj0000041W0000M0400eB4818iS3G10200000z2400O
+V4W00000fG000004060000h0080Wt2rEX20Gg300020148001e@0040u_1000swG20009it7
+00850000IB08Gy960s20G00tIK@C0010H1040WQ1010000W30o8b1XK0WMD00jf0t43t3000
+0000FEAj1@gR00@@WtaJu@V3K500aDk100WPk@F1000q6100Ai7300mg2000000w3m@tVYv4
+Y6m00uEWBj@050eWxFD000me00mJ1m5n8OF000204qj1TOQ0YST00000u200Ixs004008c08
+GC19103G000W100mS00Wh600950Ncx0T0m1O0GA0600802000yEq9SNF30my3W0H5030E8BW
+4MeFX4oD85030002A000K0g0W2m000W100W800uZ80mD5mC00W2A800000Y820jw30Qr0000
+0yb7H000WG1A0m1C0WFcxV50SJ10ug1u100e_V60XX0iil40WP0jf00000062e0GVs6Cwk70
+ul0iR@7W96040000S10WSsmu7iGU2dXK_POLa4MxNYGuPucSCY_NY4pneLI6MVp004G0h4Rm
+t@6Cwl1vVRGFwC00eA@ttA0081aZ_30104QfiYSmCuxS3EAsWZWnOJ@DM6FXNXVerV308i0y
+mF6800W2SdXLYVeWz4wtdXL2sOsV3kxsWMiD8483IGFX6vJW000GLx6ipU220G0sdRZz@J00
+22m_SU000GuLr4G00H0002010810000K0G00180010400840000Kzx600002050W80000020
+2210G0010000020GGfw60000PtU30001080100Wyq1s6ikl1TKRW001000GCJyR0800uVuI0
+0400200W_vDu8V32Zs0G040ljRm4v60080040G1000000O480G014011888G0W0500W2502X
+W8WAG1HJW1W02020W2O0YDID040040W8081000220gwt010401kd08B7WaVJW0G0mE@94ED3
+041W00400210uAj40m08I00000GG00m04000000YW04GZW2W81L01G1y64vZ1aI0004m080g
+0100208W2G0000008W82A01W24080m04mG050080W5008101100083G1200X4@D080nmnM68
+0004000Ak00W5zDG0040G2000W00Z7Q0420Wp@D08004A040010060020m00q_W1AGe0Yir0
+21A000GG0Y0G0YA00500W90W000088088W400W0000G80010400018GG0200048a10c20002
+20H0X0WFVPm0R6KNV2TRRm0rF000i5000G@x6Ktl1ZyR0000gYyD8DC3UHiYzFIO7V30G800
+Ze0urF300W0AX0410008004as@D04002408WZ_DG0G0G2X6800040008W00Yw5I0H00008W0
+0220JJOmly60Mb0fO@AolFXhaIutV30014G0000000KGz6000W00WGq3vCiZE3W00WG800SZ
+c1000W0GG2iri10A207kt0000820X8040200G00G0YmhvI00W020049400WBvIuwA9Q_MYs@
+DW041KFx6000IG00010G001001W000422mW08GX80Y0400nmcCW100Gt_6W10000G8108018
+280VrRmYl900H000001G002008200212StWa_J00m7zmcXCqk1dqd0002WTQC0Y02W000180
+00G004090024090G00mOs9SPw3bwP08W00009A0H00W000_ek1@pP001034202020000I8aV
+k4WNF0otyamvJeOT3000e00002WGW1000008912GW4000201C202g08W024214HK54O04G0G
+4W01G00400020E0H00W0n2G00GH6014120G6WdrC00O11GW80n40X024205010540W28K2W0
+G8000H000100G4000WW2W0GRz9qcy3RMR004000900BwdW0G0810G02G6X1WCW01X041O000
+G400W00AX0I402IWAY00W1G0200044004000G090I102eqR30200e4GW001GY01EKG410003
+0G260W08810Y0W0a10G5042C40W0C40080200Gms7900W00001Lt_6ih@33yRmP_90000I10
+0oW_6001100m0GtB68G0019CG2I8Y7IH00YA0G1O818WP4OEV380000048W02000o000850G
+0000202000200485fW02C2G0JjP0GW20W0f20GAf40WG0W40OPV385000G81eJk40q80S@l1
+a200sd_1000Ktxdm9@6aY_3tO@0fa20bY0W5@Rmq@6mG01180000100W0W0f3P0009J02280
+Gq0G02WKsO2000Y028aHc490004108Y00008210200000082P9O34700W8000H002000Y7yI
+eTn4gwV30002p@RGZv904H0WXW05009KW00I4W00H808WG0GW00W00G00046OG011LK4288X
+4uWG300W0LiO20a840080014400W000G0mzyD00W8mz@6008l70G048200044000G3s_FX3U
+CevSCAby10001408IG4110AG010W40G04G002000G00H20G14G50800G20000800510090W0
+50qG0a0X408IfG04roc0W490W00I00I0040a00020q00mVwC0Yc08ku7w_tWaRV8i@4gpBXK
+_P00G2020082400081088H10000W3000000A000W8Q2W000EWw20G8iwmx@6000ft4G000VX
+C00000O40Mso00G@9001Iz285azc1p7P0810000A0000Gb2810000gzD3QFFXYtCutxD_wFX
+SDP0z1W500y530uZG0m7Xm@hAWF_02F000@u30_u0RlPW@tK000W0Ae00zn70Qp10C5W40W0
+0000BG10k94000C0000u@@z100000WuYU300G_L9Z4PI520k1WcGD010O630yE00004WPcem
+L300jg2WF0a45C09AO0KHo0e2G1G7WIaA0b811AH6N0Y4T0tOP0O0e0i300C600mG00W0200
+21W8kQWW0G0S100c300O9000m00Wv703YBO5E3M@t0mFA000000Wv6aRf1Z@p0Y8000602P1
+aGy@600404000mB06ajg100m00XX10304WP00We000c_WWKL51bP6FuF0cnCPyF04yV08OcU
+Gm@00WgIb7U420yF1_v10_V40SJ02Qt00iQ0_FY0y000w@10qgl10000000G@00WVzB00aDR
+2U5002llYI_C000000_dv0lV00086O_10@@30j@RWAg00@510kwXUK0Wl040@VHkGAY7600O
+8ZlHowSaaJU8PHbGm5Rie@3rwR0uI2WZoPe_RLcxE1001008000001W200uuD6Mj8aSuL1V0
+0mF@daa_3Nc@mUk9CfE6LMPGnuXaz_3010000KKH002ex0U000GSFk1G020Ilo00000W8W00
+14000800014GDG600G00140024004010W0200800q@c1800G1000iJd108W04001qM53t1R0
+e_700010prRG1r680G08NT3008000G02004004020W2GBYQ0G80000500040005000W50002
+uAq60080CdU3803a0WW80GXG00820G020G088G010W0G000000YWW2GH1HW000G0100GW000
+4G000GG00018040GW00W00G00G14PW1OK058000G000G00Ye0W4010006Y14004W00G40GG8
+0a01AX0G0H4G500010cqt00440880000041W00KW040080140GG20G800G400W0100404800
+05410A22G0420WW207m0a2000K41660G0510m000A0604n5q6001q0G383Gg0G00OW202G01
+00050200010W20W86C0024W8m04X2JGnRR000X0HW0m20G000eI000W10400H00101o00O81
+G00e0H00W008mdx6WK00m00G00145a0a8020002H200045G00202GWkbCu1O3820O066W012
+GIB@6000WeUU3YVFXm@D0G0WmH_C0100m00080G020W82@vR00m0WxoC8vV3020008000qF3
+Oy@600G08DO3m20W4EB3RwRGf_6W00200800A000W0040020184200AW000G14W0XDyD0010
+3A0000080W1044H4800G00204f8802000W73OGE@601010002mwbF0080000W20000G400n@
+p00006b100010218006_@3JQRmr_9yrl1000800P0SFl1000W0224Cvi1R_R0000G0080000
+4122000082089mhp6SAl1@WR00X4WwnP0Y08000410020002o0084TnU200I4o@F1044GVXY
+1WW01C000000100W1qul1vWR0020W5xDGY08Gk@600G00W00Hkl60041vGS3080000nG0006
+91000W080nFaGfx6iKU2l9O00G6WKgO8D_70Ng0yIk1HUOmcu90H24ulI6G000Smf1200400
+00X54G10a100W0WInCuY_400060G2W0G0010o440048Dbd0000H0400m400gJI20610hxRmP
+M608000400pQnC0000dl00mrzI00W41020000200a02tgRmbhC0040irT3kgm0W000G400cD
+b1KGC42a0cXu4C92a117JD520040WA840YeWCG00m00unU3040480001W0018G000004240H
+01008021424220e1008403yd00WA6000G000GAvc100G04960K8W0W600WI84002G0000408
+G000Y00W00GC0100GW840G5822U00G000010004nnr60041G88A3GO5410Y8W20G044a00D0
+100W1a10WXrJ0K002040eTvD000W002G40Y00WW8004410Gg008a00444X2@P00000m4301G
+002100gTFX_@D01802YG0XewD0W0004G2W@@D0W0G0508Gq4HC00a8W0040109X00I2011OG
+02GG400144K04f08L_40I22G080G0Y4GOu6W00W020000WIWbtC8E@4a00Y0A00u9U3QtM20
+00uy6A240H00024uDS680400101efR3000IrF93W200G400G0e000GCG_0600040a01009JA
+2W01000G0Y0000800H0000IG00028C00o85M0Sxl100G1820410G000X000010X420jVRW40
+00080XLOQmv@I00meBcT3088000H0y_z4Evt000G8081000808a00eqV600KW00021G0W000
+000e100040GG24G0G0190f5040003000001G000W0G408G0Gf@9qyl109Y00000004GH1400
+W0G00008010600000809000000A1YVtPu@V30Jk204WW000Wem00W7hP85J303000021e7V3
+cgr000G0G4W00440040G00X108W00010000A10002O01000443020ahEDG400W420G0G04I1
+W8W0G4iQk1000404G04gi10XW00020W00010001Y00002GG84GIUMM20008Q70W2onWRIb00
+04mx@CaHZ1002080000W00fTQ300H0Sek10808Azt0K304GWK1I@t0008Hc0000W3G20800f
+00m3w608oa00104HeM0402eB4d0GW0010K800008030q_@300Ks1P1004GPuiO60004H0200
+1200080401000WQ1000eI0G08BE3U1n0G60000H60P00000P8CV3000a90940JlKGMr6u@D5
+mL38Wg00G@y0Ws400TuV0QJ10mc20mYqF000kLB0000QxU000000W10O_f0000mL00mw@C0i
+20008GmvxC000000l08hI1000mhpsBHCv6mj@l1W0350V700000005000G0G11UPgU3yA00m
+n000W1u6930304WE000L0002200OK000e0uI43W108G60002000W100cV00000O0O00002W1
+0001000n00003000206tWp0000UO3008k008o0OKvC3000HD00020CCt180GP06abk10WG00
+0H588020L00G_06W820W01W0H5G4080600Wi000k66k14eg7X0y00XFY0WtK00V400_8200F
+0y0000U00e8@4W1600000mc200003000u@820W00W0KUl10W0Wc@F1008a1sB1000K0060p@
+RWIXk300000cP0r9000000an@104H00eY74g0001A0WjRd100W@u1000Wzd100000L1Wg_Qf
+uRI0YA0aDtIFcBX800008002000kC@1008000e0008CKEk40200G0200020W0G0mju68N00G
+080002001021LfdGQr6SS_3Rg9HT06qfU83idGEnFyAb1Jg@GTiI000E10040100W7tVufI9
+cUlYxiDef@DgxrWzabuQT34000O000OvV90G04Kia1lcR0Of7W@@D0010uEr64LN5lplnE@6
+4yk1jhd00W0014004D2041050K00O@T3000W0088u9K60880E8k1W1200O00C5l1tSR000IY
+IsD0000lD10200G008e0000402401011W00000085xwR0404mKmD8US30000q2b1JSPGUx6i
+Il1hmd0M40G18W00W9410040180010L004080G8W000H00IG0202060020002G04m0Y00000
+01WWe240G00002022GGG000400000WHG800Xe00GG00W00000aL3301000W00202001W0W92
+4mG000A80W20mLO6000809G00W20G200021002mmWhmDG504mMu600002o000X8000009000
+90002004WWW00004H00W00GO60400WCCc1W28G800ay@l1W0Ge40001GA00H024004G00AIW
+000502G00G004W852008I00IZoP0G040m0002GWG4000G8O20f1W28G00e400640000800Y0
+W0000300220040001AYK81400g20040W0I4ol1002XRyt004100804020800020B800Cm04G
+WWW0000080X0400000G00W004000W00002800400OCG3W40005008Wr4Ent004O87@R0000A
+EI20D_R0W00000020WW2000000O000W0G5V60X00200Gmk5600028w@42prW7lJ000Em3v90
+00WOgB3000000X8Y000mW_6qcl1h@dmGbO4tl100200038W00000WFA800WoSD0002200004
+20Yd7dmI@6W020WG4H00G000W00@ZQWC0W00400luoG5s6KZl1vpPmrs600W002000043WOt
+O0010eW00aU8t00400008IG8000000b000OsD9000001011010020G0cmrWZrJG000mqo600
+00008800GGWNxD0001GSlC4Kk10020onp00440ZEOG_q6CZe1W00OkJqWxLCucR3Ia5ZzyD0
+84020040000O66G41IWW00X0AOG3kZx1H0003fR00I200000W02Y0W40ixv3ZZNX141WqNDu
+5l402200101eRJCUhd100WWxAQWG011001000UTxZr0G00G00W4G40Hqj731kRGr@600010a
+82G496ySO2XeN1G10100HX00G4_Vp0200128A2WWWG0G0240WG00412W0008200wXtWq5DOM
+@7003W0002052C0G51GO000053040WA8080Ym00028W808YY4200H000000a000004G40040
+32000X8GJ000G400230G2aqXDG02000Y2W_0V0009W00402010200L10008GA00004X80040
+08400WGW00Gahf140G004W0i@V2xkA1eA000GQGY1m14uGa00000bJH4I024am104H4e4A0a
+00W00H00IO@60004CvV30m00800aG0Wee0GWH0E10WO200800A2009rU60008KKe1ZxR00W2
+G0G0000Ae0G90040W2A41000WGG100G0008W00iGz3@ql1d01000FVa28000W000fW0WD4X4
+aI090f808010110000I0K0000I000050J@dW400ginD0KW8Gq5L0400X00a0G0000a100A40
+EvtWToD0K0000KmG00080100EC_X4zh000e9000810000@0G400000e0080H0W030W0240WG
+8W020080WOrA3QytW_mDu2z40000WG40e8b4QCF10G800W1081W00O001C00021820GL0280
+y0WImG000mWe0wR@6CwE3d1Zn1@6000800006R403I00202pm000XOGG9000502G000030V5
+QGd_6000801Y102a01181000AW0008AW4W086GGr@90880erT3GO0090WW01a200K0082084
+0e400040402080Ye04502480xO@mUrRSlk1010000O53L0W0H0410002000A00W0002W_BI2
+fxp00G04G048FiR0400oGsb8xU3800a51k1lzR00W50000W21MG0000A4008983Gq00KAk1L
+EV2enXU10000z50Utt02GM9080Wy2P2W000gsU3o5t00WA0010000IXiFg100081W00yq63X
+Zd06000eWI0000ubP6FuXCgILH@W7YEJL5Tco0wCbHL000LLb00000_ggehDeZyD0W00800g
+JL0k90008@C000200jQ0N970U2HOLdh0iVU1u5Rxp0002gG_DemR30Wv7mcP0Wg@3m8@Fycg
+100Wg000YI008K0gGa2Y245G5e08AG10HW2023004L0g4T0H1I0m0008200G0000W000010X
+7Na0000e00001W10XVR000SC00WJA00J9WA28Wn0m1Y000m000OE00Ga100n402cA86E60O0
+0Wn0m0J5arjuFiDl14010004000HW10OW10ND0mK50_lW3G4H00Wg00W30eD500Y8o@U416m
+000aJl10500000eCUa1J_@00U@50006UuF0TJ10wF000Sf3001000U_10000K7C0q_@3G110
+0WA4XA00G5008u10Fu0GL2OO0fWgA00H1DXV9K4Y0qnc75k@mil6S1E6rgb00008C100NRxn
+gz6a5UB0008wJsWEUa00002100XtxD00100W08WRPPuGV340W1KBX1jqR000HpioPG0O0mOz
+9KOU2W0020001Ksc151OmEvL0GC0eOSI00W8KUR22W00RE@Xd@D8RE680000iB18pzG2goWp
+qDezV36KVZBLJ000WmT@CSnx30W00Yct04W00@_@002080000800AIxD1B100nid002WYDzJ
+uLz4G040KW43r1aGyzF00GeOeO60G0A001a00G0001400000002Y00040G8020W001000002
+G010c000002WW92K30G0A0080QEB30O4080G2uqV304000002K00000448G01000WW0o4000
+240000210GWNmCO@V3wapWzvJeX_400G08008esU604W198WH20454G0400018G0020G0119
+0Y04004WW00I040208202G00e001W00002000W0480W2000020W00Y401CW000G05G400444
+4W008OKP301o0004004X8GsJ600000400501W0H0G0W020880WqUl1W00G4000e0e0K04080
+80022008000WW002002G00J8088080GW803240G080080WS00010330004122004GW08W004
+1CX00G20HW000H0X0G020010G0aG000401086444W2O00GGm0000G0H8W0G400LW000a084W
+00102W020000KU010G000Z20X0000X022000WG008G0q00KQk1lyR0000A00310006080000
+W0G004200800001208G0W04WG40G0G80002044010408G1WW000GWW002080YWFCuUS3080W
+00GW9nU3004Ya_W1@@d000020GJ0faP00u0010H0@Uc000omLuC0200000080e1000020800
+00X4W081Ks36KhV2G00G04184yr3G00G0400W000018020000WG00W00000280001400W000
+0iQfC0000GD560004a40000800G00W0484cvtW6lDuI360404aul1810009c4Cwl101000WH
+0SzO2DRdGu@FqNZ142WCw_d1G040nuQGSk9Cbl140020008G200uyS3004G020W0G00004C0
+m040W0G06rFXzqJ0002HWA60009010000X0400mamEI408G00002f_oAsTm000K0bkRGd19q
+ps3W000000Gkvl1000K0300SNd10080diB1080200104008000X0808000408401000010W1
+Eka1fnd00W07O000080000I8000000GG30G01208Z1oRmXAF00G4uR@4kemW8lJuwP3cPFXl
+vD00W140020O0010108M9qWjyD0G100W82mrqPeD43A28XI@D00G00404WgmJ0O8a0140G00
+00Wt50000000G4PyS30001zbf4W00000100G0W0280Gjm6yEF301G0Qed1G0K002O08WGK10
+01H92G4WY9451W8G20W0C4W04O018X04G02406298X4W40W8e0X40H00YG01800K0bCR001K
+0H000G42000YZG348110W0000Kgo00G480e8Y0210K20000042WwxJ00004I0000040200G8
+20G000G40001000H0X0Wpxb00100G00400G0VX8100Q140GW000aG4000GG00000002W0GW0
+10014G020000G01a01GWG40W2WGY807wl10W00800W0000101400020GW8H882080W0GW8Y0
+Dm000W8P0F01e8AG8G90008OSCH3k@tWCEC000G10e100H000A0002010a002020006002C0
+0@zdG3R600W140G0100KWtJDeXU38W01SIV2000X42040G0aYK4488580I10H0G2G0YK00WC
+040200000I200KzmRG@v90I0G00000u740W000lvRGBw6iZk1XxRWO00004WKa200aW00qtV
+2W4000Y00C_c10W80000Y0AbKGI002ea20m60000420006ill1S40G0200mG5008400000A0
+03a00eC008W00I2108024K0088W001000K60SdV2zkPm4q6isl100009400qol1ryd00WWeW
+@D000040K008028G8BYwgtWQpD8hR3_9s0Y0000W80G004001008040400go@D00D0410W44
+I00010800041100WI0902GWG000e8W02WX20032i4000000eWSmD89B340X000000Y1WQNq9
+W02000GEp_@90128fpV301A0SpP200045W1000G0OPV300480000itV30020100410E00000
+5000108W1000002n304L20G12YgND0054208e004G4g0WG11000K1WG120W00G0802e20X80
+00H12W00HA0GI16000WuGV30001000W0a0000W0802000KZ0_@t0W008P@dmazCC@W1H3RGw
+I6azl1J2BH8z6W0Y2ezD3__t0450G0007GM0000WU1000WG0A0000z20W1m_BqB0001wl0mi
+L9000003G20001qOTJ0800400A4000Ku200Int0000IjmRW0024G20001K822t0000z2000G
+wB04l9340W20008W1O10000yT4680000z00000S430uc40mD9m@RIW@BG0@F00@l00kw00Sr
+00ug1u@L3m7V4W@70G@y0WMT00Z2m0Y8oDk110000@u10VC@V3000@pB00000K0011000000
+0YV1001800trEt00001n3_V007s00083000WsO60CB004VE300W_rF00a8E3PbR000089AO0
+IKm0eYW1G5W2WA0b8L0AH22KY4CW4PS1gmu2K1G5u6WISD0ben0AHZL0Y6h0L0G0g0a0W0Wi
+uC004J0004080O0G0W2YXp0C100WzR000W1000306020C0WWjMD0m000Y9000002Ct000G1S
+100K9p73400020800080W10000W100GK000H400Y902cP040WWOoD0H08e3FGGggo@EyW@1W
+ALfA1@702ggg4yG78egKfALfoCp8ZggYW@301piA2_700CpCK500GLL18@V30mC0wz_00Ae0
+gD5000Wpuw5G0030e000W1D@10qG104Lq@0000m00_dqk1j@pWV00W70E0000W020000mF_W
+00000W0408000kg000WCsDeeQ30ug0atDFdU@0000G8000Wi60kYsZ7ohOdy7cuM20001@kp
+mQr60000um33M5t0100200W0W0080042020Wm966KpQ2Poa0000UD2G00800E2oW8htehS3Y
+bt0000GxbpGdQFiRU2XUpmHRUK@V2X@cmu@C00mu@bs7Y7@XKkJeKT6knsWc0ge1JF0G10CK
+738000CW00W008G020GHv6iqf1fPPGZk6G00000420408WC4g8TkAg2EXGunu3U301000G08
+00068500000G4XBR0014010220400_O814080400W800W0000m80G0080000010201000a00
+W01W00048000004s0G0_@t0AI000G010e000024eZV32WnWqzDOHg46Ut0200385AW040002
+50082008200040000Y80108000GQOL3GW0G1000G04140G00G008@ERW000GW001008XtIm0
+G8WWY80018009G00W0GH4I0a0400G4WY2000O0400W0100900000TC800GeW00We00W0180G
+1e00010400000844wY1G0W1400WG006G4080020014O0W000eGm00AW0G0XW0WY0000O98G1
+210248g000000e202WhcJm0W0e07G01000000WZKm00CW0204800008WWG00000000O14494
+G4G040W00K2080C0W20100I00H10829G140GODV30DM1008AG000116W124We4eG00403G00
+00410GPl60W280006300W88W000020841W000AWe208806KW02W80000KD8e04HW08C2000G
+8033200CG8W0qkT20008010SCgl18000c@n08004W0000G0WG00087U30810G008K402000W
+0G0m0BEc006000004a5G0gwtWv@DOWU3Uet01000lpPmQ8600048PG3000000G6W04812008
+GC001LP000KWQ@JeCo7_9m00040hud0038G40200000110OCw1300200G80Sbl101W010001
+00100GTC0X8W1zV000GW08000801d0Q004G0G010000W04G008W00000mKu6002024000020
+000G4Y0000002WY04ucV300Gm0G0004X0G3560400fVV30W8000HWa804000C80G0020W001
+0H030W001018200004G000c00000W0IOUO3G8080000GOh10004Ws@D0WG0m6w9aDU2XARmQ
+eCG200K0P69200014W008pCH18800YeW440001W801HA01G00mW020308JK9EFc100aH0G08
+_Ot0204000084000tX7301100000O0W10000f5G0008000010gUqWO@J04044W0008500G00
+00013aM037lR0000G408O000W8003000W0mG8GKo60400uyF30008q1E3L8OmLK9CMl10G40
+000WW080uKU3004010002n00000W0e01081000G2000Ol400408W8XcxDuF_40G080O000W0
+00G0G4W024tRPGW@6W0G000020008JP200jqdGMw6000040K00000H000H002000X00G0000
+00800WWUsC04H000004H401G019WA10YGeeWG220084201400c1G04G0120K1YW82W02GG12
+0808Y0W2a00000yG3GdP6W0000WY0mTy600CGm0H0A9Y028mGW0W201888W12100G0Ov060O
+80W00002cP65G18G200C00180000Ca281KHH0LAW40O000901u014000aW08000GW00041GW
+00040ybV34HW00WW14eX800805000Y0WeW0WI0W0e2080082804W00800208031GWI1n40I1
+03S4000aMd40H8HWO222yfz4cyt000G00G08080H804O01028K20YTuD0WAn00W86CNC0000
+GWoWGWPcXYe080cP610006004400BW_@l10GA000104tj1000f0X8Ha2W18C208WK08108Oe
+R3a00I130G00085f2008880aA0Y000180fG000010aIA0s82Ge000041d5W100050I00040a
+wSR6050082000000oKu60200G0W050S2800YKa24pUaFX5_D0008mXwC04000GG2mIZ600G0
+0aW1000040GK2030G0280mH00eqK30581103X20W0208iG0058GG100128041IGcAH4G0H30
+O80G4000wO0qnl10001W00200G0G8000e00W0xD8GC300G000800048A000161Wc0e10O48W
+880031G1G0@64QU200a00000G080u6360200G0002u00C0008O220Hwd00G10000G09i8000
+0007W0Wc03H8O1n14205m0X40XWfWWm14002W10000KM000cBn0000W0180G0104of1002H0
+0000WG6u2S30900000004Y1Ksj6041G2WV0IyYC0006000000W10840a@TmGr@C04008IO30
+0A00G080041001004040002Gwlt020208223H0GWWAW20G200W100149000I51000Y60K4G0
+0Gqa9Scl19sRG1_C0002010008G0000100401009GyeT520000GB0C6O2W00010z7W00GsB0
+80000030W0ek0800eE0s00WG0sIOx6000eN0040mUX_iuC0040206000H@4PlP0ub6oegD00
+40200000Gj0000G10i00000N800mSz90060edS3g@tWiuC0Wl00Q000i100L_R008o6000R4
+0008Y80QJ10000ybg00WZ@P8dD30m@H0G00eXE3000W0W07n7H4W2g1G000WA600b380Aw00
+0W1y2G_uF@0me60mF1000HxP00000e3FP_deP0300mK@C0W@@B1E60001ug10qL30eLV0GPg
+2Ws9YPafAxA2HUmC0U7H0S7000W200350642Wn0eu_40WP700pF06ELWi0O0g000XjP0YA00
+6L064tWn0W1g080m0G9QEWIqS6aevC03pTmQ0f0T02YZ100C2000Y00002500080g8t1G0GG
+@900cA00CH0C04080G0dXR001004H008Y04Oc18003C300C600miKvCG0O8g1m0W4oJ006O0
+0ND00iQ0_l00yn70M_l1m0300000epC000r1801q3W2e@00mJ82WF210000V4XCggA2KLL4C
+pg8eggGm3FGLggYggI3CpCWcH1098000sjZunR3y100ayV200H0ACo0N1mt0G1W05W8300L5
+00kg00SL10mg2000Wm7H0mRA0WFMLa26uX3pm6RKWgU0Gt92WP1cGKtRK7U2JdH2000Qv200
+LWtoD_UyHT2BhHIBu6y1B3LYRGqtF00mRe8DCUbFX_7PeAlJ_K7Zlq2PU@A0t40K4E6z14I1
+3s4wk10200YPoWluDODU326tW2nV0000AO10WIp3fSGOcJdXQVP0048810000G8W9xQ000W0
+Q0W2@@d02G000030NtR004G080000020C00000WHQ2z4Ujt00W4195M1010000145SPGxG6S
+yk102216ht0LK04x6Rmqza4963A000G140808802K0000W2X00KW04I104mang182000LI40
+028020100000O01008010W0GG028uv@4000IaLV2000W0W00X000uVV300GW08W000G14W02
+80G50020WAopWP6bOe@4c1r00210lTQ01c0420W2000a04040W020A00A0GH0003A08418KW
+0000Y00248000Uu00028010000G00600000028410002800osF10W21@@d0018G80G0XxPGb
+o6000W0802001428fO5W000Q_sWpCm004GHSsFCYV2000GI9p00010jbPmns6800000mbd00
+0Wq@D0001200GWzmJefL900400G00ecx400002G8W080GO3X600000680miZa0002000G200
+80008G5@d0100YvyD080G008WWjxI00000GDBYbzD000W000GWAwJOrZJ0G4H4TX1Y8200G0
+06xv9bEQGmO9G400082000088W00G00000H404FU204000001QD00OIT6kmb10G00JePGndO
+00G04G0D00W0O0W9GDzRmH8a4oV2DeR0880WsqJ0211GXB6020Hyp@400eW3000e_73AGFX9
+EF9s09010arsYA3lRGsR60000400Y000G000a0DeRGieC0Oj1ezz4000800G4eRU3MIrZ9GV
+8w23cjZXDNtu7Q30030WW0000820804202G004n000040W1408348IK108W8841G000080Y0
+000009z10WMxD0052W8040IW408800oktW5lD0G00ImeO0080GCnK04W08000YG41004m008
+00QXqGG000G10008000010400G000140040002WGWW08WG5WJ@J000WHfz600OwJ40004H0W
+odDm0040008YP929T@4W4C00000LG122a114G1I400W86RDaoOJeej40400G4fa2180000G0
+GG4G0000850G0240WK0008W4000000H70o@tWbvC0K00081WWsVE100851aIAWaG0a28WWO4
+DGA140X80mPla02008qm4000DC0i1CKJW00800WO00H00200486I48BBQ0000KC00000Wmo_
+oWczD8Yx4wcDXGjI8t_7008X04G0108022Cf0W1880H00O8G0a9y940000008G000X80000W
+C844004W0WOG0010882e5X201m10440G00100000087EGU3cat00108Ru_Gr@9aXH562W0W0
+001Y0010WO00010m0W0XKuHrt9i7S2ltR020000022foRm@a604008i23000008R3uGO6I_t
+WQ@JW000vtoUW080I0000840000040800kxDa__J000GKkf6iJk14W_30000w5ok1100KWS6
+80040850000e5000qa14000088400uMV30200i7V2JFpm3RFq373LYd0o20WpfJeIwA0mdVC
+qY1HJZXP000Y000CO60Y6rW7@D0001VVwF0WCJ0000@o@6uV008yS300006EU2fip000yH80
+uZG003Y2mZW_J0W10m2f90000r00000mmC700060300GK000J100YC00C@0G080m0W3oUp0c
+1000u106Jr00000I2W000008A000X000020WxzD00200000Y9DUuZ@40WP600pC0LY8We0m0
+G000Y200O600qnj70GDr000000087WAK30000C@82RfOWh60Wc@J000ijj5uVg2Gtw6mD100
+GOB000000eD50000mEKWF0000FX80m9zxJ0G10wH40qc2S300u3H80000WF41WRssp9lYJI8
+t600OjBXyA0402ads6FiXHHv6CLU5BifoEsI0CE08Vy400014Xk1l_mGgvCSnl1Pfp080002
+000G400gxt020Y01mbJOxO00003k08GI1F4wkDtPQGJx6CNd7RuTIpa6002000GPGuyI00WG
+Oy@4G0W0Sym600G0IroWAwJ8aU940G0Kmk1zeR00W0WlvD8uR30A00yHl14002EEp0040W00
+00FgtWOrC0up0GS0600001W0450400X000jrd0008GW0W0JKPW120Wx0C0KW0008080W0180
+00Q7t002000W008C0G0400W800Gmu600000W0W0000G080W0000G100W00020400400100H0
+DrR04W0008108WW8cPt00040m2000040020Y00G0200GWDzD0w00oz@60G0a00800W00X01C
+09000000YfyD01G0G22C00202H4100W00G05400200481G002W0400H08WN@Du9F30000bOl
+1GW00c9r00010n@R0W800003000W104C004000420000012020W00Aszr0GG040020001210
+0000WRPr@602002GO00000200a016a00000L02040W002W2006G0000C0050001GG0G94800
+G4001W00W0002G01000W140400GG4ugV9W2G004008Nv40050W200Oq_400080W020G00G9@
+600W400004002W9gC8sV30GJ0yxT2020U0W00aFg1HURmT_L04000010402004008020GG00
+0G04001000Y24040008100004G04W0e_@72Lp000100411W080a1Y1V_@muI90G000003ORz
+6000Wr@000808WYlgW000mLV6q_93Bbm0020WubDetD30G00000440W0Kpz60200ixnAQfBX
+58VePC9004G080000JAx@@900G0PVU30404Cvk1V@Rm@NCW000G4C40000000K0DJomh7Oab
+U2haaGHu6SeU20001txsWMrP8oV300Gmy@l1WzB0Yct000059nR0042WKJbOiG3WOW0KBl17
+1O0000H00200W0G00c8aYR2LWknjX6KUM51Y_Gmt9000W0000dy00WerD8rR304000100000
+04020WwcJ0G02nlz6048004004W000H4100W00k8t00080008W00W1KRl1002G01000GW000
+01GPz9KIe1W0000880H004WG20GHX90400000H0W00WuvDO0z40CGG10G008W0000v500040
+C00wnt040027sd010G0W018juRmy96000240410W0W441W8410Y02W05Dk100AW100401002
+04GY002G00000440000WK7u3PYO00804Y000jhOmZxC00W0Ofi400GWyjj1RiR0uT2Yu_D00
+0e00X0B0G200eGWgztWr_D00011G010000400GY828410G4m8000Y300X0W00WWY000WG0Ka
+204G2G0H64GGW0000fW00yvj1rGdGRu9G40000A0004000001HQz0100WWeCeyP9000GoB00
+u8S3000020G4QUU3QrF100020G0e0W8GyBW1400YYtF100XWv_Rmn@60n04W020W840aNXIu
+L36EpzXoFU8mFC__t000qlHHd00W002W10GWG80C0WySD3010000G8aMf1z_R00824W00045
+3e0210000X2KW0000e08028G00m0WK200G0e@J3gqb1YW80BadGfWCKwl1@udm8w90002CFa
+40z90G1K08kV30008T4d135Q00000WW80XecGl@600027W0G013o21C0400834IuW0IG1KGa
+1X10WG0Y46800a08008002enoA003H040000C0mMZCyXk1bPQmBlL0000ag00oCu68I00000
+1040000H2W00W0W2004_c1vE_000W00022010I1HAKe200100M01H022G44A205e000em0W4
+P00000OalxOe4T3EErW4tm8sjAwnr000GGLmnmkx60WM8AMO600a10000i@W7GK00108S0H1
+0040mXEwIG08004S0WzgDepz4U0u000GL000Fv10002cP4WtK00@3WI@D00kZ00002@m0W00
+009100yJU20G500000000T5000SHw9000000600000G01W100GZxCt000283ER00Ha800020
+040mCs88004mS01ekG0GY30WKn00Xe30u@Cc3GWy0Y0iEW0OE000H8004X080OmN3_nt00G4
+100W0W0010202OmD3wIF104000G08YTx110002020I0t000SzNWR02G0WLWD00Z100C4008Y
+000W001H40204e6G38200K7W14L080W0g080K1G9AAWIKK2aee40315WA0H0L0IYg0445500
+0000Sr0Q4_1W300ZQt200GZzaDWc000eX100wE20y0H0000000m300000W5GI1001@RW3Y0W
+NWP8n@4Sm3FGWggYW7E31Fy02Uu1cvF0CpC7OcP44ym3e310WyflQMWiwGBarkn8Vi4000mG
+D00O4y7g9BXwXDO0S6co_104G0Trb00G0WRn9foMO000000GegdSCQ9@XQpD8hy7YaxX02cf
+CTCcrC100000mN0Ia73000WzfBH3xFyFl10004_P@1001000800G0Wyzk12020004004848i
+U6008082G000G00020200002008oFq00600000Wk6t030000000hVt0020000G00W8WaGE30
+22GMyt00880fpp0400YZyDuFU3MptW90D0008Hly9W0200I0042000021000G80014W000uI
+D300002028014W80e0G0G00002A02100200002019020O010eO006gt0G04000qBX00000G0
+0W000200W2FD0002820WG0G80W010W4W0W004OqU3G014W208000000042000100084C0000
+WW0XK0CW80O02O4G00W0410izl12000W00G0801G000mPU60WG0C_V30G0000G0G00024000
+X040G00403800W002400000248008010aG20G0000003040000W3A0000001W0Tmb1K20000
+0008W000810a01G21050200000IKDW1tOO00200038000000001dZg1p_P000W00014zNc00
+2100m000010Ygo0W0020012cvX18400u140kht01082JzR00GWGGm00bzR040000004000eD
+710K1l4W010wmF10W00h_R000800W229vc0400WU7D08mW2G101WW384200000G010G00G00
+0W012180nvd08G00084Gd@BX8W0WwxDeHT30100ybl400kmpgFX_@D8Zv4040400W04202Gj
+X9y@V20300U_V3001000P4H0a080400140W0W000040000W000411808uR3W00OqYX1NXR00
+10ea_DeUe4a000SxW10000C9c001G8uDV3A@cXawJ0W00mtp6aMl1FMlnBq60W80G0a0000W
+G10200sC00004H82C200011C0WXpC00008181WBjbOJH30060Spd4u000gxN2a0X8i10HWY8
+0iwF3RIQmp@X00W0y8K300010094O5T6_3nWh@IeFM304000W40ia@4AVt0002OD@d00Wcpm
+_CG000mbk9ytV2000G0020r3E3r17200G80m000c01e238W4H8I9aAW2qA80H0W040H81442
+G084e0Wqgu60O004W04Hdz6W10G204410040008WA8080400W2800G00Kl@60K410008000H
+00100NNR0002000CL49K80G04108429W208010W00002G004000600eZC9M@d10W88WHL0WC
+oG06fGKWO01400K00G5W10IG8Y0G0GG28080804P04G000900002000W00m40004G02G0W00
+0004021101W04O@B6KGV2M3040180000W00W00I00WP_DG100020Y8410401W8Mct0001WDs
+dGnvI0001uEH301000A00u1030G40e8fWY480182HA0000880H8500G8X200I1mjx6008000
+1850G4200WKa2W4W811GAG0G4m000a208OM484010809000000G3tKu6001000009G000200
+0000109000002W0000001WAnDu8y4000GMkV582A0kuF1820K00000608040CWX020e0H100
+0aO2AG000OW14008W6W000WKiD02W0W20Y800280We2002WW40038G15G0800060Rld0mg2W
+MmJG208mt@6004G00080em210000C400000420G087V3G480azm6020G0W0080080G00Y0G4
+W@@D011842SG4140G0WW00200G004000m000O0000e0080Ius088820G008e14250XW920ma
+f6inl10000na0004028z43wOC1004W00801W00Snl1K002000202M0evVCs5D1400GjyR080
+020002W0Y0cnn0000G0828m03010400700400000249g000004a80W0004H2K002e00a0Y40
+W00020800G0X20W0WsID00G8r_x6001G8sK60Aa000818f030000tQS2TzjHxz6800W50001
+031000W0a00000iH0800KBq700W0Gl000BNR0g10000e0zkP002000208082w504W0mNeN00
+080V10H00W004001HGySl10tF8L0000G60OwV600HJ0000W300Oia90002fCE3Aft3000021
+mW00G15Ag1041008GNP00VK40W700mC0y13882582000G00OWU34PcP0W@0GLLbXggAQFyGq
+oigeTu1HxF0goX7Kbg0GLg2D0HWRWO00GEw0WK100000V1AH00000000S7W0exS10WG40000
+0ko100G4V600000W2EHq@X0G08I10Ga2eY8545WCWA01mO000p0006L00Cg0gOg0K1W0G500
+4_c10400Os18mi3q1e3e3G1OEW2Wf050pS00cv0x4n0w0A0a1ai@D00mH400W850WC4030Ar
+rWb_D00I4004C0o080K1W2o5tWczDWP60mAv9yIl4001000H30mD50WFYWhsK0tKG0kf00zH
+40QL00qg10eL300u1000mWCW00C300C0H0O600K0OG42zBR003D00WN00K280O0e8O00uvV6
+0FS00GLAev@A4100830G428000040008sHAuHl@60000Kn00GYQUaGl1VT@mCrR0000Qh3Co
+uMYVotufSC0100SuV2rvRG8_9apD9@@R00WXg2oJecP30021ak460G00QBtWE8DOGT64020K
+gU51d@maQCi_jAWjM0M@F14W000G00wfZXQGzOsR6UQtWIpVO4T60W01KVU2T0amYua0000M
+304GNzaS3k1jWdGVa6G008uS1CsBE10000GD400828KNl1NGdmYl90080Oby4Yqr01200002
+04G00C1l100UKN6t000G00G00002WSba1blbmooCSAj40K00U@t0028000G008WK000010G0
+2WX00GG1C0080G840000000K01820000X0m00000500200Y008mPv6G080e3V3EndXybJ8xV
+30kc0Spl1pvp0080WdqDG0400H0004100ZNd000804000D0OGs_90m00004K02A0W_zDuOT3
+W000000Y24000000110O020000005yHJ2VyR000O0W00W2G00_vFXEiD0200uZx90000b900
+00W0WwDDOoV3W003Kwl1000250WOyeL2LKRmM_60022ud43E9B18400G020GG000G001CG02
+0014m004xLR0S018W0Y0000G4080000G200100120000000X8cy@XJ@D8W53wXm00W0000KA
+h_F10800JhoGHr9q8v6z_d0014024e000G8Mfp00O6PrTdmX@60080G4m000a0WZ5IehN900
+n0KyV5WzA0IltWfYDOxE30C0001000208G2cXSNf1bAa0800200910608000920208XG300m
+0000Y004I402200W0006000001a9U2NdR0W000000mZiK100O24G10vVdmfbdyFk10020040
+1080YynT30240K@V20200000YyqI5lPPm3tIaJ_3hdp000E9000040GW800000W0S4bJAjpW
+DzIOHO665D1000GW03004800WO0G400GDy6aee1vlRG4UOq6l4WfG0ktib3tDeyU3wnq0082
+6410W0000aMl10002WG00OcO0000e048Y0W00Ga1KH0200021h240101a20000000222T@XR
+uDeDM3oZrWYuPWf00001WW7LC0900A000aXw2PhP302G004G00g8IWOm08020G0408020G08
+000g0G3WX100miG41KO00G42010020000414e00G400e40G230I4OD_40000r3j1000010e0
+rgk1Bp@00WmK21008188020Wi0V2G0G0koqWBLOuIR62nF11I8001O002Y00a80e_V3010Iz
+te1a200W0f1G01400a600aI000G42001000W0X048q@AEbV3G@3G@@p004800a00I000U0sZ
+VXC0098r2@60A00GZ800100000X00040000G0140100Oe0G04WW0020000200Kdi10803X08
+00108QHS9QE@Xj_PmjG0000010050zlRm9Hd4pk19eRGiuC0800WW040412O00086022001C
+000O020A0203I41G060W001100280PNL6s8nWhuDOKtA00qPyAj1W00000042m10e9R9EI73
+C00040GK0200aOX1Pgd02WK010100HWW0G041W00000200X0K2G00W08800802W1O42Z0040
+0WzrJG100Gd@6000We163MY@1GP90Zed000WW_emOsx7kys0000C010GY5tWyKD000000eF0
+004WU100Udr045000007GT0004GTeVL323l20G40W000Ylg2000aU1I0_ad141009PHIaz6G
+0w1040GOWv9aLk1A0mD90WhAWRsa00001kf00Ur00Sp82Dp0V00000WA0000uZ80G5000y00
+00000Ge00Iaq300M2000000WgRF0040uZGCnaOJ10em1300Wv300ta00cgK00WRwJ0Wh200C
+p00Oc1CJ414502G400WA000H100cR004L0L080O0W0G000eo3m6800000G8A100W7tIOVV3Y
+b_1m4400W0000010111OHS3oQFX4wheIS3oCs000000mK100H5WB010608Giu6Ga80qZ80eD
+5u300mDPkP000mC41W8410KW2HYG400eBV3kDC108Y80000mC00K_W1C300IepWyHOGN00Gb
+z6m0308USO0Gt0AG40qZ8CWh5e6r000fVwHauv008BO4TLozkYmlb00G0G3w9qnc13SJIe8R
+0OR1edWJw8lYYt21088G5SdaU26000WKF00axDFFcB1000YEvEvq_J0006NFkAnv@m3T6yGA
+6RHd08W01A100000WYen0030102080404ivr3NzQmZP647V2802010000WE0in63004GW008
+0020040W00001000G00040W00000H0800eUgD0200KuqIW080040000180108GnGRW800H10
+012400410G0Y8041000Aae20G010W20801000000540280002420B2R014WWWwD0002W0O0W
+axD00208020G008W000mT1408060400I0004GWA0400088b4G020W050WGJG68000OOD3Q1p
+04G020002G0000H2000000080G42000W10G00GW020014G100W40828084G_@t0013W2O404
+a0080G00004000502028246G8001yUO22010gtt001W02000Art01040408004G000mf7008
+04010WW0WW14GD0820002o80001010WG00O0000002G0030900200G0040801W040000W02i
+m@4W08mSlj10000@Sr0a0080G000W0W00I008WG002000440220GW00eCBh17@Rm_t9C0l1l
+CR08GWWj@P01G010000Gu7eL9bGZ@609800GW0mVi600400GW0GB_L00I0OzV3GG00iNk1G9
+00002805200220W800O02H40G4102200004180WG0z60180eKE6GY001H008CL36Si204G40
+00G4EW08080uyU3000W0C00JO00mVz60C80Ov@AUlr00040Y0W0wzI20H02021YG4002YW82
+00100Y8280G020W0FAq0CH408C200O40Kbl1T@RGXPF000I8Vy400H00W96500G1W00I00Ga
+I0100081K@l1hBQ0004008407yR00G4082G0o4nCBPF12400bJPmtx60HW08yM301G0Srl10
+W02G04WWW800001080W009G0W00004W000G400W000G2mUrUO1AC0cD0q_l1W00806OO4@l1
+GO0809W00040K02018G0Y@mCumM38000agZ1tUR008200O4H000Ygrw10W010000008WKzU2
+0202oLtWWrD0004HW06qZE60004008YCsl1w54G0000818n8KS30080W0403G000120ew6C0
+G8G104000880hwP000WG082a0002W808000000CIn5Z6ShV2AIGWW424X808KGr82CAQ61WG
+000Gg00G0A001KL024H6b80200800W00Y004Y1umM3A5oWT_J0000Q_660W8002q000WGBm0
+mWW104085W04W02eK0000280G2G04OWG0en06400CJ9484000G00W000mC0400W00088Y8m2
+P0AG40a04@Iq00XC00004X8GH080G4000006a005H0g25A0G0Y0G081LK5WH0G8QG20AY808
+W0H0004W8018Y0WGYG802881W8H0St36Y000920080000W_20011008C82YGEC1450eX1a4J
+408K400C800W00081000020804100218620GC0cn8p8IY80uYK34018A045m8L41040nNnD0
+00440a2WSlJ0f0801830216040K0008Wy_k10G0e0G24zWR8@sp0h00WJtD82S3grtWBrI00
+00IuR6000a2000e0200I10Y00KH8WKWGa8000I100G4000WK0808X8XGH001K0400GG50000
+KW2400W210AG0120W1082442002HAe020000D1uNU3UHnWtPz05000000000pCDyR0em0W_q
+DG4X0040032000020e0000G41W2200GUY600200MG120AGJ50580fC0060G1400G10050010
+W4I1000GC04W8004000G0457G800W41W00W19G04m10003G0440381C1G00006m0A0000084
+000000G84000G624be7WHS3e08080002WYW808000G0100WG0W3mG40I00820020000a0jXR
+00020200GW040080W060410203W0I040W08688444000804020qvu682W0104820GG0gA440
+201W800A82402W414000800A0G0WG000y0g1@2728000000iU2W0M9EXgeD0401mz@6828Ym
+800b0400030I80WK00a00W8000HG00G04GW00401201208I081400180029G040040W000Ww
+00W00w00000A000000Y40400078I00004S0W4@D00G61000GC0080024MrY400ccHWd00G00
+000a0010080KdTB3ZcR06eF2G81ZU1W01XW1040Y0r100G8q1q7040anN0G400m9010GG682
+008CI4nmPWFMD0NDW0nmPWDB0Gh60WMDWR000V8Y00220yX80SLm00U00m@r7C00WV@Fj@70
+Wwx10000Hq1Og@60a7e3Www702004f_R00WuG4T02qP0qV000100Gkw70000GDp700004000
+_9Y1S024vXEuu3Tm3FuWPcHqLLbeFS6HVu1Y_m3CpX7egg000@3zN@6mC30We2O6H5G508WA
+nmP000GK20We4G5YKWA0G0C000Y00041000G000m0cUZXD@J0W10mvt9000W6G0000300600
+6880C0G0O4Ek100030000A0C0CRE3Qgs00OO00mq1udf3OFG7WVW20T050Y2A0CT00Ow0_Ha
+1s3e083G089000XA0mD9W000WR00G008W00G200W40009000100020h600_7Wa_PG4v10000
+6w200jzp000uOV100HAa000bd85C004180000n10000V40uV00mg300bV60E_B0080K78010
+000WW1aX00e4GePO2mqW_gu5CW00G0iMt06840qG0C000evW10000WQW7WQ00W40WWucfzx4
+YqdXLyD0Ke3mPTmKfT8jKJIir6atl1z_RmpV6axP5fb@mwrdSoF3RXRmpu6aSk1rPJI3w9yR
+U2G1000020ioD3@_R000Li34WfsR9EA@aL6i10000O43WT152100mgq6KJk1fJP0W00W0ZC0
+04000G080008LoR00003004004810040qHC3XyO0200WOTD8mU6ozqWZyDG008G2y60A0402
+8008000084004000WG8G000W00004004000000OWkrLY1vJ0X0002eX046000WZ2KmG4W020
+20LH000W04G000W00G010O000W800W280WlrJ8pU321tW2sD86V3_an000qT0Y004000000W
+00G0qe_600W0010040W02K00008W00G1000080G0GW0000K000010000H04@l120W0ALrWzv
+C8sA300020a0220W00X00O3000G001m2210400G804mHu6800Y100GoWo64bP20002008080
+10eKk4s@F1mXB0G002or_1001048W0ANt000800001YdF1W00400001A000W11000GG2294k
+V2080000AH4ol16O084G000G0W8x03AytWMxD041CGB@IyVV2TsRGPq60000J602Gg@60400
+2Y010000400W40900010W04K000Y8010O000I020G0C0008WW00000G1T64pV2D@pG9@6800
+0000a0W1000W0a01000004200040241K00WmoDuKRI0001yVl100gT100G0G000W000GW0G0
+08W00104000000XK000nb@9014002G00WW0WR@J04000WC0XPgJ0G0410G400G0G00H40990
+010005WGW8b00Wm00042W18W00a000010200028390W0000900KNS800400W020400mOtI40
+0W02000084G0010WW000OWG00400W8002420000408G820000m8000002pmR0CH000000800
+a0W0H000Y0208200000Ga000G0gkt0483mDvR00W000m004W1G0082ytk1jhMHtwIaTD3000
+estr0GW00tmR00040Y088j9P00001G020G40WYnc10400W00800100G000041HV@6O400OX_
+40000100Y4400mJ@6CAY11Xln7vLy_D300WVwjdXT_D8lU348G002W220200000mJyD00040
+00014200040a00OfKGU2n@R00H004182G01e04Z128P051e610G0G00808224fO0e0G01m0n
+0OR960800eyLF00W8SRU2040001N4108402020001aTBC0W020805G0Y0X0E0204HW88G8AM
+U30001020m0W0G00W0G1I2A8O8WX0X00G0G400W80W0ZdtDWE1200602W846001eGW8K1uX6
+bI5XeX824W2W8K10e8090001H6m00Hx6C4m56000848802H4000008L00000400W88G8X0Y4
+H12L094YOY81009W11103C402214X0G088YO4G24002080008YWH6200a8W0KG4W02P6000H
+100H0m8000cZeAH02008WP8b0G100I00I9014XK00WK2000G200W0000G002f0000180a200
+g@hYcyh000000WFm6vP080140430030G@XP01000YGG20201_zsW3tD000G00418290G4080
+oyt008500WG010G20022000027000W0500114GK0000G0L89aCY00G0G418AAG000GW0e010
+200210WG@z000050WW0Y00800000adGW0000000LT@60284010W2eWW2000GniO0010YEYOu
+iU3054OWIJG0JG1mX@9002004W40W01000W201O_08e4G403n102Gkt600AG10400W3YDW2e
+0W0010100CeX74100cxt00Y00000OGW00000000O2200000WO840009m2YH08C1088201000
+0WW05O1wRt0G000000G1O0010020110000W01W00dlQ080100060P@RW008eZqDuGG3wct00
+G0000G4000G4zI2tk7Y804W@@D00mJPOuC02W08Oy40008yjl17sdGcz60I000039W005080
+02I0W8Azs0G1020I8K0200000fN2000WV100G08080000r20100b0WK204W0j0W0t@RGpR9S
+vl700I0kut0mkEaXXp00W50000W21o00000Y100ulT30200KzZ19pd000WU00000S4G42000
+XM00008W0G000I640000Co00QJ12qg1S50082H0G008m00GW00W0100020020000Ae7xR00t
+4W6wF1000BA100000W_hC0e_RWQcxKWJ0YF40yIE1uVi2040W2@9E00WRAu401kA0gF0t@R0
+0KvF00W100G00000o500000081300O2G1c7Wu5CW0Slj1C00nPWAWx0C08nj440W100YA060
+0We0qWVmDO8q4MM630W00zlQ000foPxDG08GW0W0WOuC0040008800880m0W0W101y8k1800
+00800W00GWX1Wm6v600084000000mG10WW2OF00WE0y7a14yH48800uV00G000W00GG10WW0
+WP01000QJ1O600SZ240W8521080G0S60Ak0qV000u_0W4cIueU68000Wxk0O2@400080G0ad
+U0AeD0WTk100s0001GyH0G118I130010eWvrpBY000040o300nmPpKy6qsj4000e9B00SysF
+1y@mL_Cqy_3bZBHbu980220020mm@L00uhggUC2L8Xnzz84E36NFdkpJeUyD0C30KgE6JsPp
+BTLqsl7lwRW00010WW0n_B1000MO200nrlHmp6CR@6JSnmVu908208rV34100SoK2@XRm8uC
+a@l1008800400008OHE3EeN200FIbgdmhw600200008Gnw9yPc10W00AqtWfoDeWz4gOtWTz
+D010000W004002O00400020W04m000W20W05K002002G090W0088mM30014e418084G02400
+aG000W02G010KeG29fbmrx6W0000u70Y000GA0002G00ILp02C00D5O000W05000AW220005
+00201004008W000G1R@R008900000DWRmRyCaTV200080GW00004WA080000100K0pgR0G00
+000W4jxRmR@6000Y8X@40001yzj1t@R00280000aA200_@t010W0zTRW000028G000000G0C
+aMl10G0140W00220u7N3gitWWIDen730100CWk10G00G010W420000804A000K009BQ0400Z
+b_DG000W00011W0200G44028000300W41400004W0G6002@l200eo0K00023200208RD3AvZ
+10000003aW002ilH2vlOmDt94OV2J@dm9u68002000104W0G0020004W4100000Wf4yAQct0
+0400banmG56000000G4000000fk0dyO02040YW005QRmGe6iIe1FYR0G01WgYz000Omg_600
+9000G2Orz6020e0002W00084m4082100G000W80Q5D3w0m001800A00wmtW0nUO8x40003mP
+000H1000000W4180WY04000q1k1000WsinWLGPe8z702GG02a00W0040I004004e000bP000
+2030008000m00Gm0G824AQFXl@DuLP6AhtWZTCeXq7oUd100nLFyOGLo9800400800049G00
+0802400200i@l101000040y1G2Dpd080848004bDa000004GG2e00200G4080086F30000W2
+020011nDSFW00002104004WAfP86V3sUb1Wq90nnpGHMC000400010800801000000pdBXSy
+D00200008Wp_D000140020000G0004002a21aY20g44C0Y03BG18Y0G0GmAH06809000I000
+004CPcO001000080020005104gY1bxRmWZ9CIh1W010000mpj1W0840004e422010G000I02
+X408200G0a008002000406ZpWBTDG0800G00mg_J00212GO40120G0Q80846GWm001C400f2
+G0I8W2WG0HGG8008e00YQG40W04W020uH88G20WW01000004000500010G000OW404G0SOL3
+_tt000G01HQm_i900GC5009002W8G00881O20Z84000G0610400100G0Kg08GG080108008X
+0ae000W0000E00000WK4h1r_R0G0084104W0808481148OG0G9520280KO0a2100Hc0GAf80
+aW18GaI08100200feaGG20GaYKG0A0100210Ga2W4OcKGGA0W4HI95081G0a0KHrR0e00021
+00Fac0OG001000J@cmFy6y@l1I00100000IG4W0000D11WpKC0800GFq64Uv30020840002W
+020W032Y158m48CC1010KW0402X40K4G0G20G2J0048WH20G0G010Ha188260H0800A00YeW
+miG008W0WWo00G1004500G4H0arl10G02Jds041G4XnRm0sF00GWQeU38028000000GX0000
+001b01uz00001G152000008KO0W2044i051O0K0W50404u0EGE0YGO04040CWJKG45W80410
+0C02420W04010G020S1480n8m2G00i800184X2G9050Wa4m1KG010G0K08xV300W2G10000m
+L11400009000200W00G084W00000Go0102W084001o02G0W04E000P00XP200100Wa00a4d1
+400010001840008W08000800G0W000200W008202H40e40A40041800K00G2X0W08G04m001
+2084W0040020e20020G00A8I200W0GY004000802K800WGW4Xo9DeeS3YxF1mg20G000Uxq0
+H800RjR0G0002X10JZQGwy6G00000044800ajNJe1L30GKG00G104H0400020208001089z@
+WWG8pB08420305000eV2iC0xlW_J8G8id204W0W0m0080wD00X0yNeN000AGV10HW8W04C04
+1zX0Gm0qBm20410HX0007JQGpR9WN00eYV60008bml1RyRmqv6800000EGqJwIiKf1O000Yl
+t0W40G00WMGO0e0bW90IX0YW2IG2a0a0E425uc2AO2G2mG8aW000XGeA0000yF0HIr7YsX74
+j@0u1@1GLgIb@1GqFu1eLTS@A00qem90lqT1000K0WyiDGG00eW00G010G0G00_ja1800WgE
+00Qx@1008YU0W_O602Q3004U000010G0S7W20y348e3mFmFWE0Q0C0CGP18047G00_100y3u
+2u7a50F0300WE050m1A0axW40t1w0k3s3S7u7uICBmb8u09HW9GY0J0c0008040VDd0ml188
+0O0G0m0W1W103W3060Z0C06102C20C04880OGG0m0G0W1WG030XWW0211102020C0408040G
+088W0GG0GWW0W181130606040AWRoDWX2A000GGW4KGWGeW880XWG01Ogy4S000q_F30yz@8
+uX700LLn3F0W7UGGFyWW_R61Tu10ILLc100yVwx9000WLVmBWggI0uX7y0yFcnCUCZP10m@2
+W7u50Fu90Um3UpOcggoCcPc00yF1CZP2OcP4eggmiPc1UuhYggA0uXN0Lni0CpC0KLLCBmLg
+ILu1Ga264_iGlx@000J_KuGQHyPg@_40uF014SLe2HbCmOVjBHrud00uOgVuD_YtczWJuNP3
+002022000008mGz6Ski1Vz6Ix_C0iX0ONACgrDaUyPurO9G00GKMV5Bqz00000a001zxvXl1
+0Wt_XfZi46zVZTbC0W000008W85CW00080000008W7y@mQpX00@TTL@PkB_XPnDu7Q9o9@Xd
+xPO@V3IvtWjnJ8tM3M_N2mG40JYjnN76lEYktvp0100WFzV850AY2O300WtVy@ml3j7fG2f0
+GHK0e49i1a300IR1cLPW9n36I1WYe0y0000AM00WLQEPhOLk9CXE0O850AY2W400040700I5
+uXTb42008O70Ea205H1W20000W100f2ymAA@d2p@duyV9G@FYq@@jD600CWEhPe303I1WYe0
+EfrP3I5WX1@4201I0G82412000X8HG0008G2411W4OA0K45m924000n11cAW100008210iCe
+G00IY0GGY8100001980000GIaW0Ga4I1WYe0EH20008D0oK1C000W311000a31u00GmPE400
+S01d0000mXZK0e8AWD02d0CCs@1hz@lS@tht@x2_VkY@VBv@JuE60yr_0F@@lq@xRz@zQ@Fl
+t@lB_@wc@Vkw@Zx_@to@ljz@Nh@@q_@Vgx@ZA@@dsJ60G0mT@@001000000827W@@F10W0mo
+zo90000000Ar10W85oS_V300iBFOjAN8apF2Ly@lA0KU0_@t31400zB81001000W2@3aGJsF
+0008u@@b000GH000u@@D00080020vk23g7m08000DHO0000K8800@1uHa25108Nv@VF0m084
+KU22000000C0000W000Ia1Fav0F@@72es2W@@31W04GV1L0g12eM2CY79X@HO8Z4R000mWS0
+0Ox4L00Y0SV23RLOGc6FyYI2DROmr6FakW1pBym@@U0WmmEX_AG000SCG22084400000W800
+40000W80404000Y41010300O8330410qtH20001MDnWGFU8q53MT9X8B2v@V60700a4p6614
+00WO00000W0004100000G0C08G0Y0WGGW0000008208GW2W@@N12G0WfAUOF1O_gX1o000@@
+l12000801002000G00000W0800qzB6000I04004A000040m3z@0100100W0JQyGy3F4fGB00
+u1@@l2200W040000J0100040010I41048418080e200Y004290GC0GW4410I06G0G0GWWW20
+0048qQEC0002040000W900010hzaW000YURC8n5O0dG0i@l400GWcbn008000S8YG0A00000
+640041040g82G4200G20KH0020m2CW0828GG1Glwp00W2000W0000e000H000W2K0aGA06S3
+W10820000G1W40e@7L000GG5008_6C00K00021G0280000H24W0bFOGrF6G01000G2004G00
+0W0z4P0810W@@V00W1000000G40f08nQ6j00e2RM9F000804GG005G0i01G00W0m2A000000
+4001800WG40AWW200G0000800002v@V30007Ym00500WCG20H0G0G2qG0101400100A0G004
+04Y0009AD3O84W@@h0A00n7J600004G800I0W420G8008W800XCxa1000249000048400132
+0000G20@@R000W4G0G004010100000020b0G7H6aIa1PwOmGAj00001g00Gg7Oyta140010G
+G00811e2334500002WGK09000Y0H50001006Hw1m22Y00mG000820012000B0048062i00H0
+I18100900002@@N500gzVMX1W21W@@D00450W000EG40thm0YE0000W38A00002Ey@F300WP
+40W@100@pC00WPc1W@@B2ig0m@@R8Y2000J03e000020W800J020008YFK310W000G0_G70y
+DY0uVc10SW0300GlK900WJ4n5a8YBWB4JGM0c0c0KY91e496G9IC2IaO4m4n889W00J0LgJ2
+@@J2000Sl100@@N100W940We40108WA011C022Y2444L080O0KHM1W1G203WGWA0X0P12126
+G24L0L000OCGI20Gm3TWW@1W@LbAFyWC_702_m34CpP8uX7GGLLnC@1W@100ggAW@@t20WFt
+@@n0WkY20CpC000U0uV10Fy20Fc50Uu90pCZPuX7yWtCcni00uV1C3y2O6p0mCc1F0nEymxD
+vyzL5W3406JhhFf_PQC3q400qxLKzSzGdGvq_b100I1hpYgfZuv8F90@R0az0O5n910W0WaV
+OuQi4000400W4u@7600G00000Zp00GsU642W1@@h2G4GXYwgOkF3GG0000010W02mTW9iuL2
+nsjnCQ60G00eZE34G008000000E520000080@TXHFX6ygc4l5II3DI4fm39tzGwT6adW1ztn
+0ea7WJyIOBnAg@pWawa00G0W100Wg@gW00000GW0000GtCy0M00Wc0z000G000H0W0003zP0
+08W00840000GzI000000QRkPs3pWc2dv@@D4020CYe1B2o000oR0W2G0100080Wy@l1004G6
+ZibhAV00004204W05D0W0200000O002@@t204G0W0003OQW004000002UM0IqC18010@@Rmp
+J9yz8600088000Kc860020Ga0080A8vKH3MkYX@@z0021W0001GW02000408088220004800
+00K51800G001W0G0310G28000Gm820Y0@@N10022020000010140ajN27ZQmreC0H000005m
+Wb6G440W00008I0W@@F1424021000W000GW4sFC100gr9GO00G000G00W8J868P3000804G0
+00G0aX93la_0008A4W8Y8WZ0W0002X0Y02004WGKeZAF1008i1OG9208Ka000e0900000010
+W00000GePHA1HG0GXY02W1W011461W08208Y000_@N2020W046018W0008W0108mKP600018
+KD3ERb100080G20402m0200G414mzcFSYg700204G110W0WG41GW8G00H0W0000Gy9000020
+208C068A22G08414H8202z@@6000H000W00GGudI30008yJN2@@R0e01000G020A00W80WGe
+0uUbD_@N2G1000W000Y00005020G1maR600m030W000060080000021W0204028G0C00000W
+0W200WOKj6W0000K000022000000810Ifb10X02bmP000GWuwCu@VL020ILaI2RpQ0OH60H0
+0002000200000W28WW00mYWq2nuVK30G1000G002008400WDKb004o4G0W001080Wm2S0G4y
+@n6@@NX000mj9D0081W00000I00000Oj7000000PaN3W00000W00200unlL00q000014013Y
+nVJ0W200n02WEVVG000041G4G0W8@@dGp96y@F92008G29028f000214W408200280G000eY
+100Y00210G822084IrjQGzjOaPi14000I6sWYSh0000B00G0W620@@R000120001vxbGPhX8
+0042WC0man9800GG800moa600600000480000GK00000gUxXy1I00W7o@@9e00000C090000
+W200@@p00c9QggIqoCZPegAFu10O6pG3m@@g0Wg00000eD5GB00mTE201Umr0000aG210000
+0wH4Gmg1Sd72u7T0uTE2mL@@t300WA0000Sq30IJ00u@V90A0Cf008I1O0e0Y2K4W180880g
+cH5000X200150L080L000G000I200G8000WT1000A004K0O8e0K101e200G40cu53CH00OY0
+4000800100008200G6000J80002nb100m@0KL40eA6m@@@pJ0X1@@7Gp05W1vjn@@C000A00
+4G00080t000_V200000Orh0K6000OEzZ2hDmN@g2O000@L5W@@Z100yK50ec7M_00tBWNdZg
+qP6004000007P00mrsubB_33q_mPr9008ywnw7_i6ZLseg1kAAeM2mT70dQdp5wBbqk4jiP0
+0020000Ci200ULdXwrWfNyD0W40001000X00008WZP31040GRn600Y0eox4080e0000000W5
+0020X040VLd0W10WHpt0W20GVnLCUk7joJ28002001A4020004G8W820019HLv602000mM0X
+0W0404049dcm@@maBM50008YK810004G0W0kZca_nV00G00K000000ic1010GC0W00WOqU30
+0C04cOB00080800S_lG0W40G20W0mX010412Y4G820052Y02gWr000M@024G00G00a00OlUI
+oU8X@@3PFP301c000000W00oNyaCRe4TfR0Wm30W90HvPI5024000240O00002WCEN2lFRGz
+kFyPf400Y040000I00008000088W000VMRGCS6S0m0lDyJLZC01400881mMVa00200000101
+0HO40IO30414008W030CW084C10003P0W1800900210OYKd0800040WedV3000X0400uSzD_
+xs0000A0G4WG8000700068G028004W8000000byO00400W4A1G000W80GJaY4000GWWA0009
+0W4Gq060014G01410YqxCuOqA08018000GWo00C04102eK092YG023X0G9m4GW2000Sp4054
+0nIeHCC00000A010G40W5NA200011040KG55O0014048G400e3T30H40inl4ZmP0000010W8
+KH2ImI05Ge03WK04i0018380000Si0Q8H088000G00WY0YuPZ2KG1080m010500008000GbK
+Y7000fU0u00004W00f008Gy@l1s0A0000a800WQ5Y46oT941000GK08420u000eES3a800y@
+@60130001GX8G000YA60010004Hm10000aCSnf100000WX000G08enMorC4XC0000220K140
+248edJ3ctT3000I00U0nZGKu000GG20Gsg600000mZ40000008080W8800C0880W0044mFr2
+1G808@a4WW0I00G00G00OCuXW088X0800802GH004GY8910000H200000Cu00090W0W4A1UL
+_dTXh0000B0220862i0008oYBXett0z10000y50000K020000Wea0G0Ij000WiOm2002YzGc
+Ir00002DnPmqt21WZF300aXwh7G@y1W_500c@d400mt0Sq40G01mV@@308000W0G@L7W0000
+0Z_0ycl106006fp0000Ww000kZw700028g000G0O000o200G800W9400X0010gNqWF@b8B_4
+Og00mK1e2W145020300mU000F1000XT000Z10063WB00GM0G00000GaaQ5jzh200e0500000
+WFq100W0000Wly200000gY0007C0000uhf0u@@7G4A0000_t_0000000L1uWc2080n300Wh6
+00@F00_hE020000goD000200002N100_wdtryhhOC0oK0KzcMlLBnJZOqPs30020gxt0W000
+000urD00KXNElB4OPU5Tz_3PQZHa2Iqmj1rzR0mx2W01yeIgYAYFagsD000W400W00801040
+Yk@t02280000Gv900C3S280W000000GW0OSzY0142aTg1002000G0j7@6@@R0W002010MXRR
+W00Y1H0800080100000e060200W014GK00lpRGGH6ClFFRudGSz6WG00O773UF@Xslb0000e
+084020W00020013004000Wo0100000q80vsP090000C00G0000040idHHZPd0002aM_F1800
+2G20000e00G0IciE1000yc6W0000G00WGeC_4YPuXE5u100HGEk6ClG80004W82402000000
+Otj6iHe1C040008RGG000m008a9100O40BNjK@p60Y00ORV30400CaF6200040018I8004X0
+0101408080100011000A0OMU34gP0W1O2G02A0G0G40GW020G06HoWfF52AO000G000082J1
+RmuzO00A80000Ym2100000000O82Y80000G24100C0500G800G0000Gm9W00300m0@6W200O
+e9d082000G4OZVF0140yVV2BaQ08m000C800010141C0000000SD003020807WcGfG@i_V20
+GXf_@t0101W3kinY@601UO118Z21GKA1Y1W01GX958I08GY0I22WH4W0e0000pQ4G8AIW40d
+1Y041438WlRDeqrY0C000WQAb20HCa0Q6080GJnY10OH500WG000W9W0WG404XGam0b0805W
+2Z8W8144808YG40000azb944Y44620I0002WA01040G00ZWWtPHI0G10000001W0tndGrtL0
+004W001W800000300GQ00W00000040G900880W60000i885000092G2I1mYw9CZBI000i000
+GXG0WAGU6Utj20028000mK0K001000W00GOu600G24GW00i0000X18Y00000200400WcP0GU
+v9CuxI040W80004oj7010W6@s01WW0dfR04G000000WW80000mXJ0WG0H0501GGG004VvRmd
+Y8rQV24600YKtWbIh040000Y0G0000GZW80018042W40001000131000004G04000ui2G4m8
+W0W2188000G40000040Guxeb00800800I849GaGLSvV200GY4Z48007GG80000O000002001
+000P00000m8000mdXUt0108@500400004000W0W000f4oFPSvG00K@xF0ktz000000Z@@n00
+@h000O5Fy8WggQ0zg00QJ10qhh0WL3eAL3mFw0m@T0W0200WKf50epF0008mD00WVS70GS_8
+I00005000e0C000O000O2008Z0ZqY1130004WE000T000263U22G704WA00We0004200W460
+0Wd200lKWV080T08IS300Z0aUjG0upD0002eB00aAA0e310W@@n000y840000qxs0q_t000H
+0m1730G0XF00000W0kxA0yJ70QJ0004Ty300100020_200Sr000000mT@0GOgEznTBbvB100
+0GV000ndHuCy6SUz3X_R00WTuDuuK0W000000G0B0HAS8000esADuEy7000mW500OzTm0001
+0e0000X0mdL60W00G001GyzI0K008t@4G001W0008@U3004cqQl1tllqOw6Cfk10008W8008
+2002G00G7@O0G42uQA3W048H0e2000000W181004W000oGt00iB001W8W0em00H0uiV3820W
+SlEFDldGkx600W40008Y000Z85C82Q30G0WizF30W00000WW0O808K4mc260A1102a0200W2
+0800000eK20G00100Wm0G5C6000me0S3_@7f1oD0K00G7tO00W48_E9Ysd1004k00000o009
+000OgGdMpt0G0020G0WE0pWg_t0004X000eXnI0G40mZ_C04r081u4_@t04H40PSZ400W0W0
+01080WIlFXFHC08000440WNnJeVV3YZo000020H00o2tWh_D00040c100880124G00008001
+4aW00002GWywA2H00000GGG04G0W04QvFX9jhetU30G080080G200mYrF008zxfV34020CAK
+2z7QG2W21000Z000qYn64oV20004W008KpF3G400I3t002W0f6c00I0WAnJ0agYIH@6070G4
+580Oj@6CHQH44000060208K054Iujx64Ld120W00G00a7U20WG41001W000W0O001HW20m00
+0WG0weqWkpD0000jLX008X00880f4H403m80000000AAYsOBoK000GKGKi0100842kft0040
+20W0840WG00038r@7412G0W8004002820O10J000Y1MQt0020000GF4000002Y141000K800
+W1608m0V3V9I151I0002_d1000K0000@T@XgED0008Lvv980H0O_@40KS0aG_30400Md1900
+08000215G8a@@3NsbmT1FaQO2Ftp0000Qb100hrp0008ZmhB200060000m200000G00B044J
+2JmRmJ_F0000100800902001CRJQ000WWmmJ00GTVpY9qhl1000GwNleu@I0080ILu902000
+008GiRI0202004W0I04WHQPeIk40i@00890G00K200080010nmPGaz512W000000OB000GSB
+5m@002008420nC@W4009XGj000003gFXhwD0000cy10WFbP0i0400OFaiz5200O60000Lieg
+0eg80G50i@V24uU0IxTZ0dJeg9600i9320ViOM3_rt90GO00003m5000300WV00mim60G0W0
+00W0008fOmI8GE30060azc10mE300W10301OlK3A@t0m0D000m000W0036102000c00WOuGY
+000000eVz3G1A0GNUjF1P0000OKL1mxlNXS20820I0W000mCY10000WJQ20@dV0000g8Yi@J
+00Wgf2002G00O0u640m7H0W@U96ke040248_FWuC0cUWgQldfIS96Et0000O270GUzNbOj99
+lze00uIKbmLt7SIbuRiqU20nL00800K5E9ji1JX76000a000108W000086fnd00W800100ZG
+PmTt900002010Gsj6Kbj1zoR0000SJ2H05Vd0400WPpt8zSO0108840H00G000010000G202
+0G0G0G00GG01G0210Wb2C000IGj_90840Po_48000CEh1W02000qO320004G0180000810v7
+@mfzy000100280G800220800G800W00G00000W0080220GC34Q04K000500psa0IW0WwuC00
+0e000010004010G02000Kr02000402140000G900UaOZY9W10W004W00000GD@R004CaG0Ce
+tT3ErMYVNCuMS90000AK03uWQ6UR@XJxp10004a000030Wpwd00W00G00024G0_@tW6eVetU
+CG00000Oc50a00001002000W00IITfK9C08e00G2000G010800EZt0020008WWg_Y1200040
+84IjdX4nD0W00Gom68yH00080010100000210004000G01u5UXgUtWjzD0W402WW400G40T@
+R004HmiNa0200GbF6qjN208C008000C000000Z00002I804G00014W0H00uUTXMKCXczDG0G
+W004000W1400001041000eety7O0000000100GKHS9yhd100W00W02840000Wf1411440200
+01WwyeeJ@J008W0000Lm0Z0W1eG4ie22H0W0G412W88adHCe8@4000X000002010Wa112800
+x_R0004H000IGa4000H4800000W22G04080e081G0HA800800S4EXwgt0m8500WW04000e00
+000012HG23G4X002G09Y8YWH28uv@40W0800000X14m1I6i@l1GG400W40800G46128000Ez
+E1Y6HLeCKC1040GGX0018G02G004@@p3e000000100AW0G8000e4G8000820A3000W100850
+08J80W00Gmb@IGA030880mn@Cy@k1010000O72W1000aaGay600fa2114Gn_@00H00402Lor
+600G00KX00i00C0003DxR0W00aB4b0K0020G8WQ@V0004olv60Gj10600Wo0W808ge000e02
+800Bi0uGnV86G0S1l1T3Q00W152000Gq1W0084Czj1W002_Nd100W0800WH000yxV2xid004
+020004U70W62t0m000DkR0200e@@v9rV301010000G002mXi60W800000100WaKnh000eW00
+10H40Yzw91X00000CR00040I000004e263AEQc@@P0000B0004W320PrR00820040K61sG00
+0Wg5000001140000K00jWRGyv9000f64000250WNqh0Oi2G8wCG0210000eN00Wcz5YAO0GD
+y6G1020000ocw60W_x70weA0_d00y70J_R00Gz50000O_B0IRN200m@_300000GWi@000G00
+W0uVuVm@n1amOz@00006188A1G0WmmD004300Og00OK1m0W0e302020004000P00WG@DWX10
+000mF00029tdmsz6804000O00004000YBnmPW0mmC6W10E030006000p08Q@Y000@PW70q@@
+1W@g207U000yZg@xN200Wkq1000m@p0G40Ot@40mc20000mL30eRA00e0000Vg800H00mD5m
+7RcXRA0X@@D8glAQgUcoQ4QzV3mF00KO_LG040QYZXuZD0W0WmWvC000GOkP3YaR300DfvZn
+mJw@Cz@3VkzG@nOCwV8WZR02sxA0G00fNdmrb6K283pEcmTB9CND6000OhTsWa3cPvFC00G1
+y5j1200GZnr0000W00W0UFr00204bSP0008001000014kbs000G4@WR004W000000K90wYE1
+00eG73Ynxt60002CdR30020W0000205G5q9aej1pJp00008000220001020290G000W2G008
+00I0020AG020024800050000004G0RbR00A0WD2JG000mjK6000010G0G204040001000000
+Cc200t6Om839yJi1X9RGf590Y000001mqI6isl11uRmjuI00IG08080We00C00C44G001WGG
+001G80C002100000e000100G00W1000W0G0W00400e0000000001m0004200020001040G00
+C0040Wu@V300eYrMh1RsRmy_600088tR38004000YuVQ3G0200G0002a4mMjC0000yYH6IZr
+Wu5V8AF3W000001GOxT3_SmWmtD89U6kWtWspCm0000G00W2vD0G62Gs3OiGk10W0000G000
+W0uyR3UdFXcqU8Vr70000100DY100m7O60W0000WW8041WxdD8sTI0WG0G80000010000CZX
+00H__mjyCO400W002m@@601aD000WqMkLqa930Y000G0000YI0000114G20A0113R004GW1z
+JGAC2GkxXG000OfB30GCk6Oo680406Jt00G0WvPdGCn60004OA83_@l240020001000u0082
+000200015H080j6BH6_d0GQ08xuAwYC100Y1200X0802m000000CZ0410004H@@R006000W0
+00GG02ld10W80428043c841U29LO01810008n8000W9A0A00000P0mbNUy9l18000000m7GK
+2v@Z1009280000G00pmt08220YW008001Sg960Y00mO1518Y10Z8YaG0WWoBDG11Y29490G0
+e802WG181Kak53X_Z1410000m4000000uArKP2H@_00800244G00WXWI80G0H001H8W8O401
+G14u00H10010022000Wm98600H0OQr4000J00S0100MX0O082805G8A0X0D1GWGW2H00Y00G
+5YW860WW2W1G1g204Dq@D000H00040052GNk60uE58KdDGe220008a0141404340Y8000PWm
+800W0OSad40010KEz30GA0000W800a200GoK_60W000K01081004800000040KI1G41POEIg
+st0000uq1002j5Z5vDW8005GK0000YK080HAoFXq_D0020Gka94IV2018000080AG00015oy
+t90K0000008G000Y00M00a8KW00yulA00ildKx41020G00000W0000495z4coFX8zJ000W10
+aW008808W000084UdU201G0000G001G000m02W2GY00GJ_x1000fHkJ0WF3mcjU000020X00
+G0W000G0NEom@t6ysh4081I01G0qyW1nmcGzf6000e402008480100Yda7I9m6010040008V
+10000000050E363P9020I8404000040GfGW2Y8000019008HY5sWixb0z100DGyb2TP0200f
+8W004Y00000981000GwXe763QwF40400GA40008Cc_l7G00000a0G00040K310W0G200W@@p
+0Y00WLaV000u103000040y0008QL000c1G1T3eCP00800WG410a1000WNsN106dB0yr9@910
+0300000Wt00j@dWh60W@@D00f10000000Wbm@0000DMAD0iKQ0iCB1OPq00008D00Wbf10cd
+1000000WdK0Cmm00m@@Cmm00WX1O603OD0406vkP000WG100e4WB35060e0x000O0Grs94Py
+600Wi000C200WlEH3EgL210000020500080808HE32ap0G0O0ZqPm9oOO400b80280S1008p
+@ggvk1GpD30108r938040W02Km6R0W_g1GJ200L_720_w7020000SYJ@VZw4C8I130GQ0OPQ
+0moqO9ppmoH0COYDR_xV6m120leMqbqRa_l100G0I4dXZtE13000000yS0PuqwJ00002000A
+AO3kUpcWBR10Wg_CvT100W8MR3QUt0W0W05fZnznO00000CA1GKy6qeE3tW72G000G004VlP
+mfoLC@l10HH00O00200W0G00A0080W400dnR0000X@nVu0T9U7n00080000OjE01KMk10001
+00C0000G4W01Gfz68eWYW40004f00H00G0800GGG00800W600080e00010019G0000bkh128
+0W0K08CKk120G0G0403H20010000100G01I0W00800Y00e01C40GLl9S0p3TwRGa_FSTd100
+WU00003200060080W020040m0000G04Y321440WWW04G1K0080W04n810W2e2GC50100225G
+0800281L000400G1W100042040Htp0G00100180000008G108208020C000001024c0@yF11
+GH0p_@00W0WIybecM307608001100W20010W04C040I010000aA0o0100603mG50G0380m40
+0002G0G4898100m840Gm0WG00A2G0W80081400e010W0140201Czk1BYP0W4800W000O0000
+8GW0000810C40040022FzZntzI00O0eOU3000GpH00ejC3g_t000020481wip0WGK00W020m
+0000Y6c0080M01104000111000200a0101100008W000FrRmH_6qej1798HeaOyD364100W0
+W820051G0000WXT0020431069Z10I0aW00300I12W0OuvP3Yut00mC8Y4001KW0KXl100040
+40W4Xl1W0G1YyF1900W00400C0080000m000021004W0jDPG3u64EFC2S62_@t00H0H00m84
+WH0ZH000920mX66000010m0002W0000PG002Ajt0W01000040WW0G80GGO20000HGm000P5O
+mxY6ajh1RzRGew9W400A@V3Mqib4UCmR00Gj_6W000SRS30400GW0G0G0084009000000m00
+00404041Y11000m41m8040806Tm00080Gm0W1220aHi1@kRm0_602400G000000G4000W800
+FZq00200TpdmMzC45U2lXA1800000sOBrR0G000e000011GYut010200000900000C20210G
+zm60008000400805P0G22000WK02rxG2@WRmU@6G0014XG04a00G400002Y20050XGQ0604X
+00G0200019OcmR59amT2b_@0W410014m01000GLK080061000W803W0262W8W10HW82fg02W
+00HGX308W0Wf40C0IX072mXg2Y2P484p44Cm170f01aW094G0ZGA12L002K0a100G5m1spf1
+RxQ00e0202I00020@pt0140820080300a2U2hwRW000n5@h08Y0Gtz6K7j1g5000Y0004I10
+241094X012m4Y0014004Q20Y050Li0We0GK408W000210082308K001PG02K4828WW4Gm210
+4W21824A8C00W80vJPW00202000G4100YK082WK21285000210WK44054015IA00WGI0m_@X
+yyl100Af0G210000000Mqy@6G4fW0H014Ya200014000e02Y0W0080K0O680mC2800002G00
+0800204008Lju6001100000f081W08000A00G2WiPk1000G040500e408006280GW0204HKG
+008100040G802000ZBrCeg@JG42800000uc301000C0000180G01004000W024000250W000
+G0000Y200018G20H120008H0440G4800001y@V3e40W09Y48DC3GK0000040H0000423i300
+022103W00021W0G0040006G08012800W00W028nV9kCrWNlhG0A0C000OgH00Xhb0202410W
+WG40400W0000W02000002CW82G021000010440ucG3000G08W230000023WUlJ0C00mOx605
+00000410aG0400A40200008000121104004YTtaOp@DQWB100ux21000G00aMl10GG00W09G
+081080G2II4A00n049Xe88A2ZYq8G400280W000aaG080040401X4200H8485008000I0000
+08inh1000o4000YWN0G40091010HGT00044v0zn0001qB00nYeFiPC6lrR00e70040u61000
+qeW820000j0m@@600G21080WMW50004W2100_Qt0450G00070I8045W19kR00G00000z9bQG
+Lw6KRh12fgeTu1Hxm3goX7yW7KP6p4z@08QLfAq@100W00g200sz@0@9fZL3000NP00N5000
+Xr10G0000w@A00005O0QiKQ0a6B1OPf1W7y0WbHZbBZ6BJp1Mc60IBD0WVQXcbWqiaciuCmo
+f1Wbf10cdXb000B7EB1W2We600pSWEcv0T0r0w0A0q1K08A80mi30WH5G700ukn70800S3j4
+000pP000aDU200IE0000800CI1G0e0K101W10@nOG2S90202Od73YXp006060C08IfBXinD8
+LE600W00030008W0GD0WryDm@@30K1006O00m000sv_100u@k20000yptwl7WGP000000G31
+00pCJcU9OPU0moq08QMQOcdHQiy0Bb60M6fG2enogfYbfH5BJ30Mc60g_XiuC0y000BJZc3v
+Cmo00mJSE100WXA00GPuH5Ji1TzRGZdR4il1@vd0000200200000Fl_10068lGwHt_s4yi1j
+Y7IXuFiWj1@cB1Oh5WkjXfylbMrtW1vV8Gr7000Wd@VHfyp0G50WsKPONR3oOq0010005006
+ydaMhD00008004000s9DlZnnW9aDl1W000@@F1012000800GW00000Q6g4IeF100140G8800
+41acc1W000040002000G00oiK6Cnk1xbQGGr6aOl1202000G10W0000G0qD56ihi108F0034
+000WW000180052010004080400X0WW2M02582Y8005KWA2i440GWA0W2GO4Xe00A010G020A
+000012e020X000W020110214eAvc112007iQGiL9020040m00000eSuD0002Kh_Fy1j1txR0
+GW0aP4C00005000Us10K00G0088000W00K00G4w6000200WAnWV60A0W0e4000040G08W8G0
+010W020O05000200430210e1400000020e0400mk@60O10PTE36Lt0W04000206xmWPSD83C
+9_td140015cp00000008gJuRmh@6080100000G040G004008W12820H000m0H0W540W45002
+0G0YG0ycl12200Q881018GF0RG_ZTzBmNz5uR_2@VFn@rRy@y8@7lo@lpyVxE@@6jAru_Wl1
+0WdIh8dRUWW00T3U2xcQG8sO000820800400Xpzt00WESt@9Chj171QmRWF0010eJV3wht00
+G0G@YZqE2a0Sj0O_@4Y2FaEsE104W0800WBnD00G00000mmrt00080080We_JefR9000Wn00
+0uMU3c@FXKwb020WGlz6Cnx3N_N1500WDmV0G400W00G00400400W01GW000ezU30004CxP2
+00W2800ASYF300G000f0000000W50080YuVD0080010W00011020200000008a000080W858
+G08000W400Kph10C0000G00800010WG3o60H000002G2R600400C800849WI8C002G000102
+0W00G04044080000442028800G008004G000Y000011G029W0G000JBRW000ZQ@D00010001
+2G00009P000YO0a0W00H00Om08W008000044KLeW8GGC20afA80C0400821KI919YYc2XH04
+5m1014G4G84MK0GYWaWWY801J7v6G0G0eSE30m0mW010wzK3IFt0G0o008004e0024010010
+aG10010G01bR010110200800G000We024e3Q30mG0KVl1000901GW0000600802812002001
+0SGWW0G00040010f811WG0K64YG00440c04G00G86608C8aG01a2G545G02814yG00g0252K
+W24A04140a3j1G000MAtWl@Du1V3c@tWPuD0020004004400VFOG@_6W040G014GXl6q6l10
+W0000101000SZT300a82000600G004HWuyD040800e001G010G008W4CWW04W00Ga220GmG0
+4m011YIt001010808ItEXptD0000uM164sg1000010GWG0104W00012G200000281wxt0G40
+0ZXp000020248LCOmE06004000GWu@R601000GT108W8100000801400a000000u0020180W
+8G0G840OW8X00G0400000W00W0Y0008020e04820Y62sWk600408HV32ed1010A00100200s
+Kj10404Irt08800nhdG0@600C000m0021000008l9OG9@6Knl10mGG00002002LEG0000000
+0Y0000088040000104G120020004024040440000201C0a010000W8G0G08800220401W348
+00W0G400GG0200G00IG000O7v6Szl10300_aD1000200101G2000010o0X0G80G47GGW0040
+2140000G2H20G824000120WHsos0G00G1sQ00801000000q6Vvt0C242240000840010000G
+00G200C40010W00O8W00004010044GG80W00000W020G00008W00034020W04114220ajB30
+0101W00002840800a0203000024001000Y0012a00002WoFD0C0080W00010076O00W1W_tD
+000Y000080W00G820MTt0WH082008Jkt00410G080W1200G0002e400001420000C0008002
+08080004G008W00NMO0000XnIC00008O0400X00jzQ00G008XC208A0m1X000002G0e000OG
+88X2020Y00GWO610280G840f60oC80008000WI2KG0H004G10016G02GHG0020000XW20080
+0W04Hn48001000GWIe80288W029G8902O4A142009O0O090Y0b8WLX0Wm4X40032232A0M00
+250W212WG8W0r00K00G0Yd11W20W4H401A100A2W105H00W8sV30A9G008220100Gm820DX0
+42O800G420G000He16300m01ZY15WW1010W090LeWAaG00K05WY1n0034Y060e1000123025
+00W81W98I00800018H000WJJA084a200G804880012X000cW0405Y0WA8010Ke60G46bI021
+040e086Q0X80n1XG17W0q81Q4EK00GmA0cA4804e007L1W20008K040020200GWI10HG0000
+010200G80aI0G00f010f20002000H000W2G0000W0000H1ebV38Y00000028G150K20140K0
+40000040A00040001W201080I0000LN0azf100040004H010OhI3a000000a2041180GWWLD
+0K0a021400804081210K00421uIU3G000Sz83004G0W0400Y01400m9a68008AfJ38080yQi
+18100G600e2000K000G0000GW0XsR0i0WfpHD8OR3004W02000000cH18X@@D0062mpa6GKG
+0002G4812041200GK0H480W1004100mhw6qel17vd021WmeLCO6Q60G4G00001e0G0000WZR
+C0200810600G0008408000qjZ180000200f0300080W0801mWe0Aa29W0101v009fP300048
+G0000Gqtds908000C00000408K4Y000W0004X10000900H0W001m8G0W008102004W0W0qZ_
+6000WG00WHe@6ygR2000W041041j10008Akt00240001Iu0000002020G000X0G900004000
+G6W41W4G000W401W8020120G040b8j1001Y0H0000W41W000Wq70000060200001W841X200
+051488011040049G2g204H289880I29822G0824490091WYG2WKa@684000GG2100002GGG0
+410Aqs00GT00G80m000qLj18B00000kWw10000gG3mC0800G00012O0WRWD00m2Y000HX0B0
+00005200SGk1WC0400WC000Wou00G3@CWe00000u0O30000OBTEbW00000m0a200W0830Cbj
+10040010084G01080WG00WCZP000c1000180W04000WWhk30tT708KD0oC30g20gwn3Cym4W
+Pc1G000W0_200G40G0W@9400002_Nt00Gt_C00@@720W00_820_80004n1000000V420iCQ_
+@FqOPQ0GrgIss00IpInR@WgL1Gqiab00eqO9G00mW0u0W10OG008W0u4N6Ifo008g0mGK1W1
+064gj14300Oh010K1e2W1W1020308260G601Ga0A004b0OGe0m001G5008B000X000Y80046
+048C0H1W0e2008200G4000ea3mzs6010306000400WajJ0W10103000406PSpW0W0G1W0020
+3010402001CjR3w0mWIrD00028L00GFU0Y00evS70tfE00000g200O5h8O00W1gH5m0ZCjAb
+WQLA1saP0KjA04aWmyhlvl@H13L18GX7Gv000c820rv708pTg6W0Sb104WyZDGqf10yF0Gh6
+WbcP6Bbs1M6lD3fcR0QuX70eQL1TR00Mc6yiCDiCDQ2Nm0BR60ym30iCDcPPQiKQ0CCU00Wk
+jjfjvD020000Gpg6x7wbdX6fRfqQFYfFX4aDO_@400402G0W0WG0000W00200lLN1Gn60008
+0ViO0004WppIO3@400G0yYF3pfpG8TOC4k7bRdm@@F0W009UTC8200CoF694CpY0m000W08W
+0GeC6yYD3dSp00WDcSpCeV536ldXZHC0000niSC4TE3b2_Gnw9CDu3brR0800WFrDOw_46st
+WirDOS@4UAyXNlD0q@0KgA9048G8683GW0000C8iBA30140Srl1000W6xt00G000200BJFXs
+yJOq@40080W402e6U30G00yyl1008G004212040400mlp60220400054A0042820W00GK5OW
+0a00100W0a2YvkC0401X02000004c38000008a0W0080W0G1000O0008801109000G5H9bYe
+001Go48f2012D5X0G0Y43Ka0WA8I1W84001GY8mW4G00908000XWuyV0400nGz9G088egU30
+040qmH2f@b000Ym@@JWG400A00010010401kft0G8W0800000ahahb18000m080IX0002K00
+04W000874KW900W120844211W00201AG0W9GG8W02020a00O508O0080A00408gNBXW@V010
+0mEzF00G014W00402WYwD00W48W000G003019W800800430K8000G00000IBdRmW_90gJ1fk
+230400001W00004000G0142000000Gq0512200012mW41018m00000280300X481000000W1
+W00300020CbO2dNomtI6SWf4hwpm@_R0010Swe4000WGP40uH6300W0018G8@E3W02G_pW1Y
+4J000G01e000G080204C0000G0W000W0000G0102010WWHCbeGaA6Wt000GGLmR00Y0W@@D0
+G2084000PW8000G0Q7mWGuD0028I_@90WGTXa0001000e0G0PkR009W00W0a0008a4000200
+0200C0W001200040GG00aKxl12901_hS30WG0GG00wcHYL0JOwV300Gcm80CWG8A2o0208W8
+8000I880602o8Z00W0000mY6Du@V304g0S6g10800000e000G0001048000800481W0000GO
+460002000GG418H000G01H204G0G000001000GG0FOM10000G00Gv5Qma8Fy@V200W404000
+G00020G00008Y000004012005CQ2t@d0000Ar0G0nmP000408002200GW0G0000C0A080mG8
+0000200W1a008yAW15_R0HG000000001S2mf21008GG0G4180001muT@480200W00wFH3MLq
+00G008c04GI1021WG0HWWeO02008WCG4YOWZ000140088W8G0Wae_D00WM6140082000205W
+A000G2P00G80W48840428W3C8830P60mW0KK14W20o40YY27210X010040H0601010C10220
+10URqWtUO0040Ghg6KyY40G400090W0000G00W00D0HGJ4We8Hf858WHH406C5ieGG4W0W00
+CA20A0444e1nyR0eg5P0009000E00020W2AI00Ae22408880uWuG029X0m01mCa48K0YA101
+04481800r015PGDn4X108024002L00AKCXWLzeQH64W00y_c10000a50W0A0W0G2a0faYGAf
+0W2GA0090W90YWA9r74W000W0000400H0000G0KW2W80000GA02000022a201A5K8G010200
+m000G0000m1WWOvCul3C2frWSFgu7N3000C140G89W4Ga0000W802G12GMY0GH020X0000H8
+000000oAIhh9000DukE3080420041W0001G400158W0hIHG00240W18Y08G0100O6G000005
+006af10W800G0000H0ur636Cw400000402gKq0000W2G80W41010GCW04010O02KG008806W
+8860W02G4000040WdVJ0GBA0000000C0B0R00108W41042000800GG0W010W070W10C50G0A
+2H420028G20400W8000G0C@@Z100I08020FwY10040W0H001000GafWK81110801W400aW04
+4120G200IW0HWW00861O00040050@@t0000a61000m02000W023000910100X0G4A400H200
+WG000Xga000GG28Gb400a0800200C0109800230042X0A008100eZb4EO66CG6C000aC2002
+20M00088whO90muBe70800nZyqC30020004XW818eyO38200000W50000G3XU3G000y50_@t
+02GK90Y00u0800008I80000G0X0Yt000080pFi@@hGBj0m@@6000_G40WW@1C000uV0Gi00W
+w000o_70140010004R40G4H00008Uu38A0340000kd0O0H30000uc2Q10010BJ30ja60XcPW
+PcnIfHZbI30Um30BBD0M6D0KDLi400OPQKXvP0Wbf1Wg1ugQC080G4UC3pERW0G000010200
+00W800010002600OC0wOO0o2W1u7008B00Wf000J5004N0N000C0G00a2j1000mm800Ga100
+W101YB030406000800002004r000OCS6O04000w00045000O00Wu2W1W145W11oPGiq64my3
+00my000000c9_@V3000x@@l1q700_@F10yF00W00W2AY9000G00yFP0yVE080s703000HwFz
+1eaR600uRCNj180WMqo7HafN21xP0BNc6fP9DALB0OPQ0OPB1moq0Wbf9D00WbIh5Bb60MAD
+0Qv@@40Wbfz@lMWmS0M5VZOuQvgyGI3dXYmV0G00mW36Cej400084E40qjzCNdRJnGOaxj70
+0ex@WZgC0d10001000a_fg0Gm0OALRKUp6@@Z10220000GG0G00800T6HB0410IBt00001po
+R000H04000000Wa74W0000TzT36Pb10G00OW000O000001W24000G0WGeI001W0020WCrn8H
+O36D9XOjJ04G1880020204W800G1W0qRl18008008G0GG0W00004WO288410100W10010000
+20100004005000OX00GG0002G401WW0020040009W00I080WG20a02I09011050G1W108018
+0000002O0W0W2041HR0005aqUCesT3EjtWeLD088010000m0109Ao0G020004800400001S0
+F3040W0101000600A80400000W08020W0020G00W0I00O000mB0W0000001q0G00evS38140
+WG00004AW0GW008120848K0p00202400408W080W040084_8p01000paPGns6K3O20200040
+0q793x2OG@v600G8eOX4c3pWMmD04002W10G8080JgcGNw6000WJE003W00600000W20UMD1
+080W0008886020A08QU3Mrt00080xfb0000uQIiPlIIs_d1004mG00008W0KkB3000C10200
+840020CGC_6yTc10A04MutWG_PukpMAgmWkxD0008IM4600H0udJ64W00G000eSj4000084W
+0hkT3M9F182004G018W0G06W4W0000148220404080IVt08000djcGu@FKOvCC200Icz1410
+0vUAX@0000O0000H0U_mWbGJ000G0604H0060b3Q0WG1WNuDu_O3gFTc3KP85w4MKWXlnm00
+mKoO@6G400000WHxg9808W8sV30GW0ya93FvR040GW1py8JrG0100qpc1W00008W0qpQ2P9O
+Gd36iSV2WLPX000m080mfmV30004020022OGWX3040002G10QGL00010810mGW08038004G4
+G000W0S@c10O00Qa560200W008004000804080X80808200ljR000WaS_DeAX4YuF1P3800W
+1800100100Ge04H2@6Wa0009GK5c4c0A4028G91442AKSi188004W008W01OHXS000W0Ae0W
+I00KsnF0A0210G00e00W4iDORU6008T100W04442Ya20900K00010001080W2080GXe6qFJ2
+nKR0000gOBgOcNL2otWJSJekD367dX7bDuxn400000UO0uU430200W80000W0GT@680000M0
+00G08au3D0002002WmyP@vQT30GW302GCuRS3002000H48NV3coEXBgDOtx4000mI1000400
+000IW_gD000C001000400W02P00000J00Ot738W90000000204000efXcvsU3001G4Di4blQ
+mIw6yhk1f9@000L6102000001W4000828LT380090W4200041G08WI6OuNT30G00SwHEDyRG
+Bu900c0ePS3YRt0W20a0020wQG20f7820000GB0izk10W810000G08100e0A000000Y20000
+090810G108000008aImqArWDq20046k100WFy100qbl1HNp00iCjkoaulCR00H40008eKM3G
+4004pg18c0400084_j10002@L8Xu_J000ZIm_68004r0Z100m0WJ@D004N000C0OGS19mnGs
+h60m008AW4Ys66h600vZR000yHG1e_40mHDoN00W7UOkQ30eW_2G4000000T10WEuP0ac200
+0000kQ00u@VyV1049h1HAO0ppmI00WbHAaWq0OPq00_EmI00Wbf10Uuv1SIItcXvuDuqP66U
+_10080vYN1000I5200TaLKUuFKD_3DX@GqvL0800CWS9004000WijRNFY19XCr@f8R6k32ZT
+Om0Og2mcUX000GulSO080WCx@3nIRmhtCiYk7HAa0000EP000BN6oBlLi0V85mdGKuF02000
+220Grx6S4g10A00000WS1f100000A000002egU3040000m3TvT30100ykl1hbR0WW0WPuD00
+GWo3y980008mb400G00100AG@A0G080G000G0GGxp6iGi100G0WG00UAV28202_ot00A0400
+00W00800a4ejA3wqF10100VnO08Y580001008D08G01048GG00aG00000G1W08a0G009eW0Q
+ZV3G0000010IG0WmH_60010vNYD0010Sfc1BjR0201001000001ort004100805VQs00038J
+3d0A20WqiDeND300K0200400a00000U40000O0008E0006X0100000a6000008401850G001
+4fG0XG000G002000040Y0206002G00800W60CuiUCUXpWb_D8JU30000do@3RkPGPz600508
+x16Ar@1001Lp_R010220000t6bGWP6KNV2RsRmy@Caz06000050280140Ow53wht00002W00
+0ae02_wB3FLc002CWD@z0Wk8040010008X8zGCz900Y08pV3wnt00002JAPGb8RSzT2Xyd00
+GG00a9800000W10azI8B_@0008Uf002X@RG7vF0001uXV3IY_XxvJW1G0m5kUygj18000EMZ
+10100x_R0000I04103OI20Ww9W000FmQmUBOSEr3bxP000000WK0ZyM100080WO4I40W6WdX
+FoDuYz7Ewy40220TkRG_cFy1m3rS_GW_6q0A6G4004XG8sUY102908000G02A010200W0Wvz
+J000W0030342G40000W0W0yA66TpRWf4G0G040m000MRz10042PyR080028000rbamTq600W
+0K0a01600W6zbW8180H8G008004WGW_jt0000820KWmYgae8G0G501mNu608002800WG0010
+008HUx10WVQW4004000GK400W00gFT60800000G4204002000410npcW10000GY28002UAS3
+0a0040002TtWZnC0018m_gL04e0ufV92lt00800ZzR0WDLA0eG0nQRmdO943d1xk_01W0Wxv
+J8InGQCd1088001H0WW200G00eoB3Yjt0X000e101s6gYE_Dud430000JUG085E3c0ZX7rJ0
+0X0G1Z60000fAi7gNnWbzbW0GG00000G010Zyo0000G08C0by@m7P6CTN800_Qt1rWkyV000
+14041100000H0Go_t00u00hYRG_sX0W40uA_70200iCe1DWQ3uVA0W0004800gEMYNyDO1_7
+g@t00m00VrZ100e00001u000ktd14P01L2pmky9i3a1Z@KH0S90000LpKB0202G2000V4p08
+100W0A000000X00qkP2nYRmXvXO2000000eJW700W0282000000A8Yoqe1udHsaCcLjACBJ0
+0Fy04Ip3lex10W4yOuI00@zNYwgW00c000MG_@L000300o80C00WSmD040200040YE00280C
+4G0G0G0WOzT30000A00O21O0mBoI00H6uxL60Zr000J700040g00WEfP0n40mT@94Bd1r1O0
+0W0G1000nYRGeZO8000OYL6kYn01100BWp000Ob@eCm300WgE2WXvz0MV0ukU6SFs60GAj0O
+c04_F3igA0MaEgs_n00md@XgRq6E6jL7IVB94kF9DyZnIu90C91G000OPE6aiS22020wCNYP
+zJOc_4U99XKFF9f0LYN@1L1003ZdmpwgaAk7lfPm@v@KpT200IV10200404fqV6002GK5E3r
+jRGxzCack1vSdG3pX00400G00o3W6idl17wRGLpFKhF308044550K8k1WqN01410CEW18200
+6zt040G00000100W2000SZO3c3DXjoCOzV34Gm000G00201W000W4qDe6B341W002000WK00
+0800aG0004000212G000_CC3GW4043l1808W00K0H0800088040X00G84W002000000804W0
+0W00000YG00G08000mnj000G400001800000Y0M4G05080020012G001WW0GtPR0G0000020
+00040H14WWW020W0010G2088Yt@N102040108000Oowt0100800W8UTs000080804W208SYk
+1W0G01CW80800008008200X0281@R0G01800W020OXH000A0G00009680WWACD002080e008
+80W0G0040402G2W0L0208002100W00003go0040004K001010W00G0eWmqo60W00eHU62@tW
+MrCuEv4W22W04G0eMcA0002qIc40010W000Sfl10LM20440KIi102W040128000OCP6sprWs
+_D000D006GW@@D0G0041W2WzBb0000H7q9yrl128100000_Pl1XnpGyhgWC0500a0mTw6iYV
+2I0G2H801804W00W044W0000000Z00cttW6bDusV36LsWIkhuuF3_ztW3TD00G01W00WI@V8
+zH9cstWM_P00nds4q68800O3x400002G0240000a0W000X00W00801002W0eSN300W00G1WW
+000n_eX00W0000Xmjz600080110m1dF4kL21kx10a7YnHn08e00M0000012z@R010081HW0I
+004080W0H10101WHK_9aR_375dmgr60080A1zA22NYJyDeS_70000fN00eh@4W100af_3011
+40062GWG04040800000W2CG404kKs00W40@SMn1AC0Z000G010c056404G20H45200ird4zc
+_mneI000_3G40mmM6Cml12000000312GW10eW2X0X000iWWG00CA4004O402804CY22XGI1W
+860004e0G1K000KmOwI8200020W00160008002m21G00yrf10280000GjyV2toRGmyFadf1H
+y@000f200G0L9R00g0Wk@D00G0Y26004G02u0mG402Z8W00W2WEX10WGWYX08802410XW0H6
+602CIyz60010OuR600040001000800C30G0W04W504100G081e9V3UYcX@@b00I1mZq6iiC3
+000eY98XsyPW020W00400800hod0W000m000W00HcSp020000WG0_f53400082400000Y8G0
+18006G00420W80H0eM_z44100ZXp00WPn3_P00W00000A0008000isst00W501uRm1_6Cml1
+80AG0W20arA3@@p000J0GK2000400800821WY46a3a10E0D00G020100Gm1008eVFG008200
+0m040mZ@90q30OEV3kRD10000001m00020G0800W0mJd6801202W00000m5_D080X0G00100
+808G202_M220010WeW0440G80G0G4A001042002010Gtco6000iq70000020W10zrV6a08GI
+01040000G00XvvCW8CW0GY003498820a0HIWG040108H00X088000vuRmb@90WI0000m004W
+000010G0YS3040078Y0400440WJ_31r2G000LWw_V000FMekC0010G10000OW810000m10sP
+I2C0000015MlrW2xy8xO6EftWocVm@00000000iF0Vz72WY5WBsJ0030ml@60W10qZ80eL3u
+V00q7_0WNy30GBV00Wg00000y1A8Y90udVSmL30W@h002_y@@6O600u@@400G90G0Iae3W0H
+7G70D060Q3T0qcY2eD4r0R2e0m000W1GbWXn_@6mj30ewx7000mYH00uRE3000O0W1000001
+00G400WW20015WA0A0L08Cy400W100130606GA06G500WW00GVuI001Fq12_70_tSPym3y0_
+780yFG0FuX0pC30ym3y000W@10gwV3008YXSB100t70000NOOGmA94pl104100WghOsT10Yl
+2eVc1G2G00C000W220000W00@1W80e250u_Z3O00W7Wcs2fEHL2stWayP0S02mXPmCTl1FwP
+ms@LyoW17aF3080W6zDOkx40008aNd19Znm9t6CWk1lfdGGvCSUC39WZHEuXCfR800G1IrE1
+005BHpfI9td80000G10mjSp080Gu7_A0he0K@k11mdGGw9SyT2HqpmTqFC9T5GWW00001002
+000408001WueC8lU30001_fl1PkRmbO680W001080000XIbC020W0100004WG9tR0000Cd10
+07eRG0_6iWl1DKdGWc6Cal11vR00G00001e00104028arU23tp04W290230u8020G0028A40
+1HG080W8WGY8011YG410W8480300000WG42040001W844WW0G004Gmsr608002I000e0W010
+0200400040004000GV0W0Y0120GW000040820802K0G00W040G0800XW04GG180000G00W00
+00GCG2A4I0K0H18Y8010G0GY03G10KWG20000I08X00008n@@90W002I0moju60h000G2WID
+y6GX0m02040DGW10000049a80800W0O488W02K048K0000054G00208e0000A06G00G02410
+00400W1000GQ218GG800W8000C0W8000C0ymM30000G00140W00WW1WN@D0m0210X0020020
+01013082a12wQV6UtF10G0m8a08000A002400I000GX08000m004X0W0axc1nxNHjz6Cwl12
+004Yrc1000yq7002jF100080040W0001G0G0W0002002G0103_R0008018W0G0G08A412W00
+020G0W040G14I0400444H00000I00GHIC4MV2BxQ0240W4qVe_R6000i4oQ23UpGj@600eY5
+00Gqa_Cani1@@R0G08WVdJuAV3001000G2000XmCw9iUl1FfpW1000W10YB9P000AW0sDurV
+3k@N22000410002004KU25_RGwu600201000W8m6Wi@JuGD9001000608K33W1G0016Y0G08
+Gjq6000011200000008845jp00468W01020508o8408HGG208008W00W000010o1l20a80tz
+R0408WnpJu_v7GF00yYg40004tvtWtyP018A400034ZK40G0H06000C0040a004OW0WW4C9P
+p0008049080810cbmWpDCeHT340004JV200H0MzoWzkD000W1400400Y8DdB100MhS@D8r_4
+kpFX5zJel730000G4WW00000W004u00024018W04r_l1001000WPqNR202W15mWeY0000100
+0102020W4G001802220040008GU_90HW0G41004109O0G40K100W2000900WH0021000001Y
+000UEn000000UD0W000G800OcH3000Y4jU2420X0G00ySi100G0G0G00HG056H10KGXK0m34
+08G0n4EA004m0280Ce0008020Z@R006e2Y02C0GW8Co8HOgH0H1C3YG2W41W000091kql20G
+0000W00I400c0P9RV3W100ExV24000000Gn800G4000400WewJO5_4kQr000W20006400u82
+M9133G20OL226WK0Ga08Y2GG0W40Da00PAO000WKvJb0f0qC88808GA0W0aaYGe4GA412431
+A0W04200080000481Oz@A0501aJY10080G6K00GW000I1Gos600Gp4K0a08000080W084000
+K2000I0008GUu9aD73000ms@t004WKzfR00W1WL@b000O8100GWGe0290000800W0W000401
+0400G481O@Gh@Ci0X180G00002002901000G00W9mD0y82mgu6048210410001WByIOS@7_1
+d1802001Ae81K00R00eay70G1U0a87180L002E0400GCG3G0G0WHK402H00KNoL00H000a00
+000G0G01LjRG5@CG00G1000X510009000380wpF1100wxXpma@60WG000X00G0000G6e0604
+401J801a0O020201WC@VG00K408HG820X00Z08G4080YA001Wmkw6ayB6000YQUg2002W400
+000aZi_x30GW0000eW000um93w9d1000G000G904220O07020646m08C40VY@000WUtG08G@
+5084100W3000a92W609Z0P10O4In002asC6NtR0G10400008A406qt020I1080Wq2000mGWK
+1002IP002G00000004PI0W1Go841GHzFimY1j_R00G20000AA0000KB0yTj408d9z70JOMQC
+siqOiSuW7MEXbiKYn9800C8Q2f@@00k_F0000Ge107xl2H000000O8E00yvl460mD9000yBd
+15qR000mC0y@V0y@VCZWTW00qG410e@k3GQA10C100r@VQ100koT00Gx@6040Ct10Sk3qPK3
+i78A03G1GMW0WY1004N004T0S100dlz00100CL02000C2@s0000W000YH0200040O8E30Wv0
+0087000GC20G43WW86020GWC00Wa00043GNy6G400uaV3YXB106060C0C0W1O000m000uNA0
+6K7d17_d001400U@V2000y_@0Wv@1G842GkzCKWD300020008214000b@E0jgA02000eG46P
+N20sm@00@@0000eV00ObLFC700Q00g3StL80QiR00G00iA00O2F00G000eWYN000L410hJpJ
+V@R0000cj00GAr@yxl4000AUotWfzDubsGA2m300GRL@dm4taqDG8L@dmAzCq6m91_Z1WL1W
+95ewD@4IUua1Wt0000jZ10WO_DeObDYK0cZXI000104000000W000CG0100v020040000880
+100tXR00001100WfvO001GZb_DW800mX_C00uH9bQ30Y0000045080000080004002869oWy
+wJ8vU9o1WXqZPm0G0W1Y0010G188804G80W902000G0020mgjD0G02mN_604O01G24CWW000
+0HeW000QRpWhoCekU304000WG4G0000GR12G1400A80EID10420FsR0G40W74C01008W8080
+44000Y0044m0Ag004X818W2A01000808Q8x120m000W1G28400520X00200O00G00W800meG
+K00QGG0081W000XG2000401H40qNj1We60000000S00Z00080W00G880000020G000005180
+000UZ2080408830028000D0400000q000W000d2tWnrDuwE3W000041000G0wSv60uG0uHwA
+0800rmV20G01VosWq@b000020W01G01A000W00G0yDC33D_000rqaPD0840mzyFKsR208000
+0W143e100GG020e20W448000014000W00210wgdXO@DO@_400W00400ugy40WG0K2W19zR04
+10WysP08G0mqgL0Wr08UU36rq08000G000NyF40W040014t@_XwzDumU30000G0200008W0W
+0WSNV00W10100esZUu3qD000XZB40eby480W0q@V200X0gmhYedD0W400048028I2jTRm676
+SxX4G0H0W00067V20880000G0000M000OKyOaYl400aQ98000G40OB_4Ic_XLrbG2o0mbr6a
+ek10002G400iyP500080000Y120gcz400200W4GG0104IO0W8LL1uR3mBxF0044G000IudU8
+0a008Y0mGp9CAe1Vg@W080000Y00Xm1G4mbap03O082KK8AWa008Aw4MZsWDJh86E3m48000
+G8000102000e0W0000100I400A00018mQ@L004Z001W0H8008000G0H200YA0341410Wu_59
+0W01uYC30400W0K8GGW0Gl@900ee1000Z826GG0L00I48_ic10004n_W10WhKC000K040G00
+00H00GW040008m9@JW0000200WGsDOCz4G09000PY0E2AeXaIA0404F7_0000g@mCW00000W
+0020019m@000H0I1W2K240YXxX9nbukx403WGr6d1juR0e00040010G0A0G00Kyl1W401QAt
+Wk@P00G151C5WK@DOZo4A_F11G800W8G00a90G00100208X0Wz@PW0W0Y11WWicye_Q3E9t0
+000Ke300YrB10050080WgAnWmmD0X042001WhsJe5@40001Tk46AW1WIct00440W0800002q
+9T2jwR0040600004500AWd10Y00n5K10G10008iz4Q0880Yn_D00W0u2w900WW8vV66@t011
+0W00Y092WH040HfxR30480CyV2Z7c08000G400408202G24WL2WW80000S00000410uHog0g
+w10m00010804300r@R002WWA_DeCc700G4iCX1W0G0W4G804WIep0300010m40et@400ab00
+G0D1E3G0020WI0010mm_@C000eM0G000T0WOvP86E3gYN210K8000mSFa000K0zU@4020000
+021H7G000mXf_D8HS3o1@100B0000W5200009GOD@A000@x700mR@@70@@T0_F0x@R00sK00
+0G60000zH40OJ000000We20000Wya200gtV300FM3Hd004G00S@@jIPmi@6y0W1pz@0Cm000
+K0t00Wh00W7_@F300W7E_tW4tC02060P0O0O000a1002pF1cP00080gYysW@@DG00m42W0WH
+fb8jQ3W000WO000el0008c000O0G0W0W1000200GG0002100YC004P08000Ga8U21gR000WG
+1W00AWA0006000c0uRE3W001ymf1RA8X@00W_@PG10000kQ00400Did00G4X_kz0000YM00W
+OKJ00N1000W0q3eWPzl10_y1@pS2_x10DnC0AnA0KPz10pth200Gc_100wRJednh00m1G7vp
+SMECv7RG4yFC_d100000040sSV22800VEN20S30H2mm5vgKeV2HeHI3xdiMP5000Oi500Ki7
+LHA42001WTrD0000nUw600001084GytCaCl100AsJyF1020Wbf7oHy6yaj1PrZ102W000240
+8W0E_@1I000Z0P000Y0GK0eXrR0000708WY014100WW0G00OCS38000001APk@406h000W00
+00800080W008000W0m00ipQ5lvR0200Xr@DWG08Qv3Iy0c1W0GWG040z0k1010W0000bAi18
+00C080812000GG018000G00W4808080020808YU300G01000020102020W004000805IG100
+WZA030WW0A005K000W4WGGGAG0100010008400002800101qpV202800042020005H0WG000
+01044000oxtWopJ0000W000800H8W0Y0G0W8800W8T9300020003004W40u00000e00gG030
+W02W2W0W0480Y0X000a008ICt000W00GW0000IO00000W08A04000nSJLP0H10010W025a01
+C43Cod100001800rsh1JKR080000D00vxQ00402q042dnomB@900442000Ksq6CYF3400002
+4000W00008Ku@9000G100G1G01W@_D0480GJd60000fmE302000Ww140G10G10W3060e00mi
+@9iTl4T6c00G180810xCamnXI0002iGV3gs@100Wn7wR0040W_VD895Fcwt0000WQ5000G0W
+G080OyVF0102S7d100001002jol10202cxlYXBneNT3wly100GYx@@miY6018040P0800000
+4t200I418W88X00Osy4gFdX@_DW01WmY_9G4K00000e830WQRh000G000WYVUn00W0000820
+0G001020808Shk1bTA1088etuJ010000p0X_vCOzCC00800G20uCT9ANFXHWaOKg4Y4k2PG0
+0420000aY09Hm40Y0uwrIS4e15HR040Y8000CO3410400q9l1FBXHOwI01400Ae0o4gCadF3
+W010sPtWpwV00JH00001J04EKY4W00G0OYO00110000OYi_J0040ONX601000Ye01G8200n4
+000i0112W80GO52410081Waah002W0002G08G8xpR00P402C100200G00Oitl18010YNnWBW
+D000W2G10q8Xh0011004100004G02U4H80000Y0K000008c@zV0WA0880002400282000000
+CW90KS0801WG02000C20gu@118200GW00208W04G8wV3G008040000HC1X2CO2200XYQG6VI
+000WQ6MC000IH0G20W10GP@6GA00Ort4kWB100G80G4e80W0H10000008TbA0900G0000820
+201000K04o_VI000Wy@v7ACnWyEsu1tD008080G60M00G4Z6y@M2Dw@0000aM_D00WhFG00W
+XpD8iX4_w@X8LCuyV3MaaX2ICOlQ900A000K0O2_A821000W00W80210e8301O0W0WgDdX@@
+D05o00G4000G020100G040G2000ug1W08000828G0002AFXdoJ000200088440040222utW5
+_DG000W1W002000JFYn0aO080000A000K06W0100m08000GG400u@F9010000WK4000WK812
+000iq41GMVpWopVOqR6IStWPtJ000430WW8020100000GA0a3l400eGwUU30GD0W20090810
+000e1i4wXJ2008PW0000m8000Gs5r000G0L0000001A0IaxXsuDeXC3YXBXYI81WgAGw@Lu@
+k000GqjA0iU@30ES70000W7Qb@1OTV900ge00000HC1uw@60uU60W@d00000N100udV0Mwl2
+00m7_5mV2yF104L4Y000Ik@XQtU0J50GEuF0000000Oa20001O60vUd00Cp0O000Y200cyF1
+CH0000048O00000q90E30000h300Wn50003G54J069ozmhq6G04000G000a1WDXJ0404m3v6
+aGk1hmL1G00WLgb00Td00000xE1W_lU00mk0gx@0qXhyF00ul_9J000Gsl@9ul@z708q50b4
+0001QO6mib1Wg020000gg@K@Le020uDx70023u80_tz00GjW6CCu3nlT2W00WTyDefV38000
+0001e3aA0jl0Sy6C5WJIjt6KOQ55XBHa@C4YV2tWd0000Qf200zYNHV_Fa4l100W0gtAXVzP
+OdA3M_KYjr3vZTI00uA53tL3vMntt94fG50040800GSEZ4WsT0k24Z85gG0005000WIjDOgT
+60e00a5z308W000G00mW2OKV60000108WOwT380080048W2000000180008W10Y2F1004WFm
+RmRu6mBe08aV3004080GH0W000011a0TU8EU6G0000XX0uklDYMp0G00G000G02046Ol1HsR
+0000O0004eW02010G12100G000040G2800JHO08000021000GfeC40008W0000000CG00400
+0sP8m4m8WeWGK2H0046fzCDOqd4G0J0TuF30008GX0W04W0000W0g0080GX01vdmq@900040
+0WW0W0000080G02O00MX80000G00mwQ600W10G00i032400482G004008OWX0G000a120W7z
+J0G1C1G00WrhD082128000mhKW0020GX0Y804048G0g00C01018zoQ00080L0A07kRG0@600
+G0I040003G10G0800G00K00qAF60080Ap0ZzkD0W00m_@6inV24G10008W00W00CW00001uG
+VPmf0D2W408018W00W8YGbXKGh00100804000400820sYFXgvDeE_42sbXyaU000GnMu6G00
+00W02OIj60G000040uHl9Sfl184000020qHl100A0C1W0Ksl1402400WGKjl1L_d0000G0a1
+0dIO0040000W10003ManWL_D0218GZFOCUV2ZvR0002002400404018WiQk1000010W20401
+0800oFYC0040100084o02e000a1004EcGG00G4G20481002040800008W0Kql10W00El8XDY
+D00280800YizDe2x7EtaanQD0O80Kv394TL22008gdtWR8JOvS30460000WWj000m0a02aX0
+m0G100J00a000A0CKv@C09008AU3000W041G008GGf26ihX1G00008024BE3RvOmquCy5f1G
+00000G0000G000W00G1WaxJ8X_4crzXNCC000000WXL00m0tpQ0H0000X01zmToY_6ydD6Tw
+@mfb600G10IG00WW01020W010Asft00002040W0G000G600G30mQ@600a1200eC0008W2540
+0000UE201aGK004103K8WKHWeGWG02000H000040m8z9GH000H000H0010023000G8010W00
+O0G4G008G0G04000420400qgV2000Gm000W002O@M3g@t0062009000004A40WGG46a0P8GI
+W2G222000W01GIG040W8XG400400jsd01Y00000pKEW1W01p000Wdin041524QHoG89m2149
+X0A0YmC08qJy9W2000L002000GO0008W0XW00aW12GG0250100YAED0124010W00001BodG4
+e9i4y391O00W0020000WGngvF110000W0e850GKx@30GAf002aIm00000G4f008AGK08HA80
+H4004f0000HuU3L0004hON9c8NYR@PeA@700WW00000W002080WooD008000011000X040G4
+WeYy@@30140OO0131000KC0208005WWW01G01gi61408410GG5kUqbV28600gsFXLRheH@4k
+xm00002L_d0005WK0C00200082Wg6CONX482200083Y0004GK1D0008i7800GG0GWW804000
+01008000l_9nXXIK3r6rtO0I00W_qJee@4ottWp_JW008GpJ900W8iyD60400W080a04W0W0
+0000QXIXu812fG28XY4MA000aA9a002@@R00K0Wcjm00eGmy@6i4W19CMHUqIqvT20801000
+C0X20euR30200000u70000G71WN@P00q70a00Gl000WVQw50000nN0uxT30081G800eKk7sW
+xa5@P8743A1u1000Wo000i12000008gQ300Y0003F3000WkO0W@@PmZ8000GGLW08@u7m710
+00nvV0qV100y_R7ncpDA83U000@B00oSk@400n4330000Vzqap600ykpCc1WNU0008009ZR0
+040000m7000gwgc11000hm910aL000O0m001W1000300We0000100oA02Ck0C001g0002QQZ
+4Y5t06G5008A00WP0000Q000Oe00mG1O6W2OD040600Wn00062Gf_90202ees40O000W0m00
+101020YsQDuTV340404kV200W1Q@t0N100N@@0r000yr700ObAG0WH800t5008Osv9GWm@70
+V4HM_90WL3000WWh60GV41WU4000HiH00g@3W00WFW00KL502000yV10GL008376000pO60H
+i1e4w@t00ul@3vN100Jes@DedH3IwtW8yP8@@46oMYejh0000dB100400076dGDv21100uWT
+6o0FXGp314G4mktC4gl140000087cEk1PcxnudIKyh7@2aGiu9qAU800080820qRN5WXQ0IA
+FXUotur3O6Z3cbqDOG16AfE1000CM100oGpWv@2fI1L2tt005100200050Gidk1P@R00G0Wf
+gC0000nPx64qe1FPdW0000I00002000000100W004000W4O0WW2DYR0000801G0JcZ12W200
+0108002oLq000010I00Ayt0G40GfpbGDu6i@b1G0Y000400f00W0000W0W00000mWe000402
+7W0G4G0Gy@6022004000140YAiD000200W2G0G00000218021A0W0K000eV62G01W0H2XG00
+2010424G10800emmJequ7G002KbV200W00G000WG40010040W23G00pRpW012000o0024000
+8KG20G00008820000W02KW00282HG04W800080000108000G0001CHi1200002200GH08uD3
+004G000450002I0A830I462200G040W01Ge000004atiC0W02mtt900104W0W10O0000WIRL
+R010HWKpDW4000G0QWqzD0804G8k90001W000Is@60000v1w40040KuN20004ouqW3YJ0000
+20101W000G00W40G0280000mjsa@6014000002G02W1xn00W00010WAfP0100Gzd60m10G00
+WmVv9000GuqU3cZZXLsJ0080020K8C00WdLM140000W00040Y080000C000024H0000GD00W
+0Copt00040P6Nn@@60502eVK3001600920040000WO0G09fhRm2sCq5E6VaaG7Q608000W41
+mIbL80000000scq600029853W04000000G100809XNbn0001100000G0602e01G8G2001004
+0mfT6800Y0W100080G10GW0C00Y6pWPpb008Amr@6000040G010W00082Y000H6L@1000CG0
+006Rq0W01000ya10008G00G60WmKm6KUx6GG00CG22y9b10W01G01000G41G0E0K00YXND00
+0200210000GG00Ww66ZZwD00102Y000HW001j@Gu86SPl1xud00330W000G0000W041040BP
+Q3oD5ZUxDu7V300WG8800uOG300I400W00210Y40000WG00GWe6VsW7dDea_4Ypt0Z80802G
+M002YGK00O6Q3MJAX__D0G0000H400KWGO40208GG000W6i0000m0000G060O0C0H40m8809
+0CmdfL0WG0022001WG100W4A0q0G0GW0G21G0XY02G005G0J2H0A001OG00aW8000K000100
+0HzB10AW10000Y8W0G00AX680W0o48YWWe2nDeU_4000200W4Y8210OW0800CJ2K4000yz9G
+8GW81WWQ000200KW80G0G0GqPj1hGB128288mI0804Lm4IGO0OYGW3KWW0I420L0eP4O000I
+0WG404Y0mbt60000X0G200W44G100ZpN104402010x1_GQsC0042WKI1Gmz608O18BU305G0
+1000XK0008WGWZu3102051000W300Nad0810Wb@D0004000G80808l@RmdiLW0000G00I_v6
+040000b2GqhIG04018He93700000uC4W1_@t0G01X0m8G0W402G18AnVCI4d19090W20GgQW
+1WG10K000s_t0420G00210AW0CER5R_@Gqz9W1000000C01G402000701E@t000D@20G1G0G
+00000YX4000201W001PFjHMT6000a08001G010GW1Q0L300H8W300500Wm0O00WvrJeOV3kD
+N2000WV@R0K08I2G0WCI10czd10a00z0P00000G071005008000Il00GG020G00Y61004W00
+L4Wy1y6joO0000808GI80W40K400G0WG0440W30W2gI008q0000XwkJ0A00W00Aa@kb000ma
+P0000u000400wzE10Ga0xtRmKv6W_0m200_2000SCZ209Mn0G2000GGB1Dx1400000P9001I
+n08G4OE353a000K580000uXl3_@10a1000W7y@40w@l0q@J0e4J000YoC000z5F00qxl1_70
+100000Wkta000W@_820Ur00yU0004QdEV20e00yN000WlK00w1mk@I00H0Gr@10n0u500We0
+0W@5F0m1E0EmC0_200010yd90uXF0WYg20G1F1k400W003080200meX6K6N2080C23t000W4
+20015WC000T0u@@40WC2000004cP000e0g0006300O4000Ib10002008C080O0Y2W2W100G5
+00WH00GdwL8000K0Ome0m001m500G700Wa0000300CL0CaL0O0G0m000g@dXXsb8vO300034
+_V20Sr0Uzl2RA000G0000WNP00t4000ke160000WoCB0000V82120000000ip4@b000yKu@6
+0U150y@@7LK10eq20ytT00000wr7Ot@@04L10YQVJuTV98010aLTEt_RG8QX486FVtpGN@6i
+4e1Bvp0800WNkt0Sb1GPPpqTcApc@GOy6SV@39qRmT@O000WfiF3M3Vc_5iPaV9ktB400QBH
+AGrZBC0100OtR3sflYdvt8y@40Lg0qSF3V26otMX0004240000e00G10G002040400280ecV
+300001A00040042W000010040WY1t0020000220000228WW0G050W00G8400088000GG8000
+0008oY00G000002804GGzdl17zRGkx64Td1fbpGTw6i5h13qbml@C0W80fMM300400A00080
+04W01asjD00G03000400120200040W000100002800edzD00010G0900130NtO0010W_DD00
+WQTgy600WW0500Kp@600018oV3wytWs@V00G0GCYX002GOmU30W00ayl1z4YHfz6i_N2v@Rm
+ev60900O1V30t6200W0w4V36RrWTyb8nQ9040000W100m0GEyI4RPHn@VrD1R6NoF00C0000
+00Cm0u203I1WX__J00WLGE3@70p6lzd00008003000G0Q0mWGkJ8CB30200000WYd00Gp5fj
+qD3008000W000W1e103kE9XK0I8y@400SQ4nXMW400owMYj@D0000204000009850801G0Wq
+40W0000081WK0C8A0602008fy1OBawMks008O000G0H001W804OqE3I1mWIjP0000by00WIJ
+_Vq5B@PtWpQPOtK3sPc120000200O20GWj00e9U3008t000O3A0O30WYje0U0000EYH0W_QS
+20a7kW8581HHHq2b0ubOYW8mC01UG8IdEB400GmWmZGJ101008W10G0p1Wye0m0GOGgZef00
+X00H1O00GzcWTS2000k2008580Gy70W0Vb0zzh1000200G400W0000vl302mb@C8AWG8A04q
+0Y1vIRG4Gi160000H90530We02100420CC0000kC600gAw@fc_Fgg610ks4dbeYrU0szwJ00
+G5NjZnBP@toMi0OIW00029d4eKEX4f900Wc@P000406000000iE7002sQfwwMI_0000c1Gli
+000WNn108Z4T5U9B7YP0y10000WL106CpiaKRvWU6000G6Q66HsRmTfRCau61wdmtz94bU2@
+u@GNgFSdV500CNBVj5G800LKMnwzO4fy6xpg2Ot7Wx6qwQR3spdXNVV0005G8ka48r9loR00
+08W85810XG080e000W80W00czt000g2x_R0001080004000wyqWMDPG0Y00400WK0C0G00G6
+@6W00000miZ00008H00020021M2000H0800_od100Wm4G000W0W00040G0e0009e7uD0G400
+00000130rad0000G000W000A0G05Cfl1080000e000802Y23500K64080WWa005W22280404
+G82240008G0600G0LG100100080W0W0H01442000i6002f0WKK0010200G1KW0g201401002
+0G1001G2eZDI0004mj@68200ukT3EIt000040410Y9tWw_J0004000402020018000I0G000
+vhv4040W08C41mI10GG21e00Gm10K1KGW08G010150X2G0W40K0004W2e00400001400GG80
+8G4000OLF2W8q0c0A0400004e0A80D0G04W00000400W0114000G0HTd0010000WG0X02000
+2040WW0W0W100WVwDeM132Rr0000W0041000100048x13C00000W7000GGnw6all1biRGVz6
+Sol1pkQ0002280000200QUr0010000AAh0m0W004pamGa460008Pia7000KqXF300aG00G3y
+x03000002040800002W4400WIMD008YOc_60I0000012W0110G08Lkd00G0nA@P000400133
+001004442jt0WwT85qR0GG0WF_P0010008000820H_p04G0WuuDeAT32Vm0W020x1OmVR640
+S2GH00WW800G00eEV300020001OHV3000020K8wDU30800KhV20Wi0400110OGyB330e0280
+0000049P0n08000l4Oms464vY4bsR0200Wg@D0002HA0600100c0Gmp_6001W00061030Wse
+P0A200000aeTD00GW20G001800FxomHtF00W0K000810G01000O40000G08G01000Z41000G
+0G0GK002nF111GG@yRmG@60100y6V3W100isl10W008080y@l180W8400G80Y00G2W401000
+80200100002qxl1GG00G220W000ugP3W000020IPi@44100KHI2PBa0060010040m8G00008
+040a8000Wn40G0058900_VtWw@h0200G646yLU2jb@000040W0100000O200040031000200
+Gm41G050440KW00O0G0X00042010J080G0W00G5200WWI40H400G0H7xp000411X8H8b5HW4
+I0O4L8284I02Kk6000qGIq208W2W3Wc110Kb80G000010800480002000Y0W8X0000GG0810
+00061X055W0H00WG40000C800Y00048K000o0G2a1000g00GWGG88K00G2W20W000WW10003
+0400Gu0I070Y14G801WW4040124G01e00A601GeGW040W04820G4W21004Y8008vV3e2fIW8
+0G0WHG89c0GG0GW20v0100000G2J0WK4HY08C000HAa0840WzvD000X0020Y_JI0084mBz60
+Y008k73Eqt0141GW0H04WW100PAeBx405000I00000G800WaluP009051e000000W29000m0
+yJG2jRR0G100010Hl@R0e401060Z00000CGI1000GG00010000W80zbZn103q0W1Blpm4m9i
+@l1W2A00900LrQ2JxdGzw64mV2000G00X9qnl1G4A0EcWXJnJuX330I0GK7Y1804o0004000
+01004Y200WMwb0K00mox9Cnf1f0aGKFI4Hl1juR0040mSuV8873C000iLl120004W0G00008
+xX400W1001G050802H040GG0200W00G000uTc010022004220bu@00G0WvxD012000080090
+000W00404ajj1f0O0IW400000010GW000WWG20G0G020201000l@RG_@6adl1HsR028000I0
+0ZWRW00020G0aDp@0GG002n880020G022GW40Ol430k180u80200AmP@600e4OmV682W0aal
+18000UGn020W8j5OmS@6009G2G402000800W8p6b0000e0TCO3U900400008Z0I00061o0aP
+evt401I42200000e10000a1200WWH000WJOg3000W8700WHLD8a@4sHnW5@PuqV3czt00008
+00040100qw53W56000WXC133oug10mV@0mV1000000tK00aP2_@30y@N0200000w300000Lt
+7o000LfB00y@l1E0030004flxH3220WKkf00KV10CL000S2A20FqH0cfi_000SJ1Lx@000yF
+00GLW7_8eggHeg@Z0Uu51pC30cPcgK5Fu1V4pO68m300c1000000mt_300y7ge2G@@7W@300
+0C00GC1m0m0W00103000600GJJ60W0GWi20108030002000Y0004A000G0K1ml@C00230006
+0k4C0O0G0K1004500WG000ay000Cg008O0C3W0e200KwF30400Y6m0W8160HI01Y40A090K0
+O0e0m041W18a03GD9W0000300020C8gWG2C8L03ETp0@Tt@Y71003W@x60VqF0_840000y72
+00004mD500000Wh610NTF0000W700_@F10C70G1400040O7H800Prj80yA30Oc00080O40wH
+40Kcgy100u1p000@@d000qV_1G6C300XtCCJmCpaW7mC1pmC2cXPc93paPcuP6c5Kfb2e3Y3
+GuW1000Wvjf001000000_X800mPYO8cjGIWZXPUn000svt@94HF3XmzmMm6y5y3Nxxn@S6ie
+l1080Go2NYgeJey_G0dE0Suk73xpmX6FiSi19wHIz_y000W5q00GXVHzM73W000_Q_1G0000
+200ESEX1sJeoFC00yLMbE9l1QGxN6K6j4Pjz000W20Wg000G4028W0015000000290X040@@
+R0G200W20000W004000810000W0b208G00000XA84200H00G80WIBO900100W000Oh600G00
+000ee00000K220000K00WSRO0401GSC64ul13_dm5P9Czb10G00Aks000m0WG0e2k9108000
+224W00100e8040000020m0K0Y2W211010082204M120000WG480Y200400Y00W0HW0b00O04
+W06IO150G0Ym0a0000B@0O00040aW08015H04K0GGW4020aO00G041000K001800K1010Y0G
+011K0804000G4080000G410008G006W200cUXX0yC0050Y9W200400004G0200Q0004G4424
+A0e@yD0001104020m4G0040000288M2G04W01e20W4G04WWG8G41G0Hg0A03010O21X20008
+c80K0000g501808009mm2G2Yae03020YGG0G10Gvt60WW140m82010G4m01WW0001000GG04
+0000G41000090W0Gxip0100000010001keV200B108W1SJ33020GX000000040118W51000G
+0400WG3000000G80020G00200M0100000051e12400J9o08000WmB0G000KHk100W100W0W0
+000K00020400011@aR002000080tJOGr5C04008WaAwL81001000G100090000200G0080HW
+000W404000G2042000018000010140W0gNZ10010G480Qso080000008j5000481488100J0
+00044V5c0210G00GW040000W8aWg10000hAmW@@DW840m@@98H20u@V300H1qd2388000081
+2GG08IL3000600000W0Xi800100330801008P00000G008000G20G8zxR08004880800W000
+AG0G4000n2E0W0080W8WW000WW010004GX00001000090GW07xt0W042080001000W0G1049
+400002W0G00010041qTa17sP01G010W0Y70d000WZO3Pe6U3UAA10W00000B0201W10m000Y
+m0a680G2eNU300100040W900008G0I0000RF81GI2000804O0mIO60G00082102004200WG0
+000082y@l1400GwEo04080RbAX000WjvD8kj4wUo0180040000062Cq63p2O000010G3G002
+00Y0000100000uvW6001400G00XO3WVwC0000d58000000000a00CGW1aW0400m_89001001
+G0usj60W000042Isb9y1c10240EboWmMV0002000e0I000KGW214580251080000140HGC00
+0W214mW2814042G04P40312G0410022K000W2010W900020000C00XH0GXAX0WW0242n0000
+jW810K0000X4Y0cKu8001060HA4000800841WG00G01200i0WGS00X40GW8000e0114G4G0G
+4500LG004000402000044080000684001480H00HH0uer40000A00GG0I0mlW6800000A580
+0123W052E024C2204C04ZLG20AbH00I000W00Xm00002008m40K140mG0YO0GCI1eW8000S0
+11W8aLWm16YWW00GKZ060000110Y90084184Wm0mW0WG0G4yUM30002JW801G8G040041000
+0W440480004100G004PA000G441GW5G4011000a00GE86000Wg4N90WKG90214G085000040
+W9a200e4G4z@L2b@d0001AIXWZG820000006f004008082AO903200e8504210Bv@V6G002q
+be1jHOmLb6qSg100A0Ypr000G8000e0Ga0Kgh40020kqsWNaJ0804058GeX9D0K02200W0c0
+000102920G5_F3400G4001W0e000mI0G00GY00K00W00YGW000010X4G686G00000082000G
+0020NSo0041008800900a000y@@3aWG0obr00W20000W000W00200W48mv@9G4000W0Y01W0
+00G00041P001I3G64ujN3G000Y8800020000W2022G00YW1Y00axf1Wr5G0G0G009G01Y14G
+W084000412W0100000W4001XG000040WW00000q0KJd100G0G80a002W8Cw4gZr0G0608G00
+EBc10400008o1G00MHa1NZc0481002020000020418880XGA40W020W0e001I0900010400X
+0e01W1000000K0W00G2000dW9A2AIX4G253000540002002GAa0v@@6800100000X0G54001
+20K1wsnW@@DW25KmLf9KMf1G0000H00qbY1nmb000048800DnPm@@6G20000m61000GjG@00
+000z300qZh183W000IZ00008Cw4000q34000WZ000WeUq30000mPY18100000S44knb10G40
+0200AZrW@@J0H00008G2G204j4c00004GW40jlcmIt9O210u@@4ew100W7cHL0MjR04H828c
+m00800ggJih6e7I3_@t000u10uH40G22uZ80qFm08z1000Wx00SJ10WO2u@L3W00yd@Z0GW2
+Q0_VcW00G0fggcng1000HwV30O88CO28OmGG8W90I1z842IG0yF23Mp00G070000Y@U0_@F1
+4J000C040G1O000m000mqeu60048I10001m0004500mK00WT600330626Wn000g000I200m8
+00Czc1Cp0C0G0c53d1000uPD00mm000X1O6ZA8gmuC0W0GOuR680C4K0O0i0K188W1mG0GWX
+0W1010306260C060g0K2fkQ02100020J0C04IfBXg5OW05C00G000kvT0SJ10000ulD5000O
+0000GND000O00jQ00A7dImZ8yX800000u@_3006Kr018mc4G118m7H0mh60W2200WqT500W0
+0m7XmDR0b@B020000@l00_8mxKP00m3FgggP0uV10Fy2mCu50W@9Wgg2UuX70_7WgK50gJP0
+0m@00800CCu1E000004WyW0WQ21Wh2m@@aW0W1OfzAwXh2myC0XXt2000Yavgu5U600W0002
+0Oyu44000q_g1FXQ0090W@@Ju8M3IxsWVvD00W00W00e6lP0000Bj10W4wP02000004YCwh8
+HT9QL730100PblHaUOy@F600CA_oxatzj10400020WQ8DuRL3A4tWwADuNw4EgE100W40020
+MCoWz@J0u52m3vF0000grV3kd@XkuDOpD3sXNY_oJ0008mTo6808000G0020000W400aH0X8
+00G2O00545004004014G1056Pp0050000800m00114000O0GZu64Vb1K00G80G01000Ws020
+000A200300H0e0022W000C0emPQ600G90000012005200BlRmxX9C@i1X_QmZ_F80001YO0W
+W00400458e000240001Y00540Wm0018100042010G100G09000YW08CG4GWWA00411002W00
+G0080W000a0K282080AeG0001484202000974W0YW802080W24110X10gY_C0J010W00800A
+00a00kvs0008H0200G0001G1G2G00qP_6GA0W04000042aLmD0G00000G048018102106022
+K2G0201008410a06G0080W420050Y0G0005G0MG0400402W40KOG2C00b04G1eW2001080G0
+80G0e100000618000008GW02000mAY02OG4G50G5014W0WW11e100OWm00G14102W08Ca20W
+4W0810C00G0W0W24200W000GG0WWG000800H00028804280000W140i9c1@@R0011WSzD00G
+8my@6GGC046024101540202040G000080H00G00128WxZJ001000G2000002800X0800050q
+08W422020000c200_wt0WWa0O001katW4BV8tL6Imm0G002dxdGR_94eV2ToR0m0000104p_
+Qmb_6SOl10006080010W2W0W4mX86CzC30G00010090000501m@@600OBfuZ4W000m4G0GWW
+0m2AI000WG00010100W104@KYn@@900282010000GWyDC00G0Kg_68010000441400G0000Y
+02ort00440XfdGX_6yfj1G0G0000H05G00000WOc5004000140opp00040G1W06krWg1Ce3S
+3YIFXs7DW00WG4T6qol400H20010040Gimb40400ygi1000K0200ysd100001800H00GuZl4
+G0008002WH100000G00WWVlp0x00W@@D0210neW6CO96XXRmvfX0G8100W00C1000002W0Wa
+000CqKc19jP0000281000H0W0a10CKU2G201kxt0041000WG0GA800G40080GC@600ujVsV3
+001800000084808010040d_RmgqCyVj1G006UuS30000000Pe40a22W2W8004000A0C410GA
+0100A04040010a8GY0044C0G1eW24IHO5802i000121080fpxR00201210Y8bW0D020Y64m0
+W004804002000RM0U_t04W5Y400000m0W0100G000X0000000tuR00000088600WW00WW00X
+100C00600WGKtW01W02W10041GYW0001o080G0G00G040W40G0H00e00G0X0000mG0W0W0GK
+0G29PvRW00GW3fDWE040S00O06G004W041118W0000003k000400WW000GW0G00ccY217b86
+XG0W30000Ho@t004101@R0Gf00048020060A000068Og0C8040GW000HGb0800008bKW00I1
+G020000120aGy@6GA000a044040YWcP8dV300002W80W8Gf50800W05KLFR000XnR@D00GP4
+2100W85K0G10G900agg40Gg0ISt000022G402gT30G420W8000HY20H828W00020280247cc
+GeN60A000800W4G0WwnC8t@44010a@j1020Z0003GE0000000mH1WD_D00800e0G0W0G184A
+1sGdXK@J08040HW0041000804G400qNa7nNQ060042000800mx_t000W1G206ESt02050000
+80001W000gO56402000O1ukT3400G0C000000Zl0G100W2G000880020W40000n3e6aKU200
+2XW9004ab1FyRG1la0J008Hz44W00S@l100IW0008H842000G2920K04W000460G0CSxV200
+060K10cxl10G000009W00000mbH@K6000W400a00a8000GI40G0E4M20W28W40208G000000
+Av00820W9vh000G6R80009200W0G0G00G0wF00106N8I040004000wjt0W4G000fUG4004Mf
+1HgdGan60fG000001060000B0000052000kL09XS600iX0040KB00Hi_6Sjl19BP0g10WxpD
+W2G1GCqR00O0Kgf0eH7v700mTkB0000003U0NrD0_840000yF0G000WmC000000WFoC003C0
+G000500yH40ixl10OA0W340000_Qbp7q800Kcd1_tB00G00800VN406eA0C300000uN0_xF1
+00G10Sr00000uV00u_PF000YO000M1G8k3m007W1000300Wu000H60002080C080W0m000a5
+00mL00W010003G40206dqdGsu6W0C840910082004400WG000C273G2201040L00Wv00062G
+9@60201uqU6OO00000CxhV3oAtWejnup030W_8000000k3e710Wh@D0G00200u100m@_3000
+000000RtS0000_tC0Sr00000000r00iG0WxEXVU4100O2_w10Hl@02L000Cc100H4100000u
+H40000uh70q9L0uq_9WQz00000yT268200q90000_0WxgL1800GQ@94DV20020k1l20G0GzV
+B10040000CU000IiEdloh020400G0002080804Mx_XskteHS32QC104001GPmoJ60W008i@4
+U9nWinV8r_701W04Hk73gdW080WMqVe1zDgptWsqD0010G38900000mH1mqSO4Y_6h2j1080
+WUzCOnR6_Q@XzfguHU60008qpi10040000GwH02u6FFoR@XaNCuQzD000100006000Om@60G
+020400028000080W040GG100G000801020WG08K00200K10500G0100W0W0W081G1040G00W
+19A004e0Wmu@600WFf1V301G10W02e@V3001000W01080qZzF008800G00100W2ED01000G0
+OWQyDO0@400009WO6108WWG084GG0501000G808480unU304H0008W86M3K01G0402GD100A
+0800800e0420040e20Y0404W002046000009414002000G100GG00G08000BH000G0080040
+01A08010K002000580028068W00c00O000K0GOX01G080WYH5G000WI02040JlR00000004G
+008GcSm0QL10aG090X4W21GW00G00A0K2W8W400080WWW821A0GG40002608004448W09W0W
+92Y2202G0008020411X8WGW0424Ge8Y4201WHmC0000Zm106400G01GGmG4180000G00400Q
+adbD0G0080504W05404W900G00001qCO03000002A8O0000A31SQQ2T@R00W000010W000sY
+C11000xrpmv@6040000800060108400OG2Ect00W24G0000421020000020G00GG0G05gR00
+WzuUAJeET3Y@t0200m40H0gfd1G00001000000Y020W050q1@60800g0R30000220Wux83QL
+m0G00GW020cvE18200G004Alt00014000200W0LjJ2dyR038000004008WU@F100G200000b
+Z0yz83bHRGLYFCT49@fiHq@6CBS20802MnC10020G110QAp04000P_d00W8mUqJ0004By00W
+XOg8vV3020W00I09xC3g8v44W14W000OW800010OyE3cty140K88W000110CeY1G000G0062
+0001000240088000GG000002K_T2008eosiYikJ8VR3_dyXGuJ00WWmgfIG008uoS3W00W00
+10ezK6C030SAl100X0YfmWgyDOaO30K002p000Y00m2_646U20oO0_dlYaKJOTR3W209Kfw6
+xUamfw68m29GLI000WG00010bPP000G400W000W0C000GW04K41080P4020820000W020000
+00148000W4501X8GW0GW0G00G400010002000300008X404SuQ5G080W80C0G0000240144m
+QJhOZ532LnWizJ062B000008m5008m05001000YeR030080W810000W013044oG0080iW00g
+8m0W092WX008804GH080GGG8G0G804W2000WWmd_D0300000epwiPu@T3kpW1048424G04G0
+0G200OssA000aqYC300010E000a080K00080000050nto0010000WK00081011GAQIG0G00Y
+4818YG20G0f0H09aRl184008L0Y0G800KI1W82000000W0C1AHt0000208100W00aij10200
+000G1I0800005e0Bs9Uh00080000aExDecx4008W00020M02WG00m@uUu1R30080800W4K80
+2000B010001W240H004G0484100010G1000W8GW504GK0008006GW00000Gm440oyrWX_D8y
+R3000G0008200e0002WQms00W0GAT9y6E30201IdqWLqD0100mev6KXl140108010090n090
+HGRf6m213n38000G00GG6W0L104W4e980IG0100401Gy00000E6I7qWLlD0W0800000m0C00
+G00oxs000W0RGPm_mR00Y0OAy400010881G0GA2500W8ZJuW@40G00008402080WA02G4G02
+W429aG080G0020080008008281I00Qa2HG00X0884W0200a0004000k4041F33kd0800Wt7D
+eXR3MAEXOPV0eG0GRy60WK0ONV300PG0010mC00u1x60I0000W0GYR9KJl1A1X40KBKx2201
+eE00X88400004Ww3000ao3ok100WaN00G4020M00WGl40O0q710007l9IWOvC82y4_KsWwlJ
+8Hk4sXMYLhDu7@7C3W1A00000d100AeWK0I0WPU0000WqlCm7H0GeP6ill1bnPWh0C2H000F
+dP00_700y@VjxR00540000JFzR0008JT100pOWHUrO060@G70000_1Wi@P0026008C0w0C1Y
+200QzDX4tC0W1000A0300WE000h100cx004r0wOk3m003m5000200W80009300MN0TC@0x1G
+1q100a500WO000842004P00000WG41_n_142008CWW000Kb8d19RN1048WA_Du@@40Gz0wjl
+0mt_y300OB38000000mFWR6yl100WLj2000W@l2W@T70pOWu_DmL00WRA00tK00FjRW7H0GF
+Y00PS@Wi00WYlh000k910mV_zV10eek1u@p0GT0udwJ0800Tqj4RhjHgh6081200800800WU
+aC88L3Yyt000@DVVdGEuIqcDC7@o000800100W01100008002v7J30G0400420W1WeG0400m
+0W2A08w5t0000W2WG0_Aq0400c0000G00A0020OrU30in0G000AGS3Y4dXreJ0010m5f60G0
+0O819krtWWxsW0100008WaXCW200042004W002G040000G00Gehe40001840qOF238040001
+2uH23k@t051G0Z8iH@v9aK_6Rm@GTL6ylk10020_NtWrkP00W00WW0400G001G0_Xt00048v
+3RGsx6a8h160006qr000Cjp6Rmbx6i7F3tEdmbk6qSY1PmBnJx9i083002010WGGY00G0GG0
+W0000f010W020e0a82I1G42G22000I0400280440012000G0K1W0002CYg014002009YW02m
+A64Y014080GW04W02000QJ14014W02IG008I22K100W0GmH18NL300m00100480010420YA0
+40a4WoPt000WeG000QQd1010000K000G00000200050W03000020020121aH53004000A00K
+10IKW00YW900KK82Da25HK3P203I0nG3000080H9gXW0XI010200I02G0888GX000000Wy35
+W820000G008004305017R0W0060424008880008202uwJ3020G10004G105W0880000080A0
+00002808aY700K00500040G00684080080400092W004W0G00HXGKK000O12H1WWm08X0203
+B0Y4640010m1K18GGW00W818aC00O0401r02H8I020008fa10W000WANG082280K080W0aWh
+1W084000dM@D050150280G021RYO00X16W0C0z_R0PA0WZjCev830480000WP0V3k2t04110
+00G80104CNl1ZgQ0040010002aK0G0002W00400K10W1218WKOX91G00WI25u1000041650F
+8180K0010180HGOLV30De810Y00008400C000W800G08e0000800G30mxi600W0W0204Q40W
+RxD00GG0O04W0pDOML3Yk@10014pYL1400000WOe00004000G0002900W08m1tDe@D300082
+0380080a00G0200BDxR00020000aA501MxsWDLJeOp72zt040083T8100010W8000W0xu@12
+0W0vSnGpT6yZd10a00wP910482rzR0010GHaM400000G0810W0W10000081Y400G2000W000
+WmOS9c70020anj408000004ayd1NdQm@@68P00u1P30060MjV2G410000G8200Olz40088Mp
+l1JzRmL@9000G020440100W42000004K00040002Y0Ge@60000200C84000m560VPwnly9W8
+200G020400WiqD8iU3001000G0wjx70480W00W0008oZpC0800fuU300Ze040H400CC88000
+0020006c5s02c108600GW00CeP2Zid0D1GW_RsepU300001008000Gm1q6Spp3DUbmo_68GH
+G6Y2o000000C84lxR000W4028H00000On80012am8W00040IfZ80e8590440f0801301HePK
+141nG802eWm000W000ACGE76OO1000GsMM_6y6l1R_RG0pF00G000aW00Kb10W40XEQW900W
+r@D0o2W04100O040zdo0450080K4c1000220Syl1000X040012I0200210080G0J42G0400Y
+202W0G1001I0820D22200H8I02GaG000ADW140GW00Y48W0w_t0GE606000U@F110002402U
+@F10840jNPmr@6GGW00J000000edRC00G80G1I40441200040N0icG23ibGo@9q3N2W0000W
+0080004G085AKA1O0W8W20PGI04GAf0G8c000a20H0B0000fW4C82IGaYKG4f0181000yML0
+0GG20000aY00G48100G102d4_GJ76qAY108008500W08100G1WG00008020m90008Ib2W157
+cGi1CSyl1G200U0t090000100001010G0u@V342W1140118H09010AW00O400e0086Ge22XK
+W020016000000aj12001I0000WWmzs60010uEX4k3pWuMJ0W0A04824A00G@@d0G04I00CKa
+240QesWS_J0009GiXC0028uQV30W80WG10WGG000000WY1G00nWGqWI1H200219120OKGK01
+I8G0X40820G4004GW06GX@bD0eKv04W0K800WdmPmZl6amh4J1R04005W6YO0I4014000000
+420n0G40100AW21000210CKC922004080GGX0000010S02WW0G042108S01244X48G08240G
+KG0W00L4G9008W014100q8WG0008U0GGgztWNFJePJ3kIc1000I80mWGI40jce14860_@t00
+408W0e04810rXC30010Iu@XUuC0e00md@6G00g000006eN0442v6100GG8080040@N400O@5
+qV112XyN0WG48602002HlR4e0a@2000MqGs1400a_1020000OWivCulw7AKt0C0I00G00q20
+0qEG200G0GM80000U9zP6000gKSi40000T000QrL0mXPylF0u1p080tzR00082HyHH2G00W0
+280Wh60WFEGiu6uA00m7H00HK0W6@D0uD0mqxU0040000yb70yns@D0300mSs6aaM2jORWvk
+3WK@J0W10m2uC0000000ma20001W1W2020C06000C000Y200C@00GS1uoy3YXpW4nDWv700p
+FmFcV060u0@000w000C7000bY100YC00C@08G80PDoX4RiRGDd60000006L008Y0Z1005xd0
+H5006L0600WvkyF1200UG1m@f3e00WVxSmD6cpt000G0kf00sbE11000U4XF410V820@tV00
+GRu60Wh000ND01Y820Cm00KG000iuan730uh7_oUZiuCmZ8yX800WGpDGL00000SJ2O500Og
+3_k6ZSgt000Wm3_Ii9k40wO063NbBoV0G20mwwL4kj7Vj@0408WhyD0G00max6iHE300G000
+0GB700uq@7gsUZUlVeEdAUkR60080Xul10W_qY1o9E1CcBtWLmbubV3YIoWvFP8nz4A3t00G
+G0z1@0eI1WftbuHOCk8FXUzDum_A000102000010mZM9SA73DFR088020GX0GW0eWW8G0G20
+8R_40W0806200000W805WZyDm0000000QU10G0188000A00040031040WWSTC000Gm5u9000
+400004082000407pdm@wL000G0G100b00GG100282e0101KIl1601000m00W02000W2CW800
+080W020883HW882W8J040q02u0GK09a800C1G20Y0CI4X0WG64JG40808G0H000md5G58WX4
+02Y0144G80EFs028100GY0000H00WGQq23000G0A020G1500Y0GLH1mgg22G00K10840G040
+100W44D8yz4K0WL000W000m0I024WG002000040C0G000K0002a000Gb00021000IGe0KX61
+908eO02010A8420W0G0204GCao0080A8eZC08AK5W0GGWHG0Y000mw00a0IGblR011G10C10
+08044000841001W000e000028HfQ000WWhrD0GWGI1S60W08Oym4grFXi@D0881mx@CCUF30
+04W8000NDi188OW0048100020W20W1GWboD0G00K7@64Ql1000e0F48012H4G8m0WG8WtaC0
+G00Kz@6O00WOJ@402W0H0ee00WG40qX106O1G801W10W4fl10W40shd18222G4202wV30X80
+0200002020001000801000082040000Ge82C0Y06000YGWWiJW540000xycKDuDV3MNq0088
+0@@pW00K00A002000C04X00000I0GGwQ6000800280000800WWvzR004000G000G410W8025
+00000AGogL0001G40000G0elCC8nV3W0G00808AQA3G4002000GcPI904680000YJVW044G0
+2W02G00IU@64@F302206DF1W0004040WW0G000W00041080Wc5CO0U3ENm00110lyRGVj9iP
+f700G4gKt0000240410000W0G028100040514200800W000000Wwhy4YQdX5IV00400W000K
+0280m4m040Y0104X00GJzdC00WGebD3001WKNV2G0n4soz1000GvZb00XWWNCD0000X00020
+0C0tnR00X004004JCR000400G1000wt_vDXvuD0A00mDSL0280ep_4Izr00004P@PmX16CFl
+1000PW41GX008040W0281XduVe333olt008084240A5812300A1WP0Z20100OmC01822A000
+00Y88W100006H105W02H01aa2CWGmW0106Wv_J0A0000019W00002YG0AY192e440i0b0080
+GG0HG5400GG4G01000GG01W2A48AG808000G18000GWC0eAWO000G424004000CBV2vuR010
+a802e8000IW40002W82Ga04G42401024248840C029u18G001407002pOMP0G83p0000MM05
+oSw6W401erK3kWZ1W0008000GGG2000008I0a02AA0I0Hg16H0400W0Y011X4W042040209R
+R050XebFC00A2mH@60410OjV60W204kj101000WK082Z00008bI012OGWKa208W100G0W0uf
+@40002C2W100yJ950Gg80000I100203005020I0M_w1280800110W012000200850I0GG200
+40000WW0apy320000880azi1b1Q0G00Wv3V0061Gkj6040032805Y018HAgW044G0We22000
+100e0G00000W2zgR00G004100W8FG0G8WS@l1mI802@@10420BbR03100W010Y30e0080008
+210002008XvfDuVw4Yut020002Wm0w@tWBPJ8Ht7011200000C00XDW223G8000W00W4GW10
+X0K00GPz6CvE3000myc1X004n0010408WXl@DeY86YYt0W000000A041WO0G0GO0Oe288G3m
+WCEG091C00840aS1R3wxt0a000008600008560ejfG0GA0G200G2bmY4WH3mGWWWXW823cXy
+@J00mb100H230010I200Y0n1060W0C0W0G0WYwPuqU3000b02W4b000ea00ea3D8zS3G820i
+yH21zR0000Yt_D0200010eW5qC8oV6098000010z7G0G0@5080121W00WGqx60E0xlG4R800
+i900RrR008o6200R400009hqx6221vl00X0000K000040o0qWs@P0H10000m1a50000eN000
+0G0e2000G4G0200810X8pmW460W@10000008Q@wenm800000WXWkD00W000U412000020010
+00G0e0Kgf08tHuBv7G7w8WvD0WTB20FFbJ301000G00m@d100o00028000m@J@t000mezxR0
+0@@102m0000W0uZ8ugD50000Y_96GzJC0SZm00001Z0a21185225A446CpO6O8YXp01W1000
+30C000a0d19xd000808000VsR0pF00cV069mP000OF00Wv000HD000A0C4r0O0GX06000100
+GpSOS6u0@0G0w0W2W000W10FKc004L000G0m000YXp02600Ct0L8g0O0W0m0G9Y1WI4G0d8W
+28H05060A0C0M0O0i4n0O82u@0CVy0003P200m@L1G06FGrp0ecxD00050Gz50WEwWwrK3@m
+02cQA0z330oT000qM3maPXCal1q60004WPJBv@30W_l3cP62MLL4yG08OcPGm@0m@@1WPcH5
+pCZWOcP0fA00Skw38080IzM50400RHRGi7CyUu3X@RmvOCS5V59bxnSw60W00etS3MEFXSWU
+etV62GrWNlJO5V600SqL4_3zmn0800WzvDetSC_ssWbrV87z4IUFXsrVu4@AU_tW9jCuJz70
+@80ih_Cx6BntVO4YD3fuv1010WNlVe@V3000WQI00u2_A0008Kkl10100cFeY1pD8I190G00
+O0028lk7040G000000K0000022900a000800000H10000HQd6000eH00110OCWWPDG02G0W8
+01008W020000G9AWW0uRU3GG000008010WG9@6002000004008040003Ca000021W80nkQGM
+y9Ke@3W220AVFXlvDO5C3000G0W2G0WO020010004G0011004002881A28XA0A6J10K0Q0A0
+GKXOA0O20J02YW200010GW2I01000_UWI0G01A0000010W1AW4000cjZ1XYP080G0G08W80G
+10140221e0Ko008W0G001CeG080H00W2I014I0mNoF000mAdV6Yxt00030W080008IG0002f
+o808040G810480P00000O04m0X800f16m03C84X9G0211022G88C0H0X0X0W4W140000m37K
+K18044000081GW01G1G0G2880000002W0W00008080WW4H10a101G01W0G0P1008WAa00WC0
+W100Y0002e008X000F0PGGzCG00G0002G7aI4mQ2VBR000040040m02000o00W1402040W08
+AI880Y001014GCKl1Y04000KC@xT28088YMEX6mDe0_4ous0W00C0000004010K00G000028
+WbDbO2V30a0YG0004GO0uV@L0010100220010080W0G404400GY0X00WO04010230084000W
+080004W002004G880000LQ000W000K0e6y4sYC1C00008200800820GCtaDID@100W800400
+080Vol1ZLY100GWqlD00c0GbX60GGWW808GY@F00100004c30GWeyDuqs46ur0W0406008kR
+r000G200W414000141010010a1Wx@DeOJ6oFE180ma01W8Q_q30001boO000000208dRPmWv
+6G0000200Gpx6CZl100Qj@TF10100fLc0000ar@D0080sdz6Kgb1008W0100D8j1RfKnVu6y
+xD3vV62200100W1W0100O00iM_3208800000M71uRqA001000084104myy60000yjS3W040y
+oU200G810005bf19sd00a2082WC0K4Y10825_b17__0001W9YD000W000A041H00AW0Wg00O
+W8W1208C080mQoD01aG0G0G0a411000WL400W0002H0840WWaOxD0000820G002W00GG0410
+21W2Y002H80440200Y8C20G8W002a1eNV300W410010103Gk7C0WQ41C8C401000WX453@G_
+_900021G04oVs6O419004A0CO5A4GWK4800MhtWvOC06000I00000V6001WExv10008000X0
+42i00X0W004CG00004000HHG41010W01X0Y00000qmmD08000G00er@P000858000O0G0ZuM
+Hfz6Gg02us_40WK21I01G1I954W400KeK004C1000GA404W400faY0HW9000000YkG10H0iT
+r7IWb1000K0802_2t00WG200g400a0qKk1000008041008aK00mNu9y1k100100002Cii1Nz
+p0H00041080441000000084G000Gm84G09Y01424Yc011G0GX201000462H3K40G022W9000
+00009x0000010lnPmRTC4sF3008000K000W0ekD3g@tWSrD0a00mCy6aQU2S0n00000nW10u
+rC3Qc@1000o9@d0O04000G0012000Y0m06001HWA0I0G8m0OW00WG0W6280W00W00e82000p
+DCW00Ubo04201PvR0910WmtCWWX0_kz604080R604GWW2e0HY430G0000W020X00G43WYCm2
+0QW0G00G02C_V2012IwiqWOqUeCu7008201000088WY000001G0G1000XG10012010mcy600
+K850f008000WE103cB10400000200W0MWm02000I0200G00100120000108XaBD0400uKz9C
+XU20WQH010iI000ebG3Ix@1W000000g10000K10H50000Q102G08800084zt0W2GtBqV2201
+Tl0W00840S00YW@20m0i@2000Kh0P5004Gn00240D6zOP0221400W088402@t00092000010
+8H00808Hy4Q@t0V30040mVzt@00W@v@5260000007Hemv40G10IJD0000KlL30000mL60mhA
+_E100000ug14K84AW4WKmW000WnIG2C82200kxd1000XXlbWG8y0198m_7W8Tu3Hxm3YsV0y
+W3FO6peo@08wgKLqgYPepK60_84O6Wu@P00_A000C0S100zUOmhrCmS30O5C3Qyt014Wf602
+pTGM0u0T0GWw0W0D7WmmD066NWz0u0_180o2G0OE000k51404N004P0O080W000W0G801WG0
+W0Z0030XmtC0m5W1WJ8AW20H05005004f0C8I1H1g0m0K001efuQ00CpWEvC8@V300Y0ImD0
+qV40000u@4yIuGwD00819183I84AeW44mnsbeoV3m500q_l1CpC00GLm3U1O6p2K5c50Fu9G
+LgYPpO6ymJW7U00ND00t400y760yH4myg1ug10OG_40000Qr008O@AwaEXivJOT_4wTrZonV
+00W4UeSaSPsC@UBHKm9000400G0vB@9S8F3HuRGJW9izk10lF0AnN202080010oiTZamRPeD
+9kkoWbusOdT3cxt0000yM700I88aap3vsFI000GC5U200001500yvR5vrQGvvC000UzIhAoN
+tW85iH004u@@60008vrF602010000020G020W40H0000GY0W04G0180eG0021WG0800W0W10
+0WGG1080004e260G00O0A00000000yo0u_V3QQrW@@J0021GJy6G0040002008W00004e002
+001G0W020211040088040G0100008qfF3008W000W00U04W028Y00000K020W00001A01000
+0G12008001W84W0040He000b0008002000W4AW22G4W0A0080010104W000080WY200009KW
+82000YZ1W000WG0G08000W00YO0W2888WYG4K80BzR00008KG1H88228110G00804WG12W00
+G40000008W0GG00000280100WvLP008208W00J00G0284820002180020008Y0102028W00G
+40G0Y221aG808fGa0n08W41810G00L6GD1e8WW103W04WW10m00002D60EA0X0u0AGW0000s
+J10000W80G0H100W10Hm0G288G0SG00504P0V3004XO40m001CY10800o8Ga0f10301GX022
+0100G29004G020040G004jV200001008000028000004W37PusU3UlYXgxD0C00m1_6y5c10
+100W001amV2W0000Nn0qLl4RCPmLF6W000G40GKPpI0W0Gu4V3W008ai@30K80IrFXV@D020
+10H000Y0000404whDX9_D0030000048000G1W06WE1C80000W0W01005W40000dR10080024
+000dobX40D0W0002000020X7zR000280830800HG100aul102020000y5k1h@d04I0000000
+02YQjq081000W80I3NYo2CeOS3401G000GuQ3300I0S_l10Y004W008000001TKWxFSOl1FQ
+b04005X1200c000008W8000006n@x68200uiU30040qiE3TrQmYCdGW008JU30008ybc1huL
+1WN1W@vJ0W0Wm5t645N2m020wPo0WX00dDQ0K00eaRO00Y0m3yFCFY128I2A15ZuuV8y93W8
+G4iSl1PTd0020000H000300000LJc11gRGhz9000G000200G1YmAD0G000012G0W01041008
+20We08220W0G0000004LwPmWzC03K1W4080P42008410W000b00Kgi1000H000WiTV2dwP00
+000WI40008K1W04W4180020mOv900201I8G2SG0000WUDzR0040WLwDOxO308200G0010G43
+802G0XG000000148H7e40200844H40H400010828800K0W8W0m1r6yKO24W4001G100H000H
+00W00100008Y0C6HFXbsC080004100O400A0050004W018H0e00411WBwD00A8400G818013
+vR08a6WpDC0808220W40G20hfP08020O0GW8HW000J4IOG4bKo02W00020ZC8c9010622W88
+20G0040400I400W802ocX9PhODX42BK22G0800G08b0400G000I118510000KK288X08IHA0
+04iW000002R000BmAn@p64ul10HAeGWI0120W2W000C00WeTIuzG3Y@8Xj@P00K1GJXd0001
+1GH202004W00XA400020XSDk1W841808W0WC4004100W_zGXP00W0mSb6aqB30100G010_wl
+1WY80000Oz3H2P4Z1002000605DcGyQISvV217O0G3I0G2e000O700O0100GKWY5000W0188
+301G0400006l1e5uAEyn0u0O0846GOG400000W1K84W00bdjDGW00Ge@6i8h1x6B10C10080
+WpNjHz96qoU2@zdW0000000G00A000GW1200G04010004F200r@p0W80WKyDuzT3W02WCpT2
+0W10Uzd11eG000000W002043OWq7QmtWEMC0480G5pO001G030002000G0W08x4040HlWU18
+08WF20000X1G00G4wZXp000171p@W00000m00xid0800000R1000mr2iG0000lIy4wztW5tJ
+u@z4000_3G4H2WV_1T300x@F0c000hTcXxcJOUV30G0000080I909XI0I172X0620szF100G
+G2Im042X134000aq19WXGeYHD000inZS6aRZ10800y820000_N10UZ20KK@3exw3mD9G@00W
+lU000000iP6H30FcccM0jqIPO00Wgg2Gs_C0m0W001WHm_Fq4d1Pnn004C008w0q1m3W1W00
+30186E3GC1Omu2G86E6C5W0SCN20800o1tWDwDG08ma2W006W1000300WV000cA00CL0C040
+O0G0G00001e000G1G010W020YVAD8y@400WPg90085_7Q_k28Y00E0WEq10V1A01Ou@70W8A
+S_l100A@ZmN200m7RlPWdI1WdzDW0208H10Gf00WK0X0u@N000000C02mW_O0100ygRFs736
+0R60Tgbp_tOKdi1TRZnXvFqyD6H@d0000Ke300FZ@mcx9Cnb1ToPmDwFCxd70260QQJee@J0
+0WsmpuRy1NEXYNnyVLqO73ldZ10u1WkoVe0@400040100OlV3kQdXaSJOzUFQatWrmC00020
+80000X100008800400OGyPV30010208W0000X0W00C0X40e20Ivt000H9e00041401H20000
+0XaX005400002800510G008QV3UatWl_J004010W004401800CMeF10002DfN14020W00022
+0Y2@F10100L@Q001003080j@Q010Y0K010WO0018040W0G20G0C010000418Y80G0H4000W0
+H50GHo600ug2140080014G014000GK4O1022000G00c000H418WW80404e0Q0aKIGC220010
+30e00Y0008X004Y000010GWrzDuyT6YZn0000XW0G080G000001800100040480004400030
+6001110A4180G4G0010X400G0G4005K08Ga28G00X0C005A080240a8oW81m02e41180000G
+b8AW10200We038G108Y4YA0e0100001G800W01C0804000W104G396aY000e0O00816000G0
+000210002G0O0mg@IKgV2P@pGN@64Bk13yR0800WQzC08W0GY@6018484P3UHsWp@J0000d4
+1000400fJyW00G00080200080W080024002001G02001880001200Y00O@V6Yl@Xdyb0G00m
+p59ipF60014ksEX9zPW880000@_SzPu6c7cxtWuPC00GG80040000Y0080G4OY1W08Pr@Ds@
+tWauVe0F3kLp02A00jRd02000GG04LHm080W001040800Q_t0XyF0G00000504Uc17SR00I4
+Wu@J00H00Ym00a50000000GC000000061mt@6W2G0OrJI2spW7dCefqDEBbX4fDuNU3000mw
+A00egV30W90y7d1npR015402104410Gs_F1008080C0006W001000H0GHFCyWI8TWIIv46Cw
+y3040000OebIU20W20IZo001005Lb00G0Wp9DubT340200310002W0W02W4hg0004GLUCSGd
+1VxRGqTC8040uTu4IGt000WG0W0040100010W040mJy6G0Xe01000867W6hDWG004H08K008
+00G0W001000W840500092045006f8000H00WG02GL54049KG0010GgW02L0c@U500210008k
+3l1Rpd00042a02400G0W0400H008@3600120000Y0a80100mL@D0G00204100041420000G0
+000Wcf000G00021000W100010O000GW000C0005040W0040001YO40000GC000A22000Gm00
+011Xh03M0G4W0GXgtCm00100YWY8G0100GA00040200Wwe@40204Kvl10G080WH084048DR3
+80G00110uiV3wvt010bK00I40G0000O6UhV3Aud10a0000G0G000GA00440001a2000200GA
+4088W042X2000900GA000aXm9HCw90C000000401W8W0000a00_8F100G0pxdmG_600G0000
+e9000480G0dyd00450000J00484Y0021000mx0Gl_6a_D3000001X21000H8P04Y004W0G2a
+48e020PG00a2000002HX0vC8__A000402088fV3Qpt00e000410UOrWtvI000m08822000Wr
+HpGhQC0WW000000G00D000mW008gEX1000100044080CNG26021XGW000m8W009044304020
+8o90020G0020O_jAa080yUU2lppGtLXieO2lkR0W000W202000000qs@2F360K0IEr0W0000
+0108GGG44l1GGL48G88004X01G00308W9nDOPvA000W000a02X0Gr@6G0GA0010aMW4aevDe
+W_4002GWe38000uGAz600G8g4r4Eut080000XU00G0aR4000u_2WA0000m001sp000900000
+Q100G08000042rN0000r1qB3101zH00G000820000Y20000r20PDh200KG20000ecQolMY4u
+CG2G6CGW4u0uI008b0838446C10008T1a076U20e000008y0W100Wg000000g2000000yF0H
+3GQcaiD09pC9jD000@3W@l10000Wm400wskYi3D0091W30000W100mS000H443c1nBd00100
+YC004P088G0G0W0a1W00HBh6800000GOi20005u7W003010n000eV6W00W00G43010noP00m
+0W@@D006600C@0Z1m0q1e5W1uRIKmqmv7iXYBG706060p0CoYpWGmn001400000A820ZTdWH
+30W1@J000Kl20yWliL1qB0G8SC00000100e31000000y@F0y7020X3Wt32o3U40Vc9mCc10p
+bXPF21uV02l_001GW_wJ84dJ_3xaQwD8e_4000m7_e4VZJoZF94Ck7XiO000001404JcRmeo
+6aw631dR00WWW6UDGW008000002100408_@t000VzDeZnw_CKhk17VOmvRBTvF3PtR000840
+000400G0100G0808_V30n_04DtIrldmOw600G0OzV3oCq080000001UMF10001bVdm5@6iwk
+1pkRmBrC0O00eJ_AEcdXlvDu5U32EF4W000200040400004W4GGIBl6SAl1G0GOUlt0401Gv
+VP05W010000288041mG000100012002Wz0C000000a80020000MW120GSIl1G2G000208028
+OFU300Y0yBg15FaG3z6000X0e00mszR080220040A0001I058W00W8W0e0WW201400300580
+00OW84524qWl1g000IPr000100W22AYC1GG01WWG0G004idd1WrS00054qPl140000110000
+W240G00800800000400W00EQQ2Z@d0100WTbDu@V900802W110010200W83WO0600Y04WA02
+80W040222e0m080600fGW002G40W00C4060210GG000K00Y09O40uIv4482014000018e100
+0000GU40008I00W000081800801WW04068MuF10104208000034iF3W0c0000080108SoDGG
+400000WGG0Ksy60800QCr4G200ijZ1@@dW000800100020svp00W20fXRm4v600WI3G04K4_
+94ek10040W00800C08yV3E3rWAzau@VF2psWpgV0400000W80mY0018YIQt0WW002000QjB1
+mG08@_RGB96Cmf1Wa18M_t304100010000HygF3lgRmvsa4Ok10010000G00W0000200W080
+020W000810000000G02o7x904A00H04000820W0G020Wwft000Gm8700wzV38000000W_EE1
+0W8W7ncm2edS5l11_Rm2y90002W8G2Gfy90W80W000Oyv6G005W00C3G00098G0XnR000qt8
+NDemuA00WGqTx301000101TJgA0001102OyNF35zRmoy90000QYU30008ipc1002W0004000
+0200HGEA60kk4uQ_4gFNYxLV0G04GBFg0W00000200Y200C20RkO00W2YyiCG000WPO62110
+W0000G24120G0002000A01WG0m00884a80WPb008XCbG40240W8000WH4G00040eDU30C004
+k@3G400410010888p432jt0OG00000YYAtWBAyG0048208G00002020kvt0G000g24IG8804
+uk141800Y040Y8W1000C000205m88W8100J000a40108WW2A8001000_xcJFX5JbeAU3YgF1
+0020G5G000G0Cwk1PR4200mCI95424000WK00001AiU3W10IHA020Y80G_w9000W00085041
+100W00W801200GA0001H00140mkZD04S0m@@6GA008TD66pF1000Ka24050010A00000400W
+200G208K0e0O80Ufl7G4A0000W0a0mGSW00G000G000824i4Y8220G010OLmxrCSYl10G000
+08W0084OPF3060W04M00H100000_qUD0000oH1ICTl1W20G0G68aw432200oiEXOAz0o0q00
+32800W0WW00m00020K84040902020GG4W208kwt0W0800WGG8000W02804G0202W0WI005KQ
+0m001008000qD407a0X000GW0mLO64xF3008a000084Hq10W00e410Y104020204G00488W1
+100280e@g2X000400W0H200nlc0W8GWjpDOR430001CgU202W0GW10W805ezV30GQa00401X
+000OD9H080G7LQGnyIG4W0002W0400080Y8G000W9WY02049HgJGG8000040zd0028z5KN00
+00G70W040400000Gl90O0i@20Y000QcE10GD0000490PL0000oB08OMs6We8W000u0000EU1
+I09mPGspO000ed0000071M00000C40wUt000P60000ZiEayzJ00OW1000004O00004qH7020
+00qZT0e030Gh6G7_2100000000xsC00W10CJH00W00W3Lm7F03060WmB20n60003N0000000
+cn000ulV90mV0000omCp4f@18QPEJqoCZefgApGLL_70YmCcX6W9CPu_V90Wv700060N00Wv
+000c200Cp008o0Omy3W006W1008B00Wv0000400YI08CZ1O0W0m0WitC002600C@0w8O0m0W
+0e300G500WW000Gj2000000mK100008A00eq@7Os100W2e2e045G1W8W20HA00YK0L4f0C0b
+0O020W0Wa2yu@V3000te000100_84000000Tu30000@yluV20S7H0mc2CKk1_2A098W0izl1
+ML500005uV0xt@0000000Z10000000WP0000W8Cl7000YG4000AC300W2A0W2H0G4H006OW8
+y0eI8IIR6ZolFfNR600uRr@@3jgjnukOqST5tARmW@CiYQ2G8000209000889A30000280Gu
+Zg7QFd1GP300G000221CiV2xufom@O0001gpO3_@@12040NgdmmvCKYB39TB1000CU300bRd
+mHSH56U57VR040001G00FCR000404W02JjZ10W5_WODOii400044f0F5mR0W0W0001m08211
+02G0000200WWOW000014e0AG005000100E00mMy6008W10m0WW0000e000020G0W0W0W0120
+GqCwC0WC001CKm2@6SHl10W0WxSsWlvD000080H018W0WluV208980Ky80WW0G80CAG04004
+43i6e004020G005O040W00W0WG02210e0G88W1A40008W1aG086420G20G0GWW4PK0XG10IW
+004C02A2008G18OG2100G0x0e040000040W4n0G00eG014X02G0000Qpq6KNd1bH8nT7OCIi
+14640C01e2m08041W00eX6ZK006080500aG05XX80C00301K44400Y0CW240004qm08AHq20
+00o0000W1ueO08G01CW0W1000A20000X004G000mV010eY0W00W0044101408000CK0A4020
+W110000082G00800002G0H4mDOd000Ga0040D000000881B1000Oi@l1u000024GS7k10G00
+01104Ih11kQ00200100204W00W08WG02G00026G0000K0800540000Sd0WA0GGz@6e0000W8
+4GAy9azG2HCNHZiR0304000C400o6c104NIb000WWQkC8@P3k3sWG_J000020W04000YVZB1
+000ON00800WW8200Ehj4TxR0010aRDRX0W0mSvC0G40G000GYz6aYV2040010J006000a000
+08020GI004W001241008eiV340010000wnK30GKiKQT2Y8000000CoW17QhIR6LW0G0eOz40
+044qrl1004404080400OOQ36yt00208000202026@U2000J0020880200040m00000000jRW
+UXF1W0W0XUmmCfsyVb1I8782Ot0W04000200044220000W01040WCxD04000W00800G00600
+0010CNf1000H02G00G000GW10WWW840400004000GGA000100HVz600802H00000100W047A
+O30000i000O8WeWeW00000040015002151000A0obn0304001W1000m02H00e10808140HAG
+4W0G80eaW2210H1G090a000108M32Wa8298Q0100000WOBHW0W0G8H000WW8I00G0H2W0IaF
+Su100018u2Oa8W822G8mCp0820WH00800028204020e01A0G100040G0500008020010W10W
+000030m40340081940a22G004gW0H000WGmW_6e8000OM20W400H000G10000024bk19eP0G
+00aH6CuIeJ_@t008b0KI9W4W8I1Y0CbP5951e0Ia0G0W200_Lt002040GAf0WWWkyc100000
+0a08W40WKIL0C14108b08I405G2I100m40Y801000A9O0000u5EK004Y0G0W85018C00WK40
+021X01G0000H000040WKMDeibDQsN2WW01800405802B0002W02G08ml@D00GH4G8q4Y08H0
+142WX40W8G0uvV3a00W00001808WIW0AWm10002i0080001Q40W0200W04Y0000_v1G01000
+GW0WG008W84128000HH02W4Jh1010000S0a0N8h0@04400G0A0Y2CH1Y00001W40C0405W0Y
+011X@R02GS00430CW0W000Y000G6004011W1W7m1O016W1PA2ZoGc6c9W1G403A0bYoYOO00
+m0C0000TG4C22440Y02088be1G805W10E0GuT6yJV2B3r20I2KG000C4008000Khk100081b
+002004uuM3010800G0upJ30020008HOML380W0G040000400822WI4080000012ee2200005
+711GG094C40W001000003I401008Yr@DuGORGV00010VfhS30WGav60801l0f00000o00vrR
+01e@0040mUXQ0_hp004640000GV1000IV1z3G000_bZaD000Ga00000u0000ou1R5084sR9V
+23000a90020GlGa200WmnJ8qV3m008q3E900W20uc20mD5mD00Wh60WK0IGcg0eD5uL7g20b
+fc000SL10ue61W7XmFCOWfc2W_@F0FyV00000GF1ulEYWBeQ0tG00kW205200Wzz80eZE000
+0GtkW200u00000SM0049000440OvV30W10y0m13cV200mC60WPCmCHDmO0u0T000w000C300
+GK10G41WXP7020E8oR3OE00mC300W1W1pD030O0N000C000s180Cp19QE3mGK2e2G4G5WaeA
+09HH100mY6WIaO5WevEWBH8060n08000g000C7008Y09YRm9e6a0t9HAa00V41tSU0kQW0oq
+p0fk1WU410000ROJ10eUs400WRkIl10mz@xft00EPL40rK8eggeALLn3FeYPcHGFyWWK5000
+GzFGm@00WPcX7000CpC0ZXfLGsRSdj7000OWE00CEd7vvd0W00XmwL10G0GStXacF3200000
+W8CCk10020W000W084CcV300Chj_K2j_@00G0m4oDOHzDAaxdd5yOlz40kP0ivlAt7hoc_64
+tD39UBH@x9qdk1000G_ls0G0040W00002G080097U3K3000000000GHpTF00040800000WW8
+5WH0A000800K0004210831G0G000082804G0G080W00040020200OwP301YGy@k12i00wwt0
+GW30lzR008W0m0000100102000Wr200W001WWOVD00000008appD00040010qyqD00100080
+eJqJORw400G0aEa400020G0I000000IGGL_9001WOKO34451000WW410000000600Y0084I0
+102W300GGW20201G0mW1W000en0K18G4C0WIgGG0000WQB60008048GG110082840G000200
+8210WYG080R3Azt0G1004000400Gyew3t_N10GG02C300WW0423200A00000101G0C08W400
+00G0Ke011004D4200000OmW00X000G0094epA308W0A00X10000O05630A8O0a8WLG1000Wd
+900W0e022G00880G8140000WG804Z0080I0006000020200000004300O0W0W00141MxcX3d
+I8fV6o5F1W000W208kqF1W020vSPGa@C0200084G04G2240080G100WA04Xi14G004W00qRc
+100kpK0000000fbT3G001K_53W000tOyXC8310001000G000m00G00004Dwk1z_MHTH90G00
+uZx40W9820004400X0G4WDuJ00c0GO@600o41G08000082o0081W00000W8A0uwA3EgibTDP
+0O00KTT9CgA35mRmWm6K1_300G4@@tWaCC0W000008GH2000080G0G010080402020000500
+000182W0q7S20008cOp6000G0210sOsW6oVebI3spK200WG0AG40W00040X40208004000Hf
+000X69rWhvD0040GtuC45MBhxBX0Y0209009q8nKy6ivj401000061KTw3Wc8WI_tWvICmW0
+040101W00006840108q4MBJbpmf_60G04Ye892c4Laj2JuvV3IPn0Z2002100IJF1W040024
+0G200H31800G84g000m000000Y0000wI080000010G8ZC010I92H001H92214K04eW0B8000
+012ekNpWfUQ1G00080W4C10Gc1008800SVE67sR0G01WGyD00G0020C0K588W9AY022006X0
+01403000000CU01021aGW280W0eW200HAOm88WYIm04G418000K40004G0WuOhe2mG800000
+W01K2G48G8WrOJ00H0000G02000G4008500210000I110G82D8b020m80G0IH0Y004140f00
+0PGAHa20001a000000qfBGZ_6G00000160faA0D09X2G08UBq00W00Y0418W40KLj1jFs200
+004850010W40c00008yoV306X000G0100K000040aXXNSR0313GW02080C8W08O000002802
+0008100800G010800000ZRW0000WW0yD06802G608XW420P000G0100G0W0006101a1IQPjP
+3gyo080W08000IxsW_sDexV3800GW40000WY8WH40000120G00040WW00X00000M2I022P00
+W20G048008000100We8200GWC000202O0880000020G204C120O040m0yNW10WWO2eLbhpJ0
+810400G8GW00rTdG2w6CpY100W0100000GY000G0048m9yD001000YK001920G08G00G0800
+100M000000U300002000012812W0008I00GWY0bgRGg7pqWV2O0000WI000000PW400GQ4W0
+0000fG00040006002HaR0W00u0zkXWGm_B0G8000070GsR6u5w30000gN00WH_De9S3000Gn
+DY6e8E3gdB100uB8w00000E00080020000WeY0CuoEL00WF210U420000AC40o600q70AvV3
+h600xfQ000SLn3us_3m7XG4W1WFYW0s0000000QE0004912WRQ30V420ig000004n70yg108
+000mC00Wg0mPz90000qZ00GXvg00H500Y80C080G000o200m80000000n400H6890CWC000P
+000Y000Ct10Ok3yJ42i70C020oYp00uK10mC3e201G50C8503O6000QQ100oA004L0OOg0m0
+W0O600OC00WX000P500oA064P0C0W0G43NBtqRW3p0WsPD0000Fe00ZWsF10L1e03000WIN1
+ud000uC000Cs100_Jt03A000WlF410F2H0@780Ibg040@100R5Qp7rE108@fayJAgRcB_ben
+V9QZjYTkD8SS301000WO18oVC2e338000hVQGvraatjG00005400yhU5rcRJxuUSwk4DlNnT
+yC000100GyG0TgysU20800wP73000400G001G0aGl1W800QUt00140LHRGny940l1000G_UF
+Xw6CW00G00G808000G020441000000ex2GVz9yJl10420MotWqVCucV3Mpd1000W1pRmVv6K
+xk1XWQGpz64Tl1W0806it0W8488X0082020200yvM3YFt0000KG000G00G0280011e1A008G
+000W00801002W8010m0W000WFvDWL4400000H00LWAe04W0000WW0300md_60200040Z1010
+00001r_p000a040000W00dmdXZlCW0000804mQiD0W0C00W000804W020408H0W00120X00H
+0WeyD00G001W100000014G020800HGG02020040080040a002400g0W00WC0000000sYxwR0
+00202G20200000K8qwj1heP00W180000003W_@d1W2004000W0G5KaV2000UUrdX8qIeuB30
+GW04fV2DUp0080W3mC000804020020000400280000OG0000080W18D0mc6010000G4024A8
+0010000We4F3Ewp0000mbINHIs6auF60120cPt0000P000400W82200000G4YWG40104@PdG
+n4C48k1j6RmUz6SLl10002000moM00O_z7Uit0Y0W0@@R0Y08Y9hV00H0OLQF041oumI3IZF
+1004000201G00800042200200XVvD0200ooH9KaE3jV@0000100800G4004000WGReNp4004
+00080OJ@4000100049DT30020CEX174m000I00002000Goem0000000Y0wdE10WGG000Y000
+G0G2G0000vjy9W000f526cm@100042000Ye@10g40tnnGJz6024Xufn46E@100G040008000
+0004S143c3DXZVP0402Gw_9a3W10830obdaruD0000IEz90000sV00GQW9SXg1vqBn4WLi8e
+180008124qTl1xaR00008G0000004X0G020410Wa40b6004280G60001002W00010001W0Wy
+QJ0G000000ebEC020000360001YptR00G40a20000_l@utW2CD00q000420002H0K0H00120
+00000YWua564QV2RLO0W080a0G0000X100H102000a4020200G410G80Upm0WG4W00W8G20C
+018W0KGW242G08Y8081W008WWiPQ25VQGL_6KSl12000004820000012041Wa8_D0u92G3@6
+00H18w430100G200uBV300Y4irN2Y000Qfm0a00YVkR0W00105000WW045920H008WU3UeF1
+9000000f05982IW2WKW4W808008500820ZBnWmPPuzT30G2010e0G4GG40AGA8002W00005e
+X00400000KN264nS2a20024u10050jkPm@@60A000104GYu600f0esV3Qht020004100Ets0
+410HW20H00800e20008020m2C0W0K01000M60aD13VtR0W000WG000W000G0W1G000YW800C
+4ekFI00mmvVh9ijk1WCa0chWXrrP000040W20000G001G0020i9d1zOQ002Ga8II00000006
+00WA00W1W0X00002e4O2W400a0WIOY0000G004yQG2R_d001GW5VD00e0020YI02b0PjOGt@
+60_fPudK300000070G0100GCa10008JhR0W000800W4W000010W00Gfor4YwE10821f5XH2_
+900040G00120Gmq_D00A4msy6040000A0mqv64wl1jrRmj@F0000p100mcz60G1W0G000005
+0000000a8H200W800040WGoD98001000200Y0000m0W810Qnn000400K00Qpp00000G100G4
+00qAl101000W0mg0020xjGlR80a4uC0050GaC6G0028GE3wytWs0C0i500GGl5080001W000
+0G20000f00000emK1I0000000WQ0W000K004200qcg1BjO00000X0200G00MaqW4nJ8cy4IV
+8108000Sr000000W5V30000002mX_PmXP0000u65080jzd000uH88Y85vx1m9700se2J@dmm
+H60W@10000840mV00mBPY9n_v60WDU0Wh6G816O@7H0000WFS0GV10000008Y000G0W0n5WG
+Eu9a0d1EG714WE000H00080GR@6001200YA0H00WUeJ0n400pF014J06lld0000841004H00
+000Gme20000eIu@98004G0G000a1040000880c_n00G4100G044010100W800010006L0004
+0p8G080W04vY@400W7I50E06000Kg660_5K0yb80u760my3Gt00WlWgWxrDmB00Gk29anU20
+0GDf1WwJ0000A@0300aeP@D0001Ln@6000QCm23Av_XAxDm7H0eL100000WMD00000NP00kx
+@V3C0WhA00000N100UOWjxRfmsA6r63mBB0Jcx40I800001HaPmym6irV2fUpG2@60004002
+000GWWF@JW0000020mT@P0000i600WGPR100WW0G0WOrteNS30080008082FUAzF1000UXmx
+400WWvbO8QS6_X@XgqD020W000W01G00lSnmSsF0U81eNg72@FaI1C8ySC000G0006eFQ380
+G000W00800H_x6iYN20W0AQ1E100804001wat008W800040q000W000500qfN60000sT0GKb
+y6G1Y40500GCS6000W8ED3W020000000G4uwwC00500008mfk6y4l4080010400020002000
+0205089G000000020Y1G10530A2210404G0000G0W09K41G10800040H10e42K00WW00eGmm
+808880GGY0ag00GX400200000V220H0KG21N9PW0880H400hNO020G0aG00080Wog9100a0n
+UbGg3600W00100400WWPpDuJk4W40W2180G040200O80531W00040G0090010K0050W100m0
+G408000800YG080020401We00e809004004aeI00KW00048CGeK10G448m00000aP70O088G
+8000O0GC0W00020OUE3014O000W001402W00000YG50080000m008bE30400W00afxV300W0
+0000CfV300W00004080GmTaI000W00A01G00G01049tP000841004d1OmC56005400003K01
+02W0WHEc0000I91W0G004W0080020W02W004XWWdIG014G7ZXCul1DY7oMQ64M7302W043P0
+W812SdG30140200004G4e000W2iP080000WBwI_JeTV3o_t00G000280AzF1a000@@d0024W
+szD000I0010000YO0Z001810WC0W00000023WI_hWW000000OW006PjR0m0GW7LCerT30004
+011W10804Y00Wm1DG403mv@98sB040G000W104WK220000140yaX100W0AbZXo@J8dS30010
+T2d180G1000208G4PoV30048rI9600100001200W0800uki6a@l10G01sBt0O0W00000810i
+CSU2vvR000025304G820sXa120o00K008010K1V2002040P0iJT200041G0GG8q00200m_F6
+810WW4200002aqSt8Ou4W0W8D2f1tsR0Cn402C0040202zt0G002bxRm9p900GU500020200
+000100G0G004yok10X000024m4W00841Gz@Iali10G0GG004KXj18W8X00cGGW00ug_A00W0
+8G0900024K0E4GW44WI1e0301040GLC00021k6r0JL208I0X4IH020cW12e1e0XzlD000880
+0W20000WH5008G8W00301AW02GO08e020G0G50H48G244C2e44008Y00800040018siV2G60
+003121G20I8I84204G018Y0A8W0W28I6M00925Ge_L0W00000430042801008000I0100e8G
+80800Y8010002001G068980026802IG1810C7000E4C000W00euV3iBW0WG80W8G08G42A00
+0G01W0400200C40G140GW0avjC00m0W001W@@D00GG000W11600YO204G40GXY2m8a40AceO
+0BI0W8m010Kia_l4000ecym0G100A40085K0WG8000G1GfW601000W080f200H0L8a20000G
+X00f41GbQ2G40A882XG00000aVGA00OQd44WK00081001002W420000a200080000f2OQ_70
+08I1A0S0a000e00000G20GA00G00801a20W4mowL0004e1J3000W00e0100e0W80W1mD02W8
+002X00028084m800We40002G10G0W000e0hxd0G1044000230000X0IW4G080420W40800G0
+086oBo04I40014H23@12020O0806AE1W000mYG4028P80i0eQwA8004002020WK0G000G0e0
+xzR00100004GW0020028_vl10G808Z041210W8000Y00100008800000GXG0HWP010HW0G04
+0H@@R0200C0WX0G0000GOW00080008s@v6yZI2F3cGQv6iLk10G0202G0SMq31@p00002009
+K0020G40W0000e7730000W0G0022mX4220eG0WGX404W8GMek18I00_zt0008l004000e020
+51YW2aIw@6801240K0aW14YUyD048GI4tC0I000000X40008000I0080484208G0H0000081
+0002@0OG9@F00O10000eG000085400000R02000x1a10000a100002180000KB0000fEGl00
+020_2000WG0000G08B104GA6000W70rvkn010f0040GQ1aA00G8f5040400W1000K3000WG1
+Q7u110000i5O50001mM08wV300r1G200iUy4s@d100uac000000TtSZ104000ug00m3L1WTZ
+00EK5ND02kf00zH40gR60a_20eL3muY3UG9I00YP2000mL00F000JpWv1iHo3oi74O9B1800
+0UN5m@VdSM5Eu00yU00QL00qW30eD5uEFYmHg2XhG5WTu10ViZ@A00H500Y80646040m0K10
+0HWR0YA00260LCk0L0G0k100K1008800m850Wf4mCYHGK0O0c08MS300S1bxc10G505020aD
+d10uS01GW100pF06cAWi000S100@@p02300040LnYR000WG10WX2WA35mO080p08Q03_uN20
+82WsK00z82tXAA000pSZ20u1L100Y0m7X0WleWFKL6VfW8cfA0Uo90Sd10uZ80W22mL00Wh6
+0WN@J0ex000V8X9WDG1000hg2010000u70z@F0COl100Wky5W0av_34ueg0u7H0GLZ0Wx000
+tK0Vy82sFW4yU00QY90CYJ3gW_XR_Lvo@ACD00qMUEBZXnHsm00W0uyB3som00000GW002_F
+1007WzaxH9tparU29wLnK@L4Tb19_Z18l0Wzt3yQT3MPtW4ZD8l532VCX@JJedyAwLtZuTh0
+00404100000W2020VEF100WG000100WG040200I00020W306uHV3020OW0X0000W8G0GmtED
+0W10GFw680100000000DT44000W008004000G8EU3G00000400800K1yFCRV2nxRGZFC0002
+0G00KDe60100040G0020008H00W008255000W0G000W88G120008G0000L0O00221Ga0W105
+0a0002X0001Y00G20000O40028000002800bW02W01G009000Gsj0WW00Qrt000G00G00G0W
+2S@l108012Mt000W0W040_@t01G0I02001001000G08XGW00080040820W2bt0000800020G
+0W0040W000W880000mWGf0000G02800020920110X0040OWG000300440C04000001DW80We
+00W80G00WH004GFx6GW8000ee0G0090004qP0KW00W4le12G4040080860000400010aWW00
+80080000W00fKU30002001W00X0008000m04Bud0004G8020zzR0000XQvC02G0I5@900040
+00I01W0WytD0G02001W0GW000W00520G0G0000041800Y6dC0400042004402@@R000nvRy3
+9yU600014WV200025010aki1@@R0000cBvD00W00884WJvJ0800nT@9Kul10200000Gsbj10
+220Uat0006000W84000q7e1XDR00000GsD02C20kt@XKqC08001000mR1Ie5T3g_cXkyD000
+84000G000PhtR0WW0002000082wyt0010428402NFXOiDeBV3000011G02G0G00W000G0220
+2000GKajM2G200000020010004l81004100FjdG@R900209JG3I_pWr@J0G01080200300f5
+a00000X820Z_R0C00100000018Aut08400ZzRGPvC0000100WmwX600000W0200O1YhrJ000
+12801I080000G000W0804000075040004Y0XXQG4yF0080QS_4smr04820GA008008000IvQ
+Z4wUt08000W084Qft00200NYRGdz94Wl1bnRmSs9K8l1002010Gm080Gm00004000G4027fd
+Git602U00000W0H2WdwV0G00OIvCq6b1F8Q00000280002000102ibV20W10a014S0f10280
+158400000G250W0002G0K00GWJ8s000C00000W200YK0061W20804801o000Ge05eY029O0e
+0K00G4820X8840H040a001900G82000SV0m0G404020KqqE3000410GW00G040W0G9Z60680
+108G0G0H80502G2W0440WG8001C8000A000080KG8000G2G81bWG04000GG082000YGH4G0y
+Zi1VscGTK6ivU200a0004GG2O05G5GW1GW411a0014Y0a6W8800vOP302C0840000WV700H4
+08L10080IMa11020e8200100EAe104200W0008G0G0000Y100a00X000C400402000W00050
+02H0GXg8201G01008aw9G380000a218jR30W01izl1GI90WW8IHA0AK2000f0WG90000GA00
+W8DA00a2KXa0A1GA0010G80085H08Y451KI1Xa20000000tLf004G0000WKA0W0P440050G0
+000WK0a2W100W4m80Gb2W1dbd0000100WK00X0wuFXuVDW0G12G820102W000000KW0002uC
+53IxE100W180W0008W00G82400oay604000H0W0001200W000408A0801Y010Y068820W011
+0100000mIBG0WeY20e82400094G00Eqs0W0We0400G48000Y2000000C4W5_D8V030WH000G
+0W080GYu9000W2000204800002200H01001Y28040000IG0H001b2OmP@60060KG00080G1Y
+8G0GH0604G0W0000140210004G0m402000H0G0001Y9G000W1m1018080008dn0800XGG2W0
+1YFWD0600000m1G22000880Y8W_cl10W00000m4zV2O002G0H0W020e_V30401_@l104040G
+010K01Ox_42g9110000420_NrWMwDOmJ3008A0000QFH30C0e002000G20L0000004W481U@
+t0WU8804004GW0S@@3l@z0020010G40000C04Gy8l1nYRGz_60081000G200040W00WWw000
+GWMlM20808001Ca8k100024200001et1040oVXU3G000_50g3t00Gj0W20G90z10WmOtB000
+20081000eN2040uZ000011qV120XTl0W00040C0000I0000W20wB00WG_BR9R0000M00100C
+4Y400800708My40000I0G000Q0GYu9qHd100mkX0WhA0ux6200010000_V10G000uc2CLf4U
+f00z820W000000zX800Q000001G4W0WhA0GTtV0000y@@s@D00WRcP0CJ70000u10cgdXK1g
+mg10eD500h6G7U0WR83W0CRF30eg2W00G1WZg2WF200Sg008Y0K1m00102030004000H000Y
+A00000CO_100W3uAHS3000cv00Cd1Ou73m001W10003000W000ZB00cR0tSx0O001dXR0Y10
+0Ww10XZR0C8c0P100HYd0pD00cV068Y0C2Ns0000H000H900280CCI1Y000K1WOoJ0046008
+C0H1G0e2002epWXoDmz@1000u1m300000000WTNKU2RqR00L500_820Cp30040qzl1_8202t
+t0NB00K1Wle000anl1000u1xC0Ir30000KLu@CO60FK60000gQrmiC8jF3Uxt0tjQ0000005
+00gg20uSX4y82tGc4EIL0_500CnU@J0200H7sO4pF3xCQmUuR008hE5kS40084P_9Rb@GmQI
+qxD3ZocGov90WyJG000mP_6K6l1R5PG_1UCcE90W00sLFXBwJeBNC6iQ30008a600gXJk5uP
+00a0mAyF0G000200mMK900Oz1380Gj@6yrk1haRGo1X00W00108myyLW008XC00GAy9001Wu
+UV3005W0000wOV3CO10qrj1000000IWY0000W04008204800dQb00W000140W0000FI0G100
+W000GjvIa6F3PWc000WKCG0WK00Gf48018IH0204GSN6K4V2JXR08800000000Y0kTs00420
+XKR0020G05000100000W0W8010G0CA0Y4W00G82600GG1W000004002088XGK0000008H011
+0040008p200080040W0G0040G08e903Mmt0W0010040QXr00G008001Rnt0W0108000kytWD
+tDusV3008004G000200104WO@J04080014020W040010200W4X0uWM600G0004Y1C2000W00
+Q0W80001W008000000a01000O0018000000GpWW10G0240080XloI8kV3000Gz7Y1dsPm6Z9
+00040C00GLY9O0000420Gjo6020Y040400005a0I0BeRGD06yjl19qR040K00010uW100e0Y
+02002W8110100GW1m00008020KTl18a2C0000000m0G400O000Wq90lpdmqF6iW@3F0SGr89
+00b7040CW00U8003G4EW0wRkYf7bO@M309c04ej1000KW80G00W0uz_4sKnWwzD8pl400G00
+001000wOCYIiaO2HmRG2@6SnF6000X000c0C00O@V6004G4nF3@_RG3560G000A0480H00Gm
+00fjR00G8YA_D0000nKx60G0002G00W000G00Z20004zU0Y000egC3cvFXm_D8vS30810W0W
+0uiJ9YytWbOIGW000W0008010ZguH@@6G008000800120W8200068010012W00W20OZ@9020
+W00800X40WSFDWq000AW00404000WWYDLbvpDu@V36atWUXD0I00GEn6CaA33uQmFw9W0002
+00000H4080400WmCdUF1008H@nR00G80110008080H0820G000GOQwO6qMi10180a000qbV2
+DtR004000a807idWCI0000W47_o00G403800W408980800C09a23_adXhzD0G0208G440WWG
+0G2g41g000A41Y0pC00W0Y0X845A098G2308020G000G040I0FW0e00q80X0ee010000i304
+00W00100C002K0W08GW0G000W08095a00q00C000a000Eot00G02vg@00c00GeWWO00P04WG
+G0e083I38280Kq83080W010G00e4100210003X0008WgfWKWW000cGnm0X0G40082Ie00g84
+0WCpZ1W0W000HI0G1WI0103000I02H0Y20003410402uCI3UiD10200W008000GCpk10X000
+010q4X1OY1Wgfs0520000W002AG0W040B14W100WxdJOor4IQD1G104824Y8bK50I60G0I14
+00Y400YK0024090IHA395YC50e00Wg@D00Y0Gpu6G00000WF5f0000G0000A000W100e4004
+Ao5vCq_M23aomG0Fi6k12GA000XGiVU2pypmJs9G401W0002G084221201G0GG40G0G00W66
+2Y01404W4G410YQz1X00I00000MgWSEV2o040IizXC8DeuI3U2MYp@P000m4G081008GG000
+0G010W08AKc700003K00100G00384002G0G2802e001a2KO00e8W1240860W06W200KOd100
+00120WG000014G80004e940G1K0g1mWxzDu4T3AMIY5WJ000031GGWogD8Tt4020W01G0020
+8WK000WG000I000008cRC320000H00000K00G000IX4GcGH4e4G1140WG50I210G@r60600u
+z330009800000C00W000002Jt@RGW06i9I2dYambnF000W4110002X0G848Y0W4oEF110026
+0W404080088Qng4EOF10G600000C2000WH020080wB080GwBel4080Wl00100I00004aULW0
+00@58NrsWaEC00G2GEz60Sge70000071WqQD00a10W000Z020N9dmzx6CdS2j4@mKtC00G20
+200WMA00O60W8aWRosd100uZG0002es00Sr0vUR000m00gQ6WPoBCp3100H0qL30eL100000
+W_m00ue3000y2000EX900E000KQ700jQ004Oj1lO8n_@60WP6000Cmm@6000CeHE38Y80KLi
+100WgSO000040G10kX70ynU7DG0Y0GqrC00H5004H0CCt080m0S3004500mK00WX100pEmCE
+LGK0u0T000O000S300G800001G4HA020oYB100nU000J9004X0g4X08002W0W4uC0000008Y
+00000G0W000008A000X00GsI60m008Rk4w3t00G5Wf0OGYu64lU5Qi10jf00Od8000g00004
+KW0OcA00KW6WhAWR0W0V4nL@6000A00L150000tif0prRWRc1G80000iaP0uZ80mL3m900mh
+@6a0d17xb0020000mDa1mL3_d100F000H4100LbuW1E2000008eg80mLK1OywL4LzXrc9Kru
+FCqf1000000SgDz535mPJT2Il2u6bjp0020WHmD00006L00WBtDefPIUV@40100h9RGXz6W0
+0000G0mnlC4S@39lRmHv6aGk1020000Y0Shc100mP3a6ZYzD04G0Gtt600GLuPG6W0Y24Ti1
+1yR00n0WEnJW0GGGUw6002200080204WvtP0104Gn@68W00OLC3kgd14002000a000200220
+0W00W8000000W8R1Axt0010020020000W0800G0WGFS600020140000W40280Xid0080GG00
+00WG0A@FXUFJ8X_7ImtW7xJOfh7EItWVJCuPHC400000002830G7_9CHd101006lF1081W00
+0001o0z0F30G800G0H0b018yV3000K000W0000H9@60W002A0000W00e000a0004G00W000G
+0G0Gj@9ifl10G01curWFwP00800G0004200G10480602090010000WMfmcJeDy4Y1tWQmD8l
+F3000000W78vV32FtWu_J8CU30O00i_F300G43_tW0vD0Y0200004W02YX_V280WWulD000X
+0A000m1C04000kVFXRBP0202000GWgyC8m_4000020WC0W02mes6y@l40802VNtW1pCelW70
+G00E@V220446xs004800G004800G008eCz44000H00040000008Mx000f_B1Y00Wa@P0G10m
+V56a@l10221GG048GC08IF9kut000010001100228H4uRF30WW1SAj15ZAnIg602020040Iq
+sC00YW0310mAN9S983rUd000010WG0Jdd00040P600Gp044H22aMk1NsQGvULi0l100W4cdF
+X@tD8ol70440q8G2vnRGK99S1l15jR0GL3W94muDW400WGyTl10001Yho00W0GHd_m0_900W
+88@T30010H0282H0Goz_60XG81800Gox64sl100H40408010G404008G00C0G0G0020C0000
+W04Y1002W188042W10C000m980800008G00egwJ00001X00WbmC0200044200J0200020GW8
+00W80G1Y0MH01KG210100Ime2201C810K838q0400Im10W80G00H4G0W4G0OW0W800evv400
+W2yXl1DlP08002W00G0001000G00040GG000Y0O50H0400000C1au93X6QG5y6002820a001
+41WSzD09010I020S4mW0X80829X000OaI08GI1Libj1PXP014G004102H00000W04048GC68
+500qSl1G4141W02000Y00W850082010H400GW045IAf05YA800000mzY0bwoGOu6yMx34800
+00W0GA00els40W0G104WCRtA008000001M00200005G480100060G14000008LA06CjV20G4
+n0004140AW060GK06GAG020W10000404W0451G02G50IG00000dr01mBTP8qN60080000820
+00200GXouO08200G00WGAmW19W801000012040I000A11000q02010JGG220nz_0G8400308
+00G8eW0GG00040GG63820020GW04WG00A0H440I5G0711000UEHvRGxU60008eLN9MyF1180
+00802cG8XHXm00WY00Y2YWVC048000880G20g4W00444000000A00muc9028800045A00100
+00000L0G00008800H000e06gWG4a0oW0K0W80000uk3GTdIa3k100080f00KFN2I10810m00
+40W00000YW8WSKg0000008AWqkD8aQ3GK00100S0H1000GmX0RP000Gj1804Ww0020001080
+82Y200WW07eE0008WS0W8c6m0q71000mN0000g3Y0OdU32mrW_uC0010000WX80P002GT676
+0000Y000GEu6K4G2HU@010SL10mZGuZ84mD50mRA0WhM00tK00_82Pnn0000000GaKL50aP6
+@300gILHNbgY_F04zV08w3Tm@7wW@1W00yFe1000k9000GDYXpW0gb0Wh6WxsK0l700kYA01
+0000070qg10008w3G1mC6GW3S00lB00tSSuAaWe28HH506YA0L0I0g0KYK1e49AG9IK1Gae2
+e2000Z9WJ0GBOk3sGK3WXe6G7mDWEWJJT0d6Y2A0Cx008o0qni383e6mEG006000p00004D0
+0G41000002Y88BR60G00GW0WW018200GaSmD000Oe000G1O6X2030o1FXRjb00p8e@0GG7Um
+C_3WgKr1Fu11Vm32UeP4CJP0uV0O600WggMpl100W78uV0G0pp0yjq2jqQ6cPc0CpC0C3006
+qk1sK000G0te00lJL008000UW100X_RGVx64iN50eg200014yk1UVJ1KL10uz00CCS3Y0Jbi
+gp10G3JsSY2IL1OryDYqKYUua30006h10WVrz8KySISZart910WmOvS2jI76ZzRGS@9aei7n
+Un0000aSmP04_1GPxFiB@3Z4dmBS9y5V8zqdm7UXa5l1dn@GA0IWJ02ubQ9_SzXtvJ8FS3Ao
+t028W019soegCaZ@3Rzx100BI0004lypm2xFCEN2vUc00080040000W0cukYx@P8tx7kwtZ4
+tI0080000080006L@d0uc3WHjmOPYDYvt38200n@cGX@2100W0u00mh4Oi@k1200000202W8
+0y4w7EiqZ@KD8wpY0GKEDs86B_RW0W0844010n00IAdXAACe_8C68DAmx50VMY10G014400G
+010o6FXzuD0508Giz6KIv6n9dGPg2100WYT00mUfRW80000e000400G001000Y000O000800
+00IUV64iE6FLRmA58108M8tjAG0020000010g020284001G000K0000050008000240CG001
+ml1G41W55M20000Gw4Wuqg000X0282080204eW0H404Y9GW09000G000a000400GW10GS5k1
+5kunwh5100Wao00mOCR000W4020rJjFa8E3D4jHh68100Fu0sDYJt0W00G0XG0oKd1G200DK
+RGQ6UKCCIW2S0QgT30800G008I@tWF5JOcMF00A0ab4FtrM1G10WATn00049000XQ9D000WG
+hr6Sjl194l1YW0000W0XPNnTps00W1AcwA400053N29mP0608WiuO8HSC00092GH10000Wc1
+0WEfH2OU1mMvI0WA00000e7He200mx2GW3S007fA0tC@w40mHLbSc1bMZ1120000WCHAiKos
+CqyF320014044A0H081E60WW1CAe19YdGzsZ108RFuxDoYp07L5W9mn000eA580000WR83WR
+UC6L9qB1WU6W5oZQUV3E729000WPuKnAuX30010001m_8B1Q218hynIj7cniP00003Q10WHy
+U8lgqwu@400X35edGYDH5f0ISUF0U7F109009WXK6@B100GNm00mj@V20GJAW28pCvsahguz
+o46yt00800TzRGA0K45G5PFuaZ10WgTqQorY00qE00G0000YmGw90420e303MxdXH8b850AY
+b6ZpP@10GomdjdC663f0Gn2kET_F300swBbD10G4X0000001GUdl10W40U_dXE0C850AY2GY
+ZTT20mMvorF00W0eUT3gD_XeZD850AY2GYDJ_l1PB100GR1G2eLU3M8t0W4029pdm1qy0m00
+O9Pa00mSaM4Lzgdm7951Q81OwQd0W4X0H484I0004H02H000a8402VK8w300d_R0040el6fw
+wxb40W0q0W1@Xd9000a9SCe4eegrWaVs31y060aW2G1W04G2A5812G0m0KW4060030W01I8f
+33I1WYe0guxyM0IW00000W840GScUe7u8100G27SIE00000m9vw0m01I0882a0100WW8H800
+04824X0W4OWf0GHK0I8mS800u02E1000W370000a31S00GuC50Aa31007HI00000S44We0C0
+8S2mn@6000m1000GA090IbX4H044HI0000GG440000a4HG04H2GIKA0K45094910Uzw@Mp_V
+rj@BraGG00000wcJmCaq@bOmU3kqF10W0000W0codXsyhOPV30040ECG53yd0000XrDV0mr0
+Gb1Xyzl140020W0000040W00m4@6GW04uqE6cm@alsX1000h_10WI1Q1080HkdvSVf4jqcma
+x64fG2lkd0G00000RHn7S20G0WF7IevS3G0220102OIO30004001GeGrJgeNYm_PuPS90ZG0
+KMF3v_d0080Wg@J8_V3wZs008000424EMFXYuP02002G004W0000000dDtWd3JW008000100
+80140008000yPW10G01000105000008G5wCaeT2G000W0020000ti000200W7zD00W0G@@6G
+6G0exO300020804W0010G004010008008200G04K08800XG800f0048G09818A0H10000240
+0W@Mz0010G2j6Kvj10010EzsWmDUG080Ga_C008f100WG4vF0000wuz40000200G040080W0
+2020000W21001Y0004004800021102O18040824nk10280YKm0WW00vep04G00100WVHO002
+0WV_DunV30W40C5I2ZJAHBv60e20eQz4000O0110000000Y020000G104AOtWcCIOdU30101
+e0080008020W00000088080010000GW20G9bK1000pE00Gbkj00040100e0400008G000W00
+02Dhl1000200G0yc9L0OkFxZT64020B0K0009WxFJ0C00Gi264qTK00ylow@aU8IW1a10000
+04G20VHO0600WxBCOwXh00000kx0uj@Mkrt0400400W0cstWv@DebV30G044I1Lm200QX_aE
+3D00CKC06WG0W1W00L000mWG0M000W0008G03100044068bgWcDuUQL8W20000400eG0H480
+2820K8W00H82G320G010X14O40402K0006ZFA0220ZzV2I00000C00e40000000Y8H0Aeb05
+Y4a5W0f0aWI8fWcmNAD36i700KsF900WWgXsWhoDW8110Y000C44001a5_Bt0000W22000G8
+04lVK00IZtfVc@@VuVHm0OA0iiTE@ed000aW6yxgQ73_@7600W10006z2e600eOOfVm00a1_
+@@90eMhfD0MBRjwKsQrgMjgLjMD000H00W800WMjMs0OjivgJPpLhQLhMrQr1KQE3vcpGixF
+yD63HKPG4wO0_f18mV6cSA18200vfR30G8WcyJW0W0m0z6000GeN03A28X6_J0K000050030
+0000G0IgtWppC8I032it0P100rrd0202040002004gT@1000WviQGEfC4oM2000800011040
+8o93wuk20400000WoRsckBC87M300010G02u3B9_tlbRTD0100040000W04hZR0W00WYvO02
+40GK0900O000GW01OW00004800G_@t00180D1Omw@60CZ1uGa70W0001100H00mauIybM57z
+R0210XgxCOW030001CFE6VgamgOC0G20400200W2WCTD000GGSv6008000002YG0WCpD0008
+W000GG00G2G00khoWvPJ000ZW00WH100KNEOmfM600G06W000002101020024K000GW00e@V
+300X0204100800004G4A0005400GW04hd104G018400KG00W8000002000W0000180020004
+Y02800W0e0WW84H8000AG04150008044000oD05W02Wt0e000KGH500080010102W0004006
+00a00LWAmWIW000m0020400X2Ie0004180105G1401000404002048GW0G00TbZ1RrQ04000
+e0008000008e00001W00GiU908000C008010402000048G08000G000mG080020020001010
+01G0G00002maw90Krn8fU30002200G0eH0000W08010zrR01029048404841G0m00000o0G4
+44G0080W0G040400H2010200441A030802O200W0m000010200000401W004000000LwX100
+0X6Hs0004002800080avE3VbR0W81800500G0WW4GW000803102G100W0O8000Gb9G0ijl12
+0014W0AG0002300000800W48NdR028140243000D4800000X0e000G010088W010WoMq0000
+80022AZEXmsJ000W108000004000OcpB1200000400001qtV2vJO0000X6cDOG@4kPm00000
+00C58010KlK20W00G4020000R1w400C080G08c_7cCpW8aCOgl4k9sWYtO00G01004W7WD8M
+w4IcoW89VeTC3wbaX7gPGu92my@C0081utG6sqsWwuDuLx4000H001WOVV3QQmWzxhW1e1GF
+@FimO50m0m000IW040upV3_09XhiJ0000KSc9m0m80082Gz@6aNX1pxN10C0C00040G008W0
+00008020200W0WpjD0009m@@F0400QU_4AwsW7wJ0004GGb902000G8000200010102000C2
+0qg8300aVF6XX1xDG0000040aOFbeeS30G00qDG2VtamhdF000G00C0C1GEO00C0008000K0
+W0W040WAGMr60G02004104G00004020060C1X80124300A000G0m0m020W100080G08Bw403
+P8qCg10W1W10Ye004900eY00040C0C000O0000804040W0WGqe9010OGm20aG80820G80000
+8430Nql100A0G00W00080080Gc190008G00WW010WO6I0000IZF9aUG200GO00G08W0G8_J3
+k2r002000604ohp04001l2O00GG0018101e000W008W08BW4A3rWsJP00O010Y001080fPO0
+00XW5uD0e44m@@9Cob10e4I0WZE00b00O8WmIN9K6V58007v00ArYf1RUbGxs600m9CPn78W
+ZEG0b08B06_@dXDmC000G0I0mne0a8dP90OG000W41100W020Wv3nuAa4G01045G5WDH0_@d
+1Y0400084G00GaAG5@@d004D8000G0X00Y2mZ@@9vvzG000GmS0100100000beECexnG2yCa
+z8RPboJK00C2000004m0W0000800@rZ10W0abqDu_gG6xD12000fYLHfl9qyh1P@QG_O6m00
+08VC360c1mk50P1m00GmWi0OuFpDY20ZKna00q100O000qgro64hJ5B1jMTjH1S2000S7Khr
+f2WXi1pwK189AW7000G4LM50008_Hc10400G0007JEXGps000M@n4yCqL5fER010000A0840
+006OEXK0C8_P900W00010CHN3gHc1G00a020010000wQ0000000X00G020VE@mAq6G0028tj
+7wUE10018PKdGeG6C403BHB1G2GWa2gOWVC000Gq3j14700_ARZ6Uz8emA00005Qc1002481
+244JA60W00800W0010eSN3G1002120Olv7Qsr000b8ZmP0002mIhJ8I160000W010OtW7gyE
+1G0085@Q00W0WkhDuDj4Ajs000044040400002000C00Hlt60500OYV60G00100e0400GTm6
+4Xj102W0RQC1Wy8408002rp00004XmO0W00000G002G00180Sdj10010058W0400uIR30I80
+000010002000808G000040081ikb1004P0040GG40aW000a0G0Y600JUR00060050n40G11O
+00HG002082W0201WA0oO0G4000W0G1500C2W00004B00440118000001400G000OG000G230
+0W8W80W00W0C000GG08WW20K8088eeI0GGm0AE0a4G18YWI6KKa10080f14203A0a008W0XI
+0InY08IW0150WY018002GW04W02869484004144e00G000W02G00880G0XW010AGT3018GG0
+4H00110126500800201G01W20H30G200WW00e280G20X0001B0W0OZP30100004020A0000o
+ckoD80Q3G822G0502W044W421020XKYGOW0B0X0D80gIX000W64030411W10402aQm1G020I
+1W0Z009W2810100AG0W24A150H802020W00000A4SHh1DhRW0080000G04001400DCf1heRm
+PO60040000HW00WW5HJ0G010000bqeD0G000Gm0G0W48000A0G02qnj1000404002G0GWG10
+W04000800FsP0Y18810G0JhR000e0C040HTP00080W00002W0IxAX3vJ0005GW564Qc10B00
+2DBXBvDuLU300001008020GGmpCyAW11DRWW08WStD0080000WWZ6D0G01mto6qaE30001YY
+tWDEC0222GrN6ash101000908Ca@3e0001001a6l1NQdmPo9qZV20A800200W00000Wa0814
+W1oIeUU30GWDLgF6XgPW000000880000FicX1@C0001m6z6aSU2LadGKP6CMF3VWmGE@C000
+C0Q08HbRCiXU25Xd0uX2WeoI0100000208040l7l100m0W108jMRm5@I4xU2PVRWG00WVktu
+uU60GG0CZP2xt@00004O100DVd0m20008200240_llYo@J00WG00Y1WkOy000m0W10LW2GGF
+pR0080eVKC00G0GSF600488qC3m0m006C00204W8000W2G0W0406MtWgbI00GdX000080000
+0060C0W0522bK040G00G0G0Ge208Q@t000C0200G0002Cgl1O0O0W2G007130Y00001AWzMC
+0000IcQ6G00GOUU30008W00201G004G600050G0G0008200020G0G0G01W2CI000004480W8
+0m400G8000G42022001200010308080_@t0mA408000gIp0248W0000W0e000G0AL0300000
+4088gN3gsp08000GG08We00000014004080elQDG0G0m4A6y@@38G073Dp08G00Xc52b0W08
+WW0ndz00004_1W07yp028mHE0WI0WC4I5WXSvh8L03YF3ZJ3P0040mCHFKnl402206QrWElb
+000hrBz600H0u9n4O0104Q635fMHIQLKfw3d87Iuzd04sXG0002000001081vx1010000O05
+DR0000G0Y008100EBxdq1yu4w4m82e8W000000806200000G200Ia53308102X4W0410H000
+2n8001GWWR999vGo7p3000000e9YNcajTP0088GeP3lADO538MY1hs8l1PnzGu@L008kAAR9
+oLNYBpDuUk7kDsZmdDOtPIYRFXKtDOjK3_Xc10L40v9wHAk6Knl118MHbP9Sw8Fvmx1500W3
+whOqR32qFXztnOlU9kBF100W05rjHkQ9G000OxD60000kVk1Dqd0005ZrwLP456Q1dXLxV08
+0K0G0100W08G004oXmZgrV0400Gfu94Og1005400000ya110200G0040W010200Aqt01080X
+@d0400WdoJezF30W424uK2DuQ0X2800300eWW00aGIyUk100040W80GX0GesR3E8q00W00Y1
+05M1t0W000p3OGK@6050G00200G44028W0400480A00000uu13000WhC400W10mm@9Ssk1bg
+RGZdF0W10002000G04G00880000e0804W00800urh60GG10W8G000440040608GQEpW8xDe9
+M3EiNYLnV0002mkk9CUZ1ZWR0009K4109808004034fG2BgPGanCyzU20480kpt0010GG000
+wXt00102W02G05W00140AZS30000W00Y02CG0108WpSI0W0800810C00WPvR0004WS4I0042
+020010082G8W0WG00GW0a000000O0WcxD0CD2G9OIKsl1HvRGwy90006000W000G0G8C1W08
+0Enm000800181G4010800W0Y80W80u5FWPRV300I0004eeWH32bs0GWG0G0000010000WXI0
+0mygg00848Z3300WK02G200001404200HGVQO0004Wjb8fVpD0809Koj1x_p00AcsS_Lfu@4
+G000inl10201Qdm0100G00G0EUDa@@P03000200020W18Z0000040010igD3000G00080102
+0080WUxD0Ce1m93gadT2@HRm@@68G008hbV0014Sjl1RlRGnX6K8T2000GX300S7HBzyR001
+00002G3gR00W00020800010400CIZ1N3J202G00K000800m0p0G19406040100081038600W
+A00WX0KG00W002O0400000OFojG5W0010900m2m29W01G0C80G008O0WGGH3G088001HGG0Y
+4A048WDtI8MOI0002G0000020WG0G4000g6101X0010814W000020L048A0htR0Go7W@DKv6
+k4028G14G24X002WG0GW00I4040W0e0000WG800qNpd000812000W100b00000004B94G35b
+aMaG0040uK0C000K2IA0WiPDm700G3qjaij12XW1ue30G9060288Hys9SkiA@OQ0008W9xJG
+G0048I0011G80900cxt000OGnnO00WRzL1Qvu@404G008080005muy9ykl1b@RG_rg41h11X
+pGarCSzl105D0sq_400G1040018WY_ul1200o0004100002001G0100044000002J0SpTB9_
+Rm4@60X008AQ640000900400m0000M2100bVV2GWGWCAD0008420WO00010042000000W800
+000K02110819kqobxC4YT2GW10QU@100D4fBJol@C43d10m01opcX2rDOfJ3ME@aGib0Y000
+H000jQTs0mwiZkc1W1E0f2a3i10060009R@WgH00000200Y00120yTf12010M5lYjwD000W0
+000mgfJ0008m6XF00004110040OWk9D8FR3YkQ31004PMdm0xFCdV204008WW2CoV280G08W
+00kYD3VUO00GWWVLJ0100Ga@6qll1WG08Qzd100ip@_R0G41WzUDOUKCA_t0002G0000800H
+U7f100W0G200Sbl1nSRmEtLqkM83N@G5k9y@l1WvS0Yit0H000nt@G0_Lqlh1lUd0080YTEO
+8b23002A21W80G200200024048G14wTy1400004054002G0GG00080020800A05aX1000EjJ
+00@9O0100088G0BxZn@_6iIa10010GX814TA33VdmAv6qCl1D@Rmxv6G0100000W201W8ND0
+400080100W00000e00200W10u_U6Eq@100nYr_d004W01000000e6LsWyYD0880W0000e000
+9NRmCw9aoj1ZxdW200WMmDOHS380G00004OKS30A00W4G000000002421004400188HGKG0W
+0080G004Y808000O08eY00GWenT30W01i@D340000cG20W1200284002040G0GG010i00GG8
+00000000WmJdD04000402WSoDOvV30W080002Od23000W0G002G110G00400A0052000210G
+00G010mCx60202044G00000020o000a10GW20H36W0W4028G0082202400CA0GC004010001
+010002GW02e@1j100G00040Y00G0O011G0000O010GG2W0Ads00042W8000GG40GG08QT304
+100000G0410044W_wD000040W0GK80000000A0WKOX47sdW110WDvP000000W0uY5CupTC00
+2000m85208m749G00GG00WnZ@64Lj10002UiZXX_V8vV30100O0008lF3ErF100023VRGcj9
+yQi17gRGi@6G08088030800KDl4zxQ00000Wr50nhoW001Ww9I000H000G00001P5R0100W0
+kI8i@40020ssV2vSdmY99KMX10G00gY8Xu@DeqU9ASt000i0xwR000W0W0W05_R00088p300
+fz@0004WzyJ0000nb_Cazl10008Rdt00048J2amJ@94Lk1000306100e008pW4_fdXRXPW1W
+10WW802200LabG3jF00uxgIS3W006WC00000mX040000W12m0pMjs000400m020W10SkV29R
+RmQ76ioh700GY0080008100WWmA29Sr86lhd0000e8TV0GRHGXY9000eeOb46iU3000XrkRm
+w@68000AWT300G080008hT30000WXW1Ge0I08001W2000b010220qaa1FfR0208WwlD00C0C
+1Y9Y1kD000I0101WgoDuE536_t07000FvQ06OM0Ae800b00e88002940B00WW000C0G09zam
+cy60060c0m4800608000ljm001000202hXdW00000800220aYNt00W0W7kRW0W204040hSam
+Fy600G0Ge00WW100010204000010004WAq_4000fI1000008mnd6041K0010Y00O40W0W0H0
+19000O0P4W0Z8W06000402JwP00G00804120004C000A060C800090WhzCepT3IfM2A100PJ
+pGd_900208_S30G9a4Tj1H1mG5_90S5892U3oFp0bG20KGB9f490011GElh4G200KDl1f2mW
+0SqXK1m8wwAQsPZyoC0009I8sFaKG2QF80oFB1000G220e0G04880208d00045WypIOOw7I5
+m0400428042Y@108000800018004Y0G001GCrUyil1041W6SV300PkxZronkXyvl1GWH2500
+1GG00Wa000W10m47Vew_4001GY6600000pSk6CTF6WiM06LM51002dVuHqrR4Oj4HNN100WZ
+i7aW800mI39aYj4hipGT@94TTEfKR3008yypE9wwJqQr820000Y00mKz6KXk17fN141000W8
+4G000UUr0G000G420c3k2GRR0BEOGePC0W00ueV300018W00GW000020082020010kdt000W
+Y0000EJpWMwP000W080W80000W10W0000W40020400W00Y_zJukU6cgt001W00WW0G40000W
+0WW0000800021a00080840000W4W008000Ct200HkdGfcCS@Z100210e0000804002080G0G
+080022010H0W808082110100G180BCRJ5zO00004G020002G010000A880W000WOBlQCsos0
+0H0X004004400G00QZG304W0y_l10089IA8X@@J0008Y0100Y0A0W0000G4402G200G02G04
+WnwbW810004182010G0W28G42080WW883mMOL0YC8eHL3WW000004uxD3AKr000G00001W00
+84jg14101WW000880000410YG410867wpmAm60008085004690001420000G820000GC00mL
+o60K00040418000000800W0W028K6k1000W40e000020004X000G000Z9zPmv46000Wqo000
+00001W000004WG00jQl1fgOmz59qFk1004000280G02448e00H801W00000G002G5bc1800G
+028502020W00000500200800YW4WWW000WW4A4Y44OW8034W041000GGG15W44A0142108W0
+06I001YI412X0021105G40H84400000W018W00G800n00008000u86Gt0GG00VcdGXv60001
+00800000awaCOjQ601G3200W00040402000W00GO4001000G42G008I0480WGGG40W0O0000
+Cg100Y000500XHC01K010A101A000002O0288HC02091W2000O014213X040G01K00584W41
+e0000038I0W080010A820004000iy10G0000284800008W0QPY1W0048000k2t00WW00K0WM
+TF1IKC208000W04060G0084We8008800WA6O00G82950002020W000400pQQW0G1XCrC0500
+0G003GW000400008W00408mE300209mG0OLH3480Gi0l1tsP04000000C6100MCFXcsD0000
+4602W1pg008W080800Y22VWRGBW9y9l100W10100y@K2G001W018qMT2t2_mMxI00200G11m
+wxCy@l1002w61XahuD0020404000W01W00086000C008th42ddXwvJuLK3MKUZiwC0000W81
+0mDxVOKS36gt0XIC0BvZHE_RCeO2lln0002X@@PW1W10G00000W00220YtFX0@JOY@40W1W1
+0H0u4B32wtWm@D8F032Qs0tQ000m000000m0p0000G0Z0G00000C223O6000020W120208me
+p@Pe5D3gLBX98PubV34000aD6321W0W000TsV257PmE_6aBR29vR0O00WE_V0A000000000B
+W1shIG_C00G0uap40X00CYV204W0E3p00m0o00040G4C1WO8100Y810HWv_J0C01mRR9800O
+0m04W050200Ge000G1A101200QOV300W0L7l1WvD0000Cavi14GW0100080P0000I06O6004
+100WX18I00qRk11xR040W103G006001420100W0H101200G2000G040I3p0000HPgP000W0n
+0g002Y0000008W204000W500000e0W000G00G20GeB@480KW00K0G00G000W08080vZP0e0G
+00HG0PpQ0U60WOBJG0Y8WH100104061400002G4100004114OK0WG0fnd0008020L088820G
+W800W00101m7@6020408040042WR2P00GIW2Tq14e402314ozFX@vC8mG6000YW03Sa30e40
+03Xupa000gTePFW0DKYXAH262G12300f0aGeP9q@V28007v00A1W2G020000A3WGuOudK600
+G000WO0100HePCCkh4ndbGK0L0kN22000WH00WucJ0G4i2222080mAPEp0061WHxD00Y0Gi_
+6020028400028WkRVezU3G000N_l102O07j730102xzRmd@6qsE60008PFW04OlA@qJ2304I
+40083lQ0000YVaDuFwA04a00400OT732vpWW_h000QHB_dqdl1lghIyoF00eOetSFO020450
+6WHF0oFhYGpgepU62DhtfzjfD0Ro6WjO306000iX1000000W000p2d1000W0008kbt002807
+ttom@600800W80m@gFakj1Rod00002G004040010WG00004002Hu@6Syc1fvc00WNA000802
+80000W000048W008W0GG1400040010000002402GX19yVT20008JAzX93a0G00OXRI4Rw3FX
+uH0@90Sk088@46tbXsjDeF0FU7dXgzJeyz4kZg20080dbp000200180W00014000G0WOpS30
+000bSE3000er0000G8W000020100020W028G08CG0000DfV3018024G00800u0tC4ih1PlYn
+M06000H2A01Gry6W0020001002200580000W00802000200W0a0000100FcRm3tF0400020G
+W08W0000000CipkF100a07jRGF@60000K00028G0141004000WG00G04G0008W0200040080
+01_JtWy_D0100X0GW00W000412G8X4X40040WW028WG2m018a02G804G818004A0010WwqDe
+6S380100001001m000801001Nsamzb9Ssl1WyE2sZt00HW0008WADF1488W01G0_7s00289@
+rQ0804WCrCut230000I00XOL332eF10W422400000021bGeBA30W00KOV53xP000000m000G
+01G0200W00eSU3G0G01W00008Gmzz6u740u@V3WG00W00W80@44000224G0m0W04008Wm020
+8W000189400118e000010G2040W000GOKRd1LqRmiy600W01Y120W00O00K00AW1402180K0
+G0OXW022915C0000W40G86Bc10200040W8004O9uAAKp0000000U810G0050000020002GG0
+00@vR00204W008PwR0X000G000HZpGVoC04002G000101WMhD0480m7M9CEf1tj@mlHOKS@6
+0C00g@d1011000600W00080W04o0GpU60W80e9@MIztWguJOvV300a000G000W0OBHm000YI
+s00mwu6aji1dKaGEz6W000vSV3UnKb57D020O0mW002008Z_P04C0C00a0zGR0W43WCOR10G
+6v@@6G00C0O08GQ_941U200040060S_j1nC1302000020080GAztWdQXfx@40gH00009elT3
+w6t004000100808GSFZ1@ITIfuF00001J0B40W0800WG004WWG0214W00K21444111800RUP
+mMmd00003G00m10308000B0BW0220e4W0020W400C0O01Hm004461180IG8P00w7M5000GG0
+0GW000010GGG0W50007000C00X098G10000G0m00GY101400TPf20W_B80002W80W08080G0
+0W0118023000C0084G200G80000m002W00050e5S1JWr9mH7CWIW404GeWegJ0900mEnj0iH
+1emF3Yos0XG00Sq10e401014285W4sUmc0hJ0G4GW00A01O009kn0P00WPeF1000EB18WyiV
+0G4GGAsF0A00eQQL00WWK6W101W5000Z010112mC00W800070jDQ044W00000W300wh_400D
+700AWG00024G4W898004G0e0u0044Y0W000Gm0o1041220SH14q0030xMx400GKA0GL80440
+801uyU380000G00X41K00800042Y001009105vIBWySa00000K51Y0G44G001002840000O8
+a0G2A0081081XG0000I00H0X00M27CDsR00CGWehD02C0000000e0000000W60K0kA000OZO
+F10WW400000W1IaAmFHNB1i1006000vib30W4WK1S200W00G008002p_R00G0WxVVe3_4004
+GatV2NbPmegL00000Oh3mCpCCVg1VqB1W40WX@D84R3kScX0dC8uU30006KHj1W0WA0810W0
+040040010GaxLP000W1004WznJGG0HGDq9SQw301003xtW2QJ8IV30800sSl18000_btW4jV
+u1L3K00020100W022000I00019fP0G00muZCuqM9_XbXNlC0G00It@6Sp635gp0000Y6rD00
+mZ_Tt9agi1Nf9nrsXaQF300014W01G0W4mG060020088G0001HsUuXh@DG00040000081000
+000Y0WanQ5p@R08L0WPoV004GG4y6CYh4XOR000G00C010404cGp0030000G0050000800W0
+0qiA60000y7T30a00aGE32020YDFXHsD000W0000Yx_D0012GSRF000O4000iZX2WbMC0K00
+e0000H00820040W002002W00Z20W100W0201040H00CNE3W000L0W0y@l100aW0000Z08800
+00X00G00X0000K4W468002L60e800Ga2002200080120018000G00840WmyD8aT6EAF1018W
+0aG1X0W0040H00408G14000ZpFDR0G540W08W80L41A008eO000000I00G0W0800KO0A0W80
+G000e220GW00WAWG0101000GW00m0008KG01A88W0900002021G50000C201300000c08GW0
+18aW105080YG10G000004G000004400G000400atqPeO_4000HjRd1G885000G0820G0000Y
+000G9g0X5Q0W00002400Y4W0402O808000W80828C10G008K00m48001080000G00Y0a0808
+00000WG2W000G118W080488000G8902O000W0ZGmy60010ESU34400G000u403cBpWBkIuVQ
+3kltWmyJ00004G00ahvJ08WY1000Mh3C0000W1A080O80H01884140101WTWR00W00G08CW0
+24000G004a0W080W00YZnIG0A00G000040800YW00001018G000W000G80204020cInWVYh0
+0m0KX@6iPT2d8dG6@608000080GcT6000000mp@C@Cixh1dSdW0000800000G0AML2O000m0
+00Mmm0GG00x9Pmp_FG002c0G8020200081000010G000088NV928q00400Jzp00W1WLlJGu9
+1Gn_90020wJU3Ak6ZKUD0020i000WxdD0840qA@CS0E3C0C02MsWdxJ8ExA0W1W10G04020G
+0@60101OAo7000W2G00eHV3O0O000800o0001W0W8mJOaR90W1W5cO2DZ7o3CCCjo30W04cD
+FXupC0G02m2U6af_300Uv2hF1000aD0OGluC0080W000mt99K@l12044Q@_1000ahjRGQ390
+06G60u0A00IWfLCW0W0IUD94Hk1nhR000W10B0I2I0O002020002020I7z600G1eYQ300000
+uW2000W060000m0o882W80CG43X1DAQ00001W0W0nkRGHw6000OGm04CO80B0WGC000W1Y0W
+SWb1208080m0iqH2HNR002G0O0002600022102100e0000G080G0G0900wftWawD00G08020
+0042m00G0gAm000G00002ILt0000So200g@F1WW802G004C80020G0W000e400000W000G10
+204Xj1pvRm_Z6iTl1G0G0oz9XOnJ8RQ9G6284IM2ndX174G90002XOpGu@600m4_xm72isWi
+0O8mw4Y2u1EGWI0W04I5GYehV0001G_OFiEl4ndP0H80WaoOO@@40_J0adz31MRGM0IadT5f
+28Hsqd4YRBI60000206z23plwngYXaDjAHjRmor6KK@600ug0000100WG003Glw60001u5w7
+_@tW5bCuvQOYkc48800vLBnh@C0_f1uxx7InsW0hVuAT6citWGiJ0700GCLC4TTK000u1OjM
+ddzFiERGIsc1808000H0W00OSsJ2VUP0400WyH9vfz7W00000G59uV30001qdR2TkB100I00
+400Pmc00G0W3@DepT9000GW00800028Y0G00G4C8002got0G084042109W02G0G4404nOy9C
+8a1twQmZo94LS27HR0e@50028000G018000G0XW8098000042000G0068EXDdJ0002004020
+2WW0W0008W0000420G00W04aodJOq63sXsW8ND8R@40880244W1W0280W040044RCZ1001G0
+20000GWEPE1000uE60011000201010G10021GW80dTPmpkLqhl1xiPmsk6qGa19rc0000225
+402G408G42100YW418W008WiaDuLA3UNAXi@PuIt4MPG2400000GHhjt00010bSR0G00WbwD
+8I1601000020000GO3760112utN3A5sW8QP0W0000400140K4400Qst00400G40KG10004W2
+4002100215100zvQ001000G03A00000G0004gG00000G0A04A020G0808e00001AL50K0000
+97801100130200GG0W0000010W2G200G0G1005G00008Gfl6yMV2dFR0G0008W20bMRmx_60
+00G1I0108801088801GGW30G0G0440482G102GG840800WY88004W010AmRb6KxF3jcO0010
+00W81WW00W028G0W14G00851000W80000Gu3GW01GB4e000GH1O41iW06O8040W80W008a20
+HA04eG89m10058WA0GHG000G2HX01888CW05H8i8000800080120148G060G4093GW01H0aG
+W80GWG0WWXW0WOG0Gm0000X10044K020ZG0X0K80G181080022300G0CWiXJG1544000400G
+G2C000K0X070010140G926W0480A8W94I000uM2mWI0G424000C809W1IGW8A0050080O002
+874IG0G8C2om88G41GC02C0000WGK20W2420000Gm2210400800002W0A0W00002GW0CH800
+0HH060200G00G8mS7k1G000020003000W0W000A0001WnCRGLo6iLC3ndb00cW0201000040
+0300W1G000008E600W042KH8000O0G4W00020GG0812000W1000W400208ox480000200110
+00O0H2H00W001Gg@o0080041W000A804GY8FD6cOEXTrh04000G00X@@D0120GLx6i6k1D0O
+mWu90000LS80GOw90G000W0WGM09iek10W08s6EXOrD00u800aW00011008W000100m0ekT3
+01G0KJU2bZRW000czwJeiv4cntW4pP0C1Wmst60000emI36@sW8zD00XPLKP9y1l1Hndmtn6
+CpS5vrd0008XykCOw89oKsWqzJ8Qg42DJ2W100tVbGq@9C2D3Wd40IIB11W00PHd0404Wi0U
+8qC6000W000GP_HCAR81024200020O00000408200800W9kJOv_4MXt000600W0000G08181
+8Rn7000mHS00Oq@40GW0W00001800O0GWZ_J8YR6QctWxmD8SU3Yi73100306W04A001042G
+00010202000W4000W0G0aFV2trR060c00Y2125040400022204210O0000W04000WlYs000A
+@t@R040W10B04200G0G0GX00W11C0C100a59D00G1Gez6Kyl1O0P140C04Mc1W0460C000G0
+00000Lx_6W00GO6p4G0K0W0C000W20001040a0hpR080W0m0200W404040Sdl1G0WG080000
+0m8A03ojt00020vQd0eLDWjDJ00e031m0WjvJ00G8GM064lF32000000m011W218Wp@w6W80
+02100W000020282000oJCXN@D012u870G90GW04W000W90qZi4vZn0b0808W01TBdGn_6000
+WJc00GePXiig4Wi40o7mWK1aOmV3_ssWawD0240m9b6Ckw37pd000Gayns000oTasF020020
+400828Wcvz0GG00W8WWe0UeeV380008020OfUIAjt00048D0OGizO0wU3e@_4AXtW5ynOU_J
+QrmWEmF11W84000002WGXgRmdOOGN00000C0442G00004W000008201OCJDC2DBdeoU8GO9Y
+2O3000qf2GoxiIaa661DBHePJc3jA7yjKw0q5T0RJRSIX@U00ePecWh00402G00ipU34040S
+cJ5rJdGW@U0QB1OPrDwJW70180tJd0W00Wusn8raG000m6Dp3JFuKTs6yfh4zVpGzAX00G7Q
+RRIIxNburD000W020018000A000gnsWxPCeVo40001004AeQV3K0000012OMz4coNYNhCO1S
+C00Y0yrk1lhQ04G0W2tn8s@400450042W0G00101084004000W002000G000e00OCWYtD080
+W001G010020WG0Wu000050e_T3UNdXK@J0000YS1000008G100000W011GuJ034000010012
+80Y00058W00pmQ042011e00B54Y0G0WdtD0W1000O0008G04000G011W0000A34GJy9010Om
+0100K0W00C000001C000iNl1BbB100qbwtJeSz7400000074052m@@60108038Cmvi6qdg74
+0118G0e0W0G004G00G000800@uRW10GWfUJ0101W0000200000a1o4DXtrPOhO60ur000000
+022mhx6WW008OQ30W000G240000m3x644d1pKQGJhEzIp@jyy@AH@doq@dKzV9N@FIs@XiTO
+zxC4Jj10m00cK_1W100bmRGqJUa8l10008T100iUK5fnAntxgW0W20000Gcd60480upV3080
+8000202X0W800WqwDW0200001gYKD0204K0MC4tE300G1YWD10000002WsjcXReJexBFgk7Z
+BxD8R_40G000022OV_4IbCXI_DOUV6QutWh_J0G80mk0OqBU2VaXn@_O0W0WeXP3W000e080
+uSV32mt000W41Sc0000800WW1cQ0020WwUDOS090000fJ80erP3_zt0G004R@pGk_6Kpz61e
+B1820000GW00100001CHb1VhpmZh6080000a000000040WpyR0GW022W8e01080040000010
+W02O0020040004000ul20002E002O400G00eDrR0201WF@D8DS62AFXeoJ0G044000900000
+28000G4yiS20200G2420G1W0e0W08040W238004GG0G002400L8W00WW12000004094B0W58
+8028W2100100410W00400A0G2400080I2X000008128kat0W4e0RyR0Y40WK_DW02801G470
+8080K100801yok1jod001488080Ryj1008G000YY10G408m010828085W140G012W00G000e
+20Y008C000000G004c00C00200GAG00000030G8I04WO80082000004L0040062W200vnR0o
+10004C001O610W0Svk1200W04W0G001ONU30480q7N2000W04W20800Q9w4W0004ay3lTOGz
+Q6qrC3BaP000000WG002000aA0001010CG0000020W00100003010W200G0W020010080010
+0290000000Gh4400eiqD0000184010W00O802G20100WAenT6oBFXtgJ0800IIx6040000WG
+G0oF000G00m002W40800400284040y0l1W0000148Kyl1Jfa0G200080G40080W1W98008VV
+300I0qEl1WUO4Q@F1000Q00100080000G000C00WWW5lDuS53EIL50G00@iRGo_908088PGC
+00014Cl10W00Q2sWivJeaS3000nGR0GeMv7YpdXvvIeeWMYks0WH00W0016@@XBvJuYy4O0P
+0yzg1@pb00200C4W0pxd000A74000C0000006WC20001G020WY01IOaR3gBXXSSuf649YFt0
+00G0000G_Ot000G000023HFX9lD0uW0m296a@l19aR0080bR@J0500W000W7JCOBOIo9F1C0
+C0WA000C0002W00e09m21600401000CWG0WsPC000W00OWO0C0m00K0Wm810W08G0S0000G0
+0KG0a0000001G01000004YH0WZtD0343W1GG0X202022008B4W84000000500G00G808W16x
+LbO2D0200W0480WIG008WGIDt0000WVpOmsy600100080A140004W00O01e0000G00We0G0W
+4I033000WWGeW0QTtj1006u9WW00104W20004400I1W040W1100g0242aC2e52000CeY28GY
+0UrKblwJ8HQ3K290mH748bwAG20000W100b0GK06005S0WAH21IG04300f0aGhy602z99B06
+G090G1d0aIaK6440vN_D000K2O10WrOL1010m9s90000KG000W4XWifb0004K3@6SRl10C80
+09WXWWW000W4mBf9888000100000M774000WHUmt000We220e0W04880208b000450000000
+m02QQchS9PTV3kttWGuJ0200GQ_F00WDBtT9ksje5LKH000Gzz6yuj1f_d00GZWk@D0qg0Hg
+r85TD60WpNYk_XuLJOBz42nU3000Sg400MydXyiJ0MC0md_9Ktg7HNhIsqC4Tj400H00W800
+WMjMs0OTqrC00W2FB0L2IvaB_De5N3Yie80Z30VJS500002001hiXnYz6000XepV300G00G0
+08uU3o9@1000Cu580M@tWRXX1W00I5xsaGl1LqRmLwCyFF60029MghetyPuZP34W000044OR
+@Gcrt0W00W1vdm5kCy@l10tI0leEaBmX19400000XmoCet93G400000218002042ml_b0008
+01GGWU@P8uU6000GvB000100mT@C020002000040080000G04W002KQS235pmMq601000000
+1400000025cR0K50800AK058000W0010G0GW0WG000008200400G01K6S2DYR000000WI0G1
+02401001W01200mv06040K000200084020000UttCE18000rCR0000100080030W002W0K21
+22W01K040e026G16f02AG5H4W08g04GG000404000G008GX10W0AY010G0A0m0001XWWm206
+012W210G0W00G0We00290000010Gm010W0GWCsJedu40e00YW160300080CW@@DuPf42Fs0W
+F40z6R020IWv@D0042moW6igi1XXP02G000GW06W1200348G00005202080060000140W01W
+Y020320040GH080040200000048G8RV68400zoi180882KFX3cD0008Geu6Cki100004W040
+000W200K7w60000YC00mYMIW10000082440010W4uWW0G0280G4A00100G2G10480G01Y001
+0yVj1xCO0000aS7DekR3W0G00000020W2000I0X0802000020A000_@V30040b2ZA000000q
+qz@lM00WWINt00040VNOm@qs8kq1O7Ug0020m0m0OmX4k4KYQ@L10009M10W2xTw@z40020q
+yY4Pn03000000LmBAG5W0800m0o080G00WY800020G1W0W000050lgR0001XP@R1aA0Ga2N1
+0080CHG0K000X20000020410001000104080q85WX@00GZwHjbV200022Dp01W02XczmTxg0
+00V9wzk00GG00W08qiA2cN50K60Hb5Lq1HP3008gieEut900qkf_tLKPLy@FCW020_@tfGpE
+9VCL000G1S00u@@@@@@S000m_400oDUZah9vrK3_@davjb0400oJQX000PzKjM_d1fGNQ1OW
+2Gt95rleDNUNnltF000WE7J36UKYPADR4FI00SX4t9Itj@08000000G010WkZ7ZslD04G010
+100G00400200140aYg10W0000G0Sva104000Aj0qEj1040001000020eWS3010G022100001
+0a0WJwJuGT3EaEXCx99GeGAe_1W080tqR0800crrD0000AE00010007kdmSzCi8l11vdGV_6
+a6V2HnxHzfF4FU5010000G0140000010W0080028H5A1G00000NIzrR0W00WPxJuIL30288K
+9G2BaDpVD@ttp@x5zVUJ@VNr@rTz@SPt200WNs00mcIHzusd00040800200HObV300W02000
+0W00uknC00000404mQng0_x0OXCIgctW7xJ0200001000081L6pm8_60G020G00mWJ600W0u
+VN30200100W8gV302WWqnV2hHP000KYCfCuCU3W0804Gw3q4000000WG0LeGU30010G04WOI
+U308406cV2XxR0010e6TDOWU30H000802000X0W10WrvJOji7wmEXpfh8OAI00ue_1F6000G
+ws6ZyuD0000nk@6q9x3G12G008Kqib1008KkJm0G0200120000000012W000W0WWl@D00001
+0004820WjxR000040G0WNN@0Gt700000084WsJm000G0001108000004OdV30m0000000024
+0001000285VP08000W00G0040024001GW00G1Gs06ywG2800081200240uH03004000A00W0
+004Y000G020aY002C8000500K004000050004040100201G0W003WG4200000I000020W008
+0000i91000800p@R0010000WG0000003CW000000G0G02e@kC00C04W40808WW020G00G022
+W000004WG80000802O4_@F1WW0000W8400GO2800000X00f0004088W2GG010W2205e0008i
+G45K18880K0G482G805H02W4G4HK81010A0o421400W8204880AWe38WG8W00C0H400000j6
+W0020281208G00K080W00W00200020018001800m81W00GG001GW110248405O800000GW0G
+42u8v6080800W00200021004W020W0000D00G0G088O0088000K201220G024000110WG008
+8480414I2Q018K5W0i02G0200m8000008b0001ecR3000006000402120XWz@J0Cs3000X80
+011bCO00004401000810440G0G0eOC30800040O18Gf000b10020W24W4CCW00000Gm40020
+0G0Km0004000101400200W0000a000028W0G000W00uZ13KG00G00O0180100804W0Wm8000
+03020OW02A0Y8W0112G9G0G0W44Q1313048Y0eY11W0GK04a80O00ZY840000B70400008G0
+08000G102WehT3002AG0000008121X40GA00228G0002008600GHqyC000H8O43UnF10X0H5
+xR000W200100n00W800igl10G20wrt0G000W010Upt06X007YR0101004000W042TE120W05
+zR000oq@@D0808Gdy6yXk10G000W024re4W00W0100000I20001004200060W20Mpd100110
+002048Gay83080200001W0G40000220WN5bG080000aWApDW0000H00WRxDenV34150qTF30
+101G2G0q3W191OGM06W000000100W00G002VzRmny6G00000X0GVr9Kcl10204st81800I0a
+W00044D_l1zNRm_@6W00W000000G2YnwD000080G0G010W000004260D00eg43000Wv80000
+000Z40WlFCW000mez600888L03wGtWWgD00W00040eE8C080WmY@60400000O2m00Wx3I8X4
+3Ept00808rKOmwxCS3l10C000040cOX1vhR000011002PT_000vzz@POY130G00Sol121000
+804iiD3fpRGv96Ctl104010W00cwF3000YG04Y0080602020001080G4400e0G0HG0O000D1
+O8022004L@R0X0G1W0X242000q000811XGH8WWO081D80440YCWC40010002040000WA6000
+0Y00000G9024202D000K840aW0801H0I20q040D8Q00YALC0021401W3W01K00K00G0004P0
+11H001m22IC00a0OGC2C00200emQ3084WO0004340808e24G4706X0GW40Y00201G0110WWW
+zD000I04042001100G80X040212G0K4020000I000WW0080GS@W1PtR009000280Oa40WWW0
+0010W0140800100W200048000W000W00GGP0600010G010WA0A000G46e24040X80GW00W0W
+119000W000W0400i2k100G0cwt042000228010I10uY38WGuX@94mV2H1a00002GOA0a20u4
+7GW45m300EG000000081f0000000a2000128001I15uYB503I58100G0000GY2810C0G0mKI
+8L8G1B489FW4C00000I08IQ600040G0540W0HIyCq6R580G0100W4503jUd0Gq60C1000Gm0
+U88102e0044K8002a2W13MpGK0C0G28402228JG088O0zDn019W008A0000G040000WW0140
+000000H0G16d00WWG40e00000W0E2003H01G1f0Q00e0mM44mG0W88058W0a0W02W4G1Ae10
+02mG04O00004@000010240C00000R0n0I02WpTO00008G02004000a00iwq3@@Nnr@68000i
+g_4wit00082@@p002W0000008nG08H01XGO0440Y0eH0900XWG45X4e0Y81KGHa08244048G
+00WW0D0Y000Wl400080881500000G0a2H010G009H000000080HW42008Q8WS00W001mUlXq
+mT2fkm00006000OAW_O00IWbDw3XccGBC606500O5GlO00ee0CuzS60xl0000m2000G306aA
+G2P1O00G2WoVbunV3I5m0v000hiOmbw90WLhLjQLhQrPJvgpcMZWDjMj000m000R000MjMrg
+MjgLhDbhMRQD0soQjkQK09OprC8AWD000GhZLhDB0II5W1Rk60sSjQ1004100Y8V09gsdXwa
+VObz72vd10010HBNX000WCkD8l@4cQk2GW00JD7o8yCqz23LnRmpp6000G0010GGk90010Oo
+062ktWHePODw40vl8G0000002W008W1fb000W000W00002t_RWW00WayD0W00mxq6KdV2G00
+0ceEXIgbeW096g_X6hJOjQ9000Gx400ewQC6AmWKwJOzw400WW4Ll1FOdGRz6S4D3@6P0200
+ep@P0100q1@90002OLQ3kqs000207J@mvq6G000000WF12000808XSRGH_L0520urC3E_VZY
+ZJ0008A0e0102004W210010H00G010002002014004G0Q@s00m01d8R000020X0WJIR0W00W
+XyCukN3Iwc1GiE0TJRmvqIysN201008804y@l101W0E7EXg@C02008004806G0G00Wsmt00W
+0000A800001WHWG401200W8GHGGHDRWW004W000020W020018e0uvV30141060200104W000
+G000008W0G80C9i10040000WIH002G00W020004200A80YOs005GG20cW40010800HG04aW0
+0010K822W000G1aTU200W841000W000C001202WTpD00010Q0WG40000Y01H040e6200YI00
+0804G83GxmP00G420000402OAZn0G040nnPGkvC0G000W00oQN900uvESv4QasWA0I0K2A10
+000001400020W04GG8a0020m679G00000a8200004W0W00W00C01014080l4080G04000020
+0G8200000G4m0wac10K10zgPGfK602W02101020G00Y1000O000G0D2b15id0ew7000100W0
+200W20009u@V300424jZ184200W00GO800400GrL6Svk15RRG2W600G04802080000008@8P
+0W00WPzC00W0004m0W18200m10002yBG2Rqln@@I000W5P00Guug0W409WF3W000000GC3S3
+0008K8a1P5o000KWEuPuoX7UYlY@@n001DKcxm4vj1pWOGNN608408wz4cMmWo2DuIi4obm0
+m000W10JI5pWujJucVI0VY0Sf@9XcP00WWWjnDujD3002010G00001GePCqIl1040G000aq2
+Y11dbGL894ulA0008jD00iC@CG100AFF12008Dep00028020X000f08C00WA000u080g00W8
+44001WW000OKO000080O0GXRLL10W5Qa2jG20W0Km0300O000WC0X480W0A30020020KeP60
+0G00802000400W4GWA0W000W08W4W0W02W0028200a20X15G00000EBI3AyN50N107zh2010
+9W0a2000002m09W0W0031000020G5Gm2G0010008W00400GrK6aA63W00I8L0m9BG89aC302
+00O2000Ga0Gj@d0000nt00m@@daFm30223HYK18gi08qi700W00044S1l4081010111X10G8
+P94sl14400gw@400BtfUqI_0F04WH83D60800aF03@DQGXf6yqV2t2Q080eWJyL14J0Gem2D
+mh4a0000000i2Z1RcP00600810000G4kxr0YW00r5hYn10Wb@X1810myjF0100000mmAoL4Q
+c1Y1002DJY@@F100Km@@saaM2XcPm@@94Q63fYHo@@EbFmU@@@@@@g0202e1R3o_g20O00Vz
+eIapLKaj7Nh9HnuISfM5HNpWC00WTOCOn5IMiEXHuOetR3YcKY0cE10080002WAlCu5x4woc
+100XQvfhobT6Sax31PRm8KUCO_3tjXn@@O0gC1urECMRgb6vFPIU30012CMP2vbPmhu6WW00
+88Q362E10100000Gu500C6W1@Zd00W0001H0lqRW04011We000W00000bKc10G0GpRt00200
+FtcGhTLa1F300A000W0__h1W0800400028200G800W0Yy2D0W000200W2qD0K00KTy6Syc10
+0U002002G00040088G00G00W0100102WWWW040G1802010080008001I0j3l1000A0228qTk
+1010000G01500200030020024eNpQm8zOS0d102000002G0010G00WWG000120D7R0G0000G
+020028008GizU2WY4000000wL04041KVN6W0G010011001G40J044600280WW10G81W08004
+32W0010W1200000eW0400804200140000W8WK000000G1180000214n0YHHy6060WOmU3gps
+WgtD000GO@_6qkV20080YgtWDvJGj00GjyIyIi1TqRGVQ6iuV2G10Wt5g20040nLfI6D@Vnp
+@L4z@4J@7Hr@FSzV3PS2kL0uLBOMLBvIhVeaO9_EtWltDe3T30W08KGl100104000yxT200y
+7kIF1G00000200800000189N3W0004nl15QN1010110000004W820aIF300040041100GeTT
+3000XaMF3lcdmyv6qqU27tQ000400YWW000001041114040800000WOC0G08000201010umS
+6040200G00G08200200W00G000MotWgyDW0200480WryD0000410WWLrP004000n0e7sJ00O
+0mypI000WW000m7qF0W000800200Y000000011Irt0000qu701UTtWT_V0010GB0IaOV50WO
+0YCBaIePery7_YF10005000080048000W0G00802080802000000P300WW000280000100a0
+80o5p0011G000010400GWW000Goys9C8k10014001104480100000W00m002001MrtWMzDuQ
+Q3000K0W0000m000W0WDFJG00800000000eZtR0G000W010nGamHv60001G0008008Wm_D0a
+x0W018WKbD040200050H000G00G4004220004402800XqpD00C00080015G0080WoT@XPACG
+00042A000141WG010W00021W00Gmomw600131000C44070050mW00G00030020W80008980X
+3G008G000418804Ca0e08W0m0260080826I00000G403000QA480e02A015GG00004G10000
+00120eW000010W22801400A0W040W0804G0004H01000G0508W20HW0jxR00W000G41G0010
+11WW010143800G001400G00G4000G040enP3_Rt01020WA00m00800e00G4042400183481K
+000000W0G0GW0080P01002WG08002100400280W010000Is02H4WI0005424002AG1060W84
+W800W420OG0HH00AWWW051W0000H00002000400850K08WnnP080000280140G00G040WW8W
+0GyvR3W000040W1X80000200088e0080Z00W2008uP3wstW7kD00G080H00G08000g000000
+1O00800100agYYD0K000uGJ000400180MSdXfwJ0280mg@60W0m048004H01000005WW4041
+yEY10100000120200004042044mW0nB@00G0Xy@D0G040G00WGiJepL364mWrKDG0GW210G0
+801OT_p00020000us200004080000000100G00W100012Ert0000G40002vF100W00X04045
+G02004008W0WO0GW0080100W0G000020800100200040W00IUbXuvD8503cZ6300a000G2lk
+t000010o4GgHc104K5TuRGcS6KWl1W002sYt09000b_d0G0mWt@J000G200W401X10000000
+Z0W00000G000401001BCO00i040040Bqd0300Wi_D000OmfgC00401008sLz64Yj10W00kEt
+WKgP0u510G0200008008W002020000I0200000480040000006GC0000004400W9zDeh@7o@
+t01002v3mmc@FSLZ19LOGr@CG400W0W0GG@64Tu6000OSB00CZV2rDOWG000000W3IOm__FG
+000wYo4oFCXS_V0020800200001020000X080000002008400X88G4GWC0C0Cyl104W90C45
+e2000201200Y200r8WXa010143GW500304G61cf0D0W02000f0004W0200844028000G5G00
+0G00WW0001W00100109oWmG0840WCTC00230A002805440009004I860000m0W000008W4Q0
+O0002W00100G00410G0m1G04H0110011086703460W880808002Mot0004W0820wyt0W0CD0
+4200GG0H001002100G0004CGW220080008W0fWH30@d2G00e005200OGGGGW0W00Am8maG20
+00540Y05WmS@D0000120000e0W0Oe0820KW000W830022020DX000210GX4W10004480010W
+2LJ0142000000q8000T801G4GAWXJS02I_r6K3W102004100aVT200WH040WX4f2WSO1GIs9
+0W11000H2000Gi200000Wh3m00G80008801m0GA0WJSW0IA09CuV2H1a00000G0100GA00NS
+045m30W80AZb1q08W00GG0X000012uMw4000GyyZ1XOR00A200011820112m08004Cbw700a
+IlGx3G0G0100WCsY1prpGk@9avl1004018W045m3Jxdmk_90G000400G6yFqDx30W00AtdX4
+KCe_V60fN0000020Y00802012000H00W20000100001W0004010W4G0G8010000000E2E0mG
+YDWC015Ge41800WGWm0O200XWW0002022X042C1H010A6008400W00vWR3aG00cYj1ZSRW10
+00000220G0_7t000840100Ijt0C00002X0U0DXAwPmA10Gyz60080I000m936CWG2W000Qis
+000O2090a00YcGg0H24122W204I208O850O1G29HW40Y002OG2AeG200YK5UwE1G11000000
+3404Tj4xrpmIe600O000mLG8s9qx9300K0kjAXIvD8FR34300bdj1Nup00W2Wk0I8AW7weFX
+ehPmchPWDNhsWCC8wQ92nM5WnmgvPdWDNZ0RkMj000m000RaAW7v3OGK0LaiT8xj13000Qp0
+00rT7500WW5YD001WGuv6CpU200G0wGtW9xJuvS3W000CwS2Fk@000bmAzb0004G@Q6qM7C7
+npmcp68010ub866HMYavD8pv7kc@1m_F0NANnYomyO@3zqZ1000eZZD8t7CA@N2000mG400A
+jkYivPOiwJwt@104040004W00100G00202G5uCSVV200202gpWr_JuVk40W02sza100AFFRZ
+100We00004100K3H208G0Yxo00000G804wA4ZKdC04000000A000G00080100100100G0Kj_
+6yEY40200080G1G00CU@401m00eXG04K1082020H04020000IG08000iS2KOW60W800G04Lu
+59WA000K40ms864Kb1v@pmd@FiGG2@BRmXw600820C0004G00100W080000W0sOt3000W008
+0@5b10000004W040WG12020000402W7iR02140000CA302_7t04000WW0000000049000W00
+0041000z@PmWw6004GOcG3gJNYItD0W02200400300W00002G0irk1NuOmvxFqfS20400s0q
+WwSI000e3001008G00HG10W000401000Voto6000020020e0Gu9tDG0G100W0WRyC00100WG
+0Wb9IeW2CQsOc@@F1mw000002W4000018000W000W000WmOU6KLU2JM9n@@i1002WE00OT_6
+ael100W4090600G800GOm@@98H00emwz004j2000gJE3008000C0ehS300G002G04200I_P6
+04009JXz0c300800OrJ3ct8XC_D8vX0d@F1120K02GW4800WO805009100O6m80W0W0X088G
+041060Z030000I02002G06B7F00ts0000100414WH0G0000G28G0000f8001Y00YY00o0040
+100034AjQQGhwu1E21G0000W8XqepC000C0WW02a8L0YAB0oFB10C00008IIxTFO30Xvdb00
+20000A1020112e8a2038600_3rWWwh30G3E028WdTJ0801IA@6CBh1pHQ0800WfOVuI@t0DB
+8iQi1O0000G00H02020m0000044400009018400000W000OZCQbF29_600_@dXGpI04W1G_P
+FaFoUvdfo@@@@@VTrT@pzp6yDj100gb@@Nh6fJOoj4QR_X2oDG200GTt6SAL2@@@0ew00000
+01aOGV0FqPk7XDvnAs6qWU295KnSs6qb69vZRGLROChM8@@B4020W5nDuIS3QNL200XkHbpG
+n1F43dDVhlHwu6SpT2bYdGyy9SEU2t8d000000y409iRGKaF4Mk13ldmVv6800W8chG0GGW0
+0W00m1140000010IDHQ00008G00G0108UZtW2dD8Uo4A4dXvtDe7z400W0100WLo00000100
+01WW00010G010080H0G028084G1Ha02A00001020000G008X04G500W0Am000SBl1PhR0W0W
+Wk6O8FL3obt0000WWW20giq000880008YDr000407YRGjo604008o_4citWzxJep0300CCjR
+b1xKRmlR60040GWI00WG8WdaJ00C000100W4000442QKdXBzDuQO6MWt00045pFGoAxI00W0
+8uU3EwF1G000WKH0gut000C0zzR04G0004000014018009000W0WGS_68W0m000WGzr6aV03
+xwRGBSQ100WZZ00Gl@9KQ23vNRmMO42WmIAUG9oYfepGN2ep2000080O680000060W0000WP
+W10p00000004340000c1C000000sLi6aK0UM000wyCdR0D30mYKc66000P2mm0000400C3C0
+00000H02W000W01aPW100200nHcmOXu100140534W040000GA2800000eO00GW000Y1Y9020
+0000W04000000EKnzi201000080x40mGG1G08XK19LAsCO00000a0mwZu10WRA5R64000WQ0
+800222g19WOuK4Sl2m9z9W0000W040002WDzJG1W0H191200W3m84ml@6CTl1I0000Z00iXl
+10G84C4Wm0W008tJyIvt000MCba@Gqr6adz31awNCSW1100OA_4W1W000000WGWmzw94mk1H
+id0000YfsDOdT3000022000000hH00WosJulS3000101800000X000W6tD00G0ndx9020m8D
+T300020440uvz4kFtWfjh0G8100020W040vcQ0004800083gRmAL600WGyET30W0000GG0m0
+020WW0W000GW82G00000mjgkV3Mf8XDlD0001m7z600005019e080aSqC00010020WG2IuDW
+400040102u1Q90W000000EaQC_v8XNRh0008msw60Iv0Ofx404004zO27RBH8z60G000300G
+fz60020OeS6MH3300W0000800WGG8G040008G0I8G00004g0otY141000G0000081000aGm0
+0010G108G000844200000sz00mwu9iFP24088Ygo000400608W2I1LzS2010GY@F108G07@d
+W04W000000802Y2tWB@PG0000000ai6C00Y0W0WW00110W01000002KH10W4GA014WdfD041
+2GW06000G0C1AGya600OBae000000YOKC0Gm40000004120G20xut00G008W00004Wqvl104
+W010G000e000040108eF@D0080W004002042100MLt000048100054o0W8G0054000203D01
+4000W00G0W0G00G0W11W2W0208G00UOn00G12W020101080006802e0f2004G0G0WO00GG02
+0004n3W08200K8000Y000G2904YeaQ30008G0G0W0000000220205_dm6x600018zz40W412
+00W240G10984000W441080000002a000002404100KG000805W14GuvQ3G00GG8Gc10e0180
+80120800018i60A4G028W00G04G0G54018G4A00O0I100W00G918000aU4614000W70G0GW0
+002H018200000400I0G02ejT300810200iLS300W01G001000AW00030000100002084WG00
+e2102048WA0004aUqt0010000AW0200acj1002G0008006000a00600WsGC00000G54W3wD0
+100mG060000uN1300Z2WG00008000WPV4004tzR0200GG051000002E00000W000q2z6G010
+uPU30100iuF34004QKrWitC0K00HkxIqhl14000C40000G0Oy43gPF10001NAQ00000C1002
+00000GG8W000081owx908000av200000WG005yd0404020G20000G080G000A9U601080G04
+Ouy4E_t00c0W9kRma19aIj1zgOm@vC42R2lmAn1vC04WGPOR6000X7aY15_d000GWjuD0004
+oD_Fyrl1n_pG7060404O7@A6_tW6yD0W0010a001100C0C0A@d18080PRoGE@600088A0600
+y0cpl1RpQG_@900c08B09gxaXV1I0G0000G00WO0OJsd0W0040004h_RGv@C0002eVT6MsbX
+LxJupV60200Czl1WYA0MuC1000G8003w@F100035lRmgvL4kW1RBOmKt9000GeKV3m000800
+00008002G0W00200e2100C2W1H0030Jr@60100W00080A0WB5CW00W21010A0W0m0G0e002Y
+0G64C00HxZ9eM000008W0000400000050G00001G0018805GG0e810Q0OgxF100040e000G1
+Gajl16060K00082001X08WA0OGm00000001G8Gazl10102010008400C101040Wd_D00K0oz
+66K7K2zAQ0002108O0W80000040W004G8WOY@9080100WED00000241010408000400WGC0C
+G4002W00011G0060qfl1040GI58100000044woF102020AG00400ClF3R@R000WG0000W02J
+0WK00ku0fO_400800WW0ufV6Y28101NSFdOmY@C0Qd0O_K6000028Wm10I10uY33Wa00fPyG
+g0F000a20m5NlzU00G04W000G0GWCKPuxP9000m0G0100W0HK0Ca8T28200shD10K400002G
+00004248OrGo7uaYShuQE3_@VZW@D00004020000vq@kY1108WLRJ8mJ3wvT30G00400000W
+0jZx6G0000a000G00000GmflO000Yuc8300W810I0000W0G000Gm60B@B10W800401FsR000
+40a00W0a0GQdrZqcC00180f00W@@P00meG_OC4Mh4FLRGK0R0000nr00GnjC4Tz3x@Z10006
+000Sv3KHArCmWDNJj000O000k000fK@WMNjse08nQj200W8WK1Yw0uPky5ZcoD0810mqlLy_
+B3VGd0000m1Yn8AW7Ibk50010hDp00200W00G80000W0WW00G0000ZX10WGpOOwv4YVsWGsD
+W00Gm0r9SGS27Ddm7r60018OLrS0800isC37P@00WYr45s8f89AZoWIdVebT9UXMY3yR1002
+082W000020C40G00008t0eqX7_rtWnlJG04001G0W8jJm000mZqL000AG030Gpt6Cjf100A0
+040002W08Vp4400310W00e001W20WDEDuW730040W0000400000a00400002000080201DfR
+3000mID00erx4004W6@R5@rdW004G0200000C0040W0180CK00200Wt2C0e0A010080800W2
+0Gcws0005G0W8A040000K0100G1200040000X2180X0a9k1W008G040000804K0m5TCyX_30
+0QGZ7cXlqD0CG000e0000050080Ydn00001OW00G01uW0280140HNv6W028W0080200G4G01
+00000014W002eB03_vt0010008G0cO@101C0FHPGqn6082081Q36TsWh9JG002Hpv90oY18v
+@4W100SO13lMR00G0100000014400801Gn0W8WW00201Y0W0G00e0Y32W1G0024040000030
+GG10020801W12mW0uPH60K024803000WG024G2200W02C10O2G0803W0000X400000WG0000
+0002G4oOvC00A0eUI3Qzt0000uU200A_F1001C8000008Wygk1hva0800WetD0304Gcv90W1
+08OU3W200010000GG0020WIkUepP3000000aGeEW4_@d18020NSa001GWOfCuXk400400480
+00WBScz6iDV2TUP000020W000830MMNYx7C0090000010804020CMOFXCuPek_40G04SIV23
+dQW00001040xHPGoL900101020meK6aFs32DI004000010QUV3O000q0W1C00080G6KVV200
+001010000C8ih400000810004000402cG000100IjtWOxDWH20010082000000Z06W4CRX14
+00W8W1ej1z3xuB1W00020W10308UeF1Z2003mNHgy64Qc4duNHyPISxl1W0G0c4dXO_J8x@7
+Ut@104087@p00W_qQ@zeWU6cO9aWyD000Gq0y6021006080000908000080G81C00W60C00O
+1x64yl10202wwtWZuCOxV30800bK630SL0Qld12000000We000G001020e8C0QYypI000000
+1GXvyD0030044040X004GH000Y0HG50mWm0mff600200W0A06910SG800G42G00SGO2K40Ge
+12201008W40G280020008uVV30W2000400000250002020O00088W0GHWK0700OI@600W040
+005i1040010O000m04000GG000m0W100000Y0002xctWJ@JW000010040m00000G00048080
+0100000404002W080AhmWx@D8JP6034G8G2a28m5Nmo6aSc1vZjHK0F000000WvJu@Ca5W79
+fz08C00I12SXc91c00088O0p3b00140022E40002MsWyny0H20GK0I0Kh18BWJcO@XGps08G
+20008C00X000X180800010009030G00180u00000GG4qEV80400ooD1000yM300weIeaRD00
+001008000g0AW00G4WH802028W0XW00520GK0IG10000HY08100H4000qXh89vA3G00000mc
+Em@V0W0I0400unt40020000m2000G306afS2008moKsZqbt0803GM0daas6BzpGePI00m000
+R0G_Oy4qC3XcXq4_MEJGcb9e_mqFKdD3DUR00WmXvqm8MY@Z8IY7Zgewg4YKGhiSDO@_GcQI
+YK@V000TUgcLS@lG2080Iyq00W00ruRGen9CCk402000100Cgc1lnR0800000G0006801000
+aw100G008W0Y0cD8c2a0002000800023000a8cCOLL326KYewDOST3G200al_3W200000Ge7
+008az4AB@X@@vPXZVIWF1W04000iNVRs00140JFiKsC@Vjp@L3z@qI@7Dr@FRzVpO@t2cqW0
+0000W0020GOECFU6sW9oD0Gv3mqOXqGL8JmNnFh6KsC3001W50800040igV3400100002002
+OXr60I0008000W1040480020GUxF100084200spDX3yVG000Kjr6CsaANydm_zUC2E39zRW0
+00YUmD8GL900uEVxTBBlf2001WrxP0200000Y0G50W020204802808u_S3kpEXNzD08m0000
+8400100488000WaVb10iM000000012OzV90I00020000800001m4rQ10010G02b@@D080080
+00002A00000G10022000m00000040028GW4Kslt000W200000C0080W10W00201010020tKm
+WX50Wa5a0080mvtF00004000OD5d04A80A00400W2400B200I80100020000I108C0KG0180
+0001H8Y020011G00800C00000G0H070W022200HWW92042G020Y84045800020H0000EE02W
+02002K1008080GK04W0G0WBbDeVQ3000m000W04G014002m000DyH2000K000m200000A000
+21008Y0400410000G5044410WO200000808000W220106V81a02008GG08423O00I0202G0H
+m_OJ00WAK9_60008000GC08G020W0@4p00W000028014200GGbFT2nzw100848H0GhqRWW80
+mfSD00002800G20K0000000GXW4W2I00920082080000WX0G010Y0G01G00408006000W008
+00WO02000002000QI0000W204GH00G00A4_40G00G000SNV3wft00004P6gIf_C040000200
+0402G200GG00_@t0G0G0l@N10008042G0012QdE1004000m800W0020Cud_4cDt00W0G0W00
+Mdlbvxh0100W4W4280000100a000kpy35_Rm4z9yyl10W0WgRFX6@DGmM3m_8RCPtClgO000
+104040@@d008XWvcD8bw4cvt02000XyRGLz68004OSR3ohc10004U3002dcXu@J000040601
+0O1OvwXqxbIySl1vHRmYrCKiX1jOd000Zq@@D000am0sC4zi1rCdmf2j8000W850qT@6G100
+20000100400888402080306004020mvA60G20eXU30W0005101K8000G0G0188ae2WC0C0CL
+V20B7004000W2000201000440044040C000e080G104e10Q2m0040800o@ibQyDW2G000020
+000306440G0A20CG0GHe0WW0WLtJ000000O040G04000W4000808G01080A08030G05TOGOF
+9mG0000G000020800000W0sHn0002W0000141GiJgD0050_@t0D2001MdWW01WdyJuxq7Yks
+0GS10a24u478W4T@300SG2ik202NSHNlnlej0G0H00W0IsqC43V5W0G0Z203m4F0P1yGAs6G
+00G8FRFQHTf6tz0000d300WkY1x_f7QNvaAwJ00WTTeoT5Oz30088Am7ZKgPex@70m60a5m6
+7kRmelj4TD3MZWDJfcae0y0000CDMjsi0EP9LUYB_a2pCe307Ap9X7Ak2A00W400WJvDeqU3
+wrtWpxJ0200GjmCall1020WQut000020010000ZleR5BavHAxgC7l1xcvnDqX0SM0OUPj804
+0KmV20110MfZXZFg000028000W010r2R000102009000uD4004fWJ008aG40046S2lod0004
+001120008010G4yX100186as000a04010011WaAj1W0000G0GG500u@V300WQsuc4rCTIrtF
+C@T2090I8G10W0C80000028W0W00181000G1K00080Z00004W01800000204828029G84000
+W08401H000280I0000000208100008080G00810GG6000yd000W0000W0400000W1y@l1W08
+0010GqhN2FZdmkW6ajl1002WQzt0014GG00WIxp00040000WDYo1G00GW882000011W04000
+C000GW1W0008Cg000010812400080G0m02Gm0180000W01808G0004AG0000000240110002
+2420W00e000Y00000o10001000844000808108_V3010010W00e00m5r6yyV2hFRmnt6080X
+uCT300W2008Wu8Q3MKtW2hJuGT3UJqWV2D000014000002020000010012G0000002G42W00
+200ecNdXfCC080100WBhHToPyV32LpWARsuH13k5q0S000LN@GuY600200010HA0Fy@V2W5F
+0_@tf6mDuyB300GC0W0000G8000W002020o006h@11000001G2ao04040x8P000Y02000psd
+00080s300B2HLvZF00W08S132DpWxqh0008000G80080008W0Y1WLkV200W0@@ti2DD00G0o
+@@Ci6Z4W00G0810yjP2vsR0OD0WtwZ200202020108000010W04088000080809G08G00Q0O
+AixXe0C0000W1W104008m02em8824Vc17PP0000QO300ZHHryx60a0000808IK0006800G0G
+W8X0Si7300G1C080W00000WKGR0C00CO0G02m@_900WfSRTjYAp0G0XX0GA00NS0qE@6XcPG
+yP608G0eO_70Rc0KCBO04000212ycQ5G00YY2W10020ndL1P10Wtw1xiL38G0G000W0W000W
+000G000Jiwn3iC00uuRMVp0m020HI80W00G5Y6Gg1WuiMIM@t0mj30z@7rrk6Ckh1HbjHdfC
+4Vs3Jd_Wl00W@@TAqC6Omch5QcGPuGr@@@@@@@@@@@@@@@@@@@@@@bC@Nfp@J2zVaI@@8r@D
+Qz@YO@des@7ozVXU@F8u@1A_@Va@tdv@xX_VUg@V7x@rv_@Sm@7dy@lH@VRs@l6_@ff@@Py@
+Nc@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@81040002W000G088000010WW00000000880000120W0P0
+O0400fN0Cu@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Rk@@b@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@j700m0000GaJ4Dud1040W0000W210000O001080000WH00000208102Y00XG0W880G2
+40e020C0X6ZPmWa6O86W4G0W00Ge48n1300e40000030C0010000030e00ZUm000eyggJuZU
+m000B1vEy30
+ ;
+' // Loading device with a `jstart` instruction. 
+IRSCAN 10, $03cc
+ ;
+D = 13;
+WAIT D CYCLES;
+' //Loading device with 'bypass' instruction.
+IRSCAN 10, $03ff
+ ;
+' //Loading device with 'bypass' instruction.
+IRSCAN 10, $03ff
+ ;
+POSTIR 0 ;
+PREIR 0 ;
+PREDR 0 ;
+POSTDR 0 ;
+POSTIR 0 ;
+PREIR 0 ;
+PREDR 0 ;
+POSTDR 0 ;
+' // Loading device with a `jstart` instruction. 
+IRSCAN 10, $03cc
+ ;
+D = 13;
+WAIT D CYCLES;
+' //Checking done pin status.
+' //Loading device with 'Bypass' instruction.
+IRSCAN 10, $03ff
+, COMPARE $0021
+, $0020
+, X;
+IF (!X) THEN GOTO F;
+POSTIR 0 ;
+PREIR 0 ;
+POSTDR 0 ;
+PREDR 0 ;
+IRSCAN 10, $03ff
+ ;
+DRSCAN 1, $00
+ ;
+
+SUCCESS:
+PRINT "Successful File Execution.";
+EXIT 0;
+
+F:
+PRINT "File Execution Failure.";
+EXIT 16;
+
+ENDPROC;
+
+DATA TMPDATA;
+INTEGER TMP_DELAY;
+ENDDATA;
+
+PROCEDURE ADJUST_BIG_DELAY USES TMPDATA, MAINDATA;
+TMP_DELAY = D / 100;
+TMP_DELAY = TMP_DELAY * 25;
+D = D + TMP_DELAY;
+ENDPROC;
+
+PROCEDURE ADJUST_SMALL_DELAY USES TMPDATA, MAINDATA;
+TMP_DELAY = D * 25;
+TMP_DELAY = TMP_DELAY / 100;
+D = D + TMP_DELAY;
+ENDPROC;
+
+PROCEDURE ADJUST_DELAY USES MAINDATA, ADJUST_BIG_DELAY, ADJUST_SMALL_DELAY;
+IF D > 2500 THEN CALL ADJUST_BIG_DELAY;
+IF D <= 2500 THEN CALL ADJUST_SMALL_DELAY;
+ENDPROC;
+
+CRC B37A;
diff --git a/bit/main_board_034_ionized.stapl b/bit/main_board_034_ionized.stapl
new file mode 100644 (file)
index 0000000..636dd68
--- /dev/null
@@ -0,0 +1,11395 @@
+NOTE "CREATOR" "Xilinx iMPACT Software";
+NOTE "DATE" "2013/01/10";
+NOTE "STAPL_VERSION" "JESD71";
+NOTE "ALG_VERSION" "1";
+NOTE "DEVICE" "UNSPECIFIED";
+NOTE "CHECKSUM" "UNSPECIFIED";
+NOTE "IDCODE" "UNSPECIFIED";
+NOTE "USERCODE" "UNSPECIFIED";
+NOTE "TARGET" "UNSPECIFIED";
+NOTE "STACK_DEPTH" "4";
+NOTE "MAX_FREQ" "1000000";
+ACTION RUN_XILINX_PROC "Run Xilinx Procedure" = XILINX_PROC;
+DATA MAINDATA;
+INTEGER I = 0;
+INTEGER D = 0;
+ENDDATA;
+PROCEDURE XILINX_PROC USES ADJUST_DELAY, MAINDATA;
+BOOLEAN X = 0;
+IRSTOP IDLE;
+DRSTOP IDLE;
+STATE RESET IDLE;
+' //Operation: Program -p 0 -defaultVersion 0 
+POSTIR 0 ;
+PREIR 0 ;
+POSTDR 0 ;
+PREDR 0 ;
+POSTIR 0 ;
+PREIR 0 ;
+PREDR 0 ;
+POSTDR 0 ;
+' //Loading device with 'idcode' instruction.
+IRSCAN 10, $03c9
+ ;
+DRSCAN 32, $00000000
+, COMPARE $f16a4093
+, $0fffffff
+, X;
+IF (!X) THEN GOTO F;
+' //Boundary Scan Chain Contents
+' //Position 1: xc4vlx40
+POSTIR 0 ;
+PREIR 0 ;
+POSTDR 0 ;
+PREDR 0 ;
+POSTIR 0 ;
+PREIR 0 ;
+POSTDR 0 ;
+PREDR 0 ;
+POSTIR 0 ;
+PREIR 0 ;
+PREDR 0 ;
+POSTDR 0 ;
+' //Loading device with 'idcode' instruction.
+IRSCAN 10, $03c9
+ ;
+DRSCAN 32, $00000000
+, COMPARE $f16a4093
+, $0fffffff
+, X;
+IF (!X) THEN GOTO F;
+' //Loading device with 'bypass' instruction.
+IRSCAN 10, $03ff
+ ;
+' // Loading device with a `jprogram` instruction. 
+IRSCAN 10, $03cb
+ ;
+D = 1;
+WAIT D CYCLES;
+' // Loading device with a `bypass` instruction. 
+IRSCAN 10, $03ff
+ ;
+D = 21000;
+WAIT D CYCLES;
+' // Loading device with a `cfg_in` instruction. 
+IRSCAN 10, $03c5
+ ;
+D = 100000;
+WAIT D CYCLES;
+' // Check init_complete in ircapture.
+' //Loading device with 'Bypass' instruction.
+IRSCAN 10, $03ff
+, COMPARE $0010
+, $0010
+, X;
+IF (!X) THEN GOTO F;
+' STATE RESET;
+' // Loading device with a `cfg_in` instruction. 
+IRSCAN 10, $03c5
+, COMPARE $0000
+, $0000
+, X;
+IF (!X) THEN GOTO F;
+DRSCAN 12259744, @q8s50000000@@l@@lAPggP8000003080010000E20000G000006081020GvtfC0e004GM9Go
+1D00GI00000C0m00400060C0W2040006080WqC82421YW09G05G03m@3W@dV@F@x@yp@pV@F
+__@uV@7Vy@ud@dUz@ql@dU_@qt@7U@@m@_Fym@3VCX88P0000GYa6a3G280G0YbC10081000
+0m0020050ro600000W4088204210YW009G090MA0iAW70004Q78g73IW000mf160G008t0C0
+00mZ000eT0gwKe50004zBi1009vc4qgzXGEQu4WI60t8iqC4jCyW7lMa0000Qz000DNi1W00
+WGAs8803MoO30020f0Gnh6C0W00OC0F000mvE00OI03EXW1W400@SWHD0OaFHEZOmmC5L00t
+7Qi23EHW1000WtNWnA6F4bG5VESoK6UKO23MAP0oUWdDKGQVaD0000P80085aMY2nW152fBa
+zcAfEmp20xOSoz4R4yH81vm3000430005XKnU9di_0IRui1008r6Jauc63G0004WI5fdOmUD
+F4fGNWFR0wPvaJTgevXkAKo0000aq7000G80Cgq3pgOmvH600H0OrXJ_9ofadI00WRPuJR4L
+333p4of2Z5Uo@H8z30WHZ1mI8m6RUeW70001W400s5B4WY603av10W4WHC89A0KkVw12I001
+e52000ZkE810084510WMF81G22mwQg002H200000W8YBgy0Ce1m2PU00W00000X884vVhgOm
+i70H442900e6EOMfoZA7IOkBLkfZ1WG00Lrz3WG0W7g210Gc@0BU4CN2jWnm1OFSfb17tPGl
+Gy0m00OdlA0Kp0A0aWgFk700W1K603L0eGZ090001W220e00C0015WH18n3Ws00GG8GmA00C
+@2EI0000000a3WX1J0004820X8W480004Y82100W09ewk4480000041100W08000W23WX200
+081650300WSG00u04E1000W3E0000a31u00Gm900qNO5r0O00u0000000GG08I20iSO5WS68
+H4015Wu300IY0GGY8100001980000GI47H3OGZ06a2W18Q8O8I2GY864EA09Eww@Yo_Vej@3
+gx@V_oCfo7gHDXwAV8nq700ugd3h10006oLzXlJjfRp44000sY93zOQGqcXi6R5WR00kUz10
+002G000cLDXPMhuhrG_mCXEPD8urAAc5ZADV0000kl10WaDbOMq4oyqcURD8VK90000tOg7v
+oL100psBJD8hq40010W020usMFYyDa3UVeaN3o@rW3WPuorJ0R10y6yLLBb000040004G000
+80080240uHO30W000003uVJI000X0G00uC03W000q2y391R3080WlaPW900uRm9W200eIP3W
+000qKB3040069U3007@p3sb0100W0000030IbD1200659pGH064Fj70NL0o_z1W000dEdG6g
+s4nh10100000W0W0104002100020W0400100110010001000400002000400200qpi7000uv
+80000G00020010000800J0Rm7m642jD0G00Uhs080000010G0G000015042W0G00a00W0Y84
+0800W800eiO30808iNi1P0l100YqFZtW000m_fmyTi10G1W000G200KeDO3e0001W44Y2A00
+04200e000000U0m082W2K000W000G100vPyD0jF04ni108100800Ttj133O0W02Wluc10100
+08400G00XRQmWp9WG00epF3QA8100W1hXdmfoU0E000a000200042040W00000Q0008W2082
+00WWE0C8sZP880G0W00100G420G0W00W0400G20200W20G48009Y020000W200a0W0400004
+00G00002800000G10WasU500y81000007G2m0020000220004G000G402000501SOqsW4100
+0GYGJv6aIX1GC010180000004WG00000HD00XhdGR56SOX1xhZ1Ga400G100104cwn0Y5004
+0H00GG0e208G080600008200bqt20We0W00fI0808G0400000XN0W80e146W020W60002808
+Y000Ge008YK0I000200Y000Ge0BhY1000Uw04000048220W00200820u08000e8W30200WY0
+H00uURUIfd11ywh0WP00WxkJ000Oj_4Uz_400u800000m2gIL0KbgW7Ec1mVB2UuMavmjegg
+AHcP6u000m37WlEX100W400020AWc084P0wCH0aPYa0Z491qCI2e3e4GJGDYCWQa81n8HAWH
+YK0Q2f0a1K0018ZyGk70JO000000W2G005m4W9W90J000c00K010e0c0G1C1C000u4_pnCp0
+00_7SX70LgA80aPG0u@WO6pO2Fu1mVgILL22ym5agXB8cPMG0yFm100KL50vmxH8kRyjzX00
+2x6adX9Z1xsBR269X2@DOhykslt6000Oq100MbVcsrP30G8POqCCwmI00W0Es7ZUzt8yV300
+20qpF30CK06PxXy_DuLkAwzN2000WLrQmNj6iMB3W900Qwt00W0W0008Mq@100109tQGY@90
+0G000W040G14W0002180080000W010100000O@10n01K4H20W24001eW2801048Y020009W1
+00Cbh1TmQm@x90118uAU3000800G2020WmTy98080eiO6k3A10040fy@mOKOyzk10006cLc1
+00wpHmR0020Ws@De5U300m2rTt3TCd00G0WrrJ0440GYy6000Wu_t4U3F1000Wn0am@zFKUl
+1RuQGPm6000W0000180WGG0100020ploWUtD0yH10iW04Y410052001GW24W00W4H0200WYz
+D0000ILvFalV2lfP008004800LoRGYl947l1G00WgtF100G4RyhoT_C000040007R10XTaC0
+08200W000W00V9R00W000Y00@u33000G0082m0000202C6M20G41ItoWabheWX4UKF1000Wj
+COW8G01W00008nN000G0Y01000030W00008200n801W0100WOuQ30940ifi7tiRmGxC00G0O
+cw4wxF120040040NQ430001tBPm@@9010W0G00GDo60QV51G28020008400G013020X0G200
+10011000200WR@jn1v94Rl1ZaR000400a8GljPGuz600001401GG4C4FP5Fqp000020W2000
+04420024140000k51G00000240W10W020W0GC00000000044TfhIc2FG0O018102G0W40W28
+00600000021000Y8m1664XV5FjPmB8900040G100100884090W0000CF02IG00G00CW08065
+0KW2eG04102I1uG13W800aTX1JiinXZ64yi10008000810944m000YG0X@@D0G020WK00100
+G410X00041000G020W040WJuP0008mur6ytY10442100WW85W0H0GAW100GzR0G0g0LKm009
+1P20825WK0Ha8ZG00GSW4W01A012000I_TIKzC31qPmIA6yaO2G00G04G0G0008gy4000020
+W02G02020000K28G000cNB1000H000bG0W00100X20000C30Ae00Ga400hI000WW4YWe4000
+AhH802012eaIYA14WL4A12000IO2WI00085200H10000GYGRdO0001W200WGW40Ae4000HG4
+X20qHd100YY0044W0HG0000020Ga@@D00b0008W0G00GdRRmQS6y@l1I000001AI302eEE36
+Zp022W080000Y86022000022502M5H218022PK0WYW0004Y8009009100nxRGAxIyrV2nyR0
+H0W84000C80Gxep000m0WK4000G8B0G000G09208J00100I2E0300008J1W02088004100Nm
+d000W020006G02000410X00AW00K0112GWWWW32DW2O80E001000mRr8GG0021C1XGe4g0A0
+M32uX0022XH02210000X0000AutL32D@1G00001001H1226m0021GX2010H0AXWG0u01Y8W0
+GGu9U34000W022edV3G001CWA6002W00001WW000002021W2uDW4080040200080W08100Ww
+70AW40G21G8401000W00W0WW0X210eW200G0G2420fnNH8_600400480W0G0402420000WW0
+A000402009u00000k8LiR000060000050u00000OH0u@V30005SyW1lfc00020qC30Y0q62a
+B110G4020w500nWyN000Gi5wl1K0m_B420W90XWG80etD402s@XOI0C00o40kbV30420Y0W4
+GR0280mV1G08W008cKwC00D0k00MT10iw00Ks1H4000C3000000gE08YV0@zOmK8O00Cmu@@
+40G84200Wa4WC0XGOG90000qT00O8420000090900GG2Im04aW15400c2W1f_F30Q222W144
+03W8060f980IJG0W0WG051X0m021W1G000WQ240000QHWv@J000e90003WE000TW89m0HI09
+Za0o0Y1q443e3uE8ImT0a3000WKP74e0uAG0u7u2GJmT0NWx001t116W12C0Q280m0K000m5
+aK560PW89m1HI0DZa0w0E1a4S783868IGC0a2GLW_700LbgKz1FOcP0m@00agg2e@30GFy0W
+Uu1_300CpC0I@N20eA00000uV0gggWW7y11FufYPCJLLKbgg44cPA8L100Gc0428446K2WKe
+40fW4WG000G2XW02111b0a0A189400qwV50uV0000Kfg008WE3yFuCZPggo@W7kWeggdvDuo
+oPs@T3WN10ZpVrjnL4nv9FE@0q10WqMR9hQ6Yc6ZGhDudrA6MO600BPRq9t@@XKOT2tTR0eo
+4Wa3W9LPFcooWujJez66oscXQczeIS3gvs0000y4100JArWcnD8Qy4W40W00000044mntCqK
+S2000I80100008uEM3Y8t00G00VVd00004W0G800G0g5r00084zYlnJu60W000200mEl600W
+8008W00340W02000wT100W0Y0H1002AG4018W030K4500288010200004G802W0200Z0_@d1
+80400001W0GW00W000aY0WH10aW0A00OO02000GG00800meK60080_XS6wCtWapJ8JuA2Rw1
+000GHhR0O050020Ke00000e001000480X0H00000100900000002600010G40WEtPehS3G00
+400000H0mIMw608W18IX70000G000200G2W000010GzYxn7y600108DB30000A008W000KCV
+68N000W002110400108W02G0G0W004010W001040G0100W2s8mW@@J004080000180C84001
+008I00b000I090W2008000801040qFl10080001000CGu9m4Am_XQvt0000808000420roR0
+00TE0G00000441000G01e9U6QcrWrn31006OBz90104GW80W4H00040WW800010WG0102080
+0810WjTD8rwGgn8XDCC0H00100001_6G00X00000000G10090001YxvJ0008nFH94Wl1F_@0
+G00000G000G010W00H0W00G0GKs600G009WG02000e000002mW6204Uv9000GW000000WG0m
+W000G02100G200000WpS00000A080m2Y0G20024X010000000C460G0Y7DhuH03ozt004400
+W20001000GG01000000O0W00@wR0000IG2200088czt006800Y00cvF40W06PNa080002100
+2G0000qyX00eW8000800040G00200000OEOH2@@NHk@6avi1pIc0000410804208000OX9IX
+003Y0ie02q0404MA51o8e06001I00150Gep_3X8g0000008AG8A0W0C800Wn0W01000GTGL2
+C0n000HK00Z8W0L0YA4W8a80820280W005020002ABU600C04JV208000300001000W80101
+01G02012201410800G0010W0c08142m0O4W0G02G010240000080W0000e0QyUZVDD0A00Y0
+X0400802YH002200000tA0000380i488G4G1H4C006900Gq00040600230020ckmWjuV0100
+m29600IH08iGA212804190120406011XHOLT3000H0200WI00e00008e40G0101W20584600
+0202000040200W001G10920ftP0GG000e0000SX0G0900X0WI0000000AH480000WY2W0WG0
+02AfKWzF01001G0H06IG00ea90400a08A10WAXP8e4b0CCW40aK2008GJ100b00n000O0000
+0QO000200480008010G018G00GW2XfY100KWU_DW01G0W0W0042X00020X2041l1W930020Y
+8408009G800W0A40AKW8m1G00W8Y0014eu@@CG102000G024DG4Y0080G800X4202K0M0200
+8W0G0XXmK420W8000CX0100800O000402BO00018W0C2mHW023000000GP@NnYW9000O0000
+2G00WMvD0004231804188000ur0002400004G0o000KO8041e8G42000I07XW0cW12W@@PW0
+m0000040WcW0W0206I8A04a2m0u3G10B4GGGW4m0mnW9G1504GC06000XcIC0000X004C022
+0RrRmrsOy@F3004100820001008Y8002WzzD00m9DG8A00G002G00G00W80400900ICv6y4l
+1XXd00G0000m0O400001008W4G2W02480090W00208158I008000WW084010200JfOmo_600
+wF0000kNWf0000eNhmGa_I00001GY0Z20000c00B3O00W92000fI0000aJq20000W40m0j60
+0Qk0J00g6ex0G20nU100simW@@D0C0000GN421W0200G840qB20Y1wlGl0480i@YG0Ga40GC
+210wB11WmkN000100020010Ax000y10u100C30H160eO700smF40GL0WwE0Qzc1000H000Wy
+I@1WV_3WYxY900m2NHA0000g5O0p200sr@00mrmCqWV2e200_@F10Gm0I0o1b0a2A815Qc73
+00008W0106120C040O0O0m0C@00O_100Q200WHtV604P0eyV90020CUR2e20001W003G6060
+N000L4000000gzO600030006W10C0C0O0_100m00003b2W10500wGnWdfJ00C181m0O4u7e6
+8ImTGa2uW87WcHE0@0V0U3_1u2y309u78G0000100W20020AxC00yZKm086V000W0oVs0O20
+0Njl100u100004j_@100wpNF00zz70z100WcGz2Gr@1mD50UYW030u000208W00GW8000I0C
+nf1hmL1cfgA1GLL2Yvg44pCB8cP6LggAggYGOcPGa0a04200S4sFno@00004U0007NxqL_C4
+JTBRvN1010000YbLSVI4sFSe7I7_J2ur0W_yMAu@72_6cq1JeMz400W0000Wda00GDy9i3@6
+ffF30A0WmvDO8u464t00I00@knmdwIS8l1ZNb000t3A0002W00w7tWsrJ088020G00O028Hr
+QmTr9C3d10401cQ9XCvD0004Gky60100000GuUx90010X0000040G0800XMdGnxC040G0000
+A0000G0GG00010100000W100A8424WSvC00000eg3020080180W0WH49j1G004X00W000220
+0WGOt6y6Y10004sAp0800000K0002W00a0028W0W000A28220HGX8200G410W0000G1eIyJG
+00Y200001W40G0W0gdt00050TgRmrk9Sxl10W007io000500800G000028044000000CTX02
+00H208W000Y0OpT300140003002400G4004G0VmQ0G0000008lbRm7q60G000W0GGfR9CEc1
+021GQ@NY0kVedT6URt002000040gpF10G080Y0Wo_F100ijXQPGXJ600X0OSE302001G00W0
+01KNuCCJl10G02A2p0G0W0000204W00WX0Y0084W5I000a0Vz72020WMxV00400801WR1I00
+0Ymf_6m0G0u@V30q540W02O3@4gdB14120XupmypFC4M20WW0cUnWkeDu@@4EZFXHChG000q
+@@9G040PcV3G000G40006020H0101010Nzd000eQ50000280002G0W82G010GH@9ysW10120
+@tt00G01Ryp000200005o00AG1W08641OmD3IMdXXqC8v5FAft08G0000010a00qVl1VhP02
+04000200848100000u370400420180000W4QQ@F10Y023tR0CG0WkbIe@V3ENs0200WG1000
+4001G0800W1104YWxICO@TIsxtW2@D8S@40WO000A0440200000O01040400080W0080G000
+0N4200080018@qF1040W001001W44mW102002bdX4@DOMT3Irt001049o@GIzRG000010GmX
+b9002000A8400081G20G000e382I8G0W8W80484608G0e206H120000WW_48014X0Ag4000W
+0C0000200G4W005WA8b6AG81140G0n0000f1n4k8q0000WK8Y20G4K0G2XGHW04QaG4000A8
+400ggoW92C00a0m9HIydl10024UqF100W0040200002W0e28000400G080WG0K2101012A00
+0002004000vY0500X8000G210Y22g010X@@D004200A804008060G0W04TjY1Dzd0020G000
+W08a10o00YG9G0GO020a0a7OF9UV3k4F10002G000e40000HG000000I810eaI00o008aAit
+l102000JK0CRY1tWd000W0A0W0I8148bK00284YG0000G0000WIbtR0W002o000KY40X0200
+1b802bO60KI90000A920ogz404000W80Q7F104G00002eW20Sll18aG0G01A004qW8000D01
+00K01000euE00CLk11zp058WG4278010W046OKPU208000204G1n0200GW0X0110998GHI08
+00W02000008G10WW@D8LOI000CKxT201000GG0W20B0880b0010080G8000kIp0081G09O00
+0eUKpl10012W02010G0SbJ3G00G020010W0188202e0AXrd00080n0G080m0O022mCCYb1e4
+6YX104N000007sZ7ZHT91G820000H0WG06020G05m0061009W40H002a08W0000RhGM@l100
+I00G40G040001008IY0C0K1440W0082yhZ10e004001KwX1002W006W140000006G0008890
+G000W0G000218T4IACXXZzJ00q20000G4GV400G4zI00Cul18600000c000WK6G0mSvC0W00
+000a0w30020uBFhR000085G000O5O00000K00AGE300zdW0G0tBqV1W1WSl0401on002GV@3
+00LUx107DWAsJWPc100_72l3WCc9Wt1000m000sBG000000@J@@20mL50p000uRFwV3W240S
+LV200WF50pc10uB5c000W0gB000000p0m400CGE3yF0000000X121X36225A82A81rsdmpR9
+qXU500300000Lyj1BlQ0g00080sP00G0000X100i600m501GHWA660C400KH000000u8NGCS
+608000W18Ifw60Wm0006300C3G001uC3204000cnX1G00001m00102060N000T012m12C0D1
+O0O0y0G0u70G0tdiqX10uV0U@t000Fzpzp00@300000aH2CWnQ_h_00000CC000AsJ40mcP0
+WDp410005020000GLG5W3_7WgeA0ggA@1000yF0Cp@XyJG00000WREcVEX0Cm088118422I8
+42aW4Kmasd90I32MqZagD0002ROuKDFK2Hjd0000IG00W5GR0810I0204W00000W0b2G2002
+0M4sWK@b0q21G_RRKeU20400g5wXKenOvuA020000G000G00000200180088sxFXK0Ie7PC0
+00mb_h1rRdpqTRiQ_3HMPG@z6SKW1p9mmkP6qW_3PGR00W0t85yOL@40000DpE3hGZ100KeL
+sV00C8GgzC0G15008000001000W000MAyF1180Y00140400lwj1rDOmhx60WMHur73W000G5
+40028004GGWKoD020W0W0008003G004kmnWhrDep53AN@1000W00201000900W1400W011GW
+084xnR0084040207lO011GG00080H00000WW40408010000G00C0028002W03K008KP38ie2
+Kwk10040000WnV00uMQ308A0iOl1PQO0000axtD0304040a000090WK0081W0100028108G0
+0024W05G0000W20I0O_V300012300W0G1ILa608X00004000W030G0W000_@r00W5X80m040
+00010Wu2w4020000400Y04W000002000G0aW8044mR200eS6Rt0000G8800cpsW5WDOEG300
+0800180G0GGYq900080W00400080248010000W0yeg104001X00bul1000012W0y@l1001GM
+fF10W20Jxd00300808obmP00W0G0G1G05K00440100000I0Y0W00000WHzR0OK7XtjD0A001
+IG008W00pFOGoF60000024mGA060Z0W100W0848004012001wopWdwJe3V3021WqkV500080
+041aVR2tpc00G022000C000MktWgbDOWU3G0008G400W800000GU2400000880WjwV5hmP08
+08WZyJW000mzkL4rV2rURGUvIS5E38000EztWR0DW0200104WftDW02GoFN600008tG30Gz9
+0001G4080080WuYa002WGg@608008gn4sw@X5mhOKV92I9XVxD00C0Wm08WFzC090W9WWG43
+084008G00801008W400000040008002200000aX0G00H420oelACOhVC0101_pj43WJI@@I0
+H00010800080010ONxR000W80084GW92000400082008GeU6aqk1000mbQ41yoV2C100UMrZ
+gyJ8sV3YsyXYzD00100102W1pV00410W4202005000YW0W200f040q8A2Y080W0044G14mKJ
+O68WX01940GWG0108eX200Y00WK0W220G8400000oQW88W9AG2Xe1000HKKsSLq_l1440200
+00800GCA@76Vd120009xdGBwF000W0000240Y4008080B40WI10100082W0HP092X0f0040m
+41n024e1419XA640X0052KK0001420G4000000C35IG0240n01300yVh440400004G0W0480
+00002nn7Cu1g4G400qTc1v_Jo@@CWK00WB00000008eaI0800090A1001IeGY6b04O000G0I
+12okE1008G000eW2W0BJ8GWIA12008aCZ2PFT3420Qbo930G9080G04Bl10005cjjYUzP000
+G2000eP5C0148240G1EHW2W0A8e0G4G3X0008I0043I0GK05wP0480000bpW0G04A04WW000
+04HKulRaBO2zsR00G0AX001rUR02001G428800HMvb400O8@@R01HGE3W18091O080KWG8C0
+0fO4A11900000e02QtpWY@J0S9F0n05Wk9CGW92mjyR4Bk1000S0800008G000G340208620
+0001Vzs088004G00s_V30G10nyR0W000000A010W0OW00Y0409W8050Q400W0241100Ka0X0
+000008e000000H20aA000WJM801W8920HIWnBD8WQ9000G2G0001C00G4000Y004101000KH
+0081210mJw6iwY4BlW100G0I0000008000800AG000WjN40000100180G39K04WV11000W0m
+40000a20060r0882000OjGV8000aVf@L36Us3W00f00800C0000X00DI00GGt4K81m00K2op
+t0010CAW00gBtWj@D01y3mw@60043G000GGw9000010005w300040O00K01Wd@J010e4U300
+mCB00048000m3z@PVJ0i61W0KLN1yl@0000uVz0Krl40eA@TU00j5sC7c@Geu60200060400
+0C000W1000C000k1C0K4m5W1mD20WV0008000WY000g04000e0u20000W2200000Wn@m0006
+300q1G000uC300ccJ280O000G00005000u20000W1GJ000N0@800S100W3000Q20000youC0
+H00YH00WxH3fGV30Go10002000YC5qtVUZCW_C000O08o@0_t_0W00y7WbsP00m@eV3WHl7m
+t_sN000Lr4r@30G4HgxF104L00u10IGzaXjtuvvDs0NYT_D08l1GY_9SYc1hXNKX@6yz9602
+G0oBd1020220G0080000408Ue42lE1000CM500sCVZAqJuTE3UIZXM_D0WG0mNw9K8EIRy@0
+00Oq6ZuP2LF6htWkfU0100GaU94fG2GW082znW5JVejV30Qh0K8U2020063@XSnPuvV3YQ8X
+t@D0002o0v9iEl100W0G0K0010000W0mIy9G008W400m@@6e000102GGWy68000000051140
+00004400G0000A000000q5s6000002010000MR1200280000000G1W800mGT6Srh1TrP0000
+etkD8mQ6kdp01000xpO0100mPyJ000230000e028fcR0G10000202400l7n0WY8W0W401140
+201863028G04004WWW0G198W0IG01mW00011041220000W00W024012002000MadpDOUV300
+2W0Y00iX@40W2ey@l100O000GWSYJ2jkQW80000024015000008802W0008W2H4X0002I00s
+rt058005cP005WW8tC00004G600820G8W80402100400G000184O00200XG00002000220G0
+0016WRDC0G800G000WSD0@xRmv_6W000W001GVy9e08000000W02eJsP04000020X1tD0403
+C80000G01x@R01mW0000005O000506JO2lpR0I100000800210400182010000e404W01000
+0WX20W01a008e02122003000W4W6rA10240000euAG04pb10080G2000AG09pU3UtoWsxD8B
+T3Ay8X0wD00q0W000WuuD00G010G00m01W9qR090400204DMRGzs600018kU30094i8V2Vyd
+Gcj6iGl1000GG01uyHl1bsR00WkU088000000WG90G000W004330W@@J00600000004600G0
+0Fz@Xpzh0000YGGWZH_D0204100012224G0000G20801000000420WsiDG000a0WGG8W009d
+d0000210000O40kdmWUsPGqA3mGx6G0000W00OhY6iTL20OI00G0000100008I1uI43N25_R
+0000oC1D0HW0000I61G0AW1200G001G400021090H0G08400H80004020W03H0Guq6W00000
+08200100W0440040G00I00Gi9T3W0G820002000B31480G0W000001G0222W00080O08WFbV
+008Gn3zI4jt3004HMvt0004140GqI_t041W0R8d000W204XW0002W081060000010000IW81
+008008000qNl14000000W000G02m0004GaioC00mnA0GG2000G0180_StWc7DOA@4000GA00
+0W800GGyF4Sf1b_R00081G200000GmW40800YY01K4OeW2G0a0G00a0G100W00012W288201
+240qX44888420K0a089242K4K88GO0004088200004140W00009210UA00X6Y002KW6C1020
+20W0000cO2113Y008819X0590W440490004G200qxl1O05000G00002G00820e200450ZL@0
+2000G0000W1W100G8G0a16004088G231021eHGGW2J7191GIG2In288302G4G0K8W0800113
+8G2AG252W1400040410Y040W04410W00008Y2W0EW000002O0G00C0004004gG000000WH40
+O2WG0820032G0G01mGGHW5W6OGO@@48800GH4e1X4930H0WsyP000mLAC6K_F30A0208ZS00
+0008020500WJzD00909nK005008ViPmgt6GaYGWI00000000f400008bWI0000W4cWe40W40
+0WWIK2000GWHG100004180K2000N70040G0WA180040oI0b80G4802G180U@t008W1000b00
+002148W20Y00045Af4a0C080WI0000C18We40G0042W20200aX80I90000G014KI182W09_R
+Gp_6iLF30000001Y0008429G00G0Ww_D00Y0020G108Y0hyRGd@6W4m0000G00CH44000WEU
+00Y20202800G8200a0A11109006yF18W800W05e00180000400020W040W609CJH00001Wa2
+0400041WsLDeDS346W0Y0Am2G1W0G000WeG1e0020AWWjjk12010000WnG00002O0A281Q00
+1804002G030OG40118148A2OG00K080N0008Y0G00N0030G00J4000u000WmP024g022H000
+89O00YIWG00fKYU200028800apX10G010100Z104a0500Ge00H0040W4iwet010G0W1O00GG
+8o3i0258WMAf600004G002040128G0000008W00000W41000011Y04X091048W4E3l10K00a
+0000H200G400418008000218000eSul1A00000y12II0uUU3W04G00014G02qy@900800000
+24G200W8804H028t0G0W0L@RGK_9qTk10H00000X0K08a000Gzx6G00020G00000K9Ge0008
+0Mkr00800eG0402olW290620Q200040800020A002WWyNe09000WV1000008440USo0l0000
+d0OK2001qL02009021080GjC004mpfCX9yD0j1000081KS2e0WyN040030211G0GFR844W@2
+CA0000Q201000010840ey4422wUv@00o@1WTtzW3@ZfC_74000O01WV00000W0anC082tz@U
+V3uv2G000m@0204tjTT30qN0Kxl108y0eAp1000mK000WHTNT@70SYB0H000WAkt3mhl20LX
+tVp3F180OAbP0_w@00AzV327t003nx00un50o0yyl708284000000YWC000C000O0A0G0m0e
+2m400030008300020006010g0O0S1i300u60006000OD0003G10N0f0L0d100E30006000e2
+00e3O0GHmF0LWA000p0000000YS540003000L020D1C4O0SD00uY_yF100Wr000L0cP00mG0
+007000u200e1u0G3mLYEWBC00tG00myB602W106W42l0t600U900W_50L08W000t000HmKV0
+000yt@0eGt1W002Ww0Gb000010W0000WyL00q6k1_50000G0WV8kJ00zb0OuS1ytV000008K
+w30000eq70mmF0000008E@5m@z3Wkxc70000000mdV0PL@00U0Sn3050FW5wzV300Em0005G
+6H047_CfsRGuSR000WAnh4EssZKmnuy@A00WG000000O0uWb9K@F3lwRm4S6804WOc@400W1
+01000002nsu6K3U200k6Vz_XSTP8E@4QuF1000CpqpGau64BE3j_R0012WhqN20Q2meUBrUE
+3000K29EXLiPuu73YLq00802vid0000G2W0000001420itE3000Oe200afE3zeRGkwIywV20
+6G0_0FXw@DeQT6004004009iA3Alt0002000500W40014280m4K000S7V2H3R00010W0GG80
+0HUYoW0ID8PU300GlkRS2laQmke6awl100200001a5k100410022Ksl1A00000002020OlH3
+cnp00G0W8080dht0020808000AYW200GOeS3G8000W004040Ov@600G0040000H0022800X0
+0000000Y4200000510W00084004GG0EtV2Wu50_bt00210000010015Bl19hd000090401Fq
+d0W14200AWG0GK00W0240010W0gG10G022G01GG000005401W000000ajfD000104000800I
+010c1G01W1W00200400000C00040WYK8XtyJeuS30008DqV2G000000mfS028FV30421q1@3
+3xR048a04002000GG00HG00W2G030GO20W0800502000401884000403020181000W186004
+009e7300Ka020001W0mk@C080W9x@4008200K0QfR3008O8O02W00f50W00008G0W1Eo@F10
+0IPzzRGW@6080005G000H0Wc@Vexu70010W000080208002W040010WkWq02801@_R000IWw
+UJO5@4gCt00W004G00ob@148417gRmVX9ikU280000N204pP80212_@t040203@Rm9sF0W8W
+OHE300100GC0WW2G0W00I000G0820sA_Xf@D008a0m00W3yJ00002000oywD0Y90Gtk6KzB3
+600G0G42akS2z_@W810WhxD0080mI76yTE3T_RGos9000000108003WNwDeLV3E_MYN5De6x
+46_AXsrCubV3oBd100e9d9dmFrLKPl1LscGWrCabU2ZCd00O20a1G00020001IW1000W10GV
+t9KVU20G21wpF10020000H8000aql100W40040000Jugw4wRt0WpE0rew1082XyKDOTO301W
+000G0g559Yio0G0208W1GG410e8582000X80000640G000YAqWyAD0220004G2X000fzR00K
+Y01008GY4a400We060K82006209200CrXPGKX603800048HAz6yyk1HspWO0008I0G0Y0G01
+0AahS208G008040002AQ432@t0002E0108G40e022142L010Z00G8a0Y004_Sd1020Y00011
+0Y8004WW008GEk9002800022H00808WWG04WG0X0aul10W00001000mRc001041000200Rld
+G9z9aSY100G400Y0W00300C20G24Ww@D00G010W000m000000000wW400014800O20L980G0
+00ICpWOpbOIV3cEr00W000805e00G200QYI00000H001400418XaIAXe000W80Kv@90Wa001
+G210K2WntJens70WI00080O0S30000H10W4X0a0W0008004GH90000000bK00G200D300208
+npRG0JOKUF3xtp000W00e0620X0G000G006014e040WWb5D00000000MP008lsOGnR6KRE3j
+lbGDz60500uLV3G8040000Wi01GOu6i7l10008E4810800dQcGLw9atZ1ryR00E00000K0A0
+4YGp04100053m0260H80W02000440422G3000GWO000000000VA000c@@D02W1m9j6y4E300
+011G00800IODS3Yqt040800000022m_@l10E2G080K0Z06041S06W1WZZne_73IPtWVfJ000
+4WI00480K40aGe0W58008201040000W7wD87V30Cu0iYU2HLOmolISMb1lLRmgiCSzV20m08
+000X0400eh73MJtWv8gO6W4Ga84W00000D0GEH600gK06008Je9WOuC00001G000m0003LPW
+e0A40800M100Aor0m00000K0_Jc1000D41000814G00120c0mP_600eA01W0kL8m0020GU10
+0UvnWy1Cm@1ul@3uV@pF00W@@Zm7300U0X_d0Y1500yFc2F0GPV0C020GWY10Gjd6008eu1V
+300mKl@V20mypRzN2000m0r_029t002O0ZvRGGxF4di1u60010Lr900286E308000m0WOSV3
+0G00qil1001000602000IJ0001000G000W040W183W8mE000H4008800Wn000C08080SJ00G
+41mw@60iE0eF43000O0eo00m11GOuF00C0pH00e00003000fqP0C0g0O0S100ym0003aId10
+10C0_180m000GC100oF0hkV00cPy100yx@1000000C08000W@fAa0@1000mVd2GrCtPt0K10
+0000001G1000000@10LXF000W@000GPF00K_V2k0000001GKr1000Gbg00WB@b0y0000e0S1
+eC00000400a30OX50P0Gv@F0W60000ul@20W8gNAy@400e0s2tCNnZnst9KQl1PxZneSISyD
+3r_Rmm8C0g01OnRRk@d1008GlXR0002YUxEvzWJM@tWS7JOSzYIJsW_szu7_AYXdX5YCOou4
+004d@3U5zoJIKwC02G00001mZ2600401W000GG00000WPNRGrK9Cdl1dsRmUm6ij090gU0At
+t04W105wBnP@60G40Obz4000800228dU92_t020242000W0I000K020W0Gc@6010W1080000
+90H000FaaGuXLC7g1txB1h10W_sV0G00GRC6S1j1RvR0080aQpD8x430080e8G102W00G00G
+0028405G2Ot0Y00G00W20C0000030W00001O000W000K0G0080G24OlK30081y@F3hpPGHZR
+00WBu8C30018apF30W2000000060eVU300500100CtV3m004010004080W000G004H_Rmqx6
+000Yu2V3010K0400O9Q3_@FXIuOOciAsc03GQ20D_pmVz9iwF3BHQGNb9Cel10070Vvt0010
+0W0011142008001W0e014010GG0m800O0GCC93fpOGF8RKKS20200k_c1000mk600Q7X400W
+00004MpF100G20G08o9t000100G00010W0X00G010W11WWw@D0001440G080000021MItWeF
+91040mWsF0WmNjR1IYdDXw_DOqy442000400010800000HG00XgRm6v6G6008TU302580011
+000400I0WCqnOJXAYzF10EC0bhGoWqC000GCcV6G200CYk10W4GaWC2G00004020QW0W2qVO
+CrMwCzX0bgur89UutWeWDOj590180aJX10000810i060W10000GY12W0896000W00CCRU2HA
+4IXEI00eqTdrGwLoWowPG000002100080Y10001X004020G0W4eeO8p4G420XWW0W2Wa0A5E
+GG024G00000WG4001W2002410J0mkVFSWl48W804080W4008yF60TC0qcF3NpK10W000030G
+4004eW00H0002008400140G00100G20X000G4026000C01080aW4IGH804JR5xtPmOHp0000
+Lk00Ga@C0010OVS3QAt0W000K2I00G09a8k1000500W4qsl18000e40S0000W20100001020
+10820012A10W0eN_7M0qW5agevNI00Oc_z_3000Ys_F100X000020W8001008XS36Np0X000
+00001504y@l1800e0W04005106418490WN_D0400GT2Cysl10001kAO6G720@_@GI1CK@l10
+0Y0e400z@V2000EW9000WmC0411000WWOuD004X000009G40020W4mG200O8uGP6kNoZUgz0
+000Cy10Wxaz010000G1XctJuQu70G00y8k1000W100W80G200000XG0W7bVG100mFA6SuyC0
+0oSIsMYE1I0003000080Gj4004mP2120GWW0100Gs_60eI8080j2880WmmJ00004I8040jo@
+2W004mW3YA00W_@@F0000SG10m700o5s000WlPdi100u310mYP7B1eZ6WBb@1001Ue_6W0@3
+00c1GCS90080K080W000m1tO00WAJDrXKmw30008s8bXCuDuVK6e90001mF100JK2S6apd10
+80C00000ym0004000G000W1m003GD060A000rG00Wm3G4Y6008GS4zevd7XE32m@@10000yC
+1eiRO00KR6g_300Y8_T3ZOuC0000WA00WmQJ00100n104e21KW1mW400EaRK8bzGows9i9k1
+WqT0k67ZwmyufEgYz037900VbtIzvCKWkAl1vnD_U00uaSklewGvdC@b0Cz1mP4p4CR2hsN1
+eW0WtrN2000EZ00Wt6ovT@D02210002W20YGpz60W00001WmZ6s008eFTZJg6oWJxP0200Gs
+Q9000402AWmx_6iOl1R_ams@9q7R2vs33Wy6W5zPuEhDUr2ZFdJO1O3kwt000110000GG10b
+n59bTv1000Mi100fzVY000W5zP8bW4E@t08802zBbJo97_NmlzBy@_4@dln@tZyVzA@7siGW
+00000q8SqxCfty@FPc5Pj4fYPJwQ900mxUZU6sltWIkn000Om8up0001OnU62nrZ1zh0mQ0G
+8_9CvT2020WQ1dXtlheFV3o3FX8_DOLDRM0F4@0001Vxn8Ud0GW08QSCQFcX85c10WQ1W00W
+moJ8pV304W00G00ebXGQptWhsb84S302000480e3z4oKFX0vnOdx46RF10800G0G000000iL
+0iSO30000240100080G000000W7IyG7qC0400v@V30200cKU2800e44000A004W004G1240W
+0GW00Y000401W0000004W8200002008kYlYhvb0W00oKz600G10000Cr1000008014K024W0
+0G108002G210W000024GkSD1W00000K008002GG1H10000000A0840400480000020800000
+G8A00G0000e400000Y2WG002068003W0002080000050G00000G00100hhBnH06KXl40042A
+Qt000GEv@R0280G0300010000W0W00W0400SlR6000X8wD3I7F10040020102G0jRi10G00W
+00000650m83000MXf_POEE3_@t0i0000000W200y@F6xSpGPl9008W10000On320001W0201
+8000680400A0G04m@@b0001A0820W028loRm1z608GW8V@4szt00084W800w@t00840D2Rm4
+s600G00D0000G8X_x3100001u40108W000W4000000W2O000Y0WWjxP00001m800S010J_Rm
+m@6KrV2ZzR028W0000000e00800y5D3800W00W00H000008080SIW00G4021a200G00O000G
+0100WwU91008200002808vGR00clpfkJ0W0400O0G080070C00400002000040W020000X80
+0040002008G040g_pWw_J0WW8mtw6W8Y0G000Hvl600W4318204000GWW8C0I0800000WJ81
+V3sNdXpgt00G84C4808812200008P01008200040120440O7Qd0X00040410G02000K00200
+0W00G20021W00000O00K8000004G0060W@tD020800W000X8000000Ga0Dpl100010064050
+04101WC2G00001xS7ozX600G0eXV3840000002000j510WqwD0284G8y6q2l1001080080C0
+048G0W000G0022004100O04rl1N_p0004WU6C000Ic0020W032O50YWC88Ya0cW84g56a06G
+fG48IWfC004I10001C0mEyRG80009000W0O40101K8W00Gm480I100mB900000G0G46G2Wo0
+X0A4000W8004102808410182H030241KW80200241210Y00440Yqkl10G0001010e10080HW
+0G04800G0040WO4O000K404100G00280Y82805200A86A08aW04002544000W0oU8400W000
+G6108WI6Q401X204000GvXG0W8H000000G800400P01020400GO04230G8WW02382W0W00W4
+G0200G80288Wa0H00W28H42G810G010W00000XW00140GKGY0G4Y0HW0a0G8600J2G245K20
+GW00@RR0002806102000suM54W00BsR008080008K600090008W8G808GU7Cyb9300W4wPn0
+020G00J00000H400uqU30001G1b0000a0X000G284000We0G0G4W00100KL_9002W86@DI_d
+1000XzrRW00008e000000014000uA30W000802404000400X80G0Y00040WH00W@cDOqV309
+K0W000W80000W0WfjD83V382204Ll1p6R0W0200GG9GW00A@t09O38000G00200WA00800ms
+964lk7HwdmkF602W002000epaG0000mGEW1040W0G0010a0284Yr@D00042I0004IW140W0O
+O0010A40040000W4220X0W11m104W3100WW000W0IX030EG20420000210011080W01000W0
+08MOn0GH0WXxRGUKX0W00000020008G000006010W20XY040009m11Xe@DW40404H8000I00
+001lqt0220000008O0000K005200211020WW08008202A000eDV3o2mWr@P0jX00a0i10000
+44044004J2000IcG8H00WsNC86_G6Sn00000000Y1WG002J000WG7eW0000e8@wRGrJ60GH0
+O@V300W00200004S22100l030tFOmfw60E00000A2AC0G00O30000oGr0m0000G4I500u9W@
+@30_xF8g2U0080WCm00EH0u@@30mgJ500WBV100Hd620O7KsT300W00urJ0800008PGb00WP
+10Sr08000AkopCV100K50H0G010WW2001400200040022aW2C0O500G80Te00000llQs2300
+0H804H400o88q5WU@D00K500C300G500G7m0Wc0A4k0KC00ea000o000m000W1e00003eQVI
+00202880K800eW000000Soe0890LGG0C0Y0G0WWm0G111GA02140430386060E0C0C0w0w0W
+0iJ0n01121W042W10503060608880GGGGW3WW0K111m0iCkDG000a2000o400080Lf20g2K0
+0WeG6X0u_V10A000004m@lZ0000Tn0mPidWRLz30WYh0W2000TjK50u1FGFu1LVm3_7W7ym3
+0fgg0wX00q3F0ePcX@Fy0LLjA_70GKLLWKbP0PcP0oCpOc7UGLg2WPC38LfAG@p3W_700Lbg
+y0SixX7G68i000P80400G000100abipX000p6uF00_18TGs2yYX6UF1000an00WOvmurz4w9
+pWaw2vNSagVd1080000M2Joxabf5A9z4010GicVB0@A0EU4Zm_WPuy7YHF10002XmZHBwX0G
+0000008710W@zDOiV36sFXWqPecV3W0020000400A0004010029c@mPNCSv_3Nh7I3wCihb1
+7wd0G41000vO010L0G00044mejE3gnp0202800008W8A04404020W0G0G08I8a10000W0W00
+00202GkzCibe1pwdmHtCi_l100X0QctZM_J000WGvyC00800W000Go2WJ@D00WWOQO9S0m0P
+_RGqC600040W000C64gywD00008020mE@POgZ4wSiYFy39v_D00W1000W1jG0WA0000We080
+00Z@F1040W00010021G1080G04mZJ60W08000050GWWE0Cuh_7W080acn9HMUoz@9008wOKI
+3g@t080000040svaXGtJ008004G000002G004a040aWk100G0W0000001uyUF00G04lVB5hR
+mmw9OwK00004W040000008W0CsG9104W000100002m008000mmHA9G404u5U36Oq008000WX
+0oCdgBFD0WW00000QpX0882400002W0J0000G83220c0010003G200000OW000808H002W0R
+Mb0000jhfCW0o00040020000003000CkkUKW00Ostt000FLXlR080820894TuR00WG000000
+O0A8040qfP2G01W2zt0080000Y0C800G02G8BU3En840010@wsou460W0000G1100000iD20
+0905008G41806O0055W4HK086CG00004e04GW00m0A0G00G0Y0800K001O000m8140GGG108
+G8e0W80I00W202002009000H000Bl0p@@R004100030W1008000000Wv64GGG40ae06X0Ha8
+0e80G4020100G0W6W6000258G8002G0H40X010WA0240040G000GmW004b5WW0e0IG018006
+1008o0200022rqWczHgxG30000G01000mwD0991G0W00208100008004100004206W92008X
+YU8XzSD00c20140008200G80002000402080000G80100L9Vrhg60AVrm40040H020e0H000
+8e0440000060GW0400GWX24X80004A000000WZ000000042G00H000003H000410G800082H
+0a18e000SB29NA6o@@9W04000004000aKMCOYH30H000000204302010708O00Gm004W9m30
+218O01100000H04CA00W024m20005008A01O000u2016H008200G04000007100jlHo@@aSc
+d100W00W0GY080000k241HI8G04200400092041CPu40e020G00000HGKj94QA35zo02m4WV
+cV89RU0100Syi1R1RW4000mdDC2020GQ20y@l100k0W000Q5w100008J00W@@D0C10000C14
+60000W6AgB100080s4O40000mL08n5jIZs0LxV00800000e2000000Gj03W2S600T7d0000m
+yZPG0q130000UT7300G0uRd1Wh00e6v40E004KE9ZFe2L00000O8000000u7A9000N000004
+0O0G8m0WW000W1000BRE3000O0WWW0011GMO6008000O000m0GWW10030WL00088008A0300
+Gay@V8W6Q0_@N500GLH5O0W000mxF50WW20G000W00Wg_LTOS60u00000402k10SnWk_40Ru
+V00qf030000T30G00tBN04S_uU6GT008Px72P2cZkDegxA000WXS00u_J6UmnWiOQfHU9UbF
+XWvt0W01GZu9qWU2fWRmguC0200000FImRU4P@3ZIdm7KO0400uCT38000Coq6vc@mY_OCPk
+1Wn10AP@XQqVO_f704W0a7L2Ra9HD@gy0c1TK_0000uTsb0000eW10Wn@f20W0meo6KTM2js
+RmSt6qpd7vKRG3_6000100m4uEv90000420000G008180@LRGRy6W000uD@74400CWV2VROm
+m_O4mr60020cqtWJ_PORQ30X0000100e88m5m60eZ02A000008408W2000G0W00804020W00
+H4000800a0400084040WH000mM16iUk10120008080019tU60O00008WeZk700m0CXD3pz8H
+ft6alF3W00I__tWecD0000ggX0WpZJ0W80000O00404nZQ00008020GW01010W3CuV200080
+GG0_Yk18020Q1dXLz89o@4IwtWExbeiL3Iro0800Y000000mJ10A0OTL3e000020G000G0e0
+00040308W0Mtt02000R@RGCR9S@l10W0WUvd10041000GA_sWq2890S3kgFX@@bOsy40Uv1C
+zl1T@RW000WsoDeqU3W028W00200008400H4200860000080008urG3I8PZPFd9jS6cud100
+m48500A@t001405_R000O200200108C202G00200000W0H04W8800W0400Ca_l42000Ahqcv
+uJ8rU3UzFXVvJG0030062000KmX@R0W0G800GG0G200G002000002GGMx9G630G000GPwCG6
+00eGzJYAdX3GU8P_4QVFX@tJ8vT34800y5l1WgBG6eC100040020H2000GG004000200W6ED
+eGB6YvCX70EOKV3IsAa38Jet_40W0080008rO3G008000000GWm1@C00O000G00001000_g0
+2000200W80W140G00042WmH00O4a000AW08410X4W8GG02800OHW0005000H000e004000H0
+G00WG0VeKY7kcP@G3o0z10W300000m0020400W60008uNWYyD00C0000AGi00002G00X001H
+W0G01W82900aWGeG020X00C3900G4100110G0009jIP00G00048008G0W800KeA9XXZHN_9i
+tA30G8YMaD1c200pdB1040041W0@TRms_60GX083JU6DV30820pQ_00004X000nEQ0000W5l
+D8rk40W20yve181000020iwl1KG00000W03008dL6QJn00O00PgJ2000g_@z0050GH0C0W01
+100G00204048120000zt0iRA3G00004W0aAk10Z000CW0000Y0002GybmiKV8000assV3G44
+0000H408082IO4000Ws100Ga00VdR0000G0080IXG8dztWHBC0282mw@6000I8a86g8sW@J9
+PRT3_rpZY0a000GxQF600ufOcz72Zp01002b4OG849q@sL00000WP0il@3@yO0m03WL_D0G3
+2mAx600L7WP_20RyFWesJWSG10cBmBt1WDrnP0000004WB41000WwddODC4100gOoW8uP000
+0n@j6SxL2t_d00C60000W2300MCW10W000030F7t0X00012OG2S603030000s_V9000W0W10
+mcn64DW1dPeoHjC0WD300000000p@gb000K400000u7W1eR000lkWxP02sT300@V10W@2WB6
+0000m9kO0002Ga2CWWR00TmuhE1GTd7000000iR0q160000U2met@ilV2FyN1ul4WMjL9rs7
+czVZCwI02000004YmlbenV30G000840uBj7MZo000000088000G000Wro00Gwu9a2U2PqQGS
+@C020020000001emrOeza7E5dXsoP8iN6_CFXseDuIp7I_tWX9P00010009mQqb00W0np0Iq
+ck10400JAWX1uVuJT90O00iTk7hxRmpr9C2t33pR00y2W0bR9AARw3tWIuD0480mDy680000
+00W000402000fYR0400GI000vVdmGt6000W1Z02mxx9quf1LWpGPpC00418KS3EPsW4wDW00
+0qXvC00W000W4WG00ae0Je2S3422000G208W0GZP60000108224004X4Ae0GG080082W0100
+0280W0002A2044000We20000202WG40000ah20101400040K0G24mbf9KMl10W000080G0W0
+0001mGX9iKK201G0030000G0W000miw6qIb1WG02NPH21000JxbGVF60480000A1E00YuED0
+3040GG0003100400080020010001Gfh60sfbe7G30010M9j1VWPmBu60002040W0O0008200
+0200ADt014000400100G080050000O08Wm_DeFT6Yh8100800010wHp0K0040000dyt002W0
+2G00000W0K0011000I00eA@DW0W021010000842040W0W4_e1Y10202000080G000m7I9iHU
+5@0ym3yCqYk15obm@@O000e4G0102801G0400800W0G00Y08OwZ4G00000288sx40800CLl1
+00oSQH7Z1YJ8R@4wxtWETCu@V6W00G00G0H402Gi_CaiF3005000WW04G0f7V3_gFXsyD000
+WIqyFiKl1f@dWvDK0088W00008G40q0d1020001Y047W10020MttWIoh000400H380000008
+15G00K4l15rc0m00WWfCeRP3G002Cpe1VPR008000G015pR0008WwUC050W000026800FvP0
+00004008000Gj400000004K0HZ@6iu@3r_pmag6CQD30040W0208200vjV36t_1010080G0k
+6q048000G01W40000AG0000W000X1yD00W10140J0000G044MEx10a020G00002000Ge2800
+GQ@6Kvl1DvpGES6SG@600200024021800e000400G8aWx@d00a0G00022100820000Y409W0
+Y00GO2020G000G22aW010I108408G82J208W6000020e000040010100D000Y02G104SWc1e
+0000pz01004G02H41W002800G40Gsqt000400W80Ayt00080W00000041004wZ436_F1We22
+4W90WWmYG008Y6Y0YW110i000rxdm1z600082010010G821088K8XH490004H202020GG802
+000GO000H2Wa010H400G00140800A01000W000P018ImqO6WA1G09W000004100G0100wNo0
+0100PlR080W4820YLI_GOr900014W0200HaK80GmG40W00W4W000Sx@AWG9000W0200W000G
+0Y0G0dIRG52646j10m000000100Y28004X82I0080K200Efr000KxP8p0104WF@beMDF0202
+G00GAxV3ktXXnyV0G0408W0Wt@COOU300G0L6F3W20000400044004W10K8X_1D00A808000
+m6F0D_R000840002W001o@kYv9nG10O40H01A4100008eW2a4nq300IW80000201G0KA0000
+2mI09000809100A24000G08400P03G8060G00884GW00400W0WBa04000I200m1O002n1GL0
+Jn08000SO000RbE100W0HEsIVl600Cm00000413n7zPuqt40804004201G050W4WePDG000W
+400WjaDW0060108008824G00wJs00XY0080G008eoG002W800020000k4n1bG4cCa0d1nvJ2
+080G098500044a0HS@q3pwd00W30000W4100MSs04AW00W020400qFd1rRd004XU20800s40
+Y3r00Gl0bWR0G56WoLPePkDQXM2000X9YpG519y@l10kQ0000W2t000000W718000G00mp00
+W@W3010W0200130026000C00801t0001WzZ7002000yT00010000_7rU20400000mG@n3WBY
+40kOmU00WNk300wyF104WSW200I18100WL200Wo_@10SM04HU0sEq00uigy308yH0AKuV2@i
+P08180G8GGWG080X0G0m1m0W1X1G71206046808C06GO0C0a0O0WWm0G10102221C6420284
+06WA0C0k8O0oOW0WW0X0000GIkpT3W0W000010004odsFKZh1tpRmKL9yi13xLP0808400OG
+00GW_@F100m@00WguX70m3F0ILc1a7U08@3WPggA@5GLgILWyN00Lb00gAL1q3Um@@1WPcP6
+LL5GcP6WcnC0LLL0gggOsCpm3FUW7U04@308F0000q00Amd1sT30r29100mSh7WJJ@B100mz
+fnDW7100lU20UuE0fmnpNuO000WNv00Gg0vS@l40I00skEaRwP0W10u7wC0100vqB6szt000
+uqlspGyvI0G00erV6A_tWcrVOhC3whoWHidviz4c8tWpsb0mJ1GevRS_k1rapGNw6yl_3200
+000400201OljJYaF100e0fop0020WZvJeR_4000mg300OzDUk2SZytJOTC3YbtWofDG080Oc
+t60200eZU3MOo0GW849WR0400084009uR00WRC00X0ZObmxzFKtP2W0000e000000022A0H0
+0X3bbOAU6000W2G001024000448W02018G8WWW84G0500220m00A80W00XG020W0a0010080
+G1O000A2G4W00G8004K0OTU30W00aRl101W004000UT10001u6z9G040Old4I18X@@D0908G
+NS6000000e800004WW2000G08gWW00G148032G050W8080100kot00G0Gpyd0G0K0O080060
+0022000K001Q400X0G208000G00050001000400E002G0H4W000W0W00W0W008400G0G0804
+0008j6002G00G002G4A9qQQ2f@RGhw60086408000YW24000G0008000i4d1jQam@Y6S1W10
+500080100002W2801W0206G0PCQ001G00mG0J@d0080080C0GW0OIjrWOMD86U62XEXn3OuM
+U60040CcS2hzp0Y100000W28000040200010eW20104W034W02O0008ail1010GIg@10400G
+8G0o@t040W0G01000W1qAV200W00030010G000Y0404022000810G000KZi1WGP800000G2G
+G000W084000000044QBaXPlh0200mG36SdU5I80000008G40K0e00008G88GW00400288WG0
+0029010100G2004800008WSQh1ISW010000I0400W001G406C00410I0G20010aa0GW900O8
+WH000000028000W09EU3G000000I00W8mhxI0040W080040GWL@D8tV30180040GOuS3000X
+0HW0000901m00000W001000W0140mO_V30W12TQi12020G010014G0000XCC20G40O428081
+01S2a10020008G0090uvV300C_idk12020_oFXN@PORf7040G08G0000A0320882e0G00W00
+GGW0A00100X0Y408003TsR0401W2yD0W82G@C6002au_V3000GCFR24GW0ImtWz_DegE3008
+0008I8lV3Mmt0WX80zlbGGu94YV2Jv@mk@6qHP2014G0008SDU20G4088800045W00A14mG1
+0041Y04O820H008W0p0X0c01002W009W0006004820320488001429G00X4G0084H8X20400
+2W0GD222C480001X10W000K06GG0000u4A00002028W000G0aW100H0002G10000200G4002
+0mdUC00X0004002400a0WWA100e04WG9K00940180102G01WW41HG0YOW06000X4402400Ie
+4090802000W821X00080G4om8K0H5GWC8H0M0a2W0W8K001D41801HCA22HaH84200ZI8O64
+121000IGG9gQ0A0n0im00W10463000eK05041K04WYa0048W01200NqR00G0WpNDe_U60000
+28001AS000G00S808K0G0800008G8X0g04W0X4002m000W00G0009W0021KjQ6S@l1000oW4
+0008W0Wc00000204E00000X0W00W904W0000Y000008WG0000W00210O2028GJt9CZW1W9N0
+0410qOT2Frd041100f40ledmXq9080Q8sU3G20000W00G90m1s9000920004WK088140m020
+UBrWtxDW2K410202Ge0082000X20W2000eOe08080mW02JdR08WW2000aG0280G08014K0H4
+2GCu600Wm0000X6K0e4vO8aV30006G00801A000AAWoUP86N3000G4cl1WG12000100808MS
+3Anm002W10E00882G20G0a0204040f98D0000210148OW0040G8W8228Y00G400W8010H00i
+000G4W0W8000GW0620004W0G000WG0041G0808W100W240880t_z000G00020G080W000KpS
+2lwdGx_6000204405G00A8G8060004GA080484W0901002b0108W200820H048209009IW0G
+2100000G9002G000G4f800G28G04x@R000410W005eQG8u90G4G00800410WYyD0GOZGnc6S
+qF3zvRGU@6apV200080082qNK20044G04AY04009I144W2WNbC008K0WWh4004wMH80004A0
+500eAS3070008059dj440000mL8CiD6Aut09GO09knG2u60000Mk0100W2W4vIesV3GF00qU
+l1vtdGBn6SNG2TqP0HW1YAjD00G0nDx60084H008Jgr60100Wy000000108I420000G000U0
+0W@W300040StT00yg0mS11GEey64VOlh4nTf7WVgB0NuV04uc0SX8wGWRqVJ0uNNVIP000B6
+b701k1001Wx000m3OpV3000ntwl10700_zF10G502000000_t0W1e20u5H00u90200082vzA
+00008crkR006S90GB200W100mF03WY0kE40O800G00001100m0000100030544088004O000
+G000O000m0G02@s00088N9QGA0Ca0k1WT90c5F106441dR00C300e80001m0000lvQ23sRGY
+c60303200440088GA04WG0C0e0O0m0W0W10103222iV000W00G0_Z17Gb@0OI@@68e000004
+00mE00uFu0mp710euMkL20WB60G00mxh200G0m7m600040Tm0W00GNV60004000000xN0000
+040d82000Wds500000cnN02mx0O6p00Wmot0s150FS701u10OcPWyF0UuX7CZPpO6p0oV10q
+CXjfIE76q_y6dtR00WJlZmtuHj46oF1W080RIhIRq94Mk4VjpGld6izx607H0k0MY5UCODy4
+00WGS0l4PqdG_rgqEC60600IcV3000q_200YuM280G0xQPmXv6yib1lbpGf99auj7xsRmJmF
+4@j4DWx100lWpnzeISL2ONYvyJ0088W0000000802000008ztc1byQ0K010040WvpdmWr6a_
+j1G008UPt0mN5G3oRG5@6a0T5JLdGDuCKHk10C040008SCE3000I408000010W1008010W40
+8jnR0G000WAY040001200CXi100K0002010WO40300001100W0Pxd0I0WWjYDW0X00000C_0
+007SR080Gaj@D02m0m8z90WG0edq466p00008roPGFs6KUl1DGd000W00W01PyR0100c_yC0
+0040220G00002640000GSVd10800GA00e0a12W2008000GG00001G040AKgj10W100u00001
+200000001D0WG0x@Rmvt6igi1H@@Gu@6yXb1hkRG1x60802SRF3MTc1G004BDPms@6alb100
+0000e001400G002840Xy@P0I1mGkzOagj10TGGMyFXYzDupV6000KSiM2f@dW010W68J8RA3
+Ujd11G00R@R04W010001C000QdC120G0hrRmAR6iGl108W0800000A4OHT3QrK2000aW200U
+pNbSwCuxV9WeW0qzl10004500804G00000X90000G4400400m4100002W200480m4AD0000o
+c_68002014000O0840WG8WW4U_l20C0EVBnmgiOShk1000WMbtWlkV0008mU_6CXi10G0200
+169W00G0G000000iWX0rzp0400WywD8RQ60W40001WOjTC0z_0qAQ8zWdGRr6Czd1HnB180G
+48Y00JwR020W0000080701810ite1tQQ010008W12lFOGoyCG0008OPC000mR500OOo4E9@X
+mLVe_KF000O8G0408020G0G1W0402W1I0G000W2u00H0X0c8W2tD008800Y08G0G9Y00WC10
+0Stk12A40008K8000O@UC00qX@7j1G400MWZXuNb00W0GLn60002CUu7000CAO000m5234ZA
+2amO100050O141W0rX0ZKAe0A04n2001G0802W0W09WWWG008W1a0W08100YSt0000X8800C
+G8290T6HG32mP_9KvF30V90oMdX6ft001Y80W0HW010zhBH@@6044001010G0400030KI900
+2G0YKW0OzE3G0G8G120WG04201000120W0000W20000Iuw@4Q3t02002HtRmgtC000WrH000
+05012900T@RmbZ6Kwl1pw@0GWCamRD8SV9aW8000X04W4000800G0GM4C02G00512D404Ae0
+W000WW1W0800000OG10W0000X00WWm4I00800082000W2K0000G284me17qRG6_900u2c20G
+0c0138e003vdmUd6S9j40000hqCXUrb06G012000G005044001G4002GG1000WW0000m0000
+e000G1804G00W0304402n0C00Y10000Gi0uxV3G004jQR2W800YyEXy_D0mt910W1WlnC8_V
+3c_dXlMPOa23_1LYJGJ001009G20G400000040001I00I080880008G0b7@R02041000G8G0
+4084010808WU3UJmWaEh8uV3000GJO40uhp4wL2ZlvD00G002W400100aA10IMk292W0IW49
+GV00010V91E60uAqI0010W40GE@600OA1Z00e484WcUC8mV3YXp00K00ZdR00800010C0000
+0A4000e54n30800wb1uJG14000I060000050WoBd10GC000282ApW9eh000GB90000IGr200
+000ei3m0000K10pF50_Z902Wh0k2oWnWC0N1uFm18Ws_D000mi2000Yue@2m_h4WB0CqV5Wl
+V0oWNbZVC00K5Gs@F00Wg2000ImQ600p000O000e2C001e43005400AC00mO000C000G020m
+0W0e30110G7vmJ3MEo00006nmPGcx90040n800S1j6000WsuZ0mA060000MPG000004Z0008
+200W000aj5300WG0002Mpj1jWpGx@600h100O0eu00G1000gE000G000001Mr0MD0eEG1exE
+TpR002000eZ2y7S0uzL1iXD3uY10000Eo@00egu7o@F100es00000G0mhU0000_7_l_R00P2
+m020000mi3_b8cV3K0whB0828M_AQx7308013qBnbtI0C_08_VLcktWqkJuwV3_F0ZrsJerS
+IEhYXFvU00005j00W0zJOjV30008ykW4jnRmts945m3W020kCNYbDD8ZzM6sYXkyJ00mITps
+jitk4d5vHNya0080e5V6MyZXq@D0yV0mrv9iHU2GW00wgNYPaDO8T6E2BXjtDuyz4050W000
+00A00osx641C3TzRmFiFqR73hh@00100000ys300k@t00011DWdmHR9a8d10000084W4Yc1d
+3L120400080nqR0I0011008WW40Yjn00420R1RmSz600800202GJz6G0048tV3UtHY2mD00G
+008W0000OE000010W00004O6S3000W000040W000400W400HRb0040804Y09pR0001XwVC0X
+mWH4yF000W000J0004aUJDm0000110m5qC8zV340000400CRz4c@tW0zCOUP6IJt00118010
+003n0yDF3LqRGkt6Cj63W020X401apj18000EGm0000A0688Qb@10W00400G000109009pU9
+000WqCk10002UVGYs9h00005300W6zDG00gml6CCUl1pRRGD@60218uNV3ocaXWnDW000Giv
+CqCe1haiHz@90104Olw4gx@X48I00G4xM@UaW_3e0O2YHdXVsgW080801G026000W0048000
+401ez3U0000OGc0O@@AIqtWthJuhb4AZFXYmJ8d@7Umo0014W0002GHG0W04Gi8G300G0Kn@
+39QpGjdFCLl1e00001000000ZC00GmwIKbl1JpdGz@60W0W0C000O00WzyDOXE3QpK2600a8
+0Y4010GSIi1h1dGMfaymR2V_RGy@600ecEUrDoK8XumJ00040100G00W0RORG8_I000O20Wm
+20WW842WG0G2WWW0A800W2800mJr9Sso3@LdGUV6aIk10001000210X0eyV30wg0i2x63KbG
+i3900G88c430G0006208mU900WCOG0G5J1Y441GAe808010W9a01aDh41NQmvc60100enr7w
+CE1a000000u2ij2G000G0O000200G000202mi_6001G18Y0AD040404200G0G000000KSbR3
+I@d100242X0We4W02281W000W00400840FhoG0zC4bf1Rlk1002000cTN@N10a2I8eaI82G4
+10WAKld1K200KG40G9b0G28204L2G0000Y04b002G2I0KYI00m7@C0Wm00e4G0888CY82200
+000101W1000W00mKz9KbV2jG@GrkL02000060mUmI00b008Y0028004O00q00000000K08W2
+006G102400XC003G04000005040004H40G01Hypmg660GG40800100102020e004YlDX9tV0
+205GlECyuQ2B4p0000Kq00057B1Hn34000m80430G00XW10000G102I8u020We0400000068
+6K0020e0QW10800040WW5qB03IW0A4G9088H0004W80G042000R4dGxt6SWy3200402004Bi
+4@_d00WvqTPn000045W00WW0K090G000W00K0W00G08101G0050201gZAXxbV000GF00G00Q
+201HQ008_04000U180000056k1vUdGCS9i0z3H1y0H0000TE0JHB10eF2240uU1808G00861
+00n10WOGw5q7W020_NI1m0010z20WO0@Bqx2W10ul0400004020Tyd0GP700hEW04G00kx00
+000040eo8mp0W@1000000201000Cq600wWc400m@2e@_1G10mF008fqD00008C00Wn000g04
+0O0OGe2qH00eZr_S200080CH0Cyk10G40004000001080m0sF0100000J0Y00WuxD000wKus
+I000EJ42ef85G7WBWa0@C@0o8H2ypYa0d5PA06G0D1tPw0kpY4Sd1f0E300e90003m100WVs
+hy9804n7000C0KzV2000uF@0wxd1w3F0R_d0F100000000J06pE4WIB0hWB102F0LLLGOcPm
+1FyKfALfIL11km3ILX74yWF8u1Fu0uVgg2pKLbW0FS1nC0jWJo8_9i9T5nmv108000008M10
+0YpUZMnD00010120YpooPZyA004000G04W00W000YzqDesO3kNZXy@D00GRPMUI4aE3lwR00
+00m3fC0000uu@6ioU2Ngpm2@6yJk4FYPGUuI0200ypS60800Kjk1rycmg@60aM1uETIUQtW4
+xDeuT6cqbaRptOFJ36IFXyiD00W0GZyC0000r900mSKIK5l40C0WsstWjlDOpTC0800010GA
+hv4Iwc120W008040800GW00W00G000C00288fsRmJz6aNj102000010W0W0100C006010G00
+00AW70FXhYDO2S3Q1FXl_DOjV30842200410054004WVyD000W0a000001Gj_R000W000080
+01W8W8005W0aW04GCH6a9l10142o6t0W0040G040108G024008WW0m00Y400m01090000WG0
+vZ4300G0KJU2WgI00I00ynl140G0Icr08000G020000W0W0010G0Kvp6KWa1000K4008Z040
+001421020400800G0000e80C00000XG00G0480A2m0ojs08400Rmc0840G00G0G020000820
+X0G10080803810040G10411G008X040ntF6KWW10600CW0101040000c300m@@D0084u@@6i
+Yk1F_R01002008000mW100000804W00020K00046000080L1000202H00G00201eW0100008
+4yDZ100040W4004K00100G@DC8004ums4G081K_d18002Ayt0W400L3Q008WWMHO00W9900W
+Xl@D0000InR9002GP_V3gLF100004041000WG0W22X08m@79Sxl1fHRmc@6CvC320040900q
+_C3RPR002001002bxQGlw64Jk1XfRm4V60W00W08004000mj709PkH8kC00200W04mHv6iUe
+1G0142YJ20002VRRGRB900G0PsS3MtF10W02Dud0080080000003MVE100W0484000b1alh1
+00WnJi9XqmJOVV3ohxXodD00000004G20008208_@tWg3C0000opuCyml100806aCXHhIOZy
+7G001afO231p0200004040W00040000Om8UTIG01000010G000W0W06G0GZ0O0W2000800@6
+RG1@64Lm3vzR0100WioJeLP3gCt000W040026McXhqV0009m@@60_P0umu7koF1000Yxb_00
+120K0203tR00aGWepDeoj40W100010W0001108401008100000a004800W0240040480000G
+G0G1W0008RT30004G0540340W08003002G000G000yck10G220W04GO00W40W0000Iz000Dy
+B100W800X80G400WG000200028000060G400a04Erp00101W04000000810wUQ680040010v
+@T30090000100m0mU@6K@U20I00GW0KG4248YJ3gpm008010W04kut00801G200W328WW1G2
+G20000tdoeVep23W0008800uAK60G0400a10G0I469H4G00Z81Y2GmWO8mW8G00820900884
+18W02kzt00010G08W0G900H00we_4ozs010000082giF1O0W242040000G900000amUe6080
+001CWOA06000CWG000WV6WFEI8B03clt0602G0I9YImt00009000WG8G0A20KY2042Y880A1
+00IG400Y20WY4G86E3GGW0rpl1K200460G02800W0O0080000e80008UvtW8JC0401mxn600
+02400W152eH0094K002Ufd119100025Adt0000iA200w@t014000W05_@t00W4O4022Ert04
+000W8800010008G2040000840X0100000W20205W0H10028G100WY8X0000062I0808O2211
+000400ZZd0E00000X000011040CAY10440041008201O1c1G000040G8200G22Wz4B340G08
+P1020000006wccF002e120Km_j68000OfP300880030eCK30A00G032088006G84Km1804HG
+1O2000GEWW0000000W06KL8R08O0WHdC000001100GK20niQ0WeHaSPC8J23Yet00080040W
+Apt00m00vmR05I000WG1000008J0agF3G88080002YW0000000C040000TZd001020G0000X
+0042004800e004G14006W0l5O0105XP@D00m1mm36yol1W30002mY064010a2mp@641k1050
+AL0000m60eyG300j7W000K300GvpCW_0000G_2000IY300n@d00020qA0000K2Gl0020Wjv@
+V3out0GA2nnYp00ej0400eQWU00800w500e9r400WhWg00080000K5Gm300BgO000000ukgn
+lR000008Y80yt@000N10002000W10008P300TrRWi30Wp_J0200400AR100000UXIPl200A@
+P@d0W2A000U00ex0W0Y0G40m7yF0008YAr2004100CD08wV0000i000eQL00OW20yC5004L@
+g1020g0CH80mW00m41008200m40002W10H080406H00uta6030006010C0T4G0oO00aHI_F1
+020600000YO00mm0000008K6WbyJ00001mF3004000uC000L000403080CYG08400G8000C2
+000300WAW2051kCO0cR00qH000db2W103040cHO08200O60mRZLKXV20mC@dbj2G4V0Z_@00
+G02G004YF00000W4Gw3000FuV00izF620MG1Wbfnxl10BJ3G3@90OW1ucV3000K9p008ozDY
+ytWF@J8tx4U3NYe@P000XLu@9qLT20008Y5@X1bb0000qKpIqkF3brRGUtCSii1nzpmX@CSz
+l1ruN10m5W@@Je_9600004Zb1dccW00000002I0002_m00200nYRm1vC4XY1h6KnSP9KDJ29
+yYHV@F0000pk00mEs9CJF3ZgpmkwFaj_3NvRm3JCKRt6PFYnEZR00e1BjtA2qEXOuVG0A0m9
+y600018Cy4MOzX_sJ0200n6@Fyvj1z2O0200mzeCOmE3Esd1000G09W0g3F1mo50LqXnIz6a
+uY1vnR0004X9fDeg83QWd18W0WPbR0088WxwD0W0W3000100O1djd04100G1400WH40W0W04
+04080W401G4e826K1400ICW04GWWe142421HW2240400000WI000060G0000Of000059G110
+1CPA3zvR00G1XgjC00010G00108124841G2G08GK05W0W0WX1K800K05900A8W04000A1002
+G94W020GG00lgp014800a000210a_U2ZyR0K02WsUJ0200000M2000000041100G0100100C
+80000102G000Iit000rD@@l108000482LAc0K80H3W0Z44010X0000100G000002G020K000
+00O0G0200002In2@Cqvh1@zR000440G000GK80004W00G1W02W0W024220Gam88020201f1W
+000GG500I0W8100048004000g10mgu6061000WI8O01ebJJ0040mf@60005ifT6sQt002000
+04105G000Wb0K40080I00004W02000340W0eO3M9cntWrTD0028811WWU3CugV9I6mW0xJ02
+000K001020000084A00000G0W02G2PCqKV2Ga00Qmm00800G00080282000m0o0G2BF00000
+00OIe@6qSI5bjbm@@60040a000C40800A00fjR080400G08m8002It0G210lxd00cbJG0010
+4400060Cpk4TwQmD@90H009dV30W04W240uWz480080G20000c4408aSHtO@V300WWG000WW
+00CG004W00W0M0000008400uTV30W8000m4X0980100G20000X1000000ob0000W00420004
+000G2IHv18G00D2Q0808200Y0Y0GY3Lm00080@aOGi_90042000W0W00W1CC8YU9M6t00G01
+8008h@t004G040000G01idi18W04M_tWWxD0a40OJw90G400G01G5N9q9G2ZrP00000452H8
+X0Y000HaIX1W800sSq0J000lwd000040G900000Y4tWI@JewV30004000O000W002808m0Y0
+84W0140HH4Wn010004828W0YGi2442I80Hb8123000000G810052K0O000W82420000WM320
+GW05000100048WunR3wut00m020G4GMWt0W000A10ema8e01220Ye81040rx@J080001408W
+4G0YAYWn00HahV50010W000A01G0W0200082GGG0A00W010G026GMm00GC660G000W8G1024
+34452GGn040W10O410040W8000W7L400044Km1e2GG028mGV_C000G02AA00O68p4G0Y100W
+820A2Aa1YW200G2P00G4eW184068Szl1GGW11404W42008418O0000420X39nWz6W9008l33
+0W00G00G012800G8G00WI04W1010ai4d1rlo00WG0000u82010GP0G010O_@4slt000W2K20
+0018GI900009400K2GG0000K950G90W00KI8000n042A100G400eaI0000GK4A100000O2WI
+v8N10820W010K0010008G150000004KG00O4OG015K430002a1044cG0XXEBC0008I7W6GWG
+00G80000ZU0G000044Q2qWZ@Jen230GMX90H8000042n4040H008B0G0000m40404005042c
+0410003cMq00O0e80000Gf2Sgu3002Ww4t0m000000W40010022600002600800HW102G80W
+1000W208We0HGC220@wRW0H100G00I00OaW1I0G000Sk3WG200004C2640040Y8G00v3V302
+0GacY100Z2000580000G0m0429G8C8G20028O1P000O0209060008Y60G004K02Y2W0044K0
+G3zF01GKegV384000001WGW0000e8W41080mYG04W008X024W0082GPW81422G880Gywl100
+W800XGG00W00044000KkL49WG8000808000GH02m3n90002000GHW@6000I40Kc0GW40a09G
+0m2e00W80W84PsV3G10W00400a000410G00W000e0He00sh_3000W0002K1V20Wm0W404e12
+30000X6000W20G0080G@0004wV10G0Gt_9080WH0000GJ0000C98C00000T00000201m_z60
+W4e0000GbS900w31080fN8C40W41U100G00011410z0400ey5q10100mNW800Gf00eq03QYp
+WWmn0pC308cnCcXW@20nP40YpO64Vm3_FZPym3pOcPGq3FWuCU0nPc1Y@30FUu1cPMLyF04v
+V08gA000aau14dP68MLLyuV0OcPLn3FGa7UWegY8WkxDWbf100I3Jd10BQ90B1H082u00Wg0
+yW70A8gILLM0ymjegXRHLLLYggAm@xVW7E000y0G070GtH082S3_oFXvID04000C0e080GGG
+0mG00WX0022104W008010I0N0C440_P00uo0011482m8G4W1W80305060he01480I0000SU7
+20P1O02G0GXW1W35P03000O000W0C0G582mEG530066008400WY000x081S1eIu2uc10mD20
+5O40AWB0K0NW3051dHc16300mlsa00sTd00ewXLD0W0208Y780MT0W8_00Gy10G020001100
+02n324YF084V0000020005GFo600100G001W20000fcgE000K00010100G4V0@60002SjL30
+8000eWi4BJ30Mc60fbH045m00lyK1400NXCpYf102H4m@2A000G0000W06m0W900CG10X50G
+N0s3@104a0Fjln1rU00GW20000Ok5WGSt8e@4cXx1G0002000sqBXM7IOm@4sLzXszaej_7o
+XdXGNV0000DD11W@@D0401nA@Fy153@u_maK6iuV20GG0IxtWSxJea_4kJtW7PJe7xA2iNYv
+@P00WSSqw9Sw_33z@G3_Ciai1x_pGhk6WH00ulT9kYlYMzJeqxAwV@1mE1Wf4KHs@Oiul100
+0GIe@XirJ000W0001njwJ030000G0004G040H001024di1DkR0140W4wD8NO32Nt0Y028Xtp
+04000000SY240eW80qUc101K0eW282H0H0000008A04004001004000W00e4T30800000K0W
+2010000W022XvR001408ee2a0X010008200040W2WW00000G00GG4G0G0500G0W0IZr600G1
+004W8002000a0819W00e020G00G430W1842g08860I02G404G00W08020002I008A8002Y00
+00hedV300W00X808sV300406Ml100041e00020148g225040i0A180KKW0802004WKW24Y00
+0GG00004148W10G0100040G0000W082W2WpLr0W0X04842g8p08010z9R0440G0204G80CMo
+s0020WG504X00XW18G500214G0eH_PW0000Y0000A80hca0000O0K03G8280080040400400
+0119100002W0X1X8040G0W80008W08011040a00003000120088GG40D0HOXG4WW002041W0
+000000dH6POYH38070000a0000nkB60004W420QNz600W0ehD3400GG80120W00420G0W420
+0B8W040000WZ10101410000G0W0U68q0000A000080G1yol102400404101000I02030KG00
+5020040Wm0u0Gu@V308W00041uU@7Qyc1420000000aW00024000W006004008lbRGx@6000
+G4200001GWEvI000m00044W00G000000OI1000ilR3Yit000GI75RmFy6aJQ2zjPmK@6Csi1
+FPmGfX6Cxl100108W00yhl1NNdGyu90008gC13G0G0W080009400J00800804010W08G2000
+018W4W0200940000H3480700miDBIS26K@V2lfb0010006100W90000210W80G0008000GG0
+I0001C0G020H4m0420802000G0W011040800100G0GGys9qcD3rrn00e000W840010WW148W
+820G0G2WO041G2084000WW00Dm02W00800890G042000sAq0500020020828020004801880
+e@@J0002Gi_600021004081W040200080m0000W00QLS90001WW00uzx7smt080100004404
+0_Xd10K002ot04G00WW000I8000W0G8G0000G02008e140b0000028002W0210000_sNzR0K
+40008H04GW00000100W00024000eqRC0G01000mWrxDu2p4getWkvD8u330001WW080000W1
+40048001xR0200fAlD00402008004G000880401010P000444aG420018CaH047G168W041W
+C1OcPWGYCO6X0KnW22GW1mKHX4M1000E2808GcG00WW300041K01YY000458000084000S00
+801W0H50130We20eG0W40229051A306023W030XOX0mW8q_l1WGXG010W020Gm021m8@94sl
+10G020040W02G4004120GG01W0GO450Wma00862M4G40G84358A84W21G14GXY00X4080000
+8600eY2W042bO0G1W0I000008ko008000e830084A080020004C20G040W040X00014Y8002
+q0008G0A41802040841W00G20400a24000W1020022000W10005000GW2O108Wm00Mhl1K2W
+GW801G920062W80K0Wn8D001W000Gej@D0G0406W10A94WYB400aG02Ga4000840304m0aG4
+2W08000G800GGX20G420003Z0G00G6G2G0810H000000040800G80o1c100m00W80e4001H8
+8bIA1W80819e40000XGAGA5VQ20000f40080oo00A104IG0000100034284080G0860mP@60
+1000P2000mG1A000000882O2IG4W06G00Y002C8ZC0010086G0WY420OW150X90003KG1801
+0WX1000G41010GW9GD8it4m000Sul102A0000000AW408G00Wm001018G1G10X4X00KG4O8G
+V@6KSl10W020W2080WG01009G000W5000100GHW0000101W0E001aAyJ080G00X0802m5twQ
+W80b00S41009815IG06cG1040ZG011GGG42mG00G410G0H0000aK0200H089CRWW86WNSD00
+080001WPoDG0010800GX021O000WWy0088020a2eCaW20C00W20O42004qV2W04000WW1002
+uJO66rF100X800H22@s02W00W40G80000I40OiT3a0128124K0009000G00GY00W4102HX0m
+Hm8G200WW980a0DuRm1v90042OwT3W0b400020W000WIW00040000G00I0IYa000600840Wd
+eJOHV300GH0000000GB10400I001aR00ez0400aQ0W200008100000m00020q30000KJG@40
+6vj10080000qB0400WlGl200WSlD0G0840eD0002w_1000_l4A00000D0GG_6awk1M100sxt
+W2@D0G1000WO5q520vWR09001000T00000vB0aZl1L@RGCS6ubu3uvw40000L0k11_R000GV
+w3Hy0Wh@50c@B00lN000400bT_30008000Hy10W000WP7000900W0G0MTWaz@_m300Kr1mC0
+00OPaT000W00W00noq0G0pW7y000W70p000cD30QHB0OsC00WqebM00_70mofJzt0iOPQOPQ
+YIEpWhnP00D0ar30002031TR00030O000W0ip008Z43N200051w8G0uo00W1100630001000
+3G1WYWGC40IP00Wm000X100RnQ040LEC1SP00uI000000m8H80004000O080G0GGW1W000W8
+94T3000O0G0m0W1O60300WA600e800WY000T020K1aom0C610OC200Ifp0G000K441G5G500
+G5unxA0Gt1Wv@1000mle00000WAM90WaT00000gIL10008Z1E0Hy0m1000GPB00hM00020GW
+90208GG140Ks14lk1WcegpSt0020000YPcmt0CpC0W@10OPQCpoq0t7fX7y0W5J3WbwA0W1C
+0010k00100000CG10OW200000e4900000WNF0340KGL0mig0Ah6ZghPumxDQWN2000Oa500_
+ZpZrOnONC96N@XYmJu8TC010G4l139sRGurF0001000mKYxCq_T2l3WnpTRSTD37edGgvCCd
+z3000WghcXE0Se2T600KDsn66x2inJhICb06BD4omsF08028zV90FvWqJm6HGCJRzLCK16Fm
+BHoz90100400004800000CW300MF7320000W008000004G8oV3_HdXjxDOzU3obzXyrD0200
+00G0WPvCuCE30008000G00eGGR1CKrk1K004Ivn000087Un0011000oB7zp01GG00008NxdG
+GN6001G0W04GT_6014GeqM38000W10BOzV6W002000m0200GtvC0004OoR3kfdXmsD8@@4G0
+00000A0024002004800HMRmw_6Kxk10PJ0sjtWf@J8l@40014000800400448edgD0009W00
+0WFVD000fGMz6aUl1800200000024OJU6oPdX_mDW000010WY@AyuiV3cbt0004W000OU4oW
+X3IO8Q3InNYN@DONm480004wl4G000_iWgJ1cgf0JpKu@B9_lIZ@d4v@8L_l59UgQYa9lh0G
+K3Gq0viEGEZvyVOG@@bq@THz@MM@d5s@Nf1VMbL0W20e0nSmk0000O0SGHd00y0S@l4C0000
+0080O008gpJ00J0000_Kmqd8000PiGCz2WP0000VMZta0upWH00000GJ70m70c10WBAN2G08
+m9p6a4g4X_Rm3dUS6g40lG8ItF1000WblR0040eLtJ0008Gry600W4u7H3AVtWK0I8kI365b
+XRKD0a00OUx6ybQ2D0OmTg60080uGr408W04dl10008080G00000a00vD_600800000DA100
+020a000034W12220dvR0014Wh1CuG@400420I008TW4k6m0G00a00000840MBG2000G10000
+4808f0CgJtWa2U8fr4gD81000000a5120G00808Ux400W00002eYN32gj20W0G9s6oyMv080
+082Q3UirW9@D0852Gqx60G000400ot@60480eCy4g1mWymJ0000If164RW1duQ00110m0000
+02WcZt010200000W800qRx30400Aqr028e0K0000G00K9g101001008a5B6000eOB00G00Ge
+CR30A0000W0eAX4050000e0001G000001W000000W040104008000400G40G032d001040W2
+W004GU6tWOxD02W00402481G000000G0W20WG00W00408GH00104GGG2200001100G00O000
+0W060H00G00000014002800000G0WAGG0e0G040000Wi5G0000208@fQ0H001080000GK000
+000G80G00004Y810IGmGHG008000WW00012000400G8000008C084000WH0004100W4W0800
+000220000000C200000W004024844_Ol140A00e000G040028KS36W002000200008A000W0
+10C200G0000002Kdw6001048004002G00000C50101080000G080006mC0C0AI0000000WCW
+000W50Y5GG041H14mfu60A80000100A40G00Gm008cGs0H080468WG00018K0Odv4W100iYi
+454O06aG8Q400000GG0008400080000O0W9bJOoT300840G0G8jN3G00000W0u943oAmWbyD
+ODa4A2tWrpD0A00mmg60000W000208001028t@R00G0mcrDuHL3MHc10800DGO0084O00010
+00GsmzXlyDum23IgF14011blQ00WsyGzJ0020mr160000000448W00004WT8a08400400Ym0
+000W89Mvh10802W10000210300G1x9arS2bzRGir9CTk1PtR0H00Wg5CGW002G08WbQD0040
+mk19aBF30100CoG0W0200010mIsF0008OEx40008A2C10006X00024044000001G01G08ABS
+3420W000G00X0uxrFysV2@zdmsq60001K08280W0G00000G0I09100G81G000m3tIK1l1000
+mKA004Hk4Y008MiMYqtJ00200080WLTD00C3000G000GW00004008icD308200G00S7k17DR
+W0000000a0WW00G001Z1X89R30102WX08QXx40W40KeD3800000qBszj4rIOGqv6004X8pw7
+4020000GOg03W004000o008GGJuCCQk10400Itt0840000000002900G034100002J086W08
+0GA0A0K0O1f4I14W021m820G20GG400800W400000H000010X040a0104000Sq0G@@6atj10
+0W0140400Y00G400041400008A2041GY0W080004102S010G04GH00mW00WAY01025W20HG4
+10480G01KW00X0G0000400ZWkDG0100020XTKC00OW1000G000m04008A0WW10K04YY001a1
+00820110GG900004G000myF9idE3000uiA000100G0040008WArDebS30o8W0W0014X00041
+0000Ya1a08C1800e00DG4102W20e1G000GKG100GYK21J5008G0A000LiRGmx90H00W2Y000
+0010e000WW0a0G284Xm00984G040bW02420G8WG0H0X418cX0pKI40YW04005006G000K200
+00000ompD00A1000ScV@DuO03e000qpU22405g@t000W5F5P00008A04000W00WI00002G20
+040e0000WIK2000G60G1008Ef4QjA100000e80000008G004800C42I0WH0a100L40OG40G0
+60Y0C0800400800P002Cjsk10W0000H42008ez03G0000881uk@40W80Sgj1Rgp0500WhlD8
+cU3G000004W210e02m4W71CG14G000000b900000GG80W00IuP@40005G0800H0000005005
+0000G0C00GWCu020088W1Y_xD0GW2000400G04cG800000000O01000O0G02G020W0000001
+00WJz00GE@9GW0400000001820000024oyF184200000004GU9U24W2040X00c140100NT06
+WG0G00000040asuh0e00mpG600002W0080Ge01a08aG80082080W812000W04080849zpmKG
+6000000Wwrz_900408oT3gyFXK_DOsz4wud11004hURGy@608800004msC60300Ot@400X10
+000G34B00009c800TyR0_NW0W0uBeD0084WDq_l1000QL0100m6029000WM1000X0844000M
+5W0G8sA000ugb020800W0000m00000004e100004m02tnRm@@601K0004008m0000P2@@R00
+0W2e0400q4AW2000oN08QV30018000WW900m8@RO600GocXf0y@F1ay@2OuX5G00WV000@@3
+0WoEW@@PWow3000WAL5W@yF00000mxV00u@V30aO0ypF34B00uC00IH0m6004W000000GW20
+6O00004@g1WBk0WLM10Wu2000002U0E000w2W1000082H0SG000GQ3902G410W8200G60004
+000c020O0GaC3Os10mF3004600mO00WA02051K8G06p004Z000@@R0T000C1_Hm0G000ud10
+0000W0l1000G0000040e90000G7eNV3000O000G0e0WmQD646Z10WA000402051X0O063008
+5000C000e800mEm0040L0Y0H0008000W50mNV1000WN00000000MT0W8_000_10WP0000O0@
+@700ulgeA0CzV01u@02W@140@n4Hup@@00ei5W_xdSF3h@p0Wk_lX@DW@00mn@90WW2Ogh40
+Wu000000W1008200a3000008K5HS1Ho82000X005V1Wuk2GW@16000zy10HS7mP_6iiV2Lnt
+2W0GWT_P0G00GCS9eP00uAE6Ept0004040802pnW7zJezD3Y2810200jJP00W0Wy0OeJC3Up
+FXinIOMV90040c001RvBHmQ6qzV20o50MvVZNvC8jj4_B_X7uCudd4Qc91G00G@_@meULq1Y
+1tj52000KS000vzlHT0Ri_73t0in_oXCve4ZHQ0G00WIdD00mdJiaRigN2@FR0W00av9PuFE
+3UioWXeDu0F3UOpWqeJuvB30100100102W000140000W94c00001002000W2xZx10K000210
+gUp00T40@@R00003010000A00800SIj10040kdp000Y0@@R00GW0aW02pOQGpUCyla1XynmY
+0600G0umE34000004002040G0008G00g800Imo0W000LtPmHD6G00GOGH3000W0240000W20
+100000eo000Uow10000800H000W080018000H0000080008GgxC100G0G0W000008000gpJ6
+s1qWioIOY73G400iXa10101000Gq7M2H4cW10480000600000W1SBc1008000WC10W0udF30
+0eD@@V22400000m00W1000W80G40000C00182Rq001000420000100Y200G0000I0040GhHc
+00280G0000001sHqWsHa00I0000G00010O080014100Me00400280WRjUOGG3U5t00001080
+081I000000KJ0m@@9Std199oGMS600G8uoo4k7qWipI8gyD800Wy@F3T1QGVg64yG2BP_mo2
+CiRf10080000mKW33lJamhSC0020eP89cdZXYLDu6I6000HC2d10W006YpW@@D00GAm6b600
+0Wv@V6_EqWr3DO@j780000WH311000240WysVuAj4gOWXLBJuKM6w58X_3Uu@V60800z@l12
+0200001840G0420m2SL48V5Wx40oVZ100085WQm@@600W1ygl4gzBXS9D8So72PqW3APOFbA
+G0000002K0WOm8gISVg1FtB1000O90WG3VnGda6yXVBDAmmFc9iac100100G404fG2004010
+0a08G0G006q@@F0042e143kxmW6FIW80000WcQ8C802GG0cDC102101Zc0000cz_D8p166zF
+XodOevV3EIC10W80bJQmZh6i@Q26S400G4CYH49I90YmRVCSXf1FC8n@@60Wv1udF3MXrWuC
+D030200G008000G000000400004G08W000Wb8DOvb40420000G00020400XTICu@VCG0200G
+04000W080W829B001Hv0eI0ieM2000b000W80108NE3e0G0000410A0000W0W00G000Wn700
+S4d10024WWI0W000WG0e0000082W2K0004102H900001WGA09G40Y008e00000GY00K200I1
+WXewCuntAcDq008GY000C0007820GBln40G800020W8002610Wa8J000G8000080e00W0000
+a3304000W002K00X5G0800n0W8O00049KP3000W20C8W8000GA200e00f0aWY0G4A000A202
+AgBXK0ION03_@FXE0I89O3wqo0YWY00W10_@d10CX0WA3B088000000WWH000000101t2R0O
+000Wn7400000884002G00I481y0088420c8K02110i012e420W000K404A21XH4049044IW2
+G42009124GG80Y42GE14HG020G800Z00086YGeG0070KVz60008X400005W400au@@U0004v
+2M300002000NV90880000202W404Ean0e000210010X0G000400W0Y0004A8801W00040040
+400G000GG00a200102010a0G000W2W00000e042GW00001063N2bdmWI00WuzC0W0000eD00
+02uLjPmfp9WM2800ms0C8140GR2020W10X0000OW4002WC1000KBeG2W10e4iYX1000AbX0H
+0m68K22400w0008G0082000b90W80C503q000a2W18C1043Gla2m3I0W80G30y@@6ALL0000
+A9y0ut@14m@@g02C1u@V60H41y@@30eA05O00000KTB5L2fXXJwOWC000Z186g0cR00uI_@F
+XG_C0uc10G6000G000W900WC03091n080Y100uSgCGt7000q40001u4GJ04WCWva80n8HAWH
+YK0I6f0a141e98ZG7mEHaWEIA09041a48Ze3G69IWVIaf0mWHa14Z49869I1u80tvE0000EU
+dx0000ur2@@p00U0U000x4W@0m@@1KNe1NEdWu30W@@n00WzHO29eA40WgOcf0mCJ1fQc2IL
+L54pC3JLL5LLfA0yF80uVGf0O0LL5Jm3FcoKLCbPG0m@WKLu1nCc320@3EyWdgg0FLL98ggI
+GmBGttCaxj1DsQGHugy@@30tS0EkCXhgFPRS30002SAF31cR0040WKjPe5y4YMzXInDG0000
+0W0XvpD00W00810m3qDezx4cjs0000OQ700Urb1000W04H0W10080GWOfQ3WG08000140G00
+0GCWWuI0WO000100HW1WzgRmbq60200CaW4Usd1G008nx@Gxv6KZk1DgR08002001GTj@Gow
+600uNi2E9Qzn0G040DiRGyU9yiL27CLHRHLi5b1v3Lnvm6iWS2Znl1OE1WluV00G000G1Woj
+CuyR3W00G0200000Wmey600G0080Y20000W80A@YRmry6qDk17XRGaf9q753HadWWW0W03Uu
+aD3A2oW2eD02GWmrt6000Ws18004G0WzWC0000000e000827id010g00W80R2P01000004Gv
+vR0f0K0Y000JaRmOQ60000440G24000W0080W0W40W0140102040401GX00228002st00W00
+00WG0G4000G002n08G0002100000GC00WaSk1000002800080PaV3008000GEDeV3_kmW1gD
+O613810000W040WWGaT900G010800G4GH000040G282m000X252W000W8420800130408X04
+Hm00G0W0WG0818X0002001402G0402802000G00GXxR00K6G200000810A0Gaml100G04000
+W0400010Gj_60e01420200G00020002300021a2d140401000W10W04000000bS_D0W0WOJ@
+94fW1G09008eH0402080WWW550G0008YY0040006090nH0Oes9KeO2WW0W2ox100083pQ0W1
+0W@uD00C008G0W6tD8Vv4Mzt0000im310woc12000rFd00040a0q0dhPW00W0200W0402I6q
+020W0O128U3tWXuD00GGGiRFKiVBdPi100wzj_91001uzt60Y00008W012001008G20001W0
+W080000000YWXAmP8VWAEQtWmn8fR@74bB04sV2XucGv@6W028enV60009080801100000X0
+@C0040Gj@60080gjO3Q7NY_wDusIIIg53000em100U0MYpvPOPI340020006G00022G0ePwJ
+003010010H06000000X08GG00u6kDkCrWxsKv@_40046ajg7@WR004W400410040008W0210
+PWs40118cGF3G008_Gj2000W0001cUOZ6Ny0iv3GO@9G00G8dz7008080G0W0000WY108I09
+660WW518We02I80240049800BGa8W04HK14004HG004GG10W10@@@00O1WkUO8a2C0008sM7
+3pxp0000Aw2003mpGC@9CGV2800G0002G000H08001OG011O00I01scs0H08H0eY0MCn0iW8
+00424Nm@1A100G0WYYOhY6rD0G000010WSlDW8e0KSoL00eUFN@7000Gk7k10G1500041WI0
+Q@O3e401W181YIA1WG0000040TuQ00G000IX20040_68XbnJ000amI@6G1G0OTfA820G0008
+0004Je@600I1ek4C0Le0i@h70a00000O20080009800W0400H0000GW2G00000Y40W0002W0
+002G48IBrW23h078020WGWRfn00m0W0000000K0G06Vpj2000iw000Uzb100W0p@RGKy6001
+40m00002W84035014W000030044048820024007x2c0G0008002C440g@jYKTzOo76Iok200
+AiVspGNlO0208uX@441000G0K4I0Am3p94nC3todGkg600AT0100g6G0YgVh0009I0k6080e
+Z0002mD1X9lh0Oe0mrfI81200000W6000W00000800H1404oN1T5000W_bAzD0G0070004mB
+20A004GG20Cpl100cA000mMAU2jjmJwuFWjk30000000WxConm@0000y@F0u@P0OMG5ml@pS
+00000zVni6uRY00CY40ar70000rnZdGuRC02mF10WCGMS9yTk400100060Z840tH00ycgCCC
+F300Khg@tWdfD0400000HWaqC00001G0W9W8060c000_9000X000K100m0K0W1ui33WL400h
+800uYV3W1W003Gb140N400Hcsrh00E1Wl_2000WJb3P3mJ6WDtV0W16002C000G0@OR0m10W
+O@DWZ00000uANPW@_7200W@@10Ay8yV30W@y304x6W0yFaJE006U0yd00wU0f4nD0000hR00
+WwnzOo63IAw40900P_R0020WYoJe4S3oyF100G09XR0000a8lJeCS34200y8k1zXp000tjiq
+DuKy4o5d1O000bZdmno60G004010O3L90101OZS6QgBX@rDuyKC0010kIE3TcdGpjCKSE30l
+60_2_X0qJegc4kAtWTwCuNO9s8lYMuP8I19M@3ZKvD00W0OQvF4ve1ldNHdiISzj10a006Tt
+WvSVeST3Iam0000000W2tysWNvJ00W00016W7vCe5u7_r@10411Zxd00WgzivD0000L3@600
+82u__7404GW000uRC300W0Kaj14W080000g000040004G000e000W02020K010400G0W0001
+00202420WW00K2k10040YABX8_DOC_40040aij12G00Uv@1120004000z82q8u340002dt00
+010bKp0K200W000004408We0400280000G0KH0W00H0G4X4004809ZT34G00W8040000001G
+aEYC00201W0080200808W004030W0OxE3odE1W00081002sGYJtD0000fmm0Ws_DeUQ30000
+kdg1@@R0080O0004WW00000OW00GuvV34040000X0W00027W4048WG01004010809010110H
+KWWzDW000000Oc4s21000y@@900228y@400W2qtK200YtMu@X8eb8aU30810008000G08200
+82080tORGG4602MG00K0mybI4@U2XsPmvw9SSC6T@Z18W6WKibOAvAke810W00vCO0008800
+04G0H0A@t02100zfdmU_60008W0G0mVT@000YaG00GCw94at61zbmp@6808m00000G8G20O0
+0040W90002004000HmjaI8048ewT38G40ixs6pQl100fqcxE9Y@409W00100202GOid6yYX1
+0013A_Za_MCet_72sB4m7C0bEKn3uI0108G001W00GWNwD000020X000O00020Y0GW0KQ73P
+td0000G2G8000W80082ycl1ptP0018W5_V81mD000mWS008j@4000CC_E3Rrp000G10W0200
+0400X0BW000n0008018aAGfKWW2W8eY800A180020W0W6HI8vV380200048ObV34W80SIe75
+aY100px00V0110GRZLC@g1GW044400000304Q820100810GG62HC042100c00C00021W6_V0
+0400W040A102Zs@00HGfuzJG800050WG00W29GK10000G090x9dGsS6axM25ZRGz_9000800
+0eKV_6a3k102000H800G00wk@4wrdXKkD0W0GGnYIa20500I0Aj43WU707u@GGI6aal4TSQG
+H0600H0000402000O000G002Ynh2mX0000W8sroWELCu_@40W06qe@3tmRmZC6Cvj44500U@
+t0W1005@R00G0G000GDT_000m80000G4C0040000I01100WY04mgoD0G804200mqCbuaAFMP
+HYHSn00WLPYkCidh7njd003W0000WW004MyF10G0Y1CaGL_C00We0100WL00WRIV080jI0TC
+0008c0002WC1Wzbh0Wh1mn@C00AB0100Owt6Ky630020054000GNfeG36an00G0CW10WQQMY
+ywVGs100C0uEt1000mF0EKT6000ma700sCxXtsz00i@Fm030WBV00000Kb@1m502G@@Jc@zd
+Vv3WVyF002e_1O0G000iZMOF10200000C00000S308gQ6002W8400kxnA0000008BCNS601G
+4yGU2Dnbmi@60W2000O000m0O0W1OC23GD000A000GG000g000O080m0m000W1y@F30udV00
+00mH71eIzASN004lkAWB80Yxd10zV0V7zmuc9u@0_t@0000y302OWfe2yF00000W@H40@yZ0
+KLVk3000FU0m@@1ae7680007a_XoKJeIy42RBXJgP000200002V300LkAHSFX4@S21CA1000
+Xe7JevMC64nWwlD8Tj7080G0280u2J3o7t0007zJPAHQw60G018Oy40800088000001CW0YI
+aD0110urhC0b00W0050024axoDeRT3MmT3G000BtdmnQ9yUl1xdPmS46Saj1WmV0My_10200
+0801IAuXvfD000XKhf6qk7300024008W0000020meCIC3k1T_PGLAX00G000G0GTuIOO00uW
+H9oIUZ@@D0W1GmIzC0001008010006020080Wg80000840f9U3002Kzmk1000eIGFXatD8m8
+6wH@XmxP000DM0@OW00Z86V600400G4G00800400G1XW0G0A0eW010060008000GY0A000O0
+X0440800X0O_T305A8020200C4G9p6090100002X00WeoCeFU3IZdXKsJ8CS3Avd1GV30Hyp
+mjw64oF3000Wwet000a0001202GWSYl1000e0201046a20J5eG80O0C1GG58440YW000020a
+00002GI90G0000KW0i060000098W000033Y9xdGEz60G00uAF3webXizDOm@4000mXC00OOU
+6cstWovCeuL6AumWb_D008X0200G00802GWAmGm8G7Xu22530MA021IW0A222800yyDk1rgQ
+GGtFCEl1XVvHbzF00mXFtGC000Oa0v324X240Y08G004000e00105910ttp08620e0000080
+01W00G4WeHV30080bcgGWd60sdkbz@De7A3sTyXBKD00a00020080W0040W0O4WW020if8F2
+On3001000WuC800abU8XZ@0000G030004600180i_l14400000220A4uqV340004JGEpjB10
+WgpEtj1G0WGg@64@i4G2008800CRL2ZchoyvO0C00uSUCcVcXTFI000G14100I0002081wKd
+X0wJ0004A21W420240100G0001H0000G0K8XdaQE64400YnVZsyPepV30G00000a04aY0W46
+WPyJ08000G0G800W0000WmY01W90H4040W0e0882002180UpuatzaubN300qX5fG8l0RGo@9
+0Og000WW20003000MplR0W0WW@@D07W00W0000XXe0G9b000X000L2a000G10aSF21GG200Y
+0W4GOuyd4e00004m0uzcD000G00b08@R3AZBX8Zb0028200G940000030e00eG820ydV3011
+0000AW20GGn_Uirl10500IzdX0uC01000000simUO9k7IImWiua8Wy7020000243000W0X00
+000S000WC80W0W8800500E10WO0PuNVC0041000Wxu@7002204G000mix25Uatk10W0C1200
+082WHe020000WkdV8lN38800004938W1mw_600108lR36YDX_@t01W0moqO000008A1mjSUS
+Rl103W0MnNYo@J00C8000W0K00G840100z70080sB00001W00040eK4002ucCMk43Yp00008
+0010004u9200KoV20080011400GJ0000rQxO000490V3040KG0000e40020000a00tx9HWv9
+WM3e00WsWu300000__72GnE41a7UH00QI27rZehJeu@40iw000l00000020O@QWDWw0W0000
+00G@@2000000sbpc1030C0sRO0yJ00m50GvDX01W9000JG3EF0O20083000000mj80Vbj10m
+08400uE0006fd1O0o0FmnGCv60G0W0ud10G6000WP00bz0sht0Hy30000JPA0@anEF000Gm2
+00qvUB00m@100g3KK18SN6Eava5ODOpDIswd100v_toYHr6RyaK8r@Rm2@6iD_3H_@GYs9yU
+@60kE0EpjYYdJemy40100C_l1W0G0IEtW6eJ8gi7UlrcyJm0000kU00WlBXP8y72qdXXsDuG
+y7400048k1pnzG2w64ZK800sP@ai200W4RPdGCy6SdT20040wXtWS@bOPR32yo002000001m
+8004bN2PclH7zIiYE30iR0IS@XjwD0000Hqx64xT2xIymfz9G00X02008200a6mD00348820
+1800600298C00CVV2dNd00200440GPRpmIpU000W2f00GXpCG000uwc70420000G1000I506
+00aG20X0000010008G0040o000H0GK0001a221000AG000GW01JG0000G1002AG2e00nBLnQ
+@6KSV5z8cG_@900GGQk19C1004cV235QGR_64fc104G0g2s000810G08K0002W2800W0029G
+00881FvQ0140020080080MSt00010bxd000W00401tTRGcKd0yu0OfGFYmt0K0005IP000W0
+4004@up0142GW0044GGGEyd10200081023oW7yJewoJM0N2Q000n7vHjtL00100W20m2V602
+02vVV3G0088000000010400000A5SR00000W021dW@mhvj0WmjO1TL2CK201103@R004080G
+400180Qft001001ka0a40010008G00kQt00G000G00_Xf50660zv03Y000G02G0008goq0O0
+00W0W0000K000004G0mKd9aql10800MilYWuL10004i10WOusOR_AAqt000W4NwR0W000H00
+8FOc0024WaED01G0010200C000104Qmt040083@R004GW4xL10W1I85d0002etV30W000Wf0
+0M001C8008IW0041YX0C8H0020G0I0G060048000G0G8W000bG0004006G10fG58200G000G
+W00000G00800WW00r5s2Oy5WWzyeq_7IAq000801iQW8W20010440G0G4W409W0G0a0mhc60
+8b0G20m40K20XW00W045c@d1A000200H27ibCkPOzV6QclYBnD0000081WWm@D00G2K11C00
+000088IQt6G41I0100Gum9qxWAH@@0009nGhneVz7oxdXUfD00W0000400O205z@00W10804
+0vjR008310G10fwR0000mpXI8goM0Wn0S@V50006AhM210085e@0004GA08W7yRGfyCiVk10
+X04_zd10G0402O0IWib_uDmr00m5vsKde1HEa080WW0wD0D20800t40100000G000qo0200e
+D0ma2Cqmk1n06I_@9008thcNCcK@10GW00400E2sWh@J0050GiuFSyV20Gz@Bkp04HU000k0
+c_F10S70000FuV0@@qkAWED0o9nZR_hm@00000A81WA0NER01O5WK0C0zz70_F200W10001m
+1060Z0C0ZV00g100W_tD04020808080o0LFq20006l200Fgk100Yea@D000CmKx6040W8hS3
+0O000W0000O000W0G0W18a1105000sRN2r@R000WA10Or9xcGFf6ilEC00eV2R76005000P0
+Mvt00003080tvF0_xV0m70G4VQxLa3E3tx_mhRd0it1eMrPAmdXK_tOXV3EMdauxb8x@4000
+m3r00unS9Aab180G4rb@mMsIi@l1THRGa_sywh4Vzd00WVsga310WWGW@sCeP2t4qIo@I0se
+9ucP9EJd10W00Ta@Gvy9imt3ByO000055W20LGp0200WquD8bh4_DlYdsPeiT6000GJK00O9
+T6000WG010uRC30O00000LOo@7001WyCl1TiR00A020002801200000004o0000020210004
+P208W2Q8004G4G8mrNFK@Y100W0srtWZuCesV6o0@100Bo000002A8q@l14001QwtW3yD00W
+4GSxC800010800G00a3cD028e04G0H00W8009G088e042102014W4003nmG000450G1GWX80
+0884G4Gb85Ue_V30010Lzl1@@pGly60W01e_V60Rz0CnV2zpp00W0000H00008gvC1G0W000
+G0800K0480404G100W0K0018a8608208G221XK00a0W0028WG00002000008PP_4ocNYkSDu
+_uJ000GxB00000GuE_60W00G00022800L000978nKJO0G040W0000W00000HA000EWm00600
+000HgWpcf_V000Ati_C000CuWyMW800000WWO8X1000H4810G0084200Kel1001080204pl1
+Pn_m8dX0000CeU64km0000X000800m0010G2zb2pUK60048UfJ381200e1G08W0YCY0eoSD0
+01Gm_@90002200000eG04GW0PpsY71000000PeP0400WQdQv_z4oUm0440Id_Rm5IOaPl100
+W0cOdaC5I00WKvb_600408p39EPd4H28000000G80088000041GOW2H00m2W9Y0W00G30000
+08Kp_C0800eyV3U6q300080001ksF1074000K000W2G110G018mpFdKxV2045a1H083419I0
+H009080Z41X2010412K1m055000061G00001PbdmDS601GGWY25GMgg0000XD02000400W00
+04000420O000QVLL0GCi00061G040aG48093IKL8094842I20000e45004009002000104Lu
+j100000G2O200KgKP3gQxXUmU8pV3wLr0008y00041000180200900W00WNvQ110000Y1004
+B00200e004w00H00Af018C1WI001MRGN@I0024X600WG01WS@t00Y0mux60J0001000ux200
+Q000W020080WG08eQVOMst00GO300008Y2G0Y0001M00G00041g02Z00G00W0081u8x4000W
+X000GW0K2KGGWudbu@@700m0800201G05000GrB00W00104090400002A0004Wg2W102002G
+00G408g00GG004000800001100WiwIuTz70GG00041Ct@DoZq088I0004WKG40000F9WV3W0
+40000G000800a0nE5W1800900W018800W001044J00W0Jl0mz_600O81X00PBR94Hk1eT000
+0WDaEy60W00000820u0G00G8H000Wp2SWW000e882020G00080W1WyxQXD000U00WCID004V
+20G18le30_v70yrNw000Ct100HWOC000q7y0000eBk8n31ym300KbALj0u2VHL10001hmN40
+@l80_7SggAu2700uVYWrkF6R_B10_F02CV0UJR@zr@_xVyXGy10Xu30Ho000m000e2e001mD
+YC0HKwt6SmM200080sP004H0uT@D000501000J0J000c00K0000M5KGW5Wh0B0N0N0k0k0O0
+S104m0Qjk5O000m0G0W1W1G7G7100N700W80W@@0u1H0000GLC0u@VCAABXQs91GQg00c100
+5H4KeA0u10000002O_7Ga2g8000G0r@E_104cPc@8m@000t1Ct_3fhbJzx9000Wab00GpyvS
+dl4jSd00X0mg_D0008Gqy9CVl1LRRGy@945G2hNRmv@I00uu4010mfRO48G20000W100000W
+OWS9Ezt0000Wj13pFv6aKW19SQm6sO0GO1uuP9Y_FXVRJe80Co303001G0a007uCX@yDuYV3
+EG66000Wg301QiaawvD8EO3U@kYQfDOLU3012W00Y04804000000028xtb0201XWtPefU3Ee
+dXGwh000kNmyC000040005000qbsVeW03c6r000004G01gzt00Wg8ZuR00W040400frP0L00
+38e200G20KAY20G0A0004W020000G000100I00Cel1G004c043W0000e4GogtWkzD0WCY040
+100000080W1020qZl10014Axt0W00020W0012011W008800D2040W0G2290048W08K20G892
+04I5AX00WI04K0208W10002m002aG0GQ0m20YW30W210020A0004G030000G000010cbI20G
+00w_tWZzVedV3e040Kw23K700sxsWq_D04000W100W000FtR020W0080040G2080GW00v110
+0020aG020000G8Ge00W20n0m3I0400800G182W2K0I08W100010mjn60a24I0000001aR_Du
+_O3QlwX8yb00G0m409qjl100_EcaB10301L@R000WY9_DOFV3wMsWzyJ000801aGmRzD02WK
+00Ga000O040G0Qsd10104rxdGsejqwV50B706DdXAltOP@40800ScV2G00WW0128000O5030
+0Z00900W0000G20011000K00QtkYhuPewy7UFN200GCg400Qzt020W04100EwFaI_JW048W0
+00O8200RpRW000C00080C0004400922uZH300W40040eCwG000WCVv3HsRm_@600upBqU3G2
+00Cr_94I000000AGG00aG00X804e000W001WG00301814e0000000180TzR0120mXUD85U6_
+ClY_yJO5Z4_ad1ml907zRmr9CC_S5DyR000022010YW0G000088W00000008200010810W0G
+04000W0Ge4CW0Y40520048002G2I00n000mOygXCWf1hqpmB@60WO00000in04WE5P008000
+41WLgt0409480W5O5C0880110gHGW0mY00G1GA0OH80G629Ge00O0024020A004P00G02800
+0I0aXtMh00800000YlsDuulA00mT20C00I00000W008m8fPl1000YJFDmW82000K02084459
+C009W2K1Y2E0W80P08068W803e4884218G08Af4000098Y2FwuHZy9G108uIS30008205K00
+86000GfD_D0G000up1004HY0G9b00c20W4KIe000008WuyDeYS3wml2000a40000800W00WG
+AAeq229000040AWWm4004G000G42H800qfV800Wm0000KIW1ZJc0301WbaI0000hW001WI00
+8W008080002W0000WG0WWoWmeGx4e00G000I00080H0YWs0CG8000502We@D00C001A08110
+H4000080LSil7010000Y018G005848000400780G00_kq00000m440000h100800807Y30E0
+ZWG0CW101000GG08383ot23080020G2010009C310g0611204S03zPOGya6081012H020008
+a09885002y7Z@@J000a00004W0O0jqbGk@600G0W00000aFWbaD0K2W00GH0G0000AW2AjV3
+Y004000G04b0086If9H30K040G020W0820GI400000WU3080Wx5W0000G0G0004A00vWxnz_
+6002Z00H0W68i02400Q000080480W00z200G0t40008IX_90C40w5000W0000400qB0001PJ
+0010K0l17xBHyp9080000qS0010LD0000G80ARE1n7m3600WwXs0W2qP20m050e0SbAF00aC
+4K000W00Wg010000S000LbF720U000eE0e0000800hw0St@1mjk14Hux@@O6000005900EBY
+D30E0O0yZG0eo0G3yFSRj1dnd000G0I200a1aH418Z8I16Ha28904G6W0060P440_P00OY00
+0000GFu800Wc000p060O0Cpm0O71GCS9y3k1rpbW000WwiD06000C0C000O000WdYXp0W106
+0L6CI1mWjzJWx_J4o10WlnJu@@40F00yYk1@@R00Uu1000pegg0GLL1XP@32ym3qD09axP2y
+5000001W7U0e@E3seE40u@@000yXP_100010YH4Wt@F0_@F4y@V84leKfw0GCvV340G2S3y3
+hcRGGuF4j@900O_AC3ZflPOKjGYztWJhV0W10m8R9atBFWdH0E5E10084291000000X40u@@
+4802002W0u8T304W000080000ISy60m000G400000022000004sBlYH_JuwIOgLa1t300FNp
+mYw6iOk1JVRG60CKht6ll@0081WUeJOlxAIo9ay@J00WWSht9000W084o0002004W0Jxp000
+2meHD0002HM_6yul10021UOs00W800080Y5t0000e000I00100W020014mmt60O80eQ_4082
+24AF3BBLHgy6K1i100000PQ000e084U6G0020W008R63kft000W00020000JW0004121204W
+2e000010G800401W0640005205K022G8000O00002Gm02WA00b0W6H00024W081021002G40
+8040G0080000400X000002W4002010002000KM9W10040010040004IV2000mXF2000G2008
+00H10101240000W80410aG0Ig000X0010C000A0008W00OG10004G1000e2W010GWgE08WW0
+WAWY0620H10A0G6004GCH034g0IC40e4W149C106W8W40101040520Y002G0H0Gl@R00WW14
+80000810010qqi10WG0kHy100m0p@p000fI000mWW008000042000W0008W02080JaQ0G0WW
+mzC01020G4404G80WG0W08G0WmWa08090208G2DWI46G20O0aA8212BY4004g218G0r@R040
+I04008ppR0880000080060cdFX_vJ01G00040WaxD8lV600100080OfU305n2y@l100P0gco
+000402012811A20G00G00o9@6000X000W100600Gm80G2001GA2000c04010000410888000
+01G01I4060G00WW04600NcP0W040006W000W8241y@l14200410G4gOB000GSC10yn@3J8Rm
+p_6000OW00Gmg_608A0OOV3040000A00402800GG40G0XyRmp_6ael10I04880Y0681W0I80
+049420W000W480221000008GGOqI4zc708g600010G20W800m416atV200042zp000000092
+040000a01m080000001200251G0100000200C003010202GX000G0W002004004W000G0000
+0408W00S3l4Rk@mj@6a3@60740G000Kll1GW20IFFXi3D0410000q220G008W008W20W0000
+o002O000010G10200200040W0040018WrzCuED3Y5p000W077O0980W0zJeuV3MW_X4HPOsU
+9000WYWG00010Gex6W08200H0msz9ShG22WW00010G008001G10o0800W4DKQ080G00W0Whj
+c00Y0080000080GW0GG201m040W9001b4078WW804120018OGI3o1NYuBIeP@A00ek1010G8
+12mrW6020044001X00WSyD004f006OG1m02uQW0m8010061Hf1eX0O0100210Kb9W2KS0015
+410810240W0101RO0Y406281m0I0G8YCW2Oe00p418P015m80000110GW2004801410K0005
+H00NeomnD9SwV5WKFc0020000812000461080W20008WG0G004040A004100000D0G000eC0
+XGfA1020011XKm8a4447H08GK80G4IG80YX3G40C01GW42KW08A0IW020G08000010088100
+W202W00008f4000G000GDLOm@@6iiM2ZxpGLhL000WnQ00WCA50Af4002mG0WIXWG400G9e4
+008000W2K2400000G1094Q0e0KK00000806050901000K2H020GC39A0G4040H0aI080GI00
+A1200111W0G0G2010040000i5E3a0000G200440008W0005GZaR000GWxzJ8C@42Z7300ARh
+7O020W040W8800500XG002K00WK600W010GJ49408300000W000WozO681C1004008i80001
+00042e004W00Wb00e02200W4080W008000m0W060n2800000804AW200W0006008nV3G800c
+Re1n@c010002080jGk1mtMWXzDm040000002O100W0e04H0000G0G4204002WG08y010m424
+10000082a100BG0006040HWW68Ye000400g02010600W204m0G0mJG00G0a00G00W00000W1
+H20T2N80W2W0000He00108Hmu_OuG000500000028000Gb00kuc120000G00033008E10080
+WX2000W08e62I0080HH442109080O49a01007C50200000100I001000100008Pw7t0000nE
+000GqBG14000WY0mFy600W2000WWL00W2tVubUC000YX_0010a_2W00G0000020gS01W0yNe
+r4030GR0e4oD004U0W000DGe0pyR0Gn000040ez4610fDWQ1054aQIU06080ed0000uDfV10
+Ae20rTvF830eW000G00m4304D2000W0000Y200WGyz30000S@70y@@p0L1000GVz2W10_zl2
+0n5000000WYw20000uv1GpqF0Ks10u000G002n7000008oZo0W0OrO78000GPB0G@N000000
+MTO2000G0s1O0000_30e10GGt600C0IJO0AP00C_1008000W00003W0000L4k00000gO@@pm
+UW60GW08@OCKY9000k000K1E0m0KYX1uE00WL400a5d1m0S0W1eY03G710WA300GcSmD0e0m
+503G7WV600T400m9000k00080E0m084X0uE30Wm4000000080W0000SL100q7eW400QS1d10
+udV0000mH7100000rN7WE@L100sXV10004000WU000YTITm0xWV32Bt000iwm8t@18000um3
+0yP60_vF0yxFa0MTW4a@080000L1mlu30Og300RVRG4yFKZb1Dm@Gj_CaXN2b_72uJ4WLose
+0xA2kF4801WBbpGjJ6q9k1W0000G404DE3W000IztWA_aec@4y400SqV20410oxnWDlDuyP3
+W180aPU5LfRGiv6aiU2tGNnqtL4lR8J@d000pZhsFf5EL0G0W0G008jQ3U9tWGCC00008W01
+00009lndmbR6i8l1lgZ100000JD03od00W0XjpDeWx4G00000K0S0_AUWF18000jld000010
+02Gm001002C80G62G08000H02000DFc004H0000082G0sYFXzDDuXT3000Yynk10200AVF10
+00KW100EYmWLID00020WG0WTQC00000WG002000014402mIH0GW04005202881500080004m
+000000e020090400000W004010400001402112031C818I0800000140O18b1GOW00e040G1
+20G0000GW0Yo2k60G000082GEh6i1g10080020WKXS2Y00000mcN9l10100gdoWzuC000206
+00G0AA00400m8e00440W0004H00G8Y0eG14000M034aG001m02G14114gG940W2o1Aa0A208
+m0I1082DO880eWXKGO80K0Y0000W800a2W20C00000X0005S8E3UPY10200G080k_d10044r
+@p0Wm2WM_P00001002H0001050400G00BG200484G00G100Ee10a180016IW2880AG14A0G0
+W400001031O21I0400g0W0A8C02004tw81G04fW000008408000Gm00GX00W200xmQ0Ie18K
+000004G0080aob1dxRW0WW4004W00G00104Stl10W400000pP00040W10001O0002400c_F1
+0800008000G0004W08WGm_M60O2804401W0W00105000WDG0202010GKG10a0041102002K4
+G0000WX000000Wa7@D08W0Ik_60400ypD3Qn@100022010ctF1a4023_@000QD0040FtR001
+0000I00040000G82020010008W0001008010002008010WH0002000Y400W0420Gyjl10206
+00800004G00I0GW000011001C00W1810WuzV34021300004G220000840400000400108900
+0W0C0W42GG0DCQ001000W0YG00012000140unV64PR0Sol10020_brWh@D060010044010W0
+0200WG400HY0G10Goj6W00W4G0G02H250Gfm8ae08040800W0C01H2T608G0fjS3W00O200G
+vBH3O002004000a08200H6020421400120900unV604HG02000G80GnP68008eJV3000mUOU
+2d@Rml36001028002I001002900000G01smj1000G0810Ksl1GG084000qQY1ztR0000G00G
+004X0IVr0W001DMQ0000Y1JDeOT3W820ijk100010002240040022810008400001000YG40
+1eJV3Irt000PYXtd0G400020000X904GG4tl1420W8002Ktc1400141012800GG8202G1WB@
+D012108800GW0G0G00VUm0000CeGA18m00WX23mGG00G0028E8000040G881m0WW04YX0uGK
+O40Zg8024GG0G00G00iG0YG0020480100028080WA584HqzB6G000enI30Pj004000020004
+W600010a000O4W0GOAW0a2814HG328m8c2080AQG2HgG4ZWW0G16e0e2GC20W50O84Y2288m
+1HGG02B0800K001W00O8004004eG0014OG0AGG10m02X0n0Y0000G5H324Y04YW0838A0004
+00G0W000W6X00G00HW8200a0WG2W225K02H4X8W82G004010e000G2I00000010001000mgL
+0OuFV308040WW00G0G0Y040204m0W0W1880G02000A289000820804OO8800258828u8055X
+08I8Xe244HQm10H07404o2aa0024XGe0G100000ZcKWIXYe80WeqlD00A19000G0eaI04H8e
+40A1005100G0b800I0000I924040G0W00W00000G902G2GG0Wg2tW7@D0001000_S0W0G420
+be400228I0G0000W000e4W00000WI0104aK24f4I0W02W40K009404WG1W0G48Y00K240a00
+Ga0b000803KKYI0a10W0Yy0C0B0f002H84101Wm0G1004G450GP0GA2K010u0y8W08OWe4q7
+f108G2868W9408010X9W0014004a100001Q0125004G00Y3WmmP0m8820o030G01083014X4
+qak1802GOAXGa8k10WWWeW58820000402WW004e0eC80YGG00W00A08400048G8G01418004
+W4G400YI000240IW0e808W88A00W0OY20841Gm08c1H104Au8Q1XPm24009O0E0W880G0W26
+W004034mG204A80XWI1W164I44W0mOG4G029000O4C00000800O000m8G10000W8m1C1m000
+80X18000W001198mmZl609482X002T0K01848mW0000q4G0u14111e0411HG26WHG852n0AC
+3J08044044040808000W801G00G408G0WY0001GP010Y0W00018W8DJ3W0H0qYa108n100G8
+0208G0010GGG85G088000W8eW00014KY0GsG6yAl100Sk@@t04020000mU9r0008G0120000
+10081201809W00CWeeG000410001G0404G88M0500000201W0002WI000G40009A000W0100
+100qg0000cD000000400G0W_0008Wx5A70000kN02WAPD0z38000y5qB2W00GJ0000G20000
+00d2C000k2z40G00e90yzl100E00080J4000eIJl30400@200001G08000u200WWiLWh4001
+iMX800E0420W00jtGC08j1mK2000q4040020Y1000GlB800W@2jA10HW_B200040XW040W30
+002u4nB0W8_BOcP02ymJbgK50_l80yVHL5_YCZv5LbgW3FunCJ006w0aoA000aB0geI0000Y
+0DMKW9y01t00Ac1WeZ20en604N480001u402GU00afe1o0H0gLnWfbD0L18446888CO2WCm4
+0fG000Wo600Wmoy600GP700200StT000_0Ey00Ks10nC3Wg@70y@7Ig@F4Y0084H0G8_00WP
+000g0W0O0M1K4qHe2uc10mD305O30A030KWA0d0C0k9O0Cx00Oc1006300GL4403G90L0f8g
+0IHH2cpYK0d5f0eAI1G5O203WA220LKOu600m7nH00Gwt603mFWA0L400tC04GH080C0G0_1
+O0y6eZfJ2S60WY000O000q1O0W1e613myMWWvj01GR020D100_140m0yJW1m510WB200a10_
+@B1y@Vm2aw0HyA0GF10Oe30c3F0@@704N4Wfl@O0Ns10H004l00KL60008WgK5bm3UCp4p0u
+lW0FS1nSc22Uu5agg2JLL5LL1Gm@90oo0OzV300mgdnd100y0w0m00hE00bT000xG8_00000
+0g@3mV@700W0e409WLJG90H02IWW2AU15aW2m@@11Yu3pkL@xV30C00qoA6VWjn3@R0000tP
+00mD@CiFz9Zqx10W0WaRt8jkJc_F100GdXUppksF02008DlD2T4Z1_314W0mS22Ltl4000GA
+5VZq1Q10005j00Wdo9vj1I00G00000180W0G005042100216wt00100000400810800w@V30
+8801W20uZT96dj200N3X@RGfJ9izl1bub0002WYpPOQV301Ce000200W0ozx604L000W00G0
+00GW23G10W0OW00W000I00W101KAe02G1X0e12G0c01500000H05OW30401280A00000G0a8
+0004G8000XNQm@@602808sz70LK0KwE3BpR008W0I0000W028842G0012K4A190201I8800O
+218M21OGW02e81W0bOW8200IOXG48014001Ga201000W0CA808GC4G0G80Y110C888O00005
+000H0000200012002X8W8I0G080XWG40C00040400008WWexPuGD3skd1000SA100Afd1C00
+W0000W020300002802W188008nG08W080a008000104IX2G00CnK250W4mG05002K000006f
+lqD000Y0436002000004sOs0e2038002G22404W61C000G00WciD0400HK_60100gXV3EuFX
+6ab000b@7z9ycF3001Gozt08008G00GWG00000G2000AG000104W0000104G80W040GWW0Z0
+G088004YW1G0000O821101092Y5JP000WOrq60X0GOnU3ovz11W02zsRmaqO0A71uK4C0020
+0010W400m3m6000820G00G0400G00X_RW0000W10002C000W10GH00W0480G23W04W2G201e
+008W0WG4000Y0G060W0JS@myu600088gE36_tWdpn0004TJtC00100Y00001400m00FzdGWx
+60I000HK0qht9Cql10W83090000004040oVH6G080erV3W800Cjh10000tfpWU@DuE@4o_tW
+CzJOQF3sOl200UcXxdWW00WDdJ00014020WQ_DeNU30001000Ouey40000snk14H00Ydt000
+W400G010080088004002G0082W420000002004040I0oHqL00180080008YWDEteNy7QFmWS
+qD000W800G00040V5Q0W000401080H000P04Yl1JfRmNx9iNS2414WKY00W12YW00A000W05
+WW2c0500100GH40000K100005200Lwd01GW00W02Ga10wfqWqUhG600mPx90010WG800Y050
+0KW002010YG08GW022048018GY2046G444818Y880Gf0200108000C000I000G100W2WC240
+6002B04u000KCK1Yn800Y51048A65WW60000H100W046WG80Gs3F0042G00W000eW8@DeLuA
+000000u4jhR602000800G0004012082420000G0202006ONV348WY860mOqV30WW02W20K4O
+034H06820002m80CW103002EG00000Amf0GaLAe4000Dgl1K20600H0G90000c100K000000
+C305QxL5m1F0@@d000G9X200a81O04100YGWXIA104X41Ge402114W00A10020c4f4b0CHG0
+200o40WWG012b0001400KI940G0aIAb8B0001P1WIA4XG0000G00010G001010G000WG000W
+808019HBnoIa000WN@00mz@6mHH000401HG090W01040HH864W00CW824624100KKH0X0000
+c20I28WC40eY2X00920W120H0000JC91140a6P44WG00K00Z00A4W8W8008040004000Y001
+11I040YW60410080Y0000X0000cTrWzwJ0010Kv7Fyj@300WMty_14000008106822000100
+3008202O3E4m200a0UA4401g0Y0GG82K0G00W504002n14W3n041510848150G0RW00W13W0
+0GG0Gw@60048eK53YgF10A00X@@W0000108020X02IP3G1B0j5pGYD64Ul1040481I0CsU2W
+0001080e004iC530201SAa182I0W000WGGG00000LH0020J0viP004010000WB0000Wh0e20
+020ioyp60008q54000Q0W7f3f8P30000d5G205000000WU5008iR2wF0G00wB820W3ep0tG0
+80@5wD0W00zN420W00041800N9844oj2zd0K08tB010mXWGW040e@6202xlu2080H1S70m40
+00Or00Yu50GPVBj13JR08Y7W@@D00L600000000bPxdWx20Wazh00GMJ__CGG00002IW12Y0
+36aW0C4298004tV20ew00iw0C8z30004XF00a7G20G2GCGG5100m000e2W103WA260g800cP
+0aQj100300WaWnE80n800YH00WOnD040208080O0G000m02i73mKC0ZyRGzt60qr00m41W0E
+301W102WBm1WcWQCC0tP00kp240d580m0G0u7u0WBmDZE0N400@C00mP000k000w0S0y6udX
+HK068W_3Wg@70WLtV000Goc7mbP009x0OMW100000KiJD000i0_@t000GM7KO0iObLGS70m0
+@00uv1iiV5000Gf6004mV5tLR0000S22000G844GG88eW44GXG8X0MTKG10HAm00G000hE02
+WG000021X02fpQRIEV300IU00000W0WqANB95nGCvFm200esy40020adl1xb@m2s6CGdA0PB
+0oAVZLlJ000WW800200002008W008Sjk10400cXBXepnOnQ66ipcoIO8KzG2Ol200303Z@Gb
+t9yA_63xr20WYqK7E12210W00008000A00W004isF60101MRt0G00240040W0000e002G0m9
+u98G018TT9000b0048uXU62Sd1Ws009vRmhxFKCl1nvQGv_600G0O3c4_7oWruJ00102W000
+04000820001OWXW0W08m002108Y0H002K0000O240008e01O8mohC000404H002G0000G000
+10080102010W00WzYCW0000400082G0byR0000O1300FzN1080000408400000A0014000W0
+04000I00G000HW000004000120000080Gjfd000W010008W0I080800210X2Ga10K0WG8W9u
+O02G09C82000O0G0000028Az_4W00G0808mm0W1201WkzD000G00GGeXxJ00Wdq@@90100P9
+R640000G0A9t@40W000040vg33Qpt002C0D@R0008WWpC008e80080W40100024008inl100
+40W0B0KEV22020IXtWS6C8y492xFXe6J0a53mM6U0080W20W0400000I000W00W00Sbj1rYP
+mnD94@835wR0000140W0400640Y0SOQ2RhR0K00W8fJuRV3AiS3000CfKcmCZdiVl14000Ei
+43H001W0e0G2288000urS3wDoWbzDua@4YytWphDOrV3In4304wbtau100GW9qD000WmHs9C
+qv6juRGv69KiE3ZIcGHdm0gz18mJI04W0080840024G40000W0dpRG9UOacf100010C02G00
+0010GGh@6iUvCbxRWt00W3dy0000810G010008000p4qWFaC8jFCmS04GW80WA4800GOG2Cm
+0000600220108Ojl4000g0102eHL9s05300vK1mk100W400WA0G40000020041C018100400
+08G2H0000IqgA6001WHG00004G010500000C00Y0010ZSn08000400400W0000HOoV300100
+100020Wm3jR0OV18DMF0001022009800WGW00G4G0U0008100W008iqD050028b80088Y4K0
+00020000500W4G000Y24028100A100WG401Y20SWQ2BsdGMSL000W6P00GbkU080W40A0000
+0IGe4G6G9WsKbX0wg0080000W04040A200wbr0W00000GG00100e0410AGGijIqmh700ino_
+T3082000020W20000G10A0128014GW800oYG400K4i7004H1080002286630q4006000m10G
+nL600001H00KfkC0008AzsD0gu0CIi7001WO0000200Y1H0000W88148m83900849DW008W0
+mcnLW200yBK30800S@l1vuQGtx6W0H0u7E9MHU3000iS500Q3s3000G04020000YmG004I08
+00480G004008ou43K10040KJwdt0000Z20000G34J2W100c0GkL600QB1X0GQCSF0W00000a
+GWpL000KRCPF000010OW000WA0Wh4000uM180000424008L0C010qB000G08YFA0000bD00w
+h006_14kR2vURmy_6y2W1vCcmlqR0wL0OVQF00X000042234246C822O88K80000000kxkqK
+C0W1000C000K1E0m085X1e410G9200O400Wa000C010S1KHa1Sp008ZKPS20400Mns0W820n
+mXHUs6yXD6m000W1m51I03043K48603GCWE0M0C0_PY0m0W8L0CKL000W04XxO2000yS00Or
+1xz0YB6WnzCe4C9KT00arT500UTIyU300m@00WPuX70m3F0oCU0a@108FyW7ggA@5W2Um3W0
+W70eG0rK5Dk4WJS0UzEdEvm0800O5QaKNT2W400UA730004000mo79ai4ChazD00OIzwDIjh
+pmiwUC7F3001000C0Sn_60100YK8A0W00003000K020W4000W20004G00G4022s8B1000IHY
+PGpuCqTl13Dd0000m2yJ0000kQ0WWOuDuk_GUWt00008zQbmuz6000G0600Gmo98a0W20A4W
+0444XG0L009010B300L0002Y00W0G80WWGG30W020884000101O4W000008014I8p008W0Bg
+P002000W80vMd00WHW@_D001GmW@I0224G0440004WHkC0W20400402020000X08003004u0
+m46No0002000419041Q028L80IW1G50C340Ai00Ke00Y9200G100W2Y0410040113SqWocD0
+920Gdn6000WOIP3G000W200ezw40hL0C@l180102ptWsyJ00004400Wq6Deen700WW000002
+10Gyx60X80eRV301000m0008000000m23D0000qHu6CmW10004001eaKj100642LdXCtC8lV
+62yt0000S21022FR38G00rmd0K001020G001WVdpW55D8fS3cxpW@@D01041006082000G01
+00020904uUV6080800G000e0G0QCyWF3bSB10WDf@@XvhJ9QHFX4yD044W004100011h9dmB
+F60802O0ECE8tWgBC0008GIU6igV22cS0IyaaW_DG00W8488WVqb0032G@y90008wrC30014
+1G00f4H3Y8DXJmbOyy4MFIYS@D0000gl00WCO2Pwx74800yuP5XmP0000YeGO0G00mLx64bk
+1fUMnx@6CgQ5200000Oe4Ej700041040qZl19lR0002WuzCu_LC83H282geG00804eG004We
+W00GEXt0C204rtQGM_C00042000006200K400W400004a@A3r@R08U0W858fdV6W0C0ir@3p
+eR01000O0008W00W82090445W88A420G0400G0201G0OKkV20404xqdXtwPOw_40020GW000
+200W000000089Jv14000410W000X0000200O004HW0K1YKEDOpV6W800000W10OG0000GG2G
+GK0IWe4W00A00WI40000900e407jvHRy9CUP2p@d00K0000di1EZ10008W000vVRG@x68000
+0G01W400WA1aG800mIv6080K00C0W09W0G0L80002040080I14100G4OOy@l18G40cgtWCBC
+8U33IbB1GEE0j2Z108804200xqR002W0000c0002Egt04000XSPmS@C000aObV303G408040
+8004XW004080u01WoTrWc@J0GG0mAqC000W0222GJj940l10001g4s0000u9jl1110c@@D00
+0S800e092ImO22000KAA53000000Wa0mEYJ08000004H0040W000a8000820OhU3W400_1C3
+L@R00004400WX4p00G10G000G404Vqj200VkHo72W2000000eAG0040G0I40040000101A2W
+8xU_018400304000w1248WGJ00002000080Gz9840mz2X2qbf7t@Q0010e1EI8BE608r0K6G
+5000GxbF10120000H070000059L060900StF30WG10000WWq20yq70000i4uC0000aW200O6
+00B@ZHdt6aSM2nYB1000C@300byxX700000W7000Y0W8Y00000Hm30Ae00K500H_p00W7000
+WgjgRWm000E300m0G0W1G5H7mF10Wz600GcawC0e00mwq641F30WA00000f8008ST600G4b5
+N2000jluN2000HdtR0W10W31C0G5511AAI2GLa403W80L0f880IHH2W0WKWO@J0600000L60
+00000W_50YF2W@V0zWoEVf000000W8_000G00Hy10000sZR6000ytx1mm@@C00AeFBkD0ks0
+C9l70O60000Kfg0cHu1fAL3YPC3EyWdggeA0_B8ggIGg2Gf@600LX4000Gk2900G0u3LRII5
+3X100HNRJ1tR4SB3Pop0800W@_DOO_4w6@X_nV8YU300KL6oV5ZZpGd9Cqnv3niX1480Wmr5
+ACz40AL0CvtLp@RGCxCimk10400sQFXjpVO@yA000W7DJ2TjpGt@C43c1ZcNHtVL00G2G010
+0Wm01H00I04000200200800I150A4180004400808808W04G0GIy@9080W8n23M8pW1rCurz
+400WFdCl1TfR00OWWgvb8_zAcat040G0JwRmQt600W00000Z0G500H800400WG08eW010A48
+009090W02080WWIm0WG50000W2HO800GG8848G00000m000X8W0405100020410402002400
+000840AW0yD0Wn200000001W010GcV@XgOD0008m@yIyZA30W00gltWXxD04WI4f08080K0G
+0H2m01CW0W846804280OoG042800G04WO00020053C4104882dvR020114IWG0j000000GG0
+4W000A2000G00XXwR00008_100TBO0004WobV8oV30G0Gill4VxOm1@6y@j1000H_zt000G0
+G0GG00C000009uA3U@r00m010a2GHG00G00G050G00088002WDzRG2@9W0W08XM6G0000O00
+00G1OHv604200000GiH6iyW73@p0000XpcC8yV3AIo00J100008Igt08400Lxd048800003W
+00800049218eXV3ojt01G002000180G01GWGY0020200Y8I000G1opp00fA2btpG2X9KXo9r
+YN104002202080KAct00G000qY8000008Y200Ga0000004H0G00000W1SUe1G40G0010A4H0
+008W800000Y00002000060000W8400008GS300G00W000C0Y000G000W40WIqm8uyA002004
+1YG200Gsm680G0i7P30040800YeqV3Y@FXYyJeAV3G0000e1WOFG3G0040102uiU30102W8W
+W0aGG02220000000gsBAFXz@DuQx4Y7d4Z08G404010508200200W008WOC400dxdmZ_9ylS
+2000G005G0200000I4Q080o000W400WO0KW020I000000400H0H00W0cwEX81D0y50400080
+4050000008G00000G0GqBwg8090W0C0uW_60G4a08000001HY0G84H00401W0050W204GU_6
+00W0G100045X4W4H00K2O041010L8680n508Y8141B80GG4mC0W4W15oAB0Wg02Y8200G860
+818W8041000YL140305WG0900000800WGW0080H4WysF10H4A1620ee804004Ha8WG120G4X
+00201020800I40WW0aiEf1G00Wf3Y18040ao80W0HCGW0802gW24HW00W000304Y00K8201A
+6I1H0GW0OW1000168WG010YAh044HW090W14000GJRyz60G504Y00i010020G0tzAHuGOG40
+2604B8GA59Y8G4001018H4HGY000402G1I90080C340Mvt0A1040G6Eea2X2G8100A000448
+00WI0001840AG90A1K000W800X100WG90G01W00bK00I9000GfXOC0G000Gj0000W00G1bG4
+008000OcU327F18000008H27V3X0f0G08bG02G1040290G0000KA102II00G01002Y0W008I
+g_60W000GWG00WW0YG80000HG0400124108WX00W000800002ea20000801A84WC2O40W801
+400010H1W000GG0000Oz2000WC0001Y00YG8Ps70001W8000100mWmRG4GA114eaY0001GGG
+0W80AFo0005G021m2@t0W00H0000W70006a2c008W2830418E241W0000028WHO3041G0000
+0G80000G00m80O42200G00200002002W000G0W000WGC20GaydDuxt4olF100WWBrdGDwLGG
+00108W6002S46mX8G0Z09004dl1000K0808qfU208W00108020YW40Y804I094008Y40490G
+08000G0GXe41I80GW020490W00481200204W000W000AK0002WG0000e814G10WiwD008000
+00apZ39uU608000K0GW8100G09000G1001000@20G00FCS302000e00000i22B008GqBVjO0
+00WOH0080w5Q50000m60O@V300S10000qA4700400l000n@R0w10000e9000mP1b100C0K30
+0GYy6aBk4020OK0100q40OzV900zm0080a900mr660k0000elY00GV_7mFrLR00000008W00
+0QfaMQHPcd1jQf5m@u1CpCo0m@a1l800Ks30sO30c97KqpEGoE0WaT0W2000Wx107y1GLY3H
+yO7YuJ1m000Wl0F000000GV00OjwPyV0m0W0G1_yZ14nF8Q1HH000M400d100m000W0m1020
+J4608000cP000H1G1A202m0K5e9uiL505A00hC0AWO000g000g0A0e2KHO6W110WA3008200
+GH00WP050g0gOK1Kn0uBE30D9c000m000e2m00306Y80C000G80awF3002WH40WaGk1l@@00
+0GC000L000g0A0O0eYu2GD10GL3WBxV0z10eg300000e000OmF7G0201WwOel0K4H00Sy200
+040ei320004npEW_A00WV00Dx00iw10Ks12000aiH52n700000K100WAKm000040L5700eF4
+Y@U0000G8_00y0VL4m@000W1200G00P60W700mC00_TwXMdLvXV3_tN200x3NHdpwGLyQ13x
+rYnN_6iAU2G002UyoW58VO@@409R0Swh47ZRmcTXqrj40800U1HbP@Pej06oXN2z200@v1Jl
+mOS4S2RAdm2nIG000OPz700208002uns4E@N200jDrzzm7Wja0l1@Ed000G0000KTwR00040
+04G4821H08G00G00480W000e000000200pcr00W0WtFam3m6KAV226408000SRH2We5W4000
+0WI08BN34G022400O9R300040500000W0020e92hu@@4040H0000W00CGm@6081210W28100
+000W002e100K2002010X00XX210f1G42200W8401W000000I0W4088W000G401028W5W0280
+L0K8Y0O00WO10e0XI005CIV3aA8020010G0GA01X000H00G21881G008W0080e0890080W08
+20EFt0020000c0ES6Z@@J0C0080a00G10600044838YG51001208020020YKc00L0G02001G
+08A0018WA_D0GW0OA@90048000W008688I000W200GG0000000WQ40H00W0W20G7W0110082
+20F040402WmYD073004000C0020100_it00B00lGy004000020m0000010yYk1nVRm_z6040
+010W0A008002039WR082068004j@R00m0182G00000007108016684002448288G00GW0G80
+94Gw@V30hW01800enJ3ISp0e040000KYHt00100020GQEvaUuJe2P300000044uhS3G0008W
+00042G041W010C00000m20000n4220000800GG8W038000W00024G480mx16000CX920OIg6
+8Bm00000001m004000001VpDXcxDe8MFMldXzxJ004W000002040RpQG@U6002200XO00041
+10008040940080a060O0oIx6W0G000000108111G0G04W01008000060000010W000086A80
+000HG08CV3020002W004000004X4lP8_pMsxq008c8hUBnNs6000G28G4Gz@6O010usV3csp
+0130W00WW0K01B0A0040020WW010000fV0016000404C000CGC00040G021wsdXpzDexE3I9
+jbmZD8EV3Y2q000000G0200019900fwo480W4G20G0041002G8G00000G0m80OW200104200
+0G00009000O5100G228W0e00004e0vDW00G1440WC_CehbDIb73WKW0000090W0140002020
+0m0XAzC00W004050000008GWmZ00W88W18W4202gO0mYG2048020W8G0XWA810H0X948e845
+m8mI0X20e009i000WTTG003OX5PWIW0Ga1W091022200HW88804X01G40410eeV3000WK3y6
+1z@08G400W00GWH414000180004200G111e052O40mG5CO453bGC20eqA2210YK4W0810410
+054X0f80mW84C0W8af0104O194H0HY08I9G3582004000uW214W1008G8I000mW00WW0K189
+0CET2G00002040004eNPCYZFXrpJ000W00H40Af40I004a0G00G242000423G0A000KYW800
+20G9GWClI3000000W02001000Gf3TD0Ga60X4W0Af4HaI800WI41a40000e4000AQ6204Ie0
+eaI4m0f800AH00m0090WI210e040A1024100GqaPLCp@6000DO0G4W0H8405H820G60W10D@
+R000W0Y1M22002400W000A51080e0W14G00W0WG001YG0G4G20G01003mA21800G0300W054
+0G00W090000UE000O0344W0b058020202WFmD00001080WzKJe9OL00041Gm20WW10008800
+G0024C801001008NU30305W081G5G00AoW4nW0CLLOW0000WWW5O002000290W0208W84040
+0008c0G0_@t0mtP008I010088080100506K405WW20W806ht0W100000008WWSPiA080G800
+00040Y51X8410G820W044050W0000042840000ePyD00201008000G004G0U2t000800412G
+1HW0G10W501041009K20G400100WBY4B140000104GA20G802W0100100000GvYn9SgW1XBh
+2wFWG00uBG4020G100H0W3010005XM2G040a00t@t00Gl8000WP2K00000c800mx@6WA0W20
+0Q2wN1G00uBL_R000WU5m000y5000qXY_G0008@2100S0888020wT3X0WqN0I10010M1WywD
+00m00100mLeF100ul5LLLBoCp00W@1Uug20@N40_l8LhAHCpC00MTgW8_W00c10Y00400001
+50yK50iXDG0GVW00_0Wf0W8U1WOr20Hy5WAg3GL574nZVMS60E000uxcj00yU0WAg0200014
+g@Bk1K10000@10Ey10000ai1WY@My00g2Gm@C0Wp0G1S1W2u2S5m5uEZBWL400h80AWT0K0k
+000O0E0m0m0W1Os10WQ200K000030006020C0KJK1C300G5100E300OC00mAm0Wn0ACp0KO0
+0gn000000S_FC00Wn000@040U3Epi3Sd10e6300oct0K180m0qn27dXmqm89R64U0C3U0000
+OgAu100kJLu20Kw50H84_l100Hy1Ks000Z00W02042F0g2V0G4VCXCo0PT_XG41G4k306u70
+809WwyF0gGTCy220bj0WAA1W0000ekbT0m1V000@0X0400K00LKDkBHjxRCrzCvRlHt@O0YR
+1uVyYYqzXW8b0100GqJ60220000Wm9n6Knl116PGPvO000Wdy00m52yKam9fwAnqI9K9N800
+8D33@ggDb00001004WcAD8F_4YuDXx7s0Gg0Ga2E10020WW21G000W02W00G0804IS_V20e0
+000100X0Ga008mrB6000101G1000145900VVP082G01K02feRG3_600007@8000000000Y00
+0WW00CS6d1LkQGUR60W000028Gcr6KdF980420G1WWG0100020001K4G1W8W001S02I0G000
+W00056KW280aW010Y00I0W00400010C0000G0G0W040020I00400mim68000001220a0000O
+N002I40000W820400010002001F0O01900200044000W00W000W02000040I00WW000Mk810
+004xsB1014u1yC0W008885H33002080808002000W0G0a284mG003PR0000O0G000G0W0mG0
+yJY1G4mWG02300200008040012010G1000ky10e058hR30428W102028W040e00002G8WW00
+08000G000m020W00001020GEABXTpb8jr440080mG018W0o@@60e00000304G000m0000480
+CW800K6020Y4X00Yn@C0000205000380ZzR000WXJ7Vma0000000000FL_@m_S9C_j100X0Y
+pt0W000x@NnoYF00G0O1V3000W00888yx400G18m40gQV3G0088W008IL308000000iWV30G
+46W0Y00W6OY4020000000Mw@@@XPFnuefG000GKoj1W80000G0W0GIW000W8000Y009000G0
+WW00n000m1m0W0000002G00988m089G2G0200020WE_I8WW4ITtWQqDGmZ1mz@C8G00u5_4_
+CJb0lP00020IC100400O00000O0Cxj104W0000008800002000020004000K00G0000W0600
+0A0CYJuJG40G04G40000200880486m6001000@qwF000GQc_400118000evgJ6CtWd_D000m
+00002G4WG0G001003224810G00X002H0000X02AjtWlyCuCm4wot0H0G000080GGGazF3004
+xI6GYd5DeQV62PbafwD0004804K00G01G031LWW0G0402G82AY488082404W0051G09I4m00
+000GG4A0A0484H8W200W0Y0403800W0001Y0GL0G000WfG0H00C4EOMHG00005000Es0S@l1
+0050kzt0H000DaOGx_60014e103_ht300W80G0000H000004282W0H0G450408A41C04We00
+Gm0Ke09G41JA0GQ8250mW08281W02A6A2H04Ge010H820Yy@l1020100201H4X0X4G501440
+0mGcX05000mHK00eH@4000X2000f_p400124K09lJdGq_60G00G800mdt6G100040a000200
+0020G150030000KAyR3040eG0f0W2AHm7q9000028804X8G9A09Y012Ye4W0E7d100m2hBd1
+AG00j_R0000100W241300000bil1K200Yjd400441sRmw_6G4000000220030KKW000H4O20
+qic10012000W04B00101ug@9002400G030800AOW002020142100031000856WTRP8sN30G0
+0yZl12Y80001YG1008dIF00a04pV2JlO00000mGW0004000K0WG0W1G0201240080000O012
+00WC01000800W00004100G004W2Ske1009K00u020G020WW1W01W_HD00008O00Wu@P0GW00
+W0000808@@d022uaF5CeU@GC001S8h1Ppcmpy6000I00G041W0000XG84100004H0G4ubJ30
+008GWI0G2W000A0G0082G00840G98001404Ymts60001000suplCaVZ1HWRGlv9i1W1nxl10
+0WYosJG10GuPlC00Y010004J8C00W40Q0000W4041U2XXpmPw600H8M1000WU10000482402
+3F1mI50j@pmKo6W0250W00mXl90k28000koXnXSpk149p00001000eYgC3AwX100400eA00O
+20e2r00q@c1C0002i3Pa20mg50JPB0L5N003CWW16G55G000000e00800G1000000KCJE00W
+T0LT00gw0O2000ge00Wu@DuCS6uV00S0O2003000G0bnU80GT000009x00EzR3W1e0GH0306
+WA000g900G80005100g0G0C6WXG503300640HUR00K1K0W1e4XA05000f8008A03W1W0mOmF
+BA030000008eAu@4e80000039NV3UKr00202000C04H00ip0OC_GG40000W8200aj00MT1Ga
+x020u1Ri@10m3Wl@2W@3008YV0KLSl0p0G8U000000du200P700080WfEG3O08YV53300CPB
+0cPL00mFWKHTG55y0iw00Ou10O0082f400Jilhd1vXTrqtv000WOTS6_rN20W00dxhIrsL00
+0100040W00WUhPunV3s_UZ7mP00mNt4taKEi1FgpGjB6CcdDVQ33WR4WDuewxy4MMt02010R
+dpmsAXW00WeET60F004fU5tjRGzk6q4g1dlp0004WRwn0008mQz60002008G0062W_UDOCU3
+_fF100W004G0Q5uXQ@JuMS3s_t000YJ@VQGrw90140iQ_422p000G0ptR0e0002008dhR0G0
+0mBhJ00000801WYLIW042104W0a2W04401401a20Y9X02G0G40O0282200Y90eo004800W00
+G010028WFsR00H0et3COWQ369rWI3I0Wb0W02000010G00508W04Bi10010W008yTj1N_R00
+04102800010080220004W8000X0G001W04K0Vk@10W40O180002Oirc1O00aWu00Kla10X12
+0081i8a1W000H0W06OK2vac00G0000G900W1wdF1000mg000AIt00e00000010300300W000
+00G0WvlD8zV3000WCsj1F@R020200300VpN1020080G00040W08101000g402820180O0n7R
+WA002X001dmR0001aFMC8hV30200W000ug96_Vt000cl0W306ztW8wCu5U30W00G000ufC3G
+000W0001100400W020202102048000W00G010W02KW0400100wezXSvD0040mcV64ZIBjZz0
+00000390zV52G000eG0000842Q_4000800114W004oW1dvb000200240dKd0000G00W0TuQG
+Jx6G0H00002Gs@6iGV200W0nE0044w9bkRW0G0WxhP0W000001WEnPW00GG21Ciqa19zd01W
+0Wk_h8uv4kDsWK@P00GwIjeXCDY100G133nW40z8I_4EgtW4KJ0408GJ@6000Ge7V340G0Cs
+l100a0sdFX3@JOHT60GP0SjQ88G00EWt00D44PdR000400208nspG__6G000OkU3GW020020
+0500mon60006000000210W000zjb0010buBC0010Gh@6W8H000a0mXU9yvl1000mS300iek7
+Y0W0880HG8000W020bY00O8002001Q_tWSrDePU3QuF110e0008400W80010W046mat60001
+G10008000O0401vRGS@600440800400W0008116QW0010Z000Lgp00WxwZ@tOV43W0W0000G
+400M4404mSOD04000082WbkPuYV36vt000dK0I9bG4080W4KY800W4W50A1004I080aIb010
+A1009oae6000A100e4W0G004100Y00Qot0005K0G90Yz@1WI50J@lX4A100e400008012A14
+4W02804b0HK4a000200W0aG20b000H0000280W00fBRW00000e002040G010WeY00X400500
+02001KW0C0204W0WA2002020000O000W0500W41428W8W00G1W0A1000008s7rW4mDet@400
+0mKX33P@@000WmpmC01X14088004M00W024010YGH8u0H3G0000K000140010m00G00xhR0Y
+Y4C1Z1G2O0m400W2018I010800A2S32u00B0K00W35B00220044000P0000S004020411G00
+0m5c6m00GeCV900OS5y@600811000P01iG06HXe0m3000K00O00615u10ZG10200a0O30140
+020020G0e0800002C0W000G088000G000200008G002WGWW000820080Y02g00b0G0GG0082
+00G400040K200002008408n_cD00008Ge0WI@b0Og2mp@Re2400041248030G04G0WA00202
+1H4000044088b0020G04LG40001100H04802WpxD00q70120Gl00048014100Ww00G40_2w1
+W00Ge9G4020G00a8k10K4u40100mLGiNQ300C0G200400500G0WUtU0000ie10W77t02000X
+0WUbG08O@5w90e0WTJ420400401H00N1A002j2S0W000a882020800080W10000W04ef10WP
+000W100W2I005000mVBym3M4W@1Wgg2pCL5uXl8m3VHg6_YKLr4fggW3Or1Nu00KIP90W00T
+jC3IzF100Xx7w33uX700yF0yV1m5_Y0eg51m@B2Fuf20@ZPc0Wgga800000EJa2ef85G7W9W
+c0xCT0s9H2ipWa0c102u205m4uAW9WH4J0Z8006H0K0Y0e0C1G1u2O0G4uc10W8go@4000K1
+0000Oc1Gk@90g118w@D00N000k0d100k32405480u2G0m5m501WB0N0J000@00K010e0c0G1
+C1u2O2m400W900000008pW0Fy11W@n4ymZfC@70_74coC80G10mNZN2JIBHMS6iBD3HAm000
+0IO000J@x181F00881281G4KG22e4WyRv4Ut7ZPvY20mOmn@aCQNHxidmavIiul7WLP0YHmc
+qZPOjB3sHddQtt0000Zq10WomTg3xDgWtWxaz8qV900ibaE09DSBHzyCKxT2hqdmi2L01000
+I04mhW9SHc19LRmdp6000Au_P6gqF1GQD8LpR001000080G1n0Y2E10W0002000002000410
+10n9_9iTj19Np0400W7JJ00400045400A0048G08000G00X00JGRk9i1l1G0GG141000e000
+W00400WixD08G0mHJ60401wqR3gcr0000qC5800080aPa1vAc0404801000W0KUso04J0W04
+G010WW0H20W0808044GW00W8WG0G0W02GO0OyV3080W0G00eN036gWXA_I0010002208200G
+002120021000W10003W00400040004002O00m0000010YhzD00810004G000000iw0CG0ylO
+20010ssr00080G4W0syF100020480kJD1000ml@d0O00W0zD00G0000020002000K110W20G
+0440100020040mnxB1e00WAZJOcV600G0iUD3@@R0OA4WH_D8TM304E000000020qba6W2W0
+000G10Gc5014G000W00H10W0808W44G0000XGG0A4W0480ivl10580MrtWrxD0W00800010W
+80000WX8W8EzV5G00Ww5t00002OK00W8000OW00000Ghx60G00006084020000iGm0018G0K
+zj10010_LmWW_D02000002e1xDW8C0G7Q90008SvV3sEEXNEbOTB38I400240188200I0108
+W800014002CuV2vAQW000WgAIGI00eG00424902a00QYs0080008aO12088800X004881002
+000I000U4q00080G802wJt0K000W0080G08124G44022200G8W00pgRmdV6azV2000I00460
+00iOvS30G40qbl100046ZBX_8J0080000480284bkR002000021G000008000B0068004021
+0000W9P000G4qqh108I08cn0G8B4uF_404m40110W0014G2020008Y0W0008000G800000H0
+0ZkpP8zj400W0W20000G0oE56W202u8K60W0YqGS2Hzd0060200K04W0W0000W00020G0001
+200GX0W100000G00003n01GKN9qke1000W0G88G010W8004000100C0C00HcQoWIwD02W000
+00002047zyG5v60282G00006G200Z54OU200G0W04K100A8W0KGaWxJ00200060908220O40
+040GO000102024001S10e803842mY260a0020A62E2083000qF10W2X200n000210WHY0gG0
+02100400804Y4WG210984L2mWAG58WYGW6W2642G10022012f010W00X0ScY1t9p00080000
+J02K200o03GAG00a00065GYg8XlxR000G108G18200kmt00104G00000WO0H001YA614O42G
+8C0001a10G42X0GG0e48SG0040I800000TAJ108G1022CHH4A002YG0Z94I8880IG4H0022G
+08O080001482G138LGW04G4K0HO484W00W28A0490W0H0G1mbc6y6j1n@R040GYmmD0Y2100
+K200040000b00090100YI0G0042WHcJG0G150K204W02000bwpt0A080jVRGA060Gm0004e0
+0008rI80000We404X000eYS30000XW0K20e14b8W0W200K2GGLW0211b0G00410KI9040e0m
+CbG490G0e0WI0000Y00AeW800H0WW241000WK0e00800005000W2W100W0H41000W08G10GO
+00W0282W0S1L280001008W000I051008G4G08000800104X84800Y4GA064ol100Q11004X8
+G900Y0uxn600000H48AGW000G01KKC3G404G69802OG0200500A68W00Gc10002KGG0120GW
+00000dTQ030eedSI0000100W004820002040p01000M600O0000020ZUd0000841280G0002
+0WW0000220mId6G03000000080XuQP08G010C0WvSC00002002ar@D0C228m2G0W02080W84
+0E0W06G2W847AW0818XG6CA2We00W02A32WAeG21m3FD0406WY0270G40022000802I000a0
+1000009G0WW248Eo91800YTzdW20000080jrQ00I4G8W00041GgYt0I2000010W0800H0040
+00FhW04G00004000100900002W00000m@wD00048000G408f0G40140f04002WH0W0e00044
+00eGIGG0WIG48102000101G0W0G000a200qvT20000WD40800eN40004VXU0020LEcGe_6G4
+W20020WL00WDcDeFS30K00080MfzV3000qA0800WD0000CK050000WLYot0000n00000W9qH
+2W10vc040050002G0W_BO08ax5Al1m0GkN020W30X0180G@C082IV1X18W00e100W020W800
+04A00Y00D000_tV10pC0W8Ym@@@300200060uY700000W@1m100KfM00ugw40G0m1V0G4_0M
+D0WAgM@D000ml0W3V00uzW8UL1Or1aZh1025y50mCB0um700eF0h6V00000iw007838187K2
+GAXG8K2Wy5H82G0WP0C0X1I0a36415A82A81U10008W1A0L0OUV9I@E10ODW2mD0560WIC00
+WP000k0004160008YW00000W8200400002000L000Z1gOY0Kn000X0G2u600p04063emK1GX
+10W2100000mfn0086030WY0ACg0K800eW00030G0q4W0W1e1WB0304WVW01T012m10C0D1G0
+w0y0u2u7G5WB00WEGa4OW89WaHI0P0X0I2Y1a14349860I1G1082@000mGuEN180i3G020Og
+50OPFPl19u@0GLD00000G4V84FvG8_00Kr1mC5000y7Wg4704XF4nJSWgI0G4l0K5000dG00
+060G0CZS0O2xG4FWW8U10Ou2080M@t004aW0m389811G2G2I200aG84WT@CWgm300000_70y
+2F8cnSG0uVm1m@KL5cnCJ11W@2YP067dmrp99Mo7_t6cymVWO00GrwKr9C67fF30WKaS6MTH
+XnkfNYX391000PsiCqxB3JZ@mz_Fa_tFH_tI8S9ySV5DfR0080WgyD0000Oyl6aZl1RzRG36
+pC59Cy3U0EnkYLzDO4U3W000ihV2Px@me3mKmmC000e5C00a5H5Ju@mJh90200eIV3_iEXny
+zua3xFHu@I8_V4Z@31v@FK_l3c@tmv@CW_@2f@hWw@9i_F2i@VGx@6u_@UIT10y8dQACzSUI
+ZdpK0A60300cNzg03vPoP600006WV5v3SrrfC@ml1Ryd0uh6WJ9kAlNa000GgO008ksVA85f
+HYn00UrUMnL0000PONLwzCgi7UmaB2meoV200WG300mY2LqWoCdjRGYqH10eU0G00Giy9ioQ
+50080sQLYs0CumLp0fJ0qoYG3Wq5000QG300DPJI49x10O620000W04WFlP0000nIl9Cul10
+00010W0azX1zfdmzt6ivR2Tge58m4mWTc9iv4E5_@mmPxWz4ENtWvrP0010mpp9SpU5@jR00
+C3Wzwf20210000W60Ceqx402000000f1036es020WGBddGA064jo30G00000GGF00ek@F10C
+73000040Im@@Cq1W10a00AnFXK0e8A06o3W1W00000020P2000000a90200000G08f0GHK0d
+000WuQ_Dwtt619000081lAm040IG40000aW1b205H1SII1KHYGG424Y4000H80H40009424H
+WGaa850AY2u4000KnNb0040elrP850AY2ua0_T2000ynx6SMK2T0OGA0K45m90H000000084
+W000000G0YE0C850AY2u40100XKOmB19iL23f0GHK0dKQlJW20050GG1m0000015540000O0
+KG0050W1a205H1G2030WMXe25000KO0WE0O03mGHA0K4509GXXSG00u04E1000W3E0000a31
+u00GmPE4a205H1G2Gu4000K0Wa868i89000OWm313000I4D4C4918J1WYe0Ev@@@@@@@H2Ff
+BIC00eC_@VQZRwH0I9y@l40A70QJKn@@3CWFFYKWa0@kw@@JEgn3mZF0hLKn@@900188Vo7I
+eq00800RNyGpJFK6f1nHQGXX90400epG3QDSZQAU00003u10WGPnuQC9EipWWLJOw230O00i
+Sm6ZZgo@@O0003uziAkRq080000002YKWX0PD8ppAcvuXZrOuGt40040yfR2lwYH3RI0e40O
+_2R00100410W000000XW8uUu@@G2krWjHmuPK9y300y@VEveQms0gy@F3000CEAcXlxIOSL9
+0GLPrUCCxvnmK6Iy@VEe000_@73m@40@@3p9C6KCx3XpsbM00W92@fBQO2qr000GG@@p00c0
+W@@n000qyLYv4UD3jMtoDX600A0O1sAkdM20I401233400Wk7IO303Y5kbtbJ0400004GWHc
+D8dO3YPs0G1009f_0P10WfaL10A00000H00f25YO050000410KG1000008200ejdPwVqW5ZD
+OKNC00qVz@FC0m00Y001000000K0_@tW80CuT3L0800KmW100W2W800000Y0510800000m00
+@@@00WNo@@L110400140W0008YG8808G0G8200G12000O4A00HIhorv6qF130004_FtWzxm0
+yR2mAyga5Q24G100W080003euw4QZX4000mDVQ090000G01i1O00H3000W10X00008m64200
+Q000000GH400OIP6000GgH00u@@J42000W40002400Y000GO00820q0X1GW00euP32fua@@5
+50I20000430000000C000GI00WCW0091P0o0o0l0OGRO90O20O@@40_s0yrlA08I10102aAW
+1Y4a14f038I1a4a283G00WY1I8j@e0000U@KB2GLL10pC30@@7uX74ggA80uVGW7_W0m@000
+00Nu00Gy@vaWa700wblv5f@@X1210m@@9010G0004GA0CadF3WC70_@dmqDt0000j500Whqk
+w@VF00244fm38000I1WX6tJ00GcVWzDkMU50rE22D@X6_J0000uf660020eyd40W00001G00
+0GGCS6iAV2X8o0400Wzhi1010mlSI0000ne000000020a0@@R090052000001A01A00001Od
+83000020104We88KG00WY000900G00800K1W00201000028frr9nLSsi@U500wGYKW10008x
+OR00G2ejrD0G00000W000C00042000G00080000e208WD0COdV30G40CB93FLaJ9s6KKf40Y
+M0srrWJiD00800AG0000W00W027B8Xy6C00W8eG8W000g0vQR018W80e0G0800008WCRW19m
+BKPq6ygv3000meB00a@a400G0ciiY30D8vI3EwjY4s_P1lA0Gh_00G4I000G2e9000400004
+041GW00002W0EgNYAzD008000W01002000207TcXYc5AYT90Ut14_l1W000a021a1Q240446
+@t0e000Rwp00408G0808I0000G0X00002010200WXtD8AZSozt3000u6b000804W02000003
+410W8tD0W801000HG82000J0If@10WW000000WC00040O5x42TFX3xe20WF360HK4X02K100
+0GHZKUl100WGHW8WA4c02H000L00WPyV0140104Y401X040AW00200We0eQ_44000C9DF010
+0e000SSb1Nzp0G1280002008002040G04elb448000G0140808S00WCOJ00W20030KW000G8
+02H080H020WCW002020W001PZRGrM6qsVEW2000G800A5000000H40WOuI0u0400000A1000
+4000800000W40004010000WIKYC00902K2N20e44XWIA1G4ZWi8g4000G8612K20440MOG1b
+8300406K0WsNl20WKF000IGY01000800aGy@l10W080WPc1G28G0000H01W@@D00A000D004
+G04C0K0O010GX8C0eGG00204100088000082Erd10W80_@FdjjDezC32WqWAVD0Cs100000i
+028000041103000000m10A0420000a0G02010G8000W004HG0M0000W30eu10W0002XHH3S2
+W8H0a0mWe000W0I0W0G0KC000GYVu5200KmXkF000WX9000A00W6PD8JM300028GGW0000WW
+8000024zoPmUy60W0100I250GG00400W00280f0820000082180200409VQJo@904W41X208
+0Go4200WhyO010000G0000Ae0K00000MfQV3Ast0082z2020GyB0iJW100WG0G4081w3W010
+kN0202400YH80GV0086sV1jd0A08j1010W0WG0840KG0001wc0Gq_H1CrN50Mc60iCDK100O
+PQ00000Wbf100J3Wqi40_@FBl_B100882200WK84CWW4Om400WXGuz@CW2A0upiS0C100WH0
+00G000O24001m800G2ap0000qc800006000g040006pG00000G82004600mP000202000C0G
+00000a14f078I1qKa2e3m7GJWVWV0@W81_1GQW30G0S100a1S0W186W9mT0007jFL00oMmC0
+ggA0000C3Ga2600000008Z0iCD1ehCO60000c@30000LL5002F8ggQGW7Um1m@OAJc1Nu11k
+m3YvYkrQHS601g0KAU5TZRGYtL4tz9tkc30W00W00020200100000100006M10WmnnOFx701
+00000WScy4008GCLk100G0wAlY4oFfOxG00OHd_DCnVdGB964BEL00G0001W00G08hT30Q30
+4EE60000ZycXJoDOcW7000WSBT2tbd0081W@wFfkU94080KRV2@sR0000UL200JWR001G008
+W04GW10000G0GG85S30010G0G0W4I4mxz9000GW6G0W0000020AhNZ100400G0000G0wbpWW
+dzeZT6A9t000067xR000040W0000kZ9080040410W0800PW@sD0W0000GG0G0Y0412A880G0
+0a00WG000000W04G00K000e000K1KW818G000800WG400sCtWIqC85kMGY00KjV5nz_0mc1W
+Y_D0003008G02GW0O000001001801080002X008404aGW0200K_R2G0H01G000080ekV3wzt
+WSrP0001200800008PiRmRzUiaE3000GA9t02005tkR001W0000u251010W00H00400G1400
+m_XD00W8W000G0We8005000800013000000W0G020K000e800K18Ya0G02408000920zpRGn
+y9S8l104G0IdkYxft8BT6W000SMV200U_00000102000000Y80000GW1000G08O00GesI300
+I0y5V23rR081026004FCbm5q9SVc100004C010X000040WW0000100lsRGty6SSF3r0mmAzF
+0W04vyV6qAp00W4W024G000WZ0ZDG00W00000G800I000W0000800v_F30004A1050mG0W00
+2I0140000AG000008000G0H2044VV2V5PGjz6000001020400WbzJOGV3UykYRzP8QV3000G
+011000069J018KW0G8W000480808OfmV30200810804000X00080030400Ga0000084O0G00
+0G00800440G000WDal100G00W0WSbl1fDcGGzCqUl1vgdGby6SZk4fsp0008100200m0W000
+00oc0PEV341W08000G0000P00402000040oHmWeKC000049000G20060G0I@t04120XuRmOw
+6CdU200YO08WH000G00040800000G40050RvFX4uDunxAMmd104I00W5040000X020000hR0
+0220m040100Y2IX02306m45YAIK8K10G01W5Y02200G1083WGm0080aCAA6E0YAL0600K1iW
+180a1G0GG012000WH0180Sy1308200280022W04492028Y5fP0100Wu7C000204G00000Wxw
+RGUh6qec1LkdG4Y9W0000000400W4W20000AnL50OXL0mYWg20GH0H01YG4W00180W0WG5Y0
+CG8K000X0100009000WY240010H101I1G50C040W404092904004104120W000410W808000
+0080G02GI4eeaI800a8G0A00I0000W0b8000400KG100G200050u7D30000mC0K85W700080
+05K00XG8000840000404e4000yNW40A100KI9009020I00G88000i1I042f400AfaP8084WW
+24WK0000ee40m0010WIK004b0WGG9H0028W8GK20400000A00WG8000K21W000005Af80A00
+0H01YYe2G080eW010000010200s4qWIiOO_V3I1u10K40000509000020400G00GW0000KgH
+X0GGM4Y020000W9H820000X0eX200HW04C8010042AA041O04400001AWHYm4G400HCWG446
+10G10Ka10W008u2E3WHH0002KCKL388tW0O00I0I000W0848W0000600W20020000G000100
+G424G0000G00010080000GG040000Y008000W8008H4300Gm00Ge0000000WC804000eL908
+X10A200840a3m200GH00130800G180128Ie80Z280100826000W0iZW2X065u204e0CG08G8
+eWW3WCK2luR30C0WHG800W0SGT99W000W000W0G1eQYC8RL3cemWazD0200uIG6000WuLO30
+0000003OJf4QDm0I00000000jweI808010a00e40e00008WY00W00XK0X410A42010020IX0
+041W00A008CS30W00110200AW0K090W00G00G4_Et010W00080100400wj1m01kN020000X0
+100GS1404WU1XH8W00eX8lh8tx78G0Gaxj120800N0004WN1000eJfF0000WU100020000W0
+0KaG808T5qZ0000mNcVt0010LEW0GG_B4x6010Hl00006862YG0W_RG08ex580080HEH0200
+2000180G@0004mV9ESaS00000AyI0F2000G4J3WbI30pO6BMADMcMQCpC0OPQ0O9UPnP0yuX
+7qIB0mC00000000G6G84EeG8K290fG9oOm_@L0006GW0e901G7W2WW0T0C0G000u2000Z411
+aCI28384GIGCYCWOa81n8HAWHYKWK0eWa080P010O0G8m0uY00eY100000G87p000K100m0C
+0m5OcnEWB00WT400GC000L000g0A0S1KXm0u70003000CGW20Z05WEWA0D1t1S1k304S7480
+A8G0m5W003W1060N0L0T000O000024KG22eG8aWgy2Y82WR5D00X7WPc98ggAuKLL0uFy0m@
+WmKc11F@3ILg64yW70cnCcPILm3NG0ulWKjA11m@0YPcH5000000WP000@V000000WOWf1W@
+@30@@7BcP6Mc_VqIB0OcP0u@q0WvP20y0m2BJZAK30jdvQ0G28826K88KY40f4WGG000G2IW
+02211b0a0A189400000a1000003C0w200fUx4000Kc300hwlHRt6K1d7FnTo9AOayV800QS0
+000EHW4Tj5IOhLiQt9l603O06W6G39OE9IbzdnsVeqSF0000n30004W0m_PLi4y9XSdmgmL4
+dc1Lld0280WHuCW040Gxt9KQ530000000Y00800220GSR600Wy4W00020020080000e8W040
+6GG00WAGCH9KFj19uR000G80040beRmTz60800O8T3QItWIkzeIT3YWtWJQD0W000G00m71I
+02020000G000e0W0000e0W001002200000m3300H00W0080G104040A1040eWWe8Wm000002
+0G5500280950G00804K0100W2G00yyC30A0000G0440000X0m3wJOpV9_iIYd0O000040002
+00Y0Vm@00W00C00WW0X10200qgd1O1G00010iok1Gc82G200X1004B4000G1082800W80W30
+41002240000068a040rzd0800800400280wMdXC8m0002GGw90000W0K10140WjsJ0D00GrE
+6yMl1010Gg8t020GG000000C2108G002082021W0000C000g408cW0evU34200TTl1W00WQW
+t00840020Gw3sWt7C8xX40004K2VB0042M8LYxsVOnS30Km0aiD30001Qjm014W0XsdmqxO0
+008W010HsM6Cdl7t6b00H008200v@R00201W8W0I0W0g9NYSpD00020008000GUq00G6nFX7
+_D04180000000422G00ooFX@xDe8p76Zt0808000W0kUOZArJeCE30010z3g75kP0140ax@D
+00GG10G0WwdD0W0000180109402200000q0W1RqdmQxCKoE3Z@ZHN_6yw@300100001yLc1V
+ypG_@F44V2080010000w@0ua0304G20200SDV3Mzt040H82001UzdXs_aeR_48080yco6080
+1Mut0W80002000200000404080W8W020022WW0Ub@1841000G0X18O03O00000F908KG00Y0
+400124G00110XC012HG0040100GGeG98CIl1JMPWG00WUwD8y_40W01W1X0u9J3MX738040Z
+nd02GW000W0GW01Ayq0C000G0042wNY@yDO1U30G00008@@IC3000GW0000GW000414412Y0
+006KK1063Z1G001000480004088JVjF04g0402e8GK0004W0R1B1000XK4P00A1000G41e00
+0002020A100I8yU60004T6d100000G8W000K21W2040a4A000W8Q0W00080bK20Y04IWG900
+00O2X0f40400W2aIAG40I0A1e0000H0W00A0001G0X0Guu6y@V2I4I00WI0b@V58A00Uzt00
+00H@IR0200WIvD000Pub_6qVl1bzM1080GI8W08000000WxJ0000008280000HG2Z058201G
+I08W288B80W04100000G0W20iNl1hzPGq@C000aW8G2428GXemb0000a000002m0zNRm9G60
+0K00040WY0140000G0K41Y00I40000040208Yz@P0008a010008050H0A00O0000p41G052P
+GCK81G0i114G09GJ880a090110O00NW4mC44044G03Xuf73wPm000G8LHd001000e0G80800
+08WCNb4000100K01G000000OPc908e0G0a0mqb608W000I0mikI0084000G0020aOFC0Kz46
+1aG0W20G481500000K400Z0E05W00GY000G00000Wi0k1G000hKMYxzD00K0001004W00r7N
+1Y500W0a9eG00trD100018XG00mBmCKU2HZdm126CPP2e50000eD0000sOKO3m1WSl040040
+21YG0Wc3808e@2wE0G80yB0000001W0008454000QWGo0C0F@@00Wh0080WM100EWgY_FI00
+0yrJI9000W70000tVF0g2T0Z@d0A10WR_t00WtRq@6000mt@0000OcP000b20_@50m0B000W
+_000g_2Wce3Pd63_@@1000600040w800OY0007000m00000O00200WTWG000r000WY000O00
+0G0802UsW0aO000e800G4WA60NxQ0u3v000Wt000T0E0O0y3u2u710WB100C400020006W20
+00tPG0W0004300021002EpWRMJ8Q03000K18000WX1m@@d00GfN0000000n@@D0u00m@@60y
+g2e_@40r@000r15@1ml@3GL000eO200Unt0gM500060E2m0V600080W1id000En400uwj@90
+00U00000g20WblI0pm3G0uLSjV51jD3000000wOfobpNuXavT2rX@00X0WBpb0000OBtF000
+WCzV307v0iTs6fedmFvCaIi1dc7r1wIiYk1000eZXpZ1tnuKzDQ4FXvrJ80_4kosWatCuoS9
+YQNYHoD0001PT@RW2G0ujVC2@VZezP0200nYt900800e00m@@6SHd1DrRGSq6O010esi4go_
+1We20VbQ0G000W000ZrRW908ayxhuCy4cjF1040WzhB1080GW080DQP00040G100080OGGW0
+aQV20094X4600G00G000GpzC0W00ykS300W0SvS2000u06002000010044400000040G0000
+000W8000I804G00G800G00kgtWuyD0802mnzIqvl1DWPmYD6SVl10O00sGt040224000Vq81
+4AAm4200AoE10100JXpGTxF00Gkge03AlpWv@D00C2mJv6y8a4024012004_S200W074CXJ_
+P0002GH@60000Uu13010WaLE30W00gVp00008FuR028000901n_dGUXC0iE10G0000200080
+201000020Tie1200W5208ifj1L6cGi@Uyj_3W020APtW_uPOyF340W4aqT2ztP020GeXug8z
+E3SD00W0008sT3gPtWaoD0H1GGSI64Kl15mRmMzCyq86DvP00001080HrzR00G100010G001
+G00120W4upF3W0000W00S323008000041AI0OKdL0WGX_6U3k5dXJeD0O00m8v9i623NU620
+82ewzJ004010W000G400W44W8200C0G400O020C00I0G9aMnu_94ve1G00W00000iO1eGz46
+kt0800008208108020WeEV3_6d11000zZdGBfL000140100080nZ@PO0D302040002000220
+9W00H40bydGAJ9aqT5000eb7000000Ao43ApFXlsJeCP36NpWW_DeYGI4000100800202G01
+400010aa20000224L101Ga0WG8e60eaG404C01000W10200W8001021001H8Y0WCkV2ndd0G
+000001F9_d0048WavD010000GG4q0WG00008G800000G004Qxh6ShU21sdmo@F000228Y020
+00H41280822G01010G00003009W100G006H0n0W2W8222YYA010408800G000020400040f0
+00050mzmDuwV30GW04sl10WL00W00YG500W02mtM6000020438W101a008001GG0W0_yV204
+001020Uh86FR@GxR6SjH20045e4a08400WI0000CX02e4004004YIA0I000WGg4010GH41GK
+Y000G20G15000c100K2000G2000b000mJA0000c10bK2400B20G1HMcp0020004Gbe400010
+0WIY0myS6000a20Ae4Y00100W2HzRGYgXW000G400W000YW6IW8PH0HKG00281NWQ0200000
+01IW08008W2K080G000210WMxC01Ye008200G0000kM100X0008011001A2W_lD0040100G3
+8G0100WYcWD1400000a0onaXaOz00W000840000a000014J00g0X2G1A001404G86C800022
+0Z0E25WS40200Q0000G60HWH4000400800000Y001WW0W2044HW0WB04O000OX448m40W0e0
+C0G00mZ80G4030e000H38020812801C0W0P8800011M000C002g0t0W00H0002kzYX8fbOzV
+3I@s000042W088000020e00004040G2000000033t0081I5tR000040600H6d0080arzD000
+07J304GG00g00G81240000GW50000W21804mHW010000110000a80000008GnaR04W4WNoDe
+LPCkumWKWJ00000G1W20020Oj1WY2r00G90W04az21I0O00mB00mQm6W2R8400_IiuC080eL
+0043WV1000JjeD0140wlG804G024310WG10GCGw5AJ1m008I0086W00b10WO8tBK60120KD0
+4008004X00WG00088PIi7L80c1600qDg_dV00W003000W10iKk16O0000W_xF0XLi10m2j90
+00GKtWd9LHEP10nT20U0s6l2WiV0LGB10wE0tJV0UjHk100Ug200Oaw70WvX7Nk700100060
+2040K0804c00md2CWp000C070A2g0u2eI00u60006000890003W0Wr0p0x0s100i308My48W
+cWO4T0tPH2kJYK0000Su@i89WcHI0@0d0I2kJy34Z49uE9I1SIa2a2W1y6yJe3uda2G2YK0T
+0k0I2qHO20X00W90WZrn001yFu1000uFcj@R000eO1Wuk20W8GC010mF150040goCW5kJ000
+GLw19eg0_701nCcf20@3UuOcgg44cPA8c10001fC32Um7agK5J0yF0_ZPggIGW7kWOsV11m@
+2YPc10ym30@X7LL54ggA8m7UGOcvWeggW3W@1W@00GUpda9c7FoV2Ww3WnvL9FuAo4N20200
+H5zGctaKMj1raB1000C62000000ckzXVmtek_7grrWvyifZ@J00ODlGUKPjRm1s9aY_9@Vl1
+8R1W7rD87SIs7tWprP00W0mUd64r_3DSd0G0000200rWR00W0WhwD00W0b002W0tJ00e0mwz
+UG500OfU3kq_XztP00W0O4H6S5V8LZQmwz600W28QU600W02010eRL30400W04GeOU300202
+10H0080uUH6qIl1pmP00040020000MixgFX2oJu6T3UR@XJxDW0000G110000W010XAZp000
+A4zPR0G260X02001G1MlEXoHDu7V3_@tWtZD00203WH0fy@J000nI8R6acl1ruB1G17WbzD8
+Nz4MMtWx@DOSz4AHtW3_Pemy40400008040008X0GmezbuNU300100000wqL3MhF14000020
+8AYt02001l_pGLk60000wdU38500KsT5BgpGr_60W8000800006m9GI02000800YInDu1D3o
+mtWAvDOYV6Ev@Xs_V8pRF00CoCq@38000shDXLMPesAF2is00Y000010002WaIe141002iCX
+4fC8BQ30020yji1r3dGc@U8EC1esaVG000KNV2010002Ga10001HYG40W0WSFIOF_7o_CX@D
+910003c00WGt39vI9c@FXRHI00080W02WOnIuWq76vDXJJd10WVxAcXqit3NcBHVn60200wL
+A384001OH020000Y24000a0P_R000eeA_J000010W8YupJ8YJF00000Ab1uUmG006000I08G
+@7wqF1O0000GGC0000OG004MG00G02224m000HH0080Sve101000W48000H81N30G00SZl1T
+TRG6EaGQ008lV60014KfS2tikHby6SuF300G005G009WG4W24005G101000G400400000W40
+A0040008eaI00008I2Ar@l1vWR0502W1yDef@D00a45wk4vYdm60Ci6l10G90Q0m00000xfR
+G3y60100W2W00008080W60048W004iVV2Jbd02800000XWa0000WX8E00Oy@40W04Kkl70lF
+0QcCaizP0100000G14000f4Oml@60002W800W00G00WWW00GAm00HKOl100G000100440a8e
+0oYl6W00600084G0W0808H9zQGLuFCsl4000ua800KzV20W048000yZV2HvR000080K00000
+00002_@l10W200000800WAM@40201qGl100X0WW0G0022enV30090a6V20001W0W00041228
+0mub6Kwy900sR2ydXWcDev@4000OzVB60008A1tWWgD8sU3080m140XH9000IJ0eWzD00GG0
+200K9G11010oz2G0000808010A8W000Q7W00000e9yv590CS02TdXK1C8Ny40C00001001I0
+0GGo4K80W00K2EGn0010540000A1G00G00f00q@@600210G00022D0SpD00TKS7UMe62I8KS
+6000w@4d1TK33pC300C3u_000000CNeX1q1O0W0Wn03W900WE000m0000NnmP0mF02WR000P
+00gPr0001mLX@GI1U0100040J000PWc@J0008900W9WC000c00Y9t0000uD0OW300WQ@D0J0
+000060A200m0KHUgFXqkDua@40mT1yIl14nT00000wy00OIR6005q7lk7WU00g8J80OPQ00W
+qmoq0WgL1Wb00myr8bKG2Y600AJdaj1D8KCRohFXm@V0400HSR90A00uyU30G00yB_300Ush
+GVcZoP8JT6ULFXp4oPR@A0q30qEdJRjZ1800WAgJeMy4oTE102C0nyQmoO64it39NnGHwsK0
+V2JbRmNv9i_j10014gO@Xf_DuLS3W0000G010100HXyF0000SDy400GEKCF35@d0004XldD0
+W10m_yC4QE3G020o@F18W009rd0GG00W02224000AeW04W0GG102G0008020000002800a00
+1800Y0008011801W000000Y0W10G0Z008G000002404440000014G0X0010041001000j60S
+tl1W00W420W20G000W4Gkw904040004W0004Y0A1x@d0G01W0VD8HV380000000HG000G008
+W00WZwRGfw600010W0KmaE6qWc10000904G0G08000IHs_6000160K00WWG0004W00001104
+_7l1W100G100W4004000ez00W@@D000A00051G000FhQ0400W0@D8gT30Q00y@@3W908_zF1
+0413002000W020G0000G4004G40200WAWZOp0G080ZnRma76yXl15sRW100000W001080400
+aAl1rsd0W40W@@D00GyMuz602G0OIV6004402000G000C200GG000CG0Uft00002XvnGjMC4
+@V2BmR00G0W02JeuV300W0Y0204202W00000a00rmR022A0041002m104n0150087@4kjrW@
+@D0i41Gg@Fy4j4hwdmk_UijQ2600000044bV2G040GO0300100092Gry6O0000020mGq600G
+60080m@A9qhl140000090CFl100Wu57000500eckGg9tWf_JOkU36XZXupJ02200H0WWRwD0
+02GGh_600GC00H010000J0P0W000G460ipU2POO000H090G2200000G0m0002P0000W0ZS0D
+00mqf04004000Nb7ISqOa0i1fMbGJ_6KdU200W04001a6k1800002G000208hF3QlmWbhOOs
+l40001000m008004G4000000u50kdFX2KbG000G3pRKcV23zRGY@608CWX08040GW008010G
+000G0H0WW0461020A00G00GW901L20AZ016W2a8a04G0000H009W0aG2Gr001fC08Y80WtAD
+09Z0014X030404100000GPF0Y0000008G000W0HK_m4x9GW000010W100WfpOehV6Qdt000G
+4000S0G110G040W1W0000H04W00002800W00D65WZ4YP8W0YY2W41W0_Bn0W020410Y8e240
+0W0WG0Y0W20H8800GG4080000G0GGWW0228800G0000yM9002H004O7c7cijYyxP0041Gm@6
+00G0000G2G000081GndR080028e400000080A00000084u7@C00W00000900Gf2tPW200W00
+810g00G0G84WI0KvM2C1G0e4000o_10000001I90000Y500sjtWl4U8Rk4008AG90000808W
+00080041qPmLS6iwU2082000WWW00K00AG0Y000A000400000G0ydV280000X8G2320eP@70
+0a020000102m_t90000210G0000UT20000W0G01AyxF60G10Mut08000BaR01CXWtTP8cS3Q
+3E102W10020G00000804W0G1eAWWOwDOwV3010WiYl1Hu@00010002860Y068c100u000000
+0W_lcV20003A0YXHeJ0G00W804WA@D0O1000008400080018000ivV2txR0000G000202100
+W010O4001G8m0z6W000OeI3cMt000W0G400p@@XOPIOYw46Dq00200Wyj0I@FXm0h0010O3s
+F0002w5U9Qwt0821000WI0000P50000088G0004A00vjQmYL6KYS20S50s@pW6aOG30L0000
+0h000tRd000S5000O_X210800M@T20W02_ntWpLV049G1J040Ws0G1mPGAT681088a030004
+S8S22F00E7oWQkJ0004l0W7V0mCx0NcPGL0F0Hq304V4078O090vW2IG152X2Y025413A446
+CawjI00glEYelV1WPe00U000q0h@0W700000m7000XkvLR300WPp000C3yF000000p2000W1
+00G702040k640YC00G00ua53006020Y0K0c18000K200000W0W0010103WY020C0C000g0ru
+R00003000H0pEp08000e2000000OyT0000L00040A00082W8G73Mic10010200GC00043d1a
+1S0W0834873@3O0mF0XhfC00@7000800G6uStTwrD0WhM000000Wu300W60WW5S000GH0N00
+000Uk0m5Wy_D00oC300008YU08Yx0oOF1000cm4A0000qh@0W2000FD00W6rzuhsGYXp0000
+pO600wkcA0048DQ@pr_LCxz6lW9HkTX0660O0lVMWpfgshe_B3A9FdvYh8AyDI4tW85oPFzS
+wXd100W0000HW000akS2nWQGky9a9F300G40G08010n2W0000G8W9cC8Mi4GX00yYk10w20M
+gVZnwDuhv7_GAXRxh000WAK40000280410W088jLj1090GkOE100G00G0G101WqVa104W840
+02W20044G01150000X4x5cmD_6000Wo700mL_6a_i1hzA1A0000009@wB100H00400TdR000
+1010W0PmR000028W00txdmhQ6akj1nvQ0080010A0G02101W0000G12000Wn010000G0mW40
+000440wiT36Yp0000000OFNjbXg@V0004000840400fi@Gl26y243xdd000W0K9WG000880G
+20020aW0000040G0115_NHfs6W5A200010W21adPC8zU300K00020w0V30ir0Cf@3T9NnaH6
+4Ql4TXR0000G0W00hmR00G000024vtb0400WIYIedN300W00042eSS3_it00020200000W0E
+Vl11T@0000QF100VUa300WWHoP8AN30018W0W4W90AW0400040800CW6uF100G000WOU9o00
+1W0rxP0810Wy@D01043080WAvJeBf40GbtF2RH@@d040WC00100030G0000085Qd23c1b100
+W00Y2GW900G0G0001W84i000W42GG6GG0I04@h1TSome_60Wc0OrSIk3zXZf310G00A00000
+0WWW11_oCXqkDuR@40021000W0484010020400z@Qmq@60200W000qz@60000si00mNdsqN0
+6Y0W148W2Ga0O10X05i0C224GW4X30M@t0040K000b588Y00EG00H08G2082W0200W108222
+01AG44oC0G00Y000VsR0024WxsD00GRSa2sCFV2JHb000001300800Y40G00aG24H0Y82000
+31IGe180lGF10o000000G00H048Y004G80f0L0Age24440O8820G0080G20000C20000G000
+900004QzV30Mx0ySV8nelnEm6SPF37@R0bK200GK4G4000004020KAtx700WW0GbW400004K
+I9W000800b00000G41WI0408000014000W0000400400K0e00004s0000000w_sWNuPe8V3W
+00046E39Ypmg@6000GWI01000G60g00PbR000WG00018G1000O60000WK02KdxF00001462m
+oR6W022000eeo800A0W9a00200006Bk10040ceF100X09rdm0_CC1h10We00000G400eD_As
+eBXcvCewV3000G0om06C01e0WZ00G6W4G1400HW47M21vR0001008282mH0008000088vR3m
+W0000G801010000S00022W048W01jxl1Wi40ITi20004dzR00200N050pUKno@60HG0001We
+8O0000449zR00GG0Ae0uLjOGiKL000G000c00G0WelC02800WY200a8W0882G1200G002010
+20510084Z00G4100GqaW1VyJIdzR0G100W00Go@6WA3040W_2W0000n100000401Wq4d1Lu_
+WNe00004oUH0000G0041005080GG_5G1084WKHELF1aG80081000W7X010S5U9K0000W4000
+02020000Gi0004WgZBXezD0120000W0GG0000yL04003020100G0R8400q0m20G61000384G
+6Uu1C0AAWf@V00p000002V4WCGF0gK500004fIL00000ZkRnJG0YyF0000KOF0x@d0O80WzZ
+TAjR3006W30C0pHO0e000Sd000H@d01100c1G000K10002000C600u6G1mO0NWR0L000S10a
+xj10W8W1040X8P08xD3000G8Y1000G0mTML020004WC240P400CHfH@mgu64Jk1003W1WaWx
+0P0n000Isu904202o014O12A100M20G0U@t00GLL00WNH4v1W2w30e570OuF0oC3n0UUu5nC
+4hu0Wm718p@@6000_tN0000KVz6yD00GO_6PTDGTH0Q10olfbVwYQgV3_ENY3qJ00008@10W
+fPbe_V3cIdXrq9v9SXQvj2005pvtkHmtCCKtLHAG20p5WrsbuKgSMBd104009cpmHUF0000y
+@y740216iS5000WL40041_3fNHIKq6aMk12004YyN20WW0000100200002eQt4o@t0210040
+1WIQt080G000208K00O040G0000K00WUUC0002G@k60010000fPCqI4E3C3gRmhB6qVE3p@R
+mCo9qVF380G00000012800400G00H20018015W00G4LT5WlC0Ud@XjZtOf_A0G000100Of96
+cXt01000G001oM8X@@J0180G6WFi4l10000lprWErD00000600000G0000meF10KFoClmpmP
+9rrwIZn7WVu3@@Tn@TVy@s9@dzo@Nty@gQlbCg1x9HIXwd00uH14000040WAfRP8V3YDq302
+003OppO_C0y91ucw7IClYN2g8rV363lYa2_9vg7i680yG_33v_Jkt@qvj400Sg_TOcGmDe7Q
+3Ud_10008VXpG70EaoU228G5o2pWNzD0204040001082G60000104EU20040020000WEuavA
+Mhd10400Pkp0100G0881XOR0001WdtDOSM30Y00a2k10G000800044400080I9Y0W0000240
+Y@D1004W00000A00zIl10WP0018000011W000001000W0W000wZt0W02G01000cb0iil7208
+0_bl20400810Cs7p0GG10jrR0G0004G40B4R000024000020W0C0GC4j1d4c00H80500m00m
+0G00800000h00041000X1G0080sg_1000W000m8E00SRT5pXd0018WntP00400000G4G0040
+001010V@l1G1G000000400SOz4_Xt01000G0Z0QuNYP@DuG_4W080800000060C0000000G0
+4WsMs000AWW10000GpzJF9nzpmCt90W00080G000400020@DR0G8000400Zud00G0WkvDezV
+6kSd100120000W200qoS200W00024Sz@3WgC0kqRc@uV00004m00XbwJGW02W01a0G0W0400
+W00008J009FG6kdt0000G00W0040H8040eiU3001000030008m_x94gl100Web100800086c
+MY_FXCYD0E000400WLzD04000Wm000000C0000280G0000G00mjfF0W40epV600080508080
+G0030W@@D000O010W204008m010000008khoV9U@F400220084W040004810G002W400W000
+0C0gvzXExD080WGW@IW0000090GpV6qRV2Np@GU8600000OU1GlEj00081G00040nG00WWGY
+00cVq030220000b000001I0004W0000040W0002mG00044000I0yExCSsk1lmR0400088002
+000GG030W80fiP30001W140W0180040000G1000O8C004ZQB009Y100q84K2I0n8Ca480890
+2010290Hg4Ff1082H0Ym03822b83088Y2000Z001ePUxF100G9000500200WI000Gm00mGO8
+W1008204HW00G0400400H28WEBD001020G010EG0000000qf300G00W4GQ6mW0000100000G
+200b4805W00W005S41W4Hyu@680bK20000HJG900G0W060e408imj1vid0Y0G90800fTR00A
+H4A10008810WI00400000f00G00482G04I02Vt0Wf90000000GA00000W80mu_X000W2S000
+580G00008G90000004WK20900000840GW000n0a2I0000414e000W0GH0000b49404CHq30W
+G0kgtWujD0WGI00411Om80800GYxt0200G0W08000000m00000JWz6i@X1LlMH8iL088G000
+0020044g008W05G80X0020a2W000WW06100btRW0Om0004008WZooF12000LQa0G800m0000
+X00M2t020G03xR0000acUCG0888890G000000O9000m0000wftM008D0G01051021006008O
+twR0WHG09084eKC0Aes08G1080G0sSzXG_PGG00840401W04000400200080SzV308W0Ccl1
+002080400G000qI2G7gm00000K0a000004280TlR0401A000200H0901400AK0W00eN00002
+020080GX0000GV9R43kHd10i25004WG_B05LZ10W210080x5200000Gfs90600000200008l
+G00000egssWDk8vfV300nZ0040mBKB0000Sc040vzR0uWG200e82A00WO002GW04W00Ec100
+000c3vp000uV00000W30eA00SuF3XHRmU@6O60000m@F00WZ8@D000UK6tmW@@100l30000H
+e20u_F0WmC00008XWk028u1XE102T2Ga3ous0W1060p0p0_100C30O8R6C0L00000b000030
+00S100K1S0W1m5G5mE000N000G00004000Y020O0G0W0G51GI_60IL4000010001W0000c00
+gNd4O000i3KP00WX100i100W10001WB0L0Y9g0KHH0eYYa0m50GGD0000000O00kg000000u
+10Go_F00uoN00Kf00001uF0e400W1N_30000uf70_p000000000iY@t04600s8000000QaF3
+u@PO000g28g202000z3F00L50000Wym300W@1Nu10km32WSlZ2006VroXSfXA@Ll100KWXtp
+1ib3GM@L000W00040800Y2fR9d8C4000qQK2Pq330008y300@@ZHaVma27IX@@0003re_V8c
+R300G004008cD3w8@aIlbe82L6uMYcfDebT30dQ0Kp_3TjRmB_9SoE30400FcF1080000100
+008q@i1TMRGFxX8000OfU9wMlYp@D0W0020008g300Ft@08G0WjxP0400000500208ZJO000
+0500A10W00088W2000eBA30X4000001W0028W9WQzB200G08000000K000000e6z@@30G0WH
+000C9V29uR0W00800800060who0mW000002Qps03C00000W120400001002JfNU4Kl13dpmH
+vX0G000a63mLOLCpV20080IuF1000mHuR000010024xzdmA@6qPW1DvRmmxCiaUB0400000Y
+S_F3000mz600y@V2080201000200000OmZy60W8COsyDsfBX@xbeObPMy7304Bh@7cm0H6S@
+V22820MSFX0_b008800W00020020WH0O000009uJV9I_VZG8K100008ldWDMm0030oXeLW40
+0G44G20442O00WdFc0011WRvhOiVF6AzXNHDuma70000Z88000K000G200G00220G4008A10
+0W0003G005WW80d2LnO_6aJl1m081104W4OA3nbymhEm000240H0Gy@C000_31000510040W
+02100Ha0W00YK1001002008WSHK10041J0y@@340A00W850A2e04HeW018000Q808O0QHqWh
+@DG40W00G0WiNPOyLCwZLYR9IOnV60d00kcV20010Mut00G0G8550G00G0008wv09G0000G0
+9008G2H00808SC8W0W9000G8W1uyV300W02041W2A000Y002f000000410AqsF6VVQG1XFC8
+d1I0002VC1M1000000e400000W4W01000W0G2WIf0O05000009WVFAHMZ60008Y200Y400W4
+SUWC00GhL60K0m8203A1oZ4T210mTS3m9qNe10GK0001AW002f6O322M210000W0H0W1000W
+0uMN3E4c100WG094002O100080G0601C240180J_KnymOK2i1Z0p0uD600G00nBQmPm600YW
+0048mfa60000nG00GwGI004820WG24a00G0XW0004W100aTS2001GM7s0G200XDOGR39awX7
+L0dGQmF0000Jc10G65602000000a00Gao6Du@V30018qdg400W40G00WHW022WGW4000040X
+bXm02ZG010G30001400H0008K00410Q0WQemeK63cNEXaFDuvE9gapWOaP0WhG800004y20t
+9l1O8W000O2W10001e0SNa7@@B4WQ5WZbD00aJEAhqVWIV000y0uUy10Uu200r3E000SP200
+@@BX@nuF1WT_20Sm502000@@VEA60m8HG0DZa0o0A1a44Z83869IGC2a2qrd7Plb00400088
+0@9@0000s4fD00g0008285G5G800G90008400WY000C04WwvI86E6000O0eY00e3000Q2WE0
+Cu2C6aP0@3WW0m@O2W@fgA@ZPc22pCZOJ5L60mU60000b0y@F3vYO002WV_300000g000000
+ChI00000WHN1000i3000UL0y@@30e000m@00800000C100uVw3W@_t000W@l@@lM0FP0_@@d
+5OteXS3o@sWG7DOQS3g4d40010blP0000S3300@@p0004YInJ00020008WQoV04W0G2SFaNU
+29dBH_v6Cnk102G0QEFXTRR1008z@@sqncAnZdJvR900i1uV_70200qcj17mR0200m@@P00W
+0uaSIS5l13ipGUKOS7t3x2yGIg6000bgZA6000WA20022200WA000W0020W100014ih4@@p0
+W01m0xDeOU3gXd1008WnhN1001aHsn0024mmO94Jl1000200100m0000m0GEK600G2400001
+30400200W10000We00e00a0021000G0004G0I6rWRzP0200Om_9010GeyU30Z20qql1zudmI
+_CKcl10400Eux10800GG00MkDXh@D000086W0Wl_O0Kb00GGeavzD0280050408m00bxR000
+08010BZiB1800W_rD000GGME6004W8irAw2BaQebG0000400O082000001WG0K4h1g700000
+40u108gR30W2004024080Gm@6ScF3@vR0W020W004t@@000Y000000028c@tZOlO8gpA080G
+0001042000W8YUqJ00WfQxz6KCX1G000QbtWl1I88HF0411q_F90GW1_@t04100jVxn_q6G8
+008NB6Cv90010200Y0000GYyNPG080mezOS5l1NPRGeA6aedA00H22pt380G00208E@t0202
+054QWn0004000080B0404208e110W00280q000tvRmnQ6C6V5nnd01800000YdZx10Y00014
+2TzdW800W4rhW0081a088S000JXo00WVN8000@vRGq@9KnV20200ERkYmnJ0040qhaXCsl12
+W0000180G0Y000W8001W7rn00814WHiO82000U80_fm000000d110W80q_l1W200000080GG
+09211G41001W4HYZX0G0100000801000Wi@i1VBKn@@90W9040GW10W8Wq_D0082GGvL00Q0
+0XCA0W0G4000204005000000G0000Fk0G00W0G0XmH02f2G0KeX8004040W_CC08W00082aL
+_VOpJ36pq000K1q000lzqWa6VeMI9_9b40400000be480814mW20G0000I0e0000eo1000mC
+0KYI4104480A92020Y40WI0000G00Af4G00010B0NvYHK96810KY200Glt6yq@6820W010AC
+3194W024004geW000A1GFb60kDL0000W08W000GHW5J20W208C2X01A000A224GG0000CJ4N
+YlMPW800G_z60GW08m9IgoF4GG000000G00J0W050H0410108000Ock3G02400040W10C0X8
+0101W0i00Wa80W000G00W0m2WI0WGW000WW8006W004200G_1n00000e000snE48Y0000G0Y
+MU3100a0000a0GG0001W004myt600OLG0400W00G0004I04400W8e400082W021e0W082440
+0cvjYazC00000a00W@gDO5TF62nWoAyOw03000G0mN0eQ8300XHaAd1WBMA5W0143W108200
+0b10W80qBK6GA06000088o7_Cc10a0XC0000mB0SGiAPLx100F0yxV0utV00000gQ0089r4m
+Ry1GV@300001y@7JXxFW2C084H0yBe0qd@1Wl@12WuSIeV@A00L10000WgC3000mV@100Nzk
+Hut6000W8yI3EzT36300e2G189e2G6G6H4WCY850000Oy69I1OTa2G7G5WrWT2x0T4H2w8YK
+WH4f0M3I1i3e000G71W3ib00G0W0004Y000a100W100WAG100WEGG@R0Wp3WEA0000GTgE00
+000Tx@sWG@b000Kj0m@V1W8_0yX7GLu@3pC38LE30JyXB8LLLGm3FmX7UKLbgeggW0Uu1HL@
+32ym74cP600000y700_tN200M420u0400100GL50000k10W6yX9eSL0000x000uOmh6otWwn
+JeUM600W0aHa1VrOm8@6yg_3LEb000Ou81aeVO9IikYgtCe@y72SdXw0Ue7N6080WEwF3nL@
+mr@F0E80OHlS2btWamV8P_MIqt04000xNBH9M9000W5r00Gs1Fimv91oZ1054WWjPu4U3kO2
+ZkgV00W00G0WWTkD000W0004G040000GCpgtW4QC00800W001W0020W00g0rWNwn0G00Gpw9
+S8k1fhRGIe604001G00qPe604000200000040828041W2Q@1000W00W12_d1WG0100G40GG0
+GBW1e_T30hp000000W1200000105WW0G0oQpWQpJO6E380W0ieV2G0000402ig@3ftc0006G
+0004FfdmNy6000800G00014e9rDemV600904ch1rgd05000a000btP041000004g70001000
+005000G00090W0200Wa0kht040090800020000028_z4IiDXn_CeJz4AIm000G0DgR00e0WT
+3CW0G0Giw60002eOz72oN2002002204000G00e00J480W00040000an000000W8100000006
+00400014kImW@@D00e0mWxI0001er@72vF10001LlR0X08W7vJ008AmfG6q2h193amWz9yNV
+24001set040428280_@t0WxBH0000W00OW80Ge0S3sgPZRyPupw4EHN24W800000O0X40030
+000W1818WglC002080I021aG000400WW2000G400020W000C80@@p00HG0G20W004000082G
+00000C410W0G2000G00420WG4W010000014culJeDV96vF104004142cSK2G4G000X080000
+00b08a4600W004000WW0oUs00010W0W0kxm008G0bzd0001100002201UQq0G080ffR04X00
+00SLRJa0WG0021000WG6MBnWUYn0120GdyI4CV2000200a0000G0GG0001001402tIP00002
+20008000YSlYVwP0H80mfz600828sU30KVGKXW48040od@aacJe@@40WG4W9H20550A14174
+8o0A1W8W104IA0009800040bEzDW08X006W100W8000cQGtWjQD000W05m284H204X490090
+W042001820000D3028He08WG002G600504008242G9JBQGTv9ayj4LmR0H000G020W080o2Z
+11W0W20WG02282H021602828G81702GO041u0C311Gm0o4WH20W@dDueJ3080084408rV384
+000W0100Y0800288G4m0W8Y080000Oa4n00800048G4AG48Y0A0n00YGYeG0moc6CbT54800
+002W010402000GG0WZ@b00X0004084420FlR000010008G0180WG000c08Gm40G00W804000
+00I10W4uC00A08W00G0ea2000I11YA000020G2450000@5W00001a2AW000008g400e00001
+XXRGuuLSCV2ZCl1082R80XIxmd00K4000G04080WX20800002A0mw8Cagl100800W8000800
+0QW02000080GfZR0H000000C63200W6GqQk1CW0H000PfC0800W0GuuO4FY10G48Myr30418
+00GY00000G0G00010eW008040604000018300W0200W006X000@@R0084800I1e8WWHHW03G
+001001004G96040211A00G000mL15W000048404400mA02000084m800m@@9SFl4W80000G1
+02WGW000Ls@LShl1G40HGC04ixV2G000MEn0W00W@@pm4@64Ml181W0G028WG0I00G009G08
+0401TzR0m49WhnI0X0400000CW01W0000100qHd1xT_0000I00008224IRCX8SV00m400G0m
+puJ0C0W00040q200W2G2A5F110000e1040000W4081E6q0X1GW80oB0001600n000PZR0000
+ATGO04O00q00000W4G4000A00100uB1@bmW@O00O0uPh7k_F1@700090N82c000T@a80080S
+oV1u2W00004WSG102kXdx20pNFWevJWEA0000GNV200@@R0G00Mm60mK70WfEW12V8YN08W4
+0G4000_ZYF0WfU00JT8ud@G4l@X82100u2WT00000006uFVgA0@y0000GCED6Uud100GG000
+8000O0G0m0WWW10220060000C0006000C000O0e0W0GW000Lhd0C0G0G088W0WG410X8I12H
+a2WX85030A060k4C0O8H2mGYa0000GWF4HA06WK0C08063mGC3e20Gzt900Y0eP_AG40002W
+82004GAT9qHF30Oy0eZ20000i7NC00WWHTd7WlwC0w08000W0e3C0000yUJ000WF9p00_700
+40pegg00Uu1XP@3Ygg64LL500yFLgYPgKLGWByWO6000grgA80yVGOcPg8YxWBS@Xmk10100
+mzft91G06000000iB0jm@3840WvTVer@7008j@2NNX@@G2o6ynV2tmR0040100GWNEbW000W
+1mJuNS30qv2qZl70100_fd100100080gsYXa2KPyV3w7_10020PHmmqTLu400OMTOcMtW1uQ
+95rDcst04001Z3RmqK6CxF300UF71sZoln85vD00200040uRu48000010G0200oqV64qU20G
+00MZoWouDe8S30G0080020LG0000801010000108000SI000340100W7rJuIK3E4m008W0zX
+pG8z608GG00000G02WV@h00280G410WG2000000181y@l1021G100WA0G04008I1f604G4Op
+_4004080100050004fWzZC000C4M0C84210e2G0000WHI402G02000b0008044KG104iEth1
+84K00I01CNJ22000oht00W00bXRGOu900001008I5w9000G0W0W0C040000G1gR00G021410
+01G1012000418wU6kQd1C00000X000200110402g1aO07010I81G000CvH0020I00mC@9080
+00X0001W0841008X022otWTgD86U3G0G280000001KOu6y@l108m0A@E110O0X@m0100WaaD
+0GG00W00WpzD0GG08440a_zD0000308012000000C80000W800m00GvhC0q71042202004e0
+08009G1A00O600ufS300W00004W0W0GmLFCJa1ndYHHy6SVD3j@@G6t9iZW1ptdGl0900W80
+OW000020410G51P0v50000GW008Ggrt020001sRGex900008HS30000W00GeodG_@F1e0084
+04W000W0044002E004K02W0000000120Sal14841AGmW8vJ001WGHw6SNa1NqR00cLA8WG0R
+tR08001H000bcRmy46G00402042G000400000804100auh4bwBX08A000112G204a0000W00
+G20In_6G0002G40Gky6W01WO8U90000Y00GOxV380220201GYW00W0000lB0008180440204
+8U73W000004000WW2GC0I000Wm000G200WW402000mo76ilh7hla0W0008020DyRm@@90815
+W000GUU6amU2Rgd00818K000W0Y0001I008m002206182000a62408100012287S6020P010
+24G0000043O40020W8wztWUSze_V3G40W00080GaG0IO88a0450G8c0004yWh18G410Y04G2
+000020014100GG80G00UlF10080GfG1W2402141G440C46K7W00H082000iIRe08G0GG82W0
+00K00000C0G08280G20A9e0G4522aAWP2H04420bW200G4000W1H0G4z1Qmc_RGG1b10WG00
+Y10WG0040800004I80001S00I80A0011001K80021040101G0a8e009000W0IctF1048W001
+W9Gn0824068080bZW04100W0R080g0H1GGXA848GP0ZW_D00K8401I6298800G10IW8W440W
+W26a0W0H1280m000ogFaQ_P8IO3000aqLY1x@d0W0200420048b0000W0G0wKB60WIW00041
+20H004G0G5W20000f6000181WIA100GG25f0000008230XG40001e00002Y00HK000g@o022
+G20G15Y@F40420Zxpmzb6GW0100G0Hl@6G1088e_4G0400000Y040mrtCWW0000040202WC2
+D000u25GG00881800Y40YW0050004200800W10HG000e0G04Pl1000WG0080029eAwJ00038
+4WG0G200000809000W4416aG08890C1008G014oG0800WO8mW00C4Im80000O20001bFQ0G0
+000220l_d0G0WG1000Wp@8G2Q101W040m5iC8X05G140m2C030G80W018GO001G0c1AW40G0
+0W00010A00000221WKh310220W01WcsJ000220XG080W0880W0004000100W08011We@J00a
+0mSy90200wrV300082004004X0000Cra0H0000GX20G0004G1WW0001W0W0W4G4aY00e42H0
+80001K00000200G0G2400G818z@GQQnWQWV00000051WvsPW8q80010Oc00015P08G0000A4
+e0002aBX5wD0W9000Wo1qS0eWWqN040000Y0000GC00040O20A0080G20yxl10WO00000m42
+Z0003W600Wn@z000S302002400iB008000G004a008e0W0mt@DWg300W0mNT600020004000
+W0S2H0000iVy8@D000yb00000m380YV@100C0Yu30c1000000mW8000Or50hi2G000Wd3mR@
+90Uy1G000W7FmTFmC0000@vV08lM_90808806GO0C0q0O0e0m0G101W20Y14443038406080
+C088O0O0W0WW0X03121m042W1G0010N000c0000000W2000A200m080G5W2G505000A00000
+005R6200W100WA01040f4C0X800iY0001000m000W1W003Gb1LWA200C800G80009dvt0042
+0h@l1L1wV00KLgIr@1W@1O6@30G_70WcnC0zm30gggOs3FGLLhY7U04Fy08LP6GggAWyF0c1
+00Kbg00Gb@6u@0Ot@0G00e64eI1dy78e404nB0_100Wym1T600W00002WTfQL0WV@2uBC500
+G4_l10yl71Pa100G1m@k700@F0Fy70000WaD00qDTBVYtogrI0id1OCSU_REXntbux@4U@FX
+Jjn8Bh4sWs08W00LJPGVZ9e204OT09Y5EX4kneXx7Q3dX8mJuJ@7AqRZ4MbeXS600WMUUl4D
+ObGYupy0lDHAyG2vF0E61OlXAoFOZ85IOxR6A6E10W0020000800G00000100040mhwDeHS3
+goEX0xJ0002GRy900400080Ist90Y0G10040000ENZ00001040e1G00100800020G000Ihpd
+00008W200000G40804ci104m0kVEXgyJ0000nYv60100080030000WW04a04100W0yNl1001
+1_iF10200010GYlEXtvJ00W0008WW5gD0G100W0000001044000SN22010W000206G008000
+O008WW20000W08801W0W000004008W80WX000000G00Y3nI0000200D00800010H0W00CkZ1
+00K0080120a0e8R30G01y@V28820sGF1000W0008kPFXqKD8mG3W028y9Y142000048S7c10
+GJ40408004G22a0OVV602W0G0008000eb_DONV3m020000040G0100601000PzQ0G400O00W
+3sP080W00080W800g@t0G0e08108000010HWemV3G000y7O2G000_LDX_@PevT3IDpWhuD00
+0580000Q0400040004G1000200050028G0080080W200000100001W124400CV_R0K00Wu@J
+8Nz4g@tW0uDen1300000H20OT63w_t0GWG2002880000140Or@D020WyUa1004GIAp000000
+0eARkpWD_D02G0000000092lrR0220WQ@J0G10mu@9m4040000mPr64ul100W0400Wykl17b
+d0480540408800aW0005G2W160mywFCJE60280MhoWQyDm0c0mbn60W00SsV3a0WWa5l1000
+0G0W00e4G000W0108041000080G400aX23dTR0Y00We@D0001KtZ6W020W1W1mLz602008KL
+3g4oWFq21W4308G10000O0000081W100WWN04nnZ6020820WP2Z00G00e083O10450020000
+0W1WW04084GYW00000000038pq7000945l1nJRGyvC81040504mha64@V2DxomGrFynl1P_R
+0100HG0G0nLO00WNjKjD0000XC0Gau_J02840Wu13001G0108G0081820uwM3gEE100G49tR
+mu@601W00G0W80000400300041Y04001010O0I4_60000n0302280XGAy0G0830WG4028W04
+OE0ee2026800S01G000Gr84010g0W82Y0Ya11G0aI048L00WGX1DC2GW0608q0W8b261GG0H
+Wm1W08000WH00410000W820410082040000000X28G200W40I09000400G02080012000GK0
+8C818Om1m303e6W60B204W684XG200G4Yo@dXBya00GKGYy60041AtJ3000WHK04eAI3W82W
+W84XmG002W1YGG144KaG6mC8W220W1WZW228X02HCY000008082m018zV3000482H0024000
+00H008201G0GC000m00000X508080HG80100oHt04000600HWWG2KpF3ntdmf@9000020100
+0W0ekBDe4@400i2Val1DKR0b00041H28I90100020b0000010WG100m00002Q_s0A1080000
+0W2Yq6@60900004GG904000W1500400000G1800H0W14Ku8T9G000iKl1PlP0G0000G01410
+04A040000uMS30q1080210140000I442010G1086X0W0D64K44220G404600200oboWEPC00
+10008YeuqDeM536kdXlxD0G008m0G00100V@R0304C4128002WG020000iuPM6W0G0Drk10O
+00000C0020000W102I0110009040101Y45000001V81000W3G2004803002301G00W00OAe4
+G8G000W02WY80020W0HW2WszDOYV32Hr0G000NyRmnz6i8F3G000G0W0W000418000G0ensJ
+eD83kmbXZBDOSy40400210gGG020200010820200084000876W200e0X1O10502K400O120H
+G000W0GO00000000IW0K20G288X010081HWDtPuS03EobXxgD00007000e4uI00q20100G4G
+O0000WA_sWYhJ04002085WR_J00002W4120020OLaWA_t00010000K10000aS0A7S600r102
+00qB0500020h000000ZI8F1000040WLcEbX5NJ0000LDyCKnk10008y1K0020SNv18dS30UH
+4W0koN00WxbVDS8MLL00F@GfA00euV3000WGUG0W2200Lh240uFugLDCrP0CZP0Kb308g@10
+G@RmhE104eAW08000N0g0G3y90um1u@V6ukw0000400m3000W0400_0200W000030006044C
+00C00O0000G23t002000c40whD10W40000W7bA14000A000m500WB0106060C0iWOmD00WmQ
+A@6WA01Wn0L4g0C400cPnmP000WA02WY0TCL0O800mG087S30WA00011Z100oWs646E3m000
+o6F1187K0000uvkN1080WD_7Gl96So6900Or10ei30uv700e_n@60O0008N2000000W8_0GL
+r26t0m3F0w@C0y@i1GUuz7xy3X0OaVT70__F04100G0Y0Gbg000@XgA000@2000000h2Wl_2
+0000V10000Wgj_RWP10WkuEvtCI00000000dj00GOIUqsl155L1000W_ZCelEIckFXCdI8Hy
+40020A280ewV30W00qQj1G008Myt000Ii90@0100WrvOuh93g0pWIuC0200mi_6SPT2FsdmG
+tRq3c1HmXnxw900G0O1F90RW00018emx7MpdXsjheYRC_stW0cy8IX7_Nt00I20X_dGPt9qU
+c1000ee400SpA6HAO000100020XfO0004W3_JOp@4IvtWF_Juol4wv@10Y00luZ100W0W200
+zfd0008WFxP00W2Tx@60042uSU300Y0i@V28000G000WG10fR_400W82002uRR300G000080
+W04O01F0400ej_4A@dXGxDeKV30W0Wqhk1W000M2n080080041Elt042G0Rop0Ok004010W0
+G00804a4O2fyRmHz6q4k1800G2cs0G416004W02800WO0000YGci60480W22000GG0G000W0
+08_ZqWoyDOhx46aqWCTVe@V30800W0W8000200m040000000aWW00Cnl10400000GBI0GenM
+34020000040041001Y9mI0020mDH6008000840020OCJ40G0G0X1W0aDl180K008100c02Ob
+s4oXCapwD0W00mev945d1duZ100oI0008JldGwR9aLF3WHGWItN2000F004GAot000800G04
+EQpWVBv9DEC08J0K_F680W0E@t0Y0G8a000ovt00G400W81_xt000W004048000GC000GY41
+Gm42Y920DJYHb@OCkv3HJA1008Cv300p1WHLl6CYg1vfp000040W8000H8YjtWp0DW00m00a
+0WDnC86KO_zFXuqCOjf4U@t0003gXtpW00000005bGB1004WBLDeOK90I000002048200W00
+040Gz18ndfj0G0G8UU6skt0WCA0Jll1080WDzD89434008UXw300G4MjtWHsD0020mWUIagN
+8zudW04H90G209tz0000eIeIO_T36mFXz@D0I200a944000m0Gm0009800YG000G4YG0W6xD
+00G44W800W0G4W0a8m8gG08WgH40WK2imKnl100W0kstWn_V0W0000WqZU_U000GID@60020
+00I0800000WO08410ZYW10G4041000040010H06Q4W00g4H0404Gb8K10a08A0ux@7snn3A0
+00lVR00W4WpCD00Af40000G29GJ_d0ug1WLon000HGOqF000K0G400040A0G4000A000G002
+00180emy_6yIl1VcdmEx9CZT87tR004104002JPP00081YG00LvR0000crgVOvM6G0G0aUh1
+m400I1uX@@D010WG@x6qdT2JTNHEQ6S_R50A000300asl14010O08W004020100004a4nJ00
+morVnU4Kj1neR0000c9bOm000m146000W000G8W310000Xp7Fp_l600409LU300080500WG1
+0Gny90cP1equD000G0W40k8y4ketWgvJ000202G0WOADun9C040004W4vweAe0W0yZU20W00
+0080n4AC0W00gN02We2D040000050000eK300sVM2G000NGzGnu9000au@@482Xo000X0100
+mli608O00009oXq@0W0K5p0000mig8@J00mTTg@CeK0000202008y3oD0m00000WGOcR0000
+042@100@1u@V300y00000Mu10E00e3b500000u9F0KvV38000uHI09SCT20c80Yvl23000W0
+00Msr080Y000O2000743k107040s10CmU2WlA0M9M20G00h8QGRu6aBk18000G40002W000W
+80Y000004100WO000Q6Bk10C0C0O000ec0eYRR0nT1ytF6000mi500qv@6s500i0000000y7
+I3AUtWW_CuD73eW20eAYi3Cuob0O04000gG002wZFaYPhuiQ9_zE100RvhWVIyIdK8k10040
+0240y2f1RpR000020210W030@4d1G00AhyQG4w9K5G2N8Rmc@60ic0ukV3004GKyD3R@R000
+4002W0t5RG9r68000PuO3YwtWB1IeFy4QEt0G004N3dm@@600G0SMV3snEX8vgeYS6cCt000
+0Sa100QxYXhtn0040GIvFKvl1Dy_GFtCC6l40084EUwXcfD04W0GGwC41c15QP0000000gcT
+fdmZwCaQl1@kR0480WxtJ0W20001XWDrhe2U367dXfnC8PP3gXs0001001Y0kuZ10A007oR0
+0001440400240000004e23000200080W000000F700G01edS30001SFK20G000800Y00e20W
+G02500000004W8m2W0014GvbU38W000000000D0480010002800W000004G0200m4q680G24
+X000000G2200NoR0002WJxD0012m5T900004GW000000Y208LnP0801G10084400000W_Oj1
+64400H0000O0i5V3000W2G1808G10001G00W8850004W2W00X01421G044002C08401I800K
+I01W02800H4W008810W800e04GGL00880W0muoD0008088W90001008669WXE_DOaO3G0100
+00800G11010000GGGGm0410080G0000L00Y800G0000B0G00000W_540032000GG2000004K
+0000e00280Oxx60G222n000W8W10142G16844102000W4G081108HG8G008001W09W010084
+00G4G04W00004W420qlV2D9cGh@60G0W00W20W04WhlO8Y@460910024000Xd4sW8@D0eW3G
+H56CxC3040O000G0600G402000L0O000@@R0K10GeY0IduPGBx680880032001004W0Wa100
+W200izF600G0M5_14400J8QmJ_IW000u9G30002000WhWr400GW0002uHS388021080002G0
+0400G0G4zkRGy@600C04G40GL@6KPX1001W000GWG0Wua@7C101y@V208X0wwN20W02fVRGU
+v6SZc1HYp0041830000Og_U9FXjvJuyR3AlD1040000H0_vtWv3Duq@4088e80G8usG6W008
+aR230W4Wc_xXKQPe4T3001G000001W0GFBF0810uoV30VV0ywl1zEp0082G0001260GgayXT
+vC000010e000048W0200Y040a00W000044G002e0000mGC00q@k4e80000000220eRy4sZqW
+8AVOyy40200SRl10004000W9H001400m@q90G408IK3W900W8G002W00C0481W84W000lgp0
+00100008010881000090000W000921bpG_@68000010W0410Y4wD00Y0GKV6CgV20We18004
+W008O3V30W08qjV2dgPW0G1GW420Ke0000CiCml100G200400520204040003GDWC0101X5G
+41h021G0W0I002W020VIR0c04400eW0W08000WQ0041000YG2I0040n00G0100880g0eEi40
+0040020200200241148W28mIg3nWv@JWG020G08G0808RxQ0G24WfAI000001GW024800200
+0Oa00a0102G0Gpl6yoa14W420402Yq0001G00Y840p0004500G0000800X001800W4002W0W
+50120WYu06Gm508204GY4G44204G5WoyzM2W4G0E@t00GeI0000410AH1Y0O9P60W0W00WK2
+100mpq60H00Ot_4owF100W20000X200iEV20080G001008K00800041eGyD004000W0WTyhu
+@I3e4G0Sil10080004ACzV28002N@t0bG0002AG9610a3G2JrR0u40040XI00004010000CO
+yS60400005004000900000fi0G00sh81400W0040W20A00D1G04Gm4_90G009onA000n0I88
+uRe40900yil101402Vp0W00000W00W7807800CAS0000Xg6JG5004110W0IDWW8800000C04
+0Txp0182WduD0GX0mV@6adR2000A528A240409W0uS@60100m400m@@60044u@V30810002D
+00a98C804908WGma0w7oWr@Puxm400G00800iMf7000400610W082Y10XEsbeEu400009L00
+Q0s4IAF180K0Wg001b0C00WIG800010013G10lscmlD6W000020100800H204W00004800W0
+9eAP3cYB1000G21040mA4B000ACS3W080y@l10WU1080Wo4W087y402uYSk@3A000GG20000
+KyX@7K0000m4W38000q59W8mPeMq7wnt0m51000qLoNF15O108810oz@1cVE008y0y@N0000
+y@zV9808000H4PU@70mx@3000W@z7Gc@604n0ec@4000B3um30000W@nC0wkR0G400uC00BG
+u1Wg00bg20S000@mD05zD0HfA@p700ub000000Wg0Wf@10003XPd50Y00Ha1WQpP000021q1
+0000GA30082000300WAW2000tir@D000S60003000H070C08G80u200m40Gz@900C000G0e0
+004o0000008eU00KzH2003WG00WI600GJ000C000S140G0maG5W000WA89d4080O0G0W0W10
+0020We0C00c140m0GX11W200GC200aJV200yCfF0000whN0oJX000018lyW000GXz0Cl_3W7
+V0UbyXr_D00GKX00001C3000M9aP0xxV008Fl400G1900_N0W0204G0g30000Zk0000m030O
+jn408Y000LzNL100000LP0m@_70W1F4pvV08000000yFS10409mvngvRC_z3txd0ur3WY@D8
+IB3kHdXYqD8FsJW000CmC3jSpGGt94fZ1DzmmTtC020WObT308404KE3000m8200qyD3B@R0
+I0000040pZdGGu9028nyexAAYtWZ@De@S6o1zXwODOetA0000rXh1Tbdmtq900ujkYy72hCX
+ysP8WU30000DFh1N_Bne4I4fW43kRGguR4u537cp00G3WL@DeW83Ur8XJuDe4U6000W000W8
+bB3oo@10008000400W0T9V200G0sUnWr@J000Wmd49qdU2rqoGM@6800000G10100YjOI000
+0Yj10WEvD000K00G01G1100010Qyo00400A0G0000010420000800G01W042020gzn000040
+600Ibq010G008W00120G00Y20002G00KG00000K0X08820W0080000010X008O000X4000G4
+W00W0G1U900800018OD@I8080ejV300C@bbD3T2O008C01001tub00G0HW008000012WW200
+1000H2090G0G0eK000W00W08G00010A0100W08100GG980000804002KZ6942k1W0025GW80
+1W0ORU3UOtWx_D08000022WidJOJT3080CKMV202U0U_dX4@DG0CG00H008000Ge08Myr000
+80W0088K0000404W80g001080H0002200403001W0X2W0000eWG001GK_Fm001100G0O0a00
+G80W8eH60050y2M2tdRmOkISAg1pvd00008K300j@R004O00W1202G8USEXJ_J0HO4ms_60A
+40TyV300G00810ikv400800W800W000Y00uzyJe713IIZ1W1000000EqbXWkz00182000000
+Jxt@RmRtF0200G008Iuj9itV2G0000850KWF30WX02l8XZ@D00108004G0m80rSR0G8H0860
+2011082280084uzSI0004100Ye@43W0008eb0uq@4cwN2W8008204IiaXmuDe_V30160Ctl1
+800G00008O008cV30214W02W00004048240W0lBQGS@6qUJ5Tjx10008j200dhB1040WQ@J0
+0G400Ga30a80xxPGo@6W00Wehg4820W0W001W10mHe6isc10010We00SmN20G20E_t00AG40
+0220GG0kiE6LW@0000000oaVm8Haz900180004f886880H0BVa0208000O0G0000GA0020Y0
+4W0ml@9W2050G00000Y42m830O4c0288e8G02AZG00200Kf8809GG100402400W80W011WAn
+t00041000H0008B@R0eV1000000G80k3b1041000100G40W00000J04M3e20o0Y002600A00
+01800H00WWG08W0124201O0GW9410Y01a8000H8020K0002B0OG0008WG200W02G208W000G
+0g0010000G0240012K1tg@GRDO0004041004500000Ow7008000aOr300500X000002nC0W1
+WO40m00B0a004000006002HG41000A02G404YC0000G0041G0W04W00I0G00Ga02482mW000
+0e4b00G00P40000W0001Gb000000202800817wR00940A100lpRGv3RS_l100Ql_tP300G20
+00b000G00004000A03010f00G8100WI0qkY1000f00801820CMs4ojr0WJ010W0082e0G150
+00G40200000018W00G0WcSEl1ddRmyv6qr46n_d0W52Wv_tG800G4o6Sqj1G002QZt040W2G
+000QCo04G01KY00K400inl180801008030G0IW00Y88G021O000W00GG000W180030W00800
+HTpaG5S9Cpl400I0k1F17000XSY1000804200813082E2IGMea0300G100W0006W5040AW00
+4080000m0EET20000W00G00GG420I1000400K40WG0K00WG480OSU3G0K00000v2l42FHYp@
+b00G6tSv9KNQ2N@d00GW000G2W08000048008OtW4W0080C0Ge693400000X1uo@4800K000
+00Wl00000100G00080000CO58000008H00WOzD0GX00G0Q50000rTRGQfOa0V20t70gGlYJn
+DOS13GhC000G90nI0001oaewD000GB14000I0S0000Wk82rrQ2G0008YH00ge0W8Z04G002M
+yD0m004fU0T320ukvV3005qNp_9000AyV00y0l1u0000Cm0yCM5000uzF0000G000KKrBm64
+YV2eEm0eRL18W828JU3q@@00W@10000010GL2000C600G5e003G50706000L800G0000g000
+O0G000G5W1000WUuIe@R3IuN28000W0G0kft0000lFXdmZzI000q401W1Ww300600vWR00G0
+G0W1m821mO7002000GH000C000S1C0m0uYW0W100W8200Wf00WvsxD0W1200MC0WNL000000
+m31GVu1000ul@W70000001Wuhkd4K000S6000g00aqE607U0eZEWBqge350OeW2O010WgK50
+00060WV000001M@@600a@700gA2KNT0000yx@0YX@dAnP0002Gm@600004t00GuuUCYl1VA5
+IHvFiXl1tFdmgzOqvM2Ddl100OjbNsecu7w8dXTwgu@w7ATAXtzFv2m723F1mv00VVNH4uFq
+@36H7ZnuVXK1d4Ly@0005WI@Jez93o6mZepb0G00Ga2RWHK0OpQ3001804000080GX_9030G
+008Wm5V9iMZ11@RGoe901048lL3UQt000vrrzR008G0805000W00080000100820008W4nD0
+0Y0m0B6i6F3000G8400SOE300GG6stWbuD0W0I06054W000TWRmQwC80800900Gxj6W00004
+G8Gwz60004OR@400G08000W00G000000a90BrcmQz90080OfO6G02001001G080G041O001D
+dRmmw9000012a0040210e009tR00O8804000090010Ga@S2PxR00G408000000i0000002O0
+04WmY@980880080mf16000W0o00mmZ9uN008hV3G020N0j10088020H02008I13W00CX0044
+9G000G0YoUC000W240004H407oR000K0820104004404avV2008W0m0012100GG0OAH9qzl1
+0W1Kgrd10828Jx@G9y6i4i1000000anibl1hxdmElICF034W00W00GC1K540G1AtNY6yDOEU
+32qE11001lcH200WW_xD0W30mWZR0541OceAkBVZHlP80i78048Mml1G00069v4004000W8I
+VE10100000Wobt04020P@d01W8240H4BWdGxt9yHo93NPGVCC8200e46I6Ns0401000sgtup
+3000Y080GWG000G00000ambw6iua4Z3GIUTv0yE0OOXA_HrZQSKfHM68000GW08uRE3sYmZX
+zD000G004G4000ivJpmE@9CFV20004W802804P4G0200000200800080W0000808H6F6rtWo
+0D0028002400480mG400804W4200804mOXX00H0W0W0080000015Xopmkw60000080400001
+04u40002W8Y0tJW10W04YftWTfDOSGO0a20000W02010008mTTyOw_4M4r0mz20Ztw10K000
+0100810EH2ZS4F9xV300G2W00000a00880Wi7210GH000W0000eO400cXpZ@zPem8LooF120
+80z@R00WXWKXP8FpG0C04q_l100QYl86ZKTCOhV348X0S99C0W1OEmnW@_J0W000800WgcK9
+T@40Dg0awaAtZLnp3d000CPdU6MAAX0Ny08092000qw0IuH6C0004I4008rz4kvi500G1n@d
+W000000XC03V00m71WuY3uzvD000C3A00u4K3000000GhA9QIWW204yl1jqRGO9IyAD6nsR0
+02000880001000H0X040SjT3EfsZ@_D0m4100000Gn50FapGUsCaWY1203G8300UgT27oPmL
+0FSXT8W008oGWaaKnmE00mt@6u@z1uwV60G0@xV0qXk_@h@1W200Or2eQ0_@F100mJR_RW@1
+0WAui95U3Y8Aas@D00WKST@FKGM81rzpwQgCkV20HD0wJZaYpyurWk000Wo800O6gDIAuD44
+00JsB100DxNwQvzYSEcIbmzPOhV30l_0ihb4JeP0200W_wJ8t_4E_t00W00f0Z1020W2kJe_
+mD24_12W20Jy@000118W00PpQGo_641660W00002WSnc10G048000qL53bLp008GWqaJOIiG
+Yx@18002HtdGh@604000W08G1p600GOSZG9kMsWxnI000GmB@6802G8VV30001000WG000W0
+04Wl@JG010000800801By@mtH6qlz60011gQkYV_J00C0m0nRa0010G00FldXSC@fsazcB8t
+o5_VSY@3tu@lH_lRb@dO_dBjQ10GVTkD@Vxp@r6z@iJ@7Rr@lUzVhP@lw6j0WrM100m0G000
+00uq9@6KhuOVcJ200W90000_COwb8000Ze86z1mC0000V20099b9j10U1mC0p6FpkxO00W4u
+0R6w0bdP_D00mtMqeLCPj1fsRmUqmqKD3rcN18002000000280100Mdl1G00CQtsWazD8H@4
+_Ts0Gt104000grF10a00Jx@GLwLanT2vNp0011YB_DetU365NYO@Den@4008W4qR200902_F
+XpyV0000dM080000000K0gi6ZKBPetv7kP@XPxD8W@7wul2W000@vRmyu9qsF37vp04W0000
+pXNkN1W10WawX10020G0000081O402kuE10220W000wut0005WbfR000420G0000G10008GG
+0500Y80110YXyD0030W000eq@D0200mAy60A_4a0000000Y0HD00O0001000002G500180OH
+00000400G01nSpD0G000G08mPxDG000GS_C00808bU6Uus000000820J@t0028008Y000002
+W000002800000G0o0000W108yuk100G40KW0000Y0010201C00202040W034W0000pVG0082
+00W00200G400020G04e@U342000c00G00000280800020000G0W04422A808400GG00220O0
+01G08W00H0100K0040044K0W040Y0W020010000400000G000WG2m000G000004G0064000W
+080G00022W40000868400GX08W02Ga400G000G401Y0e00W0041GG04000W202040AG00000
+ofeX0G8000222009200020euJD000A8010Gn001000200G21008002001W1G08i00400G00W
+KsW1040180W2002W0002080Y109014200W1004wT2Hyp0000uPzDuwx4040800O08FR3ACFX
+BrDW0W04000082000400wLtWyoJ0082mtr6050004090100000W0400CATD100u00H000200
+O020gLS32CmWNyJ00W00040W2zD8ky7EmtWu3C02002000208Y481W00004il13Pxcmvz600
+0WbA00GyyL0001000n20000202H00W0W4000800ek46MPFX2qDOeT300GWysU5ptRmJ@6SeV
+2002GMTF104004000040102100400W000200KG02W00W000WGMS8@D008824000211GE@6WC
+Y000002A8a82O05HiOGVy90G008HU3800088800000WW00W7zz0004HhsRqvl1j_R0Gp0Wnv
+nO@V302HG000W8bV344008GG000008G0G08W00W00W0800SXV2NtRm2y6G0A0upUF0G00200
+80G0010100cH00LWBnAu9000WRl53IA030000WW00401G0eW11400G5r60G0002000G02W_c
+J040030001000C0002W0A090040001mv@6ioF3PxR02000000AO01W0G81PcG4102WCC00WA
+@D0W0Y0082104002808004800100220000DyCthm0010010000W800W0020A044Gn48044H0
+80m0Km05K1X4A014mG00X00040000W4GG00240GW9000H00100G20040084H0004VY1PbpGi
+w60W0900000W1W9028004G0Apm010W03bRGeF6000240G080G0G0000WSK06_730108A53G0
+XeQO60u0XI04Y148aYGK0510000A018W0H01e0004101000000GW00800000W0W004O0W021
+0000G04wU2fyR081GXD0I00020a020o821eG1W0008010LuE@400880850020G000Ia@oD00
+00al00W6@nW2Y090001A000G00004G0G02W42A100W4H00WI210C000GG9000Y000W020H00
+00080008bK3U28000Qct0000Xf@d000GaE0C01000200000800W000W024Il1rGO010W000G
+000G0M4t0W00000Kexyl201G058O00400A0000001G00W080a61000HC000G0000Wi0W04G1
+0D000G0200K0a508000wcsWYoDOmT3000W8200u@@4020H00W3000K000001001RdR0002G0
+0080e00000000O08aU30070qXU2WyA0syN2000KtrRW000WGMC0G00W10000000G60000002
+G4y060W040I0EGYW0080_xt098000200gq8XKJs0W00meF6000HY8000HY0W_qJ0008mq_6y
+fU20000L500K@F60X2A6MtW62C000002H400O10e055820000410080210000W00e000WeAW
+00004Y000OG000180@@dW28000a00A000kfo040000WG10080n4O2040Ge400W6@D0X20000
+W04200008Js@tWaSC0e0000W9d@@b000mOIu6000G200400860210IC1e00000P500010000
+G40qVG00WmN074400051Y0G00200820S08100e86KGl1C000ES53n7000000iP0m3S02G0O2
+m@@600CpUO@70H41y@l1W6P0QnV3W@F00GK0LT00fe04500W8y1WTi3GLg2CWeAuXR1m3tYg
+6k5LLLBoCp0NLL1Uug2ymN4uXl8L1200G400020100080800000YH00WLwJ06WC240L600C1
+00WW000S100K1W0010311WC2004000W80i4W1003WL040f900G00000002u100@@BXH000O0
+00W0K0e801WB03100c400800006000L081S1esu2us10mj305K40AWB0K0J0h0k06HC1iY00
+O41G100000G0Fu00000GUV@@L00C3000000sD0xlV0S5L@100_wV008@V34V00000G4_Gyl7
+0000300000200m000OM@fVC0mC000G7DW330Hy1eWo3Wuo70GPdOggF0ycVC4000GH0Wt@1u
+l@1000uFuK70000@@V_l1420HAptW2wJ0000qAQI4nV5W020_yL2mq6000WGkotWk@DeRkSY
+o@1040WjnOGpPL000H00G088000W0G000046rF10020001WW000ayl10020100m1R0000002
+0G0W0@DOeA3ArN20048pyR00002020GJzp080000204JbPGtnjiYO20010szp00008W000W0
+40Cc0300cCxIs080G0LkjHfo6i4e10000ZzpWr0P00010000asbP0008080000200T2K1000
+G8008j9PGkSCanY1P4y0WK600001NFQ004000440Fn9ntWFiHt3tyOm7X9000GG000009400
+880Xsa0100G40810400000G8m200082005008000D6Q000a0080A80016wo040Am802040G0
+000040508000My30W0G00H1W0W020002G00400024W0G040e24040B0XW28W000G000440A0
+Wo8WW2m0E81810002000W800X0000A000H00008080022800050W0000GG820moUC0W0W00H
+G00000042X00000402A00304e4X0n16001WG000e08W00W0G4m00G01KW0300G0G00C01402
+12000G000006s210Ok5q004G0000000eG04801WW08G000K02000G0880004K0000400Y140
+600202G12Wm050WG0K0160100400G040c3m0000200G00W04018W0W0GmbO9W0I0W0C00104
+04W20W03600I000240WZG4GW2000a0000EG1440O24YG00101E0m80KYX0004000018000C1
+8000GDY4W0A2011G0214W020020W0003e062I01GKG0WG0342501AaJCCWW2844bW932830L
+A804f020G908000016WYZC0000a802WmsCG002G3RCa5a1XEc00W000e1GW042000Ia2d1bO
+Q0000200W07MQ08042H050nGQ0000G7000xMc0080WFXC000W08200003WXaQ00WW0400000
+3I000005G0OHH30G0H0b2000000X800080G9eOW2W0800002004gMqWD2D8FJ3YZC1G80000
+00000GA0021500Gwb60W0002020020W0FDuw330W04000000W5d0n00GGW0nrPW80001010W
+0W0W001iOc1281400C08W0004G0W0020O2G000081440ize10G2000408200uMp44200CjP2
+0002G400W8404010m_c60G2000100001nVaO000Gqhe980020G0c01I01W8W0lTQ01000H@C
+10840008WW8100030GfU601G42W0000G0440900010G00XW4020042200G021a0ZYQ0048G0
+W00000WcVr00092Psn0080W9nCOWK3Q2r0W0G0BdQGRe60080OzK3000220G000W4002000H
+008008000CylP2000eX500000WS8L3090G0000G040nKV60008I00018420410W09000001G
+000W4040600Wx9CeG16oc8XhLJG000080m000000Y80UJDXCRD0000OGW6008G8Vp480W080
+W0u@V900e0100W02100800aoLDeu3300000200400G0G00YHyD0080nDc600000488W010G0
+088vbomThI020G0YA000B40028200G040W0Wa020W0Ga0GY0004G04200GL001X00200X018
+020008100G8H408K40020m1R6a4X10YN54204WnG42001048G400010X4W001CY400Y80G26
+GL04K4GmG5Xe3KW00O820800XK00WC0K0Y4W041204G8o8004H000000H00OI00000020404
+000K008G00G410G0W0024G00m40480WV5O0W0X00980Y82W0W401000WW04000200u020eG0
+0010HG0Y0114I10401W0040e0000ef5C08KG1108Y5200AX2W880010W0Y0500W0020Y0084
+0K80C0W0O000068131I2ec1GWA01W10100320eW8W00000a0G0GC0nqQ01000WG000404W80
+AG90W4a08KuR600b0000a00KG10aO2000b82002040WI0m00043A008jcP00481000G8082O
+82AH1G008000b0400000018000Wp1W0WKX0g4500W2ID8QN30Ga101bK209a08nK9YG8000H
+4e40e02Y0XI08oJi600400W0e4000086W2K000000cz@l1000P0G060008W20000m00000W0
+041G000q3d1W000001000C8I00GGHf60W00200Gq7i60024500Y008001ue08202QNn04000
+WCHH4008a6h104102zD18W008W0HG8008020W280W20W0008G00020004200820100G0W01G
+00000340004af1FuQ00047WG020EGK0001080010G000m200028000G000H0W8e0000080G8
+003GW0100H00C8S2WW440W0W04000i020G001K08040G000301000Lk0m00000m5C8H5p010
+140000081G0G0LGG088b7381CG20W00YW0009241C08@nQ021K4W500000WG0G0y@l1I1W0B
+1r0001A0G00_nD10200f8d04G000410bBdGud60G0000W4000A00W0000W0e020y@l100cWx
+3E10G10nARmTT6yZi1050000W02X0044G001IO00W0X000Y1G0W4Ty300W0Uos0000lIGW00
+R30100100H0008Q00000UXm70000e100uPN3Gl4004WV10500W88XvVD0G0050000WB2n600
+00qB0SJi10WU0000Wo40004Mpi104eO0I0000010010Gl1040mz2000G0808000wDW000_B0
+g2000Ghi9i1000WG0100eL8q90214Q000004R4oGfp6000uFgC3_BpW2MD0_00000AxndDei
+F3gLE100U0VHaGzq60p00Kr100000AY2000Mz0uwh0GV@XGyF0001mFW1m@050GnE0CuVGyt
+@Agg@10H00K00WT000eiB00Y11_xFm2ZTG4V003800A000002mJV1000mRVzF00000100wxi
+85WcGA0T070G0w8K1a100Gb100afS23020M34Pm0eZ10mD2WQjD00G080G04ZW1m800Wq400
+G60006000C050O0kPG0Ct00G41000000rU2S6G5G1020N64040008000Wto2m0W1060@8C0s
+R00id086E300602040pRO08000CF10061000100G7G000WE24000008000WC5aggA8LL5c02
+0ggYPu3604n000S4100020Yu310002H000000p_9r004W@_70000_@3000000Mj0W9YPVC04
+000Wo6W55C00000GLDU10w@28000100m@y1uoC9W9x0vi040000A020010m37qz000000eF0
+@@Nnat6iFh10080orrWOtJ00020e40WaPD8yz7s@_1000au2W0c1FXOujPTI6Y8t00G04m80
+000W1SUa1Z0Q0010YgoJ0a00mrv60009u@V3G0001G80O0T30100z@F39SdGL968G04uoy4I
+rEX6mDGG00mdw6KfU200G0EfoW@@b8hQ3sk53W00G000GN5t00M009hdmT_9qQv3WuP0IBdX
+bfIerz76nrWC2aeuO92Dt0WW010000G0202020OaE3kwsW8xm0010mWA94Ct3000u7Ft000Y
+0HEPGzZO0001OM16gfFXUwb0W000084G00020i80G000G000408G0W8011200001008W5AG2
+90080OfV60W80XM000802YVqD010W0I0e008000e0G10000O010G0000WV8008W200e0W0G0
+880wVF300Y000410YG100m0W4xD0W0Y0040G8Y1GW000W090S5Z1XEOm3y60408u@V3001G0
+8Wm1W02A40G100082G02420W000G1010W0q000hI044Y80048AKC026G0WP4230400O5q142
+4g000dX0G81000000K00AW21I0q8001WWG02I100GU66WG2GW00X045210e0ZGW00q814200
+0W0G0000W00iI011L01X00G02X0208021GG824110GK22WWW0010G4S0W0020003148000A6
+0G0WERt00IY4W000Wm400094G0588000128A1K031W2011302r8088Y0I740e20W0b58G8We
+Yf045A3WW000DC20H504010OG28a02D0gYX0W0CM01G4000GAMW0MK08080W05ACW46A6110
+H94W0000W1024O00KWO5XY0520Y001G01000Y8OeG80GGbW00W81040H0802XK20I0C000m0
+40H0G8H0eQS3004002W02C2000O1We9JOxU300W2W20WGD000200cYzD01G000G18000W600
+1sldXF5D00000WW1000U580004800XG0188@40070KyZ1fsd00a040A14400000X000100I0
+00W20W6zPOz@40010G0G00002mc@C0Y00040W00WG20008W001O00420G8W804m@560G000C
+00W000WGjDG40000G0000200040800400000q2000W001410G00000080H400Y80001000G4
+0t4P008800005G010YbB10510TgKHcdC000W0030ns_6001009K40aHB000448m4WW000ixk
+1C0200W000210a400mgk6004212H2W4021802028X0AEt000GSI402oot0G4W91vdW040H10
+0004045001ibd100G0014Y1004G0W01041002900G0O_nC41W1148200H00C0e12000002WW
+80GW0GAGpv6aKY1B@R01100W000200050Y00W0WOFJ30a0000uDSpV30G42ytU2HjR09Y8XR
+zDut434WG001160m01026010G104000001HSNf4hkd00G04100WG009YSA18000I47000800
+I00iiq40100KEW11HO00800K00WxsR00GGYfxD0OH00040WnfC000W8040008200010_ntWB
+uJ0c200100H00W0Y00000GKW820m4i5GiEFW2000H00mg_9W4W2004e41009W000Y11X8Xe0
+10YP2Zg4CI8YKGH060184C0010090WW2W1820000084021G03011XuI0K0050Y0184240W04
+2G30000nW0W00000n001G0000GH0002G4A000X400081HKH41G800O02O0G00190103G460e
+85WW80W1L062OK8K9GW9GPeL53Qoq000GW0030m0W088001Z280H5Y0K588Ge2WX0W01G004
+21mWe09GC010842W0GW000W404eA0a90081200DG14802A4610008A41064200840000iR00
+98504G002528m2000H50004GW0300YmaG00000K0490800C0WeY2W0C3X09QG02CW0WPG1O1
+2J8040MGHGtyF0300urU30W2A001W00Y0420800008K20c0040G9b00a9000K000W1HRzR08
+9G1A12000W80400O08800A1W118J0eW2082W0G20zke1K2000Hx00H0000A0400e000W2RqR
+0508010G0K08G000100W0403000010GI002040e40H0000WI00000004e40ZuM1082000W20
+180001010W0001G000aG0H81huR0041000G0WW000G20G008G00000Ga0000402G0IArWdGD
+00400H00WOBD0E08058400G0000H0G800KiR28400GG0X00G001Gemw_6G10G000G000bGY0
+01410P0G80qkT5001000UW0100vvM38300000G00m1000W00930Yu800W00e0808LT3_Gt08
+G0001X0011010080a1WG7Y600060W0G6402000XR00296@t008W0840A020015G40CW08011
+G320000W08010200e00009K0W0058001I00000u1C0uaM9QBoWLXD0Y10m7U90008X040G4D
+600H8hOS300W000108ya40088G00000G00YXO1a000Txo0Ww4W5tJupT300A00G00G0G0GJl
+600004G000048mhyDeSS3oItWwxh004S00100D000j@R0OQ0000wEeg1000qlSQl1000Y900
+WW8Jen30200R0W8vD00Gm0201OhGu4v1OGy@60k2000Wl2000UE3J5000837F1460000X60J
+0000MJ0G0000a0WmsD0e0G91000aI0GtvR00ex2000uDpPmlnL000qbg00040WE10yw2Od50
+G4R80GPd6@758YW0WHN0yzt0KLr1i1T20005e600000WGs10002G000400W@@fE0OA003K00
+3000ALX0G0c10000Z00000m30000C@00y@s2WRc1m9dWP4@dJEnC4G40KmP00GL0KrC10AkD
+3eiZ8qn7K100620043wN200m0j3Q0G003WC2L0g900gC00W20006300m080W1Oy33GD200h8
+00mH000C000G060G0aHW1G400mF81S3000g0K0m0WXW1WQ20Wv7000000TW1100e2000101G
+GWC260H400g8000Y0008000m0O0W0e413Wm400A000WD000C000O0E0m0m0W1OF58W13HpmB
+@60Wt3m@_3000mzi_DGG10aW200P7G4w80GnEG0GL0m4g0800y@T0W8000Hy1mx@30000G0e
+wxU60Gm0mF@404ntF0004YdV84V000y0u70005mr10FF00000T0iw0000WGy10nTx6SUk100
+YuvC0000i3N0A4000bT0W@@muhl0G0ip9d00e02m6Q60000m9d0000mtHwC8sw72Lr001W0V
+lzG3E6ihO2ZNdmdr60001u6S3002000WC2002000IWyuVeDS36b@XxKDOP4602G0Slz60404
+7RpWa@Du7R3000004G2OBx4EOp0008400A00O00000000GamWr900004W0008c1W6pD00040
+01800I005dd001Ke4qJuCR3kmrWIuCeoSCo9F1W00000200200Cvh10008wwqWTrDuoE6AQt
+0010W8001UPsW2qD8TV3000m3B00PjR30010ye6300800070ivF30006QhB10400T79HnuO4
+vk4neQ0080WTqD0400Okp60000OCR3gOE10A1000iNgHd120G0T9a0004mHtJeb03Y2iYAvV
+00084004A000W210008W000400A800004H100020G08020eG00401G000a04801W0041400G
+42n0250004GG004302W04G1080651K800004XjwD04Ofi2K008280A40G02000440a000041
+61W002G00i45m50H0G220W04WY00088G0G0WJ10094H0252010011K00RwP00G02W005040K
+002r02I0G480Y0488W81W004W4W088aGe05122S811043901H0823Z00GK52W0301I3W4080
+05X0HWX00O05C26YG0P0K42eWH4C01810KK4K0060GmH2000Wu5000rC002H0K0eW288D08m
+1XYWG08G82040WnC0404W10a4G008gG100W80HG1ZWW0GG10140WWO4YK00n021028362G80
+W3zDW8000800030Wm8221WuG0A8e0400204KO2464o002A410G0A62W0GW158414EbW0K8I8
+eg0000105433bLS0W0CKGL010eA8H3K72Y8K0g45H06402g001C8000025hCW4IY0G16a08c
+GWWe0AW1c4HG04W0H2G1WX0YH1YmJ0OWb000Wi200W020e150af1HOG0Y1K6HX0AW0gP0005
+0KHG0X4080G004000XW080C18edjc0000G0m000100000S90G0m00G00148300420002um00
+08702004W00000W0048080TWf_DWGG1000Y00G10TgP08B400GHW0040G10004002G003000
+0O03100000KK006800400020W500i00G0S00I0020000C0000405W0000a0wzF1W005W010U
+ptW4@JW0000B000e01X08010000220200W4042100000G00CX0004M7300G0kVtWKEC010W8
+10058003000GXI00aee1XyR0X00W5_D08000128000W0W04Y6Mr060000940C00000400001
+0W80WTwD8PI3EiE140X0PkcWX0000000000K002W04040044000100G080028G0280G2W080
+20WY0G10040W018W8100000029GhK6qcT2082Y0100001W044X00008G00402000200000O0
+0080000G00a000000409W10000080024WdqD00H000G2aFCV08Y0mHu90004K0000a14XC0D
+08000408W0YJ83030200000G018GX088WisD00090100XMvDG000qLw60u@1G0W00W200400
+0G4006Po01800bjRmc@6000oG6000G00018WG0002G00W00ACvoS30400cLF300014000002
+0etJ326s0820WRiP0082W1xD02J0m__600202W00080W01000Y002kGEXE@Cu_V3000We308
+OeJ30080010000400030000e0B_R0440WFtD04W80002mFzDGc8c100012099G000kUs0800
+0Y040Ymt00W51G091WW0W0G2GWWne25G40H041mG3H04W4GH20K04089001H0HCOO2404M80
+4W012C410P0250W4204410J21000X24K100P00GG00g040I0000mw5W2000Ka041W0413AC4
+0W030A1A0W0a4G000068W0I806Y800006591i8800G01m0050W0H00M4W0012AeW00420G4G
+04004080Y0GW00041WWvC0W0000m0100G000G0GInYOGW80000e0020140W021048f401000
+82000W801284048L0030GX04a60W00001rG0001W0G0008G044W0G02100GIA120201I40QG
+0200W010g080000402100Y2W02006000020G4n0H080101502u09Im08048gO022MgW0a448
+000000100nqy600W82005000020a0IKI1GW00021b0e9E3000000GKYI0uW4000A10100W0X
+WI0000I00Ae4000M10WI00G1W00WG92WGW0W0bK2M00242G90G020200K2000fl1000WW0KG
+1GG0H0000W4000000K90m000005e0WGY800W2000G00G0e48vwR0000I00WI4f40W0a0G900
+00Y000K20000841006qt00W1000020G01G42201Y00W00001000848101400W0004I000414
+o018001UBr0Q9020W00010200080WOWXIXW04400a4G4G000102W4W4000W2CA000C480o5t
+W4@D0A40040WG4000W0WG0W80SbW1ZddWi0000G00020ZaW240042ffS3ksF1000HW200m08
+000GGG00G048201I000u30Fzt008O480018G25W000cH0004W220W0u040QG0040m2822080
+G018G1405UR0W0460G00A20000CKCvl10060C8HW200W00CX00504W0W0dUR0008G0050eW5
+q00480I000X2022400000W2y020014aJi10000L000ji@3040GIZo0010WP@Rmyo60500uGM
+30iY0G04I090W000O482800040000500W80080W80G40e4WG000088G0000Ip00m@@6G000S
+6v7002K000W0284mfw60G8000041014002GL001208W002W0Ogz4AvD14A0WfVd000WM0W50
+mj1Qq0020qN00002060000Gl5804mz2b20000L301mVp6W_3000W@2w70G0WyB4000004W00
+0eK9022WV1000UM8y00042TKnd1vdQ0WMXW0wI0000008_04001U10800GC00000m0000420
+qT3W01zNGhA020G9u@P6G00L7_k104Hy100p0Y82WPU0W@1FWjmD000O0J100K600zXR0y30
+100000mC@10G190W2K004m0e6000000W3m6s600000aF5e00000y@30400u7Oi30C305G00G
+13Wj5DmTt1aWmtT410WgE04v40tvE0go3ETW3KrC30Hy20Yu5m30iol10uB5000lpTY00000
+W@71WqlD00A2E3K1Ck10e4000u400GH0006W10C0x4O0sR00yZISp000WA070C0g0O0Sx00O
+_1006300G500WBG1WYWpCT0I900iQ000000u6M60Y4t00W0e6130100WnD00m000Gku603Gb
+1LWA300ximmJ0W0e903mFWV400kE00mP000C000G0E0G001W0WbEp0000Hux9WW1mg5W1c2W
+gW00Hq10000w_rN000yPt800ky30YH40G150F824400l0agW0000GO10GQx600005xG4F0W8
+U1ex@200000aJ080ud@0yF@1200000_10000800WV00000000MT0W8_0D000W5000m300E1W
+TZ8020WJ000@5_00000W8I13000Lv10000gwHIpFqgj1Nhn0018WAmV00W1GsuIG0O0uA830
+8005Sk1WoK00040K4x39J_mjQL0000g2O6Y8d1001W0G000G002G008tP30102S7Y1BxO000
+CW2ECusx4000G0100440210W0G0W05TYR001000G10000e8A40000X0002vj@6ChT2jWd0W0
+0000800480100GqJk1JgRG7u9000XSOV34000Mjl102G0U3m001000000X00WKxl18200c_M
+YyvO0W000W00eczD8aS3048000mjuoR308K0iPB3hYA1W10W0tP87T600G0SQR2xBb000GWe
+rD0C00od_60000C8O3W00GG000Os9665n00020l9R0K00WzxCeeU30nlW00W00800mMx600C
+0Oyq7kNoWQtD8Qh4A2@XetDuBT300K0H0840406mcK68g05015W1508G0084Ki8840G3100W
+000DoXJ6e021000X0X0C24B00G010W010G00GH4490GG0K8002A50010Y00000YL82101012
+000K080408OH000I800000201050W01448400W0e2Y8WC6G0022200000X40W0O0G4Y00200
+4bvFD018muOq90010000G240205YIG429HeYA002W0680010H0OL8040Qm0X28We65mI8054
+2O0G0Z4e88ePW0mWe0480H1030W20025Dm80400018G0Y1MH104bG2GG2000kF4X0I8W0507
+n04484KWWW08G444IDW01G120000GW0G0gA02X04W00W840eW810204082GY24924G200O00
+A1Y0g00W0400H080000IXA0G0044A080OWG00eYAKuIG0W4Y2WX1W4p10008Q0G0200YDW0K
+9A03a02Ib0BC0C0090SO808321PI5402X11G400X090T6W0GW000G20mG1WXqI0H040G4000
+hl00GS4G13m20PW81X5K26004C0I8G802K1230043840WY0W8eQXA8O5d00CY3104006C0mG
+88824G0004480I2WK0809O0Oe040000Yf10100942028G005004000W02X0GG01G0000Hi00
+00b60fJ0WA40400aW8W0W4000002G10m020A00008K8C400WW0400000W0iW0X8W0Y006e22
+0048G0700000w6UG0000400W402000001m020O408fYV3000016W8AX@40400000G001044H
+03340800X0e0000200OHL3MwFXF@D8RV3008024I0080W0W000800200H0X804W041100G80
+C000602W4100040X0110a000040040G02000801G0010G0G000400030000ob00000GZ2u0J
+30G000C800812GZ_9000G00200208GH200hKQ0100O04000010UqEX7hJ00080000Xd@DecV
+3000100A0a000W020YneCufS341X0101015W0040860004GGG08000GWG80AH40080a9@P02
+00Wuw080W00000AG020012GeuE3QUCXDJI01W0W8C00080W00G0WG04XG3004IA00aCW_jPO
+0J30020Scc18G40a000G00001000G200WG10D8R040W001040800_xt00GW0G100002Gkak1
+0041csp0H002VRR0000Ac8G0Dmd00102000Wd_omk@6W001W00048G0000000W041040022W
+02G09401WvHC00W0GUz60G0000G0uKS6G0O0W40WmMm6SOl1W0020G0028G0WH0000022000
+02088Qbt0800B230020F180200001W102000000W8D00W200053qR00YGW@9OeIz7010W90a
+8uGT34300y5U2e000crnWAzD0W010WWG0G817WXX28O020m02051CA0GO00C10O4A0CXICAY
+e000b81484G0400m0WAWL04GG05oe84350XKCG0X001KH200W1A800240K40G4000WqFC0W0
+Ge0A00Y4000m001002u100LA00isO20800Wm0m80004G4422e2520836Ca84m0m8gX4mm20m
+H_6000G00O4mK16004420CE0W24e@yDW4H801X100202046000W0e041040G20g860YWW00b
+21SK20HW00m062Hm00410C280G53AH0K00G8204G0090GX0008K0000xA040Y00Z0mG083W0
+0W0IH0D0icF3200000W00020mC4DXW0C280O4G1G00e8a245404e0WOY000W1008G0cEo0G0
+00GW0000200YCK20o204100AH4a0Ga40XI0000Y00Af42YG092XI8YG001200800G0202bKo
+4G09YWK9YG80001GK2W12221H9AH00XVR0G0000e4000sb100086GKYI0W08W00A920G104o
+cpWf@DuxV3a000080000b205K00Ga000K90092O2H0KI8000e0GXl@D00W0010000e00200W
+0B10005a00GIGZO6W00GW2WI0280881212Z0H002090Y800402G0W0404G0e00G000G1Ha42
+40XaYC1GG0102081W24G100G8G2420000cC0WGJW00140010Ie0G000000O40Jvd021G10GW
+8001Y000400n000X00008C00018G450G0546U2020YkFE10G0801000800G48100Y202W040
+00002Ye10B01Ge01W001420003W1HAO0C200I0000O4Y4m0980Q00G2I0G08WAWD000412G0
+0W09G000u8A2e0411es43O0020040QAV300WWqyl100138014Spl1014200803008005420e
+0mQuP8xD3ouo00G003lQW0G8G0A0g80WOG04e004CW00800G00W00GG0800GQ432G0445806
+0008224000m1W00012100408e410000Y80OG100GHW4000W4vc@60000420084a8j4jIOVa7
+A69X0pDGG41mf_6K2l1FIQmaz6e00000h000050400G0Ws9000aw5Ql1u0GkN020020X0100
+Gl8004mD1j40208@7010W0W0G040Kv2200ulGl9042G_20LcR00ee1M00eU1000YCqh0000u
+l04006000200WcBG000g1800000A002WgHD0K000G8N44M00K2W6000W30200G0GFR844q@2
+02004_KEXfhDG2000GP7WfzDWQ00ai3GHB000DOd0000Si30n20W040e04Kl100OrH00@30G
+10W160@@F0ekR0K7Ur500wwV0uMt1eEW000000uQ5t0000000005KS3000WUz70OBZb000uE
+t1000GtH__t00m022Wv@1m17m@_104n70WoEWupCOQQ9oPp0S1s9K1yp00Gb000E300uD00G
+7W3060@4C0sR00uY000b100S600W1m003mT06Wx000pR00GCS6mCG106066C0t000s900000
+0q8fC00WY000C060M3kTm0qX00eZ0008uFU30C0O000m0m500WB2004200GH0006020l1r8w
+0kp00S7100p_d0008a60C000000sVV00Ae00W0800glRl10cg00Ae10@@10Yuxj@102n70n2
+008aT082V000W0zl7G01@hgP0m_@5mzg2W@dH08YFp000Ob504H706@t0WXj100WV0Wx_304
+n7W10GRrF0Hy1OF@4qV00hQ0GWgqV700rJ70Hy20ei5m100000us1301ii30000GP0GYu9CC
+j7Z8_Gdq6SYF6q700E1VZe@P8dV6000000WGe4W7E@t08080002GG140i7i1H@RW400WC@Du
+cV300W4yyl100G8F_t000O11_c00W0000H000G4w4m000_Y0000004ISoc1HLRm5uI45U2HN
+R0001WdPDe0T6Asd10108TdBnHsCyNk1nydG@u9K1E3bzR00100G5B0d8OGsv9aJM2ZA8H3t
+R4tT2bxQmXw60040iXV30030K6@3TmR00002W0085uRGa26aXS2dOO00G000008_400otrWf
+yD8Bz4oelYVaCeNU301044Tt3fxR024028W10G028cOBX1lCW0G020000I1G8WG1004000G0
+01G8Y18a040W02OW00080i8a101G0W04WW00000000g003280W25W0000WGQG120W0000G00
+240000080020800G0W0001G10Y000eCL3gAs02WG0002140800082001004A80000G003Ggs
+t00G0G4000W00200401WWW81104084Au05G12GgG010GG02A100LA000K1a21280G7ab0808
+0824000WAG54G12512HWG1GAG2e2CK02182010fe0W28G1188000000GNC0G130120Q010GX
+082A4140X802u0000Y040000G10300100W001G0420YAW0100W0450G00O400X1bOGu@60W0
+48iC3o_t042GmW0801860020211W21096000WW220004420009K436800eAYY0W02eOCCWK0
+46HMW5A8W4L0C2CZA0B0D2N02004W00G0b1CGWY00G6200000wVW91H0280GW1GGS002A2G2
+0308141002882O0G8W2040WWa002W0K0W00011G010042K1e00W0AWW0001m0600WpfDW080
+004G02G000000CW000300038100001K80400004G080000Wm120H2004X0G0Y0804000600u
+zV30W00080G00W0Y10040020004H010004K0082G08WY0000000AKtwt0a00000010080000
+H0014mvt6ynl1@VR040C42Y000802cKr00402@@R00G5WJ5P0300G0Y60002000G03000100
+0T1a022G01280WG02W00802000O000W004040000m0005001G0uMN3U3t0G00W008880000w
+G3f8S30W12W01860080161m6DP000OGyq60101G0000a0WY@1C0004mZl9aul1WG00000120
+09uzV3G800G000K600000K0400022a418000O00080G0K000aW000014GG0400I0400Y02Y0
+010W0G1001000W0Z000G00006001W8C00G000H@xl100X0wSt0Y110lc81I00W@9I0010048
+0GC00180000C00qOP20W2Y00b00007PYT3G004080WW400010W040080W000806iid1200GI
+9nWwtDefT32Hn0Z1GW00001W1008G0000809004800000GLW0P000008YJ36ZtWspDuG13ot
+C10G020008w0tWEtDeFk70G0080W0O0u48000LUj180020001000400GGGET601000A0001W
+4W8vDW00G4m000o0030200G114jgg104n0W0W08204000008G6000G008J8W0008410GW10G
+OiCqJl10009RcFXMwC00060441a5Mb0201mcz6W0X009YG000X1nWW20Ga1W101G0H004810
+MGG04BWGG6090Y22081en0284140458K026nH43A0340G17820UKMK00400WP1W10H174820
+002nXGO0eGGYG29CK0Z8W00W02G0902eIZO00100WG1004W0GG00041400H4ftT34G10C1Q2
+8000002C8YW1GWaG2W2WWVCC040G260Y02009Y001m0182GL6104080GE004e0O0f000I220
+00K0800S8008A5042G1G03LGL212H0000GW022CH00KXmi02W640000a95000000H0800080
+4WAaG568X0190WU@D001200000a2G18400G02G101000e0041W0i8oWKW0Y0a0Yyzl1000a0
+0000GG1W0a0mKW60000208W000G90I82002HU3t0Af40081H0WI00I20WP0e40K0002gI020
+HW804H9G10018A4K2004G00G9b00W80W0K200Y0000SA100093810aG03b00002000K9G280
+8814k8tWQ@D000G00G00G1WI0008bWWAH90002000b450000W0I10Y_t00420000WoysWecJ
+G052008G6000002820G8o2A08010G8210WSiD0840082121G01KW830004820I024062KG8O
+2228W00eXa0WH2004Y00H0W0000qW200oos0Pa508W00010020G8ulw4050000W49JM30W84
+20280094000W0G008dq_m3_6SEf1R@d008G0Y00000eB02O400011000808W8HSG800200W1
+0240000GY040004D00E2WGG00091H0HGG0C030C4K00401Z0007000000mIX1WG00200082G
+8O84W01C0W1IHdd9C7L22W860018WG0H0m461G20GF002a0C2422WSNi4hvo002W0AW00Rdd
+00210G8090A4004100100unT3000K00I008000GG485YG24HWWKW08Syh1l9d0GC6WwZJ000
+60004WRUPOcU3_6t0X104tURW040G00020HG4BZc10002GG0000000G80eVu40000Ws3800W
+_2wA0020_B020W1000000esD420WV16b0000T5000W0W00020q@2Y00KlGl10K20z200iWk1
+9YR00002b0KD0002o2m00000eV0002wlCny3AW0G0rAqR4018G03080000QD0100Pfu9Sfl1
+WH6000W0O4000010Cr550m30u82mW40GPBW7mK003i000U000002OsP74000i20eX500000_
+@F0G4V3OwkGeg0WGy1WgF3GSo70oUs@zjFmd3KWWI00Wb0O7000qUq1WxSN0000TSd@0bjV0
+0H0u7OHNR000000yG1ZMRGTp6000200F00iq22nN00nYQmp@60000cw0000W8iMpD000W000
+010106040g0cV00qH0006100m000W1u0GJmudEWv400pR00Wc000O000m080W1OdWAmF30WT
+MOu6000e2e0W1mE23Wz600pF0000006328XS3080O0ipm0Ol10mD3WmyJe8S3400WxC0087S
+3O7O0WAmC36WT600TWNzJ000G500020640xo@00G4G070W2C04D2000W005xY2000AGg3H42
+00200mH800000@N58y@VUOsFu@@0u760u7@30Yu7WzttFW2gl_rV84H00A00u70004Tq10@y
+30_v7T000k3H4150007y00@GrJ0000000AxNxP00@00y3000bT0mC00o@F1m3F00uPmWV0OA
+y00EmB9MNLYL_a00800W40WJmJu2M3w@t000QYnwpGCY9ijF320182fxaMmD8MkDIytWHNDu
+pV6W0084ca160Y000880010uoL3_@t0m710roomWv6y6k1hSR000GYyqD8HT3cjJYRQPeOx7
+olxXWzsuoE3Icr00W00Lnn0000KZA00fvz000G00C103ip0004WNCDOK1Ig0dXxDJ8gl7020
+1q2@30G0050000820W000nrx60121umV3000yy5W4ho@0M40ebyg8IXAwQF1a4020008004A
+001000080050000012G0004024Kl104000004W0WB10000WG0H00GG004W00600W0018010A
+02H0000408A00000_ZG080Y00003000C0880G1000G0WgUT3000W040G000e00080W04H008
+0030800204003800001C00vfp002000440000000GG0G0G0800080800Y0WW0GLG80GG00b0
+08e2K18O00G820G1003401W20XeKCG0042008G0404503W8G2a0Y08885001K1A010900808
+04W84840000i62Ga0GI840C3004428H808OGaI07000e000W04W0080A00W0000AG00W0W0B
+004O0000204005Gm00zTP00000W440000G40G244d1040W0W0028YG00404212GbC8A00400
+2E4G0184153000c0a4000W12080eW2j041402a0K0024F0O041i0e07W042008eAI428L800
+080G00118000m3A60671400GSO00Q0AHm21020W3aO1000C000G013GG0b00020008004a00
+Gm0K051040K085W00Gy@6W81000001210000e00CWWo@oWj_D00W4mi_60010efP34180iob
+1l5Q0900000000CG1Ift000G0020000Amiej1000C8000WW0fG00000M2G0008W030A_s0W0
+00u1003Oa1000H00WG0C00W024O6@4G1850W20uTq7gvd1c8G0JkPGx@600A801000000401
+G0G1G0G200G0000H0G0G8000W0G20004201801W0G00004008W00vZd00080000e0c000000
+GI400000000O200010028Izd1000W080Ggt@10084bqAX800WI@DuUw4G004G020eAN30940
+2801Y000030Xmw_DGY000260H02G0404000W0200800G00094WVgJ08004400004@d800IW0
+W0002004W0GSH60W9001000051WCmCeFS3800041k10400009H00W0OBS3_1tWTSD0008IGj
+601000820mtu90020O@R34G000W00200W3W01W3qJ8dV3W0001W00W420mN@601X0uCz40K1
+0G000eOy400000005isT3A0t00080XlbG5y6Shf10010cBpWqEP000G0020mHsD8jS300020
+08IeQU3Esm000000019W803yFi1002002100G000000nve6CTf1pAd0000UZ00WW0030W001
+20WG0000WG8W0PD0040000GWxWD01000001m8DPeCK60002qLl1LtR00WX00e402005oYFXI
+BDGC0805202080JW0GGW20WQ42m0H004W6W9012A004Q000411000IZ4W02010X0008000W0
+GG90W014000WnF40GG4G04m0m800eG048004642G0A00G600be0G02004000W04040808140
+0W021W000880W029210H0WG88EUDXKdDW00000001CW02WWH0G1W0W042021e0200GKG0HOW
+00G18GWAI4000g4b6K2ag0WGW44mG450002404e00088r01G0kK008001A0G000W00G9Wg_J
+04SYWW0C0nGA060G09010W8092004a208WiyD00GG400400C08FCdm1y60G0e0H0WG2t6000
+421000W0G40G400G490008G0eIXIAH24OW08e480400000A000a2X0h4W8018004K2K0O000
+00b00W6024KI94180210W02012201WI0800004Af48I4G60WI02020028e4000Ae0202eKGe
+WI0000000AP201W1100Gl_R0b00WCxP01G2X0K20n206W2I50AWA024GeJE30400aeB3K00O
+1004WWW2GW0902202800X0000G08000280G55000Y0H008000iH0080C100140WI0000GG0K
+00WG0W40002X88G022W0Q4808G60W0052020000381Y010400800H4200W0WW02122280008
+Y09jQmLjC00W001000044000G4W000P4W40008uoL3knE100W040600080I0m0026400e040
+G000I0G0200104G0800Y306022O1AW0WO62W1000YW1I4000040m1000000G610O00005040
+3O0G11IG8G08Gm10000ynB001100046Q040100000A0404000100G400XXR0000mImD01W02
+0008m4LG2000C0060b88W0010801Wz@D8VT3000G05400000OcO6CtU2@_RW00G09G0W8W5K
+84W0I0000W0W000018W01N5910G000408WX0201080000ny00Gal900G0000WO4868001420
+00O0000G0000G0003166l1002000H0AAG1P_p4004Hq6U20002Gt1020qVX0000000aOuC0e
+D0d2000Wl20NyQ00eN0000uUXU1000ax5W08CV3071414uN1j20000@5010W000G000qx020
+1ml000W4Qq620G0q60000201G0G0GB1004aR2j40I0GA100000wsv400G1000GoA00GYo6Wm
+28080z2W00WtlDOV730000030WyPc400000283000000Y8000G005K01Ax02I@10o10WY2GL
+160e0E0000GixV0X4xG01000W0gDuRy40OW14_l1WsJ80Ww@B00004@y3me30gf60f2O0cH4
+0000a4G00c59100000OXPC300uVgg2yOcf5nCJB2VuMKLL18ym3S0005K000000K0104u900
+06000k030O0ExW0C_1086100IWB1O0sRK1C@00GD100iBMS30E0O0Cdm0GD10mF2WK0I00O0
+E3m0Cd10uE300000W8Ht000O000q1C0W1W213mT600h000mQ000k00000A0G00001W04eV20
+W0L0G1A2Spm0eY00mF105000A010G02020002H80GUz6afd10000mCW1100oG006e000S10C
+m000000k@30002415003C0F5M0P_R000n3820c2000WP00KdW100200WgWXP000005a00000
+05N000dzF0000mk30004s1AR100000K0cNEXCoU0Cm006O00UC05e00WaT0FKm69rc5o4OX0
+qi1emwAo1d110000G02M9tZtsU0W00mL@60G0040W0HY@6SlT2PsRmGQ6000W4G0Wmbf9088
+0eAR3AerWGACW700000080WG0vqcGTv680000002GWm6iuT20820kotWboJegz7AxUZItDuN
+T3wnc10081vERGnx9aTf11gd000_YIrbu_x408000010eUkGsfxXU3CeKU3I0WWrdCueT908
+0000G0eh8320FXauPegU3000Wg0000000800WWZOD8hQ30000SwX1Tnp0000G0820FnRG3N6
+0400O_yA410000G8OIU3UDtW1EJm0G0000000W0ALgd0W2012802020asfo080023@RW0400
+0001G100000Je000G001000800WW0H0OW042XuJPeT@42TC1008022000010SbG280W8MEC1
+05400G40W000b5X1800W1q0000220208228000003800O0K02iXl1AX44W40Y0GWG0o0W000
+G800I0G560WG0G11O0eVT388000W8108G1msq60001230m00a82Y00040K0XG00040H5IGG8
+0201W62002Y02Kt04Cm0GGm008842680uMD341020100W22480400Y80W44000800X0C0080
+000O0H005W600G4W000W0H0AC08020100Q442100081000K02a084uW08A2X2G00WGWG0G54
+6008W20L0G10X0000m0Ae0000X0301W30WrgC090J00K01eW4n20040204W008uPP30W00JG
+00yWM3GG08G00a005100H00W00W00G2000Y00540W0mW081WPpDGW04mVYICfV24000cws00
+00000280W2000G0eqc4szEX6_J00m0GS@64dk13xR01G0WfBC00G02O440W0W0Z@R0K00Wzl
+Dm004400200H50rzd0008WnHIucaA000KUcl1G0H0gxd100WG7td0002W_Qh04N3Gc_C00W0
+G001G6AL4@k100C0c7tW0_VOlJFW080SRk1x_R0080enVh010WGQs9qtV200WuHA10K_O8P@
+R0209820X000000W0Cq@F3tTdGScOKxD3LaYHIfLi7l100Ew@_EXPCJ00G0GYeI00H04000W
+0010000add6o9gU0020eMy42tKYZlPuuU30gb0aj93t@nGoVF00102040IF1sG0400104010
+0084W0Y0000408sHb17vd0G0001008G00020tWryD0020ml46Gp0089B3sktWxnC8xK9000O
+GHXa00G90G1002L00FAAng@6S@f4BzR0X00123025oQ0400XAPPu7U3gSqWGMDerV3cTF100
+X9pzRG2z608I01G000081WgHb002008Ge2408000001O10KIH200a0_kDauwDWIA0mLe6iHx
+3@XQmh@60W08I8A140002a0105MR0b000mgD0xIe289H1010W8000Inn00e4000040W2A040
+000c1mrz6CfG5001YK40400H0G000G2u6qXD3vsc00000O1008W0HG4W11G04vlV3000GPH0
+08iM6_aT3We000002MiE14H4080020GH20002uBV30000TQq3dxd0G010004040i00050000
+00G20GEIL04C04W800W104000P8000020300W0000vJd@FG001uCZA00H0WS0nGm06X0000C
+HG0U0300000n340000042Y0WO_Jeb46oz5ZoDbW0000000A00000m20gxN209309vRGR6600
+80210C00W200K00hABHeU60000e@H6_NMY_Zb0n7001Wwbw_D000G8H00WssV00420800040
+N1000qjYG0i6e10g0002Gh0000K600G@oa020WH5080GJ0WcuI0000WL8C00000jXd0W000W
+0a8VHZn1s608W1Ohz7S@@0KCj7006zI@E103000n_@xqs00Cp@NKB1s@F00004000YGE0000
+003O00Gkqd00P000G000m04001Oy32G8300asD3m00000eYS6h10004000S1O000udX10000
+WR7000000ub0qfl100040G080G008MU3Q9BXR@J8Xy400eo030000WP600GaKQC08000G411
+00000c80Qtk2H4000800004000W0s304c0y5K0yF07zp0G0DWlkh0n1000004d300z0H200u
+V1y@V2u@@uF0000k100000Cm0000600000000W1000lpy4cx6ZRSDe307UgcXaJDur@4kwF1
+000ew500QVJY@qPOzD9_geYh_JuiV3oUCXt7DuFN9AsOZU@D0002oz@600OMz1n40WG0iNE6
+0400QVt0G004rdR0080WzoPu@Q3Q5tWBiVG0008000G0104vhN1200WiamOXz40Ni8L1L840
+00ArdXtmn00W0mJL9SgA3hjJIot6CzD3vBb0000gwGI000WGRw9C_t3DWd000YWymDeJV3Y4
+F10044Vqn0080000X00002GG00DSK200O0Urr00W200000W20065V200W04G12G010010W8e
+00G4080G404kOt00W0000gXRBs004100O020W401G08m408mly6008040A8008000Y000200
+00210003eKK60100aXh1PkQ084eWF_J020g0002811204I5411000408200W440G080Y8GI1
+4102W040G0WYG04G0G8118001000WY040W08HW00X00H4O0G2100028GH0G0G000ml50008e
+G4K0010020G801000W12G008W052000eW00820e410eW0280882GnO01Y12GK00e082GW204
+000202000E008G00eG0Y0H04I00W0084W0G0aVl18P0008452G0Gq4Y02000G0W8K0WG200I
+02m07Y24001G6G080Gm00280m2Y401028C02OaG000486OW0A02G465K00W000e0080Y0000
+LE0086W10e00A00I00Y0Y002O0880W42W280000W0G030pO40X12m100010BqW0L422S00C0
+0A00808000428000f000W00402AXG00X0201mWA0mE@6ySj1800WYesW1dP0002mUW9Kal1z
+9d0H001200040600004G008uKB3008Hdpc100100G02002010080E0000100BkcmSH608200
+001mVz601809Lw400W4k@l104000210aal100004021axj1WW00Qlt000G02020000G00020
+4W000G2XxgD00H0Gsa6Sul1p_dW80OW@@D0WA70004mPwC8@V340000000404W00W000We06
+1W0400W05100200X004Wu0CO4S3480084X0usSCsYq00020TEbmVr90J00W0204804GaGG0G
+00000H0CXV2DapGV@60002pQ00f0200W0W8bVR000W04000GZG0Exo0000W400000100GW00
+404020m00100YW0G2xq00000003GW008O410002000e0YQ7UOKS34020qte1rTp080001400
+00800408aAk12Wm0oGtWUlP009000Wv184G00010a0000100O5U32atWXuJ00048008G8400
+4000a10Gy6F3JYRmZu6SPM50000800WGW00eQT3sitWKtDG000W8W0WOdJuZ_40000_3l120
+08GW0100000W_0W004Wd4DO_s4W008CIe18G000004W0G4W008G5f6SxA3hrd02000a0004O
+008000040G8PV3G21200181014224480021G0014W04180G0020WH9180900Ga8c521C8000
+m88A010G00HWWtoR00020a000000Y002800440000ct00OK1HGK11800251H02004m040000
+8C209048K0AWW0Gc0CmWGqG31F810a5002G4OK0020100008G002X000X0Y0W80200004004
+W04W044G80UOtWQ0D008G0G800Wm02Hld02008W040000212ZW8008K0m80G800400G40010
+00a0400082000080400800108e040G40000PA6K8010004G50o@F10GWgG0W20008SkX1000
+110020W0G00CWe2G0000GK8080wYt0A082040X0m8gG0W400WW0191mVyC000e0080408YI1
+xR0WW410050K082000000b000101HHG900WK40OWe410yCD39rR0020moiC004125000GS60
+0We40aIAiwF3K0000000I10004G200K200004000bG0002140YI00W000WutD000G00Y840g
+aI04H8000A1G0G008W4b00XTvD0G20008000W20Nqd0202A42008000W4W4002008W0Y08W0
+05200002Eq9XM_D0840mn_9000Wb5000084WIUb0XW00008CY0008000WGO0042040c8008W
+0Y00282000W88004000010G9CA4GWCC8C0G41oG100GH0G00001000G240O2Vr000050083s
+_t020200We0USt00500W000W2100000050002W0X7YV0W0400004008000Mw_nt04Z000800
+1G4020000414mn@60WY0000Gmwa60020HG00mlh94ZY1C22O00G01X2aMW0004IG2G404008
+00400yjl100040GG0q1_30060wzq0100400K04501aEV20008JH_10W8100000hg00080000
+200100WW009lR00GYWlYD0480000000H200000588GW00041800000eTGCu_V3C1000180Wu
+820G800WG000W010800SsU2eM0000mc0Y2000GcG2_6000eo1402eVXU2010Ota0Qwt00030
+W00O9200KzR200000J1400IJ0000dr8_60084U10000080100004G000810K20G0W4kAn001
+0zk10K0_BqJ2004uc000062G0200WG90000W0wB1000eN00002010000G@1K000VHG100000
+000K4w0000W74100WJ000n6@6mkgW100mUKr60qu300g60G152wxF4Y700180Urqk1t@R0u1
+0000Or200L100000WAHr10Cr100008000Cm00Y8UgV200HyJVt0G4V00iw00G00GV@300008
+000HeJ00rxRWy3GP070000Vn1C1S20i2I00Eg00OWgtC0e0G50001WP300Y90Mgm0001G0WA
+G836WQ000tP000z000S100u2K0W0W911WO200HmCy9000u2W0W10J20WE2000000eEn000q4
+00e301030L740C000o00auc10G700Wc0A6T0MT00iw000z100q400W1G0GIWB22WC2004000
+WO000g4X0O0K1e2OdX1mEBIWTMafyp0000YyqDeSx400W0V_6320Hy10000ei1uOsA4V00a8
+j1oC_000y100LX0000Xu10KW20L200009000W000p0W841iQg2Or20ei500nB0G1DOF30Hy0
+q_l108e00001eggmYggYfC@70_74coC80000Gax63XZdGCSC4DU50G02400G8010000400G0
+eudJ00WZRCvOm00280kAQEtWipPuUD6YC@10W00NsRGW@6q3N22040g6d1000W010G0000q0
+W1W00S0020000XO1V30UC0iyM2040G00200800W0202804WprP001W01440002WhXR0008Wm
+nDOvw40004KUT2x0pmxP9K6d1RdRm9xL008000200G40WY_JuzS3000Go7008PT302000001
+OmV34040q2@300W04800SUN29SNHYhLagd7@kdmP26aZd100424218040WuTT300GlM2l408
+0000G0_3F30002kYt00200W00Y_jFXDRJ8JU60W00SQk141200101G0e0e1V300082200020
+00000O00W00I0W88010W001420002G0091HGe2001080Ye00KW0Ocw6GW1000000eV6WJkC0
+050000G40810G8G18W00iMl120f1905000010m0IWA05H1020DoP001CG020Y0400W020008
+0000280H008G000000X02O1mO0e3C3008004005004021GG0m00002002000420102805011
+08Y0HIP0W10003020G0G0e40G64G00CW00401238n04G01I4Y2000Zm0W0G582p0W002K0eA
+082G800W0GC0X00W00002O804W03GW4442204010041C0YGO8IWG800G0500WG18G0000210
+O480WWG0G0mW021404801W80GYG340G00044008004000Cm0GWW00B0W1000g0210G0G1080
+0012G8820LD0020W0X0aG00068080LKW8080mG120W18041IGX00AY0400I8O000Wz100068
+04p08W1110C2828081082cW0W00W0000H8I8gG015480aW0YGG080612W1448WB04004W18W
+GGG080080D00m2200344KW80HC08000W900A@r0W00081001041icj4000i0020SnM2b2R01
+4000G32W04008M006000001a0000aK0020000ia0WW10W0000000400Y0016000A004G0001
+00000400484H000240020403m01K0800180010001G800W28SD3wYp000400G000X00040Gy
+3v4000CT4w300W0_@aXuWC00000041400000W012FoW3yDem33000WwK00CwS60W00G40eG4
+00W06000W4020Y00G000e81mW042W00006H008W00e100H01000080I000O60200G0G01AW0
+0W00W002CWb_D000WPsz900X4G00000GGWt_DuFT3IVs006809vdW0WW000104W100W004Pg
+1810401000WWU500G0020W_@D00WGmDn606004000048WeNsJ001800WW01GW00WGH004001
+00W8W410G820808000W10W00034H2Y0400GW8_DO2E3000Wi2l1duPG0kC0802O9w4002080
+40v_N3IIdXfrC0yH104002W5G400W150114@V2800O41000406X820mz@6SDc1W000002GyJ
+l120000400010Gu7K30100sM@30008WG0IiN53NAa0G00XtjD00G00H800010800W00102Er
+S24m8000I080200000iX10WSsJ00KW010Y000802O000400qAV21vRWWIGWXCDeRU38040KJ
+l102H480008Y8000W0041920WX000810W08W00000L500X10aA400W020002000484S30000
+1WI000A100G2000W80800Xe8100MHa0AJ42O102000YG4080010O02Wo00000PU04020036G
+404WH20022W04G0G08a84K4Y9184GK15WG00001COY0G1Oa4Y1120GaYW01gW8180H12W401
+20K09482K85J0822882AgGH0E8gGCZ8G00G000000e2140W00W05G01802120000010GWY1D
+00200Ia0000W00G2W8008A2021W800018Yv@D0W20010000GG4002600X000000GZ200104a
+000001000122410a8AW30G05000I40W0W0Y8IH481000120408YG184n01e082GH25W08202
+G2YW8000HY8000WL014e200G0G124001GO0b000921W0G981824004L200G20008A1000004
+E@t0200040301WI0104XG80e4Y000G000K20001W0H9bW42G088LY808G4W20b000GBA00G4
+840WK201G240G90080080GK0004001Kfb7C0G008Y000010W2mi01WIAj7l101WGMMt05012
+K280W900iIQ20008H40400HWGOG0020020040WW000GGYSeW1txQWG00000004Y00G010m0H
+100400008C0G2100WGf104W00aYO482200000M20W00000H2000b00G0200126M280080008
+80041GaI008W00820GWG200494Yg10W40H01YW0000H04GAk600003W0G020GWvgJ00400G0
+1WaYCG080W4e040G4302000200q3Y1XYR0100eIcC00H82200000mG040W0000G0H14000C8
+8000000AW0841000G00008H2iW4010000840000Ge101S@83KWW000W0X0000C6WWX_D0500
+b04G040020G010010_ql1NJQm4F60004wbV6000W002WG008IT@9010000W0qrd6qbX1A00O
+00W000eWY88020G000W0e0000081282041Y010010082000008u3W002W400GH20000812WP
+1OW000108000I840008881G4G0W80080b81001W0W05Y0040W0G04W200040He00008200I4
+40Y0004WG000000g0000KhiHf1000wT00W0wNed00208D1WYQJ000WA0WB0000eM18002000
+0X00zX00Ku@5qV3q0W@N800W30211G0GlR844a@2000q3Hl4W30sDXG00C0004000jc0000Q
+3mf4G00@h440W0042000060000a20wF140GhN000004X0000040810841Sb000GU51000020
+4400mH6000sY4Vn@602WL70000WoE0G4V00ew0000100004000aiV0000WwM0W@fA04X8000
+L00G0g60000000Kj00GrOtC8vC30W7000000a@J400000eW28AW00W700_m3u@V3W8_10H41
+2eW2eg10m4vCGy1W8430O@31000mgvEL1008YN0C7l0m7V10AeW0Uz1KsC3Yu3ubE3002000
+C040K1Exm0Cs10ui300S600030002W1040Y880C100G0o1t0000L060d1gO_1uo00mb100M3
+00uD00mFG1WtWxCT0tP00kp000000WKxC00Wt000c070Q2CYK1Cl10W2100K400WB00WV030
+k0TDO0OI00m0ocp000WT050C0wOK1m000W11002200G500mF010L0AFk0KG00ea00WR@D000
+W8yX82000u20Y8k0lYCsJ0m@30a008P700jPOG7zF004000GhCp00Wx@JW_0eA00iQ10Fe00
+Ae0Wg00K4n7c1G4C300W2A08A00W@@10HyX080WjW808000YG400u1082@00Wg0mi@1iQl2N
+S203y50e0K5k7jaxHnsI00000q12HQ0jCAk4C000MObXBkV8b0LAQrWV_P86K3000mO800uj
+V3Q@q00080PYR00010G0800000hVq000200G08B_t0200W00W088000080020014W0W9nDuD
+O3EFOcvsy00m8M4wd0000G003GEtFqHU53h@GPvFycB600W0lKNYluD0CT3oyv9W080eMT36
+btWFvDuYP3srD1W00000100W00G0C08WU30220Tsb10G01Y_pWRlDG40W0408000Y0PHR084
+W0004G4W000W00W0Y005W00004mFdDWWW0Gb06000GOg13000028W00W00e0401000mU3000
+8000840O@V30022102G0W00802000002044000K20WI0I0008Kg0K8202041000001004a04
+W050GWR_D003A0400G84800010W8G02G400001080A001000G80W00000CW0004W00W0W28G
+00008Y80O840UsV30W4020014W00012GH0080403W80eGPG1402408200H0W8000IA18CJ0K
+042eAA8I1bH0BeYmH0G9AW8Q2175CW0AI0KGaGA80W400W8W08921W0085XO0O8g0620IG25
+40040X44W2G4X004010Wa08800020610i800128200004HWWm002100040A0000041418G0X
+0q0K1809002K5C0GO4044W000G080A4Q0QzV380908002W8020Y0f0G4a0G0O4008201000q
+S34G56800S848W000A0A816HH0L04WX4uCI80024X4E8010051000WG4GuC4X0E204I5b8m0
+A40HW1G8G0A0820W20W1W0W04A40142030H0W8200A0000000C08uV3008CyEl1Ls@02H0W@
+@P08W0W0G08100G00G0002022G200010000230WG0008T6008001G00Y4W05A4W20G22008K
+0X0400WG01G000003KW0W80m8O000004X00GA1W3ZC000m14000A023lrQ000WnH@D010K80
+100W002DHRW80001O047hPW0GWXo_JG01WW022W@@DW000X8280080400W00W020X00032W0
+0W0000140100880000Od10G000200m0W1C00111008000OVs4W800CZe14010czt08008lQd
+0111002000G8400W080CI00Y8240000008am000a00G0CWG8000200000X8Y000G000rxl12
+G80W80408G000009K080H042m980000000aOYH40004I00G4000G0GW8W0800CdB34c6C004
+4680HW000200GGv_R0WYW02W40800048000440ueR3G0240I0W01WG0G0GWbEDW91000080I
+0007ldGKx60200000X1020GW1008340sXd10a000W008008anl100G800G00004140004W00
+W101W004G00HA009008WmGa6000W6ZW008G0WvUD040W1a00HK04000G4s3dXvMC000W0920
+0800000100W0e0G00010H040004000004G08G0ajk1080W0O00Kzc17Yp005104C1Y0K0041
+4GaQV2GG000108800Yma000000040800200010G000WW428404G0800000WG000K0W0G1220
+1020188W000W0w4s0000400Y8cLnWosDuFb4004002029Tq4G11GCfY10OW00H00e0Y1IWH1
+0b50GJ0WW0Ge0H08X0H00G0002HK8040G900H4H4Y0O2I800002H00Ga0XI48O2mQ0a0fG00
+XCZW022GiW008e4210pmGOXXYC3m01000WvE10X4KX2He0X02041221448mW088134G000KP
+l1020000510G02024W0K0W0141001W2002G8q82W00WOgg60H0048GW08W80H4GW2068W0W0
+W0e00W414O090GG020a20W0000XAG00241P0e0280W0W104G0I100100541004K4W4045H1G
+8h800Y4Y45002L4L02WEzPQ0OW010000U1H14e048G291X4E0HO45eGX241G410W1In010W8
+Yg8G212W100XWW00WG0001KCO08WGS0800YW010044nW1G40W1K86G408E06O0OaYcq00004
+200be4WG8X02XI0G00283We4000GG01GA0081OwR30000080806000WK2400O00G90086083
+0K201410HG9A1G29WR040000f40006Y102GgK0KYI0WOEu6W20000A100082GeW22108100A
+000G40GG05010G098KI98X8YI10b82W08500G900G4Y00be4180If0WI00800100e0008Hi0
+91402W8480G00K4180408008GW00W004P4E3e00000W88BE3GG0Pn4G001001000G8GW201f
+C8014G125100G05000009G80000yx000H00G4G00CG40051KG1024m00W400000QKt000000
+2G0800XH408010O03G0040048040021A00G1504G0W4Gae1CG00020A8A050000100300Y0G
+0Y184H8c60040wqR30Y00G001200W0O000SGGG00208001200400001X10025G0009005102
+GG04Y008W800000OY70040O001810X080X0101800020100C8G08G0620q1G6GaW1280008O
+2020W1004GaW10211300319G4Y0W03W0JK400118G03Ke822W00A1H00000A10000010I000
+sMwF00G3009001G000001Y000e880020e4000a40008200I480001028Wa002W00461a8028
+0G0008c20Ge4GW084412010200W40W88040300G0800480410Y000XG0G0W40040008G0002
+O48408005H01241258448nG0LH0082G1089W20I002W08YWU30A08z5Y00W0001020KV1200
+UlGC0001YO200000100100Yb000Wa9e70000WcqPk1000wT2100mNet0020aV9000W002000
+0zbWI00qB000e7c_qlDevP300z1G200qB4E10Ga0D000zzR02BXG00G3eF0000ul08001200
+2X0WU1008O@5w5080W@N420WW000180GR2000Ir013A811K2GA800000yF0eA0W040iJ70kp
+T1000q10000uG4ei504nB04xM0@N500MTSFG00CG0uhk1m@i3WBP70urF00mCGKLVWaz@G8_
+0WGy10C000MU4V0Wd@00w@G0Vy1Kr@3eg30GL70myVXgKrY0uV00m@KLb@fgAB2UuM4WCj8y
+mRHLL5cggA0yNLOcvYegg5fQcBILLN4pCZ9uX70_3FLgQHgKrYmxi030N060@070O0OOm0yJ
+00Ol1004100W10003W2Wc0g9k0OC00ma000b100K400W1G0WAWK4LWQC00rO00Wn000K100S
+3K0OCWfnE0330WEsRt68C00Wn000g04063wOC3mm00WX100Y104e90AG50MWY0C4T0O800qH
+0G1b1W2K405e2mAmPWLcR0hC00MP0KWo0e0E3G1S3u2uCmbH5WB300620A04152X0A189n@p
+000mdEw0000008cT0ZAR00W72npE4YF00u10WY8006H0m068YT@3W720Yu5W760W2EJ00hk0
+WNV01w@0iwp1Or100F0ml00002kQ1Wu@2eY208Y@p_@P7GP70WoE0idT000_0WF_01u@1KrL
+1OIx68_00s@1WFyX0K@3Ksu7ei504nB0uZN0W_l0WdVG0w@W8Uy1Or10Yu30_00mRRdy@C3P
+YZ10C00000GM600std1G0G0zZ@m2SCqMT8H_pmemIiUM504000000jlg1zrRmUt94vl100CP
+6zt0020WBMRGeb6SZI2W0000eW00G00umV3UFC100G0X1d000200080G0I0A4_XfrzOHU3AH
+FXAlt0u51G6tCanl1nXdmvy6O000CfW4gclY6pD87WAozRZf5OehJ3gTtWtoDuVy40000ZF0
+0O90602W4aYF3bkRmCTLqse1LwR000020W08tnRW808WmtDucT300000208upN30G5W0m080
+G0020310G100011000800W04002WX001ewrD08000002882000W000W00X00000m1C100900
+4800O0K080CZl16W000480000001440G000K000W0000W04204X8WU38000001WG088mSl60
+440068000G0G80W0zr@0W02WmUDW4a200000G840RJb00m0080000WG001W02m0G001020Ha
+G2G8G04O0H01000800820001X000000WI01G0m08084020414W40A8G4GGG8W0C00KbW80A0
+021002eW00890002380aI42A44K04b2092004Ga000404090W28805e00W20K20020012100
+12Ga290810440000G410006Gb00000i0P0101001006L00C081810000940G1909W1K08208
+00490m4C00GWG22820W0W2800H0k00000GXVI0mGG13WG1O0COG080G0200806G004040H1G
+WG00u0800G000G41000I10160108X00WA00Z20016028W020O00218G0Y010YC064GW0880c
+00WZFg8UV3kmn0010Cvrp000000024000W008Y0W0000W0K0YF00OGfw@400080G0G048148
+801e0W80010WW0000W02L000G000X0W0GW7G500C4jl1002010400101W0000I40WD3D8PVC
+000i1000G40HGh_6G0G400GAY00000088080000m0102G00G00G0GWefDOtV3AWs00200WWU
+0G004qEk10104008000K0uXy4kqt0e002G0846eqWx_D8PV34000G0000042mlrF4204n@R0
+GW000OK0000082G0kVc1G0X410G0140G03H000W01000WW00050000180I400mbP6000000H
+A80020110000Y0W0000028WW000000806GW0W06QTdXaBC00400GW18H4000G0080C104070
+20G0J000GG01202800040m00upbA0G02I0002G0Y0810WH8DW0000G0820800001000m0yNk
+18000MEt0888G00G0ENp0mkA0000004GW4hj10000b004aDU2G010UCs0010XG400coq0400
+40W0000WI00000001o2z600A0u8bD08010I10uST3G1008008u1P3000Y0W800001W0G0404
+1020m0Y2r0100408YG0G4000080000ea00GG00080020100W0800800Iu960200244010G00
+G4405qR00e00200008Y0000IyFd10O0001000082140080W8WUvDu023crd100WC290O0I00
+W1WW002X8WG021000YXGGm81CGKHa0I0WAG0W020H8GHW00A0W0002G00Y082403000m0W00
+00000ezL0I108000Gm00K0W000W0WmH04GOW1GG0L010020000H00000048G024HK0880000
+X0W0BG042m042510W00WM08000AGIG0004G001400Y8WxRh0008109eG43CGc016080502M0
+260JW0G0002C0W0101W032HKH0G4088061A4820W02X0480W016J8IY00001200WkE000Y5G
+OaG2W820C00H8WCG0801000G0G000YC244Pe00W8YG4W0440400W1K04m5000K06G42a0M00
+0ZWe0O0GCE10G1HGWOW0Ia011480000APV3wVpWyTPG8004b08Ha2W8K200X00020b001b82
+00I900G2000b42008402000020W40Ae000GG00W240040000e0000Q90W808W0eW200G41ei
+D3002A1010G08e050009000K0001000W05000083WKG1001Y000500WJ0000WI0m00G00AfW
+800H0Ifp000W2D@dmBu6S@l180I0K014G424G80G00W0042108G101800a8k10W00e000000
+1W200mWz6W400ePu400Sz30800Pe0004126000000H80400020000W90000A00XFzR000040
+00100GW0000083000000880000010G0YK404S7S2G000slpWF5Ce_@40W120600uxI3S010W
+4K400W02A002W000pvR0H4W000a000828W14G000W0400080H1300DpR08P000G020842ae0
+400GG424W201W14e00801100000K0021Y800108800G44400002140O0100040G4200G2004
+820G00201G40010W001403Bj100001W040W0W40212002000400W4000G0G0008M0W0WW000
+4106204G2000YW8Q0s051008Y001000ZP100a0W22100G20000208O82W80W4H4090008404
+102W00O490002010WGTv68A8100410WG050W010C1201G0qDi12000a00001004X20OmLF00
+0ec0020oD1e6rD00qV1201SlGl0W00sPI00CAl1e44000g4Wm00000qG2w60008q40008Q00
+00by8i40Y1m08002400Y500W0hN8CB03wHt00GO00000q0Xb48W1VyR0Y30100mB8E00W00l
+Cql100025020q6W1pM@00S40@y30K@V7vk@G8000SKS3aT082n000y0X8y1AR0G1500pCjm@
+PQH0_FnD30Uum3ymN4uXl8u1000yMuMaPcj8ym3SLL5LLnSkR6WvgM4yml8LLbAggAu2@VCb
+vYKfg51GcBoCcN40@Z90_dggyFuXBH0hM08_l0G4V10y@m4000Hy0ail10O406imWduPm900
+0C000O0E0q4ecW1Gz10mFBtR3000S1K0K4W9X1WB1006008840KWY0e0L0K1Q2eGK1Gn00W2
+1W2000mIwG0G1A2W2q1G5e8WYnD05200hC0A8BW4e8WXG5031006IA0645W10C6p0O800mm0
+00X000K400O6W0GG05c808400eoZ4cid100Gs200c10Yu380O600uAWoE00MT0O800el@10K
+s12m@30CV0GL7WV03W@bT0Ww@0W7@010c1ARu3Ks20ei50_000GYIs10g@30KW24m_7mg3Vp
+010Vr20n@50_u3GW@F5W40Vy10n@300C31G@78PZFWgE00LT0uhw00s@1WFy14K@3Ksm7YuJ
+5mWGm995EI2xF1m7D0xL@0000XQomOaS3EdxXzmJOhy4YBNbvwJ88Q3MutW@PD8Uy4000WYD
+00eYS600G0900100020824WAgIW000GwQCSOU24400otc1eG00VfzGBSUysD3PxbGPuI00GN
+TLE9AlpWtlV86E9oYpZ2uR9M0F0lr0y3U2ZnR001G001047_b0000XH1J8_T3YqnWilIe6_4
+0IW10000CC03W000S1M2rdpGQp60W0OG400Gg4CqQl100W802020Y004002IOw900007u810
+XO0004G0GE8G000G0g0208mG50000K12G4000001L00W4G0000i0G0020KW28050000WG8gL
+A38000002W200Xmoi6G02X0W20OqVFKpi1@@R0W02W_2J010G001W0W0000WG0G0080004H0
+08000002G010020G8HY00W91X000000000510WG101G20qG008000Id00014080021em4040
+e10028000400080D400W82I2000022A84KG002A04G04010004g00000104G0m00a1H00040
+0050G004mbZ64Sj1G00OMzF10200ZSOW02800W0I0410pZn0080W00G100000302m0100W18
+2878G053K_@t00LSG0Y9M0808XY01400WAY003024A864W012W20k0080H00W084W8e8450C
+06e0O001E0140G10Ke88010X0W00W0L0000Wa0000400C4W020A42S6l1LKkX000004W0Btd
+m2_90100G0000G00WUdD8JH646080000G0GW0GG14000Y06W000W0010G1n00400000007t_
+R0010201000600410e0WG0Aho40W0030001G4W00G0eifJOu@J_@F104G0jZR0mGG2G0W90J
+400W8WjFd18000000o0000W04m808000102W001Yfq062007RR000014600ToPmn@C000W40
+X0005000GG0G8200GG08W8YOuZPQBtW@@D0O02GE_6000800001000ut@DGKFJ00303W0000
+0m0ovp0000a@cP0020mAmJ0W40021CG2500810W0002qiI2002200W0W00040W0000G0Y000
+L4Rm79mCpG2NXc00W022000W0000000HI0004000842J008YPYc000W0000H0K00W910200W
+0m4Gmcc9010004G2m6z9aEe1PZc0802WkKi9pT30002000040002W4008W0ApsP000QJYW0G
+1udW801mRyDeYR30050Kbl1jpR002004018VoP0080100W0200200510204f1U301084w2Cn
+9o0e00O0K0G000Gm8HAA28011i2204a20000W4Kc8WAH0aOG0101g0m80W44008600201Wa0
+G208I00065H0G185K1840005GHIH002W0XK040400A000K0G2200211gA621CH494242G49K
+CV46LkymthF0004WG4G0G00041G0W2G0nCWW00080GC220Ka4e001000uC20e02X8010XA0G
+GGW0C0000W00m080A20W0K40G9G8800G4G40028WX090000e0HOG80000Q408001W0000Ke2
+1030W_zD0200000G4a0e8fJuHNhIG001eMR3090ASyl102W4050008Y00J0000K2000NM008
+0050A08200400Guy60050408004K0eOuC000O08000A1000020NYpWROJ0W12080GXazD0G0
+G80I08me00hzAnft6W000eEN9000WW0000101GJ@60I40000G008400001K004000XW0000y
+D30421000010I4WQyt000W0002W80a2102K0a42mzz600W900W00W4000830f@R0e000G004
+02001000004W200G0041WxCtOyMCYgr00008GG00o0A1W0201_Q04G00000ak700oQt041Gm
+040WUPr050015_R0G00280020G0W000200I00W0WGv_600G0020080442eX90000WA0o0400
+0G010YjQ600W4j_R04500Z00WG000100821W200YW8G44000OJ0H000000210X010aGqn600
+02gpO3MKs00b41081008a000000a0040A0080000G001008KMl10002aW00CNd7000WIStWx
+Cg0000Z2e00Wc0CfGPmwm600uA0000eL0000mACA100WO200000W08040W90000eI0c00000
+A100eUP3GS00000U10H00888X7rVG400GA06000020mK020WqY0UeKwG00@_F8Z10Cm00Gy1
+0U_100201ur700yF4XXR0000GP4V0WdV0WC0GO0yG4Y40mI@6ew00cw00m9w600G150O600G
+4000GG20Or10NC0@g0WVx7mup60X00mkT3Yy_600yFsk503800YaOc70c00kDJ20W1GO20GD
+20088000L000C04041O0e2GW00eo100000W0JC06G70102063L0c800O800WY000K10041G0
+e802ni4uC001000m000e2W00305200cVj1f0a040C4O0CH00qHIvYdlZDeNQ3000C00000m1
+00c000GoJs20Hy500g280004nhF00000bT0WF_000010q@X0m@3egn78P704YF0y1G000W0W
+d_G0020AxvyJ000yl0m7VO000f0mGUO25Tz3270029xdHnt86xA6xcXgnJu9xD00mJjEc4ty
+RGLv9iFb1HadGgDOK_T5RdBnguFq4U2j4l10r6WLqne9v7QpBaMzEfHEO000m6qi1balHdm6
+ytm6Dm@G@vF000182Z4UPr0000208O0002002408pM3020G000KypU300402002QmT600etz
+5l104040m004Gk1Xrd00200001G0G4000K100e008W0e1W00e0W0FLd000GA000000GA0b08
+yLl10120UmtWCsDOGG3QftWSwD0100Gar980000000801We2tP0000X1002K000Vsd0m16me
+iJOQQ3_Xo0000W0W1108A8cbV2000W0W4000820W0W00H0mfaD0200041G0A080hvR04G4W4
+TIeHV3800Oqbi13_R00O010000202a100100860000X00280WC00400K8204fl1W0a2W0m8T
+@F3K400050000800A0G001800001G010040000W0021W2251G000H000OW00m00G10E500W6
+200G084002MWm003W808W2G2m48000000G0Y02WJkhuYDC2QB4G00000gU3uF10W00L_pG2_
+6SRB3004000W000G4ej@40402a7k1000WUPJYa5R1009GL_CqMB30lK06GF10821v@RG9l6a
+VY74004ZJtW3_D8rV3cb8XCFRvAJ300G0000Y0G04GNsF0002X000a8e000040DE_0012WQg
+C0000400We9tJ0044004PWvoJ0W4600810YG0W00045000020GieIOwEsWT_JusQ32Ab100c
+XVuRGwSC4fE3x5mGo@600I0000A0J0000000e800wFo00207LEPmTTLajS271YnQy60001Ow
+T3A@z1ml30tpdW800W2vDePLCEBd1G000020Y4W00Kbl10088cGqWbzh000Amzv6q6l4H8R0
+0GW005100084500400Gm8wL6000mW_80001G0004H08G4Y0008000W0000900m103W400uUV
+3YYoWP1J0008e048G041W000282G8W8K80080Y02W80MY8Y08Ho7T60010fdQ0000G04GWFh
+_00W_T00H4W010VdtWf_D000WGcX6ybc1ZxdG3y601400H10041004002g1104100G2G4144
+8301800200g0002Yl2G102020Y6or30e000001000Aqxy30DO0YqsW@8VO9k4A_@100G3W00
+0e410201400A100G000g4GC3mC000A0G0841140b00W9zsOWV9s0nWcmD00080001ukiV000
+02610WxyD0H00Gfu64Rl1f2W100AH000102200280W000GH4I0280040400008002011G8uP
+@AI8DX5_h004801000000Ge00000K0Cr@300Wm3wt0104Cz0pm0v6aVG54500000DGGG0000
+044G020000038OW0W41W242200OEk@aQP50WD0s9AXz_P0b0K0090W_gO0000uax60800020
+W0G00000G0002e00W0100101000WG8Wtbn0G00GCSU000A0000W48KWwHa0000jC10YAJV00
+082W00W_qm0003000080G@4000Gz2S100W0qA000W10000008U2002HlKlk4000L@OV3xkB0
+Rj@W100WY_P00WdGdxF00Y0FVU300YuN9f4K500000Ockg1eA00800WYz082z0edxnFS0e8N
+fXXHkz600404000yNEI01000402000H600WC000800084jo3W0n068rWXvDOiG3Azt00G500
+0005440KM63G000e9W0G5mF30WPMJE6000C3W0e9G5J5WE200kC0sQU600mxN_R0080W45U0
+0000000Ez5K0G5q0e20K100ut@00GI_FacW100p000p0KuD3mCy0G4u1G400000406S50000
+4YtU000000t0WFFwS_v7300u7T1GI2v9q2E30800Y1JYynJuox4_1dX4Ih0002mby9qXb17R
+PmJ@90U300400mhsO4Rw3W001otMY1oDG000IJuC0G00SMTLMxuX0yDeOz4000WII00PDz4k
+@sZAqD88yJQbf20280JpYHKU9CWl400u5kWTZluJuQz4U4pWFjJeD73008000200W00ugx6S
+Dc1HYQ0008042G0080W00000002iCG90C80qZY1pTa000GWTxV0i_0mBS6qNl100A0008000
+W0wW8300G000188br7W204qzl1400Y0W00000G028022000402040000120W040000W04G00
+CW4Y8082W0042W200Y0W00H0082800454@gt00202Pxd0004Y5wD0840mIK6KYV2000m0310
+0428W000X00004001vsRGxv601G20203mNg90001100GWe018G0000a0018W0s9k141m0100
+W00012G008WX0mqzD0008000010302GiG00G00W100vOA300008GW00W00000040G00PYR00
+0e0002W0G00X0002100uAx4ost000@Y0008W020smg1080W000m000060G100WW0GG010602
+m000asl101G00002WGC0A5E30490jQW12O840410042X10a08W0K080WG0000e0020018WG0
+000801050G0G00800500X010W80200WvvJ01W0GxmIW500OfV60IX108000010mEw6yzl1nJ
+dme@I01G118000001W70C00G00024a0wJ0001G1794Ak1000G0014y@V208G0W8400001008
+AGQuIaz@30O001G08000WrD00GF3945a1JW8no_9Svk180008W10ajl10012002Y04G00110
+2o000a108RNd0400080028001Eqm00aH08W0W000Y0013Oix4aH220008ATK36p530446801
+40400000Ieg@4Y@F10a0W0000WG6044W140G0808G00CW00W0GKX6m00cSnN3U5t000P0phB
+1400WDsJO1q4ozbXHFIe6K9MSt0Ge100000WW010G000WC0GcsF0040001018000G0G0W80X
+800200E08sV30W0I4Ka10G402Ms04X00vrdWCY0WUoD0008GK79Cw63W010cATZ6dP00008_
+H00GW040204kdFX8CV0H10GuU60084OfO340CP04000WG0KHw60G4G000820W4000a0bMQ00
+1A2H0004e000G040W800WL4mhz6G0X0410mCX00145G49@R014000022vsN10W00A2800800
+00SlR228W416826G00C10LzRGK_90020100G4402010408XP2CG90OGMG482G1I205CL0G44
+0G004LG11Y21J83O0G0WGCnWW0H7CA1048000020808W0188zV3KH08030W00008H002000X
+G00000082110000A000G40G011zdmsF60100G00800100W12000H0G0010G4000A2W000W_j
+O0I8000YG4J00GflQ001480I22G450HA000W02nW1CGaA6040GGL0G80200WYGWTGR000004
+a000G1000800000AxS30408G000WIc1m9xj000WsO0G282100f000040ACrWovO8d_4oYB10
+0G8H1m084000f412000sVs00060tR@0210WUxD000G002040001000XJVzaDxD00mcA080m2
+QCuVJCI@t0400004WOxLE10W4000200G0X140801A1200004010dqd0G08W4tCW08800e000
+00a090000001020004W1PG4WPjCexU36iFXnpJe1u70hqJ4mj1004G02G0KTB601G0gut0W0
+0u20000G1o0W2402W000W1000404020EutWg2C00100410G000Y00004110SsV200G840210
+01G000Y80041W4G0j4d00G2WHnP8fW7K920btl1080268z10005Hud02G02001000G0We0W0
+0000288C401maBJW4000410092Y8TAm00G00000n00000W9myWC30WM0IcBXvk910WrSZ06y
+tl1@HOG2lF00W004000H02000404100wqtWcvC0zG0001q400040090Y_p0a20Hz3c000004
+H40W8_00Gy1ini182K0003W0c0m060mGT5600m0000u18G4H0WP0roZ1WiRT100020000400
+0mg10YS7Ga@CGV@100C30C0mJV6W2kF0wLF082Vw108080O0000G0000Wm5W0oB0000LGL5A
+m40m7000m000I0000C000G080K401W0e410WG400e80006000802063G0m0eo00W1axj1000
+C08080m0GOKN3kb_XRgJWSX000K400W1W003WK40WUI_3m000G5W10003ACS3000K1G0m0W1
+X1Gb10060008C00Wr000C040S1aYm0G910W2000G400O60KW2411Cn030G0XHtP004H40000
+03KsX16A00p000U005820Y820000Y000O0300uUQ900dPELl100kw00082@0CpC8000mCS00
+KsnQ@000uP0jU0ehk0ySy10X@30mg3100WEr1000804040G9_0GqZ1000WWAL1Ri_7000008
+20m1OEye0VI0iH_FxSlnbzU0m00OZe4IAm3h200NaNn7vCa6U2PwRG@uO4E09zihLyxK1005
+eVf4Qlt3WlE0zaNnPwFqCM2tvjHhu9Szl1W241_VFX_yD8_Q3000400100800W000AG00001
+40QVt000W839d010e85000tSP0000CQ000vzB11040080X8000gXsWZPD0020m9R68000IGW
+4WW00W4PD00800G008008088084W000020208W00G80418200H60e2003014Z008082O0YA0
+04G01004200H03420008GX000G004AYB180G0ltR0010G0080@tR000JF00000Y82G0000G2
+100008204040000W00080000110W12809004A0000G0080024011002uOk600210W0W00040
+WG4G9tR040404000GWG0G010G0YH694001O00508HdcP00148G1000240G080Cnk10M01sep
+WhWD0188GGx600I023000008WsmD0e100000G8Y020000W20000GG080W0080010090W0002
+GaG4G0220W4000111090W80AJa1e00G0W00400103W10G0G100W00Z03lx@my_608a0080C0
+G0WWZrD02404Y205100005G002G0q4W1F@p00008Z00G1sdWG00W7@b00G0000GYakJOTD60
+80W09002BeWmyz60K00Q4C326C1220201G0s_F10G4H08X004000004G4400000GG410CHam
+_@t0M0000GW0sspW0vOO_V600qqCyz6DWdmGi90100exV3M@tWw@J006GIny94If100n4XCc
+W0000410G000200Y4080404Ha0CDa1@Xd0008XV@D8Yo7A@d1nU00RvRmUvFG48I000WOtW6
+00010008qag60W018BH30000008vG0024200090100WG0000G00W010000GO802W03440100
+002OG042000100H80G4200000GG_Gu3FmRGHsOKhl12500sYdXH8D8VQ3__tWz5D0X00a000
+84011000004C0KQe100W08010HGH0X000C0000024200041W002004X8G20W0801H0200088
+000000015004A0004HW80A000204akc100000104002200448Y0WWbxh000FIEp9Cu_300H8
+0002Kul1400G0000m000Y00108001000800W40082yNh1htRmC06000G014o31Ac8XKCH4Hd
+HWWWWGaH20m202I010Z8o8KMLLf5HGXAW4W001rz_6000OH05104G02GW408e40gul2G158D
+KQmg_64Ml10800G42Y00082028W05XG004X00O10C02W028101100A000GA00W300495A0Le
+082026100SG8W000L500W0HQ02I0080GKG0WHW00GI52W12G2KGm0W8Dm02828000004O188
+2aH5ZA0000200W2001G000000602WW82m8wO0P00004WOq_604008SV300W00G482Y0GO1s6
+W004X0G80120O0Y0n40O002D001042800001I006m0m1HGW8WW88004W0008W00W6K2000W0
+40Gy@e1400008G0884300Af40Y8100WIW4020002G9000200GS_6azs3j_@0009Wo@P86k46
+i@XG6JeEk709G80W000G4HWI100A0000We40WII04210W4G0023000010GW8000GY050W1O2
+828G4WI800W00e0K000m9W208GIE9000KGG00mIsO0aB1u_V3kq@XV_DG800008000880080
+000C080408Z@4Yqp00400m00282W0itl10WG0GG10Kpl1@QQW1W40040182Z80G4m0i144W1
+08a5q30400pLdGU_608W0uPlDoPAXbiP0200oSsC0m01eEL300G1S@Z1010W060000800408
+00010Y0008808S8C0W200IW0G10A0Wr1J000W840D4001K88GW02500440W00G2GG401Y80p
+0d0000mM@hewV3008730W4ufD6o_tWXPJ8N@400a02W2000000021G000100821000020W4E
+00G_z6iml1000u_IqWm@D00m10000GYGV00000z20000140000G706a573PlLnM@906t18TP
+62Vp04000n@RGr_6060000820210WvZCOS@4000m000G0c000004800000WuBG080vbg30ei
+70WL7G8YFWgcT84V0G8_00Ly1W8y30Ki31eO7eiXFWLB0WoM08Iqst6We5U00000ClBW0_n0
+000Zd00000G00200000K5TT2G000s@F13G1d2G17000xB0W020_@FxH4LWO60W020w7t0CuA
+0600xBM910000AAG0GLW0WAW00L0L4g0g812KH240p0006300C3O0OCmCpCWP600pC00GG0i
+zj10GH00040A400eRSCYqrWPnPeQS6080O0W0G0G510010008200030006W20C0K000ulz64
+DW1m0G001W103G610WVszz60e00W01001000200G400W4Gy14fW1G4V84FxGahW1xcR0082H
+u30000tC50uL90c1ur@A0QJ0yzF30Wg0w@F1w300W800AfF1n700000W0043100000qNl000
+000WQ2GtT5m2bYIOu72BXA8kBWR3JuQVL_fC4000CS600kI3iaCterS9Mud100900000000S
+@IE3Bb@G@_6iZ_6foRGk9RCJr3rn3J6v60c51OfTL28Ofy@JOmR3_YlYMzD0000XiX0W4qbO
+0U36RtWGJ3f5u70080W488u0R3MVt08000Y080Q1t00W00bzR00A8WCoP0810Hqn6avU2n_d
+00WrneqPOkO6044001008GT30W8004000G08G4a900004000oKo60200uKM32GF10800G05a
+0a2WG510220029010XW090048C0Z0100Ga08W048010000GW8408W0G02500C004100G84m9
+vd001400200NjR0Oy4aH_Jukz4wvt000GG00G0000C3840000GW0000028eRwc00X0W5@Deg
+P3sKd10G0000G2G0n0iTd1001W00W410400089040CWw@DG02GmeN60800G000060I402000
+4K0W40000002G004W08WVyD0000AqX0WEzJ080Gm@@900W040220G0W00mAW4000000400W0
+0H02GKy6OG00ua16_gtWkzD00W40W0S00004002408Y806200480e0WG0G004480H0000G44
+AW04000280000W80400G0a40X19Cnmm@9080000mWtGz9q_V2@@dGvz900I0GG00mr@C00WW
+9RG300G20G00u@U6G00c804WW0G00000Gc9G0000W00O1000GKI00000800200G02W0208yd
+l1I0080G2008W0uP@44004qS@30IH0o@N20G4141W00G4Ga9V2@JBnnKF00000JW10Y4W000
+00G0G00O00010100000W80eV@J0510142000W10002000c0G20008008000mhvI0800GlW6C
+nF300WuEHqWafb0YGW80000H200TPpmy_6CdD3G00G800002200W8200020009GLUO000048
+6XGl_R0GY00e8W00000400Y0882W0XCGK_6m8Z0eeJ381000W002004GKeLqmd1x8Z1H08Wi
+xDet9C_qt0010006800001O040Y00a8001000W0G200GaG6004008u00Y0008200W0G01000
+WX000009W00009200NgRGq46Khl10100wXJ2me00lJl120O60O400800aZ044tk4G0010000
+G0G4W000G2T6000000S580G10o8014ia9012CJZ00W4GmCGO482X8ZcY018H18ZX88o0W414
+mX925G00jGGn11017011GW0000G0Y00e0GW0IY@1000W6200QZN24HGL820c1G40G4000104
+1W2WWViP8653W00A0010W000000H041400O44m031G2G0004C5960187QG04eI8800GWf228
+0e80O82004022L40210Y84X2Z211200G4Ja00X1W0402e800002G2G04040020GY080000W0
+8et@400adLz36640H8428YPYG400W00Gc01020hmRm4_900020020008Y4204W244H0eem02
+H2nWo08IW810faI040O100A10011000058GWW_DOqT30GO000P02W04002J9A1Q2P_R0W000
+100a0100khL20n601SN104000e0180A00W240G30000eqQ_CG1H0eP_4UOn000W204GW0004
+108IKO4I8280298000W05wptWoxD8Hy44400W02WmWOc5W8W0H0000002_Cs00009Bsg20W2
+0W0C00080b000yWb1fsdmQB9ajl121W000100040000e1842004300a00X86m9011101q04B
+G9864200K0_@t00030@@R00A00080Y0X00W4H020GWOxK3GW000008fVV3wBd100o9LjN1OG
+00200040540010eW0H00280400WxzDOMG3E@t0WW8800000O0W0W090020400W020G28WI0c
+gm0G480G0100HYaIG00OH@788000L002KW00WKG0nG0WGW00020041E3jxp0Gd0WYWh8lT30
+80000e04AWY040XYdqDG200G1@64BU20008011000W000900000WstCmB00mz@6Ws0K008s0
+0W00I100jnd00G00082zPnPGiRCinU25tp0000kGSh0XG000PWW@_D000GiH0010y20tupGi
+u6W0O0eNT3gGt04A100W12KT082@0G4_02As1AR00Hy20004GL08G00KW008000G000p00W0
+1Hy12Wg30ei70GP7G0hEGo62k5000Kbl13@R00ekgA_J00WlNB@I000E00hEW0_VVM100y@R
+00000W2W2Wg0000000z@70D_pW000Vu3m3W7GaHW@@1K8JK00Ue0uri4uI0Ocf2mC30WA202
+800o1t00W1W20305000f800WP000g000K16082CpW0W010010004mhz9y@E3Wh00AvN20420
+0GJ00020208040s12P00GX100lud0804000Y8xgR000010002020D180O0mO00W1000oE0Wo
+U00MTWW8_G8Us1Is10Xu30K00mCc1e0oYZ105Gr2A00400m3G000WL3mpaCyky3000u9C00y
+@l40EWHCE00yph1c50410059W81ucV60Or1KrF3WP60000KW20qmt18GOujqFX4F@B100M@i
+vYwqiPcRp3mw40PtLHHS9CuV2nibJI1a4Bd7_000E4udDuv9mx4ExT300pQNuXHyUCCA83Vw
+5220060010LRPmf@68012008000G820800201e400A084Y00W00GW000000tfOmDr6KhC3T@
+d0mq3W6uD0400oXhFCwQ20041cpN2W02030bW000W3hCe9d40W0a04W80GW2008a0W000840
+010802K0100008W2000280veR0014GW0000W10czd10081pqp00006J3005lPm1z60G00000
+104100008000K008W0yWl10400H0W00020Ss_400W010018qU90W000G0140e0Oip60a0100
+8m0401100K0G5020028Y000G00X0411WZtDuGB3QscXyrU00W92000O0040dwRmtu6Clm380
+00cwsWn@nON@7W000100G04008400q2gD00010000YRXC0G00i00Y80000004W04m0180000
+4Im@ZF0000j_V60o2046_380001W00awa1004Y008000G8OCC30001CyK2014W0C001800O3
+H3G000qBk1bvP02000G00041100W00Mhc1@@R0401WbwD00W0GYs6aiF9YN40_@t0a100000
+Y0004DAj1000cobsWvxD8UV3MEtWwAP0000e004WAlP020W8C3806H040G4HEes000G00A02
+1003808020H0220040400082001000WG00200044000002duY10YpG82X8VRRmy@6000200Y
+000m4H0000G4241G08cvl1410000aW0H418aS6ICt0820000Y4_WFXp1C004804002G000G2
+90_jmWh_D0000442GWn@D0A10000000We8fbw10d00010H48Y8mC00000Y00412408G0G410
+00100H001082n00000WeuEI00K080001000H0020stB1G0007idGMx64pe100WCW8200104P
+9U300I400G0000WmSo6aVe1m000UVmWZuC8CyAOD0800040H410008JP2005oN1400H20002
+200810002G818YW8010040W0G4000002Ss_3g08cm42eO2G8WI5H41Oa6CCH80Ga0116W204
+4WWG400X040AW0FHP042C000o04000ee04Cak11sN10WfOL94000GH8200Y8cPc84100BY80
+A200G4Y800YGa041HK10Y8I00G404140829WG4H00L20YH00400G182000G0WG800004000W
+HWwiJ0000828085WA0082K042004204Y00002800682202a402X01GA0200e800G0G06Y0G0
+0GK000040028mn_L000008I200PkA5W8YOc803rt00WG10W810801W9000n0004O20000H0i
+0080600GAG0023WW4004B090080G8HY00000X4HCK0002W40r@R008a0b010KI90012000b0
+0WY00000800WK002W0KiIXe000G4000I000e4W0GA90WIAX8400400Kez6iTT50008X5WW0o
+I1XIA1045200e4a8100854A100YWK1e4b821I104KY00400G00bW40A10002eAoD0000400G
+WR1gW2G0emWW040GO4000GW8G4wk10440G01400G00c0G0WKG0420G8G6202I0Y020GH0460
+8GaY2hezV300i83205100G020m0O0008G1X000W002K00W2208W0AK4808C2860n0Wm001A0
+620004G00A200001YG180001G00m8B00018G10IyF100G2KW01X0O00W0048K0008W4OO12W
+I010400080G0G400001030H48040e8A2WG2W1880202GW1RCOMNC0_M12401X00000840000
+108Wf4150090GX0000W20000o44a0040AW1010I4P00W128G20E440200042W084005W500S
+G8080000kYrW17D0a8080G00G8WG211W449204Ga02WO1400080G000041008200020WY0GW
+K040800000W2Y84@x6000OHP200IW00000080208000IW0000808LGW00000002I000200WG
+0W09000A00L0GgZ60009022K2K404241W05000800SHZ1D_RGEu9G200000GFG4000Q2S0W0
+0Ge882020G00W80WB0100WMX_0G000w541urV3Y5tWazh000AEwZ120ouB2009C108800eN4
+0416VXU18H0Oyb00W410W8200q700YWHl0740G009200iRl1W30100WY0E00W40Ao4qC000W
+G0GXe082KW2Ax052s1Hy10mg30eXlWggQHggAuW7Um5EyKfg5nKcB2lmNKLgc8yW7S0000_3
+006H0WXvPuO0oRWI0nah0UGP0rGh0WIo11K100a3GLL4W2VC0FmA0AgS0Wro02u0W0a1iWu3
+0Ki70eO724XFWLZTWoM00bj005O0W8_20Ks1C000Yu18pV32VpWSmDWPK16p0085180A202m
+505WBWB0N0N4k0k800kP0e0p0G1E3W2S3u0W0mD310H40J3PGo_LWwm000U300y3G2uDW2pF
+GDM4WQi85mOHA0lZK0_1g0y6qnu7eZ9IG73a2Ka84WAHA0L0I0g0KHK1eYY4G55912AI2G5a
+4WA01000f800unV3KT000W00cw0Y8y1ARp0Ks20004mC08800KG008000G00Wg00WW0m81Hr
+520WH604n7WW3OOQ@A004iee0Yqi1y0M1uV000MKbgg400_B8LpKG0ylW0uVO2m@0m@@1W@1
+1ym320P6W7U88ggAc0uV0uFyKfgWeIL11lm3ILg64yXDOGgtW5C0O160S03@VAlDT@Rm5qFC
+tk7000eTC00abg4rbXHZUyqn36fy720WpnjXPu8_GA8xaM7heDR3opsWpxJ0G00m0_Xmvh1e
+G06Qf7fJ8N2000Cq10Wp_R96pMIJv@pO_lCd@73w@ma_@Bg@xow@jm_FBj@lYx@gy_VAm@ZI
+y@d8@l9p@N2z@aK@@8M_VjS90T80Rx_9000Kb3009fAHIm2ziwI0m@OJBMKmM60nY_Viq@@g
+z@jY@@gw@dA@@dw@@@@@@@@@Hg@@Zy@telw00700000872u00WmfS800u000v10ZS80W@@@@
+@@@@@@y5ygO6FL00204102@@d000mW@@TQymAMGy7GM00@@tufZ6Sx830008D000y@Fa000e
+UJq008000G0000iey@@L0400_@@70001@@R08d3W@@V0000n@@12600u@@4000WDIW4@cMKk
+d@Saf1GW000W0000eM_@VB1008_@V2WD10W0000002G000W020W@@F40020001000G0v4OW1
+0300021jhkK4C5X0000100100020O4000qA00000009000100W0Y@@RKYC0018200000Wm20
+_@VI8G20004HC000G0020000hJ040a02W0X6W0002WG00u@V5n820106Y104100WGFW40004
+110W0000G0v@@310Pb200K200208X40A100WmG00400W0000a00GRFD202004082H0W0000e
+s10W000CqazaG4a6WL148201000m@@@60C00u@V510501000W011000Y012000W800I00000
+21500m@@GY_00000_2000M12001alq@@5100u1F000recQ00002GL0000n110u6@1eA5L500
+00u@@V800WA00WP0pC00gO0000000s300001000604000O00y@lY0u1gKD0OAF0W7000hk10
+00000_wR0_@V_fiCuBhY0810yGmFrTHOo_yKjVHHAmJgO9qBc4XZ1JlQ6Cs66W810QvAXz3M
+gzCOMKB10020000018G00000G00801001000Ko1ACg5q0W000040808000220eNDXENhb85y
+00mAAW1YZowI0001mZ2irm73ZvPGCV608WWeEI34G00G0000yI2GNg900W020010000fk@_P
+0G6sbaXJAQfHG300WG0000rL4000000800800G0000IKSfAxgq5G00820G0phP00ABF0000m
+0001001800100000228W40@fnsPosq00402000KQUq0080OW064024000000GJY40C000080
+W002W84WX000I0G0m@@i104G8pH902000004W00801040000K_7020910GW86000WW0G0003
+00VIMq@@gW0208Nr4AIr0000G2104eW0S009e08m0000hD8WGH610250X2GO940L3524282W
+200Jk_pQc9yZw9vlQ0040000060004104K00805eWW0WG1G00000cAX10W020a85A8W0am10
+0G1840408200iH9F00I0e0G0aChADOc0W000G200R0a000010G00000eK2W401I8a2A18025
+00e0W008000HAaDhG8G100004jdv9JZQGue60008000eGX060W00080000WaFG0W04C10GW6
+00200uh2328b700W8G0G010G401W2u2qMW004qJd1xZQ00G009000W04004000c3030I0420
+0201Y0W08006W4000WABJyY9c10G3a000205100000bh9G28HY42Ya82e81W00281X1u@@V0
+H1000GJ0G008080000014000AJX4G00000GH040000W410000X004010C0020080000Oj3j1
+0080iXZPD000Ge00000q00@@@600WR10KGj9d00010000S0Ae00021uF0000vyl0OtT18m@m
+zdV0O0po3710W02W@10WfTv108000W0O0010200GUBE40002000404100820u@V3006000C0
+MHO0iY00G1000000WqSO000Z100g080m0GXe2e41005200CViV05WGGe40WP0000s@l0O700
+0c0UF00uF0m3V@100G00W1gA1mz@20S06OZgGlp1iC1mMsj4ly9pVd0010m4nDeiv7c7_aPl
+DGy00020GWhlPuy9LAZcXset0004Ik2y0083gb0R6K@40010bKdGzrpiuk10a00oaoWNtJuE
+BFoXkY85U008GGcs9q5K2fiZ1004X9XD000Y004008000000XwyE12010000mWA28aEV2010
+4_gwdVuJOqR6k3tWsuDG000G1s906G010W0ufy900G01000IW5600404080200400W8000kP
+400IG1Ge0Y82004K02000G000BA73G0401KK10004W220000000802001000CGsI9Kkl1zad
+GT_Cyrj10080W00000240000840WW6XC011002020G080000802000cZ0G0WWmG_Cy5E3JBc
+0W00W3mP00W0mhuLq4U2R1ymZw90020eaz400402200iGT3Qdo0020004006Bt00001000W8
+002000W1dC0W04W2X8a8000aWK00qHs6Xll1805YosD8pS9MSJ200G4vkZX0000082000240
+0G4W202OTV300GX2001ORaMgZRc8s29_V3YkBXzxJW0a02G000tHF004500n02SNV800206A
+mcnNE9NT304000200090100GW301000001000m3SHG00004040cfFC8V_DQ0DXX_J000OGqn
+510800G0Wm0y6i6830a8001G000eK500010G0G0G000Go9UDTZ5yI80F38009y1jAL8Pm@@9
+00Y0uWV608000100K000820G00001m0010YCa00080Y202090KX200WhKWmp011Z14vkV301
+00S0m01iZ100GWm_Iuz1a00010000408002G002000010202000100218H2W0O0e001000O1
+V500O182e14300eGi200@@l1510W@@D010G02800800000W12Cw40420010XG004qeW1W2A0
+e400C2P2RZaml_6CDZ1K2WG002100b000Gn12J1240XIK000000YDpg70WG0eW2001400021
+IPs60400G40emZSOyuw30W40H8W0qYw3v@PGCM64zV200300004G104GHW4020000Kg20185
+X810G1000H40GAZX005AI00GqPf600820000w@@O4373T0O0130W@@D002O0M41W@@P01002
+000mutD00020e000W0002000G400300Wah0I0O0H06508h262G01000K0400000H10000G22
+0G@C60401000K0Y00WbVLvZW4sXsW95D0840Gxe6020W02000a04000084H00004cA1X4m8W
+01HK0000C2BIl1020WwxCu9M921jYKRD86E3G0D20G005101m@@60eI8480jIHfCigd10400
+0002aMG20WE40080w5000qwJi10K28zY0D0722k0uouC0040000WU00000q42T0W0a2G2@@p
+34H4W@@D0q50000003p300wN010000s0020009Z920G0000yV0AVs3000Hvca00000qIB0m3
+F0QaEaOuC000Cm3660K00000e300000660Llo00W084100Lga040406380m0mW00u6100000
+GDlG000O000K1G001WXzSv60O000Wc0008050O0W0G0C600GzOPGfA6KYcA@@N1r10000800
+0O0o_t00el@00000Hy100m30000084p904000WvPuE14S4lA0WgL@@d7800GfskHeh6ixg10
+0080000o6008KxJA0tWkxD8z_MwwaXzhPOEB3k5tW0vCuuN6Iko00000006KM9U3G000fJ@0
+000eWDD8dg4AjZaQphepQ6sFl20180fUR0eA2WBeh0400Gwt6SdU5NR3p1pFiNC30100k5tW
+fsDG000mab64qT2000uz600y3UBZwQ0004WloP81_704002005W000020W000e000018002U
+Gu31pQ0000eRQDOJO30WG0qoi10A010200G450008100WNIG0000I000n00010000YWm4rX4
+PU5BaRGpv6aZG22000G004iuc1012GW0082G020000OQv600010W00840G0e00W01H1Nxr00
+004001KW03W04W40Y0000L008000WD30000e00000404O3wIKbl1FeRmPr902W0P6z400W02
+00W02G0OPQ6Sck100800100I000000400G0040204W00G30000G0POz400020800P2R300e0
+0e00001G000WW0IC0WGW020280042200W000mIM0100I1000410e20tPBH3zIS2l1lmd0G01
+0004000O000GW4NV2DKP0180020W00G202vt0GG0040000W00KGH200000Y00H011000I0G4
+0WlvD000G0A4e0011WGG0080H4005000mdJVu6a3e10W402B_Xi@J8cL3M19X_wP0020Ifz9
+0000vJO6UNsWhxD0Y008008WrRDuJy70G04H000001040e000002200001GHaaV2WrO0ANt0
+004004100000zST5jtd0W00WA5UOY_7_oF104000006404C80040100200H008001qQGi@6K
+zk100080002_b2304G00108CjO200WBPA14W0A0WX0G01YWaHpD0H0WGXxLqcT24G00MsLYw
+tz0010000W0G00G040W2s@11002000G0004KqU200Y00020000400800080000FH20W00020
+00A00000G306CxD6hLpGFY9qvc4000W_4mWFRI0100K5oF8400ubS60G00030G8HV3002000
+0GyqU60qy00080W0001000020G40W80kqcX4w310I0mdpF00800012GHr60240008YW00K0C
+WCn0081H00004900000o8f6izl10G0G4002H0He00504200WX@D01040W00000G00081000m
+uB200H24020W0000ZG0H1W80WKve4vSR044Ga@@D0141000GW2jDW00W0900000GWhw@0010
+080000GX000100W00000W00G01o000Ge0WgMtWYND0080000400006080104000O084G0G4K
+81G4H208IW01W0WG00000Wuk0L8GHGGKACKXW8G200G00G4WuptI000050W0000GWnAJuuR3
+MPmWZyb00A0004W800WGNWR050000280KI0000W0W0100010000G840002005e004810Wa2W
+00000H8e4000081W2A000G40He000000090K0000Oc4W1000WA04020G004G@@RGOu902008
+bO300221W088LJ600W020X00028000GfMzVueS3W00000I0uUS300AG02G802000200mlwD0
+0C04000J000000821W8080500H600200WGrD00600G100A01041000000ZB050041A08G1WG
+W8NoRm@@900023a00mHI600C08ZH300X46FV2m00002800020QrV9000WW0G040188GGG0m4
+60040GW0G0ElG2YW20cYs00H0GA0Wem101G8020H80704100G0H80O0000K0We8IS0G10000
+00gS00Y00000084m082O4400G000WPlQmlu6KGW10044YVp0002041001020O0G4OTU38804
+Sjz3fvR000402W01m020000000e0041088K0W7aJ0050W00020G000008000101KG08W0200
+8200104020G0a4000I001GGID60CO2000I000eeh2C008040G0aktb0000nF968000eoT302
+00Sfl100H08200CJH2jwRW400WvlC0DJ0000i14T0W00WN00002020100GW1000Gy2XYGW00
+G30001Y00H0008E0041GUXm08G40e100W010W800WE0C00003RX80080WI000Qat0m420G0m
+4_@d1010SAXGG0_A0100WeV@400GjWGG0oAq20G0Wmoot00Kbj000000G400U0oFp0ud983_
+B10c68000uo3Wl18082V049eV3004_B0Ae00W2000LMz7W_yF0000zLvFi@700MTxyOadl10
+gAg0000GL00u@V3O600qOF6000D1G8G0iZ008Y0GCS600C050G0kpe24300e41004I420Y85
+04080C084O0O8Y4es4f0X8I1mGa2W1050306260Ca81O8GI0000ij6000WA0006040Y0w8o0
+GW0OyP6002000C06100OHd9q@a1q10000u7000AuKI6_fc102F0000zjF04W000sN10W820H
+8000FXO00000000c20Wg4m@088cP6Lm3Fm3NLW7UG0m@WeQL11W@32pCJ50_7SXpCLgA8CbP
+GC300WZgV001000m2B4000W0Ww0000eIH1ew@@d00L1Wgk3mQt@ioU800ELM@FA00G0XNP00
+20WmWCeryGQcp30T10VH@mBTXyQE9BAKKRx9G700eUzMgUd42010VBPG8F9ynd7xnl110000
+0pXTpBqr@L8001u@V300Y0W000020G000G0G0G0G004s3sWZuP00G00460bYwDW0220G0440
+f00201002A000000mp020GG08020200080A0y@V2W200oZOc@@V000A00G00O0084IW08W08
+cVl1000800WW_Wl101GKgft0C800090G040000101420000010200040440030000dl00001
+0O0004lCPG2@F0K0AuzU9Uzd40404HwR0000G0G040WX0G0H0W88002800002e_9J0842440
+80000X2806D048200002220002001GG001000GY006000mgEW00004080800G40X_@V27MQ0
+000u4aIOOD6shK510010W500828CuV2NVOmHj64jV2Dhm00e9000104Y000G80Ccg10y4000
+A40K000G10mYz6iq9FndbmAW9yne11xdmOw9q_c120000WC00000G0001090060H000WCO60
+cX00e10420W0W0G0G0000maD00800000J0024000W017aBHZzv00280G000004Yu_bOrV3EU
+t020400G0Y0401WWW00240qxx9002420404m0000C2G8000G0000000408W800000WG0Pfd0
+020mV@JupNCkztWZ@he2V6000WKkf1jzN10WW040081fPGzg6008005000800080000_8Y6@
+dXpsV8Wx4kSNY@rn00H0GAK6iOn3NqPGp_6m000O@U6_rsWc_D02020000Wq5J00002000IW
+200hanm0zI0X00i7O3QYNYUwh0004W0000100008W008G020W040W00X4200H00V8Q000010
+00g00W00004kxl10G10m00u804511Am40851W0W082K0GH1400W044e0000S10001G002000
+W8004PwU3YnF10009000IwHyXOwheyy4000O00004W00OII6qpV20008IeqWY@Duo@4000Q1
+H000WZ28I1W20W8800GW4WC2G7G0K1W00GW10A84G40000U951008200m4080040024900sW
+cXOvD01040G00X3VbOZD3Y_l2Ae0a@@p00W010YWI0200000GE5k1XXRm306000K000802A1
+0AH800000eaI0KPl100W20000100WfyT3e4G0810GOvs72vtWEmD80N6000200GG0080mC@6
+4ll40340EyHYd7Du1@4MHtWLyJ000080XbWJ4C8AW400e0802000mW1000I00018G100G04D
+6_30W0HAsN2042000154000ioe1D6A1000180K00200YAE10O00801005120820m0000B000
+100UbYd00GG08J000100000K0GW8e5J30m00KQg100000qz1qKf1Y0204m82YWOGur432ts3
+08W00e0EW00004G0uYV9sLFXIlI0W00vU@9W0400004Go_9awl1lmR003O490000W4W01000
+I00040820AA00000S700W000H0004400208G09000h@PmWwC0G0Gujd7Y1dXI_V0X100W0eX
+c_P0000ZI0000l2000K0G88210AC01WmkNeGW4nD8zX4000lW23040e@2X0002H08N@R0051
+000a7W20000WhKg73T7@008600000C100oAd14Q0100W60010000I8CyA0Wwg7SE3NaZ1000
+6G00000C000uPA00oM08Yl00MT0X@@0CGt1Hy100W00H000Gu9J100020M4H5yr3G410kn6m
+@@F00z10000W00m@roF10W000W00082000104240EVl10200G40003010N0N2k0@000_100W
+3kqt0W3WY000L0O000e20850300NW30g0t1K1e000G10000008j610004000O04082C611Gv
+YdGvy9W8G41002qACF0W00uhS3sB@XDsImgA000uE3@300BAbGW@OWz@100@31000GL70_YF
+0GnE004Tl107tS500000W000GrJo@900aJE7P3gs@102R07nHIURHLoV20B30kOEaHmX10W0
+nd6C0G0GeT_4Aj3cvlDWp00mwtOyPV5NXaGdUsqk7C020000Wad8_3tXBHPpIiLl70000hLt
+W80C0002W000eUxdPmy40Uh0i4G8XsrIig60008400G0000840W8K1W2E_t00W000aW2MyF1
+0880GKG000000G20G40001aI0000A21H00000900291Q3W2000000qc00m6zI000W0050000
+G18000ZTmm9v60018OfBF000W800GvKw4020000GG0GW004G1000000H000248iil10G0000
+80G01G404G00404400008G280H001000G1Y00400G80000yrlst0822000G02jp00482001W
+0880800200020100WVTDG00080050008WLkQmKb600G1OZ93cwd1W001eW20_zo0000W6000
+08100G0A05000600G000W0X00oPE1G001G0H0W030Z00HGGW40W201OW000200H20008W010
+0008W600040014GY4_140u80402W030084G8@V3Axr0a000024c8000qxl100020800aHS23
+kOmC@90200Y00G2M00WDfI8FF3cgt00G10WW2000000240WG00004800000G0220000101G0
+4000200180G0000m0E00000000401000eq0C00000200m1sJuw_4G000SwF3BuRGE@6STJ52
+000400943g1N@@000W000610000E2pWA@J04000I00mMrCuy@4000yNtV800Ga_ue5G8G009
+00000G0440u0@408W8SJz3000W0200180008000002000GW00W908W100G0GG0000828140W
+eW008400emv08@VF000W0010Ov3L00Z0G8m0GG0XmUs60G082800IXr64zO2Vzp0004WqbD0
+0003G0001010FzR080W800000a20000Gcfp39Vo000GaEXD00W0C2G4WqJR112200680KA2W
+0000W9Y04UV23jpG8q6002We3V30G00000W00400m0GcRjDOXV30008dsg7000n2Pj500060
+08002G0e0082GH020u90Y8m045W01282UrV25zR0WH0WNyD00021G000001G000G04G200G0
+20Y08iY0GK080m22X88000MB1uQzD0ae000YG40003800v0QF10a016G6034CG8AG68IX410
+004mm00W40Wg9DuIR3Yit0208m042O00W110G004e000G070E108C640n452G080904IrR60
+000Zy00GkVOSqk1W04gC500jKF6ZyB101GAIHWIKY040G29G9G00GcG08K20000a0G1b_HtW
+z@D8yR3_Xp000400G00G40A4la1KY800G28G900010410K2000YHN@pGe@6qcF3000500012
+G00eTqJ000G00G0114G0WAY84I81200a04W0W05GG800mvz6Kvj1Fu@muu90200084G00000
+GA010G1142e0W0000KM0mWvCqel1JNp000G10O244102o6_4008r012O0UW02f0Y00802080
+00G50220GG0400000022OKBC6000886E3U3t00008r3P000G10G4000080YY0O800Ot93yA0
+0a@l1NhzGUhv01200G5400401G1KY0GH0Gg40W0AH0W02002eWlXJuIu70990aXU200G8140
+0002G00YW00001008000oLpOE40500T4Mn1tL000eN00000V100094000000T30008qBqS1W
+10KD040ZdR008XG00G2nmPmmY6080W00010IJW200000q40Q_t00G10004Wz2000EJ1OzV60
+005W0008Cy400W00W0001G010GmandF10J30BJ30Mc6BIpICTMQiOQ00400O900uU@3m_zcP
+GW@C00GP70000000@L@D0Yq70cLD0g@F5WNL0LD0OAy008LM3K400aIE672O0G0000W020W4
+0sl_4c100e200O6O0WBG5ZPWE400CC00mG000D100O0K000WX8JHR643d1003m10N0A0C0M1
+00A10005000C600G5G0mO03WA0L000k0000000MIhN_XgcP000e900Wh4vIeeRI000J30000
+0Mc6MCpCiCTQ0000mIB1amI5000GnE082V00zI1300LPA002I0g@l00MT0f_@W8_@1KG100C
+3Ww000mW0WRttW01000O706000FHPmRtH5Jk728000020000Wc380GNjF4aXAROxHga6aoU2
+71RmzvLa7b1HbX100tlN@D00K0msQLqdU2ha@GD0C0880ePzJsON502000G01o_t0Wu50zL3
+J_xF00WW0G00G5yFSge1W000EOcX3vtG040mKiRmL2GOVS3IdFXfhP8sx7od768000008W00
+2W0G0Guey4G800qyE30012400101e0CXV3Yrs00YWW080000880000000JxAy64Yg10G0H6j
+oWmmV0W000010Ym@J8EC66DpWVvJ00008404XloJ00W020G0awND00W201004G800014I__r
+000eG0000WW002W01400g1G4WG1000KG22m10G0H114Y023XG00A000WOE010100G0140W02
+W060004004GGkVrWakDeDU380000400fcV3c7E102G0TcbmY_60a00K0W0mbw6000G001000
+04441G00220odt04010G0280HW4iHl109200001W0W0WIX03W8200W410e02022810WP0904
+0008O30G1000eq0H0010000W00200mzyJ0000yHM60200002000040008WNKPGA06aAk10G0
+001044Nd10100G000I008OIT3outWixD040000200G00C0800g7pWthP002WW00000004G0G
+4hys00800008C0Y8016000000000K10000004G000GGO00202G30818G008HD@mbsFK8z6Pw
+R0C24020000004000eSdF65Vp01092W080000G0G08S6W40R500010W001OxF30000002euz
+t40802U_h1T_R000820G460820cFV30084G820sot098404010I_dXCXD020008000100W0G
+0KW001qaR2aW04UwoWL0CeXP3000LPG00GW00GjX9008WOHV30W020022u@V30Y00000000Z
+0Gmz60200uvy7gosWsgDW100qH66SYU5@toGNy9qsl1e004G0004nl100020010002010000
+0WjZgmJur03UstWi@Pu3m400000400100W000080C0IZi@0W00WmVD00G0GK@60800uZ@700
+1000C00600G@m9000YW0000040W59D0W1000P0010004W0W0002Krl1W4K0_Vt0P4G04000o
+TmW_xD0000Hn96q_l10W080084iQE3ngpGtx90W00W00W4W00O0G1HOG30G000qjE34000e0
+0GW002G00G40004080H80100005GGIe0X0009eW430880Om0900102090430mw@60Q000808
+050O016WA0G1Ce2G0G09G00W000AG0040408G000W00G100040040401100aH40W800W100u
+YN3AYC10020GG900400WK80664eeWK0000100004n802ylF3000010300010CNc40830CWi1
+6104W000210A0040009G100G00G04H800000C202K0000G00A000G00400GG4H1G02018400
+4008a10G000W000wnU3e200O600020G400040e09xx@GMA6G200018000K28004GHWR08W0W
+ZmD8bi4000G1I0KQPV3e4000WC1WI0000A000g400000GWIA1000W85f40000Y0G0K0000KW
+00X0000A0qRw90204WI0W00000Ae40G00066W1X010K200W020G100v@V600W1000K8pO384
+0H80Ym114828W844200410W04044qF3DQRGi@6a8E3GgH0G00Ia2W10002X01000400K0000
+00KZ300G000001Aqwf10000HaY400821001024H0X0GJbIm000W000G04000eW00K9l1z@R0
+285WOwD000G2JG0I0I1000110i8611000308G2c9Svl108080088080WiB@480100006OCK3
+003001080000a0GGW@rD000yC10220WPO8050000WW0Y04G10100o10800m0808W8000m000
+00Poo6040GuaU3000D004082K3wwF1008H0e00000024900X9amkz60X0012W0Iaz98200e8
+73Eat0000W000AAetW1BDuLK30040aHF3WAS41440000411K840G40241G011000G45cK2GW
+80Muc12000000K13WWy@F30WI0IYt0050000c0o1t003400100Gq40000U99T6040G00000f
+hG110400Q20V_R00e00000WUX20IbpWqgD0520000i1000ua4620000A100uvA3009C200M1
+D40000iXFTD000GB80000I0b4020G810C@l10WG1sddXpjD0H3000Gu5J3WbI30Um3B000CF
+300000OPw6_b0Lv700mF000G0K@VC0000Am@nIM10Xu3WPT700080000n000mp400jUk_600
+ersw10lw1000060ZfQ0003V1m0erxRGWy6mhl0000000810H540000Y8000qCT5K30000LL9
+0bA200G5000301Wa0t4L0o000eo0ek@400J000L06100KEu9W8m0WY020g0gWOuC000e800G
+501060g0H0s1043k1WsfY000K100W0G001G6mE04000x000GH0005100G040q4ab1IWC000k
+00000A0m00000eo4dz3000k0o800KX000u10BJ30cP6U000MCTQ0000m3U0OvT@CWV0000G4
+l0u7WmmJ000000mC0KMV00ew00@@10@@14000Xuz700000mC0t100Gpbu3mV@10000Y4yDG8
+1Ga0300_30yK5000W@C3T00000ul000000WT2u_@B@F1KLB0ZsB1000CW1001jlH_qUKaF60
+0IrNyUc4kFPUy76PiYb6JOFq7wAsWj@D0GH1I7vC02000000qlZC00028TV6000WyfV2PcRG
+fv6qLE9lJjnltFaZL2toRW3W0W_3yeSTIwyca85yem@DoFs0010WBlpGQvFG0018_c7Ec@XS
+bJOdV3W10GCKP20800cotWu_J0020100WWN0C87P30G00000W9t@48000000AW8GWGSE6800
+00mk01200414a0800WG00080W0W004mRC6iSV208008000001058W0000G600000G8G0480q
+bP2FhbG4_F08000G002010WA6D8qz400100148uWy408W020204W02OxV60G0e0W0244H408
+08140O0000GZ800uuS300102G0008008G002000200G4W0042G200W0W8884008WA841bY3t
+082W202100W000800I0W200000002W06G0021W000800130010000G00008ML8X0@D0W00G_
+z6e040u1R30000000G1G01WW02481402000001010a0100BQ0H60040000tC0004000280G0
+W41W000020a0000180G00W10100I00100002X2W800840BeOOW02000G000080C1010000Wr
+DO00000002G0000lZyXy@DG0010001eF_V002CGRfC4yV2rOR000O4400B0G0WWG0030000m
+d081008802040000400808000GWG459Kxk1faR0A0080000000YG0H0W01010W4000000208
+00100200F@j1BSM1020W_IJON13U5A1W0000K000000G040esm4ghy1000W2700spr0000W0
+0W80004isF3W0010149I003Og_4E_t00C01DrR0X02WNxDW1800002WfIUOVV68000000200
+0G00G02000008400H00G20HOLZ4000WqtX1400400018428w@V30GSj4nl140WW6btWetDeJ
+030041q@k1l2Q020000900G0200030y@l18E14000020ZG0001qQ_6S8d19e728W0WJRJ000
+YHva6C_G29HdG4Z60cDHOhV38010yak1HqP00W0WnyDuxD3W90100000W200040000O00O00
+_P@121100000W028icB900022yp00002BcR00040210000000H00000G001020W00800900W
+00000dDh1BKO0W0201G80000142000000000O8W0002W40m010000GCLX10024004GKIB3YW
+20G120yB@6Tqm000W40KG40G0K00H003W0aW0XW00028002G100W00Wyrl1KG0100000544i
+BQ300i900001I24X1qWLH40WWGO00Y4O0020100W2000408bK001X8yC500D00102004800A
+G44W08G804e090W40X0g8O000G8G035e0G200010GH4WGa0W4sbuYD3MpsW3mDG822W00W08
+0008GG0X00W00840042W00C0G4820010W121884040100WG0G80000ye01000_Af1W000402
+10400w4T3002001400G0W000a7W0GW8004110002004W0006H0G8000002440C010014902W
+0Hb10GW0J_PGR@F0040200000GGfYmJW000XGK2000000G9b00W0000KI800W4002A100W40
+0eaI00G0a1PA10001H82WI000898040I00WIAH000821f408001800AC5k1jZd000030e400
+W0G00GA001G000e420WG2003K0000G40G150020100120GYW20205sO5ZQyDO8V3G8G043N2
+q0WIr810G108Ki0G000G400418G4D00G2W00000681080000TM4H0H0084W0W000W2324HK2
+X0JW000YMp00420vfQ0Y24G40000I02G0000110004865004Y440nyP00080G0W68G158204
+CdS2008000007vk10W00008C000Y0G100Y040WWW04118G4C0Skl100001G44044C0008010
+0O0040G04G8X0W0WB0K030010000FgDG0A000G0030G00020182WP0D8AU30410000GWWWW0
+040040GW000W000W1000o03e0WB020000tmQ00W4G0000G028g5dXyvD020000A0WZID0K0G
+n_y9008086E30040008G0G12000200Y00e410c8m082000008W88020006v0029m200WW004
+00Qqn08200huRGsS6000G0GKY0000G010G000400040040248940G000208@ERW80WS8HW8Y
+000YBnWDyP00002a4104000GQ5100e0W0G020K8000WKlG100020z200W00000820w0800Gu
+Be30200Wl0H080090GA060mN000Wv3w0W001uBG400WK00KUZ10i1040000W40eSV300D000
+00qB4300000c000vfR0QDW000O38C00000DqUl1000OK0G0KCd1Zyl10_70000GoE0uZXp0@
+ZnCc1m0nCLLP1CpqYC7k5LLLBggg0NLL1Uum30@N4cPk8u100mbTuM4W@begg2S@@7uX300h
+EWmnPG10000_78P704YF0@xjF100Or00yF00@@B000N000X0082000000J0WvP00zm3udV60
+0J00000UG@4m500WBmF0LWVG2S9000e2G4uCG5WB0N400t80KGH0e0d1G1S1i2u2S6v6uC20
+WL405000Wqv61W2S605u6u0mOWLa80A0009@u4W100GHG5XP0L400L000G80001V8t00L460
+xC00w000WG000A200K1G0m5W213WK40W_5t3nyZ1YxE000U0K@@00000Gz@92t000m3W8S70
+0YF0uzV000080000@D_fAV10Hy2WV000Ohgu0m5k1ul@9sV@pV@g70m50YSd2b120000W@@3
+mgt54n70YuE086000bT00iwW30c100W0e030G16000000G000300X00O000ylA1GLjFN7230
+0WwnX1Oa4G7vKDRl4dSO00108G0029ldmU@XS1l1A000@WtW1sJ8HR3oNZaBADO2yM6Thb@@
+D00GApfQ6KTE3NfRmXuaCBF6zV@00G0WBCD0GG00001WctDeMT3MUF401000VI0k@LYSmRvx
+T3UmVZdhauYzDW020Mwd1NdQGg96eU000200000G8008GrrBnpm6CTk10020w_qW@0Iufy4k
+RX100G0ne@mqx6y@V28G110Y00SIl184000020y0l1zsdmx@C005100Gcpj_9qSk11Id00G4
+WGmD01200800WCvD0Y08W000020W24000800020800048GD@6Csk15zBnzz6i5h1nzcGi@60
+002uFK30G014Kl100X0080WC8N2dmR0mf7Wv@D0H40m@P6KDV202008G0G000GW0004048WA
+iD000GmJ26ynQ2nXPmuyCG000OhU6on@110m02004QpVZhxP000420008u000X_dmGaC4PV2
+pRp0042WWwCW280Gfq64pk1m000c9uXHJYAN0kYB0tm5_@RY@xsu@jH_FRb@loqZw0qvmc@B
+ynrsd9f6wA000Ge9008JRFkwMYSCV0080OIuUiqE3TIbGwf9SWT800e8ZUd1G008bPl1Ge0W
+Dnc9@QFMEd4Wf90d_d0000atscfQTF0004aJk1nSpmlv6S5i19vRGLz6KxT5000WP300aXE6
+V@cm_@60003fRzA001WKzF30G0eE7D1G040Pzd000W040W00W00G210e0G0uIy4wOFX8pDW4
+80224800020WWW10201000000Gp20000W0800GAeG00I11624020Iyo600W00180010400W0
+10G04000W04000040mPx6010008200000400480020000eCC@30900WI000001euT30G00yK
+c10G10080WKOi1000G00W0SJl10440oHp00020040W02G00600OdS30kXG03I00303004044
+00C000008Ga04G002012G8IA0KC8048212W410GKG9050X0Y0000020fG82Y820G0280Gmgu
+6G080W800GDgC0010C8D3040Gy@l1400010G0W008014100u080G403tR0GG0WxYD0400102
+010GG0WI0I4000100023W00a000000mQ04I080208080m420YZW1H009050008440O8WIW46
+02002040681H04X0K0O104008000W84A108G10kvtWdjD0804uW_9C0O20W000180SjV2000
+2G0000002Ozw4kzN2000WX@R00X020A80zYR00W@K00G00A2800m1iFi1000041W0y@l1G1W
+O81G0UyW12800042GKXl100HG04002O1002W0400040480000WYYFXQwIuz@40W16y0W1V_R
+020000G11zwpGG96W00GkiT600G00GW020000mM10210002G44040002W0821000000G4008
+200040101W00008080mx@D0102uDz602010010Oz@6010G0200mQr90000008AIlT6041000
+04mQq68008Oa@AoaF10080000WAEF1010000014000000AI000094000W00G00OszFXymDul
+_408800580000481140000W44108G00iHk1G0080322000200400800000205xPGh_9aXh10
+0000G010Y02m084mtbIaXE3W0004102000000KGm_j600GP3100mex9G000SNV3O0W0Czl14
+X80W00001800G000W00008G42GG001WGW2140420uoY9Kyl100001000Upl12100ALa1G000
+0100000GUt73Fo@Gt56080000IG00G424G080G000C000GU2exV30300100WWW000H20WqjD
+Oq030008sbk1011A0004020Y02G011808010000034040CMl1nmd0001G00Y80GGWWW00041
+0W00010080C4W2000G0W00W0YH0H08Gd46C4Q2000X008000W80001C041G0G4009000I0W2
+90A4g0W20008320G8HW00200G48W20X04S0W4G0WG820G92100400HHW004q01W4020100CG
+02Gae201bCCeGWLO04Y8WG08810G05G082800080A400bqR0180O248GG21000840W000018
+W800040820G12W310802000W00241WWsJO5n4G000e2000Y00041WHW00X8j0204G4089000
+m@F520G00YWKGO00W020G218fT3KG000me0Gm00045100H03W1a20JG01KK04003201W0Y20
+9O40a02Y8805040K084G1W9eD8vV3004004W02002200G9W208000804001000WIA1200G49
+0410801sD53G0000G10020000002a00000WGA1000KG0000128bK2HGKAG0KfXhDWIG22109
+00f5H20Xmous010WM0G20010AH90m02004b80008a80280X00G00b0wkV6850W180e014002
+4000GG40W4000G4SRk1880000H4X0W000m1W080WJOVuoT3000a00020H000Y8G108Gc84C2
+0000mH502XC012800X1G0qW000000G408W20021WW000084W00G0000C0GW80e04I0G0G010
+8818244GC502C0062W00P1808W0009X4igk1000GG020008830XG2000201W1u20IW0G0040
+008W00000WwxD0228mrgLSBE30080gCm000Gt88c00X01X0W1uOV30I00G00euQV3810080G
+0101G208W4WC4m05084K0G0X192I0W01002040GAY0OEnD14041000000019GG0001W5W041
+0G0IG080wztWkTJemV3kuFX8UJeV63Yzt000X8jKP0G04002000Sy0H040140001G20HW0Wk
+zD00100A00080W0Y0A80WGY89I00W4088010W8000W00101HW0AW282051080a8GC00G4Ikn
+00480000000K00008b8010G0020040e60000fcW200000_oLmC0GH0O1OCgos08000W20800
+mh000W5zK7GW06000440000w30000uBe50000gc880W0000010WM4G08O_5QS2W00yV02000
+021180GF00000P2S50418rA00m@@60e00080jY@3uV@50h0rV0008q100000m5X00eQ1WF_2
+00008000mp@7HS708YF003001Tp00002n7Ww00000G0WYT00tx0bDsv@V10uV00K000uB000
+ydg1000W0Ki3Or06ei500000W100WoE0a0000wJ820L1Uu10Y8200150@@F0_@FGWgA0G5Yy
+x@0qt@1y8m30ui1CeEv400058I1mGa2G5W5WB0L420t4004H00W00006300m0G0W0OCW8WG0
+006ui4z9d000G7000L0C0L0O000Wc000000ec9400Wn000T080A2CpC3Gb10033008200GH0
+00NW20d1K0S1em00S70006200W100G7G1WYWV2g0kC00OG00Wa000S100m0W000mi3XldC00
+X740_F8m3FuKLLm5E080zW00000Wg30K@70000G000HStrT84280u@@4WW@1010ml@30U000
+ms3008ml000000CmW7ym70000co004bT00JT00000X0400000Ae00Yu500@B0LP6000FC1W1
+00o@0100ul@0m@W200C300008000LgwV0000W1C00_fQ9UZMbAgP81830000008EJ000mC_6
+S@S22408wm_XTtIu_wAkt_XTub00G0uBs6SmU29QZnDqL0_GWOSACcetZflJuTkDg8@de@D0
+000XW51Wa2cvxV60024Sfz60000040WCOk10C00kqsZQcDef@700G34tl4810GcB@XWgIuGy
+46JV300L104G0YZAXvrDuPT38004020000800018WouPu_B30G500000008HmKw60340edT3
+0Cd0C@l1440GsrF1202W0600NEtWHQC04000400WcwC0K800008WNtJONS9wcFXKsDG100GO
+w6042900W8GnxC0401e1T600H000G0uyQ32Tt0WG1A000mS30448N200000W0aY0882G0200
+X000o8X00G010I000GGG0K0oCv90GG100O0GxVRCDF3tNPW000G0000GP0081W000W200G0G
+AO608000000neO6000O0200001WXTxD00120000G8I0000Wlhxt0WG80dmRW0000040CW0A0
+0C00G1K00G01W8400G0e01ZP0000010C20000C200SsT2v@@000MXoHCecH36tFXgxDOL@As
+xoW3lC0009mmV60040u_F30BD0y1d1jpd0a304K00G00400280jHV240W0W100SRl1008eE@
+84800000W8000W09308l4308000002uo@42Bf20820ZjRGeFC000WMl202004G00W800G018
+00Kjl10210gzFXw_D0C00nPzFanl1p_B1000300WC000040G0a4V2000G040G2W08OtE30GG
+0a12682000G00S_F308al12WW040G008002G100040W003w6B101W0BtR00G200W10042000
+082W00fwV9wyN2042GRUaGa_C0044W0W0m7@R000X8v@70ddWSqX100X00WG9CGV200HA0Y8
+008G0X8G200000G00G00520W00W000000W1100040W0lZMnq@F00Wa0000K6eC0200QRqD01
+W24o63nPQ0o000H40A8c20grn0200000W00WWG0400ePK3000GW1018069QI1300W0000P00
+X404400G4Y41X08000C00080000300G00W00400mvwn0005mm_6000YAh@400aX00OO4I192
+G021CA4eO00110000W001I022W004002404HW044o00800GGW4G0000900zzRW040080800G
+00UoN2e480001000W8WA00000W02200G0W0PBQ050000Y81G4424105qhl4000K10WHW00YH
+W00GUiC0qVm21W012Z8GA280W018010021510WH800GKG0Y840G0002W0004029030XWG00Y
+500a80W09myyl1TkMn6i6Krc10G900001e00K0000000G101080000e40G200G42A1GFHOq5
+W1Ppo0p1181000KI900040CpY10W0b000G001KYI4008G0AA10000020WI0028I0AAf40002
+0A2Gb@R0b0000080V4OG@o9009IOBF3gpr0002eHwc00400000141080G10ayp60G40M2a10
+0fd4804G824W0HW2G04400000G800a000GO000280G00491WWtUD01000W8a24G0000eIQxr
+WzUD010GmilC000e0qW1800A08020HyQ00G230G04200C4000W100G800W10006m00@KY10W
+00010002G0_@F1GS10u00400G0G0G8M41X00004681000G0000G0e0000A080C00YW92O0Y8
+K0040f00I0W0200OG08W1W1020003add1@@@00C00000Wx1R0004080G0x1R0000YaYD0G80
+40O0WWan02008000mwuOGuG1WA1000G0W0800XG082008u9630001000a4G20WWG00008G80
+1010a0X000WW2000G0WXGDu@@AGh000009epL3000KG2000WD012000Wc0G3AP00e10002uD
+nbGCSOywS2004iHJD00Ga@X00000844000GAW000mAqH4010gl4400600W0G0WYRG88Wx5g7
+1a0GS0T605W004500G0V50K0000eLYxb100me2G4HMTs0000xeW_00000KIX1G4V00000000
+ut@10m@@R00WL@@@70DNnB070008YVvu9aW33_@T000y000000L100000O1400Oc2000W1_@
+@60mE00060000030Q200m0C700eVJQ04000O0C0m0q1e2u610WB8SQC004000T0u3B6000Gn
+WY000Q200y38001uE130400WvC0081E3u7e0GJ03YEWV000@400G89mP0010106660c000kD
+04qJ2000mT200y@l1oCW@z7000080_31300HSFKh119O000WV0UU00Ax00F00y@l40F00010
+H9800004Ho@@900Oi600O000WAGX100602mEY000G100W2000200C1C0000WD0g@@l106000
+001GTq000000@100000Lg200kFJ502001Ld3my5WXj5wrSLEvmW@@Jul36M373000Ww600EJ
+le@@jvBz7Mmh200Hy9x3sfw60400uoP3U6sWxs8P@@40Lc0y@V8B5XHsWOiqi1B6Rm0vC4Hk
+1do91000XuuC0G0WmGO6KV@3i600AXq00W00NAR0G0800800tcdGHH6SHO27bnG4wLiQt3ZM
+PmFzC0400GG000110WdmJO4T60040000G00Y2maJ6000000098080042000G01oqd122Y040
+72klF10W00O0W0000GiZl1G1000020G3008muAMvtWjtD000W0800WUiDu@T3s_tW7uV8QQ3
+00G04dZ10I004400avV20U80400e0000G004mOr600W0020GGes60002000m000000WW2PHP
+02020000XLTRmvZLq_l1Zicm9aI000G0042GOz6KiN2HsdGboCq5l10000T90042e1200G_@
+F10440G01LdodXYxV8ye467X4000a00G81004rvl1NcB1000bnfJObI9004QC@l70004dpEX
+tARPuV3Q9uXguD0000nudL00200404Gi@6aBE3Ys506AmZktDe85X00G0Upf71HomN@C000W
+rD00GjgR040000002800eLuDuTF3k1sWcEdfmqA_DdXELh00mTU_hUSapFzoP0WW2002C0Vh
+pmm_F008000O0003020104jlA1e33WXQt00Y000020G4000M00004G0W000002mRhXKog480
+0000G0YO0100G880W0WqUPOg46QxoWHxDOEx4000mo100OeMFW80WC0R2npRmdgsKil1VnMH
+ut646_3fzd000PueVt00G2000GXkdDWI0080G000e08poQJis64uB68000Y6m0000H80002s
+z1WhB0R4lnpy9Cvj120G0cUuaXZn8CS3Qlj2GGG0XXd0000i40Pmc00GdjRyrg12000C008a
+CaDp3pGEHR00W40G20GL@90012OX@400iFdwy60W2eQTt00W01e4026LgbQ@g8GQC040K000
+00e40WG00WOuU00000uk6WGds0W00002004D20G0XNG8400G08e8PLUWpWk@J001eCb10000
+udJ933000OG300zOx1b0000GLL2GA0QO6c5mJ8mL3000K100W0G50mvqF00510000yHbCG60
+00004I2@900uMPeQF000S1a100WX1002100890THd3WL708YF0tvz0000000WgW7000W@_dk
+V220s6ATx1mu80BZx10G30000u2F0yLL0CJC0000K1GhrNTwj1pFN1b10WApwAgRX00eozu6
+CtYBHsuOC02CdUZ1mJ4WNz0RBzMw0M2000KY500MyhbGwb8jT9U_FXJsJW000GFx9qMg1G00
+1sRFXOtCeFn4w@w100Jl@sNH3v9yMt6hm@GvoFC6V2xjQG@@6G00800G080002020WxoR000
+400W8WRXRGTT6G0000m008054WExD02000OP0WioD04400014810W0800YYSBXQwDWm000GG
+0WgwDu@030G08Chl10100_hd100800100c@FXs_J0040mQq9042000WG4001WIvP0300G9i9
+00004000qx@600080000BC0000002040OW0000009001400YWW_iD01040001W@zDue_7801
+0iUR2TxRmTw6yuV2ZxzG9@60W000200mr@60110ORL3000Y4Fl1m100M0r00020RXR02W000
+00000aK_@FXi3DOjjAwdt000020W004000agV2ryBHM@L00310W08mXz60404eGw7IMmWo3U
+eyV60jM0y@l1D6Qm@@L4MA3@SQ3G0WG600019Tow@F000Yon00GWWCSaF3R@dmB7Ca8gDO00
+0001100000GH8GkBXKrz300m76KA440000048s9L810Hc0008gct010G0jqe2uj1WmeOu9rh
+mG1gW0020HC3000WH1W02Px@GT_60024uZV3kj@1000ajDQ0400XP@J8k@4Y@t00G004G00g
+ZIbe@b0000300418GGW00000A800008OXK6kztWfxJe9T900uIt1V2G400480HiAV5002GMA
+y70000KI900000e9500000W00GX1yneNS3Eld1W1100004000A040WwE@4Q5F18000T@R0Y0
+GfkS@10WG0200008B00000000OUDO8B_d0000SR000080Wgnt0000Ghdp0008041008G40M9
+QZSX9100ammB9e1128jT3cVZXQSb8q1600uR30e01W80000e08K00082Y01G4TN73fQRG6E6
+iP4FW410MdiYnsD000Wq3xR0_c10W08GuV6C@l1x_o08G0WHaB2500000ybDJP00D0mEyO46
+k1nPoWu84WfvDeoy4Q2u1000C200G0yA0ytSE00WF50elA0W@7W0000h6Wvwnme10mQ@L008
+LihwG0Or1qBzF0m000Wn000p030G0e0W042008RH@mXS9yrV251m0e4Ka4@D0800m0@604H0
+uHR60WA0X800M900G3sy0@00rh10F_n0000Or0WoA50WdVlE6HIR0000En100DYdWQn8WVxJ
+00o3000WBP6WyBzB10c1WjhDh2R900Sg5@MQ001WEuMYeh91yi1mVwd0X00e_jGYzrZujb8Z
+RI000Gy8aJnD4oIwIC_k7004000SirG@90012Aqh5200YP@R005000H0GrmP000402200000
+1K000KMM20120pf@XewJ8xQ30Pf0SGG5010000020G0GedeA_T@X0kJuWU3Q7tWhtD0G0G00
+00440W00KG9000002294f04wos600016Y0080140G08W0042848000000WW08010Ge0W4200
+0100W040H4000lw140040WTod0028WkzDO_D3MNF10002G00000Y0amk1JpR010040000lFR
+0000eraCeAV300508G008eL3000408081GWG00006eGAW0040G03000W02G0040008000m04
+00Aj91G04800010GG4CiT200gcUYAX@@De4D300G200200102m3_90018O_y4_6tWJyDuI73
+I_tW6@U0040mKm60u00020Wmv@680K00X80G@@60K1008004W008W00008GWVTF1W018bqR0
+8044a000Wf3GosBXewJed@4ImFXfyDepR9Yyt00I00f_dm2y9G00000G8m@@60b000201400
+00G0H000028060y4Y1rgR060001G018W00Qad10a18@vdWe10WIaU8dVFget0020000126lc
+100034G00AB@12000pMO00X0Wf_D0G000a00W6xCG6800840008000W02kWt00480a000000
+0Ga00PQT3WW000WmIS3@480W00W80G0000X00Wv@z004O000W000W0020W040408004G0100
+02400907@dmtI600C000G006100001008880010092m0Y000812awzD00Z080010001G00C8
+084C0W0000S44O00000800We4Ezt0mdD0F1@0HW0WoZJ8MzGUvt00800TtR0081nm@JW4200
+0008801020000204004II4201W60W1_DOqV3003000G010080W20YPuD0a00080GW41IW800
+0000EW300RtRm5p6G004OsqA6iF10W1H7UO010WWLWJ040000m1G00G200b1_@t000G5O000
+8IW31K0120OG3Y8044Ym0G00emA75GX0G0gK0W01804A000GWA02910WY0034GW20058X290
+80W0G102XGm00G0064O40A0000GKUjt000404100GG409W80G5H0mV_RG04100120021208Y
+204G000080G4P18000c94184n02X40IRd140000010GG0003402n0JY2500W04e8401W2G4X
+0Q2005m1000G8G100O6W08CW0G24018E8AKa4WIW8W08c80HGCPi1W5U0w@t00K10010W801
+0Y0I08x190060SQF30O241G110101000280040008W04004480W8G9SEU60WI0000IG20e40
+0200GWI02000W90G9810Ocb1WK2082001gP0841W2_D000W20084Af40004PWWI000W4W00e
+0000On000Prd00K0G0480HM@GC@6K4V20809100AX00W000Wm5v9014000A10012W2SV01Y0
+088aesEDOl3304a4000000052200XHsDuy@400I0G1200X2G02K8161ea8G15092C2000000
+Qu@@60008y2R301000O20efsD02800020gOW42Bt010008G480000S7Y1000000G400080G2
+0W0600040G80aW000W0820W010W02G008008G2s0B00y8g12008G48G000409Y40m0bGJ061
+0PK3X102004G0G000GJ5a@@D00X000010X00000802mdXgGD86k42dn00061000Wm0H000WG
+OtV3810K0GW0GW88mnpI0000K00190461dG0000804001W00IeQ@400021400008842GO00Y
+e8080X080000040208W804WurDGI08G_v6WG200001aa01WEmzeCL38GWWqHh1@@R080WG00
+21W0000192MzF3000A01G00mNW000004N9WM9JW000eN8020081C100sId1K400G0mN00003
+1g00G0GhB000Ws0000UXtgd1000nW000GW90SZF30020000Wc@@3eD40W2ml01808V@4000q
+20000Y40m@@9000M6uP60OZD0BKT0m7@004H02Vy10W@3Xu30GL70eW0000G00000040m57g
+W020uBc2W8050tTB00060000aJUVG0000G00eF0008b000l_F00000mCp00WvWPc00ei3my0
+0mr@U00e2C2V600Yu300_70G00F000z300@@R00q400W1GA00mO00080000L000t04063O0C
+3m000e20002000e9000102060Y0C0O000m00001000C600e2W003mS260AC00bC000000S03
+00zZR00q400G4W2100xfd180007Qy000GH00WE0gC00S90aLk100200Wn080C0KO00OX@900
+00lkT340YSB0020082W0WdV0e_@0AxT1OG10mF30Yn70uf70000u00K0000W1C000X10WA0W
+Ur7Wgg22Gdit000Uj000000WTz@l1000cnE0000CJCw@GuF@00W90G000ap2O260m__70wHl
+1WYT00004zl00030K00@sRpr@R0aU0uLkSozibjdJ8463cVsWl_91000jp10G0010BWBHdrF
+KSj1@ydGCz60G100000G7q64@T8H_NHfua00GJSORCUq@ai58P3z702004EGBWQI0sZhY6kD
+85w4IvEX85OevV3AdN2G00000001G00200OeLw4W4018001002WmSq6aEU2008WAat000807
+KRW000W4xDeoU3000mwA0K40W80000mkvD00800004G2800060080882000001GW040WQuD0
+m00m@@9080G0200000eWxlDOOS3001IamM2200G000400G40400025100180a0000000A010
+0008809CW9uC000G12100000000G0120a00000W008G944084GG0000480008@4o082W0508
+20W00GGW0010001G00020210040000G0ZAa1O08001n09Z400H001g0000000200C@@R0W02
+00Y02O0000400Sed1040500W0e040000020005G400G01W33tWOOC0A20HWu6006GO7V3000
+W20C0001000G208100b_b0mC401410@@R0GW000002000211X4G2W101404S02WpVC000000
+40600508G0KW204000810W004G8000306008Axs040X00002kaBXAvD00W0nhf6080110800
+080XL6D0IW0m@@6080028W0mil6iyk1004000C0020m040000042000GSI6A00mo00IW080G
+0080040087mB1040000W00G0G00WW08010001mm2C000GOS138020SzX1pGk1HG400020GH0
+0cdtWzvzudM3004C30080180000010002VuPmzW600200W00mAV6SZ030018YrtW1zJ001aG
+6K60G200080000400008pxRmer64Oc108Y8080001108QX4WW0W4VI508W0sKX1HtHaW0W00
+W000I004CW000W0101002901Z@F111000420g@t010G28404W904KsT2NlR00WGWGoD0W00G
+Uz90011OEG300O020000808oAv6G0M0eq@4MClYSpD0010110000I00000uaC00Sse180000
+094W0040D00mg@94YW10000102c00B81A002300W4zJ00W000010H00G020W00OG0Y000F0G
+Km@6000a00200A000W0080W00EOC120040008Ast00201W040000u42@37CP0000080810a4
+0000K304W4W00084020G00004004A0814000000W0W08a08G000000404054Q00Ou@900AG0
+a0CXG049000apDc000Y90410BGQ00004002Y000048001W01100W24H10161Ym904DX0G0HG
+Gy@V3820W24010003IS_F00Gu000m12mG0H5e0G2000UV1G0I8H021a081KQC0egG840000e
+0081110000K0X220G0mW1AGX089m26W40eAG4W4W06X408Y0W0Y820820000601GA0858011
+05IG5000100g00W8wD0Z0G00G4030G002G4X800Swl10W80We200G0G608A00060JG004200
+QKqWRbUe_Q380m4200WWQW210340G08n2a0W04101GAuYCC2C400002X0G0G201502800GW0
+08W8W44G430414H00021K34Y82020I1H0e000GG00W0eGb0100X2O8aLK102000800401eOH
+40I10b80GW8548G90OJ4000W028820400840W0a220e4008100vrZA6aqWMwD00A1000C400
+0W800b0400AXI8YI00e0000W04W08000W2A1402008eG@_6000IG0GK05020008000800W00
+0W0KwcV3000bGA00WI40800000g4008C000140030080G0WqG0W4c080000A00W022W10K40
+808A08802G2_VnWFthOiJ3000G000211000uF400e1Woa02eG900G0800GG4000140100fK2
+0011qGg10m806at0020080071100W000W1000W80W@@D0002200W001110000Gm0002W048W
+008G0G7GW081100WWWG220200004G02W4a10G0200G0G0W80bW0GFAO8E20000W0YWG422HG
+000m4Wee1CW1WG28WG4L0A00Y40G00400120C00000158WRuDO6U30J80100000a010004W1
+Y6puR0W014100000800G00OWGA0HCmC0002010W00081W009A02408Y0G4024G120nY000a0
+04WG0W0100I0000a0zUcm@@L070100401000000wBW080GWmGW4I040K05240Ab00200W802
+404EU2400WQeF100W42080W80281000G5080000004200080400080G41000GW0E0G008K44
+1010800G40q1W000Gl078800092Y0W04200820u08000uAW100gSxX@@JukJ300G50100mA0
+00OQ4E10000S500002n00000q30000KcGR80080r00000W1020002X010001Wf0801X9iWl1
+200u41000nL0unV3MAm00GV00000zILBuV0M4ymJ50_7JP_F0yVHCbvY0eg5LbgBgALf20@3
+W@_7ymj8uXBH0W00ioC000AG000W800siN200WVyF00GV00000WojP301000001cStVgiA00
+2K0qW00GWi300000000e7q800uVC3000000_320St@0ege1000W8Yu5aK70W2A0mR00_zV00
+0060Hy100iJa@302n70e0202W005010BWY024L0C800OG0eWW0G1O0W2m0W5W103IbK0CG1D
+100m000W0GHNN1C000O0O000Cx000000WMLH000C000O040K4ipG5Gj1003200K600GH00WC
+020D1G8O0mG00W10002200m500030106WI6t0IH00em0001000m00001W0mO02WPWA600pi@
+@J000@F00GV0MT00Ax00V5101K30Yu30WL72npl5iC00LT0m3004mx00GT@L000k300SEk@F
+000L0k7000Yz_2W2QG0uZFVX5U_lBHy@z06Vm0Ae00_lU0y@p02WP0G0000008slxDGyGqbk
+egAuQ@z200200k000KH404G000bT000x0Ax00Hy1SCX4jyKnxT6CtF9000uDE00aPM53zRmw
+FFqUcDz@@GIR9CSz3JCPGrvCyXj100eUgZtWGiPO2z7gLJ2008W0000dGqW3r9f8R90004ag
+b1lWpGI1FCzV2W_I0sQ7Z_fausx4wS7ZG_8PpG6QvZ4000SI00001G0a8F6TycmoyF020004
+40GvTLC6l1hlRWG0G0GG80nOP00G00a2820800W000a5Q202000000L6G2pQdGr_6aij100I
+g1040UTA3400048000GWG0008mD09yPj1FzQm9_6ysb1G0G0cxtW5hD028008W0W8rDeQJ32
+dp00G00604000W4G2080000Hgs900010140oo_F0G0000W0u9x9W0000qs10000aiJD0Ge0G
+wz6W0WGG010mVX6010G40000O040022I04G0002W020H00000G0140802240H00000G20200
+04W81WeUD8sV3050000K0O_T30G0400000881C40800W40Bad0W08080100Y40_@@1G002ts
+c0000G500WjydW0G000G0000240e405pk19WQm@@6W21910200100A000000W010410W1a10
+12W000enpD0W84GtT9Cyl100010e408002008280G00IW00JzRmu36Klx3VzRGQy6SQl1008
+8000000WFzyU30e000088i3w4gHt000800H00040000G1vPS300000200QnS3czF100G0W00
+00141idl1W8W0kolYPvPuL@DI@N20v902011kotWptD0H82GxO60801OY0300080020ebU3C
+0W04XS2@@BH7wC4Rl1Dtd00GGWEvUe307k_V3nc1001JK008a0001000080G0G0W00048000
+4008204100qzn90001430GGXN6i@@3005G000G200448000C10001000008kmtWi@De3i402
+88_5AC0000LF004og10G04810002040488m2yC00G0G008Gky9G0000822GDxLCOV20G04W0
+0G00G004814002C00K4000040441800G0W0Gc2m00mtOwV3010G0IG0I031qUJ6yck100200
+G0WiSe1001000G0T0w600J0d@tWBiC00W2014GG228004G008400a0GW004000100888TTp0
+101Wct31qV1008b00G29204LCWWWg00001L424100G0W0060eW0G031W000K08G8003G2W24
+24G8C000WGCy@700GG1000240A000404J008W02G01aSsV20A00e0XG00924Y0200Z0P0000
+1RPGggd000Wqt8GZ02H08689O4Ge4o0mW7KG2842Y010882802400100021031084000400W
+Y000G4400082108UV900W418Ga2000001810000K2W000280eG000b0080200c00018bG0a0
+GA00weV304000H000G01000mamyz00m1C040IX0CGKYW80WC20800aO820402WljC0000900
+G100m00000e0aeW0H0WIA0m0@RSob1m10H0004G1C1G01GmM_6W0580X0002808Y008IW000
+00Qysc19YRmBbU00000i430A4101I01K2K00484008IW10G820GWJ@D00A0Gf_9G1004X0GG
+@_a0e00ekI3G108G00GW0205200A882G000W8800000I000G000g0000u@_R00A0WL@t0000
+c6101G0212143010GW2400100W200e@@D0244801004005W00000GN0030u4L3KW00CS@6I4
+00klE1g00000040041kGa10Y2400280W45000100220K200pVRWW00Woyt00mYcG00I2HAW0
+G08a010004140048000A0d0000G0cUF18200VFbG0pL8100G10000u400Y0j00G008100020
+000W80W30100X4XE8G0Y0o4418BE3070100051S0G000K48200xPYnq@90uOe700000D1000
+W0420000SW00G0a80400G009000l8R0270000G38E40000ligS80W00KgM10000m@0Wf6@7S
+Xl0u2VH0avY0u@51m@O2FunCJgILLM4ymjegLPHuXNYggAg000W7E0xExX1@708SF0q2U@j4
+j_xtxL0G1u1d0uV00G2@QQGdT6000000g300UeqwqD0Wh2GgzF0H5100o30E30000Wy6300G
+50001G90N020k0k800SH0eWY0G1U3W2u2m5m4WBYB0J400k80K0H0e0c0G1C1C000O4100Pl
+l100oDY100C600G5e0WA032606400kemtC00082010204260P400g8000H000O000q1K000G
+A300ochYmmP00ue300WX4_J0u04mAn6WI00uNA6Uxc4GVMJ2GLp40yFWA0066S101G00_300
+_3000W10GTW10wK30W0WA@70OC3004O0z310_o@K3GepI00dT_XU6ktsWtdh8txP000mON00
+uxLCoWzXaY810000H01WlnVuCo4Y__Xm_DuORF080000mi96S6ECdXSRPOtyA6_rWQgDOUk4
+000HCDU23VZnkv9ixs6hgp0mP1adrhOcS3_9t302G0BcdmHxU0800CUB923Nb0xJu5U9oJcX
+buzefT68000iol1htQ020012nW0jORm6r6e0088_R300005qC3Zj@0040WRwD00G9Mx@9008
+20W10Grx6ySU244800G1001O0u@m4kJs00001reb0002001000001kcs00W0X20W0000G0bG
+418Y00020W6cDG400e028WlZJ0080GZyCSbF3PGy0OQ7Wmvbea_40W44yiN257R02G2H2GY0
+00000W0W00009CS30IW0aeF30e41gGo002100W00mW01_1l180818W00G000uQ13G000ypC3
+ZNp001000001txO0000GQ100l@p00W0XCxCu@V3W2701006008440000GW8004m0GeI80ZW0
+8QD3000006000000u_S6W021000GGTt600000E4GW00CG00000I02MwoWs@Dm000G0z9anD3
+xcX100lwjfJ0006GVv6KXc45yB100G00080HBRGs36i@V2001400200H000Y02utF94@V2vw
+Qme@j0KT08sU3004GSnk13oQ00040KQ00DCYH1@6aCk15x@0080abjJ0810mEv9O0020010G
+oAd43t3m200s@d100600400000WO0020G0100GCZ1rhePO30260CP73zVd00060G0W8zlR00
+0110200480WWGW4rF59ljB100qdaaPOq2300030020OpV3Amx14G00W000IfqWIoPOMV3Ipt
+0G01Gtcd00003000800500102Ea59poN1OU1Wh@D00K0mE_600040X000A0WWniCOpU90028
+qNF3f0QmKy9000X00G1e002G00G0Y9G00W0180GG410G0XG120880fxbGsgg000WK3000100
+02001214000GH00004G24459X10021GO000WM4_Qr30G008W0010W000W00GO4WBHC8ZT6W4
+G821W0KW841C04004H4W0G008011b0H053ma00004G40Nm2300HfqzJ004000004a60000G0
+00eQ8YGb0m0000G8Wo@P014GGQa60004QPV348208G00uX93wetWYoP000O00000AGe8W00G
+EFqWjQd1Gn2GxNF0000000o00o04Ae401zd000GX8uD0G0amnhC008020A1mFRCyhV21RQ00
+C0000000GWm_LNYKALX300nriI0Y021G00mPxCipg1FkRG1@900H00WG0oBvLiql10085W00
+0b_l14440wZQ60000004jwrL200W2m14000W40300W0000082WVOC8pV3ABE10G00040OUyb
+10005d_dGAz9KNl1e000chDXSYX18g2G1mI00e0G000001IWSbV0100000GYgXD08000204X
+1@JukJ3wFt00010W000_8s00K1200W4070000q5vqZPsKt0L100FtB1QB0000Q3x2p00I0A8
+0000K40_yt000300000x_p0h000VpR0240WHwJusV6Mas008gg3FR30W7J@700000000@p00
+00mt00000000yGu08Uu10000S00uvv40GK1ySh1Ef00un@cXg008_C3Qms000G73MpmHt60m
+0W00100Ga100q40003000N01000KI00G4rm0gH1O9Q3080O000G0W10001000q600GH00060
+1000bCG00000avgC020004020414HG0GWg8F100WA00080KP00a10000000O40mZF00G6c1K
+18G1200W002L1W00000060000W0aDpC0008v500qyl1YAU00000Au000000Wz204000pusP0
+00LLzKg1nFl1tV7WofbOExD0040Keh1j7_W000Ynzh00Gcu4@9SaL2NZJIuHIai83XlpGzx6
+020W04028000YPAD84_42ytWxmPeAU90os0y@s3TodmhyIKDl40020IyjYKrVuJi46_EX0qO
+uSSF0000B600u@S30010iQa1XzroYnX00808sV3008Gifl104700002yN73DhRmrI9Sk@300
+4IV9Nbo_P002GGV@9050089G6kQs0020040A0J7tWqMD0K00000820000011awSrW@@PWW00
+mezISFk10990VZt00A2W000400WWiBV20004YfsWUyIu5S3szaX7kI042000028W0300A000
+g000W0W0800W0040020e02K00880sLe1loPmrB90G00va@7W20W2000G002uuu642k1W2002
+7n000WW0800100001001008A10H4WW0040010G000180000040408W00GZqR0020W3lDG000
+20020e02008W0wcs0400CG400G0m000086e004000Ga240040000mW00800Y2000000120G0
+0000C00z@V2@LP0000200C0000202G000W1eQB300WkULl1000Y0O00O000uKN300400801K
+0100400020a0joO000CWDuCG010Glq60006G002080000010800W040GqUl10C000040Shl1
+W20000G00700Oz@40320zvF6nNN1Ok1YmVC04000W00001101qRWW20G100100106nF10002
+zCZ10e0G0G008G0002844TI2G000Z_tWPwJ040W004GcNrD8Mz40010qLl10W04sGcXVNJ00
+00gQ00W2KmO_aA_@dXkjJukT3gnt000GGGIm1a800SQl1WW800000000o0G1W100WO000080
+0W0X42OC00u@V30480yJl100G00008KTe1Vso00Ynr@@h00G080W8YTdn00020012WCzDuqF
+3020008002001800n00000002GW20001090YG0000A08Y0800800008q5T2VPpmu_6C_P2LQ
+B1Gk5W9tb008200410041W0004tkF108005@Rm7t6KzU2010000400W082a400W00040C000
+00040eynE3W0080020008W02000IGqG0820fC@0CG000100G200_id18002G004000Wm900e
+RU90I00Shl1000C@mPZyKP0008001002W00K100CY0Q03L2WG8012G4404182004040Y0000
+022D34Ga8GK248Y15QUA10G000041H000Y048eTJ3sNn040W0JTR00WwZngh000W80W82H00
+0mO40ITzXE8D0GG0000102K000OO0Yxt0KG8C0WG200DGW1CW08W828000Y22G0G08000K0H
+GX0Y8IX0b2G120009WY008G068mu@V300042800010040404W080TyRG_d6G0008LU30Um0i
+sl400P4018401H0ems7UKpWQEP0400000G00GC50W0G021208W8OJ63eW20yjV2004W0GC00
+I0K8oR608G0qzS2DnmGQC60H00e4z40000vF00urV90900840087S3A2F10W02G08b00008X
+4Kudr4O248G9W004082202G0W40000be0200K00eJT6001000041W00008400000xpRmsw9i
+tb1xYPmc@6W00COqB600CkS5aAAA00G01YKDG2000200201G0801A46082G40100WG008161
+Ym2aEXJe28105O00f@d038W000W0G0000021I080Oi63w7E10WW4xtRm5F6Kyl10O0Ed_t0m
+9107qM1000001247BQmMU6m2003m004000100m02000m0450AW100000EW008000YW008X00
+00001G00O0S6000G0800000081K0020881W00Y00e00000e02Wqwb8l@7wvc1000SY000cF6
+Z3eJuHu4sWn0000G000G88W5Kzj152O0WGW082W40004Gu30014Q000008a00100GW000WW8
+4A40000D0Gnv600W0100GGVR9y@l1W101gmpW3dD00200000E00000K4000Gujml40002900
+001208yD6G0z20G00d9010W100W8008G2002Ic0k2010al2W0002G08000uG01W0uL800wgB
+0_FO4000uaJW000002808xQ3q@@0mVcLtwuxjC308400Yx@p0v1iQ1GLr2G@u@DtWzqD0GP7
+00hE000000SD0Qu730H00000mcIjYfhD8yw40080030_VqN3ykC000C000O0A0W0Kom40200
+014008400WW000T000O0O8e2m000W15vD300040KH00G000041mp76qxc1820WG400000WCl
+y46_d1o000W000W18002038yD3000br9W1060918GC1a100m40mF5600C040K1emm0G110uE
+200G60L820eY@0G02uWZa@D000mj0OWV0OggKu@zH400m0000G00G_W98600OkVF00OfMxl4
+00WW5Gc920020m00m0ta000_d@00Ghz647F6vMdGBrI4Es6paR0e53Wbx3vX53o@@110017q
+MH6u9q2k1TWxHO@LSne11ao0_00WkvguRDLQ1tZ@jdvfu700m0q2k7V@lHLSv4fW7XxB1Wu2
+WmsVOP_J6UFXFxDOEU62kFXKxP0e00GizC08000080Gqz6icY1t5@G8_600010000hB10WEv
+DO3U600804@U2DG@000WW41O00G1GExL011002120a00qPxCu_J3W0200X0W0A0WG9@6ada1
+Fza01000e000FRRG7@9G00000G7Pg@6G402elO3Ipn0002009002YtWTwD000W000400400G
+00G2zF10080000Wo5mWc@De403s9p0Y0GW0042g@t02W100001G00200G0euI3000124G0u@
+V34040080G8T@4W0004Gj1@FR00O70008000W0101u4tl1004800001200yzV3s8o0n0000G
+00g9t04082JvP00000W00C0W00sPsWxyDOC@4UBtWcPCOoT3sBm00810fAoGJuCiKS21fy0L
+00Wj_h0010GCiIikV5vXz00808000G28000G0H00400100GO56aSl1bSRmIpdaul100Qph_7
+ZAoPelVLost0090WxypmPz6quT2NwpGMdL4Zl1HEaWmF5W@@D000Xue@60800000114X4086
+80v@VI0_FW008egT3g0m04019R@dG_y6iiV25UmG8xRuE00ub@400H0W80GuHE6g9FXcAteq
+uA000O01G0uR2300028000e5g76ON500VAns@WG00000000W80000Gm800uvQ66LW4000H4G
+0W009000140008040G8G0084Ga00G80SBW10012W004SNh1VFWH9S9y@l10Z50A@t00WX800
+0H080092080000W8G00000100WOU9oWGWh0400Gtz6a3z302090WGa0H042H0G810W0208YF
+@d000WanXV8vyDUWt0000yO700M@d14X80418013YY060KLee2GexaimE3haa000e40000K2
+00MbnWjkJ8ox4e0000W00emR6YIg2000000K_QsbXqlDm2000008420W2l@R0810W3UV8AeD
+s5D100e200020W2GqSE30WG0wodX5On00X0Gh_CasL2xwR000G000GWR@R000GanXmOq@DG0
+004pV280W1G0C0W008O4U60026TFy3JTRmAnFyYQ2000usvFXkeJ01A02m09WNBC8py4IOG2
+0022nC8nJR9e00Y00000009mwlC89YGU@T300@ORK_00104020441H000W00O008bU3wNcX7
+ehegS6IGX10GF00200P2000080G600m@@60Y00000c0210W25a8Bk7000022000uE0G9SIW0
+2b00820200000040080010000GX8mV6I1GYt4JW8@70Sv70G97s0000060G8_00Kr1000000
+040g05000WdP20W3UtSI000Gq4d1000mj800CzV20GN0000K940KrI1eBL108@p20rzR3400
+08080K4G0W0Gbbxc13mb0G5020H000H400W80yYS21jMnS0900u58QU6W08o00010004300G
+J000604040O000O20upw70000@1R2fQpmL0C00WL700000C0WyrP0000aW0000006m000aT0
+0S9s9W970cxd10GL0x@R0m160@pDG000A6C1ZauJ8tVR_@7ZM3O8lk4aD00SqYA9_VosL6KP
+_3xo9n9Rd008AuUy7_9e50080llfIt1py@l1WxH06vnZyvc9I1CA8lYMo9nK00Gz2jyk_3rd
+NnRyCG000OFv76t3600MXFudGsTUyjo61E@msx6ail19CnmHxIyhl1HfPm2qFCbU200000W@
+0S4D60100MwF18800tJpml09C_l120106Zs00e02b_Rmz@900608bR3oc7ZmvC8oU9MrF100
+0aU500QUtW_KVuoV36mFXK2I8biA8002ybl10W00wZKYOMVef_42lSZxzP00WJrQZUiwT2tw
+KngU6KLT2VGjnZAHDDGQb68TI3@VKn@5Te8u12WCOXvgLOIAG8W300Zr2pxbdSbo@LnuNMoI
+00002S00Gdm2D6sFTBx100DZ@aF10d32003400W00b5n526200Gqqob02y01C682H4IF0HXM
+Y2515G92UeJ00WYpofoPC0Rb0qvXA0040Ga0WxF1000200G400W00070C0G0002aw340W@80
+GWI000r100GvTs0Y884I00Gv@I0000cf00m4rdWiOLSUQ6_JRcLa_F5g@3ob400JOZeG8008
+76WW00ZJ02tl2mu90@UzVlP@lxMZ000AS3000601uSEB1md4Z00000Oy4afF0C3000uJ0knB
+JW6F0WF0cdErfZnhu@U327aa1xV0000fZ00WH33vtJRMcsZFhPuPV3MztWaqb00GBNO_FyeE
+35AZnEz9imV27r@m@hm01000000uf@64vk4WfU06g7ca2guiqMkycXBR31000pJsC0000PB2
+Owv_180000G02IxaXUoPu6R30G00q@@39uRms_900010000K6@900O2AqV3Y3DXJrhW000Gx
+@600801008mjy9Cml1W1006qF10002800000400003GG802W0000808bnRmh_6004G8S@4QD
+NY5wh0Gx1mGgOiWl1000200200404108Ww4g6amk1080G008W00a11A800a0C0eYG0080000
+Y0041601000G0000DWWa020100001W1O7X44000yiW1fpZn9y90e00e@V3000GP7000W00G6
+@6a_V2t_R0040m@@J0010820H000000Y00G0040000W0G008W00W08W40410W0IW1200100G
+xfR4@F3t@dGF@6Sul1jZdme@F00O2QH@G4002W001040009000001039p0G0WG0G00W02G2k
+t00008TgNH@zC05000004W0G0WKwVucV30002i1X1r@p0Wh1Wwlz000I0310e5xV0Y001004
+90W002000cVN20080zs_W0000G800XmR0G00000200240EGy400GuU600Mz7300W8TYdGl@6
+0G008MU3G000000GW800m3_600009hV3_8XaB6O8Jy4G0000102eR_A00qtFnD9001aUnF1C
+8000008m000qql1000BG46000K00040mDmC0100uKz7MpFXebb0180m8mO00000Gi2mOuXqg
+F3000882000G0020f0000I400104000E0OW@sDeYv40W02CBy3WW00W004W002WG00004HWh
+ZVW0000060Wv@DG010mpoC000WdI00Gs3UO0IO02WCW001081000100000Y000014a009Y10
+mG40G204m0HC0002goO9UVF100G400W00000kpl10H8G00856NV208000m00G00400080000
+11000RM@000fcK_t000W8000G0010002W8000iYl1O4H000Zg030G202m004WG4H0C004000
+X4ztY10G0000Y000W0ww@D0GG0y8O20008NiF10e4000081W2ASx@30i20s_V302900G9H10
+0000YL20G000008A004FCR00080024003I00WI000000H0eG1zCW020000aLF5Oa@F30G421
+004Cxi180000W80ik@3000eeE00KnF6000J0000W08000000G80080000W0000W900000008
+12H0040000000pqy1YW02000W0G20ygw901000009m0O00H0000W8a@@D000GKk@900ucwtQ
+F000O8W00004WGjz600W10C000A07G801W0YX080000250G422Gxt6000402000Ge0000020
+10000Y0Kf@3XZRGi_CCpk100207zV3mXE0Xbw1002410W80508tUd108008W0402b00e0010
+0421O000W008000W08000y001008HG4W0oVOv03A27300N00000j2X10000G300mkwFW700e
+fhD0000000ep2000YVX020800o40YVt00GC00000O2G4009GmA10mF96W010000GWmNKLgce
+gK5S000uXF@@30028000zJ400Wz@70_10W@@J000GiY30GV600V_N10Wohd@t00o300000OW
+P0b7Pm@@60Cm000tZFC10RP70yG0000O00uF0000000001a99C005m40AW903000c806v@10
+W002010t@@18000m08Y00Oc10041000H0K604H0O@@40nt0S@@60WB00WAWQ800IR00W1000
+G000G040e8m4WA03100L400800006000k080O0qX00e30Gn@R0W060Y0000y@l@@n05q700m
+F000G0000m000KWU00OI@4W500CQP80mJl4Wy0y@l10WPs1008Xgg001U0041000G40vbrIN
+JLCAl7006L0000Sbb1tpRZ800WGdLPkV30000Ewl100G80000201104G0GD09Kql4Wa8024G
+Yz@D040GGT0IaSz30041c_t00200000032kY4_P8fW4YvtWdUD0200KkmR000Wrw00GI1Lyd
+y9WO40k@F7000X00000800UAS2D8N100e_BYt0200Gfp6CBO8RqO08W0WDePOpuAAE_10002
+Fznm7UL0KB1usmA000KC0h100104040qzd1XmQmaq6SBe1Wg0000002004_753ogEXupD020
+200G0400849ZR0001WEqP8US3000WShe7000Wz700iti4RdO000W0C000005000808G40521
+02G000A00004n000W00G0A0e000G0040088020aWK000G00041WqCx600010W004W0004080
+Xtc0800YgeP81N34040SzX700IKlmk20014e0000G15Sbj100068080G02WOOt4040000204
+W0080W00020WWI00HW041000X022GTtF0000AJUFg1qW@@t0u10GNtU004e020080010GG00
+04000m0000H820000102010400U00000W0G04OKI3A1qWqRC0000H_HFq8C3vHmGduXO900u
+@@G000a000000G40I0G00040rhPGGw9SIE300048008W040u2oAMLt00440fOt20YFaCBtuM
+C3w6t004000820000G4Gd1H6Q000W000G008400000G000iXV604004Dg7fRcmjbX0Mj1ewq
+D009000001W00mPL600003900000YI00102W00cYF100014408000200800040400000C30J
+gZHwbm000W4s00GNxU03040010000GoaMP0004000400005lIbGJ96010007H8W10243140l
+ql10G0XOGPOfBC_@t000JPV1Y12000000400010X01802HeuN30oe000002ZW00W4000G000
+0Z0UVp0240002010G000W0020W01190G20004Q40ISJ20480Y000QrtWS2yO@@40Bk0Saz6m
+W1000W80H0W0024WX10Oi204006W02WW00H00Ia04080000C000H004000G0800WWGk66800
+09CVCgmD10e000000dQBX4NyGc00G@hL0100WI00040G4A000XZR00WW80e404100YXpW70E
+00000500mK0I00010a01WyEne9t4YzrWXFnuz@70rY0CKR52800001Y001K000000O000040
+08G0FQrWpsCO6H6c2c1400W010466kYsHhG400G2SCatV5k600_@N2K00GnWPGC56000e0K0
+020O0YrTC00002Hi0aoUJ000K04001000W040WG100ic49G842_@N500Sw3twn2Y600G8001
+8280YWBXD00180000OW000Thc0004008K401G0000m00042e00m9zLCHi108000009q0W1@@
+J2e97WLdb00qA0010qfJC00000250000010A00010hCli10002O2X00W68W002G5M900Y400
+000JuA0V@V0u@V0_@79000qw000_@F4004O00000m@tBW@c3000Aeo084G00@@RW@V0W@@J0
+008cn306C100G000W1G000038rqA0000KJZ13xRG2SC4_V500cK@@N200GO000C00000G0W0
+00W1Ga1006009mP00C3G0W1W2J7GD00WQ000m0000C00000A0W000G483KlS22mX@1000m@_
+1u@V900h0000ut@1mQzq900YuEwVF0BM0y@@6_lU0000080082H00900uBJ40Cq1000Wkv@@
+l100WxZCp0U30000000H41y@FL000OOD00SQD9vlT200IWQZPudL3s6EX5nPOcfGkHF100zF
+jpHICrCCAx30000WG00q7k11YdGItCySB3LQII5uI02U08qzDgWvaa@EPBGR000mhS00e_8F
+QqzXhlPeRT3wts040002004AOdXKvP8OURU@t000dtxpNH4_60W20OdE6020W00080000400
+W000010W00400210GW0YJ0000G82G40VWR04G000e042000UlAX98PeOJ3EqcXpxPuz_7Umt
+00PFW@uZnN@98020080g001888000G1W000280KgG080008010802eG1101H080K00008041
+G0G12014000C0G000000I00Ig2I01008fYAkytWbpV000100008o220LzBnSz6040O8_z4G4
+YW00X50000028004108O400800400040G0AC00184G00820W800000W68D03oJWX1phOqCL0
+0OQ4iV800W0UOs0000G0G200000G080X0G00002G80050102X17000e0W02008GW00020004
+2_@tW80CO57X0X30avV8W00G040W0000Wm00100008014jwQ00W0060009wRW80140004rHR
+mATdav@900W8ZF2Z2@JOpV3040WW02100002G0G4000004H0020G00C00W0000001C2C00G4
+J00000W0GCOpAcha700Q41a7oYz6004WeBM3000201E0W0G00400001I020100040m00Y000
+Y0082YP_D00GWGyHB1s41OXrJ6wtW0hV000040G0fBsD000I00G0G4000W000MR_XmU_1N00
+mZxU0400000208W8G00I0009S40G00W0K00XW00AI0004Z8Xe0G0H001L1W4q83I911u0Y88
+000G0100080000AmYK5108bBsdG088200G800WK44W2400080GbW05G0X0G0200229000021
+8WG4H1W8W804G06YGW030azZY28o3mqrU00W000800Y2G10W0H4X0be0000E02W240000811
+e4100100YIA1K85200e400aH0009KI00AQo9000qtZPGo_RCUV2000e0610G1250K800b009
+000080G0K40GW02Y00O000800o0201vdmrmvS_l400qSA5A44G40004400W00440WG002001
+040000GA0H400040W0020825K02M02440XW0001G000W80GhZpSz@6Wz30MDtZMWJG202W00
+208m0W000010G9001000K00Ia0020804a2000240842X48K0810WubF9YBL0F00q8j70208K
+0100q48s0020WU10008000a000n3000GmBqP1WX0Gl000000200G0Ww0000a_p5R6uV0000K
+LrES510G@AwQF000@Mwl1_700i@@0O@@1mLJ0GUs6020aNc1W8y30Oghv@WGymXl@Z100800
+86mCu6aInI0OR0MsV30W10003WL00WQ400G8000C000g080m0mmm5WX00G5300C400mQ000L
+05050wGc1uI00WX100000TtF0vZuKOFR000AZk00GZsCKYl1h_R0WoEWA@J0y@30000100Wt
+_F02oXBA00PSDXT2208WbhJ8ZLI6sFX@kDuu@46GVZaSn0OS3mSw9qAh13lx1402WlEb0000
+OxfRytj1954Is@RuR008z_4I97Z8jV8KR9wXNY3fcvOUC00WhdF@9zfR02G0Y_pseOT30400
+0X0Gu8SCQMtWeyQ1y_2GXx9SNk4rUQmkx6i0l1401X8W0W0O100H20000G0284W800iWG000
+00051W0m@@60W0Yum@40820iPF67xV2000Sc000X6w10W0000800401m0I110400M00KZz60
+G4H20020I20000GWG0Gcf00210W24g8A100204e025@R00W0eQ5Cu@@4ciZXiPF10W8u3sU0
+1000m00000040G018W00000CX8000GGG1000801008Y0iG11080MK00ig0e6400I088140c2
+BaK4X1CQ3Gs3Ry@l1000X0000014W0W0802040KG000200G214WG0000200000cG@D00010G
+e0W@yCe8rb000GnL008lIFEdF11000WG8000020000100100020c100W0G008080100m408m
+W_60830uYN3gS5904Wa7@lHOu9000G01P2080W000G2W0G8cRs0C000880W00W0G2100a00a
+000200008401000W02400W000K00WoPBAjNC6EN2008IblP02G012010I440cRq08W0GW001
+G4000040uvV304001802O4tb8E00CWA904004000G04o4G0041n4G404081001020Myl1W00
+Y00401002G40G00700020WR1QmSl5100qwgqG40000184H0CX8b1P25m474eYXGC50Y1820G
+041XOH214004YH004YK104X04GWe0G410WH0W1X0W8000Y00eNuY07O0in@6G030Eqt08000
+0K0040803GGG680Y0a61AA8570Ye00GGGGaH3488Y8H28K0W20G08H10WW0048O2SIIIL5K1
+00Jux1501040Wa8G12140804bKYiI9580G9418G0002f40X1142W2A9A000000a908G00G8A
+0200W020Giu6iqSH00ASowV300GH00004W84isl18C00H01004G0204e0802000010GW0K4C
+0W0800H00Gk_60H0aedV3MNR9m370@wv1000000500000i0400W83281000018GG41W10005
+0104H0000G888080G40000W0088G0404000000WXfhH2000EM10W4o3v7V3GG0mG04008Ia0
+YX08248041H00G0010000WGG08010000h0040W8G0Ktj1NSl400Zzbq3104600002DGD1013
+sz2G0000808000w3G000uBeD0000YDqHl102084000Wq40OIwe0Gt0qq_940000I000P005x
+00844FS10Or20Wm50mgB0uPcu000C37aw@D00o000W0000187CJIEydmS00OSUF820W00021
+00K200mP0006060Z1wGg0Kn00Gb1002300OC0003010NWI4L0M100eG00016mgs50@nCm000
+0qOVzY004Y6eG8qOt0eA00ugg20ei7W@7mA0hEX2aTWaT041C00Lu10Cr3e008kpK4mgnkV@
+B0hgI0W2GtsIKgmFWt78AwF1000400W0010000028BRC010000808y_7W800T8l1ryRm_sFC
+xi1W080w0@XziCuE@4g9dXX@J00008000Or300JAPGYu900009TV3gcb104W0TuQmRtC0400
+00G0HyR94rZ1r_N1900eUqb0G000010eCnz00G000W4O0100820004000G000G0001020008
+G4000Mwy10400000018G00001geR3_@t000400Y80IA810100dgBngxICzk4LRk18r0Wjm3v
+ozDsG7ZAx3fiT3000Iqd_3pYB1000I4100RKamQz9Kck400010402000W8tO3W4WG1800W0W
+0100282100m00XC500010A04I4GlT602400000208400204hSb0010aJyDuym4_nt00400pl
+BHWz900euPAV900024Sl11rR0200408I00002W010G12G028304G011m00000800X008G00W
+8Y0X0208G0I8684Ejt00W00400000W00500vJ@4000WSsV25wdG7@6W0008@D9_zF1Wy30d@
+dGE@90W00yl_46ko08A008052G0008G00080001GGGW000000W080m0G00W0521W1a08K8G6
+GG2G010T1@39PRGm@Ci7f1zSmmYyR0000tX00mCiF48Q2tzB106005AWW0G00840Q0800W80
+W2000821480012m20000CW0006mhmHzId1zNw1080akzDG2GGW00W000HG00W000W10e1000
+G00800n8cDOVV30820aW3Ix@dWmU0WjUEvgH30004H800G20W10110W000088W6mr040X0Ln
+PmU7I43dGM300c4DalzJ0020n6_6G0000Y822H88005028I00W02XO800G00a840WWnUT200
+000Wjreh3fUT300201I0048000K008000Gd9c0040WtpC01H0mY16CYH21sX4O74WH_t0041
+008200010020002W410Yg194400854081E0X0e8Y8300gWG8g8C1GG10oW0q80Y0H03G240O
+ZRd000G1J00ehVF00041004000G002a400000bAT0W0ZA42W0gA4841c78e4X04XWH80b0K4
+0018K00W800800W005MsV900sWLhs250000W000I101W0000WK2W7Z040K9A1040000e4W0G
+20a20A1mijOikVEWgJ0sKy4AC00WA000004f80W00oeW0000DG04MeeYW014Gam0000G08K0
+00W00prp0Y00Whz52000OIgUyh43FvmW2u0600802I004200002H1y122Y0004eGHC000kXF
+A00vTZzVIJv9G0810080a08008020GiK00082I010002004G40100W00G0K0000Y40en_b02
+J0Cdv90e00000900000240000WO10000u5w50080mN000G2080000GdB800230AXWzMI800m
+S@UWG00002IW1211362X6C189K84I84KdW4C8WoE00NT00bT00iw020003H00080WJT600DJ
+d000Hcaz7R@t408008W00G0O0W0m0G1e8e6nCG920WnC00WP000Z100c160u2KnW1e310mEQ
+vQ6GLt0KjVH00K0Ax@4O600K1000000JT000x0Mj0W8U10Qy20Ks50mg32400WL@F@@E0_@F
+0_700_5FX8f9fWS32BP3000u0600Q@bakgvP1T3MxE10080040010W0aIk19oR001000004T
+opmLs900u7kmaYY@t000GG40007EMYksDupU9oHtZNqJenV32x@dGsJuFnG2wBXa_O8jF3Qv
+gY0xD8CSLcUHbPiI8ty7Emt00200vodmn2L4YE30G0000Ouax9908404001aJ@3200000G0G
+0W2OhV3_6t000X0XiZHE@6004Y8CS600800W00G0X0GYxR0Ud1OD@7Mm@XXeC0G0000GW0C9
+0280900000000b002024G68WW00zvR0040028G0208WUutWNNDeNn4_@d14GC0XxRGW@6W20
+001081A00W@@J8D060004000WFkM9_uFXuyJ002050000440ZGW04G800000008e004WG022
+1W4W00UWt0X0G0GW0108WWCpy6L4mGr_g00ueQS4I0G00azW4200WEvsWwzDeq33U_VcUD31
+8j3GStg4jl1DxRmOX6auS2NRQ0000YyeQfRV9s_L200Ge2600QIl500S4404Y0040H4G0OL@
+4Q@t000W04080MKm9000000gPgOe5004G200W2@t08QW09@p000YWerMg_V606c0iD@90180
+1G00ipg1FRRmKh6C36IpSY1000Ox100LJT28020004840aW6RtWGVV0000I3064KZDxqcmq@
+I00epOw0L800HW000Y40A2GY0HuGmCGj0M6jsWd7C0100028X0GH00@@t2W8I00800DhQmQ4
+CyiA3WnJ0Ax@aWwDO_M300808100OkS300001WG0OKr4sCN50e00pXQ0G0WWK0O0040qyjC0
+00WEeOL0W000208exD34004Ksz3tMFJZlC00100880mFsL00OuDi@M0a00m000010901m0WR
+sJ0000620040200040Gw2tW@@Ffix4EGtWP_m08k3mM@jW40WexH32qVZrr9100030000W20
+G@@R00W11000Wf0ymTo9a3l4nkNHg06SLS200W8000481808Q06031K00GJuoQR4H00izF60
+0_u7x@40e10WtT00C0GW8t1000W8k300000YR@R000O43000000T500uS4kA8200W00000W1
+0200mVo6a2G21cz0uR6WK1Q12030C040g0O000KH00044DG2000C04J00q10OgGgOF00KsVB
+00qw100g3va30GP7GORFSIHB000WsPEXF_z00W3oFAgKK_C0G00AWpWl_DeDkA_u_XSeb0iY
+1GbEvKXD3rLR0001WqwVumUIwXp3000ac600QJAdcQ3v0V3IVpWxmb8gKCIs_100TEp4DpTx
+9CwE3G000000GSaT231YnLu9q1V20420ggP30100W_10kCVZRyJ0014GhtC0W000014Ga_60
+4001G000W0000IW0npdGrvCCOk1FxZ1000ZOdJ8fT6wBC1000Wg400_@F10WG0JDY140010W
+e0WG00W04000500080000GWQ1IO6@404G80800e3_7gttWi2beLV30We0UVd1Pl@0G00WlqC
+00GbxWEF00G0O_Y70000000O02400I204e0000200K008W00G00100G4WWqrI008I0200mqh
+DeMDOQ9o3GC60ROjn3zCqpl11wdmM@CazW1xw@mprR40k10200MhF14001tyRmG@I0000Ii0
+0G3va000e00G0008800G10800A00G0W0Y0up8CA3tcYAn00XRpvOmSuV2PwbpJ_60040OyT6
+01000200ejzA0tf0ivkA002W0040SgW1W000U1RZph8vk_76G730008w200gRp6W000BtNnt
+wXq@h10000hutWrFC008H002MWd8g00mrPgWgG40019000X0G00G000081gYKYE_P0200mt_
+OSzl10G9067JYuKh0y70G0UgG00001W0020X40H28808080H0iYD6ZXZ18100A00000040W2
+0018350Af0025I0WWI000WW020H90000022502WxxP0000j810Ws_d9GVF400000H0u@V9Q1
+m0Y0000e80ozq040W88G4YK41Y004CIH0G000G440008G400G04b@V200yh@bzdwUL100000
+140000044000000W8402400004080000080Z0000000CuimAEIF70001t6lnxnR004Gu6M30
+008D0T2DpPmOxL000WAryJAzF1K400XAx1210Wjzm86P300XdWG00G34@3W108l000040212
+00W_38080@2OA0000Q2TVam@@600e3fHuSI69a@@L10G4t8nR0UC1ui@JW80CJV00mC0eA_1
+WAmZ070Wgm50p0yYH5RXRmUxOG6G610WC200O400Wa000T020O0ypm0Od10mF3WiuC00G0C0
+004Z000r_d0A10Wn7L100W0010102020400Mb5ZK5X9v@G00GxsYFL9MBHgrL000WeqGIsEr
+W__91W02mrt6SzF900W0lqE108G0R_wHnuC000W0000PItC0000bR00mwvC00G0y@V300WGC
+@l104203cm08840000004G0ikl1NfR00I0Wzlh00G0o@@98020OuTC02G0S1P5p@p000bnSn
+V8Qy408G0qbl101GWEPs0G0000108Y8tWQbI0300Gz@LG008epLR0400C5@3WOS0kGd40004
+5wbmanXaHl19p@mYO6yx7300100G400Y0G0100W0Y000000GW1WWG0000100m20mn260GW04
+000e91GWfiPuYS608004GH2jeP0410WNhD04G0GQ1C0G08420W0014A0800004G000W00402
+2002024WlnDumU3W00180000J40mBy600M00004000WG0180GW01o3tWRIVG00200Wtw8vDu
+6V6UotW@sJW000mjS60040002WGwy6CtF3008100000aWG000W4011002880020G0m20080e
+wR30WW04ch10W110005MQe100W0m100009002808G0G08W0000H40m00Khh1200W02000005
+0m000uO4WsnDu@V3800W4al18000040WqZU20H000Y00W0008033004G00010200mb@602C0
+051086b0G0389PSZHMuL0W0100100Y000148000000W00Dhl1W2006EF10004I400MxdXlvP
+0400Gs8F030000e0mooU0H008DyAUVmWBnme4O32@l200U2PVrIz16KeP20Gm0UOb12W09d4
+YnsvUKYV2Z@NXWK1Wgn91000028001020@@N10CY8000002440K02zIm9LJtY_00eMvFH002
+040IW_jn002W0004WbCDeIM3oUdX5V99_UC00i0a_jAG000QjsWflVePV38W0014010880mp
+xI00024008pm_X02408e@A0xa04i@3NtZ100W40Wa80080004HqjF30W008WoCJ00AG00A2G
+2Y74X8000H00G40ifu64000ExEXLDJ87UC000W98088s_7wLk200GW60m00008Y2000900mk
+_9y3U2000112Y1YG0000000e0GXthV008A200I9400WAH00G00800e08jR60W2000G0u7IC0
+0Ot20421W0e0W0110W00B_l100WW7kDeqT9e4HG1W400040mhV6Syl40004O000W0202040u
+vu9y@V2LWPmEyR0mi00000100W014002W828200Sx760880EbjYgmJ82J3G00m840089U3Yv
+E1K0008010cosWg3UOJ_G000G0V008Kk4G4G00000uz26YnFaQkCu@V3_edXR0C8pE9Yi4ZW
+Bt00GuSbTd0000w8SC0402y5532000QbAX@@D00qB1W10Sc0409yR00AWWY0UeJEF0_om46d
+10040G00010O0000Gwb@d000eX4030090Wx@D000P300aj68t81RR00006it900WkNwr0W30
+0L@d00gEWPeDWgC300w63u70eeF04NJC100Y8@@R000uC00Wc00040E000OYW0000GxRCq8d
+13Nk10W8mmuI0JWC200cecct00O000W0mehPmH000D1000060m000W1W100WBw@V340eZ200
+001a3mW@d008YDR_D01g04ulAWA0_DF0000lb@y@70Wgm300S7LX70GfFW2QbupUCwu@4000
+aq300co7ZTlJeZxAIV_XQhD0G20m@@60210e@A30040rUj1bHdmxlFqrV29IN1004000lcNZ
+dGCT94vl11rcGGmO0G0GunV3W0080000420WG3CCacl1@dR0G00YSlp1W000871Wv_n0800q
+vjRSeU200040G00a1l1G000@2d1000WRubmMy6aQ73v7RmPw9yvE60000z300Ssk11cbm8v9
+ClT2v_Zn919qfG2@@R003200G0079b0W0WebnJ82_725sWeub0000O3C900OATLU62c@14G0
+0Zpd006000WWW0002k2rWqvJ0W0000A0002010020m2WW020100a0mxw60GG0200GH1x6021
+0eEn40003CAE3G021UbdXVyPG00002000GiC02040gMpWdoDW0000040000G040000080020
+YOOV3ghp02800080H00080002W00Y00G40W40WRvQ00400A8a28000W1W000090002201480
+420W000820W011000W0Ie_60W108R@401020q00eV@42tFXRDC00040000Iz1005mQmN@602
+0GOwV30W0100280400Jjj6W00O004X01101840048200090002208000YW0Y6aD000080AW2
+WA840000YPxXsW2vS_7kdFX9YC00mED080W8wD8t13QiFavWU000G00K00G0W0200402280X
+00Qs@4G040ifgA002002H00000uGI3czd10cA095NHnsv00040W8000G104G10rPO0YW0WvF
+IetNC00010180000020m0W0zDeZy4000XuU008HRIU4s30W0008120000G00ou@V3EPrW_Uz
+uz_4000Kq8r600UyNjL80003L@RW084000020I0WE7s008000W04BON500W4xtN1up6WqMH2
+G400020G00458I44G08Y01020G00muUCS53600001040040008002040WQYD0Z00G6t9OB00
+ekV92JsWF@K1330004W028G42001G0000201W0020C8W08400W01411200100OIUCG0W0000
+8101808WG042000400ov@100hyvoNnjqjqZl1G0H40W02044100G00GK280W04FhQW4000A0
+00G0100WIW4n83jup0500W_kD00GG80K2Wt@V04X2G5vFq7h108000W2081000801ItxXKGW
+100G00WP0G904We41028G42080PcO0001WIOC011000GGWBvh00Y0G8_6Ctc1nU@0l10WVwb
+Ono40002WW00egeGKKH00024140arAe601000G1G00Yo08040NyRmu@64Nl1ruN1A0100W00
+0W1P010m01W0O_V6008ocaF6nyRGme6awl7000OG000001S02884e020022000Ga0240qGi1
+00800800aPF6JzR0G00W6ND0800q7wI06W0uCF9MUdXlHtePT6000800W0008000Wh0G00fM
+100000400W00Cb0040D1qA0W00K22KlYSWD004A0000040K80000i200COF3000Wb700qvE3
+P1O02b0ub_J8BE3ohqWVuz0z9W00Wy5P700WF0WfEG000WEAmVIaR@0000qpx10m5fC008fE
+@@400abEJEI00ei50GPB00IIa2m5040302060xCP0SH00WO000d100m0WKvUO7M601eZyrR2
+000T00000eo0O@@40PI0qcF3NYRGuu645f1000WpY3Z@@J000e80003WP600pC00GL11Uu1Y
+ggI500000eAWgE084V004vl700WzM@t0U30000W0m6x0aa73000eYuoWct@1Yu300002n70G
+oE002zFXDvPeZR3I3lYCgCe_V300O0000Geqw72@DX7rP8c_4EntWWRPOaLIgqtWYpI0002q
+su6S6_6002100W00m000WW0GTFF02000Wl0OXg9KbU204100000bfl10420YWF10030@WRmB
+lCKDc4jnB10a020000RARmQlOa7G50040000Ww500OgtAo4bXAiJ0K0mK_@g0400OEA301G0
+y3@6000100021000000I00W0000W00100AME10020004A0100SYf1tzd020CWNfJ8GT3odNY
+1lJORV6kRq00W0Y01G000W8O00801W000040000Y0008080030004200n3iC0GW0uh130000
+4b33dfPma@60U41WI00Gh@60G000500010G0000WLpb00108W00100000GW400CW0W02mXz6
+aVW10000W8001m01O3R38A1q000W0C02GS06G4004G0218004801WG008000020206032040
+2WFyD0W00X0000e2G001G0020000400282a009ekjD000020008000806000WWW00024400n
+A46020000K000006W08000a06Et0000GXXR080C0G02021000801_4h100480G810006404G
+00406000YW10800G021C240a0AG0260081Y14208400GG0G0820E0GWf_J000G0004G0G04T
+lP000G001W00WG001G00W808oS300CY30Y0G8020001000C10WA0AAt08J00008804G00011
+0GWWmBR6W0200080CG4000201000WG4G0G20000100805G24000W9WG0m4GO0128WWmfU6W0
+048_m7000GqGk1ziR000L0m0400G40Urt008010002AAnWzxD8kV30lw0izk1hmRGbtCaPd1
+RXp0024202000060AZtW5zD04004020G40000004m001048C0000W8000000G0011Mgq000G
+40010dVt00m00XpRmVb9y@l10802@@t08Y00d0aG_n6eP00esxJsvFXnxD00008080004002
+000W800aoh12G00G0W0002303080008GY800TlP0W00008200800wTn08201v@d00X0WEdD0
+H0C0000Y5@D00O040000C00001000G4ssBk4r2N100G000W82002oVN220W8vTQ00HW0W000
+0C00000G00WWeO63G000G0108cl46JtWupV002020G00000G0001Qst08404t@d0uy3WrsPO
+UpMQvF140G0n2O01100020008G00003W02G8rV38202000f00OGmYu60001G000GxeF0W0WO
+IW4_xF100200G00000m2J00e7TIoONY08Duwx4004PIGW04G0000KM08X8H0I0M04G1W520G
+X0820K100h20O100eX000X000104OWyC05W0000400W80AIa0G004W1882X0110340W0000H
+00010000yUyL@3K000E8k200m8000W00014Sl13oR0200000014000811200cP6eImWGb840
+0000A05W001W0H0G8W0050000W010410LC2001080004400G40We0Dtd04100H00600004O0
+W00W1eVV308X000068ZV30xG0WO00OxV6000GLaV500W00W08CvF3e2006zt02C3A00WI100
+488O00A0004G04Ae484G00aWI4SXj10011W00AH9o400418b80001000100AXp040bK0805K
+6000G0mWI0200a20Ae01W2000W2c1000020e4000MX30421GGeWIWG890G2AHYG00H00WI@y
+p0W00WztD080020KI1W05KW800G00O0I80WI000i000014P4I000WI0242WG2Yh400G05500
+880G0204Y0W0uKS300P51428G0Wa008WW3@JeGN300800400W20G000W0QG400H00M_F10GO
+H0W0000mZ1040W60002206WA2H88800W1cDtU200100004G400u5N3GaH0W00200004I1080
+0000202e0010008011W1CX2040X008C00511iRk10H20K0H0i5k1048800G00G2X0O10mK3F
+0G08200003oW02405W0DYW8040AW0r480080WG000a0y20G4000YI100000404G54000W4W1
+80Ge0IGup_A00K000004WW0200W003800100Qet080402m000m9W0W0Gm00103204H008408
+2010000a000010000G80W502001W00000G400WOsv9000400GWrii6040A40040G200080W0
+101G4400004005010002r300pVpmp@IiR@34000ogrW1uJ00801800001002148a08GYsRW6
+0qs0000O0G80000Q91200G2eN1G00sVH00010804000j00008514A00100400000100W00Wu
+0008Cz22J0001G3ZjR010W8cG88Gw50008cXs3040Ws0W00G0G00420wT01W0zN08wS600C0
+0000504N20008l00000021Y000e28088j2u00000e8b@R000WU10000ybi50Y820GP7GmpF0
+yWT0MT00m300Qs100c100004G150000W5URmx@6000_70000LnCJB0W@MKrgi80@RHcP6L0y
+F0y7UKLrY00001F000A50OXyS000azik183Or1Ori3ei3W@l70GN300uD00G7G1WrWQ4C0rO
+00e0000f100S600m5W0WBmF30WgMiR6a9l10X0C000k1KH00uc1W24105e80A03GL06WI4@0
+r000kZ0W0000iE_C00060008070O0YHu2Sd10uE300oFbX4nD00082000200WE01000_PS10
+000ud1m4g6004020634YC3Cc10W230006000W0000W1000AR00Or2W2A000PB0W@N0000W00
+00bD0mm30A@@10mCH0F0AWP0AWg04Wy100L1300G0dN@d00WFgHzF10n6G_tO00005x00060
+AR10YT2m50YzN20W0WzWhom@I0O51uaV92znWS_tuUz4k47Z8pPe_@76@tWfpJuYS36w6300
+G0000eq6G0qCz3xZ6oawL4Hl1JMBHmwFimU2TTRGwma00GmuhT90C0WivV8LywnApF0010Pf
+vGkz5320000AR8MV7Zzdte5wAENt00200000GW008080W00120G0808400vjRW0800G402ny
+Q080A0080W000G080m02004029020040G8000010010I00a0WW08e0G10201000O3VqWhnPO
+9_4s0q02G08Y00000002880G100010000W400WG0AKF100010101Ukt00600PqO090G400W8
+W04008G00G10400G040822B26010001GJG00008000G00GWG4W6004800WY4W401044011K0
+1O802088WWG0X94OEV300yO128001W00G00G0W22200G0G00020WGW0030040001G0900000
+008G010200010G02040130@pn0020W0KG400Y222000240C0H4022iYW020028G024000010
+0HCG002824W02Bt00KG1WGq8401012X20000200WGG00WG6220AX102WA2140008WA023W4G
+G211G0WKO0WoX0040004000WEUG0208qba1W0020040000W1001200500100W13880140440
+40G00C02G0C000G88G4881004a001CW0248800404GG084W1010H0008W0eEuD00eWW010Wy
+wD02WWmmV604G3OsV340000G03evU30220000004G0X0G0ee8C0000022800840W002W1000
+0004O00000020080RLPmvz6qrk1xFy0002W22CuRU6M6m00000024000JWG940Oc_4002800
+4Hyon4Qut00c10jsR0008Yd_D020000420008000O06lt014000O03W1024Hf100KyE4t000
+G2JyRGrcCyXl40028004008220000WW000080G0G0G0002aqa100W0400G02000800280800
+A08JwdW00GWpqJOZV3EqB122004G024Y0000c0G4014WCX00WO40000G00Y1001H000Wm2X0
+G0200070G4400400OhV3400021800041Gdz60030000200492001G0W00Q6q08020vCO0a00
+WQrJ01000200WdrDOj13U@t0G40G00G1kUB10000v9Qm@@60011000004X000010I094008G
+0W000010020004800000OC500G00G402G400W002GW0010JY33040008W000H0K8W100W140
+G00000I00GIVw9KfW10G004H2GKXk108W0CG04800W1X01q7Q6qzV2vgpmRzC008008W128G
+001800400000W_01000H84mny90010OsF34400W000eSG32Sp00W002000g7t0W040BqPmCc
+6Ksl10G00040180000804Y100G0G1804m04G0080aK08I1YWG9O0000e200sqt00420G4000
+002Y40W00020S4000Xe822G058CqW2Y8c02X204W2X82082000sr2G5MGqeiK04400081080
+040100G001X20YY0GaXa2I0001000Y441eo8101GYK41808X00H225150G0GOG600102W800
+W020404G0A01WGC02W0WG8K4m221g040004K0Wa0040mW0YG0000O4Grt6020m01000G1000
+W0208WIGG800nG4a0101MG20CWG8280iWWWb01K8G0C50000G270W040008W23H0a100W800
+eWLlD8z13g_t0C000000IG8Y000000p01000W0a00W40WW00080e0050092400GX0020GW2A
+pt08IW2K0004100G100480000K0000WK8G1bG0202080280000W40A00020440aI0g10A200
+12022104WI0GY00000G901W00005C30W00G0I9000Gb0Ge2K0804b0800010VYd0200G8e40
+042f000AW0000W900b0000a00KG1G4200CpQ200840W0AG920W0089b810O4000G90W00608
+00W200A00000e12NiQ0H0110G0G202H0811000210000500J20018020H48AWW00W0200080
+0a0Y2G40201Ha1WG000A400W0240000BLD08C8W028W288201WW@@J0KG0420G6012HFZR02
+1W008108220_ip040002840W00A8010W40G0b00400212200WPJ0W00W420800GG010W08W0
+088W0W011W880200000GG00G0100002200120O00000904a00000014820I00a1Ptx600012
+22006Ze0201WY0YW0000PV200C080WmKWtKD0480020002011G000QEt01000W00002O024W
+8u@V60G02243W0a02004W0W00082u0O0B00K40G00020W8m@lD000X0G00000Aa@tR0600Wf
+rJuVU30028WI200W00a00000GG4G4000010I1010G030WG0I0882A00000GS8800SO630008
+000W1W004000WP8CuYT60040SR_3A8100409000008C0m7d6000G000Ge00010q00BuR008C
+00000QWs20W0Wg1W08HS30J9420GJ0zY0800t40100G00G000m92000WhGBP06WdRD000000
+8k4C201U1000a5q34000oc8mdD600Q50000820A00W0GM1002Ur04V0101eNGO10022Q0000
+IMv600100f0G350410s00DxR00ea4420WU9y5fggB2Uu170@30@X7SXl80yFHu100@ZV0e7y
+0000GWW__b000mCW800qNV0Km@00iu0ek@1KrTZ1F0m3V6Wz_F0G1000gru30ei700002000
+6m708cps0V500X8@0000134aW6C429KG2IG2WaG8C890PG94V000G0ESs0000bgC0YmT0084
+0AWY0K0L0i0A2O8K1mG00WX0W2C300W10003W3020T4P0CH00aH08HS3006W30C0MHK1aY00
+KY1006300OD0003G106060x0L400wO000000e1eC00WY000k020O0SH00CxIXt00006000L0
+80G0Spm08Z00mF3004202GH04060A0c0r880CY00G00G0E200W10003m006WA0T0p400s100
+Wu50e@B0uv740@F0h6V0MT00iw0Wlk0m172G0001000V@300H@d0020HT30Ca1YT10Hc10Am
+K00aX0y70005Km400G00w3en2WK000z100mfnv20Or50er3G5q7o93Gm_600y300040GP730
+00Go600_@t0d70mK700Am@XabC000008k3Wzo9v8DI6v@1000aq100ELZaWkO8DSF0840022
+0uQM30000020144028008Wx_D8bO3czF1GWG0r_dmL@6000W0G02mq@60001000200WBoA@J
+0a02Gnv9CLi13cJoD_9ybE3@_dmU@6CMX1@@RGlm6Ksl4W100UjxX9@J0Ou2GpwCimT2rx3J
+Nx90080ANB3_@t00044LcRGSqCa4V200842wJ201X0RwRmf_6000WqK00Gky600GWesy4oct
+WepV0001G0VRSNh1DSnmar90010W880Gjs60801K1001G400IG80AA80400032148D93Egt0
+Y6W008G01200W444eiU300KM302GiiU380800006O1X4IaFXItD0W0014202100Y0800Ekt0
+0W2008000W02SfV20W010G010Y001000002IH51g000020QWOX0D8G0221040GW00140000m
+08X0W0ewT30W0108202A0040801W0020A020aCW02D203A0249H4eWGD21000@eW0080000e
+A0AWG80AC0420000O001008o00C0080000W02400K0U5g100088020000O028m000W100120
+0LC08W8240G40CY841W022010W0WkOs03A00X6R020I0eCK1008004G024004W30019W1080
+40O4G00000401q00A04W00300W0000Gnm8AO0G0A490282940WW4WG1000GX0040o0400G00
+4mYG04O0040001W00200XW108G080000G0a001GG0000W002800W42e0040W24G14000C440
+400Y8418H080W00W5I0208e2220WvzJG8C244000805G4C01000eizk1GA00000106004W20
+1020010G48W00wzt040004020000202Oe001400903H004212000ynr@l18604000010G600
+W0GCy6iuG2TaR0800G000WHLd0100000080800Ftr0W0000W00ZiE10400010008n0000620
+0004088000C00800410H001eVV3IhW100G008W0lCt0W0100a20G110G04200412A000Wd40
+D@d02W000800YO00gcmWfnDu_n464mW6nheP@40010000H8lS3006000G4OD930050aLa1fa
+P004801820L@R0008nTsC0040204A0000W0W81G43GW00W02W00004000GqYQ00QJq0044X4
+W0802000204400G2A00mupD8kV60e00Kzz300200G010902eyT301008490Jm00XWe000G12
+00200240000820K0mqR60100W120G1x6KyU2080106080201e5T34000004Wm400KGW600mZ
+104800G0De0680004000aiiT2xpdm1860H00uBU3QUm000084G841f00Kml140048008qXg1
+08100210W010100a000400800G0000WG24hl1400GW20WDpP20Gm00000WC40G0000080002
+610O8GMYt0e000NyR0GK020YP4L@R0802010W08048Rwt00011XOR000000090tzR00G0YYw
+C8GT30144CXl10004W1I0012m008H2bX204X1J8I8e8580045f0G42208a0W08042000GG8G
+8W420K4W041008402000003i000K50X0a10000WH00a1GK8Lm0PbcW45De10600111000eno
+04X44K238W001a2X20WcX0f03m0G00G030408G0WW_C00H00W10000000b20cot0GW00Y000
+08KO0000021501801XI014802f030IGC003WW8Y0400A02AG8104G400541IWGXIe20a0YI8
+W44DG0G08I08wV3G4021000100K02H00pWC38GeI0K4W806400W4200242eW001O000Sp0m8
+24WG03Oe2184Y02010002A00M340W0800100W808010Asp08200440000040G44000W00800
+1432G0W05C000G804Y00W804H000W0400984020b00WcW800G90G000WiHe4W08k8aaIA194
+00021a8000000WAzsV20100eW800A000K010n2GI4eWI82309240H40100410b000Ge300CM
+0aYI0940QARE6wbpW9sDecV3oYq0A100GG40ea800W0008A00H0G040W28208N6t0Y400K22
+0081aY00W0G600080001604002eH000K8801AK4Y00340W20000W210yJj10W81_Ut0G1008
+000W0800020GW4000900Q00000G2000mII5800420280WmrDehV3scD1Y000V0b001110001
+00W0Ynt08G80djQ000004200JFQ048W0703e042O0C0o2q800e108E0WGG001OWz0XWm8800
+1K2c04WC220I84Luc0m2000080i0g2O83W044000482G8061005CW11802680W000mnF3000
+801G0K0G0G4Z0W8K2M12000001GW000004880SiV2ZGbWG00000W040G0W06100G0400080W
+GC00000EW11GG480004020G686000406A00A0111A48000G12GOGK4W0W81006K00KWWL2p0
+10200Y00040e0a30WK02WY0C400042W00008200000ig12004012030G410W80W02000Y000
+0GX802WzwP0200msZ64xE3000GG0401000Y00G00W40WW0eW88200G10000AiD30000W_RC4
+00_2wl1O00wB000001X0000WJ00000N1W7AP004B200X8cGR0012Ir0G0aKk1Wh4310Wh000
+0rtmL0000Th000TuR02B0800G308000009q8V20010001qs3X10000800010A10200g684Wk
+zD0W2100000KD0G00mN0R040W00IL0yl@uFS4XSY0W8k00yyBW@@308i30Ob10Q_EytV00ed
+001F0032000003@@F00eESbP029e0_3G040020A0W0pWNkgWF8q908YN082000G4000mK79u
+z0GcnCCFpCCpCanyC8pSLIcvP4000WA0004x2mz@60WY38MQCkUt000qN20Oi5001a0d10K0
+C0cRs1ipY0Od591UBI2ePa4mEm80LWvCg0KGH26p0GWx_D00020C000O0gC00uY000c100u2
+00e2m10306YT0g800sP000000KPq400030K060Y051kzO0KH10eo2022004W100G501WW0A4
+00vM732ap00040K40001mb00G40004200GWNwC0W1e2mE000L600000u000G@zDGLLHbmK5J
+P60u2F8LLLGCZvWKbgKfAL1mVm3Uu22pA04y0alE30200uz@1u7m3mV@7006W8C3lz_70g4U
+08Bv000000jZ4000hE070C0WL708uE4YF0W00049y000010Asn4Og3nkPkd000OczcJWz@70
+YuE00000W@@0yl@4u@@0uqU3slrW4zD8Hv4o5pZkhVe_Q900ivS1k400m0MoEXhin82V32ud
+XB_Je5G30008abl100G01400q_i1000018W4S4i1G00WsC8XM@P0W00nj@9020W0W000W70W
+ynb0001GKw9S6L20000G2W0yBL2lWOGh19qMd1riRm6wFKkE37@RGA0I4DR2JgdmoK9000WX
+t00GGwL0G100000GDM6ijE3dhdGLwO04000800400001040D@O0014WWbJ04008400800000
+O00ANsWBobehy42qo0005PTXB100XY8uh00G0OWz9qfi1xfR00400G0000100@tn08G80441
+01400W2500000010QWItD0A0W802048G004W040500qIk10K00W00AaDl10414WW20050GW0
+002a180W8G1q0G0K0000Qx50G50W0002200800X0WW4G001011240GGO000b40800002Wysl
+101Ga400280G0G00000W2000G50010000L10W0000W0001b9UD002580uG0G000W04010g00
+1215A0G00G440A22TdR0112000Y0010G8CWa20G00eW00K00O060021000GmH0G63XW0020G
+00e0e28000W010200Wr62I0044482890W010200I0015X2101004X20X00W0WGX020100W0W
+00140002W0WW0G0W00G4XOCS3Yxn00G0g0014H0GW00080f08W0OY2em1AW00W00n80A0000
+K0C1000W0C8W880410808500W48W8060008G01P000440G484303260GG008200W2WoW8802
+10G0304020Cm00GW5000KEY4000G8040H0080G4G090048e0020020EC4G100G026104W40W
+000008W0e8220CW0A080W84000004Gn01040000G08G0G0m0108680008W3aG0uS@D080010
+4G00G0A0I04Q2pW8jC8TN3W0400W900000uCL64HQ2O14204G0000402I0456000I1000000
+o880f1204202110880000WH01e0n00600G08000MG0800n_R0201Ww_DuZG302m0aul1000U
+__s00X20H@dmct9SCV22800MkdXVFOOB@4G000CdV20W00080WG00010I20000S8100lzdmt
+_6y3Y4l@d00H0Wm_Due93GW0000W08h93IVB101000Y0008GGC@l1BtQ0204G00Y0TFPGTt9
+W880OBq40WW0200G0H9200194e0W104H0wBt02G0008S51O000GWW8KH3a8W92000001288G
+008000080008Y9KEI2NdR0408WqpJ0080OCt64GK2DFOGS@601W00014000818000noyGWJ6
+S1l100G0ksbXU6DOvG340a0800000T40041mz6D029000002C00G000009m0WG0520300410
+WuQOem66MKm0a04480G0G04000004W08Hkb6C5i100m000C000O0OwJ32MzXgxDOyf7a9100
+0840401W1801I000C008000GBSA08hU3G4G002800400e0001O001804082400040Of936Z7
+ZEvD08000640020W840000KW004500W120X00aA0DG900Y2004H1a00200YCtWgzDG402040
+0Wm9DOEU3GbEgG6G0H98W0GX8GY8GW082AGWW000ul7A000H103LXXoeAW1plt0W8OL0GPc1
+010e40O04L100O0WSpC000084G002002G002Iut0100G8G0002G2Z008030m00590XG0W81G
+0112010010602248W8H824Ga001202qoS20G000G000001001200nW0000W0W4002G000YG0
+0060064G2J83AY044890GWG2M0000mCcG8610W000000800G65fZ24c00Ge00W000IXeC021
+081034Gy_6010Gue23kSF10GW88G0a48HCW00GW0X0010000I0000I4a0aWG1b0H2G40pK20
+02G4200b00008oKKWI0Y00GeX8lJ00040A0G90W00G01W02000080W200882080f4WA12000
+G00W00000g4000U100WW440ea2022018VQ3001A1G18I00e4b00G9000K000100000b00004
+00KG10W00h8p09822A14HHMR0000000aI001082G0WW08KO800200200Ac0W000G88000804
+10010a0Y000XXRW4G080GW22WG1801100800WG00068C808180201400yzl10W0000C42000
+WaWH00W8CG000800085000G2W04AW9W8W00G0X0000e0400002010000m4WWxDu3@4eG8W20
+0801A0GG_9G42C200100WW0001000045o188G0XG0518G00285800004G1G0q9d1C831kbm0
+00100004W1W0W00400I0002WOO0000e02WY0000042G000OT42C000000W148110W02G0Ie0
+65000WW29000402Cel1EY10cQq000000u0G2yt0020104a082A0000020W400010281E0W00
+0000H020021WG0K60C000200O@@60200uFJ323F10082G020G0Y00041010GGVk60G040508
+wmw605XH0000d8I0WDXDWW0104GI2HG24GW81b080200002K0000AXqdguTV30G2W0G48000
+1012000000W8000800Ws3040Ws0W00K2G40020wT3XWWzNer1W20MR0e8lJ000GA0eL2W20f
+8080Iyt0mK0100m4GF00G80D100004020000S20100uA000WF1nH0011u50000q000Ybp00k
+2z20010uB0Ssl10Wu00000u5238hS3kAc1m5044WmLsiF110008O50UxC100Wg0000GLc10U
+00Wlt70cL50000c2700wRd1000eO700_It0000s205y50W02A000WLpE0hE0ee2005000Yo0
+0000G08YF04O0G4F40Ax0W2A00Yg30yg60GP7mehD0000nXrF00AqgZV3003@30WL72LzF0H
+40wkJ0W8_0Y0F10m5e6H7mT60WxC00mP000k000O0E0O2qH00m410008503000G0S0820101
+0120WC200eC00Wn000C020O0KYu9000WbeX000a400O600WAWKcA0f800IP00GYu6mCW0040
+L6C0H400cP000H000G000W080W0G4100H409qR00O200G5W003G9660A000ZP0001000A0m@
+kN0YuE0000aJEeRC0Gu1GLu10eVXPA_Cu@08Wh1WF0WdO00VuSN0000GPB0Y0000Cex2W104
+0mKd2c1FOuJTgoK0MG100EJ10Ax20Hy1E000YT10GP70WoE00aT000W00000100WGy00mktC
+000KD50300GPV6EFPa@mRu90SR08VyS6AVZG_D0002ut@6Cjc40030_7tWYPDuAz4QXZXv@D
+0000kZ10WOvIuy@4wLdXwpCuwn7_9a1008G0800UmEXAibO9zAsokYryJ0001msj9000ojhl
+AsxRZ0u99Ez46LmWTya000Wms2600G0y6_4EpZXU@P0480mXyI45_3X3omzU9KEV2W0003op
+WxuD00020eGL0A000dxQ0f200G1380080cnt004a00200wfp000W0vtR0G0200000mWWX001
+01040eQC3G008a6V26UA04540Sfi1Nrp0W000W0GGrJ_Gl490008f4W46UrWO@D8fV3wet0W
+W8m0W000224004802I000004408A2040WA0000400W0241040020004KK002G000G8qO3W00
+40G4800A001G08I800001000md20400YY204HIGG800000S0WW2000G01a80040axNDG0000
+014G0CX000W8M8m0000YG000W0WW012G400Y04G004040G0G00G010000400WC0K40040480
+G040n8Y0a16H1G4KG0000820IG5G8G23020010040041aW0000000CH0X0W000C201400010
+30O0W0020P0020106W0000W000WoDbH0oG90002m11a00000G3022100W0003W0G001GtJ64
+3l1q900008YSRk10W8184020G080041404W08W02V8Q0248000000601QwtW5vbOVU3ccpW_
+@D0001mb@6001G1G20mqt9G00GeuR30000IH000020504GWjxP00O004000G0G07gRGt09K9
+k1Z@R0000802G0000WkdtWndCun@70G400W8W8_@700W8W80Guw@46hsWzADODV641800108
+0W00000HzztUOd83Qtt000H0pzp00200HWWP0001U_F1O000B_Qmc@CCWl100H8xw8X72I02
+0000WGWMWPOQL6Q3tWvDD8e@4G0008Ya0esE300aC0008OlV3W2200200W08a142828W000W
+84X008280G3G0Gmsv900208lV3010Wiuj1p@R01000000W00W8AltW8Kae1z7k8FXOtUewV3
+0100200WGV20GwT6G000W810010GWzIP0G0000Ia14WW000026QF1a400jxnGgcCixl10801
+IjiYfwD8E06kXFXkIJOwl4cNs0000000eepdXXQqD0W40GDF64JW10440oHt00G000080000
+WalE3xfdm5z900I00A400100O000W00GG820841V241G000001218An_46Kt004804D006Kn
+00108000I0G000GH000W0001000l5000X8000820K4028E0W0W8040GG100W010O02gWG2C1
+00W4WWG00200080gYH0202S100WW10W0008000G0100002408204000m40VyRGTA60800X80
+8000W80100W100Qld1G80020003YL2000m0C8GUwt012000W840G0OG00H00009624WGrD04
+80000OGC0GD0002H0002001400W1a0W02We2eGa10WeCW000004180G00A100FOd00A0WZ_J
+0008000W00W00001W0400CVl111amty600002P0000W0WglDONO300GW000W0G0e4020WLlD
+G00205000W000008000GCl2k100W0a000G900420000K00001000850860q8P202G04G00G1
+b00090mm09y@l1NERmwq90Wu0044GmRGL04Y00044m4k90000000K4Y00044W848C8001000
+8X404000W414000LkP02000W2W2xqR00GWG0001K0YHQ@t0062G800884000020W202000a0
+G002m400_dGYPAU00009G00mn_D8X93cTw1000H00W0w_DXEEDG8308080WSjD0W06000004
+1W0000000811000In41mAt6020000WA0A00G410WK0440000buf100a20C00000i0XWPONj9
+SNy3TDnmt7C000WSmR600a8000GW8000H20Wr_J8DO9a08K00000M0400000W01000IWk5t0
+0GG4W10040010420uTJ30008azl188GG00Y0SEI2PsRmfI64ok1tUm0000E00000N4WwRFXM
+mPerT30J14002JOVS6040mf2201uh0Ksu6Cbd10WO00400m4000mx0GEuC00Q30K00e68600
+800C100Q78100e8eD0000WDa8U2daRGHpC00O0W00080000y@F0000H1@z0004fb@00000uk
+s@D000WxOR64Ac7qLN0000000y10000Xu30H000O2100IaB100W6q00u4N00eo00001000e4
+Ki3OrS7mg50GPB0HYN0Wok0000G000GaR0Edc1Eh80000VzF006Yj18200W00001W1020J4C
+04WHgDuhV3000C100W81E3Q3Z10W1mA20mT600KiJ244SpG40XSxc1008FZ7m0Y000C64HW1
+eY10G51008200GH0002050g04HO0eY00G5100C300G50003m004WI400vbb4_xq080O0PnPm
+VyC000_BoQ90Gm0iTb19uc0u10000ULTsdW00000GG10iQ0opm000000Z2w5000804n758YF
+8Y70G4V00Ax00Gy10Or1000016u70000G_A08SN008_0K5y1WDiX0000KsZxnmL_6W8k1edj
+PAThYMZIOu@44D004_c7xc5ILiFSJM2RYpGjuCqbs6hp_GBw600mxATV3wvsWTQDeNR9USRZ
+VmIOXDIATBalug0q_0mCTCKq0C969nln600800001I8WmSZi1l5PGly9000WZi000000WilD
+8S_ActsWx@s8rB3kF@1104048404G0000020810Gdx608G000004W0G1100000402KsWZ1C0
+G00W002WuzD0011GQi6ySl100chVhFXWQCeQT3sKsWgrD0G0GmV_60H100000W02010080VO
+PW182WvxPGW000020G1021G00000802W0000a00201000837Mb0W000008GbJd0004GW0080
+200008WiCT220000G040488GX0000000Gc500GAG82100000gQ838800I000G80001004Y00
+8050G8080G4G0X003101052100040Wkrt0008880000004iAe104W808Y000W40008000080
+I008014W10002000GC0ITR6iag1A9GA2gt08000824010402O0004G0GALCW14W080e40080
+000y47000A400100G00Ama_64Th1tLR040460040840800008808004280000100C0002400
+00W29O@R3AlY100G4zIP0G21WW6C8hP3gRpW55n0G000402Wg@D00e0GOOC00eO500WmKq60
+14W000200G02W400PRPmE_60G40008010H02u0200010W0A0SrV2R4QGUu600GG0FW040G02
+0200GGG00000G8G08yU3w@t0G0000008cHqWUzheB230O20W00W0Z4G1000mJoD0WpF00004
+0GG02000Aw910800tPd00f00004G3zO00002W010204W0G00Ull1DvQ02W004O00f_R002W0
+u08000W0000Oa6W10000082mSaX1WW806ItWHgn0480000WWApC01020001400G42500W010
+yeU2RbR0801WZ8JG000000W0W00WPGPW0002W00C820m0000G0G200P000G0WCmPuaV300D0
+i_U2400G0q0W0W000O00Gqy6yfM2TbI20W9mZjhu0U30W9C20100401Gv4600X00000Y8W00
+060400WOW12000I00004004G00W0C0G80410001Y0uKa4sWtWdhOusU3QxpWUuaeo_401040
+000002W01I4000000DH0YbtWYtOuP_46etWryDG40110WW24205bMQ00802001400003PoWE
+xDW00080G0646C2a001000H8200uiT304D0008000e200Y0WOxJemE90002SWi182XAG0H00
+WH00JeG2000Og200401000X200440Z00GB@601I10200GQ96051440148G002G0W0W280153
+C18O0138006AA02524AWf8e080O008W00Cod860q00200WY02500G4G9yR0P00G0mCm0W40G
+000Y8eG001Y20G4mYqhW0G0800510e80010000G50220WW00000zB3000W001EyE10002xyQ
+0000H0CXY08G243GWW8H00ne004H5016K006m0HW4W2GW15W0481L000I204O0G002uCYl1G
+I80o_s0G6WP000b0908G8XGWI00WG004004WllP021GaKyD0K0eGTf6SVV20G8WWWI01G1aY
+P0g4Y000X4HOK0000Lw0S@w6A100k0q00G0G0048O62AH1021a000b00020000G189Ki013b
+K2H4080GG9W0004100e400Scl1m4000010G44m060GGx_6W08GG2000200Wk7P0G00mjt900
+1006G002802W0208W000G200K0000003g100Y000V3A1001WLyD01000R000HG0000G00010
+G104PPd40W2W0020214e00X001GG0000Yq4G4iKY1400WOO80000kOgJ308822GG0GGW0008
+WI88000000G20WaEa4C42P0900X04G100002GG2O001008000yvcbe13wB184000008000GQ
+Qt00020WX000002WG402W000G000W1004C1e0Y0000080W08000O0008HpBQGil9000A0010
+oTz6C6k1bKQGvkUyuc100X0@kt0mx60pkzmt@Ca3g1W0G0a800A0X24000000GI01G2HPQ02
+041001K00000a4701400000220O0000CJwR0m1000840e@2202xl068000W20000O0000020
+Q93000K20G100GsR6isU200kA000WR5W00W0G0G020qU010Wq6000moDO0uhS9sEcXEwC0WY
+Gi00000z20DYQ00eD0000WQWk90904w50087P3GL9424YVnC1yk00mTYG20tTp00Ae808oTv
+E7YO300040000Mc1FcL1UChI0Wdf0K5000tPgE000G0000018SS900Wt300KFwQ3e200G012
+000200l70K1FGoE05000WA00000107y10OF3Hy0Wgc4000iWZ1000C080U3m0uACS30GJ000
+C000O040q4G101uE300_7F1G000Dnb000eeinD0m0W1mF33WV600T4000000cw9200W00003
+01000C08Emc100100WA040L0A800KG00WG000A200K1G0OCGjH5033006200O8000N000p0A
+0S1mmq1O600mF300qP0c820820S200GXA00mc@6000K000ylT15WCsD00O6k0O6W85g0Kw30
+000s3@D000Wfg200000u_4000001GLu1000Wfg00WO0COOS3y700ZPVzdx0Lb00QT1GKy2W9
+s50ei32cO7aHYFWoE00mT0GyV0y@@1Wvkz7000XC10SP600lUBqUp9qbV20064k@IYvviv9x
+JkwFXx_Du@i4EsU3GzF0PiAHuFO040Gery7AElYBlFfXy7UKVZxXJ8TTa6WNbEsJO1T6kAN2
+00tJHT_Gtv64tb1@uB1400W5sPu219sND10001Jlbm5x9qPt6PyNnOr60Ow18fE6UpF1gA08
+bKpmYT9iBR2DDR02G0W30h0400G9z94jP2hzP30004T20WJkP010100020800K0080002101
+000G084W04005G10Y0005000004010100281W00G0G800W001W0000a8W5xD0W00mjR60800
+0001200084W0G@@dmUU6iMF6vmw100PiegJ0003GHi9040200000044WqjD8nT30Wm00000m
+080200002201602000110860uj@4Q2IYqyPu4VFQXcXwiV0mA3GxU60W00ysV3G10G010G0F
+20qSx600G11200Gif60040ygF3AvtWh1D8qn700210100e2iDYKe500G0000uS800CTY7000
+G0WC82G42eo@4082000m0ebt4gjr0Y002G004W008000WK000e0W4WpRb8T5R0GaF5xl1010
+0trc10G0XfmR000AWTOJG000W4HY0f000W0000003A304101aW41G021H0V3NnKK64MYG0hS
+0c_d1400000G01GW061d1m404X0GGy2l1W100860028W10100180800004014H010Wi5l1F1
+dmGy6SaC6RSgoUo90000HZ80GEy90080OYH3008GCmO2WG2G0W0WG00383V30040AH4W0H44
+08000008G02000011000IuX_4WW003002G0G0mCfdazC6hPR00800003G400G000004001W0
+00500H000W04G40G0X0090G020e8248504YG5G0HY00W02000O11X88G0A02u00H810a0aWv
+1n0835X00841Y28W0Egt08402004044000c00eaYY0iF0Cxk100G4G000I00004110084602
+00G0GG45200W01540G0a80Hu00YG5mH90I8AOYAHmG044G45O41YB5Q0MG00aG401XQG6@6q
+rz3ruEpyz9000Ws000W000201K8I0m000G0000I000e404W4G0WI0200a020G9008AV304aG
+00bK0002800GXJoCWI02WG040Ae4000000W20MFk19O@mSlpq0t30061100O2008010G88m4
+04eW20aG08A1A0WW02G4G05K00510100020000205000X122000Ge10RvR000Z0G050q080G
+000mH008GV3020K4Qq9j37oB890W6600G008W1S00180W000411000C0K0m0X886X1H4000Y
+GK020100W0014119000000H01000004W0m8000000GW02G9YR014C02O4000000K006Ak4RK
+n3000QR000W0W288000I041G80WW8008G04I48A0b00W44000220X0802W0Y05240240e001
+8@330G2a0e000W900002WmyDeLv4Ge00aF2FZidmE@60G0000018u0W00Ge8G402WG000H0W
+J01100N1E1G000S541008800000q20000G4GS00G00y20000a000000Y30000mB9Y@W00000
+q000uyD7cf80bT0@@R0ujfAByF0M4UuH50@3pC@7uXl8m3VH0avYW7_4fggO2mxnKcy3KM06
+Wx007u1m4s10HC3Ksm70k50WLB0uoM0gAk0GaP01000AS06@t008300030004Wc256zNJ20G
+00000GvUd0f8204m40AW9WL0N0Z8t0MH00io0e051G1u2W2m5m0mOmD36WA600CWOuC000O6
+01GHWAcP0C400OO00Wm0006300K1G001e412GU4t01000A80000T000WoUidY008xjIV2K50
+0SF00008YN00g20GaP00y@K5Hy1H0i3ei300050cpE0geU0G4VW07_G8_x1Kr10eg30Gn70W
+_D04XF40008Y70G4l00iwtMAwR3akDxdQgD8UDI000mIB00uAT6gwtWpqz8KBOI4u7005mjo
+nJ2V2D8F9WN30AMdXqxEvcUFIStWj5ovz73_lt0000W000WJp8XP@DODS3Uo@X0oD001010G
+000030000GWG10a2l4hH5oNJaa7C3@CP000rH00W40012001004006800801010WG4000000
+Wa0121000800H2aY5CevU3G010KVc1tUR020G0000G8000oimW4wJuy_AQEZ40W00dup0010
+0mF600080Yjs00080001GQ@F1W400G600Yxt00080200408W1000G6000002OW3uDOOV3_mn
+Wzj_vSo700W0000G00040000IM100paQ00W00W010010080024Rk1WW00000001Ge0001m__
+9000G00W0oh@90W00edU3oiua2@RvpP300eObhV20W02UlyXIVCOwU3UstWTkD00801800WA
+FPuvebIGFXo@JGWS3G4x60000Cxx400200I400a8012m000W10m000008GiYV28400AytWo@
+DuMR3wAn90400bOR00000000esa00M_o02G000W040402W8040G000W000G000000A000090
+0eeux7Qkt000000H0000080000CWJLc5g5000000EwQLz10040DJMHxgCSsl1D6R0008mcsD
+Ogdb000Y00082021GU@60wW1002G000000W090001010001I80W200G400000K2K000W000A
+2m0001GVw60G00GW00nm@6000G480080200W0001kNHM1510003q40000WG28W0040180G80
+80W000W0W002010K82000C0a0O08000820W0W6ND00WG2000H0fC07GQ00H000Z82fP4L1yC
+00Wq30009020eDuD8yD300G00081uGy70402Kzl1FEc000G10G00W405_OAgkIP010000030
+G8200W0200aYKmT280W0g6tWM9JOKy72qJeSz8n00000001000iu100120G0800e_V3W400q
+sV20W01010000200001W08000101Vwd00040800X00G0000100100000qJlaSZy9000AwEE1
+W000004Jlwt0800bR_RGKx6e0A00W8002e0400W88A4X08020X00541G880110K00010IW00
+0201G4400W2400WG10rVRGd2KH4000qS0700G00A20nyR008600000C180s2qWuvD0G00qWy
+6STF320000G208000gd0g000000r10000ai30O000e4hw023t0000WgMT00000fg0060000_
+30Eu30000einE00008YN0C1mvK9yeZ1W8p04100ijX1BcH5Y00WRuC00WSTOu601W0WW0H4Y
+084008GnaR000W80204048g0G000mW0uW_4002080L04000eG00W0pDW8020008ajrq2eX1m
+@@600LKFUF600C04Ol100L0eA00000GzEm400Y8wU00000bj00440Weg20mx12000mg1e4kh
+000mz7Z1LQFpIRCy7UEjUwni_600W_yNjqsHF7GQ803qPMRxv0000Lm00GVUyidE6PFkHhxI
+CWj700Ma0005iTl1LsR00008000KDsRGZO600C0fTV3EuoWtRD88@4W200ia63v2552000W9
+30@uB1000G0280Nvp0004ecoP0800m@y600822040otz9K9y9r8h20001000KO700AxM203G
+GNmRGJK6004000020002010002014kYBX9JDORk4kvdXOFRvRVF00aM3006ujV6040Wq0W1r
+tdGYJ6SHF3@@d0000830G0W004oNxg@@D0qm2GNy9000W00W008W00G4000X00_@t00GI020
+0W6CBXcqP008000C0iY_P8xAg000HnN000000W420010800W000004W008u6V300GG0100ua
+7300W0O0C00002OU_6Cwl1rSP08110101000020021021WOWqe004g000202000040WvqD04
+W0o_yC0G802G0O00e400G600W204G0qG0080a00GTeC00Z000636001WmDl2iX0msy60180W
+0004018000040200gtt0W0004000seF1000G02082hp000000088G0G0Kqv9Tgo3q3003W00
+400100820W805W04e0180010001100202G880W8G15102208WG2G420000G0K00GG0W01WWg
+3DGCG0000H800W401W01100yqREbyl10W9A00000W04WG08AG4G0G8W0a02802C100210002
+02W100a082801482006G20880GAf05W080I00800I4000W0O14080q208Y80H1G00008030H
+G40KYRKWjR08G0a005K200WO5v9G10200008W00I900000800OG000002104mfL68100W200
+vtU600G41G0e4010100W2pPkKWKFeV500222008000O00@sd0000I0W019oP0200200000W0
+014c0yMP2K001Qut010000W08Y5DXbXe20GJAB00840000010002610W0Qay4A5FXaFD0000
+m5190004OkS36gt04000HSRmZkN1ew08gR6_Tp000GX9_R0AW208000WW00W800000WS6S30
+0G9KUl1ntR0G4400010tUe5000SjGR0fVRG4u6a_j1nmbGSb600000WY07000W0vI0042040
+004GB00000dcF14200fKG50WnmRgD0002Em100g200000000e00000G0geE0W3V0Mjw0Ax00
+Hy1Gbu3WgY70cO720mFG9RdWi30Eu30eW780wjkB09ZP9aR0m0GHW8YA0C402Vp000100W80
+00L028g0KG00eW0001100e200G5W0GH0320062000WmmD000W101GG06040840_HXA0008Yk
+w02sp0mXFWg6NWaT009x0W7000wf26WV000@00Gi@6q1W10W9sZRF10aT00yN0W8p01Ey100
+g2eg30WBvC8DSc@CuvU6_VdY@tylH0uhzPX8ASj1WHJ_FIlMwz7300TJJ58Aed2WzQ_Fa2TV
+246Gu90XKy@@@FKDj19y130WUcmd_@xAT3etWCNL100GRkN@VR6jj7BHL@a00WRxZYw6vl50
+l00RpzMlcm0000sg00G9Uf10aW2000080C0000Wv8h20WUbq_U30087u8H440IWHAO900001
+1000008HaW0Ga4o110W3Gu40000Eu0000GE4aq@6M200wFy@z7@F@o@l@y@wJ@V_r@Zlz@0I
+@lzu@NV_@qh@@yx@BF@@nt@Fy_@@_@@@@@@@@@@@@@Ry@lB_@to@@@@@@zz@Rl@@r@@F2@@@
+@@@cl@Vvy@JU@@Zx@lu@@@@@@@@@@@@@@@@@@@z6400m@@C0cZ1u@@@@@t60020@@p000ve@
+@V3008m@@C0000Sv@G0UT0KX0On8aG816040000W00801W@@D00H0mZ2O0W0000000000QN0
+00jN0s@@900W08IX4A2eYo5g00Wev@@Zzv0300G0000GSEH2000Q_2m3000000N0_@tiu92f
+c2C000mZ100O2b3tquXIDI001iq@@@lUo6@@h2000QP100@@R6e00W@@t001000e0W@@h00m
+4yCFAUE36W4H0_@VC00G2000W0400a2m3000W008W000KQL8C0000100WG600m@@Z1021004
+Gm@@I0020G020008000W001vK10800002k@@Rs21600028C86c9m000080400000WyK03000
+W@@F1mJ10zU4ODALaA43O100_@7C000S00000k805l430060000W20W00W0000020qA0000K
+2wzv100080I4000aky@@@pNm0400080C000O2I1W10000060C00000y308m29w2m00004q00
+0_@VU010G@@J2G02WOkO8DWD0nD0K9ZVRXPmPOR000Wss00GLT4_Qs600WddV0i@@52mK2mx
+RNL_M24001IjnWMuC82E38004y@l18GA0tXpWluC00002000XzuCOnE3000W8L080840GgS9
+SRd10W00srHY@@F10W80000000G8DvPW001G02G0004010002400z@V302W0UWZ100GG00WW
+000W004080HY0028e0500080W00G04WW41010G000000u418W00G001W000000m60Cuyk4QD
+qW4t8f986_@t008040400wEm048000K8000G020800102000020H004008040000A8UOl400
+0018e0000044W00G040bAc0eH2WC6CeZX4YKu7000WluPGkV6000W0GW0G1XISHe1000G000
+W02000C0W0H0YG1000006W2Ho00020818G_pn0e34G0240088000000GW00G0000108j6_mp
+Np4JX495_mNXC00W08iG3UIXXjcI00Gtt80Fy@lG00W08200i1H8@@R0C00mj2D008000c11
+04000101004000811000vzZ6OeN008800101WaqMAnn4gFuXg7P0G00400W8000008H00020
+02Y0upA3000800W0g1o408000000Zh00m1L6m00G000O0100WFdyu@@PYRq0W00008004001
+y@l100W0pLC10WW0201GW6408400OW0308820WG000W001G0000yZ0008008800HWuKJ6W00
+0y@GE2000GA00aHG2vIQGsZ68W00OQI300G08G000000000G440000O208WWq0WQ8240GWG1
+I80G00W10G040WG4e010000W7701D0081408A000400G01004G0012W0RAmJEP9aKc1zTc00
+2000W00TOQ00008810H040900Y010482Gi00W0GA0W00G28000001OW00n8m0G0400G8H000
+8iC000K00030WW11010001ZmaGZDv000043084b0841000Xlb000K000a082W8010Ay@l1KA
+424WW0G9X80YnA00K240002001b000H0HGKYIYWe8G01AH402GAf8YI000Gw60WK2H008A1G
+0f2a00K000G00Zozm@@g01J440C010004Y004@@R00K004020W01009e0E2N2000In004W1W
+C00W0022G10K4H0W0000e602280060gYAY0A00K0148G0000iy1WI02008W0002chwO000GG
+00000aG0wmn6000W0HG00K000006W01000000WW0G8020YAC10200080Y000302044Ye2800
+1000884m4CK0IWG4JGW80ZXY2I000E8GYe080S10G002000E1Q02W0000A00cmn00X100000
+S441yQxI00007cDXhPDOyM3400W0000W0G10K0000280GW4014e0000W0GX0904010Y10A02
+4000000u2LW46mih9000Gv@V3K000y@lD000wj0W00yN0wQB300j00000514300008c000Xy
+Q0Y300W0qBeV1010el080004000X0WUf0GCO@5w5W8HWzN0202400YH80GV0486qz200001f
+d0020WD1WGVD00q60500GD0K1000aiY000008uo5U_@F40OcP0842HBj2I846WW4CeW00G90
+v02IG042X2Y08b0832000C100040nm0OPQ0000m3000000WMA500@@@Z3000O000m0S0W1u6
+00mDuIO3000G000G08001W903W8000t00Y2m00O6u2GHmO0NWp000t1HEW3YS0U7v0q1y1e9
+u7mFmFGaWV0870000j2E000OC0001m0WY0J080pW@dC0000000WhLvgu@VLGrg00pp000000
+0e5W70E0000000@30GBj@@R00uX70acbmyi@POU00pC300_74LLD80yF00uVCbv@WByW0Nu1
+10000GLmI0U0U0000IZvP0000mYf10pN1CO5QdIWxad8h000RJNCXi8yCbVpmQMCq1k1JrLH
+cq90080CNw702w0yRr3ZaNqrQ2j@P2000m4600y7L5p5iKa2FyDY1BEZ1000enzU0006SlxN
+1010G000qlr9SjL200040200sfc1014000000H1000800041WZFn0iL2m@@E1001SjS302e0
+CWQ200X06Lt0030080G00020040044W60K004i00W0010000e69k1000G084WqIB3000uT70
+0ank1z4pJMcLqPL200800010jdl100W0W0G0aHd10G00s2p00002fqPGKt60880y@V600iCS
+IPK011000W00080DnS301G0K0e1000800e0KMW10020040m08f00W200K8W000008X40wf43
+mxE07odmZUjamMBFid0W0W000400W200G0000W000K20W0004002XsBn69CeS008wUIcwb74
+000G4001002i7i10008000Gs1W1004001012100000420W4WLvVW030000000CB59vZnyQvq
+mO5080W2it000010W200X000C00evU3000OCRl1@7p0400048000G0W00000Qv0OmUjgyt00
+001GW20Uit00008J6Q0401W22CuMX4Y_J20004001000002T048VV9MTZX4_v10C00000010
+WGu20H0C0210X0002000014W0KD420084H404040000YW00WpmDu7_40G000W10W0L00W000
+00Gg5P_m6r60800OEpS8000ai_3bPb00020014H0WH20000GA0000GH8I02O0mW0G08010I0
+0KW0O4J608200W0800000u@2WM0Ju@@4000Aa0FFW4G484040W4082y400081KG4YG41X84G
+A292W00040WGG205DJY294YW0IG9bG41000020G8000082014Y829a0aI80000000042000c
+F1028010K080MvF100W20010010ACLWD2000G00O0003P6r4000Y009C00OW10K4KW026002
+0GKH8035001000Cm00X920013000G0e88m000823001O006m04GW10YW00000O000WBmzCC0
+100mBwC0002x@VR000710u800m2800003OWWrrR00e02WJ040Y0Wm8W9G80Am22002e302o1
+X01GKGe010W282H014SAW0G0aIW3011HG18300G4K0000009u1801000Wl00000GWWHGmfC0
+8B0unR32jb70008040Hs@t010O002W0QRq00002894WG0480W81280A00W00000G295000G0
+G048eqU6000W00200000Dy10W0fseuZP0K1000WM10002080acmC0X4GlV060e@2G00S0G88
+210w@1XWmkNeF2240xUH808I0086W00z10WO8@5qMW020q6spn0000z200G0yB0008c2Cb00
+00D101000WG00000e020009GeJ0400q00npRm@@y0Fy0u@V300038421GG2A1G8K88C8000m
+GWm0XWm131X2522b0aWchOzi40m00y@FL003000N0A000B6E3S0000302WEW70l1@0_1_100
+y30G058o1qKa3u7W7mRWVWE0@W81_1HIW3Wa0Q200W0S0e88603mUbp0000Wqd00002000P0
+6000Y1W0000086000C0000200WCW0000PW85GAp@70GL1WPc32pCJ50_70_pCLgA8m5UGChg
+W0m@0000eIBQ1000WMQVbp000n2vm@Vxr210200000dN00WczJB1gPW000aKmR@@3vByISiy
+3nn7220002000000uPD80qIE61ij4002WKhDuKV3G0G0000800204044W@@310WNx@@C0W00
+SV2g0020Cfl1pcbmCvFKFk7WjK0ApuD8000ZDR0400XKMJO8zD000WoOW0OVU60200S8jJhr
+YHYwC0040G001000mWm@h00m1otp9002434001000Y4xYgO@4MkE10G1000a0Iqt00a00400
+00G20qzF64sUGEwt008WW020W00G0m000wU6mMLF14O00@gRGgwIiyV2000uD02G0000W1cX
+0040WKzDOHC3EoPCG20000091H2W000aG000mlHO00Wnuwm40000811804WHmqKFqI1L2800
+000W00HO00iW012002m0009014030CxV5WZ5040240X0Y0228210X54W20065cH4004QFI9k
+@mS_6CUi142H000000G2H0H0W00L0040019zN1000EcX3H003AG0H00u004Y06311K120GWH
+pu40400000200010W8GSaQ2400001Y0G8X00YH0004200060000Xg_l200ea00100G80iSKN
+G0000W0000400002G9X90002Z10W1C0m0W200mG10000080C08s@A0wK0qrF3000p100HTil
+JG010kvsWBVJ00YO0A0Y0O1B0208200m4G40H0040ni@L04000000A_1008008Fib0004W7D
+lA0L3odt0204128C008I2W200Y009W40081100I400Fxj20071008000HA009aePU3sHnf4t
+CG24A001004000010000G00cG040ac0wB100WyB400G00XWG00eN80206V1WO@h00g10A00f
+mma300qY0qgK0000O100ohs0IpI0j_@000m3U000000Wj2p000020pymC00K9BzF1W00XWG0
+zdryI9kb00000W00J000P0C100410006000C600u7O0mPmTWV0f000hhd7W0004Ij100sI4G
+Y003c006020C0C0O0O082m0QTzgAnPmg00Wf10UF0000Wb70F0000fPH0IBTg@O0COF30LL5
+WALBOMgMaPw1eoA11W@1ATFg6jD7000qV3Xn61ozwF600g92sBjk_p1m91msQZ5fmFc600Ub
+xJ00me00000W00_3l100A0kYFXRk52002GzpF0080egQFERoW1zP0G000mO1000004204800
+G00H440200048WVzD0004mq_vCGU29a@G90I4Xl7j6O0_0000004W0W200800G006000008W
+W5LJOiot0W00CPV2Nnd000Rs7bDW0000000111027JRmq_yaxCIn@d08b101W801du44140W
+0207wRGX@21002Kc010014mENP8oUXco3ZF@j100l20010082G420G4200Y0G82GWO14Y0WC
+pegm@S0Gk080000001100W0008n000WAfy700214140028Waz0I000Gb10224G0W0G01YO22
+m020O0G28Hm0ij@FJ0RmvuvSz@300YdX8282XQY2AW018011J05801OK0We0y@FF20G000G0
+rs@IWD728009800K00800000800WGzWQGQzyG300uO53kn79G1u0f@RWY0000GW8K88000W4
+CuwF0G0002W0itFI00sq8081W0G041000008201O040G4_@@7W81K00G0Y@pWh_B28U30GW4
+000988pI40820HW40X08Am@@y00u0040m8H20WWKMoh4A10Ga04000W02eA6m00Ge8BXp3@3
+GK550_G300000_7zTH006JaP00u6000eO_b@000D3H000@S5G0045DF000c00080G000W01m
+6v51E_Z100e90003020N0C0g0OG00mW0udx6100mH8p00001Wv@700082WuB0000_xV0ggbx
+nsxtWRXzeyV300OQCyMQfXdmMz6amM25T72G42X8aDey@40G00CGz60020EhydDzP8BEI000
+WFvfJFThIz@6K_93R@Z10WD310G07Sp000WWAyIufR9I5W4000GXU7Idu900808@R680W04q
+k1l0O0000G02000L200W2000200W02GYq604080e218100WuYivoy46ErW60C8306kFD100G
+0XspGvr6Ssi1040010W0K3l1000G1D0a0WG00000892G188Y000H10212aDl1DfRmwy60002
+uS06whsW5hheky4_NdXwwD8m_4EPtWzqPufT30010sBh10040_2t0G08000U110W5G208000
+Y31200080G4800G0M0Dkc40G08UoFXlnJeeTFoVVZMpJ0002GUv6KOk1Fyd0010a2uJ0u00m
+gy60400W04W84004W0120W08800W4Vk1P0AK_@X00W820G00082W0fm0w00W004m@@D0110m
+Rx90G020080GUZHr7@34G00wtNYPYJOeT30GS41000020W4008G001GW03W0W0010010Y000
+208WmahOWVa0094WW00ONnA0W0W00041004000802000W9I2H2800004040W000G0GC01400
+0G200G80000W0100GWXvzeD_Vgj63GG00HKd0000Ix2G0200H00G00300K0000020420G082
+08IWsWi7q20008149028000080YXqW2mJeZV30G0GG000a000000RBG0XI4040400YG00444
+04024Y00GA0054000HGWG008JBa__N2We000GG0Ait041W0hxp00G03000YdOQ04000mE61K
+0G0H8FKGr03Wm8K0T4411280G822W8W18Y0G100WwQ6N1000L01P6GKIf_kh84T60000XRG1
+02418bKY8b000bpPGrt6000KuQ@k0G40W40001400810W1CnO@V300KG92hA20GH0241mLFD
+010000800000HW200I3Zdd_3X00020a80WW00tVdmzYO0S9i03m002W0GJ05G0OG00mW09W0
+00004030HWzhx200WODv9awl10AX2oP23W208441I8f2002a00100086241000WY48gxtW5N
+q24qV0G1WKl04000020G0008000088Ik@FW200000000WdJqT0W00mN0000G030000070000
+0A2021000G20C0367yN4p000000Ke200005Ku9000000e0U3WT@h04lqj0O6A1000y6Or1Ks
+000010WL700030Fy80vyRmtvN1006000W10002W2000C0c0000q873v_QW0I401m40000uS_
+G410g240O0A0e285X1W220WK400800006000P04000G8fiB700uV0000q2pp0W9P3eI100Wb
+703gKQ1K00mlziZ70uV40002800u70100W2Wf@drMeClm8bN6kvr00101r_Z1ef1Ws@buyRX
+I3l88010H5QWS00WVlXfVk4EosoqmPxxi40EV0q@M5Vpl10W0WDwt00882541WdpbOkV981W
+002000080mES6KXk1J1O00G0eYpI0000F60G00W0201040002010WQ3O60048SZl1JBRmuo6
+qkS2010G_@l20220vkP0020K0480Y0W0Juv10GGW0000W800ing104G00AW0qge109G11400
+0H040m00A004102A00Y0000uJ00014m000G304W2080H04X081000004160030014Ae00H00
+0W000016W02mQV90001u3W4U9N20604Djb0H0W40G20pxp040008G00000G0W000440000WG
+3W6G001000081W20G00G000400C008000C0012000Gw500004W0G0Q00000H08O000GG0000
+0WG010H008q4G00G040W000008Gwf@400a88W80ErtWvUJuVz76mn002100400008000e010
+0040020000GG0G0001001G120000111000G00000540414W100W0080b000G04Y022yZXOpD
+08W040108002G020000G010001001K706y@V5002011000201uIl7gUmW@@t0G4GGnG6800Y
+0404m@@600GvfXy46ytW_HDW004Hdy680000008082WWgpJ0008GkzU000WiRU300a200000
+230m@@9Cej11wdm@vI04008a_4G0084Fk12UM000100G20008W0I204000G00G408002G000
+0Y0e420WIeDejT3080W80000W00mos94Wk400C0Va918840G0000X04ypY400000G20ykc10
+010QeF1G0002000G100inl100a4000mXF08O_V3oCq0400000G041014ab10100400WWG0G0
+0GW0041nN6J8wG3_@l29020b@R000G008WWFfl1020WAvJ008000G4WH@V08400000000qh0
+00000G8qbf14000H0A2CbW1404000a8aqa1008014440000H0G00A0202411@5OmVvI00041
+M022O0G0080BW80bG0Be2W200100a00000002G40000200000400W000G11W20jtp0200418
+400W800WG200X02G2G4400440000vF04G020m2002a8a001400228G8X1203X4Y02G414MaG
+40mW0W8YWKXG2314A4e0XA8W01WY04K4300G0H08408IU9sAn0023W0000G300002808H0mP
+@CW000ekv4G000W1000080020W0000G800I000500100200GM@6040H0000WEGGYh5D00002
+44G4485G0002820000210040840G40Ym04G000020200G0004040400I004000A1dX@oP0W0
+KYY0H9A1O9Ga48e4002HH048A1mYR6002Gyoj4e4008a8GWIA1WG2020e400008W8GA1000G
+2Ge0521080G4K040020020b0000JEG5C4A1WIK20c4A00G9H000oW8WK200W5C4G9bGW9H0X
+8Kw@V3e4W00H49WIA1W8YG80e400004001ATPj10200oya180480W0201W68G0900GW00800
+40011kP00D0W@@D00WH0000IW2018002X9G0W000020P00800800X000000H520G1G000Gm2
+60UKY020G008W0040100020W210G300100014C04GWI02K10A10G10000aG0P0m06081800G
+1A60W0HK0051018Gay_IOmx40WJG0M0PHG0W0K0W0412482G0E0_14K00W00Y00040IG08nJ
+300H220Au300000e8I108001000Y080W04W0H000W09000G433G0Eee0CHJ1O0a0a8O244H0
+040W80YY2K1408222000040W0S42aW0G6X204zuG301108038G000XW81XVVJ8h_4001200G
+W02000040008K0tvOmcj6KGB30Cm280000010w@V6001W0208000OGuu6W0082000000SDAG
+00lpR040H100GW8424000a24010804010410b00G010802WG008Wb0021H01KYK004BK049W
+0H000GW8HoWF000et4008WV1el8D00q@1000KlG80bxp0YJ0000mBeF1000olG0004000200
+WUFG080_72T2W0WW60e33300nbWGG0oB0008tbML0000@5W00m0W0G020qV321XSlG@9040K
+zIG00G0e40200wFn10WuBeV0210Xl0H080011041WU1a000y5O0010y0T5utV0000WBF2GWR
+0ubC2Wg@@V00qIB00uZ@@D0u0000000uX7000000mP8XvPK6ppW9uV0SVy0cE3PcnCom3000
+WuPk8LLDH0yFcI0IgK5aI0a14223c0W2C1G2GT_2WCP60100Mc60IpY00mVBmCpMKLL1Wgg2
+0@L5uXl8m3VHgMLY0uV0000Kj_F3g300e90003W1WcWv6g0gF00gS0001_Es0W0WW000C0Y0
+00C30006000m000m5O003mP06Wv000t100W11W0O001q1q2W1e3I7G550WVC0A0000O4A0W2
+W00503W3Wc0N0T0T000_108W30G0O000y3u0OCG7YBWT000xW01m01g0k0K1S1g2S6S6u6uC
+00mP005W00A0J000006Ws@P00@tVR@60pp000000we0Wq4IWgL10000Jd10u_000YK810Grg
+zeZHs@60oB0eSw4WP00y@@3cXP00WWIZb042214422A1G6K2WKGuz0BjeKMc60W@10q2Wj@v
+1G20GVgO4lD3000OO100yOC6FvZKqo6SUx3pcYHioF000100W9sorCqJD3Z2Fs@@OiHm30oM
+06Dt02000fG@GgmBLAa1V9KHH1OS3k1vlR0T00WQ7ew@V9cz_XsMbeAr7_Bt0204000WtEYe
+20008rEnGWo9C8l1DvkHroCydF3Zvam2u60101u3S3w0mWqOJW02000400480080010W0000
+M0W00000aI000W00GG100W0G0G8W0a001100We01K000002400G000220G20000e04000400
+020070000011GWhiJuZZ7gLoW@@b0240Ga2X000202000200180025DP04880000uDZQGnv6
+0140ewS3G024080201800010WVgCG000000W000027oRW000mhBmOpXDwdt040000W0GwetW
+IwDuj83YzG200W4004000yq9000G004400080W04001800I0000HeKz400010005000044G0
+00000020W40000WW0eXg4YVSu63CEZX@leu@AE_VYa@ZOv@VacfqV9000mW500eqc@hSmu2i
+meTL6O900CnrOFu@00G008000000GW00GSvV800shdqtWXrYwctDQx76WBA0BaZqBTRqLw3H
+Aa0030Wzv210001f00Wcwe2200mWUOSat3nvz0000GC0m0rfR01048000000Q4B0pWT8CuOx
+428sW_vD0X04m@@C0A00O6UI0GW010010210GQt6yOl1005008000000H00000004000A000
+G008024G000W00K0000040GW000303G1H1X0W0000G4Y0000HHW0GK20000100100040G00G
+000G6os00002000IYot0400001G0ELM2000W5hN10G0004000202M5mW@@JW4004000000X0
+viZ10100GG0GGOW008G80G2W0GO48000Mb38104X000000GGGe4R302W0001G8zS30400009
+0060Wmx_9W0W18@VI000a0G00erw4oYdXhhP0X00080W2W08W0009QPs008G020G10W08T@V
+200eJoIm00200xvRG__64GV2m000IxpZKsDezVOAy730O00lrR000GG010800G0G0000e4Ge
+Ox4ISEXDiD0I04HIB8r8P50004YbmWbdP00W0qOv60G1002009004000GPK500_@@1041000
+0W0000TYi15wLHM921004fKHC0004H0400010mdV600uogAV60W0000400G000GC2WQnDO8V
+6kCd10G00te_mrdjCvV23cRmIy6aZl10400a050G0000G40W100001000YT000408020w1T3
+M_yXySDuPKLkWX4W0004000080082040100osm6qZl1400W808GG004W0080WOSG00XK04ag
+0000xK400W04ITx680000044002210GeC080W0G400090exV6gtmWNmD8TT9wlMYHpn0040m
+fz6qCF30200041800WG088WA4G0000a20014800000u_1W0000080G002tnd080000W00003
+0G4000900upnA0020ip96zSpmEu6y_I2042000K0000W010850G8286WKa20410YG2A0000H
+000W20OW020G9b0204W0Y0euU3850006m1004GA4aI00W82000b_@t0A1802H00eWI4CzF30
+0X4010A080WGf00m0u6y0W100000040jxV2f0a0W00WVxV000Ootz6000140We000r000280
+m00OW8000000e00000005L408WW0G8W0ril1002G0000oA000G200G01064900WW0Aut0G00
+0W300MgmWfVP000G0023W2pJ8F@4scn0Y000xcd000060300Z3R00W1W6ZOG4dXW88000800
+mB0S40u806WW0100WIm00080G40Im08611uCG0088208020000SG0000Oy200000S4020000
+0Y0000AmL4KWGG0w_U38000G210eNb4wzt0WHW0480W00Z0SlU2000018000006uPuG2j810
+M0WG440000G20H20G206249mPxD001O00001001081008020308052000ur0WlnJejT30004
+0W401W8000HG400W0xydG6yCyGiA020002GYy@F3G20uKG100rLet54300V1H0G00A00410S
+88000a8qN0000Ol0003bQ0W20000mA000ui9n10000oB000G000W040el0202vlWsAW0W4sG
+CzC000WH1000GJ080080800W00zdWGG0tB00mn_C0e28080jIQpU000W700000yV1m7_YW7_
+51FyW3UufIL@ZfCNaALb80W3000001HGm2YW00000001W7U000000qcNCT52uVJYP6fEnP00
+8000m0O400uE0W2S005mR0A0NWN0c0@0C1C100O20G1c100m000W1m003WVcA0C000K10000
+00WC9000GG00WA010k0k1O0SJ00u70002300uD00020100WiCH2FJP08060O0o0q1y300u7q
+wE3z3PGA0FyWDCTBd000400yWGG800400m300WHAC30Lh20ym3p000CT60K96000000002WP
+V300rN7r7@600G420000001em2E10GNzr1sylKE@Rxn9uL0crH00000800YvjDuPSC2wMkAm
+P8@O3ct_auNCeRzJgcJbRhJO9XA00uv9000epC3wCUCA000xNR0800W9sJ0W0WmVw6080087
+R3K000Skk1040W000004FGejT681W0cwl1W0001010G0000X0G01040008098P0Y40WflVuT
+S3kVFXRyJ84S6408eyWW1410000W8080G0W05Gut90W0118G00H00000090010W000IW0402
+8e020008WW0000ma400K9d1pZR04005808WFsPGqF6000000W080010H0H0W0000040000W0
+0G00400mUshe0xA01000001001WnD2600210020W0W00400000G0m00028008I13sFF14004
+0020G00000msebB3_@t00C14WG20Mip0G0W00W4000X0G0004400800W4G1080W40020Wa3H
+2fvlnfvFW280e9@4804000GWOAV60880qxc1G4010000Oe080220W22000G0820000330qTd
+1@sd0040801W0rfp02000010WheRm3@900208XV3020GanV8YW040108CcL280000G01We00
+u@V34G0000040H00W00WG0080nvRW0G0G01830004000GEM63Pp@00080X00100W09W14qbV
+280000380y@FC0241UAq0000000WGEmq00I044088U4a1002YG4048002X200eu@40GXPFb@
+600Y00000G22W0G0G000m000200W02Ivtc84D0841088924000210GW0000e10Z00G104GYv
+ED01G0ny@600W0I0001000001148000YXWXZ_PG40WG63602X0201048000000G04G901C0a
+DZAr@p0080C2000WW8008000810100030008040844800100aPl1WG80M6D1W00WWG00Q@t0
+9200f_ZnAW60820000400bWC04X0041WoqFXpIL140G201L88059mI4WW800X0W00Wa022K1
+0o0m4m2AQ0401WB004000300WO0A2000OW84G404280o2200KGAWW4000ycJel2082100010
+0f200060I2684c05K182G100n410200YPyV3INpZ@zV020044000GG104X2OGXE40G0W0Wg4
+0k0W084W40GO00080O020010G405HK1G0080c010G008W54800020000j30Z_B1082000028
+28Y00Y4X4G9K02GAG0001H1WK680X5B0ycI25xx110000051zcQ0010002W00004X100GA00
+K10000a20W8JW0GAf0001I444O8C380X0GAeWWI0L20CJ34800000000120000q900mpNO00
+08fZ630G40WGW00W4W00KIX_LDOIXG_Ns000e8TuQ000W090200m01100W008400X00G0WH0
+I2001400090G0G000000010404180022G0G000W0480008000G020000R@@l20G80GW000GG
+0W00800004G10240000CA1H00Y0A088FN3s0s300WW0001Vir0W000810008W0W00000408a
+000cW5mk0HK04YW12004X0KKHF604G00711241oG8020GG80W000005GG80000L5WDOhO4M3
+400000W0y6L30W0100002102mTk9CIXAG2000000Y0IW000W4G8014e2W0W1G02001008201
+10H410000G00A0I7mW5AC04400100800AG0008X900y@F6008A00080810XG000H401W000A
+0008000S2Y1@@J2W00cU@CG50000I0000C0800000@@WOGGsBq@3G5WLl84004021000Wm38
+000q0uA000G_A0200001W0008K00000Q0000OubpL100004820P7P00W30000W4Xu200204B
+d1fqLn@@Uu7W10pC10uV00@J8Bc601Hm0X0X13YW1641524YmiC0GcT5000000Q6I3p3bJZ7
+iOfPGxobmIp830@J6j0000q1W@@b00J3Wqi40yCCBiCDMCz3iOQ0Onq00Fy0mIf1WbI3F000
+jqk27C2000W1000301WrWE0T0x000_108W34O0S9m0y3u0W1mE02WE0W0P0000n0e04001O0
+C2K4SdZ1e440G90050000Kl00mxSR02010406000C000G0nmP00100WE0200000C10y@@900
+W8400D200000@_V_c900G2GG26aW4K290fGG0006SE100mTk30uz000WGcP60qIB0210000U
+@@l10iCD00GQebM0moq0mof1Wbf10BJZ5000Bc600I52c5fVeLxM0dN0_@FXDfcmhlIaNNB7
+WlKHRj000ngZkqAb7chsJ0uK0GLVmaamCZcPGSw94qR2@mRmwx6010G8RO3005WSXE3000u2
+6tWBeD00W0000G0008W44200W02GG10000W8002082e040001W02C7k1G0G00020yY@3voNX
+0G0WYFJ00000020KW8W00K000Y2W0440G0X00A400H8GK4K0080000804W04G000002840KW
+118e00W104W040mQC64PW15kRG01601aG0GW00Y021YW16KIX0800Y0W12W0240HKG4800A0
+00O41210GC004000800WDItutV300400G000000Ot@C04040500200Oa7eD0080e0G00C000
+000EW502G000200G0002100000mQ0G0000G001800000060008000808WG0G1000020000G1
+32G000C0020G32O02AW80G400W1W00mX0014CtN2XwZnTR900208yV30AW801GG00Gm480KW
+lrC080W08GAaRtD0080onx60W0G021400G0080G0000mO500iAF300010W00W01400IG8164
+22W014G35m102G200000G000eWQ0D080G000YWXyP8B@D000Y8000enV3O0000010OGR6W02
+0G4000200e00010G0000c0kPW1W00000E3@@l220G040000G40008000400Q080000120404
+GW9010W02G6Gtv6KRl100102rCaVeC0W00008W8001H2W0010W0108000202GW04004008W0
+100W00450018G2@6aHP2gEU0QijYgjD0020000024DG000W00001HG0001000GG010008020
+XEgsWyJFX08001010c0W80W2W800G041023KW660G0W0000201szm0000OG0020102000mu5
+V32Co0K300p_N1G20040000H04GX00000e04X080000080G0c00W000GG01G0G000000WGH0
+4000M1D4401m0208085004GW0009004002O000000WCaX02W602O02G0000840ffRmSy9080
+0010000Wap7@h00G080YW00I1004Y802800008002G0080n9FC8WV300G4Cmd10480Ils30W
+b081X0W2803fA2L00Ge25WL20m0O4501G4WI1AG2NL445G2A44O5e8004r82OYY42000WY00
+Ww0C000008m0WO@b000Y00850O03C8I4443303O4214A9Z88GKp0oWmGgGG8GK08D42WC902
+9W04W0H080W4800Cpj7080415K4AG48404055H1882GeG4AG8uGuWW205I020G84G0E00008
+000940000200Cq2@60W11uqU3m3004yl401G01WE0e00244030GLW12Ge808024020W00422
+224EGWGW0O000K0448022040W00Gwz6ybw60J2104KA104H000850148000Xq2IIvGG0IBX0
+e2V3003000040X0W04WG1A1G94940e400004002010005cGohGW45200I10I00hyR001W001
+W02122e0G0GA1204AH4000H80CG0C008000G120u@VF0WC4194W204003a200024W04000W0
+G10029010I00Wu@D0800000H184GH000282W00029W800WY21040000pC06zN200e00006G0
+0G0G00Y80000WW000119GP02K04W02W80004c12022W00002010W_JDu@@Da40G00O001006
+0W81WA110Y0I04W00A2mm065412000C00YWC0UMt0aH9W0YG400e1e4000D8W01W000008U2
+00_yN23nG40000W0480WYe08W0Hqx604G200G80WY0WGrJ8DE3o6E4000280I4GWa0WK08W0
+920122O254H0Cn209Ga02W410082400WHSCGY4000801200W40IWger00880004e7zl20XWG
+8EYH80000GG0018K210000208480I81G022000i88mEd601WaiB@4_@V30GF2000WP2000O0
+028010wlW000wFeF2W00YlyqR2AW000G2qw6G10fD04005042WG0WU1008ip4000eg3GT@I0
+0Yb0m004J000001G0100040000041C50000C100004Y80000q30000WcGuzLd800m7@0W00q
+50K100OsLL1Wqi8WPoM0u@F0G4501@3CClx00000_w30Y_7W@_F000i@hfp0000s40h000e5
+j0mIf1WbIZMQb6BJ7Qc10GhI1WMQX5BJ3BJdMMS6mI00OzC3000CZP00u6UC000X100C600W
+101GJ0N0L0@000w0000X000M300S3K0W1GA130500WQ000mP000k000w0E0u2qHm4ud10W9g
+ZN3MdN200m8000D100O0K0m0m51HCS9008000O08000KZ01WPnbGTvIqOl40O10el@100arL
+yz3WCStVZ200_705mI000V04t@I3AuDNKwxhP200010_0yb433@d0mD1WQyb00C30BJ30Mc6
+piCDmzHQiOQ0m3U0OPCS68DMWt3iCjqOPQ0000PnP00000i000zYlqE_F000Wnx00O9rg4F0
+FFVRG0nIisV8000fgqFXT@Puky76AdXgPjf3VU0XN0qYT2NBTo__sG0408IXDY2bXqGV0000
+Zn00eHebOsT9wyFXqtFf6U3UIAXZGD0400G9Z6yET2fxQ04000080000240040SXk10020@b
+t0880000Iw_msWNuD0000221G4000G0G011000IW04108000W200050004008802011410G0
+40GWjbJ8g_7oeFX2zDO3430010G0W0000f0Y020A02eA40O0Y04G0004248e0H000880m0GC
+UrF11G00KGG00W000A00G02W00000mYE0r@R0G8G0W000G190000WGXHG500GA44048G082G
+WHX08AYWX50382160KK288WGKqGXYWI0c010028004GYrxD8Bx4Emt0000CleQmC_601020W
+G000m010W02005L0080800GO0F3W00080409PQ34400200W000K0K00G000W000YW0340000
+mV4000002000W8800100KWO210H080Y820IW30YW05m44300b1600XZ2G0840CH04m0Xe00W
+250G0013120010000050QlpWMvzu5F3G040E5j1W02040000812GG09nWR6iRk100000W014
+li1@kd00WPiKob0W8W809000800DpQ00802A00K0O0W0G0098101GaW2e8a4800G02004001
+SWS5G02009004cV2NaQ002YeZ1DG000I4@9qzV2401000Y001300580mt@F0ob18Dx740400
+22002OGmAJ6800W0m0408W800100W0000G400XO8004W0080014G0W0G8xZFXVmPOdD3_@F1
+W002G3004008X800Y0009B8000208000G0080G000W0m0WW00f5vD0W00GLWC0000000Kl60
+0W1QU000200400G0000c200820X200WaGW00000I01004J0400000080G040AG0010200G01
+04W0100GCwS9cid100104W800000Sag180c40026O0041029HfT6amT2dvPmOX6q9l100UnA
+pE1020002200040040000G008CY100WW00WW8000000010a0000G0000W6WC40H000W00260
+03008YJ8C8Vx7_j@XvwD00G00004agtDm00C9W00YV_D0042GuxFW00081w400000yw188z7
+0002G8mW0G80000G0G00b800400010002010m8W000G00400W00090Knl1jYdml_F0800fDV
+3Izt008W08400G000IO0G414H012j0384oO04G18meg0000E00W01828000G4060224004O8
+rU3g@t0000mfAb010600020010f049aWK201Ha40b0a1WI3Y884aGee1X0WL04o00WG48YG2
+GA23GX4808Y84X4K120a10411W0008YHB1000Y08W800Y0aUU200WG10GW8GY26H4W0W81O8
+25Y806W4800GH02G000g80G0m0000W080000808600WW400100840n@R0C00WIlDeey40W80
+2000040Y00h0H08C4O1q2W09OXG11H0K0g1WY010J082m0XuW0Y458q4382IG840GWe0O001
+Y80Ku830101000ASw83r@R00020GW000GAG0000000WQf230500iuU200001e0G10b021W00
+80080000G00G00000K808cv7W000000420P805K000050QG120WO0Wi2K000420800010G48
+00e004e082050104G0WzvD8GL600805vk40000G00XH0000810Gy@6GeG04GW0GZyFWK0001
+40a00080G00neR0000iH0D0000050000G00ZnO0020W3kDW80080430Y0W0a405000009080
+0GW0G00008AO0246G00H80000048IczCS2g1zDQGYzCW00800mG802000400GG0350000020
+4800000G020001KQ0YWGgs8Cu_T30022000000m1yOwICjW121S2010402Y8m4I021G0182G
+G0800100O800000080440WXIC0G00O2jF0040W0004200WpkJ0000290W004000O0HaO108I
+0002a0nM@600410000Pdj9008G002Y0W00WuQO0Sx1GvLC00000Y080800KG0W000410H020
+0G00200W0W0G9ACa0W08X01K00MI500Y0Ie010214090W000X00008QW4g4nWIsV0C001085
+0000O4000800q32801pc0Z0000Wc0G5zo00WB2000oMH002ZmWinD0000BP10W8VP0C00400
+404M000WW6_Vt0000XAW200G3m0080eoa400n00000W9m0GA0CyOS2dF@0000V1W8g0u@V10
+W020GP3BJ308e000yB0G4P00F_0byF3_5001B0000r1O_V600eEcQD3HbP00i4024004C008
+G00G000W008810GG1CD0IpI0OPQimoqmqPfnIMS6a2W1IZ50YXB100G800053N_10W400W90
+006020l1K0S16300O5000A000W10003W104WAG3z60002200G500WB02020tC0MXp00000W4
+T02HE10006vWdW0G001W1W201GD260A000r804GCv901038Hy4oAt00200nmm0GP7WONbuzU
+308W1uFMQH0Kzl0_FV1W8o0GLNXU000Fy0ehV3sYnWTcD8fY4000GDcV2CpC00WP0S1W1vWR
+WqOnoCzI8Cy4YKW1M200iCD0OPQ046TEhFpmHp6S_l400AbRMhYnfh0200G204Ki@9FRlnHv
+Lynj4L_R0000GM300@@dm1D9yUi1Rd@600WWKpPOcx400iw@kEOVbBH5u6aik1JfpG1yO0CJ
+0ucR6gdrWVoCOD_4_ltWvsD8102w4s3402000G018W0awa1XlRmwx6CEU5L7R00GG000822W
+00wD_1000000kM7lFXVsDut43020010G00WW0W0G00e00280004000e0G00004040G4W0880
+X44W281qSU2bqz08W00I00002000428010W000WmlU6041G00YG81Ge040104001m0008020
+00AG4060000010020804G001000X0mGE6y@l10fE0opc100YGGW000a01H4Lm2GW00XO448f
+G065H9eI90G01013iG8216088W0KG0LoSF100W0G020snF10G00000W1C41tIl1hOR0088Ww
+tJ008000G01010200020004002003020408040000111oLtW@zVWs00GSn6C6l10401W8402
+1Y00Ha2C0W8O8W128O0Xe294Y0400238020001Y00O08C40629WW0G018myy9C7V2jpc01W0
+000090W02000000248iO3G00H0448uxV34020ixZ120010000800300800008000WW0004gP
+B100dm7t@W010000000C2C000G000410460GY008WGW00100O882bG0102044808Y000VmdW
+040aMhV0X10mJ_6004001600841W89b04050A000G000W0W000600080uhIC0Ko0y@@30240
+00820G00G005000004G0C000WW020Kil100m041W2G210000W0820W@@Jefy400P0jnl1000
+89O23GY0000WXq8ZI0008000J40G8XxzDuWQ30400iuk400WGj400CjJ20002G040DFl1488
+200801PG2001GW0808002W20W0W40WG001Y9000WO02X000@@RGePF0002010WW0C100WW80
+060gNAXrpVeLD32mt0I010002GQH73006jjJo0GWW008m000G0041000GC0AI0001H200200
+a00020000W000101G400G404jFP000W80800Nlp000000G1C800000YGI00W0002WW000400
+00W80M8mWixV0400patU00000Gq3m72C0000400m118H00030002000090080W0080006100
+8000GG0114a_N2frN10YY8WIe0KXc082nHG0W80F1C090540200040W400000Wm8Zz480980
+0000WW04G400m00G0200_Jj2000ei300Qyt0W6000094X3COW32810A04emW641X401Z1eKn
+H10PA0000XW4802X4H000090440001M0H04600000G0000HEac120u0GAG8W0L0A0XYoWn00
+0W150C8200W004006nF3005G0XC0GaH11W00WO0A0010W0208UaXX@_J00GCuVx90K000WWG
+00014138N0fY10021I5Kq09G08088010JKAb8242mGW00rHni4iGG5LA10G410G000YKzm30
+002X12800bKYe8W000Gfm@DWI00000WWKmIerV6Y2BXv@D00800G00et@V0ak3mW@C000AeV
+D300a0G9500HG210L00044W2G0b00R002YK8_q4G04000W000X0GCyF0052HH5nB28025L40
+0W0He0W0Cbl1tgA1100WXib8nD3EOpW40Jmy00GxXF00S000WH8HWW0000041GD0000022m4
+G400W0080100LXa0W0eex3JeLE3_@t001I8000004O80W0e00004004n7Q3vSH6sKsWIuCu@
+V300Wh@oB3020000600m00440020G600X7440G20204000P0WO0014000I80G0aCIknWFODu
+@@70009e400G10Y41e00G00E4B5Y8024q@k10e00Mo@1d0031fOm34Li@V20a40YmF100G90
+000G8Q21Y4AWW002AG200W40Y0810WG0020042231W042181WW2WeK0ZG040G00800G44X@@
+V00q70000Gl000dHO0w30YE0CumPIgWpWl_V0000TCS9KvF38E00W00lSOj1000Y50000WN0
+G100KLV6W000uzV382C043d4oE0GnE00JTW05x0G0sfFU1Wv_20K00G3Dav@30uC00G00004
+yt@w3QjNU00OBD6E6a6cd10CFBrQ30WbM6QM5iCDyWdbOwC0a6B1acf18DM200HNp000mC00
+Wn000p06063KnC3WX10033WnkD8BO3oAFX4tI0606040C00080000YczsWO2V0aJ3m@@6K9d
+1vWdm2u60040G080uMu643N2m0qHI4tWjmh00P70GPF00hEG0bT84F_0180mq_1W80000040
+WK5000WV@dwV2000u50KH100Q55@30Cm0Wa_n0000VcY9moq000fHBQ1W5J3WbO9WqO90MAD
+fjKQiCDBPPwq4C8ZT3m2yFWgLJBUT6s2le9ts00W4IHuQTwD3BtpGQu9ipl15MpGAG6y_@30
+jp0EB1ZTzDuxp4YFdA8000ta@moyI000Wnz00GxwNH000u2z4_U@Xbrb8jU6_h@100xYJcNn
+Wx6020000G0GSxU4OU5KO00400e6uk102040W08G0004000240WW6tJ80R3EUtWqvI000G00
+20Wo_J00W0WG000GVA0F6c0010K000800100080004a000W00n0W6hD008080G0c5UJ0I100
+4G8G0W0200046GqWiHP0A21100131402G0140G0000011G08400O8AW0040060W04Szl1NiR
+04K002000NURmkz6081O14WI0004XKwD0000BqG0080000D004W80002G18880G004A0WA0X
+048280AG0u00g0028HO090001000Y8YW0080W2220W1WAmD8S_A00010WW4G5000080G4040
+010040100222018WG1R6CTX10WW00004O082uox40W00W00040C03O0000900000W00I000G
+031080000610m0W0G00C10I8020000404014200G020108102000G050C08GW28WTzR002A0
+0XG02624W00080408IX7011JG52WW000228WWw@D0W42W0100HG08nJQW000W1uCul_7_pt0
+0WG00400oUC100000wL0_rtWRvD0W0004W000M0024m08G4028M0W20C0028212100000W00
+0A240G005KDp6aGv608004040W68GOpB3kitWP2U000X00W00484G2G0W01401280W008mq@
+I000WXc00G7@Cqrd1j9Q0240016312A080Ga0yRl10009W048008000W0me@R80000800020
+60C00G008000C904012001010001H00000004G400W48t@4044400W8AjK9k@t0047oNuama
+xC0Y401W04mki600B001002440200W00404G000avk1vVzG8k903WWX109o9168680WG0200
+0W020GG2A888000bdw3pT@GxdL0OE0OTL60900040WG00G0004020G42000030I20000I006
+800600G0002G00OWi8w600G0a000200WG48900W004000PXR00000K004W010005GCpN2000
+8Q3FXxxt0q00moPIyHi1BePmyu60200WW1GmFy6002WGm00m5r6Khl466X081I8G60L0C8MC
+Gg0B04040OW09000SXj1646008W0CoF3014000W02G8G2K05C020WcYDOiV600Sjjql13so0
+084GIe00G00IH00e8K11m440XA020n4Y8G80103G020014D04e000Yq_m08KX22e21i0g282
+06121W0O200Ka0YGXH80EyCG4GGC048008W048W1090482080K441e882eG0P123AUj2WN50
+nip0I1W0I0080A400Ceaem02boIG0GK64H108K0O2804W240KGWb4g0G901244004402K0qs
+76K00G0500izk1000W0G10aae49k_000W100208G040a24100WQTj4000WZ50001000W0004
+00a5xR000080400m885e000G40IW2000G180000040080W200G00iTk4cMBXv_P00L00Y46W
+C_D00010G00W4PV8uv4QYJ2200WVvOmO@C00ONly53QxF10G00WW000002zIl100A0000010
+421008000AuvlDuDQ9_@d1W0200082010000o00000C28020220ViRm6@Filb10004_7B100
+000062carWw_J08i3GZ@90W10OZV30G2e012000W0W02m08G0200G00480040404101G0201
+00W0010@iMYBuP00mG04W100020004208020010000W0W0000W80fyd00O402008e600g@tW
+IdJ0W00G6UC0000Dlk4QtF10282008810XG860X4022W0040WWG200Ya8200X042000404X0
+00Y00G420wKk2040040W4QndXsKJ8ovGGi4030WC9q_4_@t000a7020000GYKiN2000G0a84
+g00000D000000C000DbR020800010I00000G800000010ncWCK_V200Wu50YuB04n74WoEWo
+c00W10W8_0G0200Ks3G5@ZGItCuh0cd_0000ywFp200m300000000u1eZwAUAF10m3F00002
+3t00CD0qgK0OPQimoq0t7fnIEu60F0iKQ0OfqmpIfXvP7XvHER9G4C0K000aY00W8lJ04060
+808WJ_DetN3080O0W0m81S30m80009100802000urLJ0000Vsi6004000O0CYG0G100m8200
+YXp0O080XXRGEu9000G0W0Wngu9amT5YF04XV00JT8mt@0bDy1AR102800nl400W30061Lgg
+2@@3meeP00m10LL30gU800800000@lwT5000@YNdXD@D000mICS90FyiCCS60@3imoqOnqf1
+kF0WbOuQPrPFo5rWlLC8xR90Dj0KyT5JSBKV_6qjF30W046qO300W09JN1000GQ0020008gS
+FXuvJOg06kjsZFNhOkSCAHdasUV00WYMHV@SLV57mL100018000zOX100X08H00DpN1GG701
+0000240gmd1002001006Vm60WW000100021TKV2lvo0008WwlJ0080mU_60H00W00WGww9Kg
+l1000W040000004000fN10001G100200105ahT20010EmtWwiDOnV34008qGM22800002080
+G0OOx4U@F18008@@R0500000W000O0005000212I2004G101020001410202082108e000G8
+aW06G2114H02H0W00084800100K000G004G01Kml100eZ000W00Gc10W00001034W0014008
+02002008Y8mdy60G00040GGM_FqG1600W000W8000Gu8D30G000G00200004WGYZwDG0W0GK
+z6060H01Q000G430KiW000IYun04G400020e000ixW1XsR086200040gW5000W0OG0802100
+00W480G000W0W8204wk1dkR002041400HAa000C0040GlhBHDu6000Gf2U3000W000G10002
+008008050000100408000800GTz6KRk1K000W13GqrD30G01E6t0000qM70001000G01i_R3
+00WG0000G00WmaR900W000W0G_cOiyj40008kCm01I4908G001W403000001W00801000fwp
+0W00WmZD00000404000000001ZuG200RRHTi1A0GWQgyu@@AW024rXX1X@O00W0802040210
+0200iaf4000IaW800485uqV3_7YX1qJGqJ3GVnFK@l1240WW300inl1NPxHk@F0W100800W0
+1G2m0WWa08W0G00Tjk15CRmRuF0W00u1230000G0W2e4B3_F@1000Gc300AH4Z5zs8O6F08G
+4W00GG000W80040000001H0W00ale1G100QQ_1G0000WY108004ge1080CZsa1010000MEtO
+@XRsD8Q_4Uvt00440t0V200eO2GLf08m04518W28K0N8304W80C044eG0003G4a8F3000100
+W000X2Ge200MA08H00020800W8000Y1W8000e00WyzI0mk00400WPvJ000Wmcy6W80W280G8
+008eLyDeUV3EC_480054G81Wg48f4G10129AIW1840080WG2G08000889r@4W08000I0000J
+0W00GmC80G1A108002H0G0204nt_900808qC3wtN2020Y000210G001218x6FgxN20420G0G
+0e0i0a@l18100080000P10801qp_CqbT21tR0090WVnJeYR304000W80020100W_WwkDWI00
+042H4A000000H00G008C0eUR3_H56000040W0IAFXrvCeiS3G010KjF300150000Cuc10008
+W0000G20m5000W0000G80htR0G10040000cAH0G8800080045GzO60I0001000X0004G0000
+0Il3U600080a020002adl12W0200081001RiS3k@E1O040m001100000I0HW02034CYyrDeM
+23c_s0000S000Gm000qbl100W4s5t0201C040OEqt040402G086gAa8@V003WWW480YGH200
+0GG4W0G04008KGW20m4G0000A80M@F11G00bmR0W41080W0GGG8tRrW3_DeYu400CrkvR27t
+R00G00080400G4000100820W8200H0G0200hNTIHR9SwV2K00000S80000j7k7o1tWWaDOoL
+3GmE0qaS2000W00S000G0d8000u3XM20800b0Wsgs00Gi0004WO2S00000c800GRJC4J_900
+Y00W20m@@1b@@320_d0000twF06000Ch_00s@01000iwd@D000Kb0G4G0000WAY9000Wo3F0
+WuY30sz30tm00Jy@0000CV200zyBXf1mIf100HWpGfrg8400WY00G4u6axj100Wc000O0008
+2G000012Wv@D00C1m7m600C000c1e000KY1009YR000408000G0OYwXp000iCE300W10000m
+10400040PaOuC00001000302000k886LkYuyn000aj0G4V100H0g000Ksi3WH201400G10Wy
+MO8Fd7CC00GTl_N0G0100MK08oFVUOGz@C0mv0ufV90mg0moq00ppG500000C30000giA0Cd
+3_C7MpmZPmSVE3y200@IxavhBgpV3o@t040100008004000a08pjD00i1KOm6pB_0080W_jm
+eCkMwQ76m110niBnEqC4sm3nuqotmIimU20400_Np0W008NQcGuSOG400g7UgG0000005000
+0qCz900GGe9U60X8WyZY1001WEat000GX0040kxn00000W020M1p000RK040002W0G04000G
+1GmvIC4d15udmDuFitl4000D2ht081W04G011A20000H008H0100800080001G2000004000
+100G0020080G811A10100K4A0e84000104200010040H00Y001WKLy60ua4efk40G800110e
+Sr4808WyOl17lRm8Ej002000041400mX@DWW0W0004WyyJ0010000G8Y00W00G001G809004
+0a0006W0G0090K000110040G00G08140G0200000erPW0G0WW00200040O48019ydGjU6Kef
+100m0E_cXpzzOO934WW08004G809qEv6itk1W000W062yEl1040000A0000GG0m0001001G1
+00206U@W14100W00G000000OBO1@4IuFX0bDOJsD2xn3002042406my100600102Q_t00400
+NrRGOz602804000mAV6C4N2r@RmE2600B1000400W080400LVR0100XXXDOmZSQptWkZP0A0
+0X080G300038dm7r60G400840010001002000014WG00G000m000081a00080000080000Y7
+O0G00900090W000G0C0000A0Sw3X0K020040ugF3AWx1K000d0Q00G200A00W02GG008G00W
+0m00640000A050G2Wg3@100FC80W00404KIJ8VegY00WWYqDuvz4Uus0003000008240S_l1
+0WW0060H8W0W1100ubv688400200412YWVuJebP30bx0Mtl1G000GW000G00W00XGGgy0WA2
+00H8a009000047FQmhS60200W0010005ftzDG00000290088204eW8H4012802111XY24100
+1G04102ut0140W0G040000oRG0014182100Y0W2000G0W010GK8UnLU020H0a004X0200G8a
+f@D0008800K9185oa00CG011204900G000G9G22CGG1aXK8081e021IKWA0K220HX82fGa0L
+X000IGkEU3040000Wec08224008aG20004Y1W000HY00500Griy840087S90810H90W4000P
+8794ik1K000Iht0I0006G108028000K200cGZq908000qsG0010400W20GAY0020X0000YGW
+KYS9yRaDjxA152020A011r_0W0GaDrJ00080000600W12800001YSXk10012520400000wA2
+G3_60400W040400o00201Zz_pqA9CMU26G44khs00080p@R0010adzJ0GGG0000C0600G008
+pCq0G2GIHXQ08a1000GWa000000090W0216G800I0200XO440Q5c7W400pydGu@600481X00
+00X2eU2D8QR3000G40l102040410001IW00W82W4840GGF0Q0001XXuD0ajGGFm98W000040
+uDa6qSbJ0A00001hax9300021100kcl10200000XG040G6qA180aK400004080000WO90080
+P2000ICJe40602omt00840Wh0202whipyF0004XF000000BT@4001400K@7G00m3wCG5G00e
+m220G000C0t_F000007G108IL0Ke@z0Wz_P000@B4681GEOG4KeW8eW400XGmW00mXB@4sc1
+RxaGYu900p04000emW0WLnDG8000D10W0vCWE06000C400GU000l100O0G1W0W1W1G61I0N4
+440000tXZ0Y1q443W1G703060N0k880_P0yI8CZ_@0@@F0u@F0000gqD00aGV2OF0yXF0000
+Wo6e00000200GE10ukR4GL000a@d@tF308000m10cn4003C10KsDXggQ6p0mCc1WPC3e@100
+mfUL1oCp0a@1GLpCZgK50LfAG000W_FTDaIjsZx@D89DF00W000uaF1EgkNSZJtD00000200
+e3phehA3QTd1mi80zbFpmYXSfl1hHmJWyCuM008tFU2YRcytD0010maw64Xl40K002RF1002
+0006XZUWA008W000G2PtWcvPuNV600m821000Y00GPS9yNV20400smrWAxD0Om3002W00002
+200W2S@XLXdPNT3c_F18000hkQ0600W1sD0028Ks@6004803040080YP1D0Y88GIv604G0H0
+We100G2C2W000008002000WNZY0200G02000W00C8C0GG004m008mm_y0020CCU3_bp00880
+r_Rm1_68W01u@V3800K1W10eLV30424W040eZV300W30WO000114020001G0080000Kk1H0G
+011404G040HIW00400025icj1RuQ300WWF3J0800mVz6SqV2NzpW02030000m1042WB10001
+00G8o3q00m0Wxtd0Wd6Ww@JOUS3o2J8010020W02@r300X402G06jt0W00008C00GG08W400
+Y0000G40000o4080Fss0000K6300QxO90000G024sFnWjEb8TV3Yyt08040Bpd0004000600
+0a8018082W01WW0W0100HGG07zR00Yn_9GLvZRL4004020008G0GozF0201000G1008eK7D0
+4000100WxvDu7V3004000080Y00mHy60110080008k1WjHZI4000G08WJHt8WG36as00G100
+040EvtWu_DG4000800WDxD00120000Uy300bew400O4WG0302G0kHqWdbU000042W0GY0Y0z
+cR0021G5800GY0014W028G20H00W000P86100AY00G000W80oGG0000AdqMT200G2A040002
+1K1000180Kp@3820000WW08W00W0G20112m00004001A400468485G80e8GWYAeW00X02W10
+8GZ14XGI_860yW18hz7000wa0uF08400WI00002OMUCIcqWgwJ8nP30000Emi1rec00W0004
+00000uy500y@l1G02000G000441WXeG8ky000410800200000Y0xyZ100W100W05vQ024100
+0W20m00Qxj2010000EmUDX14820TA_30004001001G08000CYU8l@R02000W8000G0602W00
+0I00000fK00Ww@D0062000000jC0baBH4P9CQ_C080201000Ia0000GoQxL4el1Tvd000400
+0GG08000GW4Cxl10810@Zd1000ae300gHP90000e500wetW1dR1n0W400o40030Rvp0G0208
+00000e9A_d1010CAW000Q20CqSE00Wi50yyB00O2G000034W1@V0yo300OcUd100000s1000
+000e_bC3K15H000220L100_7G0G0H000006O@1000W@@7W@100GmD0ZHx402300OC00010lQ
+l28000m0G000W14_T200051O0O0mG00GD1GOu600C040G0e0m0WinD0000hj10WkiJ00G0CY
+004Z000HNpZg30K@300PoZ100O@s_DmV00W@V50hi200vV@OGLWhy000004101eVL7m3Q0LO
+zl@V3UG01025a0W7000aQnRJrfpvqdE37Zd0Gr3Wb2UxpRFknrWe2V8cmV6RBg8hb00mJRs3
+767t3Hjp0G17W9uZ220Wmix900G020002001mVuPeV_40800EEi100mW0G000001CeK3020A
+qVl100G00000oJ40000mG2_6qRk4tupGKSd01008GD3WW0A0000G020GUz90008O8L3Ezq0W
+W0008004010CBR200080W00G0100000810200A00400000KG000501080100028000G21008
+G0210OmV3ofS60001RkP0W0000K00000X440008002600mbG60080OZU300WGG0800W0m040
+00050WrpR0802G8002208000G10G80H00410000W3S00A04W02880020200W0200004G200G
+MNdXBoPOy@JW0000022OwmG_zFXphCur@4_RY10008S000IbF1W008bhzp8agqtl17_RmX_6
+02080410000000404000BwkE1005B200000o0SJGHRPt200802080dbPG4@6G000000W0Ge8
+2010WW00000O0q8l12YE0cwFXdBB2000W010G100400W8_ta40401004000114vl1W0000G0
+G004a00G000002G014000uX80080000004G0W5T_U2@e620u0004002CZ00000G020GW0A04
+0000045YG80E@t0G0Y0v@R000Gd7vD0800GZ4daQV8GIK0W210GG000900G7@RWG002Y00a1
+GY08500G1WG440000224K190Gng202220I2a00W00eWG0G0000BK088W00G0WG200W0G0enL
+aASCX8Qt00880GG0G00010WG1G012W0c400YG01Hb0000B00q0X4WWG80004G10000Al3W00
+0WO2fO900Xe001W04000W4083RF0HC0G9500WW1GEu6010K20M1008GXptO0800000gU0000
+W08b0400Sx1I4Y006VEXk_t04008W0W00001a0000W8Y030200400I08hP_P0008200000vE
+008BWMas0X1507NB402000100W2O2I5F40820014000200W30OYV30228W0A0008W008025H
+00XucWj0000100W100000HqmTH2000W00G0120OIM32x730W0eV0c00108912000G0450G61
+e12GG0E1F1006w00a0_ctW7WB2000700000A20pB72Y30000mB000010200008s10000_XG1
+0040e10U5FXcvD0qx1d20G0Wl2G0000Yze80KT0WNV06QUZ1@J00@0yVw60eiT65H00CWE0A
+u10utV000H08000Xv00000mCc9G0000Wz1022Uu1q308GG56akkG2200G5000101000JKvYU
+00C000g0A0m0CcH5e610G97008400WY000L04080g81oP0020000E48200W00103W100WVMB
+y510068fVI4V00000G4_G0Gxx6000Y000080G4V1W8_00000Or00000W@V5W0000mg30Vr75
+000eMqVe@NIQZEXkkJ8ww4G600ChcMXOZX000WTtPOjR3sg2300A6VfFJiumC7U5zPX1080W
+kVV0am3mYUor2C6rXpmY_90000Ja00GM0UiTTE8004oNFXs_Jul@4000404410040qoz9000
+AeuL60O00Tzl100eZYmtWKua8QVR00020140eqC3002G4Q73080000G2aTc10004sIp028GX
+Dod000G008W04G106Wp000Y0XXR0mi4008004GW00000G0101008014GWtvPef@7_vE40001
+tkRmdv6iyk10W010010G0000W5Wmgz900G0000e04K1X@@PG0040600100G0200400208002
+0000dkG0080G0GW0G000101800084W0G8Wiwn8OQIW000000200I0m8LUG01800Q0mN@9010
+0000mW0O0WExJ0400w@@600eOAJn6t8enQ4_V6Y@Znu@i@hOOR3QVCa7_DeVsGcjoWi0E9A0
+Kg_tWeD99A0I0042aAGKZhy@poB100eO1qPA76300fjRctISyX000E78006G00020AB4F4C8
+00WGpbB18u12mCG449aU0a2j8AA2IWI4qXd0GK0d00000W1SUg0E10001000208I0W@d0000
+10082C2W100400W0fw110mV204G500WU00H1S2000G1008f2u408B600903LRGN@Ly2W1000
+ogmqWe0muvu400CMd5m9f2eoaI@79r@FQzVZO@les@XyN70e7P000Cfh6IOlgKslJ_aO2000
+00ZdG6z1mC0000V200LxP9000Kn30y2WP0cIbgaGdPf_4szd1009o0G0GYyHYUtFPgWVsutW
+enguyN60Ec0y@LNTkxX008WI@31000Cv10Wo7lA4VRo@tWp@P00mhyl_BD7z30C00cilYVUJ
+OnP3080020001X048400WNdJ000Ym3_908G1O4@78000ij@FY0000G014jl1Pxp0000480G0
+5yR000G1080000010080080WW600000020G0W4O0G8W820W1004G0020H400200008nZ0GG0
+0010m81040000X0400000800010m0040000YsYDeVsMoIt0200000G10000W040u@@400W4q
+_T20G00W00G00000402001Y90110G490W08He0020200W1006e002W800W00000u742W000m
+00m02000000K0800000410040G10800T5OGjzji4U28000QPkYNNDuiv44000ysj1Rod0800
+mVcJ040010000WyD05dRG336qEYG00G0W02800004000n5qCqZF64200000600W40G10Or@6
+80080000uDu90000c700OcpCG00WObvY008000W0gxiJ000WScW10002JmtWpsJ0802002Vm
+I0C0005Glm6001WuvQacpD4001W0000WW40yw83BPR0300Yx9C00000uq6001000W080100C
+zX10810ks@7G21002022_D4201008G0gxs008104W04W800020WG004HvsFGL00e@@4W0W0q
+ilG048G402000W1000ZuapU0400GW0W4WO1A0440A00Ge004100810GC0060008C00A00101
+H040000mB4010000200280000H0802404LGr_@0W0140m0nHq6y@V2000O6y@10W0WbLO002
+00422m2a0Om800004100000GH0080000C0G0110040008F00GH000802241001100H001402
+mNyKTen3V_d00W0owrD0H000b0088W000G90000W0400006000800000C_002YEdXnZAAjyA
+kqtWh4buJL300G0WG488XR3G0000W0400A0mv@600eE00400001WI0C86W4ct@dG4C8sL602
+0CSzQ57MQ0G02WvJCes6380000W001020Oav60Ud40W00000240000000C0W00UjX1tP8K3@
+aKBk1x@R00Ge4K600W00G00000404H000400004100000Oy600yWZ10100G4W010000H00qT
+zEbEk10N4Wcjl2081G00000K00002M1l00GgF9000G04010200000Tuh@d000200002D0OGm
+_Qr@V200WwC300000m5@00W@X8210Hy20Yi50yw30000GCpC00u1ggA2yF04z0000S6D3YFy
+04Vu1cLLLyFW7egg863W1vmn30m0W2PC8s@4G00001000203000cWe0Out73000c1G000WX1
+002300OC00000L06000C0K093e0GY0000KCDWaH069X0C041O0e0m0mO0C8SVU0K0G060_tl
+0000yVr4vzWgx2mby600_10000ai30UL70e_70000WbgK000pU0k0C3J1D3000kh1UGbgqWc
+1pUKgIz0SCx1u2oCC5qC0atBIXXzmbQCKqR57_dGgSC00@1eSEXUkM2GW0GN16I@NFaEz308
+04k_t0000Kc5002yFXW2AA04RW000qRC6004i@@dA1022PBNn3l6q4k171MHOp90014G040m
+@@60k40OLG64000S4NH000eg1E1W000000I0200000e2020mrv6yQ7300G4014000290W002
+G000000W7XR0011WppDWh00mwX6000K0W0000G000202fJRmLbCaUo9JcRGZY604X08QW440
+G811X0uSF3W000004100g82W1800000GG8080020000W42X004G4e8020H048e040K10W8YC
+2G41000Oh40a0028Y04H3XK000H51409W00100008GCJGBp@z00400W204G40G00G0ceb186
+O20800040000080W000210084GWpmn0120608G800083020020904800800YG00W10W0Uqb1
+WkJ00e0G0100022W44W00000220G0400000W10002u@@BH00G000GHjG9W002eE_4Mat00G0
+7040G41W0000XW0WGW00800424G0Y0100mnp000000X014KG08108u018400180u4892Ykbh
+WCOMI6AqC141000O00ofKY1gP0200041408800rRQ00W7JG000G004xcp080029DcG3w6000
+0400YmIdg0008uik48000ayl1f@PmH1600G8000Gm9sCqjE3W8W8100002G040101W00nEkD
+Gi_300660X000tiR00002082001014GGam000G0W00O40100140W00Zrl5H0041a_00G0WbA
+J0X0GHTbF0008002200O4WuID00080010000e00410000WuS00uaK30002010240002110W3
+GDW0000G0G00080TG5oUTX0041008200WGG0004W00G0401yIB30020Qgr000Y0000W000G0
+0010000nyc600G1N480maa68004OvU3YjDXO9DOvsM00080G02uCT3cED1000382W2G40000
+H000aW0290WEzP0400W008G20040004100W0W0002WWAOW001W0C042K00000mJZY0a48eG4
+0H0GWW824GO0100Q0000I000C05ZG000W00310224Y0410mOijG045vZI3gqoW@@D00YWe05
+1002O0W92HW060KIR2000010001W00002Gi2Y80GW8404W0W0702G1A02008000SJ200G404
+00600202010200e22840mG0W0W0G0020m0m0K00L00G0000070gVN502W2dsc040000e0008
+400W2A1003000e000W0440WJodGki600200a0e00G00G0X2K8K20208I100W00014L2000Cf
+0404a09AG9I00a0W80210O00WWG10UXx7W0002000IK8XJID00400801W_yD020ImMbI000K
+00046Y000G0aa0m000000000141000Oz32040X8002480000300000u2Z6qsB300G0Ez7ZZP
+zeCM3W020a7h108Y20G100410000W0104Wz@V0G020082350W2C0W4161Jm0GJ4Gy040Z9S0
+000YGK44Y18eG0A00868c000W000041180W0CNS29oP00G6WqrcPEp42kr00W0000HW8H0W0
+e480b00m@@F852XW8001001A40W0VwP00Y814000002SW0e02GGW2H01uJk60X8GG8000001
+010000240410028000041nsrj4RP2001IG80081QC0a0Ge600W1cD0n00000maZib009Ge00
+004q00@@R008E0002GU1000PXqA0000eD0qds90008G200n3qv00m10Cm0m@@FW80UoR00GH
+q6GV0000aJl0K0W@@b00_lWggQHggA00uVCbfgKfg51NuBgA0006Lv@Y0u@4nCp0OcP0W@@3
+kmN00_l80oSHcnyY0uVCP6p0uFL1Fyi0C8uwM82W00002XC00000P000mG000k000G0K0448
+3G5021006405w_00000X0004102W105G5GBWYWA2L0C000k90e0000m7J40AWY0K0L0b0O0g
+8K1m000WX0W22GW5WX0B030M060C0C0O012m00iJpM00y@300004O0m@@F0Ks100@28000H8
+2m@@@p0r1000m1500ug502880GP7WCz40hMT05K0W8_00C000oQYN08Yl0G4VG4000ARz100
+00Yu30y84WPc9890fGI0IXWWW21XW00005KMX@00W4OjIFIUMY4gD00004D00WBhQ9lwGgMj
+YH7DuE_4I1t00080vAb000000GG0000012W0KYU2RpR000JxMdJONIR_eSc1Bn0200m@mL0C
+_1e4Up80000120O2P6000Gi0@340000800kva4C702EytZaSd1106G2zF04028WB30200G00
+82000o2z608000482mRz6qTl1jCP020eWduJ00WXF000mquDG00080G0XQyJuxR9_@d4000Y
+W0104O00000G4WA014005000Y00n0EXoWmbD000C04020800801G082000200000041410W0
+W00G610W0Y0W040G002cP94268800000uk2O01400H00L401G00020040G400G008sz7QkI5
+0808800P800008H001W00080000400W400200X0008_73000408G800000009000OmFhR043
+020400Y2180060G210q00Y0000H21000008i3030H40Wm0004208G0W220004400ztl12000
+otV6W00040W0QMtW6lC0108Ikd6S7l1400IC00G00000402IKz640E3V@R0400008wWa0400
+10000mnFOU30m40iAl18002cFb7000HnMnmMuISel14804hu@10400080100Y90041W8WX4H
+8000000200300000E908zU38040SXh1fc@300G01000C0H040m10090On36_DdXvjD8dC600
+1Gykl14014owt02110C082000Xo042O1430020041400G0m7k@y_V208W80420G040OGH300
+800W008wV3O280yuV580026_t00G000W2080WG000000mtCW0004000t@R00W0WuvneCUOQ7
+t00820ZsR0800040048202QYlYOmDuAV30101004000X80000G0018400007N000808rS3EW
+mWb7dfHV9C0H100H60H220GG00W08000W0000G00C000G00088004H4eG00Mtd1240008000
+004GnI0WYCW8260H28IX00bQ4XAA000W3sG0004008GA08G049a04qVZDX@p0Y0W141000W0
+408000448008G00200018004100m4021004W028200082009NRGv760008004I0M04008800
+WWO0g0X03GK4W082010000pp49W018500041200080010AI405a_3W0G00eaI0e4Hg@sWVzJ
+W201002000e410G01kgF101G2W400gqq00e00I4I000G0102Y0c0e400G44K00K2000410W4
+81000f00G0G0cWI004W_bpWezp10Y007H004G00040000100004101G0080041008G1HW000
+W0W0W4W0oFvCKTF34100G010G9G5004e00CGC8I21000emZ200050010001WW00GW2200GwD
+HYrzR110020m0ujHD000G101WWuiJG000008IG201840901600K9S200W48000W80000G044
+009042O80110209041G22G000WupBkD08I020400380001W0YYrW_wp1W00002W001900042
+U1b1000cW00000108100ydp4sJv10K100102wMt004W0081009000guJ208050e404081080
+W0G000W41O1ELc_N20GF10008z200001800010w10000g9We0000eP08000m40000WMG0000
+a2800000K00QqV300C10000K2m11000GY0000G800000W@0m000_2000K3oC00080O200qyd
+1ev2200WDy2bAXyBXg300000004G0Uzp00WXgfz@00REW0_bmP1000000P700080cvEGmJVW
+os@0bj0W8U10A000Ub10000W0O6@00FzX8U00Hy2W2A_@d700WP000C000K1C0m0O7H5G530
+06400e000060008060Q2YHW08b1002000I4t000C0G00001G410G4100KKU06080C6W1H503
+30WA6000000n7X0004400G500mQ06460T800O00CjFF08_0_fF10KF00400000rx@0gn@000
+0u7Ut300K308400OA0L1up@70Ks100D1GJF700003mhlLy28WaT009x000000YkhE0W_F0sl
+80BkMhPmDe_@4EFqZhwJ0G00mSx600mVSh_4QwHelnhumV3kPr0020500a000080G80eMA3M
+1tWDvUG000G@vC0Cs1uDMO2u7chHD8TT300G002W0Obx42_FXERh8lT3000m1G048cFIUXx7
+0008000G00W08000W00004W0WSuD001GmAyF4di400eVJ7Sc3_z0022mgwCiwN24000Ke20W
+010G14Wmlv6SlU28A0000800W04G00WW0080K1804WA0100Kani1WT80402X044GW0004414
+00000lnR0400080807vRmpvj00921408241WHX200401000040GG0000W0014GG12W004010
+0020OG400020n00WG00002100W0000G0082880002000G1400W24XW05000211G00000q8N0
+0W28180G0G00X010011022Y0100G0eKol1010G2w@X9I31I48C0G440529Bhb001000G080Y
+0W08J00GW800eG0K9200008410GX0000e000G2X0000800G800X04G040H00K00002H002Y2
+20W0000qo9W0O0228W04W005GW000100211000011G0020G0004pjzmAtaioZ14020Mpt010
+C0@@R0GW000E008000kqtWbIVW00GILF600800D080Dg14000G000600000qg000G05WG020
+00We0008000Y0280000GNQ6iGT2@@h2004YsfD00002G00WhuD00W08050YfzJW01414C0Wr
+@P0G60m@@9G0048ZU60000wRK0W000GtJ6Cp@37xPGJZ9Sl@9080m00G8qx83000WG0A0000
+00G0Y0W0200W0820007nFX5xIOGTC0Gqz140GulS3cqdXIpD0010200GG000WG0G4cMrWhz9
+1040G2A6W8040G000YG0aWjDG00G1004800W4jpB13000000WG0800408200000Y82000HY8
+20@@R0eDFWGAt8TE3000080G2gxpM04G2aLc100G0YmFX29C0020Kir6SlE300Y0Y_r0G000
+fQ@0000Or3000080nGY0CJE6004CwidX1BDOV@D008010O46W08404100800K2W00000Y410
+0G40121GG0288K4m00501P400emV38Y000W00G000Y82000040G4045G0H82010YH4Hzz600
+WL2J0e0W0H1AH000OW96b@100492001Ga0W04I041000G000W008bSyGvwIOG21q0000A001
+02O00200G20OX80m0e068G004230G00GG82C5GK10CBP6G8G421080001Gk@6CyV2G0H4010
+00KO0400e1800mxNC8zR60020Y10000e01W1W00G2GH8V2000HX0G4KI90000000b0000K0G
+WI90W00004be4W904W0WI0000H0WRuJ00GIOsq9G920Op@70050000WpH0004Xa0Af4040W8
+O6G40400ukV3W80AG10GK4041b04019BYGG900008S6d1Tn7200W04e0a2100G00001aa404
+e008404G01W0010104G404G00mmP@C002K8QV3QSK2220000Q@0056Ga0801AW0005040e0N
+Rm00C0K00A1WG1W0W10W000O2y4M_TZ@oD09W5C8W7K0P800m80001000Xm2i1W000300048
+83G00080qkU2PkO006Km8@J0G0W00400W90a00086Vn00ky9m644HW08A004K00880000002
+Y0100m00e8C2d0e022ACC801140G0W000W0000IW20mQbU0W80X00Gmiv6K3l10200030084
+00GG881W460O00001042uFXc9CudK30000210W0010004aWi@DOmS3e7W00G141W20n6vC80
+WW00W001080080800a4Ke08000ASEK36wE4qO3q0WuN000020201G0GD1004a@2LC1K0G_B0
+10000XW000e50000YvmdG5z60g0W004kIipF004000G0000z1q700m0mN6vt0010C00000A0
+4A21200D00048004XG0W_00GCix521W010mEfa00Y_700004W7S0000m8p000000WF30Y030
+000GTJC00WPtzV0Ogg0Wlzy4yD00000yN0kxQZ@O0QiZN000W0020G0000iQ0s_@1XG800GG
+XWm021X13200c0810W_z3103100y600W1e003mT060h400bG00W3000S100q1S0OCe31303B
+sD6000C100K1W000mC30040000YC8040G080G0G0W0m2014f0000mXfP000C000g060G08b1
+0W@@RW1YK0O4f0a1q1e983mFmFGaWVW87O0GEWc00000A00i8D97wd000QT1000000500G00
+04n700K@Jh6GS00u@@40my0000WoN10Fm000G4GLg2CUCiIB1FcPHG00WWW7000YqYF00000
+WYT80000Amz@6000gI0m3lWKLLK1Fy0FSc1W@11ym32p_74LL5WAuQPzP9gc7ZrxDurV3400
+00G00uBQ60K80C5m3PrL4GGG00000040GI2F1W01W000040010Y800W02OE_60I800000001
+080800W0G0Zyt00I00nedGyh6uD00uiyG69j5000G00001020000W8Dg400002880OPV36tE
+XVsJ00G00600e4_D0040X00000G00ndRW000000tTbjpGy@OqTDC0104U_tW_fU0040020Ha
+voD000W00W0a7pJ0000ndv9i6y3W9N0MDt90480Ge01_VF100W02G0GweF120850K0000W1a
+Jl10004K001202W20W001Gf00001G020116S010W048W00G0084GW000enC21004G02800G8
+ea9gD0IWKG5_9q8l10G10@xoWj1IOLwD40W10K1KWWQ0W220G80QXG5m01e0000404W4AW01
+420210ef0C00W00G400G0210202a210040j00WW00G0W00024201000G000442Eu01H20010
+000xN1WG001c80K80W0G052820CG800002G014X00A00GG08100G10G0810fLPmUw6010Wvr
+_D0o0J001GG8Gm010G00I044G11W000G0W0038G0W82042mmKW405404W00W00W000A1L130
+1W1PG0240OG02W0G002041C6800aGDm1X50X22W600086X1AGG4WH04H00COm010H0G00028
+3000f@R00002300G00440C10SLC3Dgk10g000023G042000008001I412W0140000008G008
+000O0Aci4000WSlh1tjQ02G200000GG28sPp0000802080000000W5q0000001e004010G02
+1000G41300018G0a800K000@Op00802080Wsap010008W00020WC8E6008WGW000000088W0
+0000408a000HwntWCuC8rz4Yhd18000rxd0020484000800FHt0008XG00G00W18G0G008W0
+014G0aG4bePmw_LCkF3@xZ1828mmyD00011800002010000400WCUk12W8004W0KmV2000K0
+000W0G08zQ60O2Gi2W10404a4008O6W00220008000050406X8Y0aOd1ttR00X1000000020
+@vtWFyDuBUFw6t000X0020004020600OZI30e00G00020308002000W00480o9qWH@J00800
+208Wy@D004140m006010m428000Gw6000200001mY4RDW0202K0IWCvP05004280140W0008
+010G0CUU2jxZ120G00800W00A0YW80G00G0100W80WmvVOhp4cyFXG5C8sV68100004G0000
+000_eekD0800nz@9ySz344W0002WKWV23gRmz_O000W1440208040404KYH0X1K806GGLW0m
+8104aHmD06000CG1aRYC0021mVz98012eR@40032100OW41Z0EaW400000dQ60W80GG1XI10
+406YGL8Y8GG8WIW200yYl10H4000HYW000GH0300000GG10vf620G081L03G0n20C8008G00
+02W08008820208G000309Y00G401001034040TQR0009000G009000400W40400001X0G4G4
+8900O4G0G0150v10009JW018Y002f0GegC03004X8388H1KG0e00RbQG_g6WHY0W04500020
+01C0G204EYBXzph0140a80G9A0I000W8e4H000e402A10W000WeaI00000G2AX804a00G0b8
+010140KI1000X000b00004IWJ64Nb12100e400szl1vWR0G200AK200200e0eG2Be000A104
+2X80eWI0GAf4G9AX80029GA6b0000AL2KI920WKH2H582000W80GXD_b000e8880KWH00204
+0G4e40000W8W01200042008W0500acXG2K0000200W0020180020W2000Y00100000GamzVe
+HC300000QJ10808080000H4100004X24100W010W002100G00014G081000G2Y80G050m4W0
+01808002860000exAC0W50045000G0804400200k0A0W0200GCY2480400H4000126800200
+10W407128000020YW0W22000001oGejx40200203005G3GQl6G240080W400031100WmW0P2
+C1205020G320W84041X0900Gm0M020C320Oa0Y0KG4WX28480u14e05n1402G7@L00014Ga4
+0W42WhEI000W20W090002460000O0WY411080aA00Wh@O000IPk@6e00000K000800X0000W
+2u800000Oy6022002102H82G82408202108fJv40Wa01200040K0400002090L00080e00W4
+0G0W040GW0wIuaV60004B00001l000040000G0W63G08Wx5g0080GgN02003000H00Gn4004
+aV1H70800wb0vC000GX100W4mV00qA0W00K40000mH290080120000A100000Gq1004Wy2j7
+0G00L3010W1W00840eV6043xlW_04G0e@2X0G010GC0002500H0W60OZV90mZ1uVL10Ggx90
+GaA10803mp0002Uq2001_@008o10000WOt000000WD3m7V0000GPH4100uV0GP0W2t045000
+WAZF0ml@2Uu18mpm6wGyO6B9300M4_OuO0aI0Y14213c000C42ptd4Y000m000O6e0030336
+WV400@000W1000k000g0S0i6u6v6G700WR200O00004000C010O0kpW0C7008fPO04000008
+0m000W1O_53k100M69300030806WI0C0CGO0wW00KP0G17aGk10F0D1o0S1y300u74f1E8I3
+ePa4mFm9WaWx0P0n0H2Y1WKWE_b000CE000000yy4V@@v@Q06hl10uh000010nT120006yn7
+0000WgE04hy@100GKVid0000G00W_0Wo00Ks1GU000Oq3d0KrC1m000WB6e@V0mhC200P4m3
+yC00L100000@3GLX74pOE8LfAuCZPCpq@W7kWeggtKJeBSFsfkYayheIN3AZrWpbJ0000d11
+0WnnJujCOs9tZJoD00020030mqdDubE3Eir08W04PFQ000G010000401g_r00W00rlp00100
+00E2boPmdr9iTk19X@pfvF4zT29idmOuI4qj1x_R0140Wc@P04U2mw@60801upwMcuFa7zD0
+000800KWUuDeeu4G0W0004G0G00GC09yTl1010O0008i7F300200000PR00e4P3EsZXge3vX
+@DG040CDe10G001W0GDcd1nzR0W01030404001W10WCQQ2405001Wo00G4Xem020W0100040
+0010080G011W42A06800004h60406jt00800XtP01000204CNcp0GG0W@xJ8TsG8XIAG064u
+A33Ga20e40000408400080010W1GH002202HK040ue260G0X1002e09020001001a0020080
+023We0a2480401008082000Gy012XW8G10GeW800O40526009K06W82mJ96G100420800004
+80W008W01000MQg1@@l108044204A80W00240G0O4K08820008W2100020020114H20400Iq
+I081000000K08000G30003X1100000e40G0f0002G0P0410C28aG4e11eW1210003H641100
+AW0H00000642212020GI0000GqXoCanf10O00QBa40WO0K0106ft00003HTm0W0G0Y000G2W
+000000420000000014204G0G4G048aW700gPh48W00zxl10010004S020W0900000K80G000
+28100420GW421004W0000m000I0040000410G00G0W00001a0ZKG20000G00YP9O0W00XCqI
+eBN30G00kuU20G42G000W028G4000200000GGb@R0020Xo_J0Sa1nVy600010044uzZC4iz3
+RFg200400W80G0000W0v01000G00Oq@60040ftV3QxtWdvD00100WG4WTtPOrV30002X02We
+gL3K623008X00W0W000movD002000200H000PmpGJO64mE98G01800G00G0u@T300Z4W0248
+OU38404KWl120WGO200yhR200080004Y00GODV300002G0W8Y_4004D0H0000I020W80a90G
+000W100I0W00Ci_4IJ1600GW0220001G00G0000GHJA900002900080004W0GG10I0200a8a
+1TmP0082000800180gBdX_yC02000W_7000W000144004G008440040G0at@D00G0m9pdykF
+300cGWI8K80GGcK002gK8214qKcG0G4000000L22X02G8210G1H6XH0G00W0400WW10445G0
+10004G0X03000KX0u@T308W0W00e0001000W20008U6Y18WC0W2W800I120m20W8X00W020H
+12SJJ2lnpmwhCykF6OG20110WWH00m410088Y0G000mWG000208800W00I000W0e00W0288C
+8040G0010400400GY8GC0002G0B10040WG00G5Z601024YG00i00000RrK10O0GKWW1KqG0C
+8418aHW00B05042MF14W80000100036DZA80244YIA1M00042e4000Ib4080200400GG9bW5
+0G42fK2K00e0m20b00000WGKYI0000R00A1000W040WI0800H0WAf0288400W2Wa00100W08
+000Ot72Wm00004GWK2W8000XWGr0K002b000X048KI92m0W000W4108K401Gf5MC8m_G0We4
+0e021144Wi2188G0000H01204000010WG02200XH88882Hm1Z1Kzi10W02820G0eI90000Wm
+C4240008e80G00YjRl1020082W400001G005X0024G00G424001Y12G0000G050W8G0018Gq
+W6xs000240W00AhDXLay000600G000008C4060C0C0mK0320H141Z0804008400084302W10
+22000204D8204W24341w8412GO000C802W0I20100Y0m000eG02G0W0000G6000YK504a800
+02000742I20611W0200GW706G14YY000WZ00G3WY044aW00q123X7v1GW00000K02G000G80
+0090W80mjn90GS00000C0701800W17P0W00G81084GYK0Wq8W4011800me@600G000124440
+000000Mz00WG0000809188G8000540800W00G3G000PQT3002000GWeXK3wxb40GD1008Gz2
+G04Jk1e76000acW60000a@ICS6000eqD4200VX2a000G@5W0000WGG400KK2211PlGy10400
+y2000O0800000cb10W0W90000DFS00408d801GPv60k2408el2wE0G00_B020G001W080WJ1
+402oN1800000I40oXF400G0080WPE000G004041l00iM10Gi20Ri10000M5qV@63GSn14hk1
+O6U0eio00S0ytw10WY0000000080WfE0000Ae40_vtv@600m8Ks18Fz3010040008eeF0m90
+o300Agwcqv000A100e800WA03Wc0T8C0KP00eY0002100m000W1e0mQmP06WQ400I9000300
+0A200q1S0OCu7mFG500WV200O40004000g020Q2qnm0eZ00WBAB20000udYab0S9B1m0m2W1
+WQYB0r4q0tE00m0000C00080A0O2O5X1m800mT000qrU200O26uo3m@V02000egvUxx@1IG1
+Wj@3GVV600080000WgI5mm70028000000Gb20qN1000WIbL600000@CWQkV00c10000Fu1WP
+0000b9j0XvP0YPcHBuV0Fu140yF880L001000001eFH00WQpMwQyMs6d100uB9Ixq0@C0001
+00G01004WMwCuc@4QPFXUtCuaE60801MWk40UP0IfEX5Uh0002Hb2ijAV2xYd0000Il200HA
+Sr0x6040W00000W00YQuP8FU3_XnWAvDeDU30040KYf1ropGa2aa4NBPCR040048000W8000
+00a4yk10040G400000010G02G4IWN2C00Y0mxt60AW0uwD380400010W8204X000A0008001
+00000Q31W020000W00001010400G408G002012W000W00855aG5w900W0Og9F0W0Wahl1000
+200Y43G08094Ge100WczCW28G00G0000eW0004WG0W65l1241400G4GHGWW0202410eyYDG8
+41C80143800000mrQW03m030e4o80141028Y200400Y8A0002W020000G0202XuRmFp9ymV8
+G010003008400012002682502O051000014W020080GG00Y04H80G00012000992U300G01G
+4815W0W284O008X0W6204H00Hc110400600000c_42G20Y00ZaX0YG41WG4G8284G4G5X04m
+0bni1HAKHHWR00089M@4002aixM2rxQ00GWWyKD0A0000GG0W000O0000YG2WG00008000G0
+Wa@J00K0000020M0000000Lq0W8G88NV300G0qFk1Jtd0W020204Gltdm6Na00XW01n0GFz6
+CsF30010Qzt00010zmPW900W70E86Q902008O0600X00W00000ap8000Njm0W0120101IgtW
+7gPOACLsyC1G000G200G08G00Y8OtV6YnmWc@JOPD300H000W0G0410002WVtD0004800W03
+080008440008GPX01W04G04001G00GW0G000S0d1JHxnjdaq1U2G1200008Cyd10W10cutW@
+vDuf@4040Wakb13g@W008G000KS0W000040G2022000G00002020004RTCaNpt00009080JG
+0808G0CYka10W80dWRGW1604000000M4_600048qJ6o2tWytD0400000_s0zOO0k7Q8T6000
+o00a80S4WGK0W0C4210W00041G0001m00OW8081004004W40K0H8WGW0WI000XX00G400G40
+0080G6004240ixl10W2S000023400Y2G51000Gdf040000001020m0002X0H080404G004wg
+tWyoyOP@A000WIHX20H0Y00Ge0X0002800Y@t000I00001wFD11000W0000G00SxY18102m8
+0G040G81s40G94WK08GC0W80006MXH0Wg2X0gWW030W238000103020W0008YLbXIHDOYsJ0
+098014KYIY000028A000000P0WI00800000f0000000WI80004520080040000b02000G08I
+90G84n824Kw7y4A9t0W000400000Oh241Y10004W41000800Y002@Z10W00fvR0400aCSK10
+5L448W00000aH30MttW_wD01000000I9GWOb3QmQw6W00000C2020G1004ODtp00400Y0W0H
+rR0mUK000400W020G80W008O@U3wrBXcSCOXsM0G0WG00200018W8004GW040W0m120G08G0
+0000034900012602m10000WC242110020880W000WWWWG0WpGekV32vsW6@D00001000ALD6
+W0300AMB1aW00txmmw@60I00eVML408GY0100G20000081000P0d000G080019Nm00G200G0
+00K1000G0yjS24000knF1300a001000KlY020Oe63A_sWPaPekV36Hk5000z20000uB00001
+2G00008G0002GUX000004n400OUG3GX0000ID14q0000V5010W0WGG000Km6211mlG0104WF
+dJen@40Cvm100G0wY840000012G0068MV@10040W100cW7Zbzb00n70WL70W264@JRGs@6G5
+0_nF0000S7RO30000Kw50eqdQT200Uc1000Wgm38i@70080o@00tv100000OU1000WW00000
+000Stv00GZq2fC00Wn000p020G0OOm0a100u600048nD30A0O0O2G0u700W8000K0000300W
+E030g0t1w0c300S70009YR00010O000m0m048W18G00000IbY040O000u2O0W1m51203GW04
+W018WaIDu1EIIZM20W8_TQR0@V@lJrDm@P600000000LL@pW820RO300002iXD00000egUK6
+0GG2200Wa4W40198890000BG00KG2A0ut70909ip5I2IG04aWWa0009811ebiY00W0SXl10m
+002dUZgBbOK_4000GCDXAtRjnGGFafb1drR0G00WsEC00101010m@tJunV3cjtW8mJ020040
+40WlpV000AJDlIiST2jXR30W0WCgD000000W0a4088RT922bX4XIeewA000GhU00eYD9AeJe
+bIJ0400mYz60010f306UZtWNhOetO3U7EX_oJ00WQqnTRq6_C000400G1qjf1nCRGbt6STE3
+0W00wCrWjtD8vE300G40020eeJ304000WG0K000SY@606I10200400000M80rCd0001axsDu
+qU323t00802jtR00K0WjtD8gzA000020484Y00200800WH001H09200020G0000usm600205
+0181480X6zD004G05040282A80G0gWq010G00G10W000821G00800000SdY0000100G0G0W0
+0W800uaz60802I000W0005001800q00G0W2400001WW010010200000020880G1Oz23oqtWO
+yJ0200022W810100W180410200mOmU300G1Seb1G0A080H24oc12200W0220O020K224I000
+0044dtRW10W80YW8GX00G00000OF21800H000000500W01002yXl10W40_it011100W0002M
+00000032G000G0G0G00008G0020200OFV30010CZD302e0kRp000W0000I040011G08uQ600
+10qns300040G0000Y0whQ3G0000040ew@406H0yUl1W112Mxt0008000OGQas04200000G10
+0400010040000HWL@JW0002040eq6tW000GgP60003ODR36YcXjFDOxR9YKf2v000hNomIz6
+0400uhU30002L6f45sxnjs64xj1400Ea000CNO2Fyd000W00WG800800WG00041uzM3UAtWV
+@b0013sGRF0e0008000008mkeE9S@7000c104800010p00000aOO000O012qYU80002UXt04
+200j5B1eF0WPmP0W000G01100WXP@dm6p9i2V27BPGZzFasS200W890100890um_4s@rW_MD
+0008ocxIqLf1VVZ10008x200LjpmFO90010OQF6wLzXZctW81K0022GK8Y241O0G20O906A0
+C404500eo_D8e33000g002K00G0myw6GH100050000400e000OO0Ey@1009oLto000022W00
+G2G0HH0WcYl100B02XjYKQU8Mw40008I60AaW414418G844YKW0200K18020eCa4MLBXB6C0
+W00mGX6qGl1@KN1Gx3WmMJ000084103G014G0a0002a01418It7E2q00000G0G8wr1300000
+0Wi0000GAf000AH000A20IWILuR0500000G0K000W040a0d10G95oYp00000W01Ge4000081
+WIA1mqxC000WDJm4W02000b01a0000018060J005be41049d1dOc00KG100GS00H5G4000W8
+0W2000001WivI8Ih70200W0bK00Wg1X80Wd@JenV30KZ0a5N200025210000IYX8Gma@6W00
+000P9rd@900ODByV30005A0000110008404HW60G0Y0014GH00O_@40W200011uma4e000SA
+c19yRG6@I00O0400G0WO0300W0GI00000CaZN2e000C000W0000080a830800022G018G040
+0Wg128GSl69yyV20NV0MTF100WXIG0000GW0WnG01800Y22WqDI00000dG1000WW84WG0G10
+Y0904C0G10420G1200000S000K9k41PQWW00WcPC000008G0WTUb8dG3002004WA0010IgxI
+000WVbq40800inZ1W004W00G200G08a0mToF0401Ok638G2000001010uvnI00R000i00000
+0O150DnP00VX02080mo40MBn00GW1804Wy21ca3k1040200G0W23800W_2Ak0S0m_B420000
+1WSyV200c_hkb1010z000G0k9qv2W12ul0KM0C002ZW010W60002400Y000GO00820Q0Z08G
+5z6KmV2000y5WoAB0Ou76000YB6V0bT00iw0W80000020pg20000JX300r1@000FJr30000s
+O50e0KvV5Wg20A_7ZkLDeESO0G00qwc100305WPWnC00ZP00GuR601G0040J0C0PW4uI000W
+1G003WT0L0@000s100W3000U300u2S000uE100U2E1K200NWd00m0G100mA200C000GJ00WA
+W2000TWr@D000CW8502HAWC0H091o0o0a1Y48349160I2890Hi@0w3WLi60kmb20004t1V0h
+M0G4Va26aTV5K5U02ZxX0@b000AOKV9u5000004a00000WgP000000KtrUa1j@R002F0CpSG
+0uVm1FyOAJcfIL11km3YP_7ag7jNnEq6SDE6faTIPu90oE08yiDQVJYVAF10008100WnZUOu
+V3w1sWmyD0000O_FCi1_3B3R0000GZ300j_5oSJCa5m900W0kuVZ2aDO9@GMpr000eXVjhoj
+xjqjk1dYoGa2CKEV20420wEpWZWt00H3m6MIq_E6H_I200048200zlR04400000W80000000
+9010G040m5R6000GSZP6022000A002000141WswD00008210000008100100mWK0880S300W
+0Spi10002000Gi2k1TqR000WW8SIuEg4gSsW2_bm00We08KWYyDW0010420aJpD0014m4X60
+00G08100GG02Y020001100010050W00W44300YW0A0G1500320G50a01W04G10810000_MW2
+000X0W2Y10002188WG0m00K00180042I000W0G181000005GW2e80W020WX00000G100024W
+000W0aWa1HkA1WcY0X000800000220G08W422000000301400000001G020040100WG40G40
+400GG0000HGG10K00cW42GGH8GG4em00GX00n02X010G0IG4XW0000II4W00811WI21002I0
+Z00W0IQzs00IWGlLm0A0WG4000e0000002000OOVsDkntWnVD8_G6W000G1208EV3000Sqt_
+3D@RGs@9000W8pY4000Wd@F37nR090G000W00400001I0G00000G10544200080806dqWWuD
+0101qnhO0100020WOA_Rise47YRmW_L00un4022melCyrk1fxp000X000010a020021KRI20
+8G0Qe530400JvPms@9adK2tS4ID_L82R1eWU90800q3d1PvRmSz9G0W504000800fCjD8I1C
+wGFdx_h0000jX10WzyD01000008edsVOwH3W008280G02a010WG0W0002K0GW00804058B_A
+chr00G4008Y0cuyX5bR9q@400aQ7nG5rpRGNV688001000W0W180040WG04G00WKPl70004W
+1W00000G410mYzFiKy6fsP0i00W1@b0Cn2GS@600I0uvU30000X004OKV300410001K4b0W0
+W01QC844221nW4030222080X0W22H5C0hxB10G01O00020145100000muK@4_vd180W0buh2
+0006r3W2pyb000080C100G0W0G080W80000W840008W0000H0H4W010XYWGW0CW20G0B1W06
+0I5004C8F6a205e410010Gi2E32xdX6tUuoV6010A0000K2804500WhZDOwV300Ww00480a0
+e450020I0f0008104028b050A42OKI9X2aW0G0bG0a008D0XI0008GK0Af40A8GpWWI4000W
+Y48eKc_6qEm3040G0404080200600HK0WhnhG800m7XI4hY1zYR0WG0Wh@J0S13000K40G00
+00882qs00I0088200000W02WGCC00G80GA0010a0200GXn04801Y06I0e84e404C4G111001
+0288H3Q7W1WG020Y010K00G400uqI6AUQ30H40@@R000WXmmJOR_4m00W0400000N0000080
+S4x@RW191C228O220G880K04GE1M0G4C8m1O181K8CWXXi020404W0mW9e020H1KDyBX004m
+l@J008WmjcOqUbA006_VRtWfRC8BL3000GKMR2000e80G020G0Wa010g02K0WW00210WW129
+HG08E83Iu@1000b20000R30Twl10WH0E7dXo_D0120m3vIW421009GC10400P205L_00VbON
+0C00w500000W0G4000L02019hGh1050oz2G00G0808210_lXHWW_Bu@6W10xlG80050402X0
+WUdm98O@52J8dX6_Lvrw7oKE4e100X@R0ud700000mF00Is63342X6C429H2GIG20uXdAQyt
+0c000K40001u0GGG410W8oTpF000G0830GgrF00P00000Y1000Z0001oP000cef@J00GFkH0
+00I200m040W0udXB0100WVM0TC0y3y3e348mF8G0S0W2Gp050NWB0k0t1_1k324S70809adm
+W@9000gM00hk000002iwW8U00Or14bkGWsR0wP53000LI0I000a2c8k100eGGO090I02YW2X
+025a011000A40AwEaaaCuDxGYPO3000mFOpGHuvq4y3bVdW400200002010I1tWn_D8OS6Iz
+tWFpPepL900yL46m3XFjHcRa4wB6h_Rm6uIaRk13_x1Ws6WamHwCc7Ans001000GW0YjxXto
+bOIz4YKN2000Gy400MddXjrhOaT3YKuaEkD00020041afoD0010GWy60004042000000G410
+BtR0028WpXVu_U3000G000W10005000000xKW80041000G04010Y000a000800020YXp0W00
+000X0AwF10050xGP04000000IfdN10004002W42W0000m0W0200YWAK018080G010802400G
+0200WGW00G0G0000104030Y000Wf0V3000G000500m420K14e8YG001G0K00114G0e0000v5
+100200044000GO040000000G11008W0400W0080G00000Y050G0eW01GW0110002G51420X0
+0H4W_wt00G0W00020050020W0eW28G028zT3ovr00YW0000G1000209060G0mZs6Cjl10200
+0b00W009001001102W2014c00000W872104820880028aY6000H00GG2004800us_9014GOb
+L30000302G8IXG000G0a010100008X040020120080002080802200W00A000000WH00K@l1
+G014crd18000042C004HS6W1W00000C0008iUtm7sjt0W0200I0080G00040Y020W0040180
+2G20004G5181WW009Kd9R0W0W00004JO0ns@J0X008000004020800004G00WZebi4cBF101
+0Y2C80kmzXgwD0GC508000600000044H40KXF30W00400000W0uOT3kM9aJ@J0HG0Gfr6810
+200860C10420G0G00002000m80OzU6c0F10400jvy000000460002000012N0O2IW014204G
+00H8I0A0Wa00W4G0201Guz68G0Ge1x4kQtWYA311W0020W0400O0O00W118G0000J80Kw@64
+Lf1NdbGH@F00908Zz7Int000RH4008cno0a000000W8G4Hy3Q2VxR00000C0010200Y@tWmv
+D8VzDW000002e0000080J0GY00zsR0801WNoJ8FO9IclYGvJ0uj1o_z688J0eMV3G4H03008
+0024qdv90I000W0AmEkd00W4K400008WHgmC04W1Ge001824G10O00G00GWW80422184G005
+08GHW0mw_6KSl1003G0G44I808C7U60W000W100000Ar0A080K000mWHIW000WW004mCc160
+0W404240000W280020004a2084A20lrdGM_646B6e002G5052P00405Y5e640g80H4IGX0GW
+4qKl1204000GIW8G00100G4yC0028QvC9WC00060000Gr15bHK0GA160W0HmCpOW006E00W1
+8I8K000Y00Y0018001029020Y00aV@D0002G1hU0000408W00KI904Aa004bg@t0A1000W80
+eW20CQk10010006Aybl102W4dUt0C080008000a421b00082901G9G2008124e4000e_109G
+0m__6W00000GI000000H80Y0I0eaI00m4W0YA000X0821WI0400010AG1000208KHuLaCV2A
+gG0H01Y020oY0400508a1mD8uV3gFr0800ap@R008WWlAC00000D00WOnJW1Y01e80000GG2
+302000GPE008yB30500Msi10022000WI408010G023p000WCY22C001o0002RZV30060G400
+O7OC84020a90I0W008GH08001004A0W080100020Hmd668GGW000Wmdz608W1020000W4000
+10T@R0000E400e000040080H0200o100W5kTzD8E73s@t000mGm0280H0000m0000G0W0Y70
+K12AoeG041000400G141A0G000207yN10001W0808800e000H0400G1L020eaWeUeEs4wjbX
+onPeVy40G0b000008Y2mPwI00K0G401G7b60000G2000H0120G040000xFLYt_Ve8S3y2000
+G0000100wMH08WvB8u00100Da3k10002S010WW6W00000m5180000004W00SW00G8d80L000
+08h00007020YG0W_R848i@2000Ed2aD000sAXq002000o6002RYW_R070i@2W0G01G88000Y
+510n0eN8K024GOu9aIt3zzpWi300040eO7e7yC0@300hM0OaP4u68WJ_70OZD_@7SG4H00b_
+0YQF18sD00008MTfY@@D000scT30Kr70pK524rDcXZP8sL0WNb0W70000068421G2GI2GWa4
+WC8000G9000@XJ200mC00WY000p060O0mmy3O710033WSmJ00O0gHm0K300WZvQ0400080C0
+G0O2W1m410WBg_V3000O000y6udv7mF30WV6000000PK1aGU20k8C23t00S600mR04WEWR0C
+0tPw0g1Y4S74v068I18Pa246k100a1gvmW85g0mg3W4308yml75yR0l30K02WgK700wJ7300
+0y000000c1WP00eUzA88z10qw30pm3AGh7SPoCGMF0g4U0g_@V2_700mCLL90ggIGCNbW0uV
+11Fye2W@HLL0Wgg2QbTI0800CM63zMZHWuU00Gyu5y7kp1ZeuXPYRCcErW0jJe@_4Y8V3mb1
+0pQcGvz6Kyp6@sgoWtjCbk7000muB00K37LdYc0G00WgYJeiO34800abU2FndmNwR00GAEkz
+428FXKqnetyMG1G0CM@320200008iNl10400010066l140Y100080W80008002000G000eW0
+CW0280104v@V30uv8KMc18010EDN21000dsdmand000400W28G04GA1100500100G0801000
+8IM@6G10GK00f004500800040G02G00210u@Q3Yot0W021Ds@0000Cf1005rdGdx6irvCvDA
+10843W0045XR0G000008W08000004ylk12020000W028040G04080G0400PkP00802G4000G
+0148210040eN3300ug2002eXs4YwtWy_Jec136X66100802GG029000W0ud@4W0800080008
+00W80G800CrFOGsd6004K000000m0Xz@O8DP60098aFk10010o_XXWgvPMV3000100080040
+126000a0Y0G0410Q000G0G00O0200G00000408Rb0ZM@DeEn4eE00M_eJL@R000GaJ_D0800
+0040W1zI000GGvw600081010004000W02G400EypWEag00XpKAbH120W004GKswL00GW00G8
+0m000G00040W0GW0WG00000WWuey6asV5a0000N30aKGKrxdmtX6yZA3jKO00081200E0080
+842maWn39gdmaw9000WZr00GldE10i40G00000G42G01004042G2W0100Yg2W8Y10O0Wm010
+c4G450090022W029YG2EW00G00W810W01803G0GWL9SuV2088000qT4IHK00020W0Y4ol18W
+02100O4vk1800WgRn04120GX004Cn00H400eG0008aeDjCeEL901000G000i93GjegiHlA0I
+920009G0b01002940H90002004504W20000WI4H00m400e4WG0000W2A1009Y800Krx6y8d1
+1sBXj10010080080gDFXNF4200G020200G888800WY8510200G20080W0G0200002e0W8800
+021Q8XG2100G00S000a010G100eEUC00uiirl1voypOrC05400WW0C00GG0G1H2G4S001008
+10480000148WH4001GW0WWH0GO203GW2000O1E8C08G00W0cKuk4ptd00CLWuX29l@M00WW0
+20AeOI300Ge0H00ODV3knt0WG1040G400080042YW08IvZRCtj10H000000uL00ejNdGX403
+00D1000S@u6m2200Wl03A000Wc0000G0G00010QC1X00gNer2030hQ080sWt0mL0000qLgtl
+200pEW10000e0SRR2XAy300uE100020qN11yg2el00cX70YuE00WP0KNL0k@t00WF00000G0
+0mZ8000010Wtf2000Wt00eW40OqjnV20WvPoxd1GPD0x7x40E000e900W8m0Wr0X0C0p100c
+3000D100m00001G003G6WTWV400T000GOXVR00101WE060Y900cT0S@V20030000066l1000
+mH3H00040uc13EvIB08I0ljQ000uVOW100030eE0001000mW2000WeKrC0c10G_@6000iKQ0
+000myit_D00WKPE1Tj3ECbyN1W@0WsZeQt@46_t0G010hvR00W0WInD020WO_@60I02OFC3Q
+m73000Kq500IAugCPhu6lP00Gm43dMDzOGHy6ioF3G00W00200308uhJ3GW0047l70k20s9W
+A00W000GG900WSfM2G10G00000455ggU36ht00100FyOmKeIq8U2000m8AW0q7W10000dcsW
+8vP0084m_Vm0HKa0WG00G0088Y0W0W1004n8YH0200W00GH0GY020040G800WGG02W0000D0
+002009000G105000G040W02G018004eN_Q0000402000G0000qNTod1D7OGMz9qGl1FCwHFZ
+O00a00H00020420J002000020800100080C100G020G0200100110200W08400100W000220
+0402SQF37zRGTr90Sl4Ox_400W0KrU24000Y8pWpyDOHHL0014coW10W42040Y008c0HY000
+01A010G01100a6402400W00m6W60W000C000G001001W010808W02G0WuvU3kWm000G0000e
+iAK0K5X1HM@GEbvCLl1xmAn4968W040010GHn6Cgl1nud0140G2200@@R0008YozJ00WPpA@
+CS9PBvKlnRH900000808Gm@982G80100021G00G0040W0oVq0K80800400GWG000GK004000
+0020G0020180000200W800W8s3000Im0000W000sAk1NRdGdbUC6_600010W000004000012
+000G080HFQWH000100002G0G20000010201mUw601I00280Gnz601080G00Xm200080Q0WC0
+m0GW000WGc020000040041vR00400G000bubmEAy00020080800G008G20G01G8108100u73
+30m00G021004G1C02IG0080W2W040000W200O084X008240WCG8010X4Ll1004j6tC100G4G
+000IIz700024000000101I8008021090080W800a400CH05300a4047WG300X2112ne203Pe
+W0fI040O488YCY002008gLX1a41008A0OW0X8o041698He4HG000O@21800K004M000G0204
+10WWu@V30W0HazWD0000W00HiWl10G0GG00W0410030G02X010GWY0W020400HG08000040O
+W01K2002H41a400000GGOW0000GGWeW860Q03o02GWn03WW21009000Ss6100420W008100G
+0410WjxDe65RY@F100Y2KY0Y002IH90100X820120GW000H9b0GH0283K200000WKGAH8IG8
+100aIYa8k1jId040I9AG4400Af0410W4f00101000_00002000504H081G8a200200008048
+000G020A5PY1lKQ3n0001021W0040000W05GW00002800W014Ga05IWp000f00012G00081Y
+0umU301000GYA2X400H2300021KI1G0208X0000Gm0002W8K0014X804000GX00000002200
+08000W0DocP60G4W01G000WH04m000W0e1S800G02051He06102G0100G2Y3X9OAW100c300
+O00202000008IW00000z6Q000002014GX080001O01184N3yh04W18000080u00W_AJG0002
+10082000R@Kn1laG000GG000e80102208Yo80C0110002H2840040050000K208W02044WW0
+0080WG860000G0a000000e00WG1W4001800G0440208200100mjB492YxzD0200mzD600020
+W00400WeOui10000GR0800e0000000L20000a9q80010Pl80000G00200Wk88000_2Q500I1
+i9HdRmQy60028M00044U9WB@D00m10D00GY0000d6O40000m408FV300n200G0Y9KA0G1WK4
+040PDp3GV500yl@_C0WTU0m8u00eyV3004wWRtT500rf0WQV1y8Y20W0uBmWn370u@V300U0
+moq0GQMY7BJZ5Jd6Bc60MCD0M200WG2j40BJ30Qf5B00000mE000000u1eor@900Ae8LQOO0
+00030004W30g0H041w0008Y0007100m000u6m0GJWR0L0g800sP000v000K100m0K0e8mA02
+052008000G80005100k180e2mmG5G510WA200000WUXL7CWA02080L441G000O20005000u2
+00W0W10WbNX100yb00001000020006_0yzl108C00001G1z108tZ1y100_70W2000qT020W0
+00WKz84jxE1ux_2GLL400h20BJ30Mc6gy@VCpy@u@@0m@@1mV000Kg3mMS9Wbf1eALgMXZ70
+0000008pE7ZlmNQJoPwFd100JU1x9Nv0ord96XsXnCwaSYE3000OLF00qQkJ000a0I800000
+10X4H4@9000O8kS3Ybs08G00FqRmVu6G0400200W2G0XJvD000W0K40WlwJ00G4K_pFKOF31
+ldmFtg00001e102400G8W0800GG0A200G60501WA014G0GAg80G4G0ea0WW0W08G211G0028
+0000G48G0M5k1014000841H00X20X400a4004000m200000QH0eO@4080480000000ut_64s
+k1BzRGb@900G08dD3s@V3Z0320080G201y@l1G0G0804WG0000Y0200009G040BcR0002005
+00001000H00W0000C4W010001000002WuW0aml10I00000mhN00e_@4G022SiF3BnR0080WI
+sP8FV3UFV3G0400G4000100GW22WGH000I0W000820K0400Hf0021002C00284012450W080
+000004a010G0000040420000G0HH00W800W40812004000400000GySO_4Q_F1W400@y@GCy
+Fi4@600020210ixl1000KUstW0AC86@40400a8a1Xupm3z6800089V3Mtt08Y40G00007z00
+G01u@@b0Ga000CWuhT60800090200012G0041000G4000W400041e1N60000T0m0000W0G00
+80010010W0G1000080G080001OF00m0G008GW00004m000YNl800H000200G230800gCV300
+GW10G2002000940H4000830_Ql200W01GOmimC00WZ7a00HC_6ihNH0000G8G0000aK0000m
+01WH@D0006808G0000W000GcMsW8@y0041Gu66iIi1W9n000042000SGwY00000W1WH0Y001
+81H04G1e0A002200280GC40aWX05Y42G0128WW0000P8YW220100WoZJ000G80008000XTOO
+0008010G0O0W8W410000W2c028YH1001Jn000OYKe8m40f04O4488008eG220W8W00800W02
+110G0W02W0G0G4HaG4A00W0002W0I0@10C800404W8W0084Y12004L0400040043000CA250
+G0W00110000009TxN4G8024e4G0000a00A140CW880050402410KI9Yq00482W0000820208
+0004000be40000J20G0000C30804880010YIA1WGCJ9DfqN@6G1000iI300G0100WI04008I
+20CklG000X04W0X020OlD30020eG0004402G1Y0400W08CGHW20W0000840000200G010000
+04c4y@l18G020020W0200000808G40O20A200000GvC00W02GH2S6yjVH0C820o0CLyk1220
+4XG44W0WC20W1080A08W2200G00801208W00603m006WH0000W68008m00040407200C2Y08
+282G8e08W008005m0400000Vg0208_ysWw@_vTz4G2a0W48C200002G040W0000810000Ebg
+102AAWG1490K0I2040W0G080G00010X500W00040250200G0202VjO00100004W008008000
+UsY00G00008XuMpfe@700K10080rA0100X000040eG0000eDWsR040W_2W000GG80220u004
+00LHeY1020mV180020804X004000GOd8KI0000Sl040000202G0Ws00000s00006YHB00000
+H000yZ2IW8000Q08YU0000_tVU@90000K0Cp6004E0Ukp014000W1mT00Os@A000mx10KLL0
+0W70000W7U0uV000mvv30iKQ0Ofq07000_7BxB400e00006000p0C0O0mmK1u700G5000S6I
+003a0WEW30C0p9S1iY02G1100E000W10003m10JWV4c0c000C1000JI4t0W3WY0@0C0kP00K
+H000000mJAC00Wn000C0800i8U2Xxp30_F0w300GbS_100c1Zv10000du20Ov1WPCBeCbcXP
+AJPc10U00W00qo@h00J300000cP6BiCDgiA0iOQ0Onq000000MGz10iCD0u@@W300OEWjhkv
+c10000800W2zl500SsXhtrmkmCUT50@00cNFjWTj1000ju00WwwxQnSOArM200_nvw7b002W
+5aPuhS60G00002Gecw7W000KQk1hEpGWu6a9l10cI0AddXRFC00W80010W9yJeKk4ops0082
+0@@l10G010012Nsd0GG400G02Z3nG7F6KpU22010100080420W00uZy9yrk10002X001000W
+9mU300W000010W000004G0220020000W00G4G1W0080400KW0WG0001GW00100utyGG030rh
+g100W10000G000iQO36ut00W0220006ppWNxDW010mXy9SjU2XaQ000200A00002B2NZ1008
+20080010020800802G_y6amU2O0000001KXTB002W6fyXHxDOYV300010020080008800404
+00100UkFXltD8BG30Fk0CcU20080000010W0000HmFy6W2G00G0400GW40H00020GgTrWdfA
+wAxGQVF1000aqK40_gtWgrDOgU60W800200040000W0Y4QC0WO0Ggus024000W0mTsp00400
+0XJ7000Wt4C0G001W02WU6C00008002W_hD8N_4gjtWxcj100W000G800WHjWsoFy60Ua1u6
+y4E2F1020PR4RW000mqzDGW40100080m00VQOmrfpSwoC0G010020000WXT00mOzCSOY1000
+8gvt0240W00IIWW00qEY1xnd3060010200100m400C0x91kR0140000NDW000W0000202000
+0802400W8W00H0480WW84120a8Y8004WKY00X2WG002000218000000aasDuZKOW00CCZX4f
+Pi100WWh@D04@W0000G80G0HTPGA@600082W000000380000Y021004081110004444100C2
+DyF300H02000K200Ay@10e00p_BnAcCW00K20002h00WRzJO6_4G2008E4KY20o0G008A9B0
+0GAf0eI0004912Af4H0848WW2Bts200G40X020202Izv44000084000000020404000WoXff
+DeaV3GW80yFd1GW800010GcWC20GG00000W0208000OWW0W020000KaY0GaSsR100W0G000G
+500PSoGzy6CG@30001VQD10I404K0000000wD1eBT60010000W00750H8a3n0G40120GHm22
+1D20WG0420H403HG2U0G10W220800M00K7@g04014200100000W0Y9_J20m2WqCC87R3AxsW
+ZDP00044085mE@D0Ga0004810222A8WW02G80000040045G00202Wjnh200WM00108a00kGc
+XQRDG200m0hF00G1OWT38000W0201Ih000WUzBbP0G0030000W20nE1G00qB000120XW840e
+F2043xUX_08G0ex5X0W010WO00W4oDeY@J00G1GVv1ujVO0Vu1Kzl103U0E@7300502XG000
+aI0a14413c000CaDYCOT@P8600WB00eQD9_ms0WC00h1d00G00000m001000N0s4c1000Gi3
+00000240G000m00101mAAG040W0Chl1q1W1W1e3mFmFGaWVW87u0HEWcYK0@0k0I2y300830
+P__g000AkgV3I3ebS@J00Ga9000004GG44WGGeG8WG90HG000W2901eoB000000ym300_70_
+70CpC80aPGW7_W0m@OILLfIL000@32W0uy8@s4QpH8GL70RS@MTTm00005d00Gsus4DUlhO@
+mDSFSY@C0fV0EzpfNuJuxR3Qos00400p0R002102G00lVdW000040G08000kWc120m0@QRmc
+s60000Ef0FoodX6wDuYU3_GS3000404G0480000W041W4001WG800H0a000084yhl10W0098
+W0Y0G10002800bG020W00G0188WYG010W0G0804G00000eG01041Eol100E00800WG0W0000
+8280G40010G0200001GW00040000L000WW01GWn2GeW800G00Y20400000104006LT30040d
+fR000010A020010006e01010080001010G01G04a00H80A0000X00GP040G000180cut00W0
+G0W40K000W1000GA0m@@60cQ0000W200100022G0W000200040unE3sxt0020000020e0020
+0OOmR3sPtWQ4n0000200140020000A040000G0eoE30000E3l1vkdGbz6040G08000041Gm0
+28Z0Omoz60440u703000G2HG0e@U62ntWWuD0000A4000e08GW2H00O000000fVS3c8CXwFm
+8IC9Yib10100HDP000800084NyZn@@9000hO0JLWOWG0C040W00GuqU000W0W00002000400
+7C@W0G0WgzDeFV30800I400040048000G010NfZXmd6We8F1GW802120Y00W00C4cjnW0sn0
+08G00009000Wr@R008IWs9VW41200X08G009H@R00Y002000psX10002v2009@J2O0018000
+0801MttWw_D89_A000m000004G0GyP6qUF300IG0W082010000206W0W1VC88_4o@4300fFp
+XU20400000280811001SYX1N9N1000G40020014W0000Y000200400W8880WRzR0Y800204N
+408g04WW0040Y8G14O01WbCDG0G01Q00Wx_h0qS2GVzX0WG000G101290W8086i0G0GW100e
+000G00805Wjzh0m0MC004O800I0400YwF1200000W01400W000H008026GO010W800200W02
+4GW06008400Wakg00006w10WZz31X00020072GrWWQGG05W0W8f000000W00X_3n00Ge4b00
+804Y0K0WGW0WC10b000800010eBuC00W4q@@60o000GA000G000e41Vbl100bc@@t0045700
+G1410W8mi0e40800I0WIA9Y00018240rjPG2SL00500O4G05W00Go804100GG00W000H0000
+08GXiwCG040000000W60G002000Y800001A20500Ww3n0eN2m_@X0040400G004AB2201800
+G0GH6ytt60GCC10410904GC02200080o100000G040i8Z12800000G000e000805W0000S00
+0K2010401b0eROC000GZK008Z_DG000000CI0Wu1O0X6u464m0e00086A0G1uxnDW00A04H0
+02000180nalD0004q5v902008eS3sjn000220442000002110400Oq@L00e_gBgGW004G108
+W00000G201000420GW020WGG0uboA000qW0G00xl840000C0200W9IG880v5O08yD3Irt04A
+000W02Gi00200C100080W00010j40000A10iyV50BB0s@V303000000GyD424WU1zt0808@5
+01080WGG2apW36mOnwA0G00000I0a_uF852138186C100O2GA0ucRtD3A8t3i000vgUY12XG
+3c0a4C819810Sxv62200e800WB0104WV0T0H000wG000Y0008000G0m1W10101060004004G
+0080C000G080K4G101e6000gf7300@0v@l100GI00WE0P000_100W32K0O4e0q1S1m5uE00W
+L0W04OF60GLu10pC110000K000@CWy_PWgl20000muyCeZP3820CfB000001Ke2R0k_1u@@J
+0I090oW2YWI42252XSedvl@S000WgV00ON@Y_GFgXeJ00mInqRY2s_0eRySYKGN000YnaBHO
+G6qub1L_dGtt90004OpS3000021G0000WmJM6SSk100ShMeFA04105gd001000G0XzVR0200
+00K00HWR0200040i00400G8440K084000AW10H022W04GG10100q804000X105G008800000
+z_1qNk1048010W0ilC300020200yEl1ZUd0040WJF31W01Gl_C014002000400100G0O000W
+02000aG00040000O0002020GMLtWTuC04800400G310W0481_vt0000yMc00QDFX7yn8ZvM0
+00iqN@302002_N2000K5fRW00400101W2AGG00G08W01e0100010W000080G040W0A00000R
+Q4_600G0OSE3_@dX0pDeXU3oet010G0Rz6ot@6i_F600206jtWzzDO193UF@XeWIW0080010
+00LB0zJ6b800ez@t020WG2x9KJT2NxRmAu90080eoU34000000Ydn00mYeOyil1vydG706CJ
+U80W00000220G0ORR9_GdXvwD00G00001WT7COhG3080800H000200100G000WW10000yY20
+2000W0m@tF4iB3ltCJ4@9quy3@ed0K0000W00040100008000H02G01000O000438089000W
+00e4230100W0000C41GLtIih_3rhRmc9C4ak4Tkp000080206rbN1I0002001d_R01420mG0
+880W8008OW0C0008e800GG02e4G0Y0W0200G0XGW30W0023000a6200000g0000CcU9000WK
+gd17yRmi06ybU80Wm80048q8F6hTO0040000K00080040Wasl10W0201800YG200X080W0GG
+480201000Y0Y30000Gr4040G0014t_@0500X5WJ00W0m@uCqql1dnk10XC400a2VBPm@@6C5
+k4HrRW00H9AHG00404040000n804A100aA2KeaI8pa011aAX004WK260b000Gs0800I0aXI0
+04008u@400900GWGWIAH0400000a800080000100G40004W0800W80dRam@@OW00K04GG400
+00Y0005hN100800828WW02e8c40W0800Y0080K04e0001K0G01108O2Z84040G04a001000O
+TK0020214104GR_C8G08010G02Ki80G4080050GO000200060GCS6m0088aYDO0009000000
+1420G000m2GG01k@l20C2Y01040K0000GYG16Y0Ze80500G800O04SW1We0IGYW0Wpm08002
+m00000ObJ060kb@7000610G00AW104W000m00GG010G10092004001W000W00YC00480W080
+00grNFQad400WW000n0000W0824004a20494002000W8W00SEj120000Vm000AGCtV30K00a
+YV20G8000200I400W80040001L202408X00101W042204200000GY@@N108M2020GDaR0G00
+00L0101eLs@N2800jC0G00_B010G001W840Wh4402xMX_R0E0ix5X00e8G8G020qV110XyN0
+00GYBWA000WaL40W3XCOtV3Gr1020mV1G0G00804820S0800Ge8m10200WYW80800100W006
+0oXscjhDWG8CW48OG909WI0I1FOsWx8h8yV3000tyw@600W@100CZggM0uXl8chQH0y@YOcP
+geggWBS00W@92m@@L00061000nOz60OYm00000mF3WF8V0000OCS6030206020c0@0S1C100
+y348078G0y6W0u7m1WBWV060@W01_1120000qO70010YpnD0m50mj@60W3000O000m0S5W0W
+2W9WH000Z00A010K0c0e0C1S1Z0Om@@O0W_30@@3000W_2_LPMV384218842I842aW4K8XG8
+00WG1HG0I0aW210005C1081980d_Z100GrPhDkn0ZpOu@t@jvPP6o7_XlnheqV3gQc10W1Ap
+VRGZu60ah084cJoUEasp9vky4G000001400000200emcCeYV38080Sol10GG000100018000
+0Zr10W0oyOBAFYK8aIzPu@_4E2ZXiqD0200uD_90002SKi4000000m3AI1d_CmZkjPenE3Ux
+tWbBJ008010020000G000a0008W002G0000ux1WwjgO1GUoeKeExDuZV3000meE00ODJy_ut
+WbvVG000mfu9Swl108IeoptWmt2vRqeIFqWz_JW000OxWO0G918VKyMw7ZuyI0100ISs6OT0
+1ulU6EyebBN@fNV3ojFXAxJ000e00W0020G03@R0008EW0W0XlHojiHbUj1rwdG2@6000G00
+008400Wn@D0G02000000j50Ncymqjc1000500080KI1000I000500e00080W20000G40Ae00
+W820WeI0000GG40e40008R200XlPW00G80040jpCJBav0020010e00A0041W8Y000EFt0600
+000Wm0A06W0H00051A080000rU41032Vp00W108G402yDDN000000WG00W0G082X0H1G4GG0
+0aGW344000800G04G0108S2He8G0G2000hb40GG010010001088000W00JDED02XG@@R000G
+WpGD00800010002020K10a02A00040Ya00000Kp588440000201G400Y00mrV6alyO0WW308
+00v5000W0G0G0004E20Y0W6GO02800Q000OW0082820z28W8GuB000Wn8yDaIbU90egg000u
+1W@B0ymN4y000OXnVBgggMaPc1Wgg6_c7nMx400O00004000C020G0u2W00100G68I2CGa4G
+o89WCWu0D1n0_1k3Y4S70v1000G8E104_69rRt5L@70000LgA004UGgIrWW7yWhALfgA@3W@
+22pC5400008Z8_j@Vlx@s@8@E9RsudX3eP0000DB10WW3ciMR600aJ5wVKt9Pp7RF4f0d7lR
+GAqC4fmLNR_Vre@Fjw@Hp_@pk@tCy@BB@Voq@Viz@5Z@@mw@7C@@@w@@@@g000ybz00m@@@@
+@@@fa_@9h@NIx@Zy_V8n@@ny@TK@@6t@dH_@Ni@V5z@Fn@@@@@@@@@tiEj0l60_@leYyP000
+00020WR0m8rVO000GgR00em_F10yrz@VH0G00YK0ZR0Uuq@P0Od04fWeA400_@l2G000lIam
+l490800OBWD_@@A00PDVAO040000280@@R00800000WnNmm@@F000100000W100000W35060
+000_C7000000080qa03200000C00010uhZ4UxmWd0COg0600G0ih06vZiaw10WqBC8R0LIVm
+Wv7OeWX4_@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@dz@@@@@@@@@@@@@@@V0002s8O2H
+o130P2W@@L1040G8WLafv9p6E31000000CA200_8ua@@D0004KcdFW800u@@k000n_@FCxE_
+000Ams589vG60000j6u9lcQ0WN1W@@hOxnDW000yim6@@Z1002eiGXvuH3000W2Q00000100
+Y0W60C00W0q5bC00G2uaL304000WAA000400008100000WGEYq010G80808000080W200500
+W10000800W00HG00ifv3Fas200010100xmQ00WXQ0W010000500020000YC022G0HW0810K0
+2L004WG004183000W04401AWW00804W1010W00a022Ge601A4n01001Y24A0G0mW008G000I
+0400402000000205m@@ICQ93@@72080G00019OQ00K50240000e800G0000cY20W206200X0
+G20f20G01100Gnm0W00G0124I120004023000018O8001W8e4G10H400m801a1m043G00A04
+0GnG0061800054g1f4y00G1WOOj10009t00000200W002_q002W8bdomcdCW0T4eQ0300040
+8090G090000404m0@@R0W00XrIQv@@G0G0001000800000W6H00008e041000Y00ugL30800
+010087O362E10W0200WG004000H0G000W000WMND00e000W0WFSJevJC000GkiRE2SQY0020
+8008002Y00O410440a10GGa02CSC600W1NLr0G2800200800000H08@O300100W009bsD_@N
+b2PP0000ao00404000040W800004120880180WyHa83N30002SxX10G04OY92W000gDL6_@l
+29000jFp30G0000eR0040UOm040000014900O00418drA0011iXh12C340W00001Y404WORq
+CC7j12000grD10002000110080004gaQO4004KHj1W@zfW10CGH0cH0W2a0800G041YQ6IWS
+04004e8aY7Ge0001Y1GW04AL001O0W06Y9YC0W0O0410DH0W00W002010G000010rSz30G80
+spn00410jPC30090000CW40Y40CW010003J0W8KX5L4X008210GG04Ti422015004002W004
+A2cZ12G40K6100ZIsWyjD004000W000G00080000K0000000I150100P00KhFOGA06Sw19o0
+00Ga0IL5X100g68552g180X8ILa828A59bK2eqam0fI1GH0160001000W490@@R00aYG5c00
+840f0HJ98WYaYK3422084I104I200GaKCHXGW48G95081WuMaelvP0020200008W0WG82000
+000mIG02302WYW288W4c011W024002040800W210000ISC6y@l10104G4K00AG4304X54014
+KIKY000G0YOG02Y008100Y2H000202A100000000K00800G0000GG02W200800e0Am11C204
+20W3YF1800mYr60G402000BA400W0A00WO002Y1e2W0W0A00Om404mG0V6B10410802G0G0G
+4003A01GG0510W600WW80dIR060000000O02e_@t001W1pka02000000G010WQO@a_gV00mu
+500800G0020a0000W80G0000W000080012@@NX0100804G040K04000W200G48mzL94VW140
+0G000009G000042060020R10O0sW2i00WGuRWQ3UfnW@@zOg7380r70000b3000eFdUtG0AG
+@50841X1W00W0qV202WTlGz1884Iv002y@F3e@0203_l0018G80C004WUt0G0O@5wT21W0yN
+0W04020A000Gl0080mD200y@lJ000OHE000000qZF0WL3eBLzm@_0m7y1W7_@@60uo3SJ1hu
+f70KTL18L10W@@P000SrUF600006000C0I001m00083000u0C2W1O000ETX400WvE000C060
+KlZ10065000cx00Ct1wOk3m007m5000300Wv000pF00YEG706K703C@0CO_1P5503f0OW3q1
+05W10003000n0isFI_820_@t0mIT100000uV2ucL3m@GaXRA0GpS3Ws500_@t000mDA000_@
+F100ug200m1m3VvXh60WLT50VC20kQ00000y100y5b7pdp3000Am000vaR300GWduC80k7W0
+00200W00G0W000W6yD00G0GYy60201001Wmcx6q6t6G000Ufd100k2TpL1G0000802jmRm2T
+C4803tVaGrzCSB295v5oT_F0aq08GFCoht02000lwnGyH6iWt3Ftd000W008000200YKW100
+0W000G000020012004010GWthQ1000ec10Ws8aOwV3QIp300e0ZoX1W2000100G80WoTIYnv
+U0GW0GyVI00G0uxV3004H080000Wx00050GG0004W840eAGWG10001wFW6000WX01G00G80W
+004000W400b00084WY000W200020G40W00W0000m0W03Y0080148442400A00yjl1ttn0800
+Y@@D0006GVX68000egG60008Cb7300G0000W000220040018000000i8000m00W0G00G4000
+0K808o22W0UJC18002GAW0G0Y12040420G0W00004GWG086HI008mXmI116020WG54020084
+0O000100018GW020000020W400G01a0u3Jp81001aa6b010000W1WdLC04a00000Gq00mW12
+08W400f00000h00WYGmG0090Q0O4O00GGX6W440YG0WaW40880880040G2D0SeG1G4aOG0n0
+H0WW8Gj6am00mW1888G210W30018m9X9CGf1v4amiV9iue1b0omZaC0000QkI3G100W00200
+00000@li9D0000110U020CG40402xBX5AD000GncH600080W2GGMa600001H20GiV900K0W0
+00000GWnsCe6J3W0W0y@VHWIS00008CKf1fRQ00100800W2G40_@@102W0002002Y000H01G
+W000GC0W1000006400G000WG08208020G00G020AcOSZ@@R1008200G000Gyua00YbB1400G
+00W0gVoWBFD0080qWQF00W800001120080i00X0I0800y9g100G280014Ce10108cIXdj9V0
+0WT5022WlrC8HF34002SSf10m0K0000G0108eo7a000004G08X04100014G0W0G8C20IKAQ2
+JSO00mGW0kcPH19AFr0WY20@@R00W0Y7KD00014002X5ACuyj7044G000014000400H40000
+G206sq08W020010W00901KW00WG410W007a0000IUsB78000BjP00082000SicW0001n0020
+0040000G8000101A002I4W4H908C0mag6G000W400410004140827WG4G8022A04W4a0h111
+Cy40010580000804W3K001620000W2a2_@ddCQJ00H00200000F5xqQ000W801W0810Xm082
+00Y00010002W000002W40o8D1212Y4040G03000Y7HC0f4EW08088W00488Q048GCc105400
+W800CW0n9cmddmy@@300A0W00010000eG3504X80020aoi24211GAf409I20GW20O0102e8f
+009G2G2aY0001I100I1X800G0GWKYoG8W08I9500K90KeK40W000000A0YGiW02f4000950n
+aQG0j6CC4F00A000G24nb1E700G4008000108I40P24WWGG01We00812G8G02WG413120228
+00m0010W0G2100008G801XAgK0142a11001G4Gi8010W204X802m8G0204040000mW0210O4
+E00XF_3Y000001WG08000mnG0000GW00001004W002G1000C00m4000000430000WFsQ004G
+10802010T0EWW0S00O2M308aYH0041000i0145000WW100000C20W0OGI30900CIxCl3dGJo
+6KUh1WqP000W0CsY103G0oTpWDQD00q020G008000N5R0W0G000W0GG110W6e0200000WIQj
+6KNh1fyQ000G00Ga00004cbDX0aDuLAR090000010000A@Wj4002wQ101G0A0u0040z70W00
+@5mM002XyM0W040002002Gc30800z2z200G0_B0002410100Xe@2040_UXUHG0OWR4000100
+HK09820H420kg0_0W@@H200ms@@6000sa0NDW0_@30_tF0Sr800000m40m700WgA0W@@D003
+0eL30GFYmL60000mALf00@m30_F000000ufE0000m3Vaac1000WWWi2810306000C02W@@j1
+04HGypC0cg1004J00C@08O_1s3W3oTp0c3008k00O_1SHa1m0070HMS9m00Cd1gOk3m007e3
+01ob008k0O8w0m0W3YXp0cpi0CpC0KLLC300Um300m@@suH40000yX804W9yCukxAYuqWmtg
+00FY00083V41WcR60zP10A100q@RKbVVvV10m7U0mP41W2_@VK00y2wccaXlzuRwAQecXwmb
+8Jy7kqnWemVG004Grk60ov0iqQ3Q6NYGbhGW00GAT6040I0010GsM9Cgk1lmPJMwIyRN2000
+4000GgH00uRTLolZ10e00G0W04000qnE3pipmxw94sk4jNB120WWtsbOHU300yxblj1doBno
+yCK5S21qR0000m3wVexz4UVtWjnP00080002W2uC8MK30000TpT5NmR00080240000WG10W0
+qMk10pM10W400240608I11000080000210G00TLl1YW004W402000084010A0AW401240C00
+00WKO0OUI30G0W0G0X00I00520400022800Edt00700400WG1W0e000uz_400W00004GW40m
+5_9ijV200041G004VO2G2800O019W02OuI3iD10004HG40080008002802W0n00W8eW84014
+W1010GCG80804W8C20G4120C444801a4O10A41G065A0210GW8040002002400G4G95f2016
+40GW80000W0800W000W8r_l1401W2t91040nHnRGGY6C6F380W0Iyt088G5000G430Gy@l10
+0m1X002W81P1K0510540G0X00G4C004IWAa4W02400nG83m140G0I0L8010030B2g05W8211
+04eOYWGoG084O0440G0G04GG8050O21m5XA8e00v_V30042y@l1HAOGopCqEF6Nwcmzl9W22
+8018000000WuY0hvRG7h90024uHn4000000184000008W608040200m00IG1000GG0GX_680
+40ecR3002001W00C800408WyvD0000Ob_XSnU5B9@00002k100000mI_d10W0H080W00G0qM
+l17WRG@h60200PqV3c1t00400G00GW0101208020W04GW00W1020000W02040000WGmLbs08
+008US60GSsLwl1200H8004iNX14000_ip0000G01040GI09080200Wuz@6W0200400W00914
+0G0810KALt08408000WW00028000040G3xUasl1hxB1000muGI00W00010Xk@D0mV2GcFCCt
+A30008WG00004G0005430WWZyD8Fq40000Y0000804Gt@6080O0G0000G0041200YW00G420
+00I81mP00G00004100W00W000100FrRWg00WUvDO0g4W0a0iul1001a400000410001001C0
+40042000_Lm0C000000GW00000G4000WW1e008082G0eGWX01001G00C80g0000C4LjgvnbD
+I0400000W80Y00W408020WYwt0002P7GQm2_60G420X04WP0000W100C0000A80000Y4WGY1
+22LW0m00W001000e0G00H0D0HWX004X0AG04W880W00AGGG0045495XX06W115W822441030
+0GM@9qoS5tXM10m04000800800100CCV2W860oit004H40G0401W18200G40W00000G0G48K
+880G11f041b00K1XW00WG2081008000W00003882W2020H812GY0514IeW29H0K001Y1O0A5
+400081012KmW1@Vn00402000X82A000G0000aw@@4woF100580000aW820W4K0GY80100001
+00000Of9K0020000005449004WKa202hXt040400GA4814GW8fa2540903GA0001W0W680J0
+91W0XKIPXCW021854G00Wa0H0e8n210Y85f002G0000100000G1GG0009KmtlC00082802GO
+P9W8G0W8Y00Y8200002vN@0e0100001004G080D000000WQ9008C000000WYG4Z001G0n8XO
+00W200G0W000Y0IH82G0108W0Wm211C12049K100WWGWC0G3612G00GY20J01W082e000001
+10a0Y01428geG0A2m0v020nWOer7000HKyh180K0csq01030d@RmzrC00G00Z08800001P84
+60002dq0G0W00050001004K8CMD300900C008wU3020100W0004002WH40Y00h@R0W2YXn7C
+01Wf10414W0804G4m800GaFh1038W402000I0y@VR800W0G40eEv40800000W6d00GI@9KLd
+1nwd000G0e04WvkRGov60W8G1004GEa9G08800W045AX20421LkP0K080KV00W0K7M@@1500
+00W10ozs00020080W42r2W0G0zSt70P00000Peri44000007000067O100W0U80002020143
+d1O@5GK0000eM0W040IA060W1GtBKV2201KE0W08040G00248d1eM2202e200W80C00GMS60
+yNY0Wg000F00V000VFto@@90m7H007W70080000W0000jA000Qd1exR9_@F1@l100uZ3C0WV
+u10@5000000yNx0000uZ7io7H0W9Y0W@Zui@9ug1GmD50W@_1GF200yp008h0O4vD3toRW10
+000010HYQ008600O_10000M2u14H004H0Y8Y0G001W8CS300003D000n400YB01cV06nmb00
+00G00WvE01pJ1m00a509YR004P0OO_1a1W32aB1cV000C0ToYZ1308YG0mL5mL0Cm_CY0mD9
+000axz300k@Z_t000WhK100yGLN1mPk1WFEmlR6Oc@N1000WFU0mVnJOOz7K0WA000ta0Lzl
+7_@6lyn30y@02NmWajmOzvGMKh2mqA0Zp@Jou6atF3zHbGCuO4zF3tvM1020m6oJ00002t14
+Wo@VOMA3UKNYxoPG004mjrC00608CybQw@100U2VvToDtFijU2jlRGXy9G0000000O5xC43k
+4LjpGa2O0804Ow@40Sn0jz39ln@m7yFCZT2@rp0048akYJum_404010002uCR3EmLYA1I0WG
+00004WZuD0000aWW00082000W14040002We7@4G0G00m0W0401K2z6080004008000240010
+200010838440W04002WcmVD010000W0GI100000a4400Wf0000018000010e0znR01GWH800
+0Y0080081W0880000X08804G002000oktW33C002K00W008W2008W000M002G000mQA0G000
+542240W0808WW80201J0W410142820040008AWWGG0010W4O0C002AI0G002W8822115612G
+e4G1G1001g040000I0W0H8W18280201gW10005I000A410GWe01000W00Q000000W00G09CH
+mrz680500H00000G01G0220020000rkj1ryOW00G0W01Xa0080010WB0014000Gm1G40WW8G
+0HmGW00026WCG00eG06H0W0WGGI00080GG01f488010G1KY2000D48W0G28e01q4WX4C0QGJ
+e4e00m0M1Y60004068H6G0121008mWA5sWGmP87S602H0i0c12100gHMYb@DezV3sqFXimC0
+0011000WipD8QV3krt04200eW00s_FXsmD010WGyu60100uT46002000W1a8400400WR0COm
+M3000W800000100O00080040100W001a4W1HxB18W0mp@P02080000000NC@@R0000meqJuM
+_40KG00000001m480G0400WBp@000G00100tnP0G0040G00vyRmm@600680040mJL6G204er
+63MKq0W0200900cF230008020001Y4K6V22W3H080002049go4s@d1080W00834408W8G000
+W00W400010100XC0K000W00000G040WWlyD001000020040GVRo0G0GG0211ZiRG@@9G600i
+R8F08104s_3K600IvdXW_P8VN3W0000018G02WG7_9q@k1b@R0024Ys@D0G800428G00080G
+000100Y00WeF430G00iEW10020W308G000008440G0YFnhOiz4MtF1W000004dxecXQoD00G
+0Gs16qal1PvR005008OG0GW012YsWksDW010GAf6W00G8@434024e004YC0020O24GG212I4
+0940180002800W200404GH0801W30400Y4OYI3IF_1004W9xR000000GW0NfR08H4050GW01
+0C00G0000108048000ma_D0000e90120WI0OYH280410890GGI0020G04W0I020100100618
+40083000G0W400W200212092042W0GuZ6002000W800280a0XG080600em0W110mG00g000r
+0GCpdPG2@F0044401000m00080GmG00I_F1YY14lnpmLY9qzk1A000GWW00a03n8Km0GGG01
+50IG00G0W04W0W200aW002I104040O80009088I20G810W818I10G40ZG82KG027200I1m_f
+60G000W0GuWy6GAf003a0GJq6000WwQQ6g_t04054002000K200Y0100000WMMI1X2G0WG0Y
+K00IfY00I90084K000K@@R00WG6Y000aI0000ZG00fa0Y00100GAA0XPG44105100Y00W020
+e408018560YGJaWKI1G81000020W01GG4000G0148414000a02u@@9GKH000412G0G8221K0
+0080044zdo3200000K0200L0WYG4001WjzD0ao0200mG00W00X8002O004G0uZJ604G00000
+184G8102AW0G1212e0080080AW0W00021820080W0Y04280aW800020G0109KA6WI0000000
+CW34804210L000G00010Vlq080G00400GGW1G30801070800WG@Jugt40008GO460A008300
+WtsD0000dB100e005G2M0W203W00600G440G0usuC0G0m2000GG0W0liP0001898600040Y0
+t00G01zsR0m010Y000j@R02G0iyqC0109Gfi600W040H20008800080W22Qyn0000eY800G0
+00iBW1@@p002020110000W00400000a000000xXnLCOWy40000L0w3W00W09210282G010m6
+n6awC3G1010340O00W10W20W108140z4W000_80ydk140aI0G10f50W8gS3GG8O00002zt0W
+48@5W00000XGEqsWrjJ00001061WDqD00a900208Z000WSLwT01W0qN084V380Pb0W20oBG2
+mPC900040P70W1Gw5qF0101yNMtp0080aA0000A3av0200Gl00100404004W_20G0Wx50000
+048G220G8K88KeGGOWXWm0X0a0I0a0000a000000CW@_3W7U0W72mASOSIs3000WaE00qyl1
+sK0026k2hSr00uZ7o1tWJqCm7HiXRA0WmmJmg10WD5uVN10000mF4104000Sp10Gi2m0G1W1
+0E0300WE000p1000600000OO_100W2u700G700Wr00000004J0000WasZZ1200H802HCGG0e
+08000O00086000lU000pT00cv0C4X0O0W3W0WK1CeLS3WWe3000E86E6Ok1OWu2m003WHiS6
+0004n00Ok3WmS6W10PZd00H4X@@JWe00m@@604G0OA_4QUcXB5mmD50mI@90yI18609IN81@
+l2000W740WNP000OsV30mL04nt3fxPW@30WN1COnV3_vc100020800IidXY0Ieux7Y_mWRlP
+00800000UqY005INnY@IKzk1v_dGxq90W00eXJ32yt08000000WG0040000X0WGmoI90008e
+103QvFX7fb0400GfrC00080003000qypkJOTI30030isF6xW@GBj60002040020000140W80
+10_8tWsiVOLFFg4t302000w70AHVZ@rVOOz4EEpWArhOeS3GG0080000480X000000W00W04
+0002800G8ZO3G00000200080m2@F008000800200WGrJ02002000Ah800zvPmLn6an03D_x1
+0a0Wd@DG0K0mPo60a0810000a00000AW84O0dOn0000G20800108q6b128G02IsWMvV0G040
+00002440DiR000W0X00800W0G00000m5c000020I0800X0290010Wq1c1TlR008804G20440
+0G0100G000W20Z08900X00010W4G00G262OF930WW008180400204WGe0G801e000Y2cFf12
+8GG0G10082000000Y21W5HD0201420054G1220016Y@1XWGG002W2lt0002G1LO0WkG0002G
+20q0C20Wiuj1m2WW00000812HG0402W1201010QGG80I0042O401080040G0L00W0G414020
+0X2XaW0S0WH000900G41200W203000388000GC5824000W80G6800980040400002a020002
+O000a040Y00a00e801vxd000201W0000WOG0000810W00000210W00GfKQWT00000084f0C8
+8e10W00080GC1080000W2G0Q0W0188X450J08G0S0K010G0108J8494G20eY000GG5W0C002
+g0414a0060008302812W00I4940K000W0W9fUU30010000200W2000800210HRR0020WOAC8
+bV98010W2000400000G0000WW004GW0000WTr0001A40YTgDu_D38800C1S2paR010000080
+8L00oIt000G804008G18G0W0W0G00W440080GW0000W00I0002W1001010454GDfPGAq6agl
+1VTPm6F6W0088o_7_xFXkyDep@40WJ000I00GC0GMW90040000G0o00100020G4010008200
+2000W008YknD08000WGG0621W00W83wt0H00A0050cUt00008800GIRn010G4c0501G00i0V
+2002000c020WGfXP3EKJYi@JW000mXX600023f00mM@600220W000Y000I090004000WG00W
+0008000G88GA04T7b01000W8100080002eG000eWU3000800WG4Y40280000I0O04000WWe0
+410GG000004vxtD0W00W801WU9P0200WH20WfGh0500W8W8Y8vD000E481010X0882002ad1
+0W002W100001S3e10G002Zt008200400802000W20I88Im@6010W86E3I@t04001000Y0000
+G0G0W0W004G0Wp7CGc0G400K00W00400HkXF100400014Rri2000GhlR0maH013200008000
+010CG000aMIy904000YW0u9_60X000891WW001008ZG400W4W042b103W8G0Y0yJg1000400
+A0002OXmW2XQ4083I1neGaH822p08G41000800P60G400400WHCH008040n0000020A00820
+0gmqWZLC00H000040G000282041WG01004000D21MA0Wa0O5g20G840A0009u00YY100e300
+O0L10K82H010H0G4XWG92014G00W0000314H40210I021ie31082A0W048W0Y0W02080204L
+00m0000A48G0100CC24KG00H0OWW0W2HG4000L00000W8250Q1000000WK000W80GH00WG20
+000GGPk_mDS60080G9008e000001120XI18C00180W0O4W2080200200000GD002000308YW
+0028WO420W00G1YAY90G0208H01G1K3W8GO01GCgGeG00m001X000Y4nGA0H41GWWqfl1030
+0kdBXN1VOqj4IwP3G10GW00H85K888W821000WbHA4000W20285Go01IDXKI10d2201804W4
+00000I92W824085fe00o2K0a204160104fY020090aIA100WW80f0XI20W04XKA100044G15
+0f@Rm7b9WG01unL9G40008Y0ejtD00W00020400020006G00G000OW98GaGk1a18350WW0a0
+0030o4G810o100824me10XzJb10W9G0G16044408W550I00W0200860W080W04I2J0022000
+P800tfR00WYaLmC000G000Wa82V8rH60001aWl1Zn@0W0G4000W04a1eI0BG1e000GhD1260
+1WXKm0C0000202G4000m1CGJ00000Y0O0CX0WZ022022eW8g884283GH080Y0W0400a30H01
+H02C08AA02G008e1PG4X08AAW0S0A2Y1HUd0080WE6JOuO9W0H4ifI2zsp00W004080LsR01
+004WW08Y00008W8088020G041000gWA09zR0000K00008W40090080Ga0000W042I900W00G
+1lnt0410000W002W18W282900010402W0A400G00010I0g00G0060000W0G@wRGRlFq@l108
+406uN20W200G00Uqr000W0Wj48G0Wj000WM_q70042Gl00080490002W_J0G0W@2okW00GrB
+0G86100100XetD0I40SXUlm800m5080Z00GW0W0qV34920kG@0O408u2000H804G000OHGG0
+108G0m3L00Le20Kd2CH4G_380MT50y7W0ewA0000mVghGdw90W100200000OXWs310WFh200
+GP0ug2u600000G50000Fy10tT00g000000C300a4l1kQ00z8000000qhg0WCtu5F0mEc1mV0
+0WA43d12000IIp00Cn404H000W100P506060C08WsmD0W00GCS6q3d100WW00042000K0008
+0m0WcfV0042008Y011m1G000C700mC000ut000Cg00Og0Kny3450746U24T00O_1wGy3m007
+u7WIOF0beu0AHnTGYYx0k4t1P1a3u289k7Gf0OW45k0S1C1M3e2m4G9ABWI4m018rL0G@GmV
+_VF000A@wV0@7x0_Va2CGX@02Wpp00L7WgVCG4000_@7WurPmhl0WD5u6580000mRK0WR200
+Wpst0eD50002mCnhRGRS6u60lq10000c9Jg0006fg78uT4HmHdXWgU01Ri1Few1kJ41CJL2w
+B54qrJ98DrGGkZmKqNWdDW8re61@132kJ_fI4oD32800sspWClVuJV30W1000108S8600000
+0Oa1200Ino6a6z67zRGE@6iil1002W0e0000W4Oyx7QFp0040000W03xF100G04W02JD@XB@
+JG20G000008002x_R00Y0WZfCG004GxT60av3uJD300W28004uRQ66Po040002010W001014
+00280W000010G2Xbd0008140G0G0G000Y0Szh10G04IsJ20W000050gDlYHsJ0840GCwC4Oi
+14000000GhU00OM03Ixl2800000W0UTtWTtDemS6cUlYVtJuvT3cXpWKvI01300000e4nP08
+80W000WNnJ8hB3gvE10W0000ATFJt0012GG8006HsWbWD8XR3EVt00G002W000012q9i1000
+Gs6B1Ce002W0W0004bsj100W10G4e0G5G00021004200A0W02G6kn0G40000Y000G008A0aY
+0000W2K000G04100Ge000022H02008G4I0400G9200e0000060WWqPw60yO41W180G1000H0
+G4W12YKt000018GKWG41000801100I_z6W0000G0W100C022W00P008021WO000000CIO000
+00W2040008201108ZS30005000g0W00W228004040a02001080AAH08G8K2i40K000440401
+400004224GJ06002040401GG0YLnD0050002W036H0000OKi0000GG00152WG00W00508W20
+G0200XW0010202011000Y8W24H8H0000101W4020H000W00WI00W28gG00W10WG200GK118G
+0CGG4X002248441G08G081020001O1G120W10I00H0000X0W2002007020GW1H2B82048020
+mY10000G2001Y10C80W00G8040000O00GWG020uTR38204X02000Gm24W0102308G68800Ii
+fl18800018K04G0W000800G405W0e00G00W000X1W22110W202GH000W0Ce0WG00eWK400H0
+00HCG80W2GGm82A02K000440600500002000G1400800GW400000GW0A0W06W010800m0300
+0040080080C040000000K0900004O8o0010O0002m0100O000504204W00006RX0002W00W0
+020412G0e0W0O0000005G0W805200240840W08080G200G004OxG380008810n0a20W10000
+000H54W0200808AUV302000410ugV3031G0000G000Kuy6W000emV6000WG000vUU302W200
+G0WG00HDz6001000I0ms@60000nv4G0400000W0DwR0011000W1VuRGF560880e7V3000200
+G0K841W8G00080m00040020X0002Q10W0o0H00220002008Y00XH0m00q2_60004OoI3Exs0
+0400l@RW000WKhJ8o03saCXr_D0200uK76000000H_A000XxICepV6Mqq04004Hjd00G00G0
+01005G00040OY00I1008090880WG00000WW001802W0002W1100IG0100020H0020180004Y
+00140@_Rmj@6Sej100014K0048l14000pwq0W1003id000WWbnJ0O_00000015H4W0000948
+0002W100may6G0K0240100500G408024G0C48W00422000C1X010000m814040204G000000
+G14040028JH0900K6h10H840001G00O00080008Wh7C0000Hgx9CSl1tlO00G40880W1Mpm5
+49G4G00000k51400000820CG000qfI2I849Gq001G80G0GWuQW9G0H0W080mzc6W00400e01
+0082G0000824YHF1mW0W2695180G0H1m022104P410WG040H00WG100H0090002000W00082
+000005004000n00M210G4W00822G0K022418bp4W005Y0244420000IU8eW2m0W148K04Nl1
+011I0m05Z2KG1ZuWXQ0H443C50XYO00e002220G351G5j040CY6XeA8a44GACWG00181W09b
+Gm0cG0G8Ze280EAWIeG090H48I4G2a01WHD0002B1XG40120mB_D0H00IMc600040M000G51
+0000480WWGGeiGW0010200000201040GW000W2I00GAAB30dSG0000G4m0W14G8Z41H4Ga08
+000000225I001810G0802080120WG0G01EIm808P080Q44G484801A443WG58Y9A980G10Y0
+OW4o018WO418W20A0GWT@P000300I1WHzn0400010000090BmR00WY000100e0f00421eca2
+K0g0WW40000eyI08o5tWy8JG2200fC4W0wC008000aIA220X400f0X200Y2QWK2Wa0020I95
+0G4IG40000G0010085000242W0ag04a0800WW0eHt70200KaF3XvpG@w9SaX1000H08041HG
+41WO010010GG81000000G7040Wu_G3_C818008j6O0G0002OA001441P8800GW0X001a044C
+51fW00G0Y96840O20GGGu@600W000W0204W8W2m0000000G2W000000G8000oXPD010000W0
+WY@DOF936kEXIzJG0808K000i06W28000Y1G8W1m004G0n0000Ci0000G90A8OG80m00400G
+08000G0G8008800W8G01081W040000G8Y2qLG00004470042G7W8O0W0G042G504qsj12I40
+10W8P0600821GB@60008W2a0GsD6020002W000AoI000000081008K5e1PmR000uaucC0e8I
+040040008403Wm0000G009iT3000GGH00110800010GG20008001G00GXX0044XG8E11H20G
+HG0W000I8208H734008X0200004480480400e000G0020W808_F300000Y10OUN3000001e0
+uvV3m000CTi400W20W00aYZ1vrd0SB10m0RB0G000204001mL1000mR10009mOJ0000GZ000
+000A4Gub6001eM10010T0WkCD00q700000lm@180Cqr200W0G0G0084wl003m@B0f1004Gj4
+ql1000gT0000G7c1Wxg20040p10000H0yxx0G4H000l3e@V3000GH00A0000@xT00u@V300W
+cJ00_3U00W8G000wl_5i@mC@6000004GyF0tS30000k6000004OV20m7H000s1G@z7WU4XVG
+_VVu31000000W0SG50WY01008mD00000K0V410_820kwD0SNL0002uV80000AGg090m000W1
+WHCSC0000G00080W001W00xMp00aL000O01on0Y900cT028k0Tozs000WR000WC400GM100n
+4W1130104WAHqR000mG10We6mCnOWA0m0C000O000C300G_10mU3WXv7030EWE00GYu60m00
+Wz6W1xC030806000C000ow1020000W0_240mC3_30G0WoF3mp1uFxA00002K40m@Vyh@1uL@
+3ONw200YJFX8sJ0W00000hIv30801m@Tn@000K000xkB000000m30qV00GGHu70CG000rK@6
+0e20qc20eFpu67_GNg2WNy0WFO00JmF0_f30000ytc4uc24mD50mRA0Wh2GO_Cq_63rRBnFy
+Lq6731yR00z0WDdPu3T6kqtWFoVOLxG00W10G000480HH@9004WeG630020200WOoN3E8dXp
+_J050000G01018A00000K200002X0002000MPYG0TepmUs64es3dkdGds6ibl1hfRma86STZ
+10808YWqWzWOeV93gnt0202000G0AoFXBrh0140S@_6G100eJU300SOL9F3vNRG0xO4ek1bf
+dmix9Kqk15vPmFx6agk1ZJPGOy6iTG2VtomexC4Ki10000000aW200uDU3YOq0Gz51Fzc000
+0000H0RmpGQy6quU2VndmY_900040W00GjnC000H0G0G020000GX200GGIv9XC0C0W0W0000
+20WK000000X040010142000102080GrGd0IK0WSxDW00000K04000u8a100G0WKQb18051oi
+t00800W00001W00010W201ohN60000W0G0C004G01W2e0080020G1GnG4A540W00G8W240W1
+8X20080004114H0G650G00041G8G08013G500AG80250000OG000000e02G800021000G204
+00200W00W060040028000GG020120804000W2150HR_600ef681400200e0009wRW122000G
+000A0406080000001802A001020880W0800W0W02G44G120801W2A0000W000K0G54G00010
+C00108WG02W00G0000I40000G340K00024010H0W1400H1000003802000G81y800220G8W8
+0G0051102G00H1288020008008000G0G000000K8G0H0Ot230WUHW0100988ngQ6000005G0
+0040002W0812A00020Gc01820m@@60G004D001051A30e0068AGm000707WC0C10G00L8010
+00000DG00WB0mO80a400280W001O000m0050000400G0a4XCurw4gXpW4_J000W000C00801
+GQ00W000008Gek13000WGL20O_V3004000K4uJ330010DaT200090040081aesU30Y0W0200
+ChS300m001GG00050840004m0cO0200001180GA00Gz@6G800uGA3W108qnX45spmh_60801
+u@V30300SuV200K1I4N2WG000440I@dXenI020001040002100C000200G00cG00CW0G022W
+4G6048020W800GGG0mIb602G000004090010000200GW00ixf1Nja0G000W004B8QmZw6CnU
+200O100W000W00Y00WWF4W8FPuSO3_@F1Y0000G00c6t000aW800000a004080W001180aIH
+OORN3004008W0G40006020e80G0WW0m0480010000W0A0Y0051008G8IM@XH@DeIU3ceo00W
+G02002ofpWiPD05G0G6@6yLb1L7m00040G020002000009eG0edV34014O00G00900818401
+0400G000Y0940020000088oYtD00G20X000040300400W08I0mC1000080900000P8RGRpFq
+uf1TtR0A0000200000201A0000H0W00000JA100060106Dr02W02XAB19GWXqgJ0I0GmE_60
+G00G20WHar60W00a00101G480003W0G20e0AWO1201820g0G3bM04W2m8WqWG042K5W3C100
+86G800b4a0410WNxCeuU300101W0e1080C0205104KW801000G0H000Kk10008202W400100
+01102040214Y0008W000000W426W0W80G0200CY0140Gm400I9mC09a24GCaG140a3123900
+4G000W0O4K2K41eO041HGYC692H43810PXH4H50WH1000023AG490W24230K0W00GMM60000
+uvL3000020200012GXE608801000008800010a0X0050O88000000bbd0008G0080001200H
+02ege40000rVl108684GC000W00G40002000CeW0002WHGIf408H1G018a00mG11a20001B2
+G919HW101f0000eG000000G28Sxl10101s3n0G1008C00_2t302I20GA00010G410eWQ300W
+viwq3VrRGp7C0A100G10WG00WrgD0W000000AI5XH40000L0GWG0200I50000040WKI00GmA
+0We60001O1mWw6iyl1004e00004Ak1D5nmevLyDk102000201iYk106M040004PY1nYpmM06
+0000G2200G4W0840KFzRG1@6W8001r8W0e82008A0001e02200000CuF3008m04AmHW4CX08
+41E00000000081eK080G080W010002Zp@d001GWe@D8iR90W00oGA0000012308000qo1002
+SFXi@DOHt40000LHd10O026qE1001W00G0401K00000A8020W00YYO02001W0H1g1O00000a
+4080110422040W40bKa102X0G2WaW081W000Geu900002018m3lI0W1YumU302000001W000
+00WYl4_Dea43ITtW2rDegX4YLE100WG042000100Y80gkV3W089Y420G00110e89018000K0
+000KJ0800f20Gpn9080800a9020W9Z000R3pmvlFiNg120000GA0qVl1R1R06000WyB0dt@G
+Qv94DG28301gZpWl_J000GF1480WF2i2000MDE10Gj000008GH0G400qV5yF00uV70GpA0Gz
+fB00040@dA00000500yJDRaPmOyFOc90emU6cjpWUpC00003O10Wd_D000CZR00Wp_DO_C30
+00hMzk10400000t0m@30000W@X00NDmA00G0y@70QLu1qZ80e7H0UG0m7U010080te00V400
+uB100G1m5WXXp004T00mO0m000a5014PF30400oYZ1000W000YK02020L0W08000m0008A00
+0amJltWVnJ00800004WwFC04YA000WWsnD0J00003000406yp080G1O000m000GC0008500G
+A03vOWA080g08mS300QW10030C@@3m0u0@@1W20000eH0mG400W0OqYDC0000000kl@00WId
+JOyU30ug100W0200WW@@00FH40G0000j700000002m40005S@F0lCQGU@9uV10000ydx0400
+201k1mFb1000W@1PcM30m7H0mD10Wh600V410iQ000W3yH40w@F0qd00mGRgSAk4@k91000A
+5000LMyG2Sdino6jLRGm@6qgj1HMRmbv6iC797tR00042000000uZp@t08W10DznG8ULC8H2
+W00C6oRZ95ivrxAISt00g10j@cmG2aalk1fwQGT3Xy2k1JBPGpv9C7W7bbaGQk9000W0s000
+000WiVI8Mk7gEl28010fKbGjMLan030G08o2oWLvDuzG32idXTxD0W80meKC4fk180010000
+00WO2W04800000601pj@00400W200tcQmcw6afi100800H0G000100401004G220W4O08MkC
+XWPD0G2H20e0220G0W000G144Cag10G20G00KS_l182007Wt04G000W0000028001ua03010
+20010020KW002020W800000rB0000A00G01800000W0208000000b020410mDx6ywl1W0004
+W04GO00K4040cY80000G60080X0100E0G8Q01GW84410I09W0Yot00080u020W0GGKad1060
+008G0CPe1NqO00G0nf@DG00WW0080100008W00K010W00uI830000G0480424mDT68C00028
+00002520000801A9m00G08800000m0KDO20001002030O4104G80840G0X000804X0GGA9eG
+0WG00a0300848400cft0W010G00G0020qmj1G0902fr08000Rvomw_C0G10uU@4EotWH@C0W
+00000I8G00W400WYja108W00004IIpWK_D00W02008WStC00eG40G0004100W8000080004b
+0H05000mOgJ00WWGIs6G8Y00380000000403t_RGA3608100G40KdcIW200ett4kPqWa@D0a
+f1000000X001S_G5@68800W018008008003NVp0H00010000G440002MsK2@@R00210WW0G4
+G0GW00010W0040OGGA601W0O@@4W480y8b41Gc0041WemDeDN3000XBV00un3C0004O000G0
+0820O0mkqJ000amu@60080ekj4000G08004000W4200W0030128W3W2G00012004G00WQG9f
+c834000aeQ2JHb00WraJtDenp70100qEQ2W0042Tt00W100W00W04I000G4Y08GUC9010404
+000G04mcwC00002182WvaIeuR3QpyXWKhuIK6IB810000WbK0_FtWJMm000WGbX6W8002G04
+X8820010GVlRmIV600800G0G400W04G0002800We00100W2u4A14C444u0K0400004800002
+W0G9y6000X0800OihI000W20H0mqW600000428010002000000en700000W0108K_T9K4V28
+0W84804G088420G806G40G000G4H82G4IO141H410H020Y8800050020WW82HY04GCYGG4aG
+W0200QCCo0Z022004YAY00A0mGH4010sYsWGzD000m8018aN1DOS@400H0qQV20402Aop088
+000W0000mP2008fKC9wXr00GW00004K022eY0000040W4500WG0484002000W00W00W10204
+200482000200TWY12840wXtWW@D0K00000G00850ZxR000I02LeKa21IX400qti1jmQ00WI0
+0GO2N7nmmq60081G2000eiLWtZs8nV3oWs0204085W0okq008W0VnRGO76000W4000214W00
+0GeI0082OCX4uD00W10G000000H0040012O01G0101KmH19iQR5LYd0000A000qU040EvLYi
+iDu3N6000W0002W0O15G0mG000K014010000BG0eh030G800We018020080A00017SR00000
+01GW1PRGVC6qZl108000014800WOwS6o4c10010W020wut0006000_R10G0K8q6p_R040308
+IK2G0GeGq02040000028WG0000Dm000GG8000001100I21WG004430W90geZ12WWGp_RGYv6
+82Y000G800050000YBgzGEG6yvl104W0oIE120000Z200040Sbi40001Ufr006000001W018
+800011101WaG04101G00L0004f0848GT30WGGKdl1W40W0200abC30100000WWw3808Ww004
+00W000008wT3060zNW4000oC1908oa002WKiRC00040050000W1000Swd80guLY5yP000090
+W00000HJDp008A00100GW802rd14500001400W@X000042000_wF_5pC00Oa1uV0C8sC0000
+1m@@1000000qd00yH80000uV0wwl2G940kf00yH400W20qZ80eD5u6FYmDA0XRK0WV820V40
+0_840yLg0mg2ulVWmL30mRA0WF2GOuF8A000W000pF00YE06ik0C0G0w000s300u900WO400
+00019400000P0009100O4WiuI020Cml36G4000OU3muz6qFT2LQp0030YmtI0G90A1I4K2e2
+e4G5W8WA09HL0IYW2a41L092O0m0K1W1G203WI460X8G@30d820CJW@100txEWW0Z0CZV00e
+@@D000y7W_@nHrD00c1GKsOu@V0OlR6000mIK00OQRC0002IF00WAtK00@@30kx34KLL8egg
+uXCpm3FeYPcHGLLbWKjA1bP62ApCgoX7KbgKP6p880_7GL3U3Z0xJ0100KUSj000NwK0F_Qh
+20W00JIA1010W4scPYz7c9FX4qP0mG1Gtz6yPE32000cIdXqvOuQjAIHFXWnJuaDF6B8afoP
+0000@Gj6ylWAG000IXJYwWDO@FUcTV300LJttdm0y9SOf1BA@mav6izY7010800000200CzT
+3YPX140811pVIsv94SV2W7M0Q6i2G080xzR000AWbyn0G0000802210000GCgzF10040W200
+01001m00eHV3MYn0000KW02000C00080W0G0mP_6a8l13qRGuDC00W00IH0GG@60000nJ00m
+sy6qfZ1zzRGfk600002G01b0W000W28W0000KG0120Y240108W00G004008000A0060004G0
+rry6aMD3002WYhrWBzD0020Hhy6KTl1fppGb1CicV204020400F@l100KMlqFXWuJ0120GX_
+6000X0W014G000I01800008840108010002G00WagD0408180100114n5c00002G0547BOGe
+sC04000C01Iqj6KNV2000GQydXqzPuxR3w@t0mD50FwM1Q00W@@D0W2WmDz64@l14208sxD1
+00010040G0G00802eZV3YY4ZO8NAO0m2C0u06_@VY@xtu@zH_FVb@@OQcbxP00W4VWnvSVyI
+3wy@HLRKul1tQpmTzCaUh19TV20WZbVjF93j7_KsWghheNwGYgtW8@J8YR900Wayzk1G0G00
+0000uK100040004XY_DOAo4oGF100405VNH9u6KdO2VqTIbu6008KOJkD00804qh1rZR0000
+Gq300dydGQtL4sF31O@GG_6Szz3tfpGPtCqtz3PUx1010000080W0W000000Ow00000400aK
+iJOyS3MDFXUpnW01GGzyCqcV2dhRGY_600H1uJB6G0800000G100G7R64Ek4Z_R0080040GG
+0W001WI00WG009000uM0008048WG10000zpl10G000W200020uSK30W020W80010GnE_6000
+21500001W04W00Tvd0004eICDutV3K0800114ObU30W00GWG0W008mQPC8000G00Gmj_9y9S
+2082000WGCJh1400004G008042000Wf120408GW0480O0100W2G0040008000030008402W8
+000040400010W0020KWG1H050W0040008040414G000A00I020mA0000WW08E008G00800G0
+0102050000000GO40048000G0010W00202020000WG00000100C2acF34000W0000040W000
+0W0X0CG0020060101100210i0000_T00W20M0H018WW400yH_4003000W401G8W00G4280W0
+G000m008090wIQ3AepWKrCW0100L0000009G1004210SHl11VRGm@64UQ2H@@0200mwvnuWU
+30WW0200104000Gl3G0000W021sCs040004G008m000020O8_40G00200940010G0G000WGe
+2000003GW10010080W00004000GG800GW000uAV380W0Sml1000WEYpWqRbudV9An@X2@D00
+0G00006C500JKdmeh9ioi1dsbGK@C0100evN3U0mWPkDeBN3YuF11009008182I4SsY45_@G
+2sFWW800088myv600W08oV30Gab1000W090GF39008146020008Yw@J0104020800040I001
+80000W00GG101000elwJ0404908C00040nFQ000020022024180000G6X08p0miv6aoD300G
+0QdXXW@J00O000030001023000W00anl10pH000001400X0G0q9t6000GG010mY36Cjk1@@R
+00G04G080G1042cW10a00nAO0001000044180A@t000C301000c9800080008Oev9CNk1HmR
+G7BL00W0000W000W00042080G000W000WByH3ksr08G824G00W00182G000600200000Gc00
+0110080002W00402W0Xi@DOYQ3491002Y0000Iqgx9000804088010GW01JOK0WH00100Y82
+0K8oCx9ixO2FkpGT460000012WC0008084YR7R00e00041000ag@7m0100W0008C00000W0W
+8KW0W0OK40GX000010484Wl180e0K0X414G210C0004W440W0800G800A08000841440X00H
+400K0A0W00000410aGXHW00XAG4AcA80O40qAl1bIRmxv60080uZT9W0000820H0S0W8000S
+008YG01_et0mOA40001548GHW024010X8m1116O02G6880010000Y080WH0K080012G408W0
+0104KG14G00AX8040000880W4X00G400Y810a00K0202000020004e00000W000A00G2laM1
+0a2A0G2aHxm0004WBDD00I12401mmrJ0KW0mNp6u5000W000000AH000000eQysWOqD0XG1m
+WuC80800W082eI000128W2A0e40000e40Y000041AH0aI0G4f05021G0Aee@400H0W900O1U
+90200CtX1VmdGmd684000846W0000G108T@p00W500801008e000WTkU202008010yk@3004
+Ggyt041012G00g@tW@TC0000628000020W03200I010KW5008GAc6y3i15_d0M00000G0202
+0sUtWP@P82K30G0080W8010488000G00WfTO0Ws3001202G80040000012120002121000a8
+I00GW000001W0W0000G0100400K000e0e0405000WW2G0W0Xm0800G00W3X20A2W80A42O00
+02814W7250G00Wa000201088082G400000aZZ13nRmxtR0W00040000420Y0W2A0H0408204
+0000001p0000001WGW08200W04100080404I002KhxRm_F60001euK300W00A82200W412W0
+Y4G088000100W2850408008I01000G4400B200003PKzAc_t020R1080mr20500000308mk@
+6W81000080g10Wh@J0000vx@6008clqR32RE10800004G0300KUY1Vzd008J000006100W80
+228000i008W0C4m20Y00mG000820012010h804C0s20008W00Wl800WoN0aX@500@FBW9QR0
+C00000m@y700YKO30kQ0YKLLy@X7OcPEGLL5jPc9Q7200Wye74TcP8w3Fm3ggYggA3pCJqUu
+Xebv@Gxm304p800008JL0m7dpO0010200udE005fmVV1Wh60WtK000820kf02600y100800E
+G000i@18I72008C00GK1Kbnj19PRm@@6800861G0W3G000W100mS0000000H700YC0C00Wdu
+J0W10002mC06040D0g0A0G0K000000ba05WrjD0W145G3WAW2GK05001200Cnj128A0kCn00
+0800GM1a0n503YBGM0L0k0AHP1KY86e4HS19Yu2u2n5a5WFWB0duU0FHpf0WVx30QH2A4000
+000yp30WvctTr3000m@@dW70SJ20000uZL50000WFUO8U300C80000000k910OL1yV04uZ70
+u@10mD10000mrv6u@0I0000WFY0G96100001fgAV8pCUm30yW74iAL9uV0GGLfYW7wW@@30p
+CJA09CyV220W0gdj8mR2GDcXn3WdCbk19apmCQOC_F3r@pGaQIKil1040000W0000WHj00mn
+_9000WOyS6_4GYeFCeuP6040080a0COQ3Axba@zJ8P1L00425WFCt@RmWvC08G002000004W
+lmJuUS38002KAGBLN@mHQ90uG18IX7scFXp3guNm70440004e82590A00iaE3000G9000ycU
+2ZsRGHyR4jl10000Ist0G300@@R04G0WWzIeiT30020000H8TU3UVN20W0080XW00G0qXl10
+0W0W000KJd1nVp000028410FjN120GW3NCOBy700400G00ejS300G0000jRH_4sXtWWtDuYU
+3008GKJj100000G8WiIj102108W088W822000W00081080e90040000W02G000Olu6agL200
+0000G2iK730000000ayBM2jF_mp59y_c100G008000Gk1eiU30G01yTE38100000102W0uLV
+380W0W200e2@44000040100440a0a4011CfiRW00G00W20dvRGLu64TO2000WJGKYnyDOtV9
+000WSiV2000Y000WHN00ea@4oKK200O0z@d00X000200bNP018W02W009_R00GGWyuD03000
+204WaIbebX480000GG0W402mHRCSV960014W0280400000rb800008000400000GqBH2R@NH
+iuI002000040G08WHrPObV9_It01G0000240G0G80220200Hp_aG080m000WuMY220G2dwRG
+jR6yk2600104020yye1FPa00042W020o4000200010GeK4CICo000W0aG00YWbXuzn062000
+G1YLuC00009E00W@EDeTV3IoYXzQJ0008000GWqzC8RV600W0o410O753wgP30080000W02G
+8SfV2XXaGKxR00a0gVV300aQdfB3Tw_mtfFq5Y1@l@mzeOKpB30W408C1008200042020100
+H0H9x9nZzC00a18@U3W4G0W9000C3F0000O40GW00H00WW0iSl15boGDf6W000010841O001
+0200405c9D10DYGW0OYC220WK20Oym4Qpd1G0G0phQ0GYG01HYG0P8W80D404062455m_@9q
+Eh48W800013J814a0G11000CB0320W10ABn0X0G00We863_X0LD0004W0001W8214000G400
+c_l100840100W10040040G00WcKCu_V30008cuc10810000GP8I1000a0eI00A100W2A0O60
+020e0WP000G00gmjIO7P6GA00001aQ@V300OpbOi10GA42ZBX_rCOqV9w4GYYSJ040000400
+00047rcmvC94xW1200100K0W808OLN3YZrW@OD00X0m@@F0W0200005G01mWbD0ee0000YG2
+10K0H006HB40S00P2lHJg9qNR2008090008C0GZ00820000018A000G8082irg1WG6200G00
+400Or494000000a000W04020000Gk4008100GG049Au4_trZ2ZJert4_ebX_Pb002W02000G
+200PNm00G0006G0@LQGyrIqJj14GW00W49008100G5j0012000aRmQGYo6aNC6PQQmas9020
+0eSv4ISBXuVJ8a23oPB18Y0WviP0W000m22mXjP00GCagQDu@@A00r1aQi10bJK400010K0e
+SYD_@@10W40@@B1500020G13mQm@@IWmW90I131X21225aW2A425S2G2OG0u@@Dy820001_N
+00_X70SJ000KM6002Dp000m7U000_@l20Sr000W12Hp0N100kf00_@t00C0WMD00z82NL4W1
+@@p000WO40008W9WaGI09HY1Edj4a5m5WBWJKM0d8Y1AH4J0Y8c0c0009z8z3zmPW0C3W@LD
+epP30000A00040Z1mjb6KIi4zbRGWS6Cbd1PnPGsS680C040G0W1G000010jkQ000000aP60
+0WCKLL2ggg4KcL9e@0GGPcHLEyW7yWApO61@702ggg4yF00uXEeA000pC7fW4nmn0Os20000
+00Sr00mZ8u@008Ck4_@V30yH4tGO00GfWzuCmD000000WV5I8HSFQ2pZ@@b0000AQ00WbnE9
+myAoncXdon8pS3gl1Zovy0W0000WukIqD8qQ9YxrWno3PCV380120080010GmV_O0000fQT9
+_FVZVjP0Wv1GRx6q3b4XzNHY@LKpb1l@ZKlvC00G00000ZU10W9pnO7GIcGF180040O00kNG
+YJoC8DT3MLS300WWRAX10Wwv@1zu@@40040_E86ZvRmJOCaIl4R8kH4@9yXl1duRmD_9W000
+0Ok1GJR6ybl4lkPmZ_600002200Ko@6W0020000102eWXzD0G001000m_@D0044mJxL4ag1d
+yNn9zFKIc4v7Rmc@LKTI2RxR000K00280ntPGLu6Kwl1G00800A00W00uYR3wutWuyPuVE3A
+uF400W4p_p0002Ws_D008000WAod@DepR62NAXfDmOqV36mtWw_O0000010200000xAQmQcm
+0004120142W0Yh@V0yz0G0d@Cuf400e0IzCd4yD8x@4ott0l20092030W0101001qd000G80
+002W000G0000280ehz4kuoW2IdvJd4Qzt000RCFc2pP@6Sal15TgoMgaa3A6Wn20oML540G0
+jsRGY@9iyl1rpp0800WiyJee89wFs3083W0004cDw1000aA700IKe5010000820K00a_l1G0
+00G0011002eRU304G010010820GO3FaEx90W0803002G8000GGrD@900u1_iMLYst0042000
+10skD120023ydmo8a49z6000eAyt0G100a100suF1Wc7035eoDa60H0Y00280000nK0IW01a
+00YWG2852ZrPGHFv4wd100A0_rb10004c7002_vaJnD080K00030W0I00eW0I1818G40030G
+0200KQk1nj5oAtO48d100G0AIa100MnJFeIOw60402Y1000100G001f40000GCWqkl120000
+KG480n18edGU3t300849U@0m06W4bF10041080I20X0002W0040000H101200Y0008e0W020
+00001YW8u0KC_Pw400B8004mp6tWRdJ0000gl10Wfd9100Ga000G0u00Y000108082Y200W0
+078AXK0C00W20G082K7200147_ntWzdDuGwP000OmE000003JE@900GjuYwJ0mCHwm3YsV0C
+Z3FeALfILgAw7yGqgQceFq1H@70c9JPKLL0uV04DpC3w@0egj7kkk50GC10Wu2A5tWX@J0uO
+0GOsd0K04n008Y1aH4383e6G6G1WEW20H1TbS3eZu7G6G7WEW20P01WPKivqy4yFU0wTt0ut
+@7SD00iwjD_820cBq000m7zqwnstLCTjA00AxV7lbl6JehS3IBFXVWP000600W0WHdP0480m
+P79020GG020m@@90100iHy4sArWWxb0iQYmuuIaaA3JcoGdGC0G0W0001miw6SUa1d3a0GG0
+Wa2UuDT3000W0G004024mkEFKTU2W0042sh2V900xZjH1v6qEj1V2@G7r6Kj_39kJodu9C7@
+900ekV3K504000G00gJt040200000_qB11000N_R0001WYtCO@V300005xj1G00GghqWypJO
+G_400eWqKU2RcRGbuC0G000KD3mI@O0GL08L_7o8FXZtD000KGwM60GG0em130a00W800eqU
+300WCcPl1mG08wIcXRnDu0QCIcvXbyDGR00m2nIK@E3JcQmZfI0802000G0W80A01100W80Y
+Ld1002000080K9000000G18a101WE@CeV@4G210SlD30100Qbt000C0LUB100wY2ZhuwT6_Y
+FX1uPG0W0004003W0008600200030A0200000X00000rYpmj_FW100Oq@4w@FXphP8JR9010
+00Wx08lVC08B04_V2TTRm9tCa_l1002K00400GG0eK_4swpWC@ausDUu800yPv9riRGR@90W
+000010ntzCaSbAROr206QzMvW100W0800eZxD000W04001204008100002zOi4xqNnHbm0K1
+1e4qM2PlY5mD8HeGUxcXvT9vyV30000dpq9Lmd0180008G25TRGO@60W008Gz4IVFXkoh8Db
+4gwg500_jV6eY02008W00080044305bI2G0G0G0G000200204400WYYpbej39000GCtKB0yC
+0w4I5200000110G00000GO7E3W30000422224X020YpKCet@D000981000008KWSj000Wn60
+0mJjg0400W00000040280008200W04000000W8500WGE2W0fgI2000A0W102910onL5006nv
+Jg2000eMmD0100ozv604G000H05101WlOC000evczC48b401000G0300000140mWlg0EW1u8
+JO00040G040G0GW00K0012400K044040W20KG2044G2WK1Puyu7ggt02100X1s2000yp0C86
+kJ00000088200GGnz60G000G4501102G0210W0G00040110e5bG04r00000StEL00u04DQBO
+0W0YXZ1a50004eN0G000G029BE30W30aC@6omC0INS6GK20rEh20YyF00mXEegg0m@08w7UG
+q@LbeFy0HVu1gApCym3PuV0Ys@04jC10WyzJezz7000cn00000w0GvdmOG00e7KL0We301H6
+WEWEGCSCmy3m8506_dgYs@D00goKUbp00u6hZYM000Vqmk1zhRm0x60WR000tK0100Wpmner
+U36GUZvmz0872mqqUaMTEXbNHRzOKf_30C0000100000K4000000aqwDu@T3sKBX@mP8ck7g
+@t0K0G0dgd00W000G80G001kY_X3pRvaT6M@r08000tXP000QxepPe8y4smcXRrP8SQ3000O
+a9_3JPUo6tOa1A6ZfR0Oa6Wcd_1400HSK60100OXT3YgtW4sD8FE3gR910H000100w0FXArP
+0211mszCSxL2000u5400CiU2btxnquC002001C000040100408004G00000400G0mzG6Sdl1
+DTP0208A0000a0W200030WW0fVQ3W000yhl1dqR00100H0G0G000010000W04100mqXC00ut
+C_V3W02Gap@3REQGou90O000H000W0008102FoR0000140820020010X04a00024Gi@F8000
+uTn467o04000Z@Om4_908W0ubU3000C4Kl100eG000008G0vrz40Fi000000208mCG6qeF3N
+dRG73C04000008O5E6i4j10Y100C0000A200000440Y35C0228mMt6Szd185000GG0900003
+008O40000G0B7aGq5Ce0W08G_A000WFz73Rul10W2WQgO004002A0WXxD0011W00KY@thOPU
+30W0GSml1Y000O4O0qM@67tN10WlxZmp1004mFp6qzF3h@d00GG00Y000280010001W0uuU3
+000G0008GG4408G0WE_D00011400200418GGO8GY04nV2DapWXi4WJv39NU60004G00W0100
+004GWrbU0004W04002000o80000000188100m0a800000m0G08010W010G1m080001000827
+_@0Y030W0WGvrR00G1WurVWw00Gxta0000X0000000G0GW0drP0400000083lPGUz60XG002
+0000W0200G000180H000O00004m200000GW100G4clp080000HW0400018A01000020200GC
+00080W0G0LVL500o_pf@XL_Juj6Ckxt02000Ndo0400008W000100001000H00C00801G800
+8AW80CY4WWcW80W8I00WW08GuKaP820414082e19014I000W0a4G40242p4Y208240Gmf@9a
+DE3WDE0weNYiEPego7020200002200010O0XW00O2004200000KegV3400W0100H900000O0
+CWYC202O0820840G051801006543fG2W00HC300WPOzU30C0200K4100910224H5H9O5400W
+0GynO2h@R0000Qp300D_om_zRa2l100150002W160G1000100W@@D0300004W1Ce21O00184
+0000G0000800G8008WG0G008H2290HW401401C480498428GW0G0DXl1ZcQ000G0IX20C100
+M9t008000008@sF1009o@@R02W2Wo0CeIU68500COS2jKQ000GA0820o00080400080WK440
+I000Y850bdR0W000G006g000APt02020G03002X00ACI00X024G0180H8GGAC0HH6Y0oX240
+0Gvg600100KW0YeI0mtoIuMU30040y7d1WAB0wjt0000H3hQma_900YGuzU6w2n00W00@mb0
+00040WbW0000020GjMl1000W00407nd10900021WGW0W0W8113860000G0M00402SW0800G0
+00Y0KmvpD08000W00C000G0W82140W4yU2leR02800000OY6000100iGk13vR000084400@@
+RGEQFidl10q100000O000ec93GC000000n0G0Gdv605IW4I00814G0W002410800nG88412H
+G002Y01YW08400W8K0000400Y00GE@6W2040GWeX002008400040G400aKG2@@R00WzU0020
+rphoLv90000jo43sisW4pJ009GTxRCG0gBW000A6uU0000WS0016nr0m60000mM0P0004GHO
+33300WKB2000eE0W00010m00bcR00W4Wc1C00S32000085209wR010e00000G0a20000X504
+8NS3wet0aD01008N00040002000G41000000zkW0GW6A0G8000030GU0601K0OIt40mF@320
+dn@0_FG1KPA1u@ouh@zpV0w7004WLL90@700UuV0400000GuV2_npF0WE_1G@30000000u30
+000_HL00GBz9uL00elVL0uXVK_l1kf00yH40CVz3Y0WRK000000CK00080CZ95W006G50006
+000H100sP004T0cHO0K1W0G500OC00WX000YB000406Sg0H0G0w000KPaO30002800861Y0m
+K@900O43000000WH00000890C00000808FU30Wu7qIo34P008C1G0q1m001W10003000W000
+mT00Wx0T0K0P1W1m000W1000KO1eKL100000X760Gy2@@7W_lA0zVf0Apa0q@@Kg@@100_o3
+W7mPC9Wl_@l1000L80008ZPd7W@F10@5Wn@h0WC1mMus4fG5bnPG9uL4SMB5Jamdg6G100OP
+y4U6FaNkJO5R9Y9_100K02000gHoWbpPOR@70801yji4RFRGmE6W00000WnvFpFya_3hfBHO
+wI00100W08G@@F0042eAk7koiY_rh86O600000g30enz4sMoWY62fL0FUncXxfb0W40mGkOS
+oF3GG00oDr00W00000Or200yrlAnURGUeFi1k1jbN100W00G00B0KmOz6Kvk1Fra000WWi9C
+0010W00G10G0091O002202W02hKR0000GV100028004HGaX@30002snlYgPD8ZU32IWXAzD0
+Y00W20W0001060GT80420G2000I05a0200000002822r00G00A40001G00WW2400108800HG
+1008W8IetWEwD021GG_@900ePwfV302008800857601G000G10200GP@C0K000A000H00W4z
+J00804a00000C0000G14G0G88000000G20001K00Q0G0W00O0G0eh232wt02000200X02000
+G000K010040080W0G2W00m00W1048lV3000AqSl1xUR0mI000000004PETtWM_DOdO38800i
+vl1t6d0000200G4RfQGEw90005y0U300402G024850040000K00O400000100001W4Im3z60
+400enL3Uhr00001800A408000W00008Gaj60040000G000IWqxCuuS3eD0108G00000uG_I0
+010QD@700G0CaZ1000008W0CoV200G2lPo0H000004GU@t04000nqRGz_L004X8WF3030000
+2GOPX40000W0W01X000000ns6D000nd800W63CuO@DApt0820GvP_000012402joB1400081
+08zHOGc7F000XCWV300040J4208010008100200200400201G018000001000WGDsdWnWdWp
+qJG2K2GznU001WvrU600014Hl1jCp0040000040410W0WW00W000480G010022WGW40ZvtWS
+yD000101000008A00XW08400GHW0a02GsW901000980mRt9O905GWO0GL76ibEFrlyGJ@60Y
+WW000W000Y0W00GXzRGK_6000G00W8008048W0000800G0801000Y000W008I014W000G000
+0094m0C4W000000cT00eG84G0I210OmKCkgtWT@D8wR9_iX1Y000xnR0030001440X8W94e0
+G40aW8403W8Am8@D08G008600000eGG04006805Wm2Y0Gg2W13m484880M004W8OGG2GOe2W
+010HLI12H0100000g6810CY8010850008a806CT3000108G00080KOU20402G0100G000100
+0280WxPD00412G4900H428090QEt0n020020000805xf100K0004080086Y2eC04YGCG0981
+18CW8AGeH00G0e0GY000G0W8100W0J00004000GA000Cn7X80H4K81700002f4g7End1W000
+06A000L0y@l1TsR000800G028G00k@d1202020W00WG0818C50294000004WG20000080G80
+GGi02014Y20090llQ002G80000I041009008G0WGG000280085085001W02040W400000Wl0
+210O4800G0G0yul4t5R00a2Yy@D04008000grlDu@V38010830001200800048W01kO0000B
+8W00W10Y040006O0G2Q214W10420440AC0W00G60G0604YG800W420tZO000WG20204002O2
+0m0000008G44080X83001400G8400000OmZ10Y01G05WW0008Z80alT5G000MFqW11V04002
+000G000W010H1000M6g10O00000OG0000A00Y4W0000Gm8Y8W00CW0WCW0a01200em7VCG4G
+80804081O000400W9O0G00004400S00W0K043200H000Y008tT3000WZ81GW0000a8AmsVne
+X53YntW9@P0W200040Y_3J000440W100W0800O0000C00A0004aKs_6GK800010000e02400
+ZVOm@@6eI000YW01100201202K000a092002402000W0GG9440Y140408X00000mHEW002e0
+020280cDUZVmJu6V900014Z33080o40001fN00000206000GV00A0mv2z7W0GGtB08GiR6Ww
+30000w0o6000WaB0000W0210000G1A000OWU7008Gr508000880000450W000E0000f1w900
+00qH08vvAgOr0KB000041020000a0vp13000W00020GWGa3800GW004W00W000G0YE000004
+00Gh600o000W82V821ko000000SJ00uVy300820V0i_xFTT3000m0m17000u6u200DN00050
+00W008200K700eT@1040mF_vhT100Vv70@60002O_3GgK5W_@d@3Rt300Wx00m000004Cd1V
+@RG4W6000k200yHJS90004b00Oi2mmO5i60CG50006000n100cV00ST0OOZ0vib0H100oA00
+4k0C0O0g001m000W100GM00WzC00HD062AWi0G0g000G1008800003100_n008I1K100o2W@
+@Vu6k70O000O2m000a408000002000W100WO000n0G0Y1W003010fobmZX6000_1000W@h2G
+x200n@RWBl000O0000G00006W100000_F0UeV@9pCEu@@0GH50mV10W@V00LL50060kx10e0
+00ul@000000eyfK0c9J0CpaK500u@@0ed@D2RmWJQdfDwMoXl20182jMpm8uR02008Gy7kVF
+10080jxR0800Wu@DuzB3o_@XZ9D8Wy7G000K8V2002040080m00umV3oGt000J_2W00prs00
+0W4bwpmzy6i5I2nuR000800080G008YIt0440000G4@Bj200G01TJo5xI0010PXT3_Qo0000
+0W45KC000SZc10800s5FXcnJOjz7MSd100m0dkdmsd9Chl13jN1000XtsbucO60000Exk400
+0GH900yWJ2vtpGX@9Kwl10080YYt000080W006NsWurD0H0GHYyFquk10U804000W0G40010
+000C004002W000GW0qEV20400wst0G00005G0geF1G0004D00400Y_@l100yhIgFX8yD0200
+mSO64n73Lid0004W6eC0000880W00W4WfoR001011004NnR028W90I00RlR0I102000500W0
+41410G8004040000Y5yJ8hM30G000001OwT300GWG000eGA300010e0W00000WkE400022X0
+GgvNY@rJemt4W000100220800W20WywD00068000vv8CuZn40W0W010G00me202040008400
+400002900000G0048YtxJOZX480W008W144000W00002O000G004014ad10080000GQ50010
+20ml@F0G000020o0_CyBh1LyR0G00Ga0000020G00W02W100K010WGWd_D010G20G80O004@
+@R00m00Y000G1008090G0K02201GM46yGF3vXB10010o002000Q8002000000WiE11000810
+lmbmw@60008u@@4YtFX2mC0508mN_90240Am030001y_V2000A2xt000WG48W0YoGYozV0W0
+0001G000023ypGjz6004W000008g6W0EjvzVCIWo000000440W24000000A00oEQOinl1dxR
+08G0Wd@VuJV30003jpj100440208C5gAb@pGpuL0404eGV301G00041el@7gkd1W41000100
+6W04iL50000000_1200wxU300G44He1LihosyIyll1W00G0040SZW1W0012J@XU0JuSEFIaE
+1mx80bbOm_i9yOl75tBHIs9S6V2PtR0Gb10H18G06GY812ISg@34A00002Wy_l1004C00002
+0X10G80SwdIW8000000BlWWG8Y000004010G800200W41060mKxF100G0008uK@JesO30A00
+80G08x13CY4580820001GV@CaZc1LzR0001000200f4000G0ik_3820HEtt000hSRfR0010W
+9pDuwXJUstWHpDu@V6040GLWV2G0o48WG20040OgD300820o0K0a425104o_@J002a000000
+05K9gB1100W9zD0u534IG00W40042089400GA08uDfG0100qpi1000fG06m0008WK0090000
+28500000G80000Y000G1202H00002Wn10O800azk140402zn000G2dodm1z98C0Ww_@400X0
+Cwl18400000GR680WX410c0060006000GUfBXVAzOiV300808m0X0002Y42100008D_R0Z84
+000WOm44G09820200000I0A82G806aHOQme@60G90W044mt@6070000WI02e0040W8@@p004
+0X5@D00mq40XW02WW4402G004W0m48uM@Dktb144100000804400003010001HWYuD00Y0mV
+w6We0I0000082YW0@DW080G2kC002G8Ou70000EdS2vYOGI190cE001020GW800A0008H400
+0XCLV27YV20202W102jzd00WC0006eO000gFr0KN2080070P1004GP8yU300GaH2020Gp0Gm
+n6K@l100M0000WtRn30800knt0l2R10000b302CSl10f40K0HfaOd70000Y5t08G@1804mW2
+02W0G0G0080gF0W1cD000k910eRO0000G000O00qfg1F_N1eZ20g000008000W@RU00w@V6O
+5000W@@1Ws300WXz_R4Ajz700n400H502YP0C0O0O000q1008A00WO20W83W093020GWE000
+40004tfl1400YL040e0C000O000O2WbiV080001000WwF00WG000f3W801GK0S04000w0008
+700oYtZOnJ8CS3W1u74IW1PZdW0000kOWg0uF000W@360VF1V60mExCH@3nPOWgA00u0009r
+B1000ARL9W_N50W16Lvb@gYg0Klw10WP5M2W00I0SgSeF600yAE_dXy9guVV60420Cjj1Zid
+Gp_6KMU500W002080040et96QvEXopDeJN3IQyXDqJu_D307B00000Gm00m0K6KrD3@FA140
+000018FLdW0G0Wn_DeOT30001KR_3FqOGLuIC2aA00020000YO00eQoAMwpZwpV8gE30G00S
+gx30020M8tW__aeEU3Q@rWCUV86U6W00000epxXA3YbBXopJuST90010002W0W00000a0004
+00012sIBXTyP0H40yX@600220000402O8W00G00W92atWTZI00G40009Wi@D0G0010000W0G
+0boRG3y6000Z84U30Gw0K8N2fnRmYS94Yx3@kBHTg6yTa1W00WQ7q0201G0GWG54510K0000
+01W80WHO00I800802WG0000a0O0000800804000W0142000000W0n5D60H0000G00e011000
+0080Y000W6cl1000eG000802Y0000mIv60800eqK30G001018eqk40008000W2002208G0W0
+40W01WQn810150GG000G0010W0222100040G424200800020300203D2141WqsC000W0I000
+0800204000003f00I000080210120W00Y00G000W2iFU36td100FJ00020XG0qm03VuR0100
+01W00PqP0080008000021wEtWjKD8@V30100G204G0G00Y04002816K0G8a0eG210vkK30W0
+0100G241040WGdomDOog4wML200GGpXO00WW08000W12CwHp0m6E0Lud0G0008080W080klt
+WpMbeCR3W00000G4uzV30W04008GQqoDost0000H02GHodt0W00W@cRm1_FynF300106rB10
+00mo100Qs@aK@D00G40008WX@Du6S3Any10X00@@RGZWC042WerV382800Y00W014mQjFazP
+5V_R006CuJbCuODLczt000Y00021W0024nl4081010G81000004C040002OW04G400I2000G
+01800ORu60001AOS6gUvXR@V0CT1GifXC9E3JzRmg66Krl1rbOGV@64Wl10Y0GWX0OqRe1u0
+000a00000000c004000G0W1ZUNHWyLSol1000eaE004@tC0G01_fm00000G011Ybd1JX0200
+GWX8K005YG2I0e0100430000405C8140000IDwG08000X8009zdmW@60WW8uF@7I5n010000
+0uUhCDa8EDeDy40n000020m004W2WA00102A004WG00Cql1neR008HO14W02W01WWW2W0G02
+1A041650r058WAgOWa0000G0XG008G82YEoP0128mozC4ql10G00Ywt00RA01xnmkUUiaH22
+8G04140008Ae_w4wFD10840CZK20002H40G01000WW210018W20H00G000e000H0mZyFiol1
+jB@GAR6axj1000uLX080000004A0004002W0z@BHEu9CCh1XXRGYRCWm44OwV38500G00006
+F001400GX100mmGBMt00800E10002K000000O0000GWW9jVO_V32q@XiwJ00G5BG000n2000
+0100104iW36vWRGh9CqwY1hdR00094X00K1hO008I8040000k06FrW0lD004GWGW00Y8000W
+G0E5rWuUOOb09IJy1moE0@vRW100mi0gO6S3MitW7_DW10000W0400083iQGRmF040804eG2
+1W2480W2G1400300yVl1IX00outW8BV8sV3M1qWaVb0G0000006N000NxoG48R4EY1rcO00I
+000W00W00008A0Sw9300W0GV10020V1000WX420000aG000GA0m20001fX0mQl600Y0ufN60
+020auM2h_pGrW9008N5HdGmDU60008002WGM0CS6S2080W02P2W000QNK340000I0WeNk4Y5
+d1W8Wg0y@V0OcCfA00m@@zZ8A00008W_N40L8002n00Wv240000000O1Y0003zd10Km3ZJNX
+Cl1000000MU0UHr60Sr0@@R0003ipsVWX100xCmCC6GK080k000O0000400Gi20WG1W1e48A
+04060qtE300W000034vD300000o000W0WuHU3000GGU0008300920200WCXlbmDcFa3U200O
+201W001020H00G_060G00WW1W0nFGbOnJ0W0_fF0KLAz700uXX10000WD0000e000800Oe20
+Oo9q500eA00CrxM00mIrBBCU410000Y3O0@G400GGA60WR0eLX4cCZX4nXvPS9040200000y
+72mIhX0002I020mNQdKrl1bbdG7p60W00ueV3UVsWGpPes@40000TDk1Vcz0000031O00000
+0021iXk1NfRGt@FW0008pkAMGt000G802G0Y5sWZWDuYTFk4030010bgN10WTX2tPupT6keF
+100025C9nbhCaMd4z7RGDS9q4l1TmRGj76qbM5ziBnymCS7W1xgdG0WLqLC3Ry@08W0WWcJ0
+820000H00X00Y0800100G000KK080WY00W050xDQ0000041W28000gdB10428ZNoGED6G800
+000080140000G0300kxtWkYDOsS6EhtWPwDOlV3008A00080000C4W000000c02WUqt0G0G0
+2044oht00W001qPW22G010W08004gNr020100W00000WW0C8ur13Y7t00010004A05004gj1
+0000000JSdi10021001000u9QcV6scH2000WV_pGaz60O000200W0G020402W04W40000GG0
+0000a020200b0400G80010WW311H000280G000a0W800G1kXl1W1Y00q00O010W080mX_600
+0G14X0SE_6yal1Fxcm4p604J1OUT60W00Cwl1prdGmoIG0002C8G000002m400Y1G2Os08Y0
+800G0G0G20K0000200G00008000G008000WB0008005002apyD000GmEM600808kM3IUx100
+0G40O0m400000W10GW0000I22009QpmzjOSSl100e10200CFl10G0008W4aLl104800008Sh
+T2000G0009G0W02H0002H440G000W5GASoWFgt0010100WaVfV020000WNZOHsekh7kP@100
+42XkR0000adDPOwU36NsWZ@D81V3gwEXD@VW0000000804W01dWX0k4W7pdvzV3Y0_XPvJW0
+0G00001001WtFRW800ay@D0282G3J6SHj4I40050W0W4004G02G9cF000WYt00Gswj00Z020
+00W8W806101LbMnBo9010000804G000I0W000W010GWG001G6C0GtfFW0Y000100121aAxJ0
+0O0mAy64@l100WvwWVcLtD0W11m1vL00Y000010H8GHW0WY2W480GK300K4G0830b201020H
+81082Ob100mm4100GWG4HWA820W24G02aiuDG0W0m5_90KH0ui_GwNbXqvD04828G8023C10
+@fyGlV602020100eW0W2G000G45c808X0004Y0C00251004G455@00080000IY80W142OW10
+0G4000W08m6PP0000fR00WqC8fv@40G4G0000W00We800gLGJ0800msx9GW000002mmz600e
+W2040m4A9yek1W200G800a_V20G900082G000u8v400K40021ucx400u0j9c1Xlbm17F0W48
+AHE3kib10G80zFdmISFKOl1H2O0041000m0K201YXzXQ_V01000Z014C3G6K0A0UxtWtaO00
+0000w6WX@bOQy4AysWuyD08000H00Wl_P80HCAXq020000G1GO000Snl100820010100W8cV
+36OCXNvP0Y00002Gf_qP00G00000UjG040000W201K2K2@NbGy_CS0m0zxZnJxI04G14C0W0
+00000108000090WmG000W8800010Y3Yhu7R3W20G62Y10002coC10G0000EEUprWHuzu@@70
+401raC6tzR0840WSxD00m2X00WLX0009@o0G00010K8bw@W00000u080000g1m0040000400
+G0G14000WP2oMV64cd100I0000W20Y4ePM3IaB100108I02cwd1q000O30GcTM2008WsjD00
+000Gax000@fg@1e600OcY0m7X000GaF08r136@d10S0000W0yH40ug10qg00e@y30c920H@p
+0000KX300Fht20_@F00mVQVJ01000wV00u@V3y@10COS20001500020L8M180W0u200a500W
+G000W1000306020C0WWSTD8CS3w2m008WA000L000Y2000K00GSVu6azM200Em@Sr0400nx1
+Om@@600H60000080PWjrPe3030O000W0m8bE32ft040002010MPF10_lU00mCkgt0dME000G
+00m000000a00Sb20ugSsOup_4MFq000W_h8QG_19yzl1WMF0wgl5000Um300ypTl7fG2082y
+YUxapkJ87kGc_tWmxD0000cC1GW2kCOBI3I@N20002prRmfs94sR2RydGkuC47b1Xt_mw@6q
+rf1XAdmb@C00428VE3c7dXN8C00GB8200WcnD8TJ3o9tW4vO0200HW@6W0108iv4s8FXGqJO
+oN3EyFXJqhOAT6wy_XCsaO1q40rq04lU24000kjtWFpV01G0mAxFy9b40000W002iZl1Bi@m
+ju9yAk1@tRGj@Iigk1Lg@GIx6u940e2z4cM@X4tDeDz40O08acU2Pm@GYNC0201W0HW020G2
+00050WW0001G0Y800W000W0W00C008WA0s_t0014008410201G800G1041W100K00G0G00Zf
+d1110G000000mtUFh1004KYOtWbLJ0000KLq9SEc102000W0400800004W0K00O0G4200800
+8A0002000e1100400WAVNa00ee0G00G01X200508W0A0024W20W0GL004000HW04W40AWG0W
+Gpu6e200W0820AWYGOG04eH21gMp0W000A0W0G11H02000yI3Gex6aaF3b1QGR_68440Ond4
+440000W2400440W2400K002040000180W80M30S14180G20G08040H1000K40W81WIW16406
+0A000400GI0401SCW0J00W2G01410A9208080140X0841W1001WY4O4c4102eW90000000G0
+W000800G100820000OP51W0000010GaW0002000NzR0G00040010182000IG000000G00020
+02Y4000201000021GCOG08a02Oe0000G8008180800420X2Y0GZ888f@R0600eyFD000040m
+G0A0G0F1Rmfx900G00018mU760W0m1000040080eG00000cNp00W00405a00G0000dvtx7Yj
+iYObOW802GZ790000CZ03000300G0wx@4C000000WG0040020G0G00020000600011uVE600
+002020Ob@40010G0GG8C@7Mgt0GmA0xZpm0FIS@@3m00G000O4ej1G000Y9n0W0G0BtR0008
+800000W0WMss0300W1Ud08200W00HVFQ080000H0GGW0G4008008000082W4mWXuCOyT3Egt
+Wk@D00045h00WMp91004KEr6000C00G00WG000208@@d0002YF6P01000M00Wh_D00004W08
+1G4015z@0012bRzOOzx7E1d100Mkh@@mogO4sk1ZjR00001800WLud0800WLyJ000040H080
+000DYOGI@6SgC3G0020W00LDV20400W00eClU200X8cRBXezJ0Oe2GkuaKHl1e0000104CUl
+1I00000400280OtT600G000I042YmW0010021282H0WGG0iwl1WG00mA02104060200G4200
+82K6040000nW8KG08G50W2G001012I40kqt000408280Qyt00004i00WcmtW1vD0010qQuOO
+O0W114GC041000y000X28X020A84frV30020bkb12210400001G0G18004080008000Y8W10
+5IY0KwLV30G104Ob1080eG0EZy@l120240028qig141W0_VtWTkC000000WKh@hb8DZA00X0
+G010100G006W020W8800GW0400000140040110010W2004IyrWWhDW0W09004020505uOmgV
+6yah1xUR01200m2108I00000800fW2800mosFSxk100000qz0C0E340A0At73I1e00020GWK
+0CIf1bwc00000G11008108502Sil10020G40W800004002008100200100oud10a00000G41
+020000080G80C4gHtCO416000Wq6W1000uX000WG0W84R300KWiu86000G802A00Y0480000
+WW800200Ga00080akl1040000HW4qV25nRGYx602080d0mGSu6Kwi12WG6000000700O00GQ
+@60080WWK002O0We_D8oV30GG0030002000000740100020M_nWLvDO8bA0W0G160308G200
+0CG70m000008000l7Q2000701000Y008Ip4AFFXiTIuwV3wdFXe_DuBR30088G0004002Jiv
+Cy_X100000qO0SNo30000I9DX_baG2G0mS@6anj10800o_mWpyD0G00qTv6axj100010P100
+04H0HYGGN@9000W44800G1W8JGW00m10000W0800W0mMW000rqzIuOV3mq10000K0000CTH1
+Wa7C00W0W00G0GM0000K46NM2000@kW0G03B0yml10W81W00GG0o4euJ60I0080WG1000000
+yJZ0000u9Yozd10K0000G4y@L0u@F0000000_705q7WMD0uztV0iNF3FyR0041WN0C0W_300
+0hi@@D000yQM0FKp@30uF0z@V0wH4UmZ8yl@0uVV1u@k70000WRkwV2Y200000000e18eR3W
+0H4G50602000C000W2000T000O0OS_c1B8cW10GK201nA030C0600Wi000W20004000G0GGa
+10103a8U20ET0YXp00GS1G0W127tWnUg0000k30GE6WXi4030YXB108Z000820100010COEK
+30_V0SSd1U4X3zF00000@t70K0L100000WU00000Y8izF3f0O04Hu00100_f60TO40Kll400
+0uMcpWzrF10G7Lp060000KzW0mb@60Sn08Zz7YsMY46h0009m6ZO4fF3004HpXtcCiV80S9Y
+5ZX2@DOn@4wyFXqwJeC@72q@1mmB0I00024u10002lCdGX8CqPs3W0004000000HOO83W000
+20208tN6__dXM0g8aRCI_d1000OG601AZcXqMJ8foAoz_XgtDOnyAwAuXBGhenTCA4@1009c
+boZnj@94sk1nxpG3z6Sbl1000G2po00G00HzQGKsCK_l1Py8100GmStJuxV3Q2tWoCJevV30
+82000000at2mDz684008gvG0110ysI2Nt@mm06ieU2W0G001G00010e@A3010002O0eSU30H
+1000000W0080X22G00W020W000G00W10W4042WA00100W002004GSdc1@@RWN100G8001zdm
+c16Ksl1fzRG@i640c1080001m000G0101000e20W44048G0kXt0W000020801G0LAO20400W
+000Eqb1004G0A00axl1LvR010600240RyR08020010G21WG010G0000wxS3cwF100K20G0W4
+000Kml1vQbGj_6W000OpT30000800100G802004W600rMP0W00mlfC00008801YuUDusR3_u
+sWU@J8_V3MzDXC_D00W02001WSNDebU30800Lra1L9P04000GW0000000T40a_l11rQGLOLa
+Ml4002100012008C@M3AkFXKkP8r4UI4We82GC412VOt0G0E0xCyVqEvKnX1v4R000WdaBcS
+tV3ksF10m90JSO9085WVCD0000Aj10WkGiS0D30W0000OrlXWzYR4Zt@V00k3mwAubAl17@J
+2710WQOgxKv4I_l2G1005gd000Ytd1_v_c@h@v@vZ_F_f@Vlw@sl_Vzi@BhS6008040106Pr
+00000eKA0cwK504030000006AbDdM000u10000u1U0F00m@i6000mmO00mpGR0O40620Z0W1
+0Wk@DmC0_00000WA300PmyJnpoa2C0000B900aa2S20090000fMlJ0G01Gew64YQ2G04W000
+2abh1zgRW0G0WY@D0200uv@6a6V2028000SD1000002140W00800GZ@R0WG2WlqD00001408
+WrJJ00004e00WcyD00I00002ue0Iuoz400G045f1tfR00280040000X400208000W010W008
+0041051a0220WO9DeD06400H00020014GO@60CrH00040022000G0G800w2m010W40000400
+2bhl10800412480208jz400W00002yPx4oit00WH0HgAHI16G040uxT34001006083U30001
+000GA@I3IAW10002D7m0000UtB0097O0020010024000A_tWuzJ8x030020aRh40204_GbXp
+sJ020GmJ@FG004Onw4Iez100008G00_@t02008t@R0801WtED0000000iXRnIW040mu@90H0
+000800C0042001000000W2Cfj10900Irt00020G200QhE14008bcQmr_60020W00G0O00YpI
+DW004Go@604021H20008200000004801110G00Af030022080aG00G0020200W0n2a00000G
+zV002100002010208e00008WXGD00Y04W0b008040G1GIap0200W000G030008000100010G
+1000WPuR02YP00200G0WW080WsCR2808000202122e4L301441G2807000180A2K0000G004
+2G02Ga0X3008e0AHG44W2W1G500e604002010480800GAWW0GG11000Wnm0008000G0G0Y86
+4W0210003uiQ30G0100224002803W10K102W0G0I4010W0001L428c804W002O0mK108OW2L
+1G0040C0SC1Cg0410C2G1040200m00001I0A00041KW000010G0Y04GG04142G2Ha140GZG1
+000000311L080SG200WCaKa030260X431GO820002080801C000802480480000fyG0aW000
+01W00X4am210008H00D5O0G8102840068W8I14040003001I040W0A0aG2042400W00mC0G0
+A0W400420b0H020888OOHK102H01WplJ000GHau9qNk1HYRGIk600000001e00Gew@D0G0G0
+10020010G808Est00Y00001100000U70eeT3GW0eCzk13sO014W000S00G000m00000A0020
+0110mXsD0A10e10W0208008Y0004KH22000He029Y0100004G0lNrWrtD00G000002G2040C
+0m860W1800006G100101000W0G00W006zk1020400120025vzV3Upm00040JhR0000KgE00v
+g@000W00200G84002G0100GORy4a4002008A3230006G0X0H000e00J0000000188G4GyNV2
+8Y00QlF108W02G0GA_t04010JoR0W00082000W0W00G4000oOIM6I_F12008jPQ00YZOG000
+GZ00_@F10O00000080009G0001400010000042020008000054000W8m02000W80080H0002
+00008200804050a000014a40000SLb400002004k4N3W000W00W04004000eIvD000300004
+00J04400EktWx2Cev03c_d10lB400014801aol140000010G00G22000HO0WizJ0048W004W
+kuP08000200000400G80000G040000021001WatP048Wup_6W08G02900aG0Wg@J0004Hd26
+4nl1G020001020G0208I004C000GGH@R0K0000004S200000000m00000060G080000G0040
+00dAk10Y3CYPqWFUJ00WG2000G2W900H0000800Y10W04W080002004BiO0H0004900000C0
+80W060108G030YWK1W3N406eG1W0WG010W0W0000G0820400WW20K80W420110G8014G5WW0
+4WW84W8GH00041X010YbdD000reI0100I80m20440040X1201340000810W26GA0GYW010I0
+00002802G0Wbo02P80000020020111YG088N4H40WX401AgY80m0KK00010m0OHb8R0G0000
+0m800W2W062AW0e1010A2084C4G8G1WW400110026004C0W24a01X0A80G060GW8O000Y440
+000G008W00Ikt00403hdR00F72100JG2010W00axZ100W0Cm04Y6WW20iW800GB80a401020
+G0I00000010a80I5Z204e8W8Gq4200426GG83a104205KG1Oi0Oe8aVi1XPd0000g1cDWK1W
+0GW40085000o00W0G14000008Lkd60A000aW4014000WG00G000000200W2080010G02G000
+020000Gg1184WG2000GA001W0W0f00PG2002001010020495G000082KGTzl14080G00W0A8
+a100G0f400420W2GAW400G000a2000000H0IH00Nqdmzb600000GG0001041OeX00A00I8G9
+44W2800W40000020OI10syt02W080X10O4G0040820GG400006202004Gk_t000Z3010800a
+00AG00WG82011WQyDG00250W20WG000000000KaJk180020W000G0100022G0004o420f140
+0Q000G00004210140001xrp00WG01G00VSR0G0W2104301WW0X015Dl1A00K02380020000G
+106GW_vD00W3Gr0600000020XW001W0000UG200802HGeGG00GUG60000080e2004241Pm00
+01G0G0008001004800500008400W00409000S3u0WWG0G05c200a12000G10002000020Y30
+0Rgd00208040H0GG04002002X4028G1@604004106WG808WGf080G8000h0400uzV34000aU
+l1djR0W080000qm0WWK010HWG0OHy4000200WY0254140a0080G8100wfD11000002W0000H
+Z00040H28H100008g40000000100vIV300A0S2l1lmR0K080G52zA1000vA0qll140o6010G
+23w110W0cH00040002001Gq10000S0P2G000IaK0O00O0000VFaT0100gT0W00G0020020Y2
+0800b38A10104E0G000005000W50040G01400W0816000100W0008iDn000XUGV0004Gqf59
+3000Kh00000S0000000GiR0000ukxz1000W_w30KA000O20OZjc500kdRR2k1mD900n9k@10
+0kxkL00000WA00mlcOt0N1005@p0GI1000000ul@0000u@@0mL30GW06GpS0000zF00002WY
+xk500000m000G0S0Y840uFt100kxk@1uiZ0m@9000K500NC047O82U0000000L1SX@4080G0
+W2G000W100WO00WX200IDWP4AWe0m0K100W0000200Gu200n5G5H7060C0C000O00045008o
+000O2W083W006020006llRWg100YC008@080O0O0W3m000W100WS000W200mT060f0T0G1O0
+00m0000C000W000m502G706040T000h100C4008S100C3K1O6C604030006000P7@t000Ga0
+0004m@G0mdU0W2_100m40054YuH4yY80ulV0yxV304G0aEl1000500W0iRd1000tu70000zr
+700000_N00E1000MY2rt010000ug10m0x2Wh60000A0G0E00000buYewl0S_F307C000KhQr
+B00G0KbY0yGC3utK00e55o1uC2edV00006O20wF0@udGry9SPl1ByQGwOFSxl1NlPGk@9ifl
+1BSO0W000mM50200004G080008lU30002ybl1NOdGj@60240ejV3080Watl1xqbm0m60W000
+040qclC00028ck4eG000008eP0340W40040G048mq@60G208JE6012GCAZ1080400080000o
+M0000100020W08010021CsT220000W009001000WW004000G000806ap002W0zqP00080W40
+000200W008W0G0000mbJ6yoV20100gOBXxwCucD64000imd1VjbmDoFqWc100W9kO8XsuCur
+O6W0W8a8730404k6dXn@J0040GGS9y@@3xkbmtZ60040W00100G041001pzb000AWK_O002A
+0800X@@J01000Wz702000008084008404eJI6MQF1200G00004410igd100804G00SKj1G02
+4gWs00WG08000YYm00801010004W0_jb100041G400018001000Y0000W0ZgR050C400220A
+00800A0210102011e01G040006agXtWf3D0000CK300W800NmO05202W20G0120020047Z10
+210W020000WfNS3EOo00W08010HG00028000032Y00GB42480K5G80K000012G5010WG0000
+G0010tLo00Y10G420100G0W020W0G020C04CO0aG20000G00011W00e20G00KW4WY1201WG0
+00922091A0084G80e00I5GW000m0724G00600140200005210W0000WGGW2020040880WG0K
+101X0801400282004CH80Y20m008W0A000806G00G42N0018880G8W0000W0W02081004608
+08KG000GXW0010012m5kC0008GPO60W00WG0WWY080XC04214002C110HAm01IWX21K4E080
+02W0G4Y0rW0100Y0G088003140000ZM3800001GG00800004W20O402803008040002W010G
+J4O8G1G0080402G000011000G0440W1G2000a10WWW0084KG04080b8202410618110GuJ69
+C0Y10400000a20U01G0000GG04W3000108400SSc1P_Pm@@6001200KW2G0040010001000W
+8W00002004000GI200GH04G00C001003A0nYu609408983cat080G40000900W0H449ZH3e2
+0200600009WWGW4050304820WG00080OxT300G2CKM2V_RmOG9aRX1@5Q0W000024020802k
+B11G0H2000ImmW@ZI00WFb000mY4Cu2o4030GW00CG048GBS60W40OaE30WO0000000O0m8w
+601W0020010040000200W01C0004G0uoD3gUa100020WO0010002G8B6U6G1004ld1006000
+W0201040Y00000G4G00THc0400002002RG0_@t0GWY0@cO04G40840040G0GC0Go0041020S
+Ve6000H00G00G002200a000IW00200000O8G000040030G041G60000004W002410XPwJG00
+0m4S60OO000000X00uDIJ0800X00258300Bmd00W00e000@uOmRy6001000009310aJCJ000
+040002000G004Wtan04000021W42Y0_EF3PyO0000GWG60TIQm@@60G040O0OI4f9yGd1ruc
+W440WYSD00W0GsJ6GWW0020W001G0W102Bwo004GaidI000000WZD0G20RsRGzg60G00uWL3
+420W800020f0mle6W0808lV30048002200GIK2_60008a08W0C1000W08huR004104040020
+41000_bg100011C909000yq638000W0100X3W001040GLW0K8Iwst0048220H40058Ag8008
+G000080100100000Eb8W00GW0400YG000W060000110m035LGe2A56cWHQKGX0W0WCW82I00
+G08000O010W2W08A0Q4AGK06YGWW0L00K400B0400eO00G820K610GX0L008000eNac00G00
+0Y808690087W0Gc001I05100G0004210G04WY8a88L000W01421200G4200040W484ubJ366
+q00004000mG30GX400181008GW00006m0W0W83000W0G080A0010W0K5mOG8WG8X01904488
+00G0000KW00018G080012110JC0g01HmGX64W1e18Z2G0KI0G1Opj600e00H0000a2000800
+W00W9G0s1W1@@d00a221a000G410001000WgI79END100wf4000a040iDN20G40a00I120m0
+0040f00052004G080G4W10e00000208GAY000000e8L000041WKGa0G2109002G0000YKI12
+0000900084WF4JepG3040002200K00IE06a0e10H0GG80000G820WGOdl6SVe10000000G6l
+R200000zZW0200uSk40001000010W0204480m48000G000W04000O02004G400000448xXsW
+dID01080900004G000010281815200400K000e00002200000o0000G800JWe012HGe0G2Ub
+D10G0000a0t7s0002000G0001Ay@l100W400X00002gAu4C100008G0W1C080WWDYD090001
+00EH2004S0GW0000G0420000408G804G008800020G180H4G0044B0u08028U4E001u07XX0
+203v142G0OlZamYLF006098J30A001K00wVO308HGSMi174Qm@@6qyc178d00WAVe04XG2q4
+4400KNW1@@R0G40000810H0G000802048tl4e0040G00002H800c3000ZxdQ00e000000e04
+000080W0014000WW1W_ZDW0WK0020Bf0ID000Ya202CJS20000Gz44000PebP3Qxs0G420vw
+b0W0002WG10002W10004P8Y44000W0WcbD00G20000N0G@58000b3024si1noP0O300W02E0
+0004200000e70040w0XQ2GWCG120001W010000qF1100KwyF0mpC0000C@@F3q703u704hBz
+186E30004000q70bL60tK0w300_xB0_@t00y70w@F0000@@@F3000eyH00w@F0u@@7S5W@30
+0000N981_@U0ixE0yNz1eA00000005O60OZ8L1mL87K00010wwl00000eC@RAwWn@_5CTfFW
+0000ABdD3G0400040O8F3ISp00G_1m000W101SEf10400Gw00Gm0e2W0e208010002000Y00
+00A00040O080G003W001oP000wO000860001WCCD5W1pRQ008T00Gw0eIM145024_M20c000
+c180S3m005uMMS60000t100e0mmS7W10C0300GK0i4g1@@R000GF0000StT00D@0eAy0400m
+F00000G60tSRWF0W8400SG8Y44000mW7_0W0000TvV0WdP0ytT0FUcvh90Wg@3m@@60UJ1OY
+z4Sr00u@w0W2Y00Ck1GV@1W_3d2KL0838F_m300200m3T30000W8Wt@00000mN0000EvE0_D
+m0yy@0ul@1P@@pV@Rc9Y00A3C0A000EYlY6nauKS30008qnS2tLdGYY6y@l10008DC00K8U2
+7g8nmJCKMM51dnW0000006000W0U7t00W000024Els00G00t1nm4y6KtM21eR0004e5kD001
+0mvz6ySk100SWcfBX7qDG80000W0WOoPu@V30GY00W000W10m0L64NU220004000ayj12000
+6goWqrD8eR36cbXzQP000WG_v6W000OHR300W0yXk101008W00y@V2W7I0w@rWlBPedW7_@t
+W0YJu_R6oGfYL_OOtcA2kZXLvPuPS3ABd10001000my900y5V2J5P0000YyqJe9A3gdFXmmJ
+88U3YKW14002rYR01402200201080002094000G00060280X8x7R01e020W00Y84000W0W28
+000840W100m01000W00J048Y02W40030002200eZpQ0000000Su000508W0020220001GW02
+000W00090000W420SXU3e10000L1u@V300HA02W0OeU30300G0084000Ca000G100W020008
+0W0Y010KG001a44M00010W040W00Y10G0422002a004W82098WG02804202048X2404X0042
+GZ480280011L0O40100X00WWQG5043020210G0020043000kOW4444e00W000544m0140X00
+00200W41AW00GG0Y00048G4420000005882W0GO0820A0C0K00D0G02000eY00404Y008058
+K16W284084H040Y0G00430800J8Y0009GK00080K80800d0G010Y0001GiGZ2AW210eo2W0W
+0OC16W050W1CG84G05804W0c193W10GPG00I5W02H00C0200H00400G0000974KOa8800000
+8aW0W0KW3tQ0XH00G8W0W022006000S0000CSwx600GG142I00886001W0040XW00G22100Z
+e00e1000Y004nGGWWZG010X004K0l600C0000080m000WW0020002G0aKP2lHQ002001440e
+0000004208001100000HW480G4W0cTq0041000GBVKp0m0GG00029000Evl1W06002401000
+0044nn66e01H00GG204G1042WlwR080W200400G0G1001AW2G24G0mQZIygV20084Z2v18Jc
+0002006YG00001Y20GH@60000QzU3Myd1m7700000488000000W00np0LyUQ200028201Tzl
+1HRQ0G0WG00G0XnQ0W111202GzPRG_tF0HaG00200GG4WSlDWW00000000841VzR0404G0W8
+4BURm8x6yok1VjR0008Sn200bXo0G0G48G08rZy0080000G404H01G0W000226H208000900
+00W02000WGW0X000W10I41W0007YRme2LaaR20000kssWFgD0222008080W0O4W006atWPUJ
+8IO3000R6wh10008ErrWKJUObz400G20H02ObS300021G00482G000200024000091G0DnW1
+br8H7EFaw23tnaGQDIi1F3WFB000400W00002Wm4yCCvo3fvR008000a100W00G100qWl10m
+80W000102000H0022G0GY00HEOGqxF0WI0OsL6W10G08000C408Wm108GL800AbG80YW4108
+S23UHFXQKD00004t0G0W0GG420W40YW00800Y0WOXCI00200020e0L1GCW004SG0G2H0PG14
+000H02GW40WLW2WP4KA48QqH8515H8iW8O000000K0YAa100G4W800n44G82020W14102400
+4G00WA4W21020G9604W80040C204W8821080020040G4HwZ68600W000000lzz@DOAQ340W0
+W00WW0G0m8j9CmV20G4208G0W6H310Y488404W4G9004S81WZG0HW10m002020G40C084104
+0Gj@k1W2W4MRD108545nQ0400000WKW2080009GA080100W4a200eG22G0f000W2u0aAcV30
+5000658Y000Gyw60Il4OWy46WFXxNb8Ds48Y00000028285W0Gf6JD02040e0000008W2A0Q
+_tW63DukL3Uet0W0G0G800000HkBd16080020W00W041000G000420201440G4001G000002
+0C200GKW000Gwmt0000G0240ItF1X800p3bmkaF4_k180000Y80002C28W0208W0G1Y90002
+00J00008a820000Y00W008W000W2YSzl1X6P000W4G010028a1WC002F0IG000GCW00002G1
+WC0D010002050000004649e402S00203GG8v@E36pt000oq75d010002009040WAZsWtqC8@
+@40e2W0G0000420o1a080v88WZ1886a10X008004001D040448020GW2Kq160002010ACPR2
+0000xcs00WG2008000a0H0000012mul6KFk17kd0GY700001000I09010002OaD36Ng2802W
+0WW80041010I2202800111400852GG00G0G2402000W088010004M0008Wd@d12000Ga0000
+800rIG0GO1Wd@C0020h2000Wa2zkX000xA0G004040000eU00002SWU1G000R4008ZU30G30
+002O0000099IWppDO6@40010W8188Tc70004f40026C0000040W000Ww3000Wm1oa10O0aP0
+0mS_D0iG8000AchQsu1S60m@0m0@00uv1FL0mTkBG000mF41W2sfJ5006pzF00G000eYJ6oI
+_1041000000Gi0WuY0aE00AJC160CGL_1W3S000200C200WgN_700LF_o00G10Sm3m01004J
+000c080o0d3RmG@60y300W0e3W9010C0200We000a200Sp10Gc3mGE6W1040300WA000H100
+cT00OYWOuOW80008l2008Z00000QAsWOuI0830GQO6qLQ2000G900IA0Lad1w001m0000100
+G600Wa100YBWE060C0e0K100m000m40042j4_70hO50n9Eu100C@F10000ytT0Sp@0uW30GN
+Cm@n1Mwy6eZE0qv00eD50G2A00goC0000m@id1000Ga000izl1kNF0000LvV0Ka200utEL0G
+LH10v000ECF@@F0dNO000104G0WqzF0qzVpO22W2p0yl700W1cC8djDYB2300805ZdGQPC00
+0_hVCC0400010000W08008G00a00600wqD1W000Zd9nGv981008oC6IdxXoqU00X4msv6iIR
+20000WH00yCk1f@R00n3WPFJe4z4a0010000G006082000G030080WG018000G00W00G00XG
+00xRQ0006YgZC00G0ucw600G0OdD6_pmZDWUuTF60008ark1fhP0q00Wi_m8mJ3YxtWAbD8V
+S6w1NYnmJ84E660KYD@O0004uQx900GWuHU30048iFE3004uEXFXZqJ00A0Gmv6W08G0004Y
+20W60G02vpR000W00WO0DMP0000K02002000100G0420etl40GW000L0W00210080140200W
+002000WX08kU300W100G04804mxe6020W0028W0000001e0W0A8414000eH5W000W9W@xDG0
+000mH2908000A8G0240SJk100028002awk1882000000Y182400IP_60Y00000G0A00W8zD0
+WG4000WGW0880400MHr00GOW04G110K0WG2G46G01406G10e0a01000102101aYG0e80a050
+110420GQ05828O43K00A02HSK33WW14Ha0a022A0300824D03W03eW20K01O00007W100880
+80401GW40410I0A0004K0WW08O4084W00W010014000004102W0K00K0430131W0AAWGK05a
+000000X0g8K0G4011200iH53000X05WW10X000880G84G201604G20fG2200420GX0W0qG00
+88WK010mW0200W5W8W4WEA204W180000f00LeW4e1YG42002aH4GWY0pO060260K04A0000Y
+g810H004XW8W440082028400084X0100K1G8002026A0W0000104X60800002e0000Z10002
+0805W02002000a80060009006W050FuR00W004W0G0W5W10e800202804OY_6Kue1BqR0041
+8000IjQP00805004WOf4AG004W02WWG0W05800O40W0000Qws001000HC400080800020W10
+000W08200W00042qwJ200G00W20000022e0000Y40022048M0580G020000000qH40W10e10
+000021080000082004000500e800I0000000GGq2l98200G4000000a2oD010000CX00040G
+0W00e80Sqj13_R020000008Z2O0000KM0000000W00WCKl1BQdmkcC000G40410020G0810J
+Up040W0W0Y8tsR04000080ABKR0028C0G40LwRmhv9qXj1W04100X0iOj10041Mts0004040
+C01W00090Wev@4sEF104J700000e000W008lE3gwEXsiDOHJ36vt00W04400W0080080meqR
+30400W01WeBj7G0000a00v8o40040W000G0G800080000100H000W01020000W100080400G
+W420W000010g8D3000800H000C020005102C00000UJ00042CDx4cCL20W04TqR0000CI040
+I00G82080804406WaG0GWgWD83L68200CCl1010004O802000H0001m000000004OG1W0100
+000GWe000aMGD01004G0000080001W4H0C0028G0004002WYuO0L0400000G0080000W600q
+7t3VZQG4960420W000a4GG0302GNoRGR06yZ4300000WA010W04W828Y00AG4X0020Y00201
+0S0K1H41GW08H14K048003CH0H06048K0A2O0G8aK000GGCW0004008G1058GK1GI0000I0W
+00LDf100cK0W0007001I200G00AW00056m00W0Wo0J0202W2m201YWKG2084WKCeG0G1G0H4
+X6082G300080kSC10H4W0000DH90H40W0W0G20052H01008WG0000080248J008A0026K0KW
+80410C02G210m024280X8G02HY80Y8AW1g0200G004140408G20Y00GG14000y94408201H0
+405008H0000G00000400eWHfCG0200088240G04008mKW0ZWG50D100bLYO10282GW150000
+A00H0WGopO6G408290000a220820281f0000080aAvV38L0000W2OtV34WKI1002W4W8bG00
+IG001400Y802DG0e8W20000400004G0W81GK20032aY000H_K6WPe40000008HA900084010
+5000I80W0K0f80009850Z_p030020a08a2000501G00800G000WAIG0000W0eQotWDlC0804
+2000BG1200W820080m000e8J3G0200429K2Gn4G0X0cY9820a20000W801100W0104aw@D08
+G00882A00200001188W040100G1000LM04800050888000p08sU3000WaOi1lQp000v000O8
+Wo8G000000c010300016000Wen2QGW_9000800W00EW3K90000W00021Hy_l120G0Ipt0a80
+YC000O22010000088I2d6WW260W0G0g8X0HGK4WW1044OG20007W6050001e000W3D00080X
+0H040GW8080H0G050nW082000C0H0QWEmB96i1f1C00W0X200G01081G080m09441oWC1014
+mI10GyrT30078ytl12000U4q0011W0008Q7o040W000a8gyt0101G3aP000010008K0GGULF
+10040W000G012j1i10200000WB300WW00mGoF0002e3C30000Q00000W201G0010002GH5gE
+r0W080Z_RGklF08000zVG0O8fboDIG00000GXQ5000Ga30c5t00G@0080sz2r50010b208m@
+m60oQ000WY0YA0021W39sO000WCJ0G00A5000e60s2000Ws20400W100000850000468p140
+0Wm1W4oJ0000188h0000Go101000G100000D0000W1m21001CG000400W2000G49000000@0
+0yp0u10WV00000W50000WEA0W600m5H0A300WA0000G0000uV_1m718WxRF000000ky000nX
+Bk0mTt1GS0000m00041_D3FFy1KXcP0h000WOs@0C000uZ8uR00eBU30000wH00ei@400U00
+00q5C00W6100e000Y2n45mBF0Wkw2W02F0g0000W90y@D0028uk700CL1G2S9mE3m0W0W10C
+0100WA000m000aI00ab0Kvg1m005m500G500Wn000dA00WE0LOg0O0m0XVR0G10026004S0L
+0w0O003m000W100WK0004U200mK10mq1m0m445040XmuC0000Y100S701W00304020CJj100
+m000R7G5038RE3I4t00N000k0C0o0OKxS2u7WoK6WRI0_VH1000qEv4020000y80ug10W2wp
+76S5_vl24H40W7K0KGL0I5404Y8KDL0eAt00000mF41WP000@N600000000KTq0uXgg@t000
+Bb00G19005wF00005qS0xF0W@@00000W00mjyDWPP003CvV00GTk30u150@x000QcsDEft0W
+00Gf0IIKt9aol1JTOGpt90mo1OaQ92OtWEaC00000460C0840fXB1XC010000tUR0500WPoP
+e6d40GG00000iQy7010000020A0100000800200W40040800040000020m8_D080WGPv6aFY
+1x@n0010WoIC02000134000000W104G20G004OBE3gZq08W80@ad000W0069000060H00qUU
+2fUdmMr6yeE37gR002GWfkJ00100208WL_JenV3cGs0000000y9MKNYgsDW00Wmzw68014OG
+yAoTt00001080G0Y000W248Nz400024sE3DtMHRu9W0008TP30200000AOIU3kWd1maF0H4R
+mke6C3V2GW00008XqXl108W20020SEl12000W4000024wdS6QvqWGsCuOV30G41000a00121
+01490WK000008A000a10WY020XO0WxwD02G48400WxODG02000002K0G4GW80GW800451W00
+20040011G4000mHU0WW000040Z1W0YYZtDe4@4E4s001024004008004000040urz6000011
+000G80Y0xDW030004H004008W0WW10H0100460W02ee0O00W0C0804IKW000W0G840X1G201
+10O028C0G00011X024Wm2O00XGWgG80048JG0W0N00000YAWG120O8A_ft00000008DW01G9
+08G00002008AnGGK4220mW000KA00000010Y40GG8W000e00WSZl1W110001GeW020K11000
+10GWH00A2G4000040800W0aG200W00H0W0000GO80100Y3C2005Ob0G060W00Wm00WGL1G06
+80KQ0500E00410KW82Y0005X200A0K032002WG0e483n000041208g218440G020G8001000
+4T3WW8G0010C206WG19o0WIY02W4W0002W00000a008E001g0100KW0W000008000H10W001
+0G00408W400G0Y0eX00G400000c008829WG100W40100021000H0008840042000002K8420
+0004010001M00anzJ00WW20X0400880405WW00WK0008400081GH81I0001hct0000W000OD
+o000A000X00OVz60G0020400001XxyP0100G2h6000840000W4W000a4juR00W00G900VvR0
+0WW040000100102W8000GY48OAv64CY1000000W0H00GWWo0GVO602000280080G26800001
+004000a008W@441014@l100iLo3F100W0FmRW000WHQPOcLF6vsWD@P00WmmXv602400700W
+Xv00I0000040410H0G004W0020W801000GW040800GmG0012130m00W040fY_000Kew@DGOo
+4200WWyFJ0G000H6XWc@D0000Ky@6KKi1teR0002000m00080ka91000042400G00G800G00
+08100800140010W040Csl10I00000Oatc10140sAFX55CuQw40a04aPS21W_Wz10WlrD04G0
+GFSLif93pD@mrx6yHl1Xbd040000010zFR0H00040000200020001000014Gn364kj10G240
+00OaQl1xGzmpyC00GfSP_40400SYg1DmRGzr6CYl10001kwpWunP0004000WX5pD0G8We000
+0300000W0G00032G01081e88824WA3WXAH81002O0W000080WY40G08011AG01K0G0G090G0
+090324WG4800810G00i0exU3000G00GG008WKcy608A04000W80GmSlD0I0014P41K0W01JR
+000WW3@CejP3oMr000G1008000040022i1T3W42080A80G0G02000GG4W0b1I003nWWH0IC0
+4400K1100I0O010e2K10YaX0G01G8a20140W2a0C0nO8086GCW08gG42WAH02bW0ANmWQ_D8
+tS3400000002r4000a00G000W0680OW02200emP380m000040W000W002000020W0000W002
+GO@19W0I00GG0G00W102020012a220a400e0f0WWGAAHaIAW8300A0fG0000W40XK1G4C100
+I150240842K400000098GpW6GAG2ODU3ggt0G2000GA0sUt000jJW200IEn086000G01000H
+000a2WG418000I10Y00H08b000W80002000Y0000W000H0W802a2m3I0041WK2040Y000024
+I020G4Y010C004004G60Gn10c0XG0q440GAGW0010I0010003080W6vD00W0002084108C04
+1Uaz1W00019O0Gi5Wp@Dep73028400m000W00H1300G480e00K00W04100O005G000W14K00
+40I1m0000O1oP00W20WG8Hf0a00O00e22504W4W300W0G9000000emC30W9044W1O0u12080
+W0hms@60500G010000100IW0W00OcytWpyP01H000G00000W_Y02004008100OG00I0C8c00
+0K0XG88600G403a204030G0000WZ0602u200G00G00eW0101fH00G00002800HW300Y0G021
+W3WWG000804400C0L0008G0Wmw@DW00aozA6040GG80G080000006802000C00G01gjS340A
+0M9X1@XR0G0000m01VbRGA@600eaPpt40000m0800eGW800400Kf20802814O0gK82410002
+04200e40020H5GG00W022110000810WW008W002e8AC002Y8Ya2000GQ0mGwD01WXiN0uDT3
+80@j0000rBqV2200Oj0W00040G0020s2000Wd28B000083zgR000WQ0800HvPGn@9G0GQ000
+0aK000GE5aJSRG@w682Y200Wm07eF000AOS1W800W0840Y0R100GWm7450004070G400G001
+0Hma0004Gu1H20001X30a2W1YWi00H80n500qZ80eD500h6mV_oj@T3WgwV08M10_840000S
+Zau300qt@@1W@l7Wz@D0l_F0g20_Vr0eV100000C0v4Oc80ydF3000mbD00a_l1EyWhCWApO
+c8@70HhggY_G74zXEegCbHLLvW@1GqpCZeFS6HVu1YMLLCpX7uV0KnCp4j@18Qg2GqEyWeTu
+1@xm3_70gKbgY_1F4jg000nT00Ef0CSI1g0W3K1004500mC000P700tE064N0T0uW4uC0R00
+02300oA0LCL0C0G0K100mOvw460t07000H1O00078000H8000502YQ0C0m0w0A0q1K08Ae0G
+y30Wu7G7H6WEWU0P050w0A043K08o00Gq1aX83e3G7G6W2WC050H0A0YQ004r0w8g1q1K7e3
+e0G7G1Wuw3W2w3Wg00zH41tK02kQ00TJ10wH00qZ808L000RA00XaR0004H5000u2mD9GL69
+a@@320yOQUFiij1UN402ls004H40y@_0G@kv@@rJzr3W@X70t3001xnGleC000000@@Nl@60
+00wFcT3yF0206008uQ6E7NYiRsO2xDGW050000nw00GP@F00mG000000C000201NZRGl@600
+01OgI3Aas000WHtOdmGsFSpl1fzRmKR60000000HGWuC0n0004010020000H0J_dGP060G40
+elD3a00110W0000_d02000G80PXRW00000486002000W820820212m1x60G02eWV3000H0G0
+0418W0000G0W804840400G00E00010GpH645G200W0oAFXWiD0480GStCiwl1HfPmtaCqMU2
+0GW1ACt0my70LkxHgxLaGk1z2mGgbFaDE3HAL100AWDuDexz7W00000W8OYT30000020e000
+0jf380000AtdR00G00000I440A0000X0004A4WqWn90101u4U348G00e0011000W0GajND0W
+0Ku@y6SIh108W0KO01000W1W0W0800G4G800020004G02G1001408482X00020K0G12e4Ok1
+0000W10W4BX1LEPm_y6804000084002000xu0W100014W04G0001KVG6020WWG00020G0004
+002aG00010m00044W0W000CG000a04kjtWfsJ01000020G40K00000001K008004008W88G0
+0W28S01H0182H20452W800W08YX48A20CW0GG194000G4iG0G44GW88005XG0008e06bG02e
+005004DvR001W008I0A1000vh02028W048001Y0ZGW4GW010G00W024054G00f00YG404000
+GG0G011000090X406IG10e80083CG000G20m00G4G0080400YW050GW00a000001011W4H80
+0005WK00X22IX3W8442810ImY00O000CWbG54X15040921CG0GAKW80G000H201XAae0402W
+2GK0W10401Sul1001a0000G02K0000YC0O010016O04482L8We4G08401080HC4A2O0We20n
+00G21004000b110112C005W8Z8406I1002O0000G00TTR004200104WG4a4GG00006G00W02
+080010md@R0G40WRKD0D0004020040I0G00W0HW020000K0002WYzyJ0040e00010840t2bW
+0007003000WA1200014000W0mnw6CaF3000C0008100OuP@441000G0008O0WW000020W02m
+0kwp0KW20lTd0004000Y8W0G0AYq0f004001KG4004ie1200000X0qDe100W4owt0000CGW0
+H0008WX80W4H80c02Wq@P08m0Gi86Stl182G800022G00w6F36ptWF@D010480C00408W01G
+0QAt0WWC0004Io@tWRbCe@V3G00K04G021200G0m22400Z7Q00GG4008000GG0100bVl14a4
+0020GmG00220020001008GxCOW002000GYpad0008Uz20W008A0000W0G400000G202G00W0
+W0WAbK201W0000000W800G0090C04G0104f0@ddmvd900W0040100G0086WX400044G40XWY
+0G004010000082G00gId1G000NzbGm9I01A020000006FY0000820820WaWk10X80UuKY3sP
+G22000O04e00204W0wJr0i000HEp0WGa000W00G0001000480umz4__oWCMguCu4UjB10G00
+G0GG2Xt0Wr8840G0008W05408qT3008e019001281AG0WwKV00000GG1000220210Q@t00G2
+020407ZnWlxD00CG4bXG0WK0m0feG830L0528H00gX9020KW404G400G02Sxg1440100W410
+9003100112G80H0hCQ05908H001G4H69GW0001m0W0W0000MM92024g040H0030G000K300A
+00HAI0GGH004090I00044qbz600G0W01000m00m4200204081CO850WG2W01Y110058Ntp0G
+040A0CXWY060W08G1W006O04H020AE30W820480W0c800004400140007A000X08020X3000
+00W841G0408O000Y44W4410000002C2G1G0202000CX324100K118YG802W8W00OC1C0A00H
+1004YG40WHFDuTV30G0W0q0A00O40AA121Io8220802I1A6WW204Gg280000QLJ_R000GAGa
+000C1G05WW2800WKI1040G2185HW020400I11000Y085e000GW10a2289B0181f0060W00aI
+WOnD00HYG9S600000K00IZt60gxagD53850Y02O1WK2G00240W8L0nwR0008XS2JW0G0W003
+040004000wYtWgcDmX0001000W090Bsd00210G9508822420W04040H0W0G008X112W24Z00
+0500G00042q6z60040080880Ca8W02000I0Mmr00G4800WGG8000W2800W00000Cv120W300
+000W0A00Y0002GWW8O0G00124o@t042G89Yd0W00aCyD8D830002W802uzV3_kc120W8842W
+Bzt000Y00O4340Q6W0G400e112W200G200mW800W84ql10HW11C00Y001W1m002m1OD0H904
+000P00GW1C01000200G400000s11080188W0W00001mG0KaGm002400006000203mYl6SaR2
+0W0012W8Skh1O000sMt000W8DG_000000O190010_Xa1120000506nFXb@D00088I00000G8
+8020400WUYk120W20001020010G0Gkm60a210800W20W00G01DU8nq094ih101e0G010O001
+uJV30W20KLf40WU1GW8aP4000100000G0qV2020SMG@5401aS10200G0A0000i20W00MBqx4
+200Gk00180104004WiJ0000W5wF01eGEM0000010PwR00W86000u2c_JG08ev5000100W500
+0aT102WeVGj0004O586T30W08e000008G4180000101DR00OI00004W0p00040cmh1nedW10
+CGh0WdougL5m7Hmj1k2WwhF08_V0KGV00000F00uc248yR3iP4000000Azz100mTkN50000L
+zF0cf000000W2Kk100SJ1vvd00WSjJ5DG60yY@WV60yFy00000O6F2mCG00pgYN@@i8YPGh7
+000000AA000uWg1DW@ZA0VqF00010020yF00uX12vF108_10Wf2W1R7030E82S38E00Gi30W
+u7G5W9030O02000C000c3004r008k3e2K3W10PnP004300G_10GU3W1W003000200WW00042
+000c500Wu700hB06YEWz0mWSnDWz000xD000606080C0m0G4Oa1000GD00020C0r080W0m0W
+ivC004L004C0O000K100kyt00yF0C3F00e0g214_pF0ylF0uA3000Y60YL40HuEW100C@V_G
+900Hs10000S10000GU_I1000008WH00KH000000@@600WW@y5WNP0000000Znw7G100WU@j@
+bKG00W00qi02000Sr@@J00@tSW_6000_1W0000m30@30EK5108Y00002000008400Gz@7000
+W04A00a2N5ru@0000mEghuDy7Ynd100OA0010EsFXnGCOP09Q5OZ8mV0000002010W000C00
+00000044OsN300202G008kK3sCN21000G0040001G00108G4002G00000m014oup00be0RZp
+mz@6qNU2T@mG0_681000080000W100400020Vfj21800400GomtWd@DeaxDUzE108000801Y
+etWP@D8F03000mv700eK@4MPtWWlV81t4A3rWPSheGtDW00GClk15hP0000aGrJuSy4gXF10
+40GREOW00G00G8091R00WzJ8G00PycmVL6qAk1ZlQGzDCa0l1zmR0400YOUDuyU60C000000
+240210000181000GG0eGH10IX2L10300011010200000CG0g00100000G0G8140G40000080
+008uNU3YIt0004WxfQGP460OD0010000G4WVmDWW04W022000g0PkR0002G0W00004000H00
+G100G0000G0042004002E6EXYzI00I0000000WG1042aG4I00G22IX008W0OG2001Ge01G00
+Gf082211m008400GW0W0040261e820W81H851Y2C0I1802280G00Y0000I042040K40101W9
+08000000ZdG008000G001e0080000Y00G22W852e09mW028W0Y000G020f014200Y0004K12
+W0C0540O0i0W0a0020100010AWW0000X2W0000e0S@_6006X2K4408GG41GnC01GG1nGm0a9
+8GG10W00fGWKO08e0e44e10b0020448IB1410G408eI400CGY0Gm800mty6800G1G004Y202
+040mG00000O55zG2RCR04uO0040m2OGWH0100X8004040G08401W002000120011Y2GK00g4
+805000W0000203001G00K10200050L5DpR000000281R@R0G4050m0W021A0020yoF35@R00
+640O0050000J8q08W0W0080G00W0G0WOqV3I1p0G74G008000E00X001G00213000044WA0Y
+oxt000400180440800G80W280Y400W0000O00000GirZ1hwdm9YFqFT200384400H0000200
+8820004622100AqF10200p5R0000000X0xMd0100WJ@D00G80000I7000@@Rm_Y9W8000010
+Kf@9CHi10104@kq0002G000W800204W00A0GGoz600000Y12GBs600200W0920410GW8WW00
+00KG000000I000441WElJ040010I0WShJW4020G00WNpO8dP3Qnm004jjHMc00040o0007UR
+0G0048B0000080IC0W020G412004000G0400GG00000I100P00mjt9Kok1LfR000200580r3
+O000G00481801800008GA0uuE34000W001udR30100yMk19mRGYt6CC33T@R0eW1WXoDuPT3
+Q4t0000W0G400W8000800081mwu600W00400420012041G4W0s8F1000Y00X1c4qWx_D8@P3
+G120000GI000000818G0802G0Y4tWztD00G0G2CCSnP200103OtWdoJ00004P4001W008000
+00G10100200000Y40P602FYp0W008401Wzi_00I000GK0Hf@000C00G0o0GW800YA0G00W2a
+CWAA0HG4H0827C00I000Wm0YG08W040010e0G1000K0000100020G0000G2000A0W1008240
+OOu44410002000mgGv1600002024W801G1042a2004824Z0C45040888284G4000400qC000
+901Ww000O4G88Z0GG0G010WWe2X00001YW0eTuD004K080108204W24000GA9O80I0W02G90
+02H020Ga80H5n00W0H9X0040200308010040C0e0008UL3g5s01000W004000002C00100GP
+i60o2G000000841I008W00W008G000308CB2800L00G000e048X002G82X2H000421010002
+I000G1104500C0040000010200001502Y821808000820510020000I100Y0W085101000G2
+aA00001000f000O0W0WI00080000e0G200000WKO228000G950A51062t000WK0bG8000I1A
+0G4WG00000Se050LnP0808000WKaIXI1G00GA04X2010HW2000P20GAfAoc1G100n@dGxyC0
+0208XU300G008A00HW000G420028W0ooG40WW00K0m000G0001H4J0041GW8G000000G14e0
+0414GIDvR01W0WEpD00WKGwz60W2800000009tTPJ00a200014000H800G00H0840000X0WG
+00AW020Q2B00500DOa704004800G004021G0000HWW2G0W0aktr0W0008100001J0001a1WE
+87000CW3uA800000eyuX10802G300a@l1G04010G08020W020008W00000WU300W80m1K000
+Y5H2v600IW3W4G0K008W0m000n0H2e001e008WWISj90W0D0440mR@9K2g1j7p080AW2_D00
+Xe0800082W02a810G00UmG2vbd0008W2kD8k@40001GGC000G0401WaC@D0000zZn6qqk1lx
+R0000H00210000110C0042W0Qa00K01W0800W0040WGK7g104000I008100uzn46yt0G400W
+j00o1t00000000oK0000eNet1400WR1WGwD00a900008Z0R0004mb200W0G000004wb0010_
+80f0000Gf001008000040M50G00l5000aH2M00000720000W0G0000w52050zMed8402q710
+00G8480008zH0008rBW020408X000TwnGu_9i3C30uU4sDs00002Ye30ytT00100Kr108L00
+07MmDAG0000W0yFj100mCf2000W168OwAsCp00000WVx2Uzt0tm5H7@d0G000000W_h80W82
+@Jb0wt00_Jbh6000@qV000YedUW1C000H010O0000000W100_F3G3rFYx20z@V0wN000H500
+tEWA26060m0L000O000y300Gg10mF6Gb86030K04000C000C1008c00mc1Gmy3W104G70002
+000Y1000200Ox04GS1O4Bk1000p100GuG000H500Y903aR020m0C000w000C700Ok30WO5WX
+nA030KWV000L00061000400mK1G0W0W1014DW1dmO002010404f0aW80yH80eA0uZTj30000
+004WVT50Lf00MT00050S300ulVm0000Whk2W8mD0W20000uVV400000000Wh2005a0082000
+00y@7Hnp000SpuuD00NDWp00000@@00y_10045dd10O65skt0F0000W00y700000cnil1000
+uRV1u@00m7z200KtV20elQkOh210003YBHCi6KFz3rLRGgz6qBT2WIA0EVJbNot86x4gPn00
+001x_dGim6ial1xLR00000008apmc0040X9qP02A6Gs_60G0800108000Ky100lnd0400Whz
+DOSV30102avk1ffZHLULylk10010IA8Xdsy0010G3RCyIf1Bxn000qslys8@o7IAWaxnhm40
+00001WEqCesg4MF9X6VJ8fS3001Xixk1008GcYp0GME01lRGKk6qzU2dcRGnz60010O7FFog
+@1WG8HA0200401020HXG0K4Y0000WG00000010GW08G0W04128X00020013001G00W800A0W
+2a00YFfD0m0G204040WG0G080001401G100009J101IG0801028820302G00004W00WNjD00
+00218KG00000G2W8000200G0000g0G8002A0vzaGWz6C_a11LR0A0O000002KfY4804G3W8o
+C0H4S0SO06L10aGCG44K82GA0110408eG4GI8WG20H23K0ZI10504W080G08eG0G008W00W2
+G0G000GFs6OW0000WR401000601440208000cWGGWW428c20O114WG280H10002nG4L00820
+0100G00A00H0W88G800e0090WeGQD08H0044G00000G0G80000008020Y01GKWOCG0828Y1W
+oWu0YX1181XaI104W8H00U0GXH110H24X2CWa0e96015m20WH8I8090I4G00W0U20010J0O1
+0M01038W00H808012G44000WqQ0WW4WGaG2Y0A04G0WKC80HWX60CW0K0200G0W04H0G0G90
+1G2088Y040001G0004IYO0H40Ca00K0G04W0G100W01Y0G01W00000I04G004020G10W08W0
+000WmH0000K0282O104209000C00202G00210020404000W00G00020801444O0W00I000nB
+a6CTu300H0000Wp6G0uCV30O0GqUl1004e008a04G0100401WO001210W80000G4db10020s
+BXXgCb0X0Y0040nyrC030WW04001W00008G010G0800000G2840b2DC0W00W400WZgJ00800
+0G0ep@J001W8000G004000Uk3xo0018Gp@RGOO6CzV2l@R0HW00800mPs_mq@L00080104CC
+0000W20BtR0W0aWBmDWG000000100G400W8W0G4jKl1WG20MhBXe3DuPR94NQ0qiU291aGAq
+908A100041810WXkD0W8000020040WlYAnQACSwl1G00091880G802002GaU60000G4m04C0
+8G10W0000Y042GikK2fhy02W020020008861o0F0K0W0W4EXt00040P_9X000W6SD002I20G
+002000tYQm9fUG0000m0000W40GW0I04G2_1p0O00GjrP0001G00040W200mW0q3l1pgcm3R
+6Ksh12G00OW0000O8yT_400WWaOk1N6@GyO602P00004I929SnA600WY9010Z0YA180W2G4b
+9u0We800KWX02AOOW0gG02Yq24o010058HG00o84G00C8H0X20WazCWW000C000200020G00
+0002G00I04B080K0H000Wv10D0W0g000G4G0We0000081W0G0MsF10C00005IC0Y2WW10H8I
+GaGKW0804000WGUTT300G80OWW00W0W380G0GG0I30BJ981W25000I00W8000H0WIeg0A0Ge
+W108W8JA0Gam0800042100002LHQmb_6031000G0100C00520000Oa600040008G020W0WwG
+D0010G7y6CMZ1W00W10G0341W0I008G12A20008120IyP3I502W1W0KWK00a40G0I958001W
+0WKm10041800A4W20000fa28O0002HAJ40H3002a20Q0000HAIH14JXRG4z60102G2G95084
+1G00000IL8040080008I10008100bKZhQ00008000848100000GAf0040WX0aY29G84004f0
+04WIJ24eRfAwZt024WW05141If2W80G08W820aI4002WI00140K0805000412G0KeZED0040
+501n90HO8404G00G00200P8S3000200G000WOGh@60IN0100G000G0W0W8000Y008408100K
+00GA06000000412G008cX22010000I0G0G00WH00011WlcsG01I1u102W20000YG4WA10448
+Y0000G909800O24G20AWE0208030W0TGHG90C00XCC1W10AW6q8HS3YKq0e14000K0820000
+800000ek900WH92v@R060A0C000000q0000124000005W10082a30006WWW206W0wBO34010
+Se43x_@WO00XgJDG90W0004111MY01044210008414280020YQMC0WG000900A00W4008ExF
+XsXP00GWm2u600Wr0014mio9a@x3082200W0G2W810010810000G0083eQ7oWZbn000GlB88
+4ac204WWG000000wF001G6Ne7400280100G0A000040zN0000F5q@0100eL0W040400002Gl
+3080Wb2rKW000W00aDk10WUH0000O40004rHc20024e204W00A9t0000061W200000104O3O
+3G@8101KU1z700G0@bExD0020W20000m00veA10_70Sn50010cflUV8Y20010_Z700G00W0k
+2W8S70RR6c@72pi3010S0_ex0yH40ug10000G150GdwI0Wy0000uEt10S000G02003DpWBMm
+G0Uu10_tT00G@0y010020afT2RLZ100WS700f6WBnTGK0m0k000O000a7000k100e2W1v7a8
+U2O3008w00Wj3e2u7WHiu600087008c30000WXOE000K0L000C000410004K00We400mS06Y
+v0C001O000G0WwRC00WC004@0G0G0m000i700mG00Wz600tE030006TpQ000GaLjn0Wh6000
+10tKG0Uw800W_0Qr1000010CgwA1600000000Wte00G3S000000180509mn00A3C000008Wy
+00010n6186S30R@w30el204R4z38lZ@D0000e710WsyP000ykt102000000W@00000Wvcvcx
+GI1tWvmJ0000OprIaYl1ZYpGMSCqzU2000GX6000002OtV30100ykM2Jx@GCSRyM_3000010
+W068k1K000000eyml1ZzRGXR60000i8B3010O0020O_U300002Z00ii83QXrWq@D000Mx11C
+00001Y0GW0W8WCGD000W0000GG082Dwc08G0WNwCOL@4AFtWJoDOT43E4vXJvmuix4cz_XMs
+Juqx40Cy0G00000G00G0000020H9RGIu9y2_6bl@020WWv_J0G00Ilv60c2000000210WD5C
+W0000080WurDuiC300W0W20Oey@40aW1ivh1hUQGj@6000Wn000mRvCGGW00200g000WvvJ0
+8G842000010G0004MFt080G0Tdd0080WKNC8fw40002009W2I081WW0240A480WWG0600W20
+520000GCG200G000G1211G10200O00G0G0WA000G1000100014400Y2GW00We000W20cJm00
+02000y31G0000f0104241q02482GAW85W0200a20W080000K000I52a1W00600e140GW0000
+8600Y020G04000qHl1JSQGV2600040K2G00eW04m02800W0830Z00fG000804GGW80Wa0KY1
+GW0e0be0e0K01X12X0G500000C15W2G0e1S3004GGW00001K08000001YG2Y2G410H9000eY
+1002W12K04400Y11WmW8G000048O0W00Z150WGD805194820K20X02W00Hm82eWPC10G84W0
+W200W0W0100G824W01064H0G0011emK_60800m8180kK11K03m608W1S8084GG4004WW319W
+2Q4O2W1C40G00K62K0110O9G002e4W0Ggps0800000W05280WWIA00081G8IG0hGCG024000
+GhJ0G0000320Q208beWH0K1y02O06W10ee3HK01eCK40Y2Q816e24Gc00W4e0g141KL0000P
+0H0Syvk10IGX0002GeW2040W02AY0W0010W60400000C0uiV3G120G020W0040Ke0W@mCW00
+08a02640026G046vt08F0400800W8000286G080004WE_P00K10004V00W0OWXW000W8W000
+m4000020W400h_R000G1000I8GW00002801400480042hlBD0020KXh9K1T2000100X01Y0G
+00068601GG00800280800O44I00eW000080600nZPGb@6q6k1004m004000G80G000020201
+00ndR0000ntmD00E92G008008000mGods000120420000GaBg1DfR00GM0000WPsRGBr9iTT
+20GC0_mC1000000H600W00W02W08082a0G2140020G000W8GW000G4nW0900200110000201
+00202W00004Kok1000W000800H0utH30001Mal1DiR0800G42000G8G0a040044K8688H068
+YW0cW000ErtWntDOtT3000mKj_300101084WG040006Krs609400000480020W00zpRm8@60
+W000001uKy6qvl19mPG8R6iOB30W0000i828000Y22080W00000800GYdtWTGD000020GG00
+206W020ghp000028001IpS30010G2082Om02400G0000018aUk1Zba0G0020200P2QGtQ6iY
+k100H0068008G00202000108Y80hzR08O10044004004104Erj1G8306ktWbwC000GW0G804
+900Xk42Y00I40000I301mWe002PGGG4WAuWGyG80Y8AH0Z02IG000KW0248I8H0040000100
+W20Y02100820A220O402001820820WI0004e0440218W0W84XG000000000dt4504Gi84180
+00h0W800002W10280o8820aHC8eC19A10W0000XXWK41000080G100G000W80004000100WF
+kd0H000000H0W4900WW0aHq082KiW05GY8A00A00W4C210C402002I8a02200W0G000200a0
+8080030008Y000200G02002GY01W434000A028008G00GW08G00008006Y0000rs004G0040
+G2HG60008LZGLG0me81K04aW01420H0I00i46PAfS068W8e00eW0000H00oy@9CVT2FLa041
+100HXKW010G80YGA08b8Ar0faI64200I0A0000G000a24140800gm@DWK0084W0008520800
+000I1G000508LFz60A00G0100040W08D0mo3rV@6GA00W0GG0fa224Y0800gOG40G20HaIJ0
+e008GAI1GfW0000004W80J00I11000I415000A0YsB100X6000G8bKG01I100Wm41000G108
+2900G0WW0aWI000000W8XJUD08W0q9@6W00014DO82000W800010000820W4000WG0210480
+000G1GUmn01000000GHB008104WH0020K010188098080YG5Pl1W24042042GG01W0aa4000
+0040W00002W0i@e1Nsp0W0200808010fMus0030O02020u02000a021G0d0W0W00c1@RWW80
+00O0000000W1H0Q0000008n020004043d04008X00010202000eghD00080021000vtC0000
+GW12020120G000G8000G0GG001G0W0J070G0008G108240a0G000ASil1vcd00K0Ws@D000W
+2410004c0W000030000890020000O1W000W06W04000102201009G2004182008k_L20014f
+_RW020WoUD008000G1Wx_D0aG3W0Y00W090080W00081408000808100L019080041000eWW
+0I40802HYAuD00G2mKlOqDk10W_30G8ao5008yD3IWp0mc00W1KMIxs0000P0000008qB000
+1ee0GKv600g1000G21e71000W4100G00G00002HI000OG0000SQ4s80G0aY500utU3G@0000
+0M1iX00e0d5000121X4000qR41M0xl0Y20000r2040000G0000G00010KyZ9W00000080wl0
+810_B_004W0018W@ZmT@V50udV0SJ108W10G1500JpmgTZ0W00WwqD0040eTY0Ggc10NZpG0
+SL00Gy1@00kp0SJ2mm@ouc286000GG750WhA0Ae00080MyFyyF@08Y00qp@304_3G@@6000W
+gohl2f000nsd00it008h0uYy34507a0N28k008c1O041m004010001000G000oP00Wn0C4d1
+O000m000W0000G00Wf200W80LYE0400W4nD0W000ON700mO00GC3mbe3G5040L00Wn000a20
+0Og008S1Omy3q105m500OF00Wn0000400cx08040O002G0W4oDOeV30WR7000E8XS3OE00gZ
+20qg10a7H0O530mW7m@D00Y100NL00W2p0000000o00000200m31000000py004NS0001my@
+00K000050e@@1GwBGzCmF000NAJP0u7@0m50000z0000000KWP0u@t00008EW1y6500CU10L
+f2008W70aA00Wg2uT0eZg0e30w@d1D@C0rwpW420WNSP0W12W010WP@D0O0WG@RCqeT27W7I
+xq6SNX1xGhIAtL4oD3fTdmCu6qzY4btp00O0WelPOTg4W002iXl1800066t0G540DWNno09a
+073dwR0880WK6JeYy42kxXZnn8WT6kB9Xq_D0022mhu6CsF395OW800Wz489gR3w_tWkvD8B
+yD0YG0W400usR30004000Weqy4sVtW3uDuw06gINYArJ00WmofVLquk1BvzGeu60080OST66
+vo00G003BO00008015800me01110900W20085901010002H00W000GW4000300G801820W00
+0G0W00g10004006000244G01180W0m04I2W201Y0G0WxpDG0000eu30000400PG0W0001000
+08010000m0028026000G02W0000M000a000b0W08a002205202HG404421000420100001X0
+00281W000280004208004008WWW021800250WG5001309K01e022HW40100W22G01000W4G0
+00WW00GJ118000G931eI20G01K80400K000G601a01080080a000W228d938F008W02020K0
+9442LX0H0aX9G120G288GX0G00We000G1q00i4e41W0020918000000K01G088000GWW0G00
+G0WGG0WoTDG00C000000440010I0A000W840BX00e600W2o42G42001390G000HWW0G0O00O
+1601080W08OH050W6be008X8G020XH82081G0Wm02H1GG05004620200W00044000mB200G0
+I8Ge0QWX44A4J04200Z0220D809Wm00000Y4W0022Y049YG0072014A0108G80G1Ke048120
+0014g000009C20K04GGW20G206000600444004W4049u1000800C000X0u0010G080O01002
+00W0IW_@D0021nlr6002002J0m0o604010040502A0400GG00061A1GpA09zd00G0002a600
+100001804AOnA3W0580G84W00001G2404000W0W8008001G0800Glt6ysj1luRGat602000I
+00mb_60040OMH300G00002260004005X0G4B_RW808WxnP0080000W4c10000WWl@F1000K4
+780094008W410G2n4@60G00001WOJp9iEf10004W008qNU2XCQ00014022W000G0468010W0
+W21OHb60O402002GiS6G004ex@4cLt021O0G0200104000Y010GGe@900G000Ym0H000300G
+000G02000e08G000002h60412G201800G00600008oGx642c1nXQ0000G04WG1Np080820GG
+07kdGXt60202W00880080W0G0DQQ000XWLGUeN53004W0120201W8000aUuC8Wy402C8akk1
+GG030W8800G240000eJ20G00000010G010G001Y02GG26000G000OsRy60G0108800010200
+40G020w2d1C0002001008000Gm00000W010G02WnpR00000c04040G00G000G00e0U380080
+40400000A40aHvJ0080GF46CNV20080800H0H00000040006AHa00800404eW000028W8040
+08G0BDbb0W02WIvJ060000W000140bYRGPY68008SpU30W00aIl1W13G0Y0I1H800B0C5a0W
+882W2010410008G0200XW0000101G00Wae034J04C2WG08200W002000OO00000024GaY01W
+200084K4W00cH21GP4G000G87P0C4H00X060408W00Gc1K00101q080W80002WG400O00810
+WG408Y600W804400a8010000G18246W00WC008000030040W0D29YWW00u05H00W204W1250
+80H00080G00W01008200000044000000f00H88YcXqGW811800800430C00Wy6D00000W1W0
+GH202O6048HWW22AW800mlw60sgH0JG820GW1ZAQGAAYW00I00We000042H0X2A1G4004O04
+004le18900G0K00080H008mqz9G4Y01C090G01000050GK20G4G12e60001104HgYyD0K2am
+J@60002H2G18pW0008bK00W00G2I101430000fG00YG81a2A4014G00e000G0000GgVvD0K0
+X02900000S4LA00004000a2004140GA20010X008504100300I180Y0108bKW0H027t0Ga00
+a2m451K0GAf00Y4100a20G200200f004GW40aYK00W0W800090W00YG48Y00H8ucV38800CG
+Z10W00040414G8W8a210090O110820GK8X000011008A01000G2a0400G48Y00000HW00040
+0005000Iw1I00G10W20W0000pGG128028910KW000005800GCH4WP8H0140KWMG00G0GJW80
+0004DG0OK00G02050000080e0080100204381H48WG0Dn2088e400KC00G8200spt00082nv
+R00050e00004oG8020X68m100000GG4000e0G4G0G000000420O0W01810W001a010168W00
+00800W000WLi8GGI000GGW0W100W048C880m000Xm410W_88880SO2020a8C0H00a90000a1
+Y002Y0m200W086G008W0O1pCG1eW5WW1E10100m8a0n000018G4800030C59Y00C0h0450ID
+EXrdD00410202G0G0080G0000H00050a2201I4Ws_D000400H1002004000cyt080G4000G5
+1IW0I00G400myn6iYh12040G00GKMi18WW000G800800G10msw900e610880400400094002
+gDs00E000A001RD0000P10200H0W0000aG0000A0W00000IX0008000C004Y_B0G0ep5wB10
+ZGAM0G0002280010R90e0mR1iL00000bMzC0000fC000io0000yQG@44000Vf_V3000a9000
+01lGl00000@200W0GWG0008wl003WkNe@0402uU100G08080040z70W1Gl5qV002XjNo7m00
+80zE0000_By30mF30H00_1000mW0xjQWD10Wq_DmfZ000C3WRvDeMO300y0irV200WT10nT1
+0000Y6u74001W_A0UU00vE000o6L605q707T4Ahl0Ew81y3C02000qc30eL30GRAmLVtR000
+u100u000m050WH200E00@N10AeWYzD0W3800Z40Lf20U000Iss0G0008g008s1OWO2c301W0
+000ZE_D000GC20mD7a40EG70006000n1004N004T0kHC1c3W3UWp0c3000g000s1KXu2Y202
+m500G500We000O9E00mq10Wf2G5H5OC08WA00We000c200CZ10OE3CpS7W10CG700GM000x1
+00cV00itWOoJGM000p100oR00it0kus1PbLk1000t00WhA000dO00000TqYeP0WP_700C000
+40_@F000806oT2000LxaE1q3W0k2mT41100WNBGU0000m5N00E0004e410QG00GL0V0kpkQ0
+8m0@0ug10W33isk1k200cAd17000t@d000uUt300@@RG7i90m700W62mBuI0O00OBS9o1dXn
+them@40xC04BU2nV@GRuC0W0000010300XvoVuJQ3kvtWRLJ00804006Wl_D8yF3gBt01008
+FkbW001YWhJe5s7gnsWPXC002000006J70000X0_@d10442000008088G40000WW40GomtDO
+RM300W0Sec10000100W00W4042GHrw9qeN2RWd0001WvSDedM60008r4E60000I3rWHsJ000
+4800004W00JapGj@600W2fyV30GG0iCE3xsc000100010W008AhoWHmJ000G0000mgsJe7k4
+00000G08e3U30000s0R2ZFiX00800000Whj0UI@1000280000080yKk10O00080000100G00
+mSv64JV20G008002Cph1vtRmdl980G000040I0800WHG2202EEs00101K000f802000000XW
+20G2GX40W080GAWm00000090W0444000100405006000X00C04000GH800G00mGex6008020
+10A0005aWW0200G000W00G00W00000a20001001000W0P40XX2A00K000W0W020040GGa00A
+00I00W00013001Y09641L32910114822G005240m804021me084100GW00000W0W80854102
+800GG8HW4eKG0HWm80842W51WG20404X8200CKOGG8W20W0W0000840401000EF4W0I0000L
+810W200100G0040300010M48K00A2000000G1408000840ac8W001G000002000040000G0W
+Y0KG08010041040G205G00G00e014W21LMO02OWY00803G2AG4WHGo80G1eA08H000G202C0
+000a08G101044GG4K3Iu28JW0A8AO081200003200W0IX10W0480G2H0A0W20004G1YY0000
+05O00O0080830000X0G00W00018200I9841850eX0e@i483GWGBGO000W8G21007m0094000
+000e26W00C2G02G04208e000010G0k2a800mEt60300004000W0XWiD080W00800000Xc000
+101000a0000010m00080080W000f80000GGW0W0WG04AH000200808yXW1000WfF04020G00
+W400G000010201O00080WG88uH300800010O9R3IUq040129@R0G1WXIfD005002W0002422
+4080088088Z100G8W004200Im0G801Y0Ga00000G00088004Cv2PW00000G08W000G004WC0
+W0400Gqy60008gBN3E_tWpnC00GV001040I08Rncm3@6qm8300080000280G0W00qG06Sfl1
+0008G380b4k1l_Rmkv6Kvl104008800SpX1800000H4amR20400830WiWY1c040010G00900
+0m010DA04000010006000600001CGOw68Yr1ePv76ky10048W0001W0002000G0000020821
+00200010m00000208nav605W08qD300090X000G1004W0WLwDG0000010000801jR0GW0W3p
+D0210HVv60000120a0200G012GG0008W00000G8xL300X0000WWF00m3x6qNg4J@Rm1t9qik
+1xiR08002010G0004004WaAe1r2Q00X00000028000m42G80G060G00G0GW00W8200@gt00W
+007mP040040W0EZoRGpt9001W040898G000901T@P0000000emVcRGrx600W0W80G44X0WDE
+Dex_4EPEX@vJ0G20Gb_6W0050200GPc6S2h18G8C00G0Q60a000020gG01G80006H000210O
+00003W2G22e0060600mW0823WWGWO42G2880G0024O001KW00O011LG0O000G10G00a2Yan0
+GQ9G444I000414W0e7G30W8308008MT68000G40040104W0480100G0800100Hf822M00000
+4BW00YW002010010G4004000W071AW0mG10m4AOeYAO200IY04c51000c900K00G800W0W10
+820801W8WY100WO0410A00W02aW0Y0802GKGW1L00n04G200WK0H800208040G00000XM001
+00W4G00WXyC00O1400600W4000O0000G0400090240X00810G@zR0WWGK000GY0G01W400Gi
+O50201491000I0mY0000G008a1WK00001WG085200808YKI10Wa20D850G8000W8a204eW2W
+G0f0W0A1W0aY000900H4f002I18JaYK2G0G100I1044G2G0WKG830W00I9008YK002000uf9
+L69aCX1080000KI1020060050K20G009a2000100G0e00802G7E6WW4a20A0440HAI1H2Y4W
+08520G900WPIP09G8108bKW0X8010W810S0W0G4G400o000014GG02408G2WKm2800040800
+0G0G0288020O28000H090412XC442088W00nC00G120IaK040H018010G414G00010W00000
+A48j_R0023W2lCGO0000000GG808IGG000Y200010840800AW004000W0080002Ca0W02182
+43W08000202K004aGYX4H4G01062A28IGCO0GC0O080A04420Q020m8G00qGGW03H222G30D
+0Z800C08WO024W82G5G100Y0Xm0600O0a2YWO0Y10GC0K1004000O4e004802000D0000020
+00B5Q0WN@D0E0102800C010000W00401344PNR30004W408090008860004i00Cm1030W022
+00440H44100O041M092W0W004000804GHC0004I1000000W80020G00004H40G0010000400
+20G0090Gby60000HW04GWI6002WerV340GHyLS2000akts000lyRVd0000avzD0000008080
+00008I0UTn00008x1m00Y0WVzD0C0L120001m008W100X00001G280GlB8000c204W0Gozs0
+000O_X_1GG8aI5008yR3Gz00000T0zlG000l5080100020W0qx40A0ulGlJ800On204W000m
+10G0oE107WaN000Gb1r010G0A00qHl10WUG0m0iB4OB00WWkK0G0000060000P8001GP0RF0
+000w5000100W000Gqx2108L030_B0G020104000eV1040uUvV0OWV0000W70Wy014uA30mL6
+0G11000000RK30000UjWYzD8BE30u100WL3m03i20u7G000W2qT0jQ00wH4000000_300000
+mW7mLpIt0OK50AhC0GiHwJVp0000eg@10lXwPG1000006U0s100S010ugha@V2g200X900i5
+l100W2K020000_o30_800WC700f603nTGK0e0C000g000S200O_100K1mbP7OC048HS38A00
+Wj30WR7W1tEG70S06nmP0000K30WuEWAHCmU0u08000x100C7000UG000oP00080C8d1G0W2
+u200a500WO000n400oF02CHWi0808000a1008000G610Wz601tE030OWE000C000_100Sp10
+uc3mmS7e30X4O00CM00kQ00y@L00008_80m7H0WFY00e10000000u80OJ14b82O5h0y3H000
+60W0K000oWhY00ND00_xhxhDOkR3m800yuF3WR10oxU33800@U@GA068W2A0WL1007820AO0
+0K144100u_h08iDC_klYDfVOxR6o5FXelD0000cE10W1mn85y74402KAV2G0a02cZXUzD080
+1mq_6aWK20020peDX7fC0008880010202m800EgrWuiJ0010uJ@60W01usD3oWp000OMvad0
+00201X00000W2zt00WG0z4R0004WxjC8KW4sepWwcIG024Otv9qOl1Bcpmf_6KjU200500W0
+0000483z4QHFXPJJuGx46tt0ms80FHnmSxFywk10006s_tWo_J0W400240WWstOSV3000GKk
+U2000WoyE10020vgRGa264n7302000005Dsl1pBO0000A6300pld00mWW3uCO0T34040KZm3
+LcN18G80XG20@sd09A4400088420YOt0G91g01100100090W060e4880YvtD00GG0504G102
+001000C00Kkd1002XZaF1eW002G10004000Wl2G04000G0OW000000mY00001WAJU3084024
+004000nmU680040e000205mPvD000W8800uMzJW00GKEz90mWG0W0G12AG21W1428G001050
+1YAG5m02aW0302W44e20H4H3822811W0400804H00g900G01Ke40400KG30002aG42810aY3
+qWO@D0GN000G204G4W00X2oPm041060200W424GG8G22GG0Y2C200G0042G400000105100W
+Y0aWUgD0044W809A000B0W0f409G01841600X08COYG080gO0C0G4I4000908W02W01CeAW2
+420Ch00e0L0H05W86W4240Y4O08001X80GY20m0002e2eW00404002G0300200K00OG1100m
+0huR0j110S0G0K844I9o000W4WW400G4K008Y2CKH0G082I9200X0W0064G0W1G0o0200822
+1W0000041K00414540000u000KZ0a1410K4410W0unV3_on00H00W16O8K00200006G0000X
+1W0G4JQR0010GG00WG02000140W0G080000084121508W0FUpWf_J00GgHc@6020802000K8
+0G040G00202Mq00004FSRGlp90W014020mo_6Ksi1e100McqWpmD8HE3wqt000G400200040
+0201OvR3spo00100000A000G04808CS60000002OY10010002Ga18f_d0OU7WU_D0008IDS9
+i@l1vWd0G01W8ECecbAIcEXi@JO7V3_Nn0000W2000gRr00000VORGzZ6Kul102000820q_l
+10W42010W0006vcq4010020029tJ3k_@10800ReRmtu6iZY1C00040G00I00uQT3gpEXorD0
+W000W000G200BhR0Z00WfuI0W2Gm2a64vb1W000G800ymY1XoPm1990004OVT308W0ClU200
+2epeHY_HbO_T30100W0H80000sht9aSQ50W00A0sWrtD8RU300oWaWU2zkP04010Z40G0010
+0801C1V2G2G000001800G00000W0XjxD0SK1mVz9000WuCC360yX2sD0000qS4CKf03rjA10
+0280W80088e0800W0G04020W01000002002O0060Y0W0000388G20201I00000YG0UOl10GG
+244Z0I2ce10mG00010W0040200000mZ200OXK3sht0400040G0003008P0e_z40200120123
+004YWX08100HbomA66aW33W001W00Ge200C9D3G8WH0022LWG02418A00100808wyp01CY20
+S68021X2080K400G5z68eGa00AW08200043Zn@a000kp3QP09004G00WWBI8sV300G102042
+0000O0001044000WlOFX9DI0G00101084004000f00a90000WKPa00YeHI952K0100WK400d
+0G0W8b010G0G0Ka2400000GAJG4321GEu6K4k1000f80W41C02WK00082002000H@R00U000
+040000G0ba00I08WKG108W000850W41400HIX80W04485e0020010a20000G0001040Y002W
+2WnGO0K00mEr6qvl12X8005KW08Y00O002G000620K0HWG0008G0GWX8GGK4j6000010I880
+000WG8aprR0084000I0Q00W102W00002241IBw6000Wno00mIF601008NS304441402X0G00
+009108ge04400We42200fZ03021000D1yqt7c2o00000825088G000I02400Z00q2G6m0000
+404G000q024C0WW0000w00W000C00A00600G000010a7ADW1G000000010A000W101000G00
+088mhg60005zND3o1E10001804001x86fa180080W0000280GC00m0Y0W0180000G001CeB3
+0000O0040080100GW4200401089200X001008040020G0W1lDekg740000200irO3Mls0000
+4A000cen00200H5b00K6XquD00H0HiC9iN537pa0008000W020G0YWaXXPCe2O3084000010
+2q700440k0G400M0020HW_G008Ww2wFW000KBbvR000WU0010006w500000S0OyS38085000
+00BqF00008h000@IP00A000003000myA804Ek10040C0000s00G0Wt2w7W0W0_BhUR0000M5
+0G00l5gz0000K70eYh40G0G94G000G0aG00WuqD0090000W104vXE8w3Tm@7wW7Um1pCZe1u
+VGV8000000eWR004He_P6WQ6003K0000m0c00Ws_DmT00810CG1y7000AuYyt00Y9000sFgY
+_10SJ1RZR005KWPeJ00008410G520WGC00000FyJT5ZQR0000K08s10Gi3eZv7OEG7WEW2Wv
+010Y2000x00us1O0K1m004GLiq60000b000a2e200C60E000006000n000oA008k0K180K10
+1o6t0o200W7Q027t00GC1I203W000G500Wv000pF00cR068c0C0W18000m000OF00mF60WC4
+030s0r00W000WO0000000c80000040GW4SDWe00eC00G1600MDW2K000000L5804000K5000
+6W00Z8m7H80cH0000003y10UY80Sd80000GN86PZV3CAJ00m60qZ8G44Hu3H80000G000W22
+000ar00GRtO000GCdX400030m1285G321@1H2001ld0000lSmh8pjA2apZ4OD0000000Se_u
+aeIH3AvnZjNV0100mIs6G0408aQ600000050Ofw729YXhPDuSC3AE73G_D00040cZXX2pD00
+00Hqr6K1W1ZvXHuw6000a00e0GzTOC2i1F58H7VUqwT2000GaD00iC53TjZnrHU4qt6TiRmQ
+VFiwU20102sBEX43m00G7w2yCC5W1r8bGBz6yjR2Fpl1C0WmAzD00CG0C600000480410020
+0K22008e80100HK00djR0G0001400002048000G00gPV3400001K000A0GkM900W0042200L
+200000WS24EmF100010800xaFX9cD00840Y0404G00pIOmVl90082uDt70e04e08020208eG
+104K152Ha0WA1CW4W1020280402GGW0WeW04Q0C1GY00GW401e0030Y0e8880G04W6800GK1
+400G000I0W04082048888usM3sAp0K1020G00G1G012W00ma000W0A0G0WxrP020602001BL
+R09W08000G800XG0040006000GmMD6W00440000006003140W00W1GGOW06X004WgA2620GD
+00PDWA0304W0G01h24G00I80C4aOW4128021Y0A0400Y84a24W800K0K008603008m00404G
+0G00809020W8001000m0W40000Z4PsO00100G004g0W00540800G004100025m0G0G8W1001
+0A01O28G0W1041040048000m00000042X000080844095O0G0G03mWCW1400C4G000000248
+20804000000E6nt000K0L@OmG_6032W8@V3W0W00001G001G_P6Spj120200050yWc1Wj20G
+0C1qYc1xzR0W00WCmO000WmkbC0m00Pf@4Qvw1W20000000G410000XC04nQ@6004YepD3W0
+4001004Y41W414000G000200008800000W040G6e2pCueI3w_w1000SE600IrKYGmDezI3UB
+o09W00ngPGXdF00G88Lk400040400100G000K0001004880G40I008xOp48202qvl12600_@
+t00A00000A10000G0G8QI600C8qej100000GSiVKc4G40W0120i6W101GG01408000g6T38Y
+00K_l1hunmBu6028W000084004G20A20W0wWtWkUDu5U3G0000100ejb404088000P@R6G08
+00002OQQ3QOt010G003000G38030Y0008nPdFSRE30WH0000W0C800401mGS64Jf4XrR0040
+004014HG20G40W4048nT3WW000020Csz40080C9Y100C8_CtWKKJ00204W01WrCPunT3ii80
+0800eXg700000W0044000Y000G000008W0000W00GOIJ6cvaXzLPG40oA6f90iM140aWX080
+22110a0W80204041W0Y021W80CH40WPhU301110000120A201C40048080a080G020W00008
+G062W010K00W00W000887040209081000JiR08000000800HWG8W002W024W040088400g00
+6Q00gG0H4000008O00W2TCuzU300080O000601000GK00a8A10W40f008X01A040Y2G88M4A
+6004W01G8G000He00200G0005220A480a8400L00240WO4000W0018000104G2000480G100
+4002180W00804000aCL880e000W4rvR000e0000600WW000W01G1002008848G9080H0YQVq
+0G100Tdd000101008rTP000W400502004oatWkFDOAK300C0GA0011O10040000G0NmP001G
+gnyDWK80W0000G1L0000GaW00ish108000G22GW900f000000KQ1G0T2O0WK20GsWK4W0801
+000A0040GG8GaA2084G8GAfs4m04W08000H850000W800I1G1b6CGl10WG0ont0m0G001I08
+I80W8G21000900108200000G0G09U6d100B0UAr000I0WCH000HWqMX10042tgs01000W200
+020Y00G011080000000HxPwR000X04000044G00WYEBh1W00f02O0W18048W00Hr42G1204G
+0005HW000Cb9020G0GaqzDuM030004Y8G0X00480G08806428S00GG0080040800G400080C
+00G02cr000018W00H000048Y244400010288H02000104000u0G002400000E08W100W30O0
+2c10000u@0WdMI00G000C8200000a02820008801w8202WG245000W0mGm0e10201040100m
+004GXu0004Xy0ixl1h5R00O040000060080I0000W4428mBH900000200uF@600020G022W8
+820W0040H100X0GG0IQvV300040YO05WG0W20001108PhO0000Ck200Y000sLnWlnDuoS30G
+00SQk10WW080080W02unE3ozD10W00pDdW804W9DD00041YEW00m03TBR0000IHW00001gT0
+50W070uXR300rW000000q70000msfC00000O10000G882002vD1000HE0000W3000Wv20X00
+40WXuQC002GcJ0e00z2iQ00W0UB00002101000e@00C0xUX_BG08Wx50020W010000K30000
+M10G10000u8kP3000C900004EC008000K01MD00yH40u010qC008L00W1wDWW7W00kQNJ0e_
+q70e10W1Q50L10gkg0g2WegJ00Lh200000uV0Lhd031000N300C@CwEzX8sDm02005G0000G
+4Y0m2K0WE0000000wGoPCCVl10OcP006OaKj1XXR0G700oA060g0C0W0K100K1000A00GK30
+W86WBWK04080L000O0000400GK100K1e2W1OC088BE3G400GK100W0e3P50108060008000o
+00002p000020026044P0T0m1GaBk1000cG00sp04id1O003u200a500mU00Wv700@CWEcRmA
+v6y8V24P008g0G0W0m001e200KG30O000G01G1g0W94W0H4101WV0kvJ0yx30000u1YBQAz4
+0000Qr00WP00000W8C5Wg010000Wh200tbA0G0000C0i@@HeP0000000HJ000000WlR50000
+5GmVz90GC10W70WP00WWzIGWH084H0GZ0G400W2K000qCk4020L9m3FKBz67Y72000Xurg0C
+V3mLuUKDk1dwRm@SLCPE6VYp00K0W7oJeKd42C@X@@DeLJ3MVw1Y100ddpGfvIKPU2NfR040
+0WF@D0010m4k60W00OHO30K00KkE6@ASIal6K1@300Cgl4GbVjCe0UC000mKsE3xwomgQ6yR
+S2NppG7VFir43J@d0uJ3WHXPe6U90001W000OXd4UcFX4vJ0804m7w6qQi10204084W2W000
+020W8000IW0GO4000108cyi1G00410400422eQP3W08801000204GOz90G80000418G0WetD
+uwU3GFW8qPV2peRGJE64Xi10008W28G8202000mGrO60010OEO3G0000600eZT300W000040
+0m0001040447AG020200100m0n421060GG901A02W00H4W08W000018W204000408WW400q0
+h1009001018G000C0GG@x64sU2800000e_SKV2000001WWW0W00000409222044020eout00
+444VMd020aW8dD0Y0000YW0W4a020a100280208000C0G000HmJW21X010W400k068m40M41
+884O1022008200eG0G4W0A01Q010m0W0G2JRs0m400u00G0W04000mPWF308W0DR63WMD0Mp
+t01000000H04W8021000G0a00A0G82000400X20000105W0meY6000KuID30W0400e0091G1
+2Ha00E048W0WG00m0W90400GG8t90W0GW0000C040000620W00420aFT2NyRGeO6SHD3m000
+0008yyd1r@R00004W0O0zH@000WWmzD000208000W024G00400080008040GGlN6000WOdP9
+Yis00004G08W0820yIl188200048000010G0080W0G000dnP0100WTva0080000Ge1tC8@@4
+00W0@0D60400U_s0W00200Wa_aSZSjDOcx40W000Y000W00010028204FZ@00G100G000080
+040W4Yh100GWgzs0000GbZRmGY6qvV2YGO0crs300400298MhS30040ZeP0m00WUQD020002
+10aoAC0000004WWctDOzy4gqcXyiVe7J9000Gbfk47jamhDs0W01QWT36PtWEIVuBI3g0DX9
+tV01040804WAWJunU3000tksv9@VkHfy60040000300G000YW0c1GG020000Y01000W80W48
+8013uR0004241000e000804yal15hp0G00430800a2X8000SVP200000Um0iIl4000agit0W
+040000004200090g22C00000eG18kR3050004060D000M0WH80IC00041mG00001iBT30044
+0100GW04Oq_600001102o6A90G000040028200004X@PmIZ9ybh1jr81021Wx@D0G010H02e
+mLCuf0CIUmWg7CWK0q0pG000854GeKG0WK200Y02408L8y643d15XR00W2WO_DucV3050X00
+800K00m8060W408q@4000tDwF38H00G00G000W21cH00004I940W02J8bK002bWu8rD00098
+002080850KG10008018000K004W200100G0100a10824W00P0000010462G004000KBcQ00G
+W800200012FdNYhGO0yB3mD_90004CIy400WG00Z01608A0144W0We800YIPU300080041cu
+t00400018Fm8110421eiN3m10Wm02000002011601000040G080000CG4G002000082YdUd0
+000aSKIux@4000Gg700O@V30440C@F30W00WG0Y30080e880000040C0x@B1040cd@D00400
+0400200000X00001800W4GGAGE@9W010uW430WW00Y000090Iz@9yq@3PRRGYdF008CRwMCQ
+UqWuEDeYg7AfK2010GpGQ00WaU3GG8OV50_Ur00Hs5080Yy2r3W000a20000W0WSmD000q28
+300008317d00000W20a2004I1mW6XP0uu0GoxCKzc1O0s2008eh50400X0W100WOuCOWR9on
+rW2qJ00K30000G2mFWMD00T000000gwqU300W22000e7E30mC00WP_@r@40ug1S0i4800000
+0NbLT2000WL700KTD600W1YLtWKiDe9yAuW100000mZ80GMv9000Ct10GE3uIK3i60CG70Yy
+s00Os10041W101G4060400We000c2008Y008Y08W92W8E_40004f004G0O0mwg6qul100adl
+od1300000200W8000Y900cV04it0P1W1nmbmbvIicg1002J900000g00000000udTxDmV020
+0000780W7pRWD50WK_D00D000080H1OXBAO000GbnkPOMX7Uyt0WxD0LknJC@60WD50000WV
+U0mqeV8wD62KnWmmzeFS90100000W1M00G2t6aTx3zLlnx_6isg1Pbpmm@6Kql1Fzd00W00C
+800000000015Lk1TbR01W0XOpbO_yA00qYKyl12010I5F1G80008004120yYU200080HW00G
+04ezV3wzbXT@DuuV3sptWiEI89yDEM2ZTsVO5V3Yuo010K0@cOmu_9800Gu1yAAttWCwmeJz
+4Eat00800000800310000000GY800WH3I0010820000020Na72000Ij000l_@G0s60088ewO
+60XW0DAc1XX@000802000xqRGVu600120G0008400GH00RyP0A0000000GW8844810100M00
+040021000WY000IwpWotDG00Y00H000008m0202lt000WW400000a3YW00eHV30040q9W104
+20oIt000H0W1000000G000ER@40I00S8l18010G00W80W1H8042G0011001004G8W0W0WW00
+0058Y021a21m8W02000080W0I00W2YAC054000G000K1WEZb1001GK2040004uQ@4400504G
+0uAT3MvF1GpC02000W001AW028mU340002300WGm0m@D60O900W00XXO0G4002G40040600G
+0HuxK340420Y00210W00GI90004O008000GG088W40000a2008uK0144400000A4000800WG
+LgG2B4800442008e0H0000804000eY0010002W000W8zV30G0G0G0WO1@4GW000000th0G00
+0W0024100001W400008000J80G80m000010010eW8400100K1M08W9uD01W02W40K00G0000
+10o0WWW0Z10000Ee200W2100400WG1000G080010g02W000m000WW00S0k1A008W008000W0
+0GmGxs601080200IqtC0m200100a800000000012kzt000Be8010c@pW4BCOKV30040004me
+8M30000W80W080000e10080Gv@d01G000008000Gm20W800G008G0001aIxJOuR3G0H00e00
+eT@488000C04v9x40200ajl1B@x1OQ5000000We000A0000YPoV341W80000ejD3AhtWN6P0
+900Gg@Fa@l1DMOGYT90100040H80W020A2Wp@RmyJ9O000PPM300600C008ooAY@F100GiY1
+00skBX0bDG0aG40G00200GG60002400GH000YWW041WWBPezO3kWp0W08041000e00000G02
+40muRF000GyaZ40044000Y0001uHI68080OH5I00ORM_T24000W0022400400W00X0mnvI8x
+pAW00002010000KPT64oU20Y0000W4KUW14100prmWS7Iehz4sStWk7C8pT3cMmWYLh0WiWm
+6660010WW0002H0WqDJ00002450aGHh060WJeCCyUl10000@at04000000a0uWH0eeA04305
+H9CYv9C0400C010G0ACW8W2000m020K000X0aW14W6rJ8lqA000WY6080610040001mG4086
+9eY01W44cn010W000000L42089Iyt04W80R_R0008400W20012w6q0004000801G0G0W0002
+420042WCTCu0V300W80a0G0200000440010WWW001810W0G2016820000030W000000XiZE3
+FsA10Wn710000808WG4Y080201000W00Go00G82AH44mC300W0400X8G40H4G0jco00010a2
+00Y080010G020W04041000A00102804086IDLW140I50G09GAf8W41002W2000008a8000H2
+00GaYK0ea0040I100W4008Y00005K0800rHl9ajh40lD06eb12000000A00K0000Weqs4050
+Xqd33A200GaK2008o000050G0G0408aAY4014YGAfWG21000010AW10820G00H00B00180X4
+402eNbJ0080010141G0f000G0A00awl1Nqw1000K220Ojnz0e00004800G000080SFj1ro91
+G01002800002O81001Z01O49A0104W40Hm20e80008W003G00F04m80H00W8m70020210001
+000041XUsC000HW04111000fzR0H0042Y00b4Z10Wr@UzD0000410102GW0000400GKW0000
+109mgR900G08gm7cyn020000G1HWOG0000800f8081W000E008IXGW000218Y400Gay60H00
+00B1mm@6001K10000440HG104TqPmZv6acy60J10Y2FXVmD008H000G0HS40LGnGSoF00928
+CP6_AE100G04Ww000W0m10Y00020G002q7X060vL0900aaI20G0wL0200mNeM00000L0WOuI
+uaOC000GJ300uXB60G42006O0a1000GbX5yD8ME3m800C1C30Wi1000Gu5O30000eM000402
+00001G@1080oV10HVe3Y_F0ylgKfgg00ym3wg0e9E30egP0W@p3000WP01mwqDmg108150Wr
+f310GFmg@6000o0000W3_X10UJ10uH00WAW0Wio2000W2k1WLhb00@1000Wm70C000_uErC0
+00050YT004P0sPs1a1K3e380OD000v000YA000606Cg0C0m0g43d1000J900WI0g821O0GWV
+U0G31OjL3W0W1010206000L0002200Og008O0OWG0K100mq3yC0004n000W0W000C600mG00
+0H400pC02cV0C0uW7nDWv508L00000G1MD000G0qW00dn40Y800SJ20egE0W7X000e2000WN
+D00Wg00uX70Sd8SpZ84kM5fPmWgc1G0000000R4O0vJV0wM40MZQ0y000GW00m3000Y0afcY
+3sBF0kZ80w80BX@0F000c10WMD00jQ00umC0000KbP0q6p000ZXxHeup00W0UXSFIWBXCnVe
+rR340G00W00K040G3tIKrl17ad00G008000ZadGal6iKk4r_dmZ@6004200000eW2WC7nejV
+3Mvt0e000rWRGXs9G004O2@4Ajt010013AeICiUKw_3q301_St30200nOQG9wCauE3d7bmyd
+LqzU20W00QMdXfmJeUT6gCv100W0200000O8t_79j@RGUyC0W00G0100100008004W00G000
+iMj100W00420000010W080G088C0000G0oUD1W040DoQGLV60GG00W000G00aBzD00500000
+010200100g3c1mi0020800G0Wq9k100800G001010uWQ3UQsWezDuOy4G08myci10G10wDs0
+021W000a000402WG001G00A010K000f00420100080W10WW01050028W10C0080G0G000212
+08GaI000eGAQEp0HGn4A1180010GGA0G00IW0000K8050CW088WG000011K00Y00810440W0
+WGC001e800I00mGn60G004203001014WH000G0010G00684150000W0460W04020O4000c90
+W1KW8840I00WcH4200020XGGW24004002K0G50HW0wso0m0W00G04C0Ga001a20400W0A00C
+IeG02WKIK000200H00aW2f220q0000a000W0aG00004Y102400G8204000m62f02100C0G02
+01008000G8403yig102WW0004048020240G40WeeDW0X0W0004mWG8408W0H031a000N8020
+GG6u0G8214CC14W8W08ObG300G80000G020000H00G80LFcmRzFKng10W00G00G0002000W2
+480WN@DG00GmPo60w4100G00010200840CG008W00001eUu40A002000umH300800402008G
+Gg@6C8k1R0QmKn600X0uLV300H00G21WP208010000I0xLQGVb6W4000W08000G088G00000
+0GWG0200uZV60200yCj1WG40A@t0000eM400Mfz120000000dqsWj@JeP03sxdXncPG401m@
+@600W820400040nUQb00280GY000Wf004G0Uo8142000844JAFXyXIOmP3_@t0048_VBc020
+02H000lBO0000028Y8z_dGjw9iTk1004008I0CBk40900G14000W00W00Hj@601418q@4008
+002128bK30400024ouNE3008012GGQDU30820000G8XN3008Kazl1WpI0pzb1200G00400G0
+4880000W4mafFKR_3vpPG9z94Sl10041Iyt00010080nIWFX9tJ080000X0ZclIm000mTb6C
+@l10WP0404K0000AUT300G00000Xs00mgvLqml1pkp02000O00000I0sgr00X001TdW00000
+0OYZsR0G80000IK060YG2G0HWf4HGW0004430W0200G000G0B0OY10K11IW28K0m0G4GG0L0
+5000c1440maw600G0180G00400084X0200W802080000mZnHz604048dV30010002G00800a
+020100001A0sqF100OH08G0080082410081Oyy60000000e8000008040a00G18021GZ2204
+0aY0WMmDOYU3080001K2aW50X08W2800WAG204104010O0WG00A080G04X000800G4302c0W
+0L3G0W80WY0Z8c08030400Gz@R000W8200W0G8I00880OG40Ye2oU5C8W20OHV3W80000804
+00584W0W0gJ00001K1098318gGg182000W4a2000f40H0I1W2K20005041G0I00I10040008
+WK400804820000001G4e000G000WI0001204Sl10041_hnWqHJWg2010I000aW000006hqWp
+2Du4V3sTs00000000f0G2G2000X0YW85mK42850K022Yod1000K4W0800X0iul1BYO010140
+001G000840G000W28042G0W8W0I041G04080CLH24X800200A00W288000AW82020000C108
+0Saj100C4cbt00020L_RG4uC0400uVz400800WG0202020Y001G480X00a440K4F3820G00W
+Y000S04a10010800800H001000001H602000GC0814W00HGG00021000000A002210400040
+s@t000e1rzOm4x6K@F3WcA0019081G0q000GQ@6W01010000m48003000008O000y@l1400G
+0G2X30GA0Y0G4060WKIOujV3a0G8000K0G00W0W040208lEQ000020024BhR0008100801ZO
+002C0W01G8020e000S@a100W04G0W8204Ga28X88I10G400008441H0000MD00010002W00b
+hd0002W4YhOYS3wjtWPbVeA73Yco0q70002WN2wE110400q1O50000IK085W4W000Y1o000G
+0WH00WmyD0P20000O445000007Q@F1X0020W1000W2Xe18860602000008I00046S0W1zJ00
+0010e_0402gS0016Po0Kt0000G7ASd1000P0GA0Gm800mD50WRA000K000020O008W00yZY1
+E000Ijs00280K1G3W904X80000G4O2x60m@_300iA0@_E0wwB6000KGZ00000Wk_2801000E
+F000000WU1q_l1QdV0KV10w000Kr10eSG1WuoCu1W3_tEXlzbWv00000uA30800000000Yn0
+0CZ1KP63Y202O600G400W8000Y800WP048p0O0G0nkb0130042WAaHWW0G1G000m000G400G
+010WW2G400WA0800000o00040000I6000HC00YG080G0G0W0W0WMsD00YA004L0O000m0W0g
+QF1cV004T0COc1O0W1m000W100Gq4PJG00002K100W000We10O600W02m0060500WtgC0030
+e7H0GP00HU41D01G00001G3000@1yV00u1guV000GpzQY10i3000000W@@30000zL5Wz@J0m
+C3mm@I0060K600e30u700mFx7Rm@@6000Lr100W1UO6I10000Uz1uN0Cul108h80001ONP10
+000eL10W2ov9zx700G0000WNA00Gn@CqfF6DxxnI@LSvF30020o0lYHoh0800mhz98000000
+YrPvC00028w_4spF10400t0dm@@9CCU2z5eo6XUSLu6W700sXFaY2a8j1I6DdXhwK1040000
+4WqzJ00800000Iv200tlpGGM64pl1Vtpm1O6a5F3RmPGkwL080014400000G800e5rp00006
+00228W2e0W0G02000085o@@6WG48G0000020gtaC0A00a28HXT_D0K01000BBG008J2O0W0I
+00400028H1400W0082X0005500000824G00010W4000446a88080C0eW2K5EBr02400040G0
+048W6000Ga8000W202CG290002G020W20100W080014A1A80048008u031W108WWWG0YG900
+Y10211204YWg42W01001I00A0WG0W00W0G4We00W2202001W80G84811W0000m000g0000Wb
+48W0084501200002400200X20004H0G0G0HG02040Y310a00G1Wa010H0040G280000010eG
+K80000024010jgW142KG4X01_3k1@sP0820000X0eA000000100018204f014W0400KG10LX
+G80X0mG411G004001H80000W40040004W850200040G62K0040W00G11000Y_1C0W0340004
+000WG102fr73001G10802G0e00005W0180Xg104J008W508080G088n01m60004G90901200
+O0000021W50G00W9400PGG15W000GW020G048800001130000058008000G1104000048G1Q
+8vpV30G800WI20040022018m0000X8002080400G384X4000W000X048020000950G1000WO
+11G0013G080000Wg180G008W84001u0001800W1808@V30GCC0d000220WG0000W00@AP004
+0502W080000q0022208lo4ExtWedI00G0202100G000W20w_t084000020W024rRl1008002
+0O0WW00W01000WewcC0aG0000000i7104000018I020efC6Azt00W002aZ10441SUN20028G
+180SMg1BYR0000G0W880100W050qgl1TuRmSw6000G0040GNz60W404W94f00aW7SD001400
+8080000200CG101W2000220W0G8024G0G200010009000H1210088p0011cR000W000G66a0
+YH000W1W00400901G00040W00200040091080GC00020G0048e0029105GW00G0mt_604000
+410300108204j9R01G40308004000000YG000G04002H808W0000000m0G000G41002Y0011
+000W4W00200220W00080X0081000224W2G8X424OvR300KS000C0p000081260IGxmR06010
+S814WG06042100400G0G0m0320000o1004100W04b00W0GVL6i9Z100a04102WC00i6U3_yA
+X3uD0010W014004128008W44GG0W422e0W40W2000Gr2R02G000W00W00GW00000002W1004
+000080WW0000002G00000W100W108G800W0002H8000000O0oyz900W00W000W0Y08000G01
+0W0m18X00000W0KG01W0G6044000G000W8uEU3WG0000W002000H1000GW8805WG0840480W
+0380W100C142644WWC910m2A10084Gu800X0Y0X2G40A2e2Y0WmW02Wd041204WO018XWG01
+49XeQ00g08G0oeY000OKgE4YBC00I14817W2Z200GY000411W2Oe05GG3e066C1K42QufCwW
+20G5mW40C204g000OW0a81G090W0Y0IH2000800W808G0HW84G0W401Xe00b000WHqC01100
+10G20C0802Y008G0A0H013JGW08k4038Y6A200Y01I41WG0280AG600mL06iW10I00X75A0e
+mW20AW4aWO00f648e8g00G000GM40010YCi48Ia000A0O4c84mSLe8419A02A02W20G1022X
+e00000WY19G1G0g2mOW8eYI1HKI4H5i05CO1284020G02000404cG0006BD28XH0490f00W0
+0008YKG208W40G152W000IXt000WK0002090200000X400eG4008G08G00008GI414WG041X
+2GgQ2DWK080pWC0I952I0I0100002jWY2Y00C0002G4021008b08Y0o050ID000020G2K081
+04002Gg8411H001YWGYG0000g4084000fa20I580IG0000208008G402W80WKGHWI90A5020
+o000000W8404b84100mGK00e07sR0001000400040ohF12W0W0100400G14GA00W52401Wpq
+D0080WGm24WO1H29Ge0000eO0K0000L0_6WGe0180041G40W0000010880000D11KW0YW18n
+sxC090G408o10A20014802900AG0006204004WH00030G00000G0GI008AGX2020Y0000H04
+W200051801GtR9Cdc100020W0W00G0W80m0080480m00060m800I410Xe020124K0CWI8O00
+0e4W0241000G240mK400GG6090A000X2G000G00Yq1G04oW05G0W88000W4044YW04Wl@D0m
+00004e060a0007G024a000010n000004164149G9W430m182000201e452010W0H00000004
+0Y21008000GG240001W00S80000K2410092WG008YW802W8f80000410XZ01288089HI0KW0
+0480281H21Ia0C200WasaG2WW0820WKGA082080b49aAWWW800W00401W0100X80L0000800
+W000810uuO3G220W8A2400a0044004000820o_q08008441G49z10H00qB000410G0100W50
+014YX0aG0000qIzu980W000C0fQ000Wo000008002000Y2W00007e@0000WU100G10A00000
+zZe048y7000C22oG008WY10000080400Ga530M0fNGl00G1m7100G08W00000rE0000g3aH4
+200GZ00080004000W_1W000w5Y28RE60R4G100Rn000Oyz6000UGL10000040IrP0GH10OcO
+ui000050W@3003S5W0WA0z7000F08og1G00000W2uL600400W8210tL6G0Gq560mzd1W0000
+0_6428822040G8180b_70S@F0uNU060p0qG00ufF0W2xoFl00Ye3G0G0Wqe80jf00wb2_tfd
+y554W000u7Y0mD10WF210NL00Gcxkf0l1@@0ug10ee09HpDGY6N0t8k0h1K1u2e4b5G8YO00
+0W100330306mSXVpW20GI1WXe4G70I0F10Oh00mE3Gbf3030A0N000T00061000xE000n500
+1306260T0e0w000s300OC00mF300J5W1tE030806000C000o2004r00Gi2mmK3W104WA00mO
+000J100Y8004H0GGO041W2I1m06LbW_301fgAL9pCcnCPKbg4KLg2OcM50000W@pkL3005qC
+2yF0060008WF08Y80Wggo3aPcCp44002WKwV00010wpl0qc2uA0100H0mB_1m0kdt0K98Wy@
+F0X001fw@200PGD0080@30W00mH00We200450001J0100_LK0Ga808000mD5Wxe@b@ZI0tK0
+0kQ00YtF1400000XRK00NP00V4002m8@64JK2LnbJi_600ulQYL6677cju8Pf0UM@t00eB0j
+e@GnSLi5N2Nz@040GX1ObeOlV6L@1000CHa@maUj0028OxT9IPuXxYCO6GU00uhT4E6vXBnM
+@LKuF3PUQGCi6Cxl10012H1200000010080W0m3lDW005mGT90G08020I0000WBYDesl48W0
+0000A0W4m000000HDG0010_Gm02W0GGW0G40200W0002010020040A0K00000e00048010m0
+200WpLC0000OBo6Kyk100040WG20001W200000G00409Y0c24G101002202000g04040000W
+00G0504X222b0Y0220a0m020000I0G80A0110CY22W0I8W08W00e210W08804X80I6e010W2
+8000000mwO0G0K8G0A8Q01010220W82G000G008400Y0GWUMDG10mY1000800080010208W0
+00104G1000040e04e0280104Oi180Y0Iat0G00008010212W0000024W8a8011104000011G
+SgW12G0H00000Y24G00082W10Y4140820G0408200G004Hf@6021qG08G04eO0100000mh10
+010000Y008004O0W4m001W000018W0G10140080O8C030OWW1001W020G13000400G0G03sO
+WW1001WG0z_R00009Y0040O040000G1041401e0001G000W002swtW@zDW0G41AuW20207DQ
+d004010WW04e00WG800140004m00G0410a02001G002ysl1WZ0WG0m4W14GK10040W00G08W
+G008IXt00080VzR005000G000010004000400W0Wmor60X04epV3G008qgi1@@@000070040
+84080080y@Q200081W0008W087u40000Lml1G4000001O402vpV30108aGW18423UEt00280
+0G0043200m0Y001W845I420000G40W808000Y00001c00WlzD00020GW04W400G0200G0000
+W0G201000028200W000400G21020W00X8H0WoODO1T380W08220WP04X9008801H084080C0
+0G1W011ma0400G404puQ00260000200040043W0800010002dN00S008m11400808Y000000
+00H10000K40008Iaul1W0001008W800OPV30804Y000008G002G00003zZO0000P0W000690
+0000300W101000G800HmO08002vr0n01000004I2000W0G280040G004482080gHt0000203
+0000G44Jj100n10002080020GGW0000GFj00840G0821e0820GG40000YW003UR0000H0520
+00000010H400I80W20Wm4f02270Q0880mu1D000000X0W8qD0000000G2440203WC000GCDU
+20400041H00000004qpy6aqa100WWMCtW_YD00GGGd06K1V20W48000WQI800000000W302G
+00028400000m0ehO30W8080000W021000001010200010WW000ykU30000Ed@3G00000W800
+002Y0KA88Y482aW04Y1030821005G83010010Y434150GK1100101W00041W01230800400W
+4X0K90000W08080G4AW00KW24000eG00G1e022000O84U64042W2K9G4H0JCHG0L01H40L4W
+40Y0804X00GWAY02001InWW0G8gm010100G1B400Caf@D0IL0Z00G0C20200441820220G0e
+00001SAeCe820WW400YOY06X8000I810G1000G64CA04H0WHa0YY0G9fG09uG8C2GCA40GXG
+10HqK8cG08204HWG6GW8003H90H84800GH04GXY8W0Q80000M@100Y81QKW0X0K440W88215
+G4YOG4423H4XG4n4p0G001GD0I0000gO0W0Aa8W0Z2800Y105a80We065100A02GW00@_P00
+210O8C025G04WKW0000G208500GAI00040G002000A1000W0W0401880GI0AfGWIAC@l1jbR
+mX@6ixl10481008I11c000985f80I8208000WOkK0000W00085p01GHKeKaYG2X1W000100W
+Y0204W8W00W8KAf09YO2W4400Gm00IW0I1aIW02G8b000Go0gK43csN20e408240008W2000
+1204mb_688YG086604W0A002080020504qq@30GJ00004W0G0W0WO8184I0028W8a28W0000
+W3380KgI10A4120483mW08W0cG4wy630Y00040200G00G010640K00400eW00A0111404b40
+4W0014001ITw120000008GCm020uW40100K030002WOG0000000C8101200q101W8000410P
+01eKKT201GW00000o4000080910GK16b0C0210W4205GGW0aXe000W4v1oG4801BGe0p0G3s
+0W1C118204YZY8K60084000EGG418a06414402uH2800000Z0008G0m008WGo0AB4482000G
+G001GY@6W01000040WIW4GG092W08WeI28X80040HmXx601H250000aYaehFI00000101WPM
+COrV3G008004801000A0888808W22WO80G000Wdl010Y8Y00H400G50004W0882uFS380440
+Wm0G010m2v60010aG0GaG3001HGW23018120800m0X000H04008004100Qkq04000eF0000W
+@C@k1JYQ0040I10108a10001n000000qR002WTZ004xtd000000G0200000ID008aQ102GWG
+0O0080zE0Y0m_B000832ztG0um@5084101Y2000qx2820vl0W20008m004W00010000wl001
+WkN8x64W0GU10XG000e0042Pt0W2GwbRla020410l410W02Uw@@82000W2008W10ei20@3G0
+0S7h4WV0GLoqIfZgbI7PJg2KrK98e0bgKZA004JcbfHrgKZiCp0oyC00G0WPG2200eY000GQ
+bsaK5000tnfPgqjmKjI3jIt2yO90iqIfq@@0OWgY600C9osmAX7MQI31cnCq0W00Lm80sX20
+SJ2y@zsxZl000Y0mPcHq@1WeFy0H@70_NLLKLLPuV0YsCp4jC100cA00CL0p8O0Z1W0K100W
+1000G000X2O0H90Ncx0C0K1S1W9m00IKCW08m000W1030306060C0E1O0KY24uD4O0Qoy3mW
+v7a5WEWB0f960N3p100meUG1mv70WpFG7dVWE0r0C0A0O0e4j7uQ0e0mSK3WnRE03mP06W00
+C000s3454T0RQ_1qHq1e3G7G7WqWEWl1p1D006GWH3O0G303W6860DG0L10HmC0100du1F0G
+0e0000WY200000m3DW04H4HOc9F0@IiiK1PcP0Ofx14181040vVPcn@g@W7yWWFu11F4F2CZ
+P4e5jmJBQXvPa1ppG0pC30c3000wWqAC0G3uE40000yy00q@0880yGGQc1WX7cXd00m3lA00
+00Lr30wGp4agg80FymCcd1FuP6pOc0mx10cXW200044225482A81XK84IGcP6W40GgPEz9mJ
+ZcXH6PXyWk700QH34GbolCuCzGExrW6xM2qc0Go1yqaWGNo72008Ko300votoN3s0G00uuy7
+6FtW6dJOb_400044MS27_R00WpF2002he@mmo9q3L2PnR0A00W0rDOvU3kxo00080r9RGzzL
+i0Z1TLSIm_C00088pk4i3j04Ki13JPGJrC00G2uiGCgUFXRyV8knD_mFXDlC8I16MdsWegD0
+00001W00G000Xjd000mRS90020G08000Kt73vlPGL0600808TV3scsWvCO8xQ3M_tWhCgOfG
+UW0G0Kul10W6GYtEXxcDu@n72odXeyJeMR3QYEXH9U8soS_Y43GyD0jM_Jj1FCQE35LM4000
+K2100DPMHSesqJG5vdRmxcFSB96pTA10WFX2JF9Q09YyKem5E1mk3mpgsauQ2dZkqzfL0000
+IF00mkEpy9h1V_RmQ89CyA67tzmZeCa7W4BjA100cv3PF9Q09_neY_Rh8A2FsVD40d00XKaJ
+Xy60400OPMFsjqWhXmeDYG000GF1x9H3ypgKbcOmmNykHs3gC8rUFIyV1tdK_h1H3WMvsyqM
+p6XKiKFEyiuj7fPiqdu60000SSS6w0mWK0e8AW404K000000W11GU0FqrU200Y0sHxXK129Q
+0F0001Y0G82G00000XeE0C0000KA0K45G21pR0S80WK0UeK_400KASSU2f2SIq0U080oXJ00
+0mu4WRxDe303mPEEb205H1uHxzOaA0FX4OGn0Xicp@f1z@PI@tftFFbg20WkcUg_VhERohJ2
+r100HVz@rbCSDx30800000010101G20GHj900O00001I204CNR2000uqD00aYj1004W02G0y
+zk108WGgiTZ10z0040OafIW04000G884G400W0W7x9X0G00000IXPR00G80800enxR000010
+G0000wYtms00006000WoeF1000GP2yGFhOy8i42080wxb10100000480000e06W0000202WV
+nJ0000208G4W0W040000090004000W002814005801000010KIk1yYN000G0140000210G01
+aJiD00000G04ahoPe4u7oOTZxZt0G00qomL4Eh1lXR0010WWHP00040000AI300lkdm8m900
+428zHycwx@e2@@fn@Rgy@bE@Ffq@FQz@YQ@Vet@3A_@Vc@ldw@tv_@ZCv700W00040G002VQ
+w10W0Wq@b0Sx3GptZ10240000010G01000G0000220y@l1f@dm_@9SRk4000Oxvd1800000W
+0000WyWE300W0cytWRqDO_G3o@FXE0IOMKFW020qhk14002c8bXkrD0008mZ0R008wynJp00
+0200K00I00000000081hSt2e53W8iJe4R340000G00uJU6W001a893TopG709qfT200010W0
+W080000001W08WwMD081G0400002eA20WW00010W000000Y00000W4W0801004190W0HHX00
+00001GG02YO04404840200b040008000ei3840J00180BHeA9WGK0000W820a0000400GG2G
+140021eonP0010q6_C01008I29020CWG00020G00GW1C00108W000040GW0000W84020C4GH
+95O008001Y8020n240WCYGaG0180242HG4W8W0CW00031WH0Gm012200WP0W0000GmX00A0m
+I4WY00m356G020001K014K0400G04G20410Y00801W0Y00W05G001adG3v9qHE3raR02680W
+0W008008O9A0100G04000G200W0000A1DC03O04085N30I02G8081D3401227ZEG842uXG00
+1G004G150b18800eY0K20H0If0W8000uoI0081140YK21bH0100G0000A80W1400Z000012G
+440u80W200W008WW000W200W00201ilR208002vG200800G80EEDXmDC00e8Hqi68000250G
+00O0000G0tSO0040extDW200XW00811400H00W4H20W00e7T30000ZSW2G4W454GG002W0GQ
+000G0200W0G010W02A00500G00GQqCX14Cu6u7c2cXrWD0005000400010PdaW01000000W0
+0G41G000G004G0Gh060G0W00000H00002G0Y04101Q000420181000W00C00G020oam0005U
+08208GWGi8W1002040WG0W1804411O00000008200APD1100WDaI28204X0028000W0004Vg
+1000GUqt00400208600G91004012X008W00G1200G000H00080W00G00090GG0220000m028
+00041802G0001TC00G640800G8A0m080mQjCqpV20200wgr00W00f0a0008WqQJ0100mYA60
+W0000050800080600804W8004eV24100W00102Y00J00000I810000230G0180002020GKH@
+601W000G208G00800006W000W4H00O0000XE00G80W04nO04000I8G49v23UAsWjyPuKN30K
+0WyvQ8GW00G420Y040000W8100WY@DGIe000040000I00000G2f0042Pf13084800GmuI23W
+00IG202000800H40402000W1A@r0000aoa000C080WG013000HGG4G02000I0010680GW000
+G00G4WWCI0040W000WabJ8AO3040Gi7C3002PC3Wo88544X0W0AAA000m000WW0013822002
+0184G024485663GGX4K181G2G5W1W4W9Ge280K40GY000cWO01SW4GAK80E00aWa10002G00
+Oc4000uUQA30W0AIG2GX00e4SY00H4WQ00G2Z0GY0ZGX1IG100G4W000W200005100W00084
+00W0OjO30004y5Z10080G0000020e1030420O00e04150008WCOC02G000W1001A4801P8C2
+WW4a0WG56YWGG0HHX0WI424C01021G02OW8KYW120Q00G2E0G450m12G40mX2G5H5002000G
+zB0WYvG1K8n4YGd0040KL0W804HG80280W04G00H0020G0R1d000G0H40G9Bd0000afAIOnN
+68b0001G210I108C0AY8bK08i200020084281q4f0G400PHaIgX0WWGhGf40Im0XG8JAOL89
+2Y0f855n8300XK4e0020498b8QKAe0WKIXWu802X0000FJI10Y82W0GaKX8X4mW8I958W00H
+0WK00304204HA0100000fa20W0G00GA0a800000a2a0W000GAI1G0rQdmms6KOi1000GWGf5
+10e008n18mIW8W0I080K000880G600J002H8Y8XW0801muW118042YGW4G410H08449044G0
+0W02We0104674200WG80094e02801W410K000Gc140K00001002K0W81928W00HJ02G1Y922
+0G050WW00a30002G08A000K0142000G10G410H10Y014007000AGkGc1W020bWRW0000e598
+81K0q0000GC08ST3000m920G000G00010W003W0E0008000yG204W00O0808000S00161400
+01GW0GW208840410G10m04c0000ov0YW0002a0M00002W008mW100WC061qW0824Ge000000
+00K140D0G020H0801e804000882020002e20G00W00801G00C040a00020I02210800m0I08
+ATYXygIGG1020W00C004BJR010002GY8vfO001WA00Y0G1410000WW0WG0021I00008K0020
+000W0008r60WGX808G01K400W4G350G00G002000Y00001Gq8200002G440W200W0148H000
+4K0D4000001K10W00408G10Y080000002080G01040G001000zEXWGG_B0G020101001e@00
+40uQXi3G000b20360TNG@1404qV102GWG0O0084zk0W1m_Bqx0221vl0018O40400f0OWN00
+0Gk2zkXWGmUB0G8201070W0eV00C2wMX_00GeaB50Y00W2WG082q70061jKGV000KmJ95W44
+00X0yK8I00080G00H00W004041H100G002100000GkgIY00WgS500y@F3W2W7Xm7HuXFY0WJ
+410@@30kQ00Sr0y@g1ulV0mL308000004100000jQ0V000_pT0yX80u65000000GKnD0c5W1
+MDWRKm1te00hILHUePY_G74zXEOcCbHLL9ZPcHqLLbepScK0Um@04jCV8QPcHqKLb7aP6@30
+LUm3H@F0YML00WvE00pT0Ncx0C0m1O000m000OE00Gq10Wv703pF8503a500mS00Wv700pF0
+3cVGM0u0@I1WXy0C85W40003cAW1EmFpTmU0u0C000x1A0C7qK0IWEWU0T05WK0IWv7eJA06
+0K0q1e0OEG1G430W86G6HCWCWQ0P050o0A04v70kQ00SJ1y700uXV00000Wh6000S3WsK000
+00@RJ1000VylR0S230ul_0mD90000W@1000004kQ00y@L0ynF0ug10m@Vm@h6WR000ND0W_8
+2000000cGB000W10tK03y@6kf01CH40wZ80qc50e7H0Gh6mD00W@z100y@l1600000000Wh0
+u@@PIjoW6xJuozAsjtWwua0000Bt1800004TmOmoS9qH79tbjHd_6Kv43G00100G80102120
+WW00Wa2wJW800W00GWZzD8iU3wlJ200yR0040400801028MW4G0B040d10G00MEpW0uUe1E9
+sYpWBwaeAD6IkoWwzUuXF68000S0m0rmdmIy90qt0e3B3k_F10G02@jPmc3mKn@3fYn02000
+80040W000e00W060044Gmb@600418yV3oYBXlvb0000FL0WG00088001W200K3d10002JMoW
+HmIeS93ULWXzvUuKE3k9q0100400080A80axK20A2W00e49000G0104W0101008Y00H400G0
+0eWG1800eG0000K000G50AIb80X2X40EXY0W0H0GGWI000Y00H0a000GyFb90O814GG0K080
+G4GK00a20015W0000Ae4G100000H10220WW04001e000F_dGvX94tl1G0W000L0y@l10010H
+004900100001a0095o0XOW10W02AI11221C0aWG150D8I205418011012K002000G11CYGG1
+fG404005WGW80H85000b240W2408G02000WG8000Gp6044G0211W5W6K14H805L082B4K061
+W60101A14YO0004182100044000W0WW00aW0082040200W04G0044000014W000010G028WW
+o3D001X003K0W23G0W0E0W0ZOW0801WC128WOWeH0O0G28WCW04A4WKJ10Ge000AYe01000G
+83W0006742e10040nWKmPY2X0IWIW805Cm8010H0WGGn000WLM41WK08Y0W0W1e1AI4G0q08
+0GymmG8Ge11Y03420H0D00622G400100K0G002202410W8000201G010002100004G0X1ADe
+DI902000G000814000041XG10000W06W200P0200000H080020008eG00W20mGW40004080N
+X608000202I060SAG3UTq000s04Y00K24092X122040X1243422000000203W1008W000010
+140020W2YCCXh6P8ZD3402801Q0uqH30G000e02fRo42Yp00010mG40XW8G20010Z0080004
+00K0G0G008810000G00Y000OWdDD00G08098000G4000WG04G080W40000Ox34004G3MQ00H
+0004WH0008GG002008100000J0W56D8TJ64000000WOXJ66vqWPHUG000GEZ6i8N2400400G
+W00280400000G2001000G00H0WOG0100G8010406G01080H084000004080000G00A0Y00WG
+uh09WWW0080041011030000001800001I000A018000CC80W2000Y04Hd10104kWnWsaCeuC
+30000100m04000W001H0005obGFbC8020OaJ3010W0002W1Y00100804X4005000800GC000
+O0W0110H2402000W100iEd15KQ00W278000000GW84G0018040110300920G02000W0G0u40
+0004W0200000WY000UCDX@JD08008G0010008G308Uja1O0003mPmed64Qa1020K01094SP2
+0m2000168000W02002001200W02W00800q3e1GKG00030aTO2WU6013428J004200m3e6qae
+1W40202080G000240004886000hcQ000084000m100_@F10G02000Y000H_@l100e05G8001
+W00004WW0W000810002G40YW8e8204821KWB4G2G2W0Y433AW8cOXI1Y0K4G451022002eW2
+430UG0087Y801G848004H4W81820Y04000lub0810mWK01YW804W14WG08700850G8YA0G0S
+W8K830c001a8W0010X800phQ0008G000G028800G000G80G0001008020G0Y800400We00W2
+W000W005401XVc0018G8W84280L4Q0W06002240ZG0G0014Y042804HG01C0KDK1WXZ10m0W
+20Wm090W0WZ0W00OK20040O0G4Y80000C_1569seW0AQY001Y2KW80880WH8W8206GWXG500
+5Gm00Cm04H0KG35WG480G73604X0G05208000G00G00028400fO80W810080OWtQJW800010
+000010W200G80000f0W2a2004HA0084000f8bI9WK00WK4a0Y281985O0GJ71YKI14785208
+5IG0040G2ag904825HAfeODM30lVI14934e082f208A069aIA0a10010f002o2004HA08R20
+h1f854IG8090K0000000Y054WC800WK2G0885000r@@60A00WP000eW20G200lQOGxa60800
+OXN30I00800000W00202000280Xe0G0KWW80211G15GY0000WK014G0K08W8G0WKD2000040
+a06C21G0I0cX9000000jI0128W10820GW01Gg01118008v000W0WX0W00G48X00YA0WW026G
+430040b4O000A4a00001400K00SLf1W2A0_@t00WG85CQ0020eWWJ080G00000e0W100f0W0
+0488G0oW6420001Y020GHW086480N00WG0010088C0ee041W1010100072080H00G8W01002
+000CJ2G0008s060W00W0810026008402O840WH140C0Wm2a04H0omn00204n4d0202030J08
+4008000000G1GW82000K002WxiO0W8000000e000QMq000G000oG49G401e80001Xa000004
+00200X0G489100940W0W0100G002IW84W10050000018404WWG80000800X00000efbW2I04
+48044AIHIFr004G048W140G00WW00W40840W0GM40xUQ0020WOqC00I00002050800G10G0W
+0000G1080102WO0W0000WIIjoWWTD0800W0024q70000AK00008542002Gl20O0iv2zEWWGG
+kB0G022101001e@40K0vIX_JoYB170W0e@00C0xh000WMoqV022XzmuCm0084wl107mEBe@6
+2C3xla5d112O0mT1M00080F40QLs00GM00000y2i00HW0K8000410G0100W51014YX000000
+0A800000y300ug1_Ps00kf05cQ00280V410kf00jQL00010qg10000uVVi3H00W941W@2000
+000k910000ytN@@d000EDV0uc40m@jo@0SLM200W2IIp0tW200000SJ10a8d1@@RWmF000y7
+000mILA0@3000020wl@c100yrN20000m@ttDh10Gq1W001G7088y53GC000m000v6O6pDG50
+S0N9m9X3u200e30PnnWz0uWe0I0Cv1GsS9a8d1s300YbpWiuI8G030004Z008618821G0050
+100OC00WH091YBGY4N0k8c0P1K1O2e4b5G8Yu800000000u300mDr6a010KWJOD000030_8Y
+4tC0W@_10L10J000_821SJ10u@F0qc@0eD50G@lnVsKW3KW0V820@tD0k9000MCK000C0059
+0tutFkH12CHC06uB0V420kg0_RJ2y@L0uZ80uD5y@F3kQ040000GBj0qTL9e3FGG7UGL_3W7
+ym1LfA1P6p0UOaug0040O8S3IoU3040000Ex_@@Xq0yeYwAYgxXsSD02000010WLQD0200W0
+1000400480000240W0I0080010GWvpP004Wm@@600H284z70FJ0040GOYtD2KdXimPeLT3oR
+oWehPu8T9ImEXBsDOgF3UPtWnkPuMz4WG004vD30000b600yZd4TWVon0La_j10W00o@s002
+00G00000A0yYj100010008W10400000440W6aD8J06ECsWOgP00mlmenF0600eZy7gPFXiuC
+8jkG00W000004YG00G10WLrD040010W00G01000110G0000C4Y00W00L0B00000AW001022W
+20002800802008G0O0We0W0G0O010020WY00a000WDp0@@t0O08I840HWWY0GfIG6W00WG2W
+K00202012gotWzxD8EV3UC4ZmmJW02H008000W400WK0K2100000400G04822S00I22g0441
+180W0I0020W008WG00W2n0400W0W2G0G0401Gi2AW22080GeGG03XIGG0QWY0304000eS0WY
+4WeXWAO0G1X80W18004080900G000080eYI5140020W00M0Q40wUqWtePuRR3QbEXVfJ0404
+80H00O414W0O0030K4Ce1W008084K0021W40G000W3Y0e0000841WG010GK92A0AWG018W04
+GW18yGJWG280GSK114M6bI04AHcX908000OA66320O40LG4X2eO2G8W0C00OcmC0000G92m0
+aee8Y00O0G002X0508mis602008PR3gssWmvJOUU6wzt00001DmRGW46012G088100g08441
+24008800X0m10Pes40022aej1000G0022yuj1r_R0A000m8D00G04010010031002a00K030
+40W01000040Z0GOAV30401yyl1XNMnR@IK0H5nBMHl66aZV200X000W0W0810805mSw90000
+Lg800000JWH18dfR0400G48W00050o1tWE@J8X2F_@d120409hRGqcI4Tk101W08200qgU20
+0000e00KbU27YQ000a000C00GO000W00Wuk5G08000000G260WWG8G0GG438002000I8WJ@D
+OFJ3W00W4KYATBG20008X400000G04W0Kul1W008000H0X0000GW0WG8000400W0C000GW40
+00yC604G8D0WWW0010G8080G0GPC@463@XSKdfWl7Ubd10W00022KwZt0G0080002Unp0022
+00014W20003GG008000IA00000_3040C08G00G00C1msz6024W01e0008800G00tScGVhg01
+000202G7hFK3l11zR0C0G0020W08OW0I0m4sd100300WW00010G0A48214GW00MG40940L82
+30G0JS100WCC2Y84KLfPe110GWOOGG20aY8G0Lma0mP01K100O040ux1300005@p6Fs@0a10
+WgKV8LV3040Wihl10084000H00600K0028020102400W0X00H040e1G0W2W2eGHG00Y84840
+04OA0W00000WBE44m40040G4S9XG0W9G8C08KG1800W0000GC0104qk10GW0sweYZzh000G0
+002008YK0008EvFXKCC000e10000905K0a80000GDag1aAXY08W0G0f000GW10a2G4f04204
+f8A00AY4aYK0OAG100000SELA449008W0a20P0X80GAI1W9I420850883G210I1042WK90bK
+1hPmMld000821G00Y0100084xtd000G040007op00000500G000G002P02Y018282H100W00
+0W424O4840AP030W0290G2110000U@1Y088E0G0JWa0W45C00282188W10W003124G10G8I0
+O5000040q020y9iAtxdm6t90060O2830403m10085O300001e000008200qWKyDW0030000G
+HO600G4W000K0G1014C2WW000WUO00801118090O0yYU3ApF1m300W0WGe000000201q0Gwn
+gCAV2F9B18W0WyzC0842GMfFatl10W0000400G0004W00002G0802000uqS00XH20WX00118
+00m0000880Iar0c0Y000K0oom00140jCh2GA0000KB0G00QOEXdmC8__400i00W00I8mM000
+3Sf0W0nYR0gF0000g3e@0202Ol4BE3Gl5000iZZ_J886E30247aGk10t5wT31W0zN08HS300
+z20W00p800GMpaKCT5N9L1004000uks100Mf_10kQ00u@DytF0u@F0CuV30B4N1m7H0W@kZ@
+@@1JC02c820ztN0wn200000000ucuqO8uwMO_1049g1ppc0100WfFC0141GMS600YB8HS3W1
+034Bk14500I4tWOnP8qC3I8tWmmD8XS3Y9t07eZvEOF0G0604Gd1BS3p0S6SlE30W02w8Z10
+00WU4100007uW00000y@Mu6O50NL0py84_@A0y@70yc208W000ers70k910yNlyF00uX00m7
+H0Wh687y7kK0cAlbOjP3wH2ZymPODfA03_0aB1CDcVoEvC000WO1E3k8FXMpJORS9IvsW5eJ
+00008Z18WgoFv55I_GFX_qVOPR9_LF10m00zfx10WsbErnuk3OwQFXplD8iR600040G408Bk
+4IohY__Iutz4cWF1m190vrPJoCRqCl1000WE6s001G00W22Ays00G0W20080G000402m0n04
+000404W000210800e0A00X00054004000000050W000400H0000004G30G0LG00K90K0a100
+050We000W00G044800G84G02804Q2dXTxPeq_7Qfs000014Q040002104002G8028e0mW0I0
+WAI5200G84W0K100000010220280W080000G08WWquw6WW80GG212WG24W4GGG20e40000eG
+0H41000WLS00200C0X0250W0G325000P09400000H4G4000W000Ad2IQO@10W1W6W000GW0W
+4G40810W0416CG1W4DG1104HG00W158008001GG24Gi0S0300001m04K010W00GCW44I0211
+74Y29001G888GLG000YeG6I80000Yp008m0510T60016WXGK000mO2Ae0000Z80c0101000m
+0WG01800082R3QcCa_vDeOV6002001000044mjq60810uS@42TpWOzJ0080mkr60080uIH60
+00GgQ004020W000fe@J8wU300001040CFV9kEaXSzhuRV9g7n04040LypmlY6SSe4010W0G0
+0q303004q90G000G00W020W40808GG22200220KJl1LwpGSTaiNo601W00080000Gepn4Q6m
+WnIO000G01000080XbjRmHc98MCW00G00018WvDCOqn40002EkcDT3foxv947A3xy91000UK
+J40G874wWp0004G001181I4SxU2x9CJ0CUiYP2@Tom0w9GW04u3V30W08_FV200Spwxt0e0W
+940e14000004G0002mVfCqWpCDa_000a0O002Y004Yud1G440G400Ecd1000362HM8GW8AG0
+0GWK0000GWWyD0078100WK2G0181320aG5G266G1424C0O08000PxRG85ma1A33n@00X000W
+8WFud020000102liRm8@90001fFT3ACsW85CmdXm1I20KW4C048G248W80280K0IG0000004
+A0P3X4000AWq0001006nEX1lD0241120GWwNPWK0420m0WXfC00G9m6_600GbcKKG4a000Y8
+L44BG40YKI104A000858O220000a20000a0CD4FlsdGZkI00048TF3008GDTB3020000K18a
+G000W00250000000J6G0G2I00Y0088H0ICq8W020C4HW0580G0010041200eioRJubC30080
+yJs3HrI23488W20A08G00G4WarV20G402ttWgOP08004W0240001LLQ00W10000aY600820G
+001W0u000700G2808000H1W2W1200gGu7kA2ZDT9H1G0H4x60e40Oeu4EQK2m0G0XpOmAkC0
+00DN000000W010W0G1400000G0010002mqjLSxx990B10W5WoYb0a500O0bX2XP000GD1807
+W200xyR008J0040G61000@@qx0221vl00180bSnD0050kNe@0402u1qz00A000003HEjqXSO
+G500000SpNu90000bdt0e@V0GFYm@00WF410Z800Ye2ERk5MY@gP0002000YWIuCOhy4GC10
+Gm0G8GE6000cx000K0O8Y1m0WinJ00mkRkuCa3U2XZRGfS6ymD34P00sajY1khOTT36ut000
+4WxuQmgtC000@rB0000_FWAvI0WFY00t00@300_@60cNF1m@6000000ulV0WL3mD04W@@0G@
+@1WMT00YXBXR7k2110mSk9Kex3G408c@c1000WO700YtjYA29PgP90008qoj1pbdGIt6W020
+0200Isu64sl100Y02yMYdpg00mFvttCKME3zjAnzidqeE6BRd0002WWnDe9xAMJN2G5D0pCY
+HgSFSyOB7d@002010G00l8p0000G8040P@R0009WttP0100IbEF4fW1Tf@mNBdCSJ5@nd0W8
+0400000X020000e040008W01W0WsPDe9E340000G000010080GYIjC8@S38GWI00240000uc
+x600Oi1080W0000010CZpRmD06ifZ10000Z3BXbzJGH00GbzFSA83000E4000120BG18J088
+2G50n08Ge24000880808W204e020G00000OC4I00003H40W0W08ePvD0008W010504G80080
+X00W08G00000Iry60C121000W081WqzD0028W004002005uRmdz6ytY1p7amTm6yzl10G00N
+jn00400840000020W10000200GO0qW09014000A1O21000AK10082H8W4G14GW00008eg050
+08040400040GY0oPs00CW00W20mY400GWuWW0A1900000e0HRRW1b000W01W0400500G000G
+08G0e0GWglD080008W1000000O0G6nFX3wDOhU600W00200W004KFx60420080122000W006
+0e0GGW0080100000GeP6CoV2000W4810qvg108010800aFU2Js@000uU0400xzRmqPC4ll4T
+uR0001Wp5CeWN3Q@tWx@P8SP30I4viTk140J0W08W0W000020uFr6G200e5E340004Qs3DuB
+1040C0000WK3B0000SCh19OKHFvOSAk10400wmZ1800100010010W00mG004W40002032lIO
+00004Y020B@Rm9UIaev3vzR0W000G00000WWa100qyF6bW72208WQsDG000W008WvGCWW8a0
+G00000G04180H400800C00418080I4000005040W04C_9G001w@t000xc00m00G00zem9Xjd
+GJyO0G0000GWGqz6000Z080G000000G020000@btWQ3CeraM0Nt000091a040H00W8UL9f_4
+o4N210W0G11GWAp4Y10WWm001He01X0C04G100Q40YP00201020420GG000W80229XMyn002
+00YW10000i641X41Wu0H22CFR6AYE4W0028000G200000G40400100040000G020084Ga880
+n0G0022G49G0cX0C4Y022WA2108G0G2000I00WGH00002L2N2veY1I00041W8RmQ000aCK40
+0600048000W0AuckJ0004Kxl14W40ErtWemJW20850KA004W8aI8a0G09GAf0004Ge2a20GW
+00I00fe00002H00K1YG0vOSvi140W400a0G0fe02G600000mgcKe0000I00GA00OPS32qZ40
+8000008100I1041140G4e2G4n0000GA8020000GW018004W24OK00W3AG02G08H0G2808A12
+00412000WmQiD40008I0A0000W0404G8000000QG320ALM0W0HW000YDl432XcaJmD00WWW2
+20000000100b0000402G800W0W820IWOG4Y80u000e05W7JG0042GGm2W8051020004300G0
+0m2o6KE_63YR000W10O2000Wo800Y0000hy@M66C1001C0W00kpt024G0rkP00W012004402
+400Ia084000X0082W00G00LnRmVv60G20eSSFYHtWS_D00k3000001804jMHo@@90910CQ03
+sM910W00000G10000GwF0ZG00N000C20W0201G@90280S1z7m800m5000001GWU5q0m2009t
+LHiR6W0G000080gF0000h30000T3z7W0H0tB08GnejG00A000006eN0402w6100GG80O0002
+rI0008L0t0u@20008m@00000q1V410Uv10UA0vxR000m00080@UV210000ytF0SJ000SscaM
+5pdwnZuI0WRAuMS300009HnFGYoR0k4@0P1q1u2e4b5G9ISWIC503GS1P180m8GkDYTp00O_
+1W0W1W1000200W8000em4W4umumwDC04048W10my300n503pFGM000@00000000O01Dw82w5
+KUsv1Kl2meRH8uy6GmFCZWZQ40V1AL100_1ciiEPr@4000W3s00qlV0eL3u100m@_000Qvke
+TVhe8n7A3FXAnP0010GZy6qBk19ZR00WbximBgpU90G010002evU6e008Ge000200mGu6CWl
+400G00O40ytj40oG0Yp@100WGj@RW001WAzt8JR9Y7@X8oVuRg4w87600086400AG@X8cnO_
+VL0400ivk12W00Y5X12W30VgaGaz9qTU2000W0WGHaVk1v@PGrz600epeOPC002GyaL81lpG
+ny9qPk1000aUmt00040G0100Q0800W00YXW8518WczD85U300WW0W00Pn_4oit00010Nyp0u
+Q20000K00500048ryE3008000002004OtU304000880000000G8YiMC8vz4EotWT@J04X016
+0040K04Y8060G010504K0W4040W00431200000W0Q00400802K0W00W01G0WG002a6iL2080
+01WW120400Wa0000IW0dC00006i12G0000G8G0080e02200140020010G8008000800210B0
+01002480G4001@R002K01G00WY02W8A002CA400W48G001G000GG10810001405WW00W0020
+010O0480022WG8144800Y90q00800W04q430100Y0G0100G02WW0002082280000m0100000
+04W200X0080009000eoQ30W00008H5WW0080G4a00m0W2Ww4s008202100G00W00W8WGCW00
+0010G20400Ospt04301Y1084020X20001e0W0u00200100404420j@l10W02000804GA1020
+GYz6KEk1GW00W8G0ccd10W00Qut02080050Wotd1010000G0100Gi_P20iV0cosWtrCuEl40
+080iwl1DNOmkk6ixG20040001000G0Y000mns6y_V2Y0W0_@t00P00hfP0008000c00W01kf
+s00HG0nYmGyqRaZU2w500MA7ZPiVurL6YvV310H640G28G600IW0004108082000WBpR0046
+00080Y0WC50Y8qhx3H@dmCJ94@V208Ok000280000048000020040000CG280024auT13480
+00800uWl4001400020041GmU6ail13sR04000000A0800040I002We9Q300Z9OG00W810002
+080040G021G000000Y00W0KG@CSHw3hXdmeu60cE0ehj4Ert000408000010044g11wd00G2
+09040zaZ100080G10ZFamy_68WCG10W02HG0WTxD0010GQv90W90u8796oF10008jud0000U
+3100z1Q021000a020004Ikt040805@RG5w6CfO200W4Ymt00W08Vbo000WWyyDm080W8WX00
+C2GK6W0D20p02HO6Y5100501C8IW48288228050e27G41Q00Wr_D0W000800204001AmGL@6
+4RY100yf0000W082205W840084244001W944108412016WW000540G0200G0000024W0C082
+8W00eW0G000m200e0W0uKr4W100011G00240000G0pa048aA0W40e810mC0Ka0108G48A020
+W1000We0004G81430080I0WW00orbX_@D00G0GHb6yz030GB00G00G0000020X0080140008
+08W0000W1W20001040Yx@J02O0my@60008mG00GAw601000G00Gl064CW1nyRW40GA1W8004
+0f850H82e20K4480ne00850IWH00WKITSF39Y@Gfs900G4OcR3000W19100HAX000HAag44G
+K4f85098200WK0O6bWA0W850K224Pg02010Y00080282H0000a24HG0a100f0080000W2090
+040W010009iZV20O00G4X000G8L14I0e014026OW010006400a0080G81840W0Y1CiCWEzkY
+99CuvV38080Sml100wx0200W080WHW4020i000284W8m00KW0008008O4G0W0YM00014000O
+000G0005C00004100G21100I0181X00000021000220xvd00080A00W000000C8sJl18o40m
+60805419R138201W0800110C10000e00fQRGo56000C010Wujv68W00GO00Gz@60Oj102u0W
+40F070104W02WW1B1022We6G00040e0m0LSO03Y10003G400G000030W100000W0GWQYD04m
+00400WzKJO@V300220008L000YW00000a00040080000Wa8zV300G080818vp4_w4ZZVPmm1
+24082K2040WK0104WIa9a100eAW010I08Y0G0W60W084e0A00000W0aKeV2@zdGOLI0a2000
+0r204W0WW000G0wT2010zNWL1042sR1WgPCW0qV0000Sl0200020QOFXBBCOYU6YTp00m000
+0sHHM000GWU10H0WO184041z20WGG_BqB0005vl0W800G2420YWeG0080m1oE0100aN0G040
+202000Gj0000G50a500G0b10800tNd000O00kQ00000SrZ8uc24m7H0e@X0G@T5W_710000@
+3C008iD9cyF40rq3YCpC4zV0uX3FGLL1W@18QFyGq_hgeTu1HJLLgoX7KbgEeAL5jgK5w3Ry
+o00y100ug140000W@@0W12mzsL0m00WR7WHkt6000m000OE00WO50WvEWBtI1810u601nR00
+04WVTJOCU300080G00003WGCS600000_W20H700cVWEC@0T0w1_1K0q1e1QEG3qS70WvEG7H
+CWEWQ0P050o02041WLvC04cV0C08WAnD0W000Y900YC020808UTn0000WBXRW0kQ0000WGeY
+A0u@20m@1000000@y000W0_d00_ft04000DrRGzvCyMF3VZd00W4cvnD00Nb100000y@70C0
+08800SSl12000ItJYTzCeZF940000W@@3Wh2GqzI00004400GKsa8002euR90AS0aPC3nQ7o
+HfaKDk40002AwtWtNCuIQ32Ms008000004l7sWZnJ0000ocu9000WqM20GOZ9G2418yV6A2@
+XLuPuiy7wgFXqwDOBuAwzt000W0xodGP09ysl700c9MSgYj@d9TQ3oCk2000GG1W0ULdX4yD
+Oq_48K014@l14002w3t002G0N@d0eMA000W40001G0000W80fgz7WW00K6@3zkRGhxIS_V20
+0WO004010e000W0mJl6G000GW0040100A2000400850000W0el93W00e001000804G0LWD@D
+0G08mQz6qDW10040100meK0uG4002H100A048ZaR0280mz@J0G004GG000G0G0844wXpW@@J
+04W2G_860480G00480K00000WnZPW9A1G042H0288WW059c00IW420080G0G000H08G30000
+00G84100800WW4808048CY81W02G00200240808J80WG42001K0G0514002W01010008QG00
+GSEj120W0G0042WI8414Ga08G20W000aY00G020W2W0140000Y0280WK4W08014800G21100
+10000G0ee0W00800004Y8l3300000K0A29W040G44G0302G0O8W049080G80000Y0G10IC00
+60000q828000081Am00YGWW8WY084G04hX10Gd080103080202401400a409W0000Ip08G80
+0840006W4WG020080GJG20108ecV34490W4000008WW0801Y0000WH0400000400G000W860
+410006GoRr03800lKR000W1001Y002900400W20G4400800880000504womWiqD0204GS@60
+WG01000018Med6I04400004WG@C00002000AS501GX000C10iFl120048020AG00GG0GGsz6
+8e0A088000020040A0200GG088000018Gmr09W80000008G60W9gD0003WG8010020000G6x
+s000000GG00400SrR50010geo0e02000020W80iqF30W2000Cv7md100080H4008800W0000
+W0000G002W00G40CDg1Vmz0004YWhCGW00000I00AW0@@R0300000020WO0wstWVvDG000np
+@6qH_6VzdW001mlrJ8IB300008mo1I0W00460WZgD018m04200208100008000FYd17cPGQz
+600W0eQI3402GSUl1HuR00100000GjLR00G010W0140041GG00200et83kT@XGtPuph40G40
+Kwl1200YQzF1000yA300004000WCgxV30400LCl1W00W04000W002004X00082400000C00G
+0Skh15yR00400182W1yR0480XprD00400000HG00G00G00002ynl1@_cGotX01000280mix6
+KMl100WO9800W000a0000X00XV@D00G8000W00104G002102m0100000W0G80WIpJ00C0Gry
+FK8U20WG2K5Y0G0A2XA440P60120100120cmn00108XrZ1G0W8200H00W8GI0G004Y0W02W0
+G0000m0000051000ml1c00W80A800WO0800CG1210Z200m0G00H4G0W4Gm0nA0GK0901A060
+012020220080800C14irV200100814002041W00200140G08010G4J1882008040GW041801
+208W000Y0W050020mjgI0008w8F3kzt0GWWG04W0400G0G02i8S300000N40W62W18WGH00Q
+4Y0W00eG002W2GW0W01092G48040W80G402180G1100020000O00002000Z02Y0G04100610
+2G2G0061000GG04000a4GkM9a8l1000f01200025OL@4oTNYGzDW00001084I1GaG0aGG4K0
+izF300CS800GGC0000IX0IX4448WK01W4GH02008X40000f0WKGI204G0800a080f0K00000
+84A82G8000e050a00000K041000000L2W8408YKI1W0K20W00C0006100N_R000102a00pqo
+Ge_ICvk1G00G000W0044uvR38Y80CgV2WKJG00GG02Y0082400A4GW0204Xe0W0801WG08KJ
+3880W0400G80X0G00BX00K00W200K90000uPJ3Mys00GaeW20Y02800B20WK00m4@600018Y
+G3G010W1O0ezPI0G0400a0000400004D0007ybWa50000A106G103000049000004G0S6004
+pjcGWW601W4W6uG044190W22000WWY00CPl1Y0K2860W054101810YY10W0WG00000W08220
+IeVV3wrbaq_J0200ury64bf1d@R00WYm29D02a8000010GKA020a0W008e8000000DY000W2
+0W00000g082000001001I30040G30100m00100K0W0nqo908D1010WGV86inl14000oPp02G
+a0XoRm9vIipl1000Y8000001ed0402G51Wh@JO2U302yaP0200Il0W000K0C20YWw0008Wo1
+o28BE30WW0840Y0H101G0m1q31Y04mH004821012000B0048062i00H00O8000610Y010Xe@
+2024YU920z820wV1_GW0ydl0ucu9J8ZyD000h4Dc1_700Q_N2000aeP00000HApCkIcPKbgK
+v1F4z@08QLLLq7wWeFq1LTOCS68wggIq7gAeFy00000K500yH480000mL30e7B00000WU4XR
+000@xF0kA6k44000A0Cid1O000m0WFUC00o8GwgIy3U2djP0000000WvE00010602WW0e1_4
+00SV0004r00Ok3mmS7i7e6G7G1WEW20H1DBE3eZe3G7G785038AO9my3I4n5u7Y98B0L0J0A
+ni0KY43e49M19Ii2uoS7a5GEmFWaOM01Hp@1Wxg20000@100_8YCIkp0V200NaV20@@70020
+gw@V4000Oc00CzV30@d30m7H0WFYWhsK0@@d0_@F0zH40Qp@0qZ80e7Hu@K0CmV0_l@0SJ08
+OcoGGLfo@7wW7UWALL51Vu12gA04KLL8uX7u@CpmCpeYggIGm3FWK500slUZHiJOgQCgDrWA
+WO00008n10WK@DeQP3QiFXozLfES9slCXwbDO6@4YKDXAsUugw40000beF3XVR000zD20002
+0000024SuD3lrQmprFirb1DXNX030WYphuUR3Ag@XzinO8DC0rb0KcWApDW1000f52mupx7Q
+E8XKqJ84u4_@t0G00GF_R008000081PSR0j30WQoCG02Gm8@6W0000084000GWBrbOYTCoyF
+X6uC010400100G4WW7kR000000W840G00404CW0000G001100000W2G000o@p0W020taRmJD
+68000004G0W0C00X00400000mX9G00041W0W40GA00000010W0GW0000100800080W000111
+0008G0060480GSm64Gl100800W2820000Y02001000880jvR00G0Wt4D0W100W0004WG0000
+0W00W20820080W904YUtC020GIMj600W2LW1G0W8O410000G1GWW0G0040Mmpe021908WG12
+W08K0000KC1G4Z0W02Q00400O80WQFs0W20520W040G10010004G010X2O0000e21G09aG00
+W010GW0XW010010200U0p040210W0A_1A18000802000W8I208X020000W000H0000200029
+0H001W0090000W00O0100W02021421X0Z0eG0000040G2C080G048cC0W488W03CW00W8100
+0mPa84X4G4WA8X0400040208002021W00W8088G0GG0220a0C0008220110YWH0010010004
+4G0221W00201m140042404J0R00020001400W0000GG002uSN3s_F1011C4001WG4YSoH2fF
+Q0400W5tDG00G00080200e00000A01O02808020G2010W00n2d0400G3m000010EIo0C000N
+@d04G001H020000m10OK1l1000G0W00inl1@SQ0444X@wJ00MW002002W00fspGy@6yRi101
+0W0044i9V2G00008212X80400200O20G41W00X0AiqW3uC0a_320003G08980WG000G09060
+W220W00496X40004a000800mG0000042ZU@Dut93QrCXTOJua0300000W92OwM6INtWc5C00
+4020120I0G0O001s@t002001XR0W9G000800C4010O2qMf121000W02W1020004C0004G200
+0840000G04900O09m1l6800e450080I8000000100@kq0W010pCaGx@68W00gzV3_xCXH@D0
+AG0000oWysJG0800040WOnJOST6aG00i0l1fJP020000mG40000m0102100020100W5110G2
+000400090800020GmPdF020W00GWmPy60140X00W000OaWIVW088oyt60G01e5V300X20100
+ecD6_Yt00W009UR08G0WTtP0080800010W040082040a0808W880GCC6G00008R186001100
+001W0G0200Z00018000G600010GG0q00Y0043GG008mc46006GOOJ3U3531000WeW1KW200Y
+00000K150GWPeC0000008W40000uG0002W2O0880W10m_y600LO00045Wme002402W701501
+9mgAX2bK0W0eG81q00GY0100WQU84a42804q190CXG09A1DO0g08040G0f141K3L0K56aOTC
+1XI0G440X1G02010A1208W00G210ivl14W0X8W00D@l1jQQ00004010W0006GI54CfV20W00
+409004000HO04G0W1143020bGonF1G0C00WW98408PG00601D0TWW0008400mAK002e00B08
+400008QX4KGm2KI0W4C1a0Y01X02H0O204L5208H84G0f2000200W02W14618e008m01Ge01
+2fLU3Qxt000100002G00W002400200a4000G0K001Wk2nW2AD000080W201004LE@m9y600e
+000G0GEu9W008aW040100100H2WIA0W08000000WG1b0D30o000W2006pt0000900A0820I0
+0G00011000G0IH000020854c110I00G10YW0WmnD00085041XSwD8XS300G02000G0G00c82
+a_TD0800WG00WD_JeO_4kTn0000H000Y0802a3k100W2000000c0Xc2000100W4WX2020000
+G8G0W8pV30006UUl10W00YIn020W2W940008W0W4S404120080005H00008g824Ek100440W
+000AY00048IA06020828040108040000C80g_t0m080W0I00W80apa4nQQ000GW7NJ000G48
+0W1W20009W080WCG010000q7920000000040@inWWQD0000W0G08W04500000YW0006G0080
+W2W06Y0400000G042Kxl18W4000G0liV22000MJn0001GW4020A01Kzt300400084Lj_3200
+000904nj10Y1002000K80000040WX8040fG00008S8G000uDJ3kJF100W008200H0000G002
+00004000200W0484G00200000W4mCn9080000G0mdD6iul100o20W00W1048yD6090004G1e
+Mp40W00qVi10A4000001W00W00K0W000C0G10000m002W0G000004wb0110_8000mq8i000m
+0N800GgTCaAW10002W2G0001es1O00GTWU2GG8OV40Agt020G1G000m0rIW0G0TPN3I8F1H0
+0000mFTm700W@_A7S300030m@@1000W900000mF0000S500c0N2MD000mFm300l200_F800F
+00ulU1000mVt9YRA8B1300Soe00V420800kvNVKG1_v@F0uL00m@@3WFY00tK0@300_@F0yH
+40uZ8000500G00000mD00WhC00t4Jk1zaR00kPL1SJ10u@@Iit000O00Gq1Gb830300eU@4G
+S10000m0W000020X8lDu503G000A040m0O000m0008A0v1O0CC@0O0G1q100W100WO000CO2
+008k00GS1m0m0Y0d14N000C0CO_1O48G2000pT004h0k0G0P1W1W0WmnD00cV00080w0G0W0
+W1E3t0Yy0WU410oFtW8lV000ylV0004T300440AgrWK0C000yZh00GLK0W_l00jQ00w@LkH0
+0ylF0uA30m7Y00000002D000U00e@@9016G5A0X@y5W@xF0Vq000200SL1Srg2uc2Wm@@1mF
+Y8JF3YKmWffX1000qXu9KTV2jyRmiRa00ueShQ9skEdoWPOtV3_3sWrmJOCO3Y_cXO0be_S9
+0LB0ipc7Nxo0000YMqbeJzAQUFXjrP8l532WtWpwD89EFIsF1N0003ovHrwaCxF38004UgRZ
+nmJeIT3cSNY2ub0007xZvj0G00Q4FF2eq00G0mp_R000LWQNJ00W004801004G0020028W00
+W0WW0Gnjz600WW0400000110X10dqR0002000e0@aR0Wh7WrtD8t_4EWF10D000002EsEXRu
+D040WmHy6C0@33_R001W0000K008804000A001m80mJS60080Ck@4002080A0G0208G000G0
+14hpR0GW00W0002AOW00GG0A80g_73400G08002000hp228G140WY8a000G1GG1f3R300G10
+0002e0000908000W000Y00GWyPU2g000G400G0000G09mW@9iRl1W00001m08GW44C00HxI6
+00W040W00W01000200801001WW400G8WGa000O0G1G404000W000005K00100WK012404880
+201akd1pxP00WkF2010000GW80000W02CG0Gs@900GW00004500YGuD00G0n7x6800a2000H
+WE6KLb1TcQ0W000001GX_d0002000W000O1oicXB@D004200008W000000GpwsW94C000K88
+G000020PkP008K00080W0000wB020eW04G0W110mebJujD30XA000000W001000WUaIuvF3M
+@tWFDW9s4X270kW30FmX@@hu@_E_Vla@pRHw7bjPZ@400O9q9mItuyVo3Z100GW00GG__600
+20gKPCgZ@100G0080000mG47z9rSlHAzC004041080404WiwD0300ojsC0W00OyV3UPs0002
+0zXnGmvFC@g100000Et00000000JmyzISYV50080aW00ib@6bbn000GXGuVeXSR8A00i@s3X
+cxHOx6aBE3L_Rmn@90W000220oGkFC2d100052JdXRgC0W00Gqv9Sd7320040005002000mO
+v8x6yqV50002_3G20m02d_l10408040G4006A4BXzcD0Y400W010001G0084080001400W20
+0000Hm04000W0G80GW000000C140G00G0008021HW004200G104G000GvD0003G0W4010000
+W4G000I00A106002sXtWWBIu0L30W0080G0udT300WAqwF3P6R00K0000YE224G08W00400H
+08004G8044O42WW008048W0YW010042W1140000Y08m85AW00022Wa0000X0WW82XG1C0HO0
+Q4YGgY4G0a010HH4GX0WK1W0000ZD4K104042M2X0eW283G1880A018129e042W21TCR0081
+02GG02W400W02W00020K0mtv6WG00WG0G008240400zKc0000003J1WG20C2000005m00801
+0012H40Ge0G002WW0G24908Y04000WG00Im101G0eGW52002008K2064W4080f8G58K0YmKK
+W10Gi0WGo00006420000WG02a48K0G2C500A80C08023W03a0I00GW8020G0NjR0800088W0
+200000250W80080GGl@C020001000081WsFD0000W1W0a5rI000202W000G08WW000410i_k
+12a02E2r0CG0000W0GW08Cig14440K0028G20000GA0040H0G182G105000Em1G00008G2G0
+1008K81G004W01W02eCmNv68004e9T30000J002OgV6GGm30W80020Wmhq6KgO537O000800
+0IGW080400008000010002020002G00GW18000GY1400W8H0O02080m8440400GG0400mqhs
+600O00000jq020044WJRRGH@I0410080m00eW0G0G0luRGo@6qcI52000000Wy8k10W00800
+100240024000WH00W0G0400W0084000020W000G2W0O0G0W8W0400000WI000G01020p0090
+G40W00004004400W00W104GG00Gef20100020010208C00011m0040qvj102G0W010020G02
+000220080001@RmgaFilV22W020001__l14000gotWXUP0000108000410fhR0m000G000G1
+G400920102402X200000WC0W0000G200a00O1x40je0CvN20I20oyF1G00G8O00_9F104000
+0X4kXn0G0W0LQo000200a00DiRGd@6G0W004000006WC_D0A00100080G00W01W00082000f
+yT30GE400204YWG00G2010000010100W000m00aW80G20W00A0940X0000000rX000002G80
+W80W40W000001G02200040WxvD0308W0002W0007fR0000G0400p0RW000WmoD0200mrv600
+1WOtV30W00102GGW0G08O0H010504820G00QG0H60100AW03000G802e0WWq8229GmOGY88a
+K02CY686I94440023IWH5ASG501IK1000A0OG0GW0000mME4392183W00g0W1320Y0020810
+0G08008061240023Ge04G0e0149A21201GG0004020005AV_40010qng180000WG401H4G0W
+0Gg164ye1xmRW0m04W60800W802Y0800206OWW00801XWG21A1GKW4154A2321C028GXWCp2
+XGX80020W901Ym0e01G1G4OeW0000Bh0000WH084e00G0G4H008Y00G41W0024000e080120
+2008408m020100G00H200W0G0Y0DRQ0088WpqD0012008100401PbO0Aa209e40014101408
+22aY00044100I102K2200YK0m9pYGZI900XK400WK801I1490GW8000G00eW2421G00G01G4
+fe00Ga209014IGAIH02K210000WIUf0WPGWa29HA00124g918080G920WK8O6fG81DA50G00
+b0W02W200W000503000200WA10W0000Ae00a0000a201W00000e400c900W2K00Pub6W004W
+HW04H51C022800Y201HW003908080GW400060014000X000G0G010WW824W1W845000W0O00
+G82800W002061Yc82G3108W0039000000052W44045048880GK3n00W0Y00W00058000G00K
+0040Cac400G0100e900000W50000000H0O8000WM_D080Wb000A000M@LR00210080G04441
+0m0u0G00084W30000WW2060002e2G8800804W105WPcC000010W0AG000G416000000G8002
+40GG00eW400041063011OWH0EW0H0000mf000CW0110J0000Y2190S044m0G0I8OWE880WW4
+08002700WnND004604908042A02020K410200010102G1Hq8Y008041100140K00400W2Wao
+wDW00e040201000G0004001002W0HG4000150010050qGW010e40edR3Akt004G0G80W010W
+0188X05HW09Y29G0O04K01000pR00b008W89G2H4X0G11L0080800W00400W0DI09Y00G101
+000008Y100a0GW0000040YG0wqtWZFJ0W0008000900020000G00Ww0G4W4w00Y000208082
+o400X0eNeN000AyV10H00W0O4081Pz0W20oBKV022XKE0W0004400000M00m0e72oEX02WqB
+0G004B070W8eN00C2sV1000nheF004Axl48W1082Y400W007eN804AsV10HG000O4080Hd00
+20W3m20410GX000G40014000M004G062w5WH00u80004X0W0100W5082443v1HdP6YMLLyGc
+PuV0Kn3F4j@18QgMLq_3WeTu1LvF0cnC0eALX600000_3m7X0W@Rb@NL0@zZN_@60_tF0yN0
+00100m7HGLggYRAG5@3GacPcefA000GngIq7UWeLL5LfgA_7WCCpCHhggYMcL5DLL1QPcHL0
+00u1l0L100_tV0kfF0yNx0000uV00GL00Wg0euT60mc20000m@@1eRA0000EYC@008o0_Hq1
+a1e7e3G1G7W2Wv050pT00cx0T4r0x1g3q140e300mS00Wv700H70N4N0C0e0O000o200GC00
+Gq10Wv7W1pFOF0SWV05Wz0A0c300WGtW20pF00cVWV4TWz0w0w0K0q1e08QA09OWz0n0O000
+q1008AGIWu2a8n5WBYBGM0H0k0AH91KY86e4P_19YO2u2n5a4WAWB0bOM02HYzFW@bzV2_vZ
+80m150m@1002000@@7F000EeWVSr00eY20q@@0e@V0G@@pVU4X3KmFV820FG10_l10yH80uc
+4ugVznD5WW@_1WL10000000s9_3mL50002W@100V4X0_820y@L0Sr10O600000m08YW7000t
+K0W_8200002ILL4qX7ylCpO6peo3UGm@1WWgQ61pK62gALc9JPyF00uV088pCFKG2TBZHGD9
+C@i7ZtRGXL60k6085xAsica523100Gu2P6STa1PxR0000Y1xDW0W0m4D6Kxl1nAPG3wF00A0
+0000Bt10Wg_P000GW040WQ@D0090ogt9020W8sT3ogE18008nS@0420WfrV00W0u@tFSIk41
+8iHw@600GlQByDA9dXrmP8wkAMKlYm3COwS3gut010000440W0000WW0yXT60020SHE3LYR0
+00820000WZO0coEXxvIeXz4Mpt0000W80G00100a7a1Bgd0802WL_a0040GdS9W0000W4G00
+0080108d8P0444WprDeuT308800300000G1000100W0VYRGLx6W8G0WeA8Iet6m301CiT304
+00G0400200050008000JzRGDp9yvk100W0W04100WGOah7Efd100I8820W4G030104IG1W1G
+0e40WG028W1W0W10X00405422A118C020A424I9LWW820HW2004G2540005GGeG10W441L94
+G0WcH4b00000W20810000G7020008010H4980000011W000W802000G000010G8I040WSFl1
+80000080W0W0Qd_400001802OYU3MUtW@xD04GW0000020W00O0A8WGI00D00G200GcG0010
+10081H0488Y20G10G001G2HGA20A0405000m0AG0000X0W0a0G408Y9W02G8YXd00000H208
+00000g58Qkt00W3200004m00000Y8MD3000080C0G4G0O9_98202G010Hj46Kfl17wdmi_6i
+uW14G208X00W1000W00001W000W00H020000WG08G00W020W00G0080G2W00280W80502000
+O0W0010060082800082800000W400404U0080080000ts0W0010141H400008G000040m000
+000001080G008ErFXJyDOGT3gim00000W020G000yaV2pwR008GWT_J000400Y0008CW8002
+08Ge000X0002100G80100002K_@t0100WG0040029ay@30400Jep000ijnsBnV3CaswCbOO0
+900000080440G0800102010000G8008002000080100GC04001XW028G0G0010G00101W2ep
+V3QstWe1D004W4000012E2fUO0010004008K020G0G01208pX4800C0024m000GBd600W0Oq
+aG08100W000Y182220Xw@D020GquA600Y8eYK300m28044W00Ws7Q9C9O200000WW0Cnc1W4
+00000mJJW0uBV3G400KJf1p_R0200akFhe@MI0W041004vfz48000C6Z1TcQ01G020XI00G0
+0W0W0Shf1m00C00G0SQd13Zo010010000004R1000088000200W0KWZIC88U3MetWmTJ8JL9
+_pf200G088440WA1G1W00H0402n00831048448800124g0A000I208C0I9WG0XGQH8060B2W
+20424I22K216Y0202H0KGl10000102H0W2142GX000000M920004020G000H0W4002HW08G0
+0Gg00EKr0800120020010W000200100a000040HLu100802002000GmO4180822008W0G864
+G0261W08404Om820W30890C0GXH00Wa2840i0X20G0X00000081GWjDQ002001m200W800q0
+0e0e00000dDW0000g0G804X0800Z0G0000840220000G14W40000400G0800028WQQDuqr7E
+slYGUUuMM300080400W08220040G9L0W408aW00024010005411GW00Ka2W84GW0aBh10G00
+H000W4f08a2300003A02040000400820W0G01000H0804000W8800020G408108W0W0W0000
+208WI010OAKG000a0000A0Gu@@A000WKiR20G10_kr000I90mG0000WeW00G6000G084A040
+010W8040000AG0440e0040068L9PW0000WG0W00I112020I0W00000eo60002G03000205G1
+2008W00003000200e00050W00m00H002G000O1000102004000048gm4_@l2000C00800C00
+Kih10000100200m0001800601000101000G8C2180000010G1800200W1W040E0808ASO304
+40i6g10G1G00G010007KA00G000YG000100W006000602GGC0G04000OW00I3yr0G00200O1
+000000K00000W200ej7sOwJ60081040141800WG000W000W200A0H10421m00a4000040008
+0850I000a40408A400YhVJO9630C01X04000m@740G000000443000800120G0W0008euHD0
+42200G1W0wC85r400009500u@VC0004H020urt700H7W000W308020100000eN0040uZWC18
+000D200W0eWG0008w91030zH0G10000O0W2OCW0WK20E0Bj0000e08500W0K60G00880010H
+GK04042u0H100018Wk4oYp0a11004eH00400402ON530A00y@l40O00jQ00000k2000000u6
+5080@@R000yH8ymc4ull0m@V0m8Y000y10tD30_xE_d00y@70uZ80m7H0mVqF000ko000000
+02f30000W8fgA0aD73gAwCbHqgIbgoClC34z@08QLL5q7U00000g200VA7Y100G0W1W20100
+06000400002004T008w0mmy3IWp0O0009mP0YB03cV060e0TYXpW@0I00O0W3G000i700mS0
+00mQ2008611Ag1GGK3e3e6G7G5eEW20H150YC004T0o8w0q1q12ep0Y2204P00GC1oWO2GOI
+zDEnr00000kwH4SJ18uZ80q@V0e770GFY0000WhG4HNPW78000yW30yV500000mVjpD00W@l
+AhM9y00VeA00m@V0eV100GLr00KG18800O000G000W000mW5Cu@V3000NP00ko00ym@@sSLc
+70008EfsWYdUOhw7000GyFWABqt240002W009pvHH06KIk19td000100G08Zbb0000000ULj
+5ymQuCKQk15v@0028WoRJO_y7sqFX9ODO9x4_@VZ7bCehy70001y3E30XE0Yr3614003o9HF
+IgyuV2000a22d140000002000GSZi1Bhd0000Qk000Tf@mByFimU2ZZpmAUU000010200000
+4200K0a00w7m0000WG04002G0Y0004G0200020004W019Y0000Ge00400001150Gm00000G1
+10004i2001Wn@@600GS1W000000G2100@6_mmw6008aOS9300000GW008W2W00aYYpIuq530
+20HqmU2W000W88W000GW00XZ000G02040H2G015p00fYI4L00GW01W480WGWG0H810eG0HGH
+0440A40520WA0W42e0A0GG0mm400000nG08FlQ0P00411000470404X002410020Ge0WV1Ce
+Nm40W4002000120040800901A140GG00020WGW00GE@608048sV3MAa1G010PxR00814G014
+20GG6Wt0O004004W93100GW1i3D3G181X400W4WW88000W00C0GY80X0000054002Y00e050
+0C00G2000WpK840GK008g20010W2220hYt0WG00JrR0W006G000HWR000a300268808014Yq
+lT2tiQ008002800bVb000082800WX0W00001410110WYI0W7Y2aG204G800000G201W8110c
+0083GWW088840G0G80W421X50G0G2G000W10880e8W0000nho600WWDyV6EAtWX3P000800G
+80000140m0408G00W000W80W00Wl@DeSV3004OSm@3zIoGeKI4YE30008W0000008400000G
+30Y00020000W10yGe1LPR0WL0WfCXPO39ItS30102000GMmtWeUD0060Grv64Uk180088802
+W200W135Ih@60G20008000800080081W00001w700ew@4UUtWiDJe30300005zk19gRG3464
+6k4zcpG3@6C823HQPGSB900W000004000C0000G880G02000001402Ghw900800G0Gql@600
+esOQKC_moWB@Iesp4_L91000G00X0oQNYzsJeCU3IUtWQzC0021mDaC4XN2p3Pmyd9050200
+00W400WctD04e1GHv6iIf1hfRm4M9W024Oar7kXtW3MPOaL9Yhp000800W000402000W0G0W
+040W00000G0810010Sjb100800004W00L001441G101Z2CcG0W48080100m0K000u012Ya0W
+004000mgE028Z_40G048000G1004000100GG0W100G04CON200900000W04000m0muf9SKg4
+Bup040000420Zod0800an6D00000800G003o0000m0eH00AY110G0AO040C008008GGW08W8
+4002W002e08G0000c@gm03200G0G42Apt0G0002000@DqWMNDOgH3UVCXszJ000850280042
+000Y0000aGAf0WIA100a20G0902mCf01WAH9IaYK0e4b080I1WI28W20YK0008WWP000G00W
+E3CeSM90L8000002000210G800004G0000Y000100082200G08610YW8f850G8100WK84041
+eG4AL20G8812KG10b00008502G10GA8W2008K20ijQ2G0100000GKi000222G0W0400K010H
+520800G4L64GGA060040104W50Gq8W0004LK0000C000Gvg136@b10040000m8A00ylf1003
+0IWp0500HnmP000f0W10O004G0We410e010OL00G00WG40m841wqt0G120m2008W00000mOy
+V68000300G35W8003OG00e8WHGH1HKW3602W0W8AKu085HOW2f1KW6eGW40PWW8IW008G700
+0H4dmW@CqKf100eYpctWAUDG0510G001m0C0014000u1e8002088A0419WO83m148K4WK07a
+AG024620D010000a0n8A4H0S20hBE3wSzXI3D080G05GY0GY01W0024fGYGG04G041W08101
+120IW01G0eG205Ge1P600auW000OF83g5D10@803aR00400000G080G00200W00H00001020
+GI40G00LW40000G0KI401A00G014av9P00001400280I00G0GG000OYv400r2WWG81000041
+4000G4eF0016WlW_0G4W0_20Y0H028Of0aWGG4G8_20Y00008O0quy30021M4C1000GW5W22
+Zp0008000W823tWOuC00HW8010aK1O0Wl0W8G400260XXd0610HZ00000003yz100WgK100a
+HLL9o7UGqPEZeLL5HdP6cHLLI4t0FyGqKzXez70GJLLUmcR0Fu@vVN1uV00m@B_E10SJ1080
+0oYp000A3vlR0008JP000KvX74v@08QLVGqPcXeFy0Fy70_7WCyF0HhggYMcF4j@00Q@1m30
+00LpXp300_10000mbv7000EWVWdWz0FHc3UYC@W4P_1_ny3s3u7u7mJSlK0Cm18Qk3y3G1i7
+O20300060aJh100W0W0W1020285W40pF0000000YC004P0G0m0a1K023t0YE004P0TO_1o0q
+3yBQ06SWV4ZWz031C1KOu90HY90N00Wa02WsjVGcP000KfAL9u3UGGL1WW7w01LbA@dfCggA
+0ym34igg8uVLHGLL1WggYg_V30yl0cP20z@L0w@200G00000u600000ud0000Lf20@7000bN
+10W4rP000SZ200WJSD00NfAL0007CpC4yV08uX0GGLLXW@1W@pC3Fym1_701J1m07U0WEyW@
+3PtW0us8lm400WW0000000EGbuFyC43ZZ@00WNzGhVOjV3g0FabmnOOi7c9tW@oJuVC6_@t0
+0G005NR00G00W000zZN1GS6WcmDuqV3E_FXbjD008ams@6i6j100240010K_a10010_C8XTr
+JuXD9gAzXDrD000WKAE98000W000oduR000WXq00Gxt9KVk12000QDt00G008G10IItWDoD0
+440000000A00raR00G008000Fbpm3IFCyk1Rgomkw6aMi4004200W0ykg40G0000y23000W0
+0Gm_x9qzT2ZmNnJTa0X002080qPC6W0100001uPvC0G10Y080000082W00hfR00W00e484G0
+n0sTtWZRD00G11410WyZD04g510204080000K1004000082002WG1GWXyD0Y8W0e00000W4z
+sRGyu6yVl1rEPmiz9yEa19wR002A0G000Y8W000KG040WG8048I28082128DYG0K1L0aW00G
+14eWG000WG8W0080Y0080H2fF034080e000000100f0G4010008000GW000Wnd00049GWG7C
+0140mIr60008WW0GGBV6Csa1Bmd0K02XWxD0800040000Y005yd0020080G0080408010400
+0108084G0000DXZR00003081WAGB80C0GKhi18WWGozt01C1e041E0004220900000020431
+4G06G00102050000G4301008503000O0008200GW8000005WtoD008600G504001fYR04200
+00W404W000000040io_4MMrWAxD0028000W440200Ga0G00014010G008H2K00428844I000
+00018W08G0G4a02400W000W20100AW0880G@z6004088V30G408000000088000mGC20W50s
+Dr00002NtR040G08W00G0X0MwtWCYO0100GxN6Swl1V8omSZFW280u@@4Eas00G00DPRmq66
+KMj1vvd001010000G810CG00W000W101W00W10900000W81000W00G000X8W0WghDOmV300Y
+0qNU25rpmzO9iDP8G80088O0000X402Y0100000200I0042800O0000G804W000m42GC2104
+0GO400G20000GG010000G0G0G810WH0O5M3W0100Wms50W02GG000240080008G00a4HyUC3
+W0000410eOV3W1084He1@zRmyw6C7U8dma0002G0G40NJO00W0W4yD0G0010000G0020080O
+0008208uSK60004W0W0uvV30jc0iLN2Y822YsU3W4004100oomWEGnOiJ6G0000W0GeM33YG
+p0G000O001000000GG14100080G10000GW0oatWi_D0Y000080X0vI00000000Ew0000W000
+0604hf19TbGCeFaLX1Tfg220A00G00A080000G100G0I10XH08O118680000CW001e00302C
+4Ye00400GfWW0802108KW010200e01405OW024004001G000G0060000sG00G4X80H0OWY06
+400W1200MH400220GW00aA00W00W8020000G0200W0I100K0O8U3YepWHGhOAq40WW8200WG
+W12W038012100K10W80G011Y0YOWW044G1W2462098208YA4900GK262W110I08GX100420W
+00GW10Z1H821010O0n1000000Pn0008W2080O0W0Y8Y0W160000AG0000G0O000G0K000_Ps
+00400NTP0K0W40009004000H0S3U5FtRGtz60H04W000W800W1uD850604020G008wH3UApW
+uxDOxV300H04cl1W040000G9K1000aX400G00O60f2OW8G20I1G085C00W00G40G4X08m9A6
+yQl140002USZkLJ00W0000e00028200m000WW0000OG1GA0604G230W1000fWMqJG0000001
+0000G@zp00010G00G0000004f2aH0e643I5m0Y00O000G02814DG2004G2tt0000W@FPGCq6
+ykV50001008020G3usV30W40103I0YI000002CH10r8R0108844320080gvn00S03X_@0003
+2W00GZDP00000mxj0HYpGjx6080008140H000G000vrRGfO980010011mWzUG020WW011800
+0e0040W080808202Y004010X8I200Q40200041004100GW20G420200T2cGmC68100W000uS
+T60100000020104L00000084100050W8kS340850800a0G0Hj@6CLV200003S9a8lb00EmKk
+tFG0GeW341100402004ZtRmay6KZ_3200G003000mS87S90W3KB00058E0GOu602YW000001
+0eWmnDu@V3kDrWbzb000KbeFy0HhgAgwm3ym30uV0Ys3F4j@gAQ7UGqEyWgSu1LfA0cnCHNb
+gY_F@3jgK1mL500@xXFY00pC10@8200G1F_RWR000NDWAkf00yF0HIL000OrLLW09eggEGLL
+5jggAQ7EJq_3Wez70pGLLcnC00W@X6W@@D0013GTz60W000m00mo_L00G1W8300H6G6YEWCH
+Ud0G1GK34ee6G7H3@E108A80Gq100W1G7030604GCS90m000W1W103030C06000T0A0Y200W
+qIW20H70W01I87S30A0Yx004n0w8g1a1K0e38Vbp00080O080pvQmHyR000_rE00WFgg20Ep
+40ytV0uZ8GG00mV00W00u3100WcP20zR40wH40qlVy100O6J0mDA0WF4100u70V420000_30
+0Sr0Gug10mD50m7100Ggh80yH80uZGuZ7XmL30XRA0WV410VS00kf01ldmQxFC2G4PYJIx@6
+4Kx9NfPGW@900eEuhSRU5V30001nIb00I0WZoJeOI3kENYZWP8pQ3Ajs00e00DsR0WD5WEpL
+vSq4sX@Xkcsu4u4oMaX9uP8GR6oUBXPjP0000da10Wsy3PSs7ADs340003zQGpzC08000081
+IEnRK2F300001002ycM200UKkflb7XmuRy4MarW7TDG110GyT6yBc10G11100010G0CQT3AA
+t0800W00G0W80000A40100000G80201000037tWWxD0i10GJ5IirG5jEuHpCC80W0000W0G0
+2084000480002H004000G01W0G1004408080W4X0008G02041000240X8W8010H0W0YW1A0G
+22001080C4Y22G100W0Y0uQT3uB04yCl180G1G004qhE30W00w4cXX_a8iT6YaE11W050K01
+00000Y180120001G00G3020000284I2200eW028020Z810088100W10W02W00X18210O00W0
+042t@t030JWm01a0000yIk100WiZvF11402FxBHLu6abl1HyBnnr9SYV2Tzd020400W00004
+0AhsW99JOK@4YKE1800204000m0AYG0002182A00WSvD0080ITw60Mp0eXI3QvnWBZP8boA2
+NB40G01hMR00W400080GH40080000801W0G000300mX0f_NX4000W100bHR00800HG00t9Q0
+8008000OdZln@@C80G0u6Q32ZpWnHsOZ@48W0048f1G0000WW188m001010WmW800008WXW0
+400W88W4H4100001100G00W0W0400C02OJz4Y1t00W0008kQs_F100G0zOdm7M9axj1TCz0A
+0000G00W040cFVZ@sUW0G000G00I0000004X80aiSe1600W000eywF30002C08GajP2L_R0u
+Q1WPREX800Gxw9i1G2dj7200408400dzR0WG0WIqJOfV3_VtWiyJO9U3080000W10200001G
+48004000G4300STd19twnXw64SL2002WsZV308H0jSOW0004420W200X0OW22aW0WmW2240H
+40000618I0200W040W8Y0000W8410G000f000Y0A080W220410G0200GW200G440We000Gum
+py60020uWS30410iY@34200G400080000Y00080041008280021418W8g__AK0210002G00G
+Y0GWA0K8G0O810000W8W8WWa4024GA301H8200C002W4001903888X82400We00000X08020
+00CW0W20040A28G8WG400W0300000Gi7W4wmudD3A_t004W0ToR0G00Wk2C8CV3YXh2040Av
+@@0040A00O882A7004004eW20H00030A109040W005W02H00WKG1W8W00085008220202004
+H8Lk4000WmS1000H0000G00a000WG080W0qzw3@l_GIc600108oe4srJ28440rzdW100WFiI
+0001moD60C000200XG000GX00oWW2000W00003G000G284W1WK0040KG0500G0H100600000
+0FV0100060000G0000ePhe6CmV2X@R0001YXtDedz40100040002C0GKpOqqb1bzp0K0m120
+00nRa00S8800Y0000n00001G005YGW00290KGa300W1W0O010G000W202O050W0006000xH0
+00G30003W30000W00zWOGj@C0W06W001mou90G10eZM3IpOZ_zhetO3S20802G2000W00W00
+01n080080Q4O004W0090mrK68IW0G0002100080002440W000000W5R100112Wk@D0200108
+0WYoJODP30440iOI200G4804000000W00QbvFykV28I02gJ_10008W0000G8000412W01Gat
+684O10Y00eG000820o02W00R002C0R1r1W809qXKvO00E000W3bivO81k4gpGYQKDekR3000
+0Y89GQHgDwwd110Gm000W1000wtT2mc2y70GuA30u7Y0m7D0WhA00NL0Nz84_820y@70igg4
+vV08wCpGqPcX@pC3LLbAUuXezF0HJL0008I_WepC3HhgAUum3yF00GLLX_XV6WO300006mK0
+2mu@6000BM00020s110KHLJ8X10000WE00040Ckfs0000604001800AW48M1OGi2o285m5GI
+CBWa8n09HYBGY4N0k8k0P1q1u2e4j7u9oSmHav700H7ml0uO0000Ba05WivCW8383G1GcBCP
+00082100WKPO00Y800a80Y0G0a100MV4ZayOmA0000Uu00_V50y@D8eggeg@0m@0SWggIG@3
+WWEiA1bP62wm3gYggKbgEu1F8u@0Gm3fAWPA30@rBgkg0gg2xSr00igA0ul000enETDdQX3Z
+CmPe5y40W0G4Gb4RJpGh_60uD1eX0a_icX47D00G2GztFyIz3@YRm4dLaoT2000Oj200yUU2
+@1pmmjRqZk4TVYnZwFKeB6B0BHzuC00mrf6z4A97Zksb8MOIW00Wi3U2vsR0W00W0sDuuy40
+000D_U295j1u_0W505gTQ3ced140W0000010W0G088e1U30W0200000022mAy6CMl10002e0
+8000a0gHi40080q6l1W008Ekt0000Kk5006DWXhggetU6w6qWK2C8@V3040W4r@30A000001
+ygV20280820100000H00400G01100002KW0018W0Y000000G8a_uD0000a0040W00G0Y0080
+GGG80000402800000Hb000000240W000G0Gmvw6asl10040400000A82YWW0008400W0G020
+400O008001440400WO_J0250Gnq94gl14G00G010000040201100G400000018008Sul1400
+004140200W0Y00200448081sR00a00W00e5YR00111G0G0FLP0ew2WWODeTT3Yay100W0G1H
+GoXp000W019d00aXWlxJ00W8mHN9afl15lRGfu6aok10030EBm0G810lSR0010WqqDW20008
+20WGjDOHV3004AC5k1xzdW@10WH@JG010W000WD@J8UV360s0I000200W0000O400PtS3wqF
+XmhFvI_4W000aNR2mW0010706Ah1rcR0000eixDeK@400uUj@l100G000W0SSl1T@RGX@9a2
+d1dxpG0D6y2W1B@d002WeL_POSw700060H00001020W020000W0220200040W8@V30K08yxl
+14G00AZq0100080810040X000GSC1m@@600109102oXcXPLD00801004nf9J0I10W0G0WlRD
+eNO60X0000004218mJSR0041100W004WWf_D0210nkM600400G40W110W4@DOdw4_Bn000Z2
+0000RhpWI@D00H013000G00000080011aeS22B20_gt00101z@R0410YxhCG000GyT6G0203
+W01GtfFCJ83HpR000W0000G58Q00O1000WWFzRW00G0000X0W000010000e0010W0010W000
+W_D0cUlY1gD8Hn4EttWQBD0H00mrb6Kod1NfdG4wFScl100040W010010400010W042W8020
+a00W8804W0q08W016134008A1YG1G00HW080044W1W00420020808WG4G004YK091000CX00
+00100X0003000101010082GG1200G00800020G420005G00050008Y80408I00G5I000600W
+WED050000GX00400280004K00H0GGW20nViOG540G04W400W428220W40GG00WK8W0W04A2g
+0G1G014D008AG48000W000018G82G00G04G2ms000@JZOR00001G000xvRW0W0mfwD002010
+W0G04A0W82G0a01A000G00001510HCY08A28C2C0841000G00G00001G028GGK04W8e00eLU
+9000GqDF3hJa00G1WEwD00G1G0HF00000004ou@60Q91e9W4Ih@1000K000200HG1A0WyDD3
+0090WGe0ePL3AiF10001a200004000e0vJ63AjlYA3b0m00G3_CS@c1Jf@mJu6m300000010
+W2WsyPeKz4Q7t0082006A000000D00u5k4sWq0G2029YpmNyO0000fIV3gvdXr5V00A00008
+4089W00mGMyt00009000000C6Cqk1W800wTdXNkD00I00080048040v02mc58022900G0800
+W0200WbxR00WW8G60A088P0GG40eG6040GIOSO00W80WG8KgnCSsV2rNQGYE60000020KOUv
+F0MX104400004WKmJux@4Yln0W800041100400WG4100040082000200G40008X000en9FEa
+7ZbXJOeh400800X00gnl4ciW1000Kk7400004DTI2000000J00400eiY4000m20100eX02G0
+004420t@R000e48W00O0a00W00X5000021W0000O20000L0ojV30if000W7yV00wF00q@10e
+7H0WCUC00hyX80eAL0u@Y0000G000WF80I19eW2XG17aW064000SP200VrV00mHdL0WCpGLL
+bHCv68pgYsX70j3FeA000pOEW@9005qFT23yRGdzFiSl1pddG7060W000010HEuC00C0G080
+W2W000W100WOWW0W1010306060C0E0O0C2m0O408000IL1I206008c0O0809JO0400W4zD0H
+500cA03WK0605We0A041K00K00Ga2m0G145820300WE000910000004t00m41m0W0W0004Jk
+1lTBX10800000vUR000000Sr000000u140mD5W000Whg210000_u10zu@2mCp4GLL10pCZPC
+@70_N0u1l002000MSp00ym3000mCcS200WAtH40Vm30U8000000u5W00LX000e0@@7Wp050p
+uV0_@V0KS1uF0Weu200000W7_7W@@JmW3SkjzeGb28GHc6owrC0004u686gx7300SrpFdGZu
+9iol10010wiUZ_jn0000100800W90bQR04W0WY@J8DB3Yqm3140000001G00q8k1000WW000
+0m7100100081WktC8hR32Am0G004bEPm1w647W1J9d0401WtoDG084GmwC0H00uQB30G00Ss
+z3HJjn9a6000G8RW4c8d1a200G000W00X4pU20080QTr0000WnARG@uI0008vwT3ETM2G000
+9ibmsvC4QR8NYpGiv9002000mVB0000000CT1RGk@C0101eSU6wK8XVtV0088mry90000402
+XmAy600W00WW08200ZX_DG00G0G040040G8002040008000W0440800G080W20G80000G000
+0Q04000400G18040G0g00W0W14010G000Wl9008200H000W0020X0GYx68400OIU3gbr0014
+00140YcFX8lCe2m40800I800eTU3W000000G438300G00e040LoRW8GO2100g8K0000241mW
+40e20aA2C00MK0K80M0OWC8W12Gm48Y0H000KC000e84410e0G4WG50000080002220I_poW
+diDG030W002WL9D08100108Y7AIu@E340G5awl1080aIztWR@J01H0mp@6020000aW0X10Wq
+HD0K20000W848000W4aC080G0420D30a1000492GuG0080X0W46501aG4KKW420104106030
+G080G0404A448600H00XGH00M000GP6004100W00G0140WI0100040600W00000ajiC00a00
+001K082GvhPm_x6W050ehG60090KCi1bpR0080020W00WG008G0yYj1GX00W800000104W00
+0040GL200000083111I0000608W00G000000C00W0G812002eW10GWdvJ00000eg200000W0
+10s0c180e00010gxFXN_D0010m0k604000WW0mk@90G004080000080040T@p00e0000GG5P
+dG@@60028004HKc_6040Y02041W0G000W08W0004I08004G040m3y6yST2000O0D08yek400
+0GUjsWSfb0018HO@9ynk10a80UuV30004xed0aG0WeCJ0040u@@601aGXCI240080000W040
+0McFXXZJ00HXzj@90G00000GK@86SlE30200MZd10A0008208000O200X810000G0H000txB
+10Y0Wt_D0H40mly900002G0000082H0W4xVOmjy90200HW0002000041G20W02ftWMwD0Sv2
+GY@CaBV2W000khtWRzD0020mNtCaDW1000H0G40ypN2vtB100400m0000001O002e00n802m
+vS60000G880004000400G0G00400000G8E63MoFXCzJucP3A0@XK@J0WG0Hz@60200PPV3Y@
+t00028GW00080110000Ga1O8y64qV2P9Q0000G10000CY8800GHW014180022e007O084WW4
+OW00A8e2W40541W052060Gm05rCOXHX8W0XW1000110202420AgoW7_D00WHJ6w6Ksl1tyR0
+002800g87YQG8q6COM20020Wu000Y80mW0WXY81H410Yq1444120ysD3nLamUE68m0000800
+8G54G0120Gm048W00012G00m045008240G4W842800000I4H4300033104082040008W0W8s
+n40tC00B008R63000402Y0uv_400501003u8M308G0SpU204008I001G00000W89010G0Y80
+000WLW0aSR2twR0024WrHDGYi001010H0100G0Hb00820fa24b4100GA00I0W100802W004D
+b0I9fG24008504910001G100W10005e08W0IDmr0G80X0000WK00081902G0000a00Gb@600
+101000A00GA0000Zwd0e00000W8a20004W000fG000O00A2WQ_P0800mc@6W40000W0ITt60
+00030005G8W80K0K014W04OW1AG6I0O10000428G8A00G023006000840mr_60W03vXw400C
+y200W0WG00Y01Wg9C000420W2aqxC081000a0000200840gEd10008000201G004G0002004
+00WiICO5u70000P000GG440GS00W002440000G400C140A887W3818G04871GG0000080Y08
+02040m000W0600X8000H08ta4000008340440000201m440001bW3G00600I6C2G1C68IOKG
+000GW0GG0O00Z80Gfi90900O9D30W04W6GK4E11a90000O80V1@GEP6SQl100010008208YG
+00aQRx60082W08400GK4G00Aq8G001400Gq8W284W000042XG0000X200ivj10008xem0001
+O0X80001W000WG00020G9G400epsRmNnF0002QoU30H200100G0100400mC8I8Cy4k9s0040
+H600G0W34900W40E0W800M0020YW_00G8mx5g300W2RA06040W0rH8000r1qB1101yH00G00
+4120000B0200e22000uD1I1000WQfbA30004900000EGa00000u00zxR00e610009lVQG7@9
+0aG4020q2g11020g05ixXggAI@LLqEyWefgALHLLUm37CZPYkAL5zXc9QLfIq@1WPEq1pC34
+KLLG30G0yH0A1s300O61pR06O00Y0000y004H400m3KW200mt@L0WV120W100gA20OM00000
+yl00a@V20P00000GGq10003W100G7W2We050HD00YQ0TCt1w0g3q1K0e3e0mSG1Wv7a2W1q1
+q0e380G500WW000pF004JWE8c040008000I20008000Sp0000000O_10GK1m002W1WIG50be
+e0AHH9GYYI0C4d1g040m088Y00NqR000Y00080G0W0W000OE00WX000tC000606000C2t@10
+0mZG0008mDp0mFU0WR600tK00_82_@H4SLL8a2W1UC00jQ00040_tg10024uAL1u@20mDzFW
+Vw30NL0x300_F070000ux90uX000OrCzV30007w000WAFy01@702gQL4yF08uX7eg3Fm3Fe2
+LL5mlyJG1c10Y4100aNN_7Wg1C0v110L100gaQ0000KTLveAnWq9SjF33KlHZi6atl4W8I0M
+D@aNxJ0040mjJ9SMF63xd0W0001020DoRGhN6aT_3dXRGau90W4IgcR600080000cV00Gup6
+8000001WmtkIayT2G0W0sztWPoDeOA3Mio0001300044008iNM2@xZHjcIaDS2p_RW1A4WSp
+V00GuLGu6COy6PfdG9vCauW4lmZ10G0GW00Wt5dG5wXStl40430YAcXidOeVz7oOtWvyC8uk
+40000G8000000e20002W00VjRm@_94yU28004K0G0280WGGW0mSz6WqW0002048W10100000
+1G0WW0004050G020040W028002280GW220003040000_c@D0000C00A0Q0G0xsdm6o6q8V2x
+qp00W1W@@PG000KWw6SdK2h6RGUx60042HG8GGPf6080H104W86188XG40GY4YGmGH0W8G44
+550a8820K25020X000W00A0004000aY80WG00W20150000e94000qIu60800G800KMT6002A
+u@V3oYpWuyJ0M301100000C4GG0Y00001Y002000uQr60K0W000G18WGW0YD0008GK_6W088
+4080W0G20G020002G4001000XWYW6002G0Y02edLQ0G4W0I0G00600124G80W02I0018K042
+B802G40400000J000GW00000G10m0O0A2jA10G00ZIRG7S6iyl14001400100004e0Gm3l6W
+001008m0W008100C3xbGAM9y@l180028G00W0Y00002bH000aG208W00G0L1224GaW0G4M0I
+H40H001G4W2400H00OxU3000312000000Y0W10000C0600_SC10202040000W0ElO2jL@000
+M0W0000080020101008HV3ApF1W000028W2wtWMNCeZB380200GG000G000Y0Yo@DuP@4040
+00022u0C30084WG0004G00G00000a0X@d000fvOC3fpV3_ubXrjaOnV90W02200410W0nbi6
+yUe120004000100GPZV300W000WH0WX000021040080008081W0400G00W4W0WNmJGGZ0m@@
+CClb1f5pmi@6ykb1@@p0024awpPOjR32c@1000G201400W0100G0011O6@6me8W000410X80
+0440BaRma@60WW80000028400n001_RGjx9yPi15Mk1400WdQO000GPUf94y13fCN1060WfY
+C000040200400I8100Ayt000820W500W48002000I0mh@6WG01egV3UQc1007kvplnF29Se_
+3J5cGY29aPF3rhR00A03000Y44g1G08I020e1G0G0I002LW1G80HW40008GIX0W111C40213
+C22aW8WSG00022K88e8WG86408G2600GeC0CzV2WmF0wU5300200W00Qxp0Y0000040ows0G
+00024Y8001GCVl100026Br001000080gtF10220008440GG82W400088GY2G08200X20GG4G
+0W01001W00GG00700G001W80000C00208100920A0e2e20000801008bL3000mPI00enV6Yq
+qWUzDuCD3G000Ddj1l@R000Kb@@D0W001e00WY_DOGR680008100uNU300KI1000000858I0
+6Oa00aA0Y8b40GAf0Ge8Y20a208096200f02W5A20aYK0q44080I18WW4Y0GgK00WI1e2S34
+00000OZi8y7kzc12a0000008bK081C18vV3000G10b000W85f00082004000e400m410WI00
+1G4G0000Y3zd000A4000H0040O60O00G00X1100004Wa08030G0I04e00W280OeG00100I0o
+01m008WG40C44802IoG10WW00XG00WZ0yCU2WH10ItL241000004000WW8000X002G0W8200
+M000ektt04000a24G44K500e0faM3020400H508W000A0W@@D0m000H00000G06020G01e01
+4W3a8Y4W204142YW115002W22e44Y0H15G32005628084m0000WWGK2e5Y300W2G000X040G
+1aTh10000r900CBE31qRGXh6acl12O010504avl1K000000820020WCW01003a900070S080
+110040004450004a30bWomx_6000G282G0GW0909eG0A1WG120G048G400Y80200004Y080W
+20G00W00A40nlG605e00G0Woh@60001000kJpeFSCF30W106@rW7CDeyV34f0000e04W080q
+080e0W00000104HI01Gb0GW00K0G049Hnmn00eN0G40y2X_1GG8ix50200X2WH082q7010Xq
+NGV008KsV10H0WG184041z2m0GGxBqh6005wl0090000K0000400m0894000Gl0m8mCaxk12
+1W06AmWhtD0z10W00@5WW00008O_Js0041z200G0qB4900040E0W800G0020YWe00080m100
+u@@4002NP000000_e800014fgKvZ3Tm@0Gb@1GqFyWeLjAHVu1Y_m3KrX7eggEGLL5jggAQ7
+gAqEy000W0gEaT2nsR0r10WNyh000KW200ldwD00FK50V1WX@D00Pc100G5LLLagggeZ6m0g
+gILEyW7y00pOcehILH@NCS6008Op100W2m000W100WO00Wv700pF0NcVWz0T0_1A0s3q0OAe
+1oy32av7u7pFGdK0I081Qk32qS7e300G70G0000Wa00043mzz6S6A30010wpt008Y00mS301
+050300WA000Z10000000c008s180W3q1e0e3G1mDW2W8600HCWCYO0P0r0o0A0a1qMPC0000
+00_1000W0_@10Tr00QJ00eyS3if00001kH106225SJ4A8822GG4K800WG8K0V4102XG2kAX4
+4aW08429400G2G2Gv@90Qm1e@@42spW_QIeq@A000iTYl100VyN@7Z1mhOxy46LvXaft8aV3
+000WmF00OSD3oTlYQua0020Gs@Oy@V20004VztWmuDuu@4W001EGl4Fzlne_600GjO@@4Izd
+XMnD01000440WDph00140200WjZD02000208Xa_DuzR3QzqWcqJ8aQ3UMdX8_Oe_U3o_LY@x
+J0WA0GhQF4uU2rhRmo1OS5E30004EQ@XVZCeJS6YmZXvmFvjV3000mPG000000010WWkmVOs
+V9A7dXB_CuaT32UnWPOD0002uXz9020200030800ezvD000W20GWWivO040Y480Y800Km008
+G041G4Kk1BFdmky6000100GhC000080I00GH0041000000G09Kty6W81000000GG80400084
+00_zt0I0020400G498zLi1rnRm2D6y@V2W88K00W0270W020WX0021X400005aWG0OGB40G8
+G402n2014G4Y9KGKnG0A0GGK009050e6Z400WeG0G040P0I808K4200g02K102200ENp00fF
+Z88Oa0001000A01Im000W1100A0802MfsWfmD0001X00000GGm200040020W00YG014W0880
+6502800404GG282GK00nM@60000X0I00002200802G0Q0e0I080005I0818W6a0G44HWW8A0
+0G0W458GGW80W2H8W8010IWALKW8G00FG00eWG0G044GG200u01O40WW004GKm60JX00LK02
+04O208Y00H100W8aG0200100mqr600HGG02008WG000002GK00W048W80W0qCYe000084Ce0
+02G00500160048Od@90G0W000040410W8000200_gs008000AW00W0000200020020G20441
+W10G030K80400211008100W000804W00Wqtl11FR01000009w2010cQq084020000W00W020
+00220004008080P4cmaqC00800WG0Gr4600002G01INu647s600G04G00G40G0010400G000
+0104W048000G0W02002000G010000e0GY0WCth10408040009W002000m35008H0bxRmsw60
+G01G800GfB9008Y04G00048WVCheuS30080000DX000mhQ64@V2t@d08085800900010i820
+0000100ux_60G040090140000G0G200Kc@t01405Y0W0G0000a0020000008Uw000bwR0G08
+000000210MFFXMfJOLL3_D@XEaJ84z400048G0We1T6W002CfS2000Ko7p00W80e040UOt00
+WG20004000G000e8f33W18000Y0004Gm8d6000000WOL8N6000000G400W100G0000W90004
+00088CP3g7KYd7IeqU3000OaSd1XbW10I00040000W40G00000o0800404320000b8O00000
+1a00fqRmI66q0@3WdD001000W40W0014100080G00G00000G802200040018043000008ZPb
+Xlub000G4000G0mCG0020RLH2400040W1K20004241X34WOa184028G49G802g0G40213G42
+OG0KG0E80W001Ye0n84W8Am800K1001HW00018000000JN10W1000IW00G84D40000f002G0
+4We0H0G180KH00100Y2YWW0W01n696quk1TkdGDh900200Gm85L1H453We35n0I0GWcrD04G
+000uW1160AWW004051P2801110020040mG004W00201080Y010M024G4Y0L4024Y00GQ0080
+09410082000kW0040X0010W0050000GY1024H00041000AG50040WW01280G402W8WG0500S
+nF3W000c5F1W00L0500m0000001u9062w@1082K000W008I10214G060e02WayJG2I102W00
+020K0100G60W0A00uzh400000ep1uwV68b0WW04089V3Mht0G2WKaA0818K04ix3X@pmO@6G
+0e00002Kj464_G5VSc008W08W000G10C00000Y8I0000G0000H40000a00080A108j_4otr0
+J100tNo0G00eMjD00G00e0100200W24G4G8P08e0OCy7UCdXDpD0004IViL0000004W09000
+0Y6401101W000G1G0H00000X0G1404410G045W000028042q802e80e0A000444yR200og2J
+FXd5D020m0OGn0108W20G21W02002GI83W340WWOYV0300mTZ60G00eUV3wyt0O0505LB102
+0800Y0Qe6Y000232C01000083H100000H80000G88002H03W042H00G02WI04I21H0089bn4
+00000YJ1uyV3I5sWf2C000HW8H000408G8000GG00G080204GY_CyQk1LCd0040WbzD8ra4I
+Q_1W00000eGktt00008A0000LBG2000PPx4808b0W3GIBm2084WSX000T_o0000SbZ005_p0
+s20210qB0800052CKxl10G0wL000akc1W000QLs00G420004800146D3WC08cdrWIdP00@z3
+054000000SrL8mg1u@@ImL30exk3GP2000000zxEW200_tN8Sb10uFt18Y60m7X0W2IWhML0
+tT30kQWSjD00GJSx@600Y_1A00W400002000ix@10000mkJmhRAWkh0WegVOqQ66Rr0L1mV_
+300W00J1mvW2Wu3mzoFC5j10C00GS1O0m0m006W1000300WV000YL000A0C0K0O0W3m000i7
+00mS000Z100cA0N06mlt6a0k10DG000W1000106YA040mWwlDWv0000200YA04Cp0L0m0O00
+0Y200OQCR9G00000G0GW06000000W8008g0G0W01oPGGA9aoF3G00G00000004a020W4_@30
+_rN0Cp1Mxt0N180kf00SJ10Chk1_000b92@vrN_tL@10004000uz000ufP008200000K010G
+1Y0m@s7m@rD000000000Ye00OL1CX0mOW10uL3qyF300W@0000u@@1qx00G@@6mS10000000
+0S0y30C0G000Y00aui1BNNnASLaAz600EpF8tWBcP0010mBTLCLl1Vrd0004Whgnu@V3WW00
+SCU2RZR0100000G25@d0000mpmDe3K3oGdXiuO0m73mLRIKuD3BT@00G020040fRbm2@60G0
+08S93Qe3Z8sP00A0GFw94jR2fcRmRw9CQy38400Mtc100W0ZtzmauFG001OpU3_vt00300Fb
+R0400aNiP01000080XauJeBU3gq3ZBtDelkA000000uGP1_AQX3Z2wz8l_4GW0W0W0O20000
+9G0WycCWe4G01WG908G44e801G0102080H08W000000G00YmW0022000261000001840mW06
+000aG0aWV20bTGFkFXyaDecy4o@t000e0000a_jsW8xJ0020GCo90300eMU3cht0804W0040
+800084W0082H0W0Y250400G8280820HGY04180GA001X5Wa0004001QWO240X420382H010g
+0088G44W0X425G00W8004800RSP0000IT203@vR0442010KGtBb008WWF@D8bM3W04000000
+2G0unV984W000010e04GA80040m00a20000n048000100G8W00104430G009W0404080000I
+000O0P04020Z16640W8jWA820004Ge0G5G0W3gWI904010G1u0I0401G0O4092OW0005ohz6
+008000mF@l@60008W20e00f100600dmdGK@60020G81GWG000G0000180000000C4000G100
+00028W02004W010e1041000GO28400021000G000019000484200XG0000nG4y042006a809
+000eWquD0H20my760020W8a020010400G00XGG02Y4Ve1DAd0e50uR@DeC@4AktW_XD01000
+0GKW3xVubU3AYt000402U00kLa1100080O0G0m02X00000W0420W5iD012046000000W0Am0
+801005G000020002Gq000G000W002G000Y00140G4aUwDW820G_@6000Wdf0000100O00200
+G000100G00K00WGGy600002880HN@F4tR21DM1n4400p040830800W002GOaV3W28m00000W
+01080244Y003dP02400WC624G0000W0ICP40C800HWG0O00400W00600KYk1ngR002H50WW0
+081XYkm00102020GIyFXr_D00010000CW000Trbmo@600aG0000HiV60WO0000Gmo@600480
+0WW0000000810000W120G01000G0040018W00G001808008080a0G000210100404000020W
+04exV3a08CKNv3WbB0gMA1G000RXOm_@6080G8UG3QOdXvIJ8xS3004G4Sw3pwR0008080W0
+2W04gwt00W84eG000108G0W00200mzv604200GG002G0204G0jcQ000OWnkCuyI3Q_t0000C
+DsP000014G0G5gR0WG1W_wDemp7opK20220000W0280sQJ200108500W8I0GG2m022O448W0
+6e26005IW908G020412800052AX000GX305800eX02j0H080wGe844880CW680080021G800
+A000G8W8000qvf100aV1G081W1660m00X100e8YC8GWY0018K2l1e0GW000W00W000W0Ixx9
+0H8000GW80001G00WWG00188G00210WG01W0W032WCu004CGHO0XHe0G0601001140000045
+G802cO85KL03H4KKC880YGeX00C4056LW4O004nX0A01I4aWGC001085um4AW4Q8Y511012O
+006_F1mEE00WG00200O0XGGm0G0020801OW0001G1200Y00000GX0102000WpqRm8l9iQl1G
+1100080010WeT@40000101000A1800HAG400000f80000G00WKGA7ue8049510H8X00KI104
+GG0080AW4000G0a2081080GAf022I200a24GI400e0fAzZ1000aO3W0kndXtuD8Mk42Vp004
+00000eEqF100G2WIA0008000fW00800000Ac1300X0f85410200088002000612G8300058W
+80YoG0G1Y20G0Wm4001e0W16000G4WH20900100a00W21Gq404nGe0180O840W8WWH8212eW
+8800WGCSAt400KLqg@3W405YwqWuwJ0800Ghk6SLf1l7Q0GC0W@wC8xS34K810GG010O1880
+e0n064Y30W01806LI2G3008o0OW907K0G40010GU0008010P0660060340G0Y000G0e1e202
+G1I483P04W00KzX64BS20kT0k_tWFxD00G04000800W020H0EvtW3dP008820001W2YWG441
+008E000400Y0A00000H0W0000WY00000WfkJ3W804A0200400vK@60MH1GG1W0A042104220
+00G0819K00K0G000200G0H8zJc060400GG9Y80GtGc1000qG600Iet0G400000G4010000Wu
+gN300a0yIi4FAB100G2HW00bub0sEW0801A0G02W0000018p1240WUXUNG080@5084H00W00
+0GyB1420OZGs1800cy20000H4m0082wB0010_Be@62C2vl0010020KG_@90009zNV62Vp008
+0cpxp00WC0G00eG0I4AMrWgzC0zA0000H4qB0100KHwRn0080zE1W20UB@1mFp0080W@100N
+D00_820yH400Wx1qg10eD5uU0Wm7Y0WhC00NP000m00kg00yG3S500u@g4KG2AWW4KmW88W1
+980kQ02200y@V000008fC300M30mL30000W@@NF0002_3A0D@S0wn@10000000ur8uIOd63E
+5N20g209fRGL@6O600q1000G700WE064TWe0m1Oauc1XXRW3qnK3W10AmF040608GY1GWYE0
+0it0OOS1o2W3e3W00301Wv02Giu6000q9Lk4000m2I000W10000032400080H000OizZ1A00
+0106CX040W08000W00002000O2000001nF000GGiS60800WR700W803aV020u0C000w000CF
+NV3400xA3GZ50@@70lfWivDu21304019815GG2A8GW4GW44WU4X40000014kH10SZ20yH300
+000m05mL00W@l9@@400K_e00ta00000g0WmtC002000t5008mL00GL0G30aai1BU@00SxN@3
+80000400WH200GXP00mK@9ChW1pQlnzsFyRz34040YWN2Wr90P18njOO00129VWD_@t00012
+TQB1800WZpVusM3o2FXZQVuxV6000GAE00OAz4YYFXinPemyGI9tWRoDebR9_VLYEwDeLT3k
+shYLsV00G9Q1uL48037wjHpuISy_3nrRGKy6KbF3Lm@GKVU0gB1ut1FAEOZBqVuHV3M_s020
+00nDP0000eznCeaT308841G00eNU3G000W10000004010uuzCO2A3I3FX2CD0000ECH0WGqb
+8y_701000003G0000W01WJ_P05G0004008000JZc000000421080040GG080000G040A10H0
+0GG2ee024014WW08W004200X00400604C000ge01H010W202G444W020000180002G00qV@9
+800000WncG01WsyD00G01W04WtbJ000400048000W02G0oErWJSD00G1000W00GW4W20A080
+G004W24G0100020G00800G0100W200010G0000GG0100100G322H00e00033GX02023Ca102
+000K04G00m2G20K04G11W0520138W020020W00840Wp5C0C00mco602000utLncx908G0iJT
+3gxt00G00022000G028800m008000qNuC0m0000G008W0G0W2W0002G0C018W00002080G0p
+IR0400G200WVwR0010XQjD87@4kv81001000212op000W00Q0G6ttWRlCux@4000OhE00eHc
+4IfOZl@DenV604W009800G000G00WK5D8G@M230cW10hVZJEj43mB40t48t0fFyHA6fhb0_0
+0Wd6gBJ49ob73003xHAKtxw94f09WEM0wk0lc9aeMXAoIsWJECxVV600X004004000o9@6Sn
+l1bdY10W9xAFgRNN6EztWxLt0Cl3Gj9IVQmqbSXnFi6i5S25JQmXb9abF3000GFWZX9oJ8nO
+CkaoZs8_lf7ycnfYa_b0000ip00WpYUhnT6IwtWpdz00G3mgIlrJz35ZnmzuO0QG1e_9p00W
+1000G2K0000W0G10000C0050IG1m000481LA06azm6LhHIWL51a0100000H800o1794X0G48
+Sa0000HW08NA060EI0emTC00qcEebP000Ha0000WW44000089IG08I2Wa804a89a2G28Y300
+2d0Cvl1000S00000WS8850301J0iXp@P0z@iFAY100000Wfb00WNJE1KF10eU20r300gd00g
+gpC0C3WU00000iACZ7d95O0Ob00WCO_3_vKmy9SZS2NRY1WG2WmlV8dU30002W2008b_4q80
+0CiU29qR0140WUTUORL6AoE101W0000Ww9bX3xD0020000800400VyRW0G80W002DWAHzx98
+04G00e0O@z601200400GxgF000@hK03cYEXqAU020Wor_6ael100a0UdzX7og0010mv_6000
+20100my@64a_3JFQ000014801VudmVLL00T0OnV30002Sdl400110a00qW73rzjHwz6KrU2h
+oR020008010Lmw100020H00tzRG3z9yaR2000WTA000040OhrAMGmWBIbuoU6keL20008W0W
+e8y001K40WG2Y120a08W2G0W0200140806W444qTs6W000If8G4WW01100G8X040O00S@l1Z
+xR0000000WWV@R000ohSyV8DV3W000W410eiU64C080004000122010A10039R0002G00800
+GW0e2810W0820W4010W810G520100G8501201010200800X484WmGG1X58801008C2OYP005
+208W00020b8G0G00X02X000004020600G82P094W0H0We2008000TkR0W234000G0880000W
+000052W080041n040W80000008001G0810008412G00802C80G000062020100004OXG01gG
+W0LWG010W10W22c00G0X021Y1G0404a50Fq40Qa001Gg484G00010X001G8084XKH0Y8106W
+2e0180G01208800HuW68C0046q940080W010K00W9Yg015G0020HsIrWh@DWv02Gyk6W0800
+0GH08W10000K000W00940004080G080000G190X20G023G0G020422WO0000004U01G0G090
+H22008210W4w000214G9WE00G00u933Wq000002010AW0Y0O0CW0a8W000W80010I00Ga2a0
+200024E20sPs020000408s@D1080100200W022W8000000008R0000W008QAc12G0WHxQmRm
+C090200W000008WG00021000000400HW808404800G0O9004024010G00000K0004X042I0W
+800W00000Z008100084140G80G0W00W40000C0GG0008G0030604W00420W0C8W04800W002
+04006000G00OJT609u0aAy60080004W0100W0C0280840040400WC44G00000W0200200W4G
+oG4H00e000008PgV300108X000W900910H0000D@QGU@60XK040380080800H2ppR0W02148
+00W8140W40G080uDV6U@F100Gqu000wztWstb8Ax400C0_7l1005Gw0t00G0021a100I0Krl
+1091002W000GI020a1022YjvD0100WWG80100aHyR0020000020020140G2200W082002W30
+0000O2802400040W4GG0000008WWXq@00WFc6ht0048GUv6yBW10GY0000020G84818Gfr60
+18410001808002H04000000e000W00G080W02G0G408b0W08000480W8W209004200021000
+080110000X440W0100082100010MyV20W00UoM2Wg40bRl1800000020100Yjm0004G001E0
+00008a4008W1800420800114W0G00000061A0G0000IZ04L24nmWX09W6WmYA1MZW6I9K42W
+X2K1W8W00mX25WX2ae8032J0Ea1CGK0e2eW110m1e6908e198GG8W080000W0G08GrvC0000
+ZH000G000010GpWB1000G400080080Gm0000400H04WWI0W815WXOD8280W6f4q42G1ke12g
+010c0aWC200H80a0A08e02D0814C0X2Am1418WG0008400410G0100G2Cm1101000H00eWA0
+O020244OAGem0XY1WK0WKH0W201e001080X0qG204W0eoV3_@t000Yfbbl10212000WYH001
+05gA48008K484W82X44200a0e0G88WG01o8104822Z4486420DQWG0ZG44W8150000YGGH1f
+R0048000000GA8WWG0810aYP0a0f00AI15aG800853c10W010I1020aG08b00204008G1081
+OhQ3_ed1msW0v3x1000A20010020MPt0085000I00WK0G0000G0858I002000a2004000GAf
+40aOIW00O20050021GIot0Wm000m000205130W20W0008440008G8a0010WWG0I00105G00G
+Pe0001410bH8800WG80W0000000G695mGhzCqwU5000GG0G000009OT302H0CZl1000Q0080
+000K400020001905801WG404804G01W0m0880001027zR0W8G0x00OmW9Y4I00G0220820W0
+2W22044O1G806mW0400GZ0181q8G2e1B400K000018G0O5V6004f10001000E000W7qDun@7
+0001EYa10O0Oc_t0800080010080IWD0IWGm20400040900000G08120010WX0G4014X8004
+W000Y00W00008424W00A4K0G04W010408W42000049W11800gG03W00600H1G0000002bliP
+ODV601v00W008BvDEwtWj@D0H10GEE60220080W00800200H8XG10G0e000e1GGG00G0020P
+90G80W102KRl182080000W_3808W@20400X0G0004w1003WzPet5402q@1000000O0082P50
+000oBm21001Un000VdOmF@9O0Y000000900Wcyn000G6G000053P20000KA0qsI2080eW2zR
+00G0bA0080WG80000el0W00Wle000300_h@68G2y@_G0qO1u@@1m7Bu_V3SJc80AeGIG26e4
+WCO4G8m8090004X0000402b0838446C4W4O884WF2X40urV6008d000TFUDC0W0wbfC3GmD0
+f20008087e1yl@0WLW2ug00mD900WJiPsa00NC00G40Ur00qG000W100G70L060T080g000m
+0000800my30Wv7W1ZB030KWV04Wi08043G0Ct10OF3mGG1a50EG70106020t0404N008k0O0
+00BhRm@@60Ii08293Uaj2WA000e0C000O000O2000A10W95W1W2G50K06000L0000300ik00
+0c1qnK1e206WA0006000xM40mW2W_Z04900G0WV_G40yl@0yV5000C000KmD2001000tK00@
+@F00mV0yn30005uV00G00CWRA00V41WE400Akj23100XmZ100u5j00000Wl18000GK@30002
+05C0@710000KSr00ug1000H0004106Kr70GWhCW0V820gNL0kvSkF020G8rV34800SmS2001
+2000ICH@30000FFA10400lwdGywIC2a1dZN1000eYxD0100mrz90WO0OJd740W1G000000W0
+010WIyJ0488mQM60202eR@4W0100080G00000W0XasI0WW4GKy6a5V20s01YZt00804JJRGx
+q6K3c10810QbdXhqD0300GryC0080Oju48000aFN2V@dGLhC0000Czu4oEsW0sDOCF304000
+W0021100000020409tdWY00WXZt8mT9gm@XdlDeCV6002WKdc17RRGKi60001WI000001XF_
+I00002W00WimD8Yx4000W4AN2@@d000YU8000800000010GW0eUy40004G0028QS3o6FXf_D
+85W700GGSHV208000041001040W0804GA060X80H0tEn0K0C040500114W00L02040G00G1A
+8840q0W200804GACS3W420290Hu@V3040Wi@V20yQ00000G0G0W000000eG80000G0GW081S
+sV2NZP00220020f0400000G0G28200000504K00480K2824100441000000W42eA400X0G00
+0006G114404000108040100GW000H000iE0I8YA1048A00a4G010W20G010WY21804K02900
+X0080142G000W0G0acsD8KB3000G0N000010A0240G80020G8e040Kql10802W00400080D4
+K401800m0W000040X0004K040102B000G4WeW20C044WG0XGK2Kee0680G050W11fW030200
+064g0bbG0I001W2W0G000G89W0W24YI0000C41W822W0C0Wm2W0000362X2I0G0450AG0820
+2YK0108e00W000800008040GK6l100_dtPt04H0G2002C48304040810Y00004W0008000G0
+G0111604422W1001e000000100H402W00A0S4A00AWE4g40048SGaX41G000L404K040F4PG
+p@6WW0100000GG0000220000fHXS02070010014000AmG4G0000200302ukU34000Q800OHU
+3Uaa1m1E0000288804KS2LpdG3Z60WG0C3430004200G100GW290mt7D0WW4400000W3200a
+000WG0G00GGSW040040140h_R0801WSzD000G2X0200m08440WssF100W000820000004104
+006000WmvCOw_7000mSfZ1000000O200800010GTvI000100W0GoT601020Y00m@@6040400
+a00042G2W004100010108Y0u@@48800G00G41808008mjaC00000a20ewrCe9e4_@qWkRC8I
+k4E2D1010008euF2rWqGJ00G200020e000NhdmswC0YG0W8W08010000GG009082800040aG
+000401mSsV040WGZx6000200003400WvLI00002100G14040000W400000W0014Oyx90W01w
+tp706m0Swb1G000000C00m0OuK3AtJ2060m4a01004YG00GWG0WGGv6qXg10880081008200
+240mxb900W010WW020008082XcR00W000002FDQ000WYIBD0080400800G010W0G00820100
+000mHhuC000W6J20mru9008W10000400a35a000G20000W10G@@RW8400Y8I02W8W41WWG20
+G0004002W1000W8W041180020044G00X00GG4G900020120I0G4W41e14000208G00000410
+0W182Wi00002082000WX0KY80G0A0458408004IG0008407T9100301SO0080Gn000W220W0
+Gq0Ge0wBM3sYpWgIC08a00W018qG5808008o04110YX6510Y418aeGGOC81W0e1001500428
+004WA_D0014180e400eGG8cW001ue00HWG0G2G4253G0G811004W014400000eA000a0WK02
+G00H41000000410020W2QDOGs40D78qCZ10041G00504W90410mVJ6Ciu30C00HO4000AK5X
+K118YW20G000G4CWe4H0A80241I01eQ014102eWQ40K000002000roj60A1100G00fWG4W48
+000A8G08W00f00000900G002Gc000I95000801W00000W410050piR081G4000KW204YXp0K
+200Hxc00IGAI110OKW2xlFXE1Cu7E34000a0d1nicW4aY00006200f0808800W2K0WGsg9qr
+R20G10800Wy@Y100805f0004000X0000010G2000G0G00048300100100G2000W80000080X
+y@l10mG00100008BFyr4050000G01049mS56SvR2Zzo0082abyD00c000020WG000004058G
+003H000004C2001W0@@R0G0280A0G2800001400104G0f1n00041G0XQP01WW0000A000G0H
+mXy@F3008WQ0m00000pVO0K000WaD0@@R0000niND00C00150WHUJe4@40864yAi10002040
+0Kga101001Gm00n0400480050axUb8ZL300G9Wa01W0G81Sm02000C00400W200K00002400
+10000G4@@Rmte6ym@3000OX6000002eZK3010200G00000PSk9asF3000Y4008X00XuDu400
+0W00420408081000WYG00800e092M00OJP30200S9W1052w921W0qH0uYP380850W0WIBiT1
+0000l0WG@@R002108G03W40002e04ta1000O10010yG000mAtvo9G100000Gl10000y30A00
+0wsBXMQD00mc00008v000V0p0w7028G_Ef7c000800730@@d000u700000400zF00KRb1080
+0WG00i6D340000m@t@3c1vRbW700003C0x@d0W1k@@@DG@Z000080000W_w10jA0000004g0
+00s82W@@J0W0Q8100QH1uc4WSG1mD50mh6000000r000OGLg200G4y0uh@1GT00G@96082G0
+n4W0020XOuIm10Ga2m001W10E020006000p100I600Cx0w080m0W0W000G700WW000YB0006
+068c0C0018000G000GC000Ob3000800080GGE3G001W100OC00WX0000000oG000X0G0mBo9
+00WA00iP0C0C0g0G0zoP00100_A00Op0kGO0g0W2e200W100WO0002S30vQ4n00Tr00ucP00
+0@Upj1_700y@30KeT2o000z@100104W000A000030000200QNmWv@P00mguas9mD28W00000
+_lWStCu@V9WYP0AI000A000080050m@_300C0WhA005503iFLkf00Sr00yZ80O60qwk1000W
+Y0dX4lJeBj4_@tZ4nP0SJXmOu9C9T5RMNn@@Cy@c1hcNnDrC00128nN3g2F110G05OR0008W
+Q2J0000OXm9aTk1000Opet0H004Blo0020WnqJ8G06_@F180061b@GKL6KXE3tUBnywCaK03
+0016IR@XRsDONT300KqFcV595aGHuOylU20W0WICdX_tVuAy400080140eES3gUmZAcV0000
+08410000000300108KWS539ym0z9CL_3Lrd0004WEOC0W0008W000400WY080081G0I000W2
+0K00WtWD00C42000mkpD0G108Y100W2W000804000amG2ztR0000MQ1000G40e000GW00008
+000H04000W00G06gt0000Hd9p020C2040000880Y80024G0020100G2G000eG0Wwqt020808
+040W05a251W04500822W1lC080132eIO001G04804121W001040154240420W04W0001409Y
+005W03G290G05404004G44O00YOTK300yQ0003400005G001W000j04418G0KC001O00020e
+FsD010000408HWa0000001W00800GG080040GW004WW0WHC420AYW0G414G00GKW502WW008
+0K09ie00W02200K2200W041018G8GO4HC0330W0arQD080eWO0K02180004G009000G844m0
+09W16G000W04W00000a080001040G000000CH002Ga0W080140010828808W14e8300Y400W
+80G00010Y0000200004aG00W002034100000D048040KH80001400C004A1A8404Y800G1HG
+1W0002GNq60G0G8UB3wgo02W00200GW200W2G4W01000010W004088000000W02KX0W00G20
+0001608W08000028W080mz_6000WMY00020002W000e0000840m20Oz@4ont004003qOmIu6
+yCl1zoQ0G401mW0D20000211DZl10G04U@FXeyP000G0220aW_Vet33YpsWRyDuym4o_d100
+lM00W04010000CG0000800mk@D0H0040X00480420G008010mW10G04WOG0W0EDeHf400088
+0600080X000000418082Mnt0W00GlZ@mf7I00300G0W00W0J08008000kop000C100OY0400
+iVC3YCB00004000W040G2EI280028V@R00u0akmC08o4280040004028000200001ONF3000
+000G011W060IHGG000G4200140CoP2nfRmhsIaMU20001100881W200040K408a90G0001C1
+148104W008440GWRwC0800200048102G0008021C9X18WG00000m202100W0004YuJO0000O
+GxI80000W041200nFia8CR60800CKb100806C81O000022040XWCyl1401W40G0080G00804
+W0010G01BGO000F460000009g4t040G03xP0081008G601800W000100000W00200000W040
+4EecXBtD0000qZF680000a09mIv6iDF300G800080X8GusV3YOt03K00G00O0a0C21f0oWr8
+00gW12430201G0W8Z28W024200140WrzD0e_81201O88402O0G4q08W0TG102280a17KW3C6
+OGUG4I2P8GK2G103W000a8IK001010W00GW9PiV300W8Y0CG04W08K100L04800W20482040
+00001G@M6qff1L@P0a000W000z_a000040K29KDW0458I806000H01GW802e38eY314805Y0
+04H4a02G0G0Y008000e1H00W16002C140uW009C00020W20001022100CW002G48424Y0000
+O80e0G008282Y8X0009zR0014000G081q1e1228cW0H400ZG08210503_RmnR6Sfw3400Ywq
+E1005G00090002G10410Y05e00H00G04G00a0000410000eKNJ6000000WcPOy9anD6PpP00
+a2200W800010008aqV2aY00040480fG000a004GA0402G800_9uXWzDe9530000W80010000
+21000G100020w081HK00001G0004HC048Tt4s@t00TA844WG00H4bQk10008000Ji7G20000
+00KW0W08w8S300YG10G0002aKRx9802X040X0G200G1500140WWX80120uTC3wy@10W981@R
+002IWIsD04m00EO22X9000m040GW02W08G0005209242028001G100iBi1000mzA00W000W0
+0000G02s000thp000G8O000W010100000W41811100HG20000G10sRt0000Y05H014440CO0
+010C80H0GWW08nUZnm@6a323T1R0800402a00W41W81G8D2W0G4080e0008000W1a8200G05
+000mlF00200G0Y4000ooz10000002W0000W008uYN301008G441000n2c90GG2G0110I8E0W
+090W0W000092011fep4InnW9bD000WHPw60004eqD30P1000GPuZS3000m20f00XXGa00020
+u00VMy00ma8000KmG00ksl2004600000I50002Q1r30000qX3vJ0200000WU70000w50800X
+1W0000K70W0WKE000FvR000G4d00034pmzyF0m_@30800es00T@F0s@V0GCH00WP0Wgg0eDt
+u60Om_c9W2IEp0000qUF20z820I00_700m800u104G008G0E0O00480ZiR0400U02000CG00
+eW10mL30000WRA0Wb@D00t08H10Gg0mTU4100W000001000kvxp6e0008zR600W000H50200
+0C0OWBtDW8000cA00oA068C0C0G0S100Y200G800GG10We4G504WA08080uyT300uS3004K0
+00e0K1G1W10Xlb000C000O0m0m0W1020303GK000R100sA004H0g080Y000G8673000on00C
+t1KPE3m002m5000300We0Crl40uF000000m0_3000of@9O102G00000U200Sr0_pV008HE1G
+9700zP00080C0009xp0eW1000000ukx0400uz@1m@08W00GG00WW0001djt00y2yW7mhC000
+g00Vq70000k1nsiD0W0000L1H0m6H0004WDK0uc20GL00G8Z6KaV21rQ0800WUKDeWw40100
+0240000W0m00WCkCOGH900G2aiV2HYaGqEL4HU2dSpGogCaQM2dypG3O60G020600G4u6040
+0OdR3_yF1G0001pQGFvFCST20040I4t000ldV@pW000GW0W0j@Rmom6aRE3b5aGTU9CV_3m0
+04Qx_XSuauLT30004qck15g@mbwCKEU2WoH0osLYqrDu8P6Me1ZzzaO2V3024000G000I0Gl
+I600O08IB3gEt0W00002G0IlnWhamOI_4000GOD008MT6oRc11008000022DXDCJ0003Gcw6
+4S_3P6R00100000g04010400001000010W00000A00100wUF1A0008020083W00W0W008mZe
+6CGQ208000W0CCtk1004000Gd4FV2T5P00090001000W8kTt008000G2018W0Sgi14000800
+00820Owr4W010W00000001900000e20G00W2040040G00G2408eHpDeSV3G5K080000C1G40
+Y004408GK080A0G10800040440W2101WWe0402FW018G1m0000W014002F4O0WwB0040028G
+01GKW88050K1X1008002L00200mK08000g0810000010040W000008W0280uOV3wxo0000KW
+Y8AGa0H016X04m01800020W40000CC0200a500220000A4028000O00013K00G000pm@6W08
+8L0W45G0000800zxQ0e014AG04a001004eiVl14G0000H10000c6Y0010W0004001A10m8WG
+0H010402G00WPuD0028120G0G814W00G080002900000W00IWiTC00Y0002H408020041C31
+00OG010040010080003mQGizC4IW10002W004P040W00000500W22800W10W00CDa1000a03
+GWG080000KqLp600W000G3mpj6000a00024004mamC01G082u002000G1006mtW7yD0001oY
+ZF02824A0Y01000G14000m1UYz10008@vR081000082hzd00G0WgyDuih4gxF10080G100Ev
+c10U5000044200KRe1GY8WW020100000804a0000200n@R000GGW40W20020180iP23000cG
+0G0000GyVM30000bQR27_RGf@60IW00a802G000002G3fa0040208004O2Hkzt00WI0dyQG4
+tC00200004Xd1W0000004H0cBq00000G800QwyXDTJ0803410008210nWR08028W00000100
+88WWGY00C001090W1Hb00W0mqy60G00OLv4_MtWF_C000O620G0004008Wa4400zBl1TSd00
+01K80002200004GA000YHWW0004200C800204080204048008004WF_DG0G20000YnJCOzT3
+004000W00W0W0000400800I20wGFXqDbe@W7G0W0W1208iU3W000G81000C300WWWAZDu3T3
+smt0W920lla00G0eDpJGG01GU16qYD3NndmVy9iXV2T1P0102ZEAU0008400080X44000404
+G00WI0ONq404H4GY200BgY8G882Y00041G292W106E00f06400002208ttR0000Qi90104X0
+000G0KYWG5080X0a4GH08000YHG0G04G008424G8140G00200OK1IX20CW0800WOG60W0W00
+20a0GmW20G004X009410000405W90YKCdiC33EO008020G4m20O8KX000GW0W000000G0202
+Y20500I10000O0004X0B1110G4K0W2I7nWe1JW0W000WmBH0004440f8048G00mCWY80We0G
+81G040G0X80W2Y08jV30400G4000W008G09Yc4J00004020GSW5004G001WQH6X0G401negI
+000040G10892000WK00W4Nut00080JHp00WIA08281@R02081G100PCo00S4gC_D0K000010
+0G1b0W40179t00G805ZRGMD6GA80000400a200G0C00010108800W210008080I180Q02085
+K48420ezrA00100020Om236IY16000l@R000184608G00K080200e0eww40010000Wcp0CqE
+@6000o00G1GGF6KmT20810080W0004vUQ3002G14000G210001004000003820W00c011004
+W004000H0404A363044400000e80qfk10W0000G0W0000GW200401W0448GH44W1601240H0
+0mn_C00uSb0080W80N00Y8004300820WG20501mnW9aJa100000W1425020u000W10Wk@D03
+00010mCG00G9hR0G100W042hGbmA@6qBF3ZzR0400Ww_D0803W002WHQD002W0G180XW8482
+2G002XG0000090Gm@90s3000G2GIc6qZl1081021_X8RDegH3Mj@10100200886400082000
+021G0WXzDeHv70R00000RPyf72wo00010020008zG0808sCW0mqICiWg1000W0Ai00000K80
+0mV@6q1W1W440AWt00W10rfR004W_4uCueV300H20000W0mM0001Sj000r@R0SR109GUB9_R
+000uO71000eW30800000g2Wx@707C0V1000000yt@0000000708LK10H4n3G030a000quj1W
+100j7000W@Vm304mm@9008XC4@404002800K000e000G100G000W0GcvGLLtmL3080000R00
+W6G00X9008G408CC600W2210gHDL101_820KG19Pdmo_6ynV28C00OW1K1W0mue@4YTp01WX
+X2030GWV0004000C1000C00GO0m0W04500SvV2WlP000H400YA024LWe0e0O000Y200G400W
+e20001W1120204W8r@R000GE60WVCWAP8060yzV20WO20WV60163060K0k000w000i600gyM
+2W0Osm2m2L080qrV200Wuo_t0L5O6qN@E0BC02H_100000p@30wzt300WxItC1000ia400jf
+00wH40mZ8SZ2G0000uDA0m710WRUkz3000G10R41m050v00Wg00WvzJmc208D000h6m@E1X8
+41W0000V4010nKN6avf1pNd0110aBmJOUQ36SsWmlnOzx400G@_8E30G04UYD1000GDbcG1v
+OasZ1xromfY6yIa1G004IzsWxsD004G002001001FIPGJ@60200G48000O01H000JnPGV@60
+10GG080Gs@60a30OzV322m010G00800002W0000000G100010003lFbmMm90a00eJd404G00
+W80000e0448etyJ0200000W00GG0PbPmfG980000018G306qYl1L0OW248W5TP00080048W8
+NJWU000000000G800010011G040020001W0WQ_D0020002GWCtbeyy460EXpxI0010qWh9S0
+U2xxQG@uFaNf1TbaG5TFqxV200eUIHlYQtPeFz7U7q00080xxR00006000E0000W01802000
+0W04010WYuC00000W12020000080008300Y00G000A000800G2100Ibt0m040012000202WX
+02G012W04W8eD000W00G4WjxD0KF10000e3068a53e000G00084V3Y_o000800408400G0X0
+05020W0G1010W2dtR040804e00W04800042280W210001200WG0218G0G0102C01100W0200
+421020GG1040248608I9X1n0G1502G02a0eY0Y68G01SW082W8W20000X0mG1WWW0204G804
+00AI01000404828000Wso012LG098120028G102005e40nXC5Y0Y2CXIG0014mnG080W0420
+2A0G0400G1022G4001J4004940mX3608Q408025Y001820002800404249a00G882004a012
+006I8W0e08082Gm00X0I60X00GahY00G2G8I008I0bG022018G200O80WG120K1Ga0220224
+G0A090100C1080004WG40000006PW0Y8G200060000G000600WCG008a10G880010080Wa20
+G0G0Y006600OW00A5048GC404A2304WG00W000W80900080LcO60W1000G0God64il400e00
+000G4012008Y0W008800200100A0G844XG00W020000W00G1a0820ypl100e00GW04Od1074
+00W00GG9000G03W0G10G8400OAG14G009a0408GIv60G00020800G0WjcDG400Gf_6010000
+SW3010AW20XeW6000Y0MKl13xRGRx6000W0W014948000010A0000040GC0e@V340W00000W
+m00m4@90W8100000008plWUmV2818W000200801000Y02H400G0Y8000m34D0002Gz_9iNc1
+Z0O000WWwoD00W00004WchDOuV60200KBl10100WW00008000G4m@@600W0wHV30Y00OI04O
+MI6kUDXj0I000000Y5Q0104083G00400D08Z0c8200030A2O02184000000XW8G200001G01
+000W00400100010G0e8W0WuzD8eT3keq008120G009W80ajO200004008000GufV30010210
+1W000ml@6820GeP6900P4irk1C0G0MRF1GPE0neR00020W10000004C0000028CB6EMpW3kP
+8nF3_1@1G08YloR02002GW000080W04WC@9300081W0W00W00040KMC6010GyBG600010020
+4Y10mZWF0J00AGY40080itU2000900cGCbU200620000108YuaU66gtWCxO8oE340809G0G0
+0005G2084000g039W0I00406G0m00080841404041GO45014G0IHGm_h90000014W8a0H4a0
+000O82olF100Gs8W2WH8102G0200W8A49000mrGW2H012mWW0aW0Y000006e2mD0K200O808
+GH0Wdjd0Ga00mW0001000104010028Q10W60000040K005004008010100808G8240080210
+Z10901210X041020444000W0004320e00O10089Ym@D0404548I0H4H4g20000I0CqV2WBBG
+12009AW42KaM580G48pC300208281018004012O02P0004021WNcm0W000024004CY000802
+0GGX_9Cnd100P200WOW31G0090008K00000G4010W90K_l18200aWK00021012800002810K
+0100Evt0X000FZR004080YGW200f000GciV2000OjfK04_c100W8400IHAWG04040f00WgmD
+0004804GA0004lXR000W820102110I4tWizD8JV3000GH00W40020G400410K0040000500G
+0uZI34000000W28000084GW0200GK20000G4020041mcT6iWk10102OOR80AG0000aHG@900
+mN586000G51002000C4G48W0035b0802000WzADG8C00G01WHFC8@V30400G0001000Gur6q
+rl10002100W020212000m0G010CW0840kfpWTLC00005IG2000GO000080a0K@B3000I0A04
+SLk1G2Q014GG040000C0mk@90Il008e082070002I0W01G011013YW8400n0AG030000G0O0
+40W0200110422G40G0mHld000KWbCCG0000002K0G00Gq0L0e000O00141Gg880WkxCeMy40
+00028G0000401010000AnXpGSt9WW011440080GX6@P0000jz00ab@DGW01000001HW40002
+1G004lk18020Q@FXvyDefy7sit0001000022Yq04520042F0G40a_l1AG00G03We40q04j0m
+i@600Y2000G0FW4WFdDefT3020080W21P100WGubhnJOAV3004eX_000GWlIj@6000uN0800
+0VXVD0000q70__t00GT30000m0r30040Tzz40I1080WO1250GB36G000000G600800D20YEp
+C0zV0uV000ym3mjp9mp30q@@10@pxV@XGD000000WA800@sR00G5@C000g0WAs00dK1R000x
+jp0mt100kf00e0p0mZ8W1L5m7H0eRA0GR20WMD00X9000Xk08sV300WH2005K00W2p0000e0
+p000000p00m81000000D400S0000W04X202000KWW20H600YEWC040T0Y08000W00083000G
+10Wf60315GK0G0L08CS300X100010L00mH8601000n000H500cAWA00WiwVd1v000Sp00mc1
+OmC3K106O600OC00WP000pO00on0g0Z1O0m3S600P000_P000H0O0004103ABt0o30000008
+h00GK1m005W10003000n000000W@x70020ND10AO60000000z10000mlF2o000cB0WyxD00_
+3eB40Gw_dh000u6tp00000_7m000W1A0@100dDpJ@900Wp400s000K120mc40004mD50mFY0
+WhE00V410OGLk2ZgoSd11A001@B100m060W1C0000G4A0W8Y0WP00005Wczbukm72zMYgmhO
+yV30Nz0i1E3HsdG_Q6KDG8RZZ1804YSXD00A0mZ_60G0WeOn7Iut0W000xvNH9i9000W2B0G
+mRv64WU2G000kPtWi3gOlJ96xaXsCbelVC0400C0l1Zk9Hu@F00OB8Yy7IQt08001TaBHI1O
+qG_3004000WW0G000G04G9y60G0000W0KHjCCp09e000oyt0W1D0HWQmuxIyDU5@oLHJcFy9
+l18G0000044Cl1400I_4t00020K00W0W020101500W10W013400604W2itWJXD0G00080HW4
+UPWn00mlwFG02000m0GFx90041Ocg4000002W0OKY70H00ah06GH00020180000009W00620
+G8XG0000n000001000WW820204400Y8800G4W22400KG10002O00G0200100821000088010
+4000Y0VbP08002W40040GGH1G0qxk10200Vnt0000e0100040020Gmeqm4gtt00110000001
+28988001000414mdzJ0028000W0C00W0a020W000q000WI00a2X00800210180000424H1W0
+W1382GC08050GEut0W0WG004010GWG0H400000I28000000IB00200G00020W00108000q80
+G0W000W6wl10O000000000beMV301G00001WG00mi@6000m0G000W0084GWWlxRm@p6SGl40
+001Q8t000402041000W8080400010W0020G00200W021800G1A01GLR6ShS2000W000WnJ00
+OP@400001G0WukV30800iil100300200iSa1TOQGj@F0240ebP3wbrWTyD000GmI_6Srl10m
+80Ext0H00000W0102G000b0Y0O0W41Wy@D080000P6014400W0000WW41B300ebphs00004Y
+000GWCcL_@3hxd000018200000OwqbXuuCORT3084GMpY4@mP0008WLlDGcH200400102Z00
+8200IYO400QAt480000000200W8010002002020040000810000WGB60000001H490H01401
+fdE6UzGY_7bOgV304004Pi104GCwWFXYbP0WG00040XSRI0004C0211000001088400SWE3G
+0G001W00000gUz4000WP8002H10mQ_600408wV3_6TZIAJu8U6opmWvRaeyT300W00108Y00
+40H0010G4000020009040000G0824GWGzDOkV3000W000e0Y0000W0WJpJ000hROcF01m80W
+10mqDUy4T5041400080401Owx42Kt00008WW06e81pCVl142000QD4OK4mW8200WG60p0100
+808000WG8000600C018A081G804GG3000880ezT30bk04Sl12KcO40040000W4Y0mVhLy4l1
+00K02UcXRID0G00AW00L0e200W40ooF1820000W0Bwt0W08001W880YChO4102WG00240oG2
+02cP59WK0G1000G100000100290014G80H0a8W10020OW1W1wD0000dOG4G828KG4H00W002
+ZOe2p812Ca0uuAC0400muqCW01000010202WWpC8yV3040028000Y000088G020W2CO863N2
+00WK08Y00M20GA02G2100048Wy8D001G000009a000W8f85W00G00WK00008800850W8qC1W
+K24sc100Sm23t0105000G00WKI1089b052mLR9KS23VbB11W0Ws_JW8I150K2ekmh00WW0m0
+100008001Ym800STa1tlR000W841G8004G0WcP0000140090G00W00WW00e0282WmG000000
+WY7070002014_Yp0W02029W6Eyt000509ap0G00W8yCOWC3Ij@10e000104G0124lk400040
+04a005W6090GZd6q_c1PzR00001000W0m0d1000003p01000HG20000000m180C0W0006000
+WK0002000228004Y0w0W2Z08803n3W@WmOWV3YBF10800JnP010200O040009_RaXYrPuxE3
+sspWLTV020100G0200Y2R@R0085G0120000KBhq0100000gV100G0W0W000418400000W0G2
+040a04Q56rtRG7uF008WSpU30W09W00HemU900z7W0GOtB000200030008o6000R2W8R200i
+9000W0X0000G8wT103WzNuN0000a@1WILD00a500000l0000YMO33tWOuI0000eN0100010v
+YdGHuCa205DyRGTv90WPLPQ@70m@000004Ygmi3pGH04nCg2mx82WxO60paA0g9DU000CrKf
+@R00p8A0ym308pkq5U0000U9pV3qF000Ov18sV30mc200048qC3I@EXL@P000EW000000FUL
+@pm4d9yPl1_V00jA00K5k10400UkE100WvE00xP06YQWi0G0O000m0000800Gq100W103pF0
+60S0@000P100C700OK10mL1KX82a50C020006000p000GZJ000H400Y8W8cPGG0m0LYXpWRr
+DeKE3YzF108h00000W101a@E3aH00000GWG00001G400OC00WXlPp00U0WmtC00H@70000We
+Q600W8CJL0g_20qEF0eCF0GlKGL00WlY9C100ehG1G1D0000W6QOhV30uN000u1J40kg00yH
+8yng2uc280004id100000uZ8Sw@3G150M_l200mg2000WmFF0m@70WF2mkFRqwL50002g20Z
+PzD0Ok0mzRsahk4ZZRm0sC4tp3vvpGFPF4vh1vPpmc@900005500GZiCW1008jkA6chYIiDO
+ZV301I0_Hx3r4XHMTO4eE61dOGBxC4RN2Hq@GBTIq8_38440c@3Z3zaOKN3IWJYsLJ8pT60@
+F0S9E3Pt5IOJO00808MJ3sWt00801VrR000W00G000001030e00G0W0820208WJoD0020004
+W00GW0J1aGqT6iHc10C008002G0040000bA120004HjsRmyv6iQk1BeN1200e4YDetg40408
+08W000G4000EWjwCG00000A8040840000K1180K0Ge@V3400221000219AWGI900a8WA4080
+GWW8G0YG454X01008WGXwR000G2011824e8W50G800W0400000aA005W008004040L602AH0
+0K108W080042G0001CyC30100004WKQ830G01c_t0AW00G00800003080QWL3C01CG4G0000
+K4080A2G00000080W48WW4204G12d224Ke0082GG00A000OW00K02490G00028G10G000080
+001GA0WG8GGLf0W028090X0000K600W110W201001fK0Wm080e00G810000W018fyRmX@6Sv
+l10G2GYid1X000@sO000W200240W800042inF3Pxd0000WuiD00100000H00040020100G02
+8W040688W0WhxP0800q1XC0000qn01000XWfxD00280001WG1Iu9p7kBp00020PZbW0004W0
+020142000800GGe@w4YrtWe_DOX@4UuA1000b000000W2TXe40400082820410W00mQk900e
+ZeoA38100KZD3000WsxEXHhV02000000H8200t_R0W00CW1008020YNm00A20@@R00YWWUQD
+000Y000010101440W_lb1W0000HC00200000W4800INx60X8004000G00aurC0WG200000na
+E0G0W04000WJ000W00OM09qz83TOomTx600H000040004e1uPOfG3Ax_10004000G00G1a_k
+1rlR04000100024006DzXv3DeyS3EBD1000iC40WO6O0SDv3W00080W00W800WGWmueU0400
+yuI3I7tWpAP04000G0W201010040ENtWNsJewU3oZtWrnP8Pv4sld100Lo02802ftWb4DuMU
+34000Sbl14008wN5ZBuP0W0001m0800020GG0QNEX2sD04W00W0W1C00G000Xktt00CA00O6
+00GK00G10eMD3gem0000G2G400W8WW800aeW04002mPwD0CjG208Y840000200DX8Gqml10G
+21W84Y801Y00W41102W1xJOVz46htWgzD0G02800Cmu0JWe00m@@6G680004A1G1b8260X00
+GG1W232W0100X2mp@6000WX0002i0000004zEa0000KG0YK0408Qnt002040608000GH88YH
+4G0WY9j20008ZyR08000040080003P81100GNzd0880000004H4000H00OG00GG00G010800
+W08mO050I82028nV60YKI11b02W085W00002080014f000GAf00W0000a209410210f000Gs
+@A30G02GaK0008W08I1500YG010000ON9500003100I100WCWAuCesR3m000a5d170T20W2A
+0a00frz0G0n04u00004gYfq06M00K00G020PGJ80080G4m00000200843VgcX75D0W0A0G0G
+WXuD0uB024000A050010042M0qsj1hrdGMS6Sbs3jzk1Y00W2rDeOx480S0W0I0Z0m40G00W
+tSC0G00002M080W0K00043062a000040mf@60010G8000W2a0e00080W0C000W0200000ED7
+0900mE4nW01000W0G1eTI6G100qnT2Bpc0080X2abG001G1Q608048xO6G5K000000820m@h
+6G2000000082000W6004000e004qg1paOG@@60W20e913kxF100_50208G400M8x30000400
+15J96000XcnbX@tD000a0W00WXnP000000eF0810aUXQ10000I00001W8000G8qV30E0zNG@
+D484s@1021000eWunD0000YO0004r20000GWK2000O30000YU000mc4z20000uB0Ct2321M0
+0104c5N20e00oQdXzdn00m20000oYvImc2000Yu3H0uL60000AW2w00000e2GaRIilE30uP0
+jQ00800_U5@400WR200Wch50eL30GRAmD00WF4100Kh_30ut@dqt00Y80l@R00m030000W70
+0mC00mC00WP000Cm006O00003YG400q_L2000pO000m0L000g000C300Oh00000Gbv7000EW
+E00Wz000c300C@00O_1_100qvhm40000A00CM1O0C2q106W00nmP00W5Q00WPC00pOWP000L
+08NS300H00021004L0c000O0W0ztR0P00WEwC0W100020ZFuD0000e000G1W1X203040L00W
+e00042Gi@60W7H8UW4yu000W00000SLkyF000Eq10000_@@crD0WOyF0z@F0000_7H40002S
+Ca1s4000BR50mD50WFYWR00WVhJmg200010G8W10DupGX264fW1rRQmKA600KG10FY00080@
+y0W_l00jA00iml10040gxU3G0G00000040120000044GbuR00005o00G4Ss800Wehy40801q
+qj7d@dGk76iZi1zIRm0vU008000GEMLTs0010eIz4ELFXVoVe5xAW100i3l1DLQmHwa0S_1u
+JFRW010iC_30W00ID@Xdst0G00W000000m8pdBnxLF00002t00GwVs4VN20088wqwX4@D020
+20500WqnD0008044042814n8P002080014W000EHp020801WQ0140K282WDlQ0018WNrD00m
+MmB@680000WA8421000208ZhR00040W2000004gi@XlvP0100a0004G0G0l3P00042G8100G
+00NisWnwD0600A8000O100021W00WG00100KG00W0100406W06004GLark1401580000Y0W0
+01Wb0G00G400000O006101000eK1YG00014GG002000GGG08a0400180GWG_D0K00J_wC088
+W8NS3002Gazl1021001G820e02Y000005aaJC02W0mFx60010000G00W10000f40011Y402O
+G0G000AW000W00WeW6W0214221GG04010W0H4KG10W0I8194G02B010G0100080C08I02000
+WgI8a040802A40W002WHg004C014G08BV30820208W0010GT_6akl10W02AsB10804880W01
+00080420000eW02G01CtkP000041030210002G0aCl1G0010010qIl10828svFXQPDuZ_4Af
+p00040W0006wt000AHP@d088GWd@D0101G3z60OW00G04mezCKQl1TNdG6p6W60m04800G00
+W1Ct8sU3Iut00W100GC0kFlYO@D008Yuju6G0m0m00008aL48W8Y00W0C2Y82010W8a5GPz6
+Kbj11IY1041WFjIG044n8@900G086k4A@NYY_D00400W8W000400008060Giwl4B2O000W86
+90YG000100nY60G00e40000G082m0G2000080G40G480020020410n@BHe_9i@V20W800000
+9C00QBpD2lt00W00fe4oBy6W8000C00q@@600O21G0040008m0G0000280G00G88eacAg_l2
+01W060G0cXoW6jIeX0IEEb4000G020801000oG18vG30080G0W000000082G800aHfsI9V6q
+yg1pRMHbx9aYl1e20001G0KLN2dud0008WWjD008000HS4g6WGa08X000mHaY30Y8G809iO8
+2W029qHD30aQ200QmV3ogPZE2D00W20Ym108G0W000GG18G0002000foiiR0828000G0I800
+28W88000c5xXlsJ000mCY100411009mG00Y000OY00Y82H1O8810HO6B1H0008a00H4LGaG4
+W400408200_bdX1xP8uV30008YWW0Gm4G100840420002WMPlYxjJ0YW005I0AI1G400G005
+0H4_j1n0p000084000400000a0G0f0uVV300N204000f10010000a00aI00G4f0f00085tJ8
+2000008XK00mKt94BV55XR010e01000000GW0OX0G0000W1mY@6SHS2xuR0Y00400000W8G0
+20YGKXX2000X01900005m20G0000W80018e0W001fsUF1000D00000888000YG40000029bs
+A2Hd100Gm0K00008m1C000000ns3F0088f@@40082008056a3000DH0008000G7Uq000W0K0
+040X10ii@6X6pmrR6081082f4A@jYT_bev_42x@XxyDe1230000G150W0000ms7004008GG0
+004400q4040000G00G200pbdG29OSkk102200Ga0WW400080qsaFiUC382000002a3k1000w
+9201WyHW50002mZ1WpLOe8E3m002ayl1eE0000WE000WM14500000E000VgR0o2090GmB0W6
+0MQc400I00000q200KON2lgW10pFA00000u@yM0rW1lJG@20GA@I43k14ug12js0002AA0mD
+90WRIWRML0tKW0kQ00_H40Sr20ecQ0G7TGz00Wxk3Wkhb0000@Yu9G50ta0mR03_gA0mC000
+0000U0yxC60008O_100W2u200W100WO000n800YL020C8z30Gq10WP60304WP000L08GY200
+0t704ee28GH5WAYA0L0m0g0GWXXR0020004041nZnz_9000300660C8C0Z1G0e200EoscN_V
+G200W7H0000qL60G00e00000Wpr0A000I0004000800e000G0ko00kP7td0WP00W70e7H00R
+Am@A0WFy1W0aEj4LP8n1t9qHi17vBnqsF4BO2388KUSL000Kumy7kfJ20W100020gnt00200
+4001I6@1WO400000G00200W0uAS600W0CGF3v@R00G0000G0hqRW00000W00rv_GquLiJU2v
+o_GP@9G0008xR92zF100088700MDPZv@V0100Gbs94TU299LnBy68000O0V6k1qWTuV0000O
+8_900W00030G2aCi293b_Pmg@9KRi1z1kHn@9SKl40804428GqlR200G0gur08050bnRGWy9
+irW1Nod0G00YavDW0G0qnk6a8k10E700000yCh100GaoOE10180200480mW000W080000220
+1000fod0W000810HTtR010030000e820Mit00G00G00400020m88G4G1maP600042G2201G0
+80K00G280020G01W08OP34K00e0028b@4G0000Ka0108C800K010H4W0AW0000vB422002a0
+2WGW40WG80O40018008K082W00004600800040010000K002W80020G14W00081000280000
+018W08000000Y80H102384090102W1B10m0GW4000AWW4K40800000W20W2008G8W021H001
+03G88840200410002000G0284410e008000004dGP000064I108O00052400W41K8000WxP0
+01000220HGGG0WWG1G9204G40040820A0020f01Y9rC3000a04482000YG01WXhD0G000102
+001800G004AH0011W28140010byZD02W0H9q6y@V2020GcqcXlAh8U43020000802G00000G
+84000W0000Uw2W0009_F30W0Wy@l12W00Q_810G0402000K00KLl10040_nt0e00GPiR0000
+000210U0000W0000W18080000048009rR0Y00YZ_Pug@4000Y0X00O359W0010500W80WGH@
+9000Wpx80Gy@609000W081W00WgII8x@7G00000o0eeV3cqtWi_DOqE300W02I01Qhs40W00
+00028JU3EztWMxUuLz4oJdXn_DuCS300100080084100YNpv@DG400020800010G0400082K
+jl14000ArBX0_D0004000040010020000082002I080000W8404G0002004G8G04eIt40004
+CEs6tZQmHQRayV20RG0Qhs00008000S008820G00W2X0a000GGYOTrp00G0nERa000100409
+0000vwR0008WCkJ0802GWz6iYj1vIvHQcLCXV256bmfz6qCl100500840X000001WHh_900G
+0AXT6I@p00040jiR0100WLyDuLT3800000080W0W8W0001Y10zaA100WK80009iRGey90000
+4000o@2600Y000410841000Gk80002Lq000010281GW0008W2601W4H8C60200WGA0k@t000
+43m180C8G200040804mtz6080040004W8H021280W0Y0000O004G108W80001W1600W04100
+SBk14000G000Sj834900G408SvO2t@RW05008G000Y80G800qpV20WCWIms008Cn004AG1e8
+12f00X2C82X00W8G900W120FXU9C00100026WepD008I009Y41K0X0080002i04805m01iI4
+W00020000f0000WK000K04GOhR4O@30GA2000000Y400000210024000100000WY804ODR30
+0000I2WYK0430e400820tvAHw_648W1R@R0048WnjDG0000P0GAI10aG4600204nG0000W00
+0WA04100h0Y1000000WYjy@Ghw600G000982000aFhD00WxVt@601G08D7308WYyN16reOmz
+@C04C000005401B000GW24G0H8500e0G0m00000G00010W02JPCaTFO000808800802Y4000
+4400W00000C00W1000lA0bma00G80W900dFnGU@CG00muwG3W004qzV208K004W00GH80420
+00223000q002W400100408KU300800X008kw42Xa42009ZvcmLv6eZ00ej_4W0G4STx37Bp0
+WW000002X8nGRj60I000HG102WG21004200eGs1400WU102001080000a0G00EoEXunVu7r7
+0000Ww20000wG7z60008Q6N3008W0W00e3y4000q30400WZ0G0LCSTE3O000krYXKvIGO000
+00WU10m0O@50g_F1tV00j@R00s70000000W@33N2O000L2d000udDuDmlh600000V41Wr_R0
+075000000yH40W10ug1oW8200@100RM00ym30zV2t000uVTy4030txF04q0G0mAu900CU0WR
+A00ND0@y82_uZ0yp30wZF0qg000H700cV06840C000451k1Ljzmer900020200mLxCmC30W8
+3W1H40Y8MJ0000e700000004H00OK1Y0W2K100W100We8mDG0O0GiSC000300Y80C040G0G0
+r2O000A126GY4C0LOS1g0e2S3G9k6WIquArD00F700000E0020eZE0eZ0Sql4hAO000e@__P
+000Krc@I00GiAXS6Y4t00YG104_x0W00u100m@L0m@@60WT14200000OMY8200006kYt0p8u
+V0Gm3TmCgIb@1G6pC31Vu12c90bRKHZYC0000wSN3swN20900FwpGhz60cT1eI@Asd9XniV0
+088m5g9qQz3xyRG@U6avl108G0k3sWhcD8iy40002Cvl100G0wIsWQ_D0W00802201210lcR
+08100020c000WPA000000eL9308000300020WOCS6awW10418A2m00400nCR00W000001D5m
+Goz6KEh1rfB1084WInbus5Co7d100010WG000ubEo_3LdPmVtOi4k1W000EAmWEVbu5U3wjt
+0000A8008AVdX7pJOkV3QpA14010ToR0G0010W24PeR00W2W8jC0Gv2Gau900W0u8V361p0W
+0102W0064m000080404EMpW6pJepW4kCt00011PhR04G0aptD00044000u4gD0Ge0Y0W0000
+G020104404aOl100WW0Y2100218T43kMD108020940040800G02000dm200We04TdR000400
+CW0vFOGvZ6W002O5B304000e1B2000OS16000KuZB3400GW00Wu2x4000080022000121005
+W8780020G008W0O2001000A04G01000W04G18220028X000040X4108000G004Oj1400aGJG
+005W140102a0084WG8010000ijA0080G10eG08GXG0W2G001001Q0G8q4541900K0Wa0A001
+C414GH20W04K000Y2LH012W00GC40080A014G0W80248018WW0D00W0Y00K000001240e100
+H4K0001W8c000100g0G05K1004WG0A1O8040G0G0801X830008W08004GW5W000080008030
+0000W0000u00Wa0409W00c700G0A02O00000uxG001n0902G0HWW00894000W0XA0W011400
+01050KG00W04G00W42000W0880XW2gG0X1e00G180003208008084200K0400218080fKV3_
+kpW6_D0084I7o9iOa100004G00O0000040up@6806K000ImkK9W2044400I8_60O008w93iB
+1000800040mAE604600000046I4YW4000084m008W2202140W2001H15xMO00200008028W0
+40400042020W1H80W1@C00W010G004G400002a90410400W30mOFI4tM2pRPmQ960088m0Y0
+m_Z60H000580WX00000C000sI@@F11100000018120I820WWW0092WBIC028000W124010WG
+I0WG008Y04W00008W4G0Y00JmPmHw9iul10000JHq0000102OG00000400ytQC00180W0000
+4000Y00OG40XlR004040W80GC2048410000GSq0m4u9000205202G0100042TzR0W584G800
+4GGX00G00006u@V3G08020W0gSA30120080020W000X4W@IO0041001000040000Wa000SmT
+50180004002K28_S6004020000C10GTd603080000ZA10W6GJ00W0040000IW000140Y0WWP
+0I0W0W1000G8800O0001200G40400e00004jouD0010044002WG2tqmmADF000W0380GXxI0
+002uoP906000001eZ_40W08G00000GIMq@6aTl1011000G80090008801000e0004I08X28G
+0a40G81000G0000S00021W0200000020deG00GW00A40000W08Scl1G0000001Q0000005C0
+0024H4em080W00K0002f3z70WI0000400G1048201G000W800m0iWL04080G002I400506H4
+250K500000qN1mo@60WGZ000W42L26i0AC658GX2Ja8WG15CGG2f8KG88m8eG840iG5WLY4G
+80WAK1000MLG2M4Q801L169W0800i1W00A040000bEwt0000C082041100ZImGW0GW2AGclr
+h00I100W202m40W0004000014G5GG000W220050e8G04mWG8WWem00m5000QF200J@R02400
+08O80C08CG00eY2e001G32Ae0C582290X5A4X8G1500G0041GG2GW0qOgI0W428W0WHK0W04
+800Lm040008K100kZd1a2WG000W00e0009020a2A0014080f0140SOk1W44000K0G40000G1
+m0zCavl1W200Mxs0040G0H01000A0G0000GnTU_C811a2128000GA9W0104W08L490280WKI
+10XG00W854oCW0000I900m48085ee82G000WY08@Jt010900G0101080000100em_s6Wm082
+80q0H14180204L4000H000029Ky4UPpW2lD00002G08X__D02410G000W0X001a000a02A00
+0Gc0GnyC04GC02O24Y0H910800W9G06HYIK00180W131e8W000G02000880W0C2HW00U05G6
+000084002K0000mI8000G0100O8000401008002X08838J0202050080HG8E20H000230000
+WWU@DeTJ3E@m00080psRGbj60G000W000200G1120G01a1000lKF300W240G0WWW00G40Z00
+108YI400401Q03aCf10G44m044O0n408104000oEzD024GW000gYVD8OV3a080Cll1hZQ001
+02008020204000ry@3frd0400Ge0g2G1K0000800204041800084H8041Ya004000WCEuU60
+0010KG10GKa0H4K4a0e040Ig0GA002K01000220IK004G008000028H0WG0000400G10040Y
+081110W00G0HA0ORR6G0220xZ0Gh@600OZ0000eMeN0402w61000080O0000a0000W5YwkJ0
+0G0Gfu6001WKB006GP000G00001000Hd0040W3000mP2WcoPW0KN0400KEGV9084Qz302WWG
+001084wl107m_BeV2242fl00W00C000000M9W008j5O10000mG0uMN384Ht0020W300m@@6u
+y00008qXE04400uZnxB100OkLuCmykH40000WmEWtYdWB00060G3Q0W_zF07O00t10000k00
+Wh@DGTa1000uFt1m700m0i30OfB0sK6@zFLk360u@@0C00_Nt004O0GQJ1OG1yv@h04W03e_
+600000WEyZh0005ahV2000ND004Z0k8I18001m0004500mK00Wv700Y9064JWa00Wt@J0H50
+000032600000L2ap0000n8009502YQ0T0G0O000q10089000KbI@t000WnA000CWA000C000
+Y200Ck00Ow0Spy3C707mF00mU000p100cV00CL0@GS1H1W0m000C600mG000X200250LYQWe
+0m0w000a1WovC0WwB00MD0V158gh70zH40aCT5Vsp00U@V0eWgr_R00G140ylVO600KH1069
+Z1Wm40M@t00eW000WwK100w_g1mT40Wgg306O6H0KX@D1GE800Sm300W@1eA00uc4GLmWt@5
+GF01500e30t@A00040SJ1y5W7u@10Oyx76WFXRzD0010ONtL4fX4fNcmL_90700uHT6cJNbC
+@D0080mEt64bl1G0W000002G1XudV6s_tWXQDO7D9400000202002G8rL000100W1rN@6ype
+1@ld040000W0GpxQmd@6q3U211a000011WG0LfdGwW6W000W0W00W04W7nPOOU3040GST06G
+0G00200arU2nLo0W000Wb40zUpmCm6ajc1LPPmox6aOb15Dy0048WJzCepT30G04KQd10Ga0
+00004lM2ddR0040Y9ybuoxAMoL2D100000W2qsWL1hegS9UztW8cD0020020GWumJ8I63400
+80H001G022X00XuzC00W00400qddDOm_400200202400040W821205W0001140228000GG01
+402H00K0KZ0G040008z200Ce0000L40200W0000G020W025I1000GG0X0042801H0220040A
+410002G41000G0014GKJl10400400H4lb10KX0YRs0000G8010804G80KGn4A04G201CG00W
+80404218A0e001W002240IG100K0WO1200Y90C1Y200W4400W8W000200020100W0e29104G
+02npQ00100WC4200000O9080K2elN342W86zZ1A0a0G008G000080G0G0W82000GW0G001CW
+00801800c8AWq5J014GmOxCWW02000H0ge84b03W2W004040X00WY00GAWH04C000802e4W2
+00600I10WWW306i01001Z048K10H004W024G14GG0KfGGW201W80K0d00A00000MA300a00W
+K8W0O212eWG30IG0IG0404GK184CGG0u8W0G80O0C02820WG000W008W0W0C00000G0G1100
+800010200022CG6A_F1G400000aW10008A0W00G0060WkbC03000G00Wv2J0040W0000G004
+XcRW00W0G000L_R000W20002K000000802e0000SD20018000KW1000080W0W04G012K0000
+80FzRGe_6008G020000u010010e0100024016GunU30020a0h1jsdGjrFG0000000Y020000
+40Ncp08p00000800142mNYyzDGG100mG1I1000Wo1108W8y@l12804p2sWxJI0004n1u6qyi
+1jJQGrfIS5l1RgRmQj6iZe1hzR00010W8G0000Y0080WW80Ob@4000400I0QVS3szt00W20@
+@R011000GG088010W04000YNsO00010000G04042G0020000gLt4cRpWWtDOlV3YC_10002G
+4H22V@10W0WT_Rmv09a2o3FcRG5@64ok10400gDF14000DjRW000uF@D00WOD0001a000jUO
+080G00GWG0O4000WK0008008030003041W682IsHdXNwD0G00W002WtLU02000G802H41100
+80410002000G00000W40000lEO0400WBzDW000Jv960005PoU9002GKIl1W00005i0001000
+MW040W8020020X0wno00G07020G0420010ee7TF8W00adF30G4W0W8GG42801000Y00aY_D0
+0bW841WGGG00808080040G08000020W1110304I00GQC0S7F3001008X002cf05C0CW01A00
+00M10008G00G4WW24Z14Y00e0880WWX0000X0L21YG0a1G60eG00000W4Y20ytl15_p0024m
+B_J8c230080006510510W0240820xmR080020A0000b04100Wm80u@V30075Y0200151OkzC
+0H00G000000W101G008WG0Y2C0Z2000m@7c0X5300B8e404012W854W03eb00O0000600010
+21G1W9e08J1a1c000000000Dsbd1G0000804X8F0000W8_D30400W00aI1G200080I1a2GGM
+G0b00qKd1WC0Y000G100GejG30000Gg0KO3_Akut000G340A2wXs0mk70Fza0000WQ_COwT6
+4G000010u7j400K04WV2000e00a06Ok1G0I000K0000W00WWWG412Gn48W0031WH00408a80
+G4GWA4W00K00000WX0qQl1000G000X000C20000H41W9_b86H30O800000Xp0GGL@F00W008
+10moa90100OMR300X0iwl1NqoWGW020008I003Rep00020880K001W30Y0203GnqQ9001000
+1GK6tF000GeAM3GA00avF3001O00000u0EG40e0423000yePDdG2@904a00C00KKj6O074O@
+V3040008000000oFtCm0M08g33004000004Y00ms@6W01811G0HFuC0I180a0100G1WGIIG0
+W20000G2100pfB1240WcrD08G200000GGA042WS0G20W800v9U300001142OyT3080G0G000
+401m5t6Ktk1ttd0000mPKD0002nUf6000000qV12G1Sl00GzTR0o00010q8e70001WZa3_30
+001We00ySE35Iz08B000WA3000OSC00qKl4LoPm_yC010010000a2100000BVQ0000000R90
+84sr2020WG0m100081000GA0A0mD90W98WRQbAtK000e00000000o10H410000e00mx@6u5f
+10001eD500W1m@00Wkq50gU3G2lRR0H0000u000urP0080008O2000600qTk9W84vdN1m@40
+W0M0W2200@z3000000@@SpCT00G0mD00eF10W8nE10cV00it0w8G0m002820001000n00033
+0042WP00WWc3F100WHA0005WA080C0eIS600W000cA8LE3W100GM000Sx3GEu603030604GH
+u60G00We20GA0F0000000GC20000a40XxRGsS600pF0J4JWz000C1001cRmy@IaVk12u700m
+@5S@V20y140O600000mFL1Ge@C0mC0mX3q902e04080O0W0000mXP50q@60000GH00080Gg@
+jF04X00rd80KW20eV28200OY80I4HqvV200m3Uzd1LD300K504H400GL4X850G7Z60000uMR
+3k6BX7mPutBF24N2000000cKpOhYEjJujVC_j530010D8bGPvISxV2frnGqI94xV2W002000
+20005u@V30zk00003iT76Q90Z2ZgeUV3W008ySg15_RGj1O4OV2JhHoQb90000ov00mjwF00
+00Qg0IM2dX59D8QS3IJoWU@J8VS6Y2XX4uP8Bt70040CRh1viR00W2aRfCu3h4IA6ZMwV8DU
+6EBY1004004000208W002W000GTq94FY1GWW0010000G01802GGK6C1Q2drRm3v64qd1z_d0
+Oa2Wg@DOLP3_zt0001G3qR00G00080WvF@000WWp_COyV30040A2000002os@60W0q001X08
+20G040CG03G4H81W40W0X14X0Y00a6280CW0004H800800O000200G40100Y00am00G00eBT
+3000G021e001GW0W0000150010000mpZ8004001000G00WGXvPmMVIq3@3DD_ms@6qiS24WG
+008H0G1X0G1a200050GW060084000YG40W05H004a0008080158GI00W40021810040GH108
+ZMPW0000400G404081244yl1800000qO@6l10040oop010G00100ZFaXoyP000Y000004880
+NN9Hqz98808OWU30W0410Y80100000Y0Y080005000H40000fY43EMCXXfV080W0401W0gD0
+I0000000GG5HPFm0400YtyV8@P9EPy1001XvCRGr_90024040W80m0Wu@J00008002000800
+2G06HaXwxD0001KP@60001002200040G81004C8110K00200000f210W3gP0300mTcgSxV2V
+Qd000W00W0Gt@R0X0Se2qD00000G008000G0G00gZqWVPDOeT3000W020000400800YNkJ0G
+04000G8000G04000GSN6xl10802G010icT5VVg24010010WDOQGUs94sb1eW0001200W0001
+000014WK_J00140200WgcPeCE6W800GG000WQ02040aQxCutE3_fiYkLE10000W20202002m
+0G000G00400W000C00WvzCeO13kPt000W0XtRmjS60a008GU60120qxj1zAP0c00cgsPeH1U
+Qgt0AX242W6240G001021m00800W2000G25A401ee0A4e0G81010X400a000020012002400
+500W1G02G00020GUDC13108W12T00W00G1000GBE20G0Y000000100001128022mGt3jiRA3
+rVR0082400iGa00X131500G4OpS340G0802209140180YfxDG00H2000405G900G00140TOX
+1000G000410AW004mWH000Cn2222000HkW0600004G220W04800FF0pHjC800GG00048a204
+504000f0W04900aY02GO7G602H00020mm96Kpl1dIpmUHOasl14400UmjbE@P00G1mW_6K@E
+30100026G10G82J9GA001400030W8GG00028082800mkj6yoh10006sYpWpuCOnP9W100O00
+000mWwT2saxB60003a008o0420W008080O040840H0_rF184004K08MCp02002000W804800
+008503swEXzrDObV3G0000UB1ent76I16000Y@@p00048E4XGOK8Y001A002400W80480o_t
+D0H00oAG60I08ueD3cQpW@rD8503QYt004000C0200000XW00000Ez00Wa2_9F@7GV1000mV
+100GGCS6O00000lma00000u000004kjaX_aJuzT3cfnWefb00GOUKlOaqK80000090004G18
+4L600030mL30W9WW@1000mW00000yr30QJ0002000H400POs@Umi70@Wbgq1p0y3c1p6_0uz
+G6ChqIPs3mRmCpaWP0G5x9G4O0m@L0W57004000WLE200000W_on@00WNU002000_lR06gu7
+EL00it0L8o0O0W0W8jR3000YI004K0O4e0K101W1mG03WXGW03X0302160C2C0O0S0m0O4W1
+G98G00exV30O0G40N2000Oy8000W000010n1030W0W81k46l_44J00jeQGMv90003yxq4W00
+00W@B0WF280F@F000000Fy00eL1W@5WggAWgWN0LLb00yFuX7UCZPy0m@2Kbg00lm@D000yl
+h000WaOY0iA2008000O9Bkz70mmC@A4C00W@j3004nZ13FZHTG6Kzz61B9nnt90mB0e_qA29
+XdKlC0W01GB_6ylZ1bwRm5F600800W000104W@oVOkwA000WJE40u3zGEDVZYy21400mt@6K
+4l1ZmRme@6Sfc1@p520WGa4ha0G00GI1XKzj701G000GGShU218RmZz600108Fd4MV8arlD0
+aZ0mpC5rDE3000GW10A800000230GG0WnNDG0084G00WwsJOsA301G0WGH100000I0G0800W
+TpRGx@60010vsP3000mpN400801mE_6SIl1DsB1020YMvbG40000400G0000820000GazV28
+2X0G43G0AWYIKCG00A688Z0W003W0040WGG40EW000WG01GrG00KAC04W8G0e0GG08000040
+WGblO0I4400G000e24_Ts000000260000pqp@33ERmnzCCll4NyNHg@60002a00W8201KGW5
+e001GLCWG10GW00G0WGG05K525W00004240b010CWm2G1W80WA80X6H00000WO0011G00002
+11002O4084004fG2W1000q4100G0f@V60GG0yHw3lGRmIfFqqZ100G000012000en33c@t02
+00IY0W18W0A00200G38000GehfOeIF3YRtWryC001002200000W2800E_t020G0Z@R00W000
+00iy200AvFX7ZPus9F_ttW44VOLV3G00W08000W22m0b90002004Wmoz98040024WOaz6020
+0www4wsl21W0000a208100H10OQjSYbM2808GDyR00W0G0100W0I00C82iGk1W0G0W000G2G
+G0008Gey900G8Okq7004G43Y1l@RWWQ2WCi29pEOWG00G0000W020041YlpDOwN3040GiXa1
+hi@GVx60004egy4W000004OW0800008WKAD8vAdo4t0W0W80104wIr00W000224YQF100W01
+oRGuz60GW00000oq49Ctl1O4008800019I40G000WxxDGFv3tJ00011XWH00002H056W040W
+20013C000W3o002802C0W2800808040003GWu7V3G0000001000G040GasuJ8_O3G028Ga90
+0G0008vH08000drPmA55100101m0WYW011002YGu00A00000YH000Y148000G0G0X80H0AAm
+A0W01800WX00010042H0W040HW0OvP3Ezt0aC100WZG80180W0A0000l31200820xzRG855H
+0GWG2a00YagK101W0HAf0WIAzNl4000W00K046k13xdGLgF8004080W0000000IibhvqjZ60
+0e0080W50DH0W0Y08W00050Wa@630m00obFXQoJuxQ90081awk10BM00000C@k11nX4Xm88G
+110GX0GGWW0G00W0JG0210000aG00Y00000GKjj120800X80qU73Hx@008401040W880000W
+6yl1HwUIaqa00GX0GW0HZm60180000402540082000a00W80a1k10W000000EAt3h5@01800
+W20480I000825Yh1bm9qZ@60008J00002U1WFxD00q70000Gl000@yRGxy6qLf1W420EsvXh
+VDem@400H0010GW0000eu5W30T2030eD500ccn@U4100W00000X7y1kf@Z0G@5XPC300zdgg
+oCLLL4Cpi8CR6G0uVf6P0ynE20000__102tF1NU000eW@90W0e80A0000FW100000W_wF000
+0W3U008jGX0GW2A00Cb0gOA1Y206G50003G0WPW0003GW060C0C0O0I0m0a0X1812GG10H50
+0020302040804Add100WW20004WA043k100goZdEXsZ99eII00W@1m7H00FYW@Z01@y0W000
+0z8W0000448110G2A1GYK2WKm409W4000ra000000G501000uX7Y6@100WA_uP0WOk00L000
+yl2m6EKjzF300GmAnnWomt8X_40G02i7_3000GL100G0040100Gm_60XW0OlpAMOJY1MDePQ
+CYXp082G0m0G400800100I000mtk6K3i1japmSf6K3G20020kapWozD00WCVyv6SHJ27aY18
+00XwUzueM6Y3tWGrbOTx4cM@XAnz0yt3mU_a040WOrx72T@10201jV@0GW0000202G2W808G
+0810041Gmtw9yWc1010GsXdXJsD00K0GUx64Gi1pZR0B10000027FPGTA6CoS5R3h20Y0WZs
+CuxV3480000W02GY00W000bG40058G00W01a020080e00010082pfmmCw6W0000H0GHGu600
+G000Gywuc6ase1D_Bn7_6S2e40005sjFXwoD000800082G007GCAaH0480cG2Ge0014W0202
+5C001X04C8GW801G4002G000W41G2W8000OW00501000eWG00W0D0a8KG8100048aW0G820K
+01G1H0WW0G0X4W0000W2H020000G012002ATt04e808W020G004Yl100040038irF30WW028
+tW1@D8YV600W000201LC28G406IGWK004102401G00X8WA3O011YKe00080800GW24eG0a40
+8600X4G420000S00G0C016KWY008044q80G900200G280002W1a301000Ge4104W00Ckc100
+080048O8000080010WWksJ8P73c@F18G0G2000m000CxU2r2pWGu0WkbD8LV3W40W0A00OzT
+302C80mW01000I_s6ioi100O000000410evU6m21eiUa1008000mv3W000004W080m@@JOEk
+4sPZXpXh8Xr4ANt0000ENqd00Y82W020022800000G81004J400200G0082200000020GSeV
+340080200000O2400WcrI0080000050W04tMR0m@1W1yC0000oR_94nk1feRmZ9CSLy60001
+_vt04001D3R0W00000W04010InBXDsDWG0C802W00228020G_Pt00020G440sYo080044G00
+W000000cW4001000200GSy4002azX@wV00W100G42082WveP00000Y080jsNX010WyzJ8iT6
+0230000GW00W00GI0000200G0gVC10040t_R00018010200G000G000002m100W000800024
+0000yI3G0H84236dpWcetu9NC000402000G00002WeJwDuqV3000e0000Ic82G8J9G8000G0
+a300008012PzdW40019400G004810847l1G082_wt0228900000VB0awG2rxRGUNC08W0Oo_
+4E0O00400FbRmwwL00100040100X000W0dnR000W4800YG48G900082200000440WH0IO00W
+4000D00400a80080043001200W09X0bG042120004G01A3C22GG8G0KWYG202000ir1HepGC
+0W0100008010G0200UytWg_D0GW00000424101kR0C00mFMJueO60060Sjl1000W0IWW040O
+6YW0Y8G42eA202GXeG00Y8K0g10CI000f4XGC00iGG5GW4004G001001400180ZOc8041402
+02002H1GD@684cGX280aW10000mv000Y0W8214G000Y0mI56KgG2TLQ08010820G00GX0002
+12000004nBoF000G010002GWG0YG5011140a10008WK9a00W00I9L0W00W0WKGWf4000D851
+4825200a2W44001GA0I280000W200K4800AeW0W00W0a2482Y00W4G10HY04Y8bK0I8Z0000
+00WY4A1W00040005008200WK00GCpI0A0G8rR3IRs004000H00oytWF_P0K0000100002W00
+B600WWW80Wae412GWGKo10K09W00b000GGG02WYGfu600c0H0G80082A0050xrR070G08020
+A8W00WW00000J0002G803804H000uXC00oG08Om33000W0000wHN9wK9X@@D080K4G00W9qb
+uEO3800W00001e082G10003e004060G0F0Y814000E01000mX0G00008001W0eH01H000A01
+8000006805800W0100W345020C00G2000GKW0C82200000WA90e147DRm_w6ylB30800_ksW
+W0OOY99EyXXY@DOuL3oAo0000eW48209128I048iS300e085WH42009W00G000b00040W080
+01WG0000G0K0210000IW00000W40X01GA00000PF0000I000W4vV23AbG8tC01008S_40008
+0020C6kD0000L1d12001GV10008@1z3GWG8zbw_D000GD0W000A0zaWWHGw80Suf100MO0m0
+CB4wb01YWVA06O0044zt402O@50008I3M4008m@Fl120000I2080WQfKS6000G20000f0090
+W00a200@@R010e00004jQPG8_C00W2100kg00SL10mc40000m7HSZV20mC20008ug1CmD50W
+@z7Wi2Jm@@100CpV@38GO60p6_t000mc40008m300mh60WR200WaOK10Am103O0z5e000uoU
+30u@0000000Y820m3WgfD0000eL10W9_310twF000008Y00mS30XP6030EWP00We000c100C
+@00OK1Snm06301OM4u6000Ct10G80yZG1440AWB00GM000Y100cV008c0wuP0I2W1u700OF0
+0Wh0000Z700GS10Wu2W1W1i8k1XXd00200C604080kAQt0000Z000010J0aIh1nYp0004000
+G1G000W100W900OrV3y820001_G40_X80SJ000000mD900tJaFYWVFF00@l90_7000000u@_
+10S0GrKl3uX70040W_@V0MDt0GXN0_7Fu150CW10W2000cc10W@@DmV50Gp_F4DW108Y8080
+0000A0Wh600C305000000H_@tWn6Du@V30WAs0H000m0wQMsIC@j100G02qEXHzJuq@D__t0
+100000gmktcXhkPOVDCQut304G040024002St@3000H6_MY_7DetV6QGd1I0G0@@R0md0WSy
+D041000080G001P2T20I0WphIuqV3I3tWinhutS3M8NYivsepu40000fT00ecS6wSdX6Qzu6
+23IDN2100028004000izU20W0000048GG0O0U6IktWzqJOXq4sHFX1WCW00000W1L00000O0
+0YKmWieV8dP6Yt7300W0BjRGsy6002001G00Y000040G82002Mm0OGG0008Wm00002012X10
+0001100GW40020008SVg11zR0000500847hQ00000GG02W00804000K_08i834000000KuIB
+301008W0WOuU300W102000880m@@908800G00012003G0000W0000K80020I000000340002
+04YGme00Wem005G0202218p02520G5g4YeG0q04J80KG2WIa84008880400142100006X05G
+200G00GWWWqLj10010C0XIGG00010m020480004ia00X1G00H206HWG14WX20oW4e008G100
+00200BWG04eW5G042OX22W0GCW40802G0200004K89A002081GStV20600G0W00008050028
+403a000aYa0000802W6065G3HY06wW2081e04J80Q0UY0214Y0029He00O8W04002eY06060
+4W0001X0002400010WG006LG1520W80108206O000Ov90GA040GW0G1004W0c00WCG0eW000
+0014001W082000G08W8X400K20W20000GWapDWIWI000848Wq0TyR01G028W2002000e2X0W
+800Y0W1I000000J6200grt00K0008K8e010020020W0HgNCq_F3040WEVd10800@GQ0Wd000
+0200048016G08002AG00W000G540000400Y0012GI4W000m880G0020H0W000TEd12800C00
+0qpl10008M0qWQ_D0002sW@6G0W008100G80000X0W84G00240080I0G0GDA6iu@33unm7_6
+00004Y8400000000qy000AhF1G4O4000044401004040O6p0000010c0G002000WC1G0W0C0
+0401004R9R041C0H0402000s_tWN@J08100080C0400Y0000004080100010044181YP0000
+W01W003130a4Gt@9CLl11GbGKw900101800W800004si000W00W88Jm0G2GW0I8A000G0N1b
+008Y0040G0W00W01010000808000W0I200o0W0a010qek1RzRmKd680aG0GG000W08080004
+40W900010W0W000W0098W80000040GWqvl1X7@GEfCKwA3T@R0u500020WHCb000074180lm
+@00H00000080I04WW0qXk100I01400020100051mY020040lCO080200W002088xvt0808a0
+000W2I0W800000Gm3060001000YmWT6ymv3LDdmeN6SFV2_000WO004Rd1TrR00WWevPJ028
+0GM090000008c1W00041080044We80iWl18A8G000GW00GX000000GG1950G24IXW0022H11
+0G00a9HGXII4O84HWbW8W04H0820W8GGL14HH0402kldX7iJ00020010G4000086PoFt000@
+D000KH21m0080200100c10030f0YO0001H0WPc100mW80GH0H2G0H0Geg0r0Gi80gZC300I4
+0G4I0YeP41Y0H00G0o0H5gW0108o0VpR0025G085We00G0iGY0W0g29o0003000I4me801W0
+nX200340O00110220G0zWRGK@904200020urM6iEc10004500410000CU10W000G50p01260
+O4C3064GC1en3z600001H020201G0CG0xIQ01G20G0GKW02c015S8G00X88280040H4G000G
+001W18m08GeH040a202A70200f8244220a2K0018000I100G0WG0WK49W8148I95AG8200W0
+W00GwYC10800psR08100000K0W8Y0002azc1000OOEK0CUk10400000GHA0C000am4_I000a
+Y400GH_6840AYK200WW4200500002Ibp00000W24400000429108X0Y0X809Ye82408We0IH
+e0H8o65800AW00M0f410280mGm000W0GmP98100eOI3IksWmYC00W00W30I000000Yoo@t04
+1040G40000W80m2fsV90G80yXZ1JeRW4G04W024210Yo2E10060Pgc002m0G4Dem02044GG0
+00X004G0HEAG1X800Om00C04GC4G0G020H0000030tUcGq@9W0W00000000GHG0000WW0024
+080000GA0GDa60Y060WW0005W0004GppQ001W0000W008202006hO24021QgB140020058G0
+G010000W40mww6010023X8040WGH000G1000010082040YW088L210X200040a4fW4GGeKkA
+0020aOl10400104G8000402W8000Of0000000WG002YG042H004000eG04W000400I8001m0
+02W0082008ApJQ00040021H0001080400400WG0C0100A0008000t5E1q70000uNEet0000i
+21140OBqx6200ml00Xe0004004Y_R001Kw5Y4OSP3kWr049100001020000a21000WG0O008
+0aA102GA3000O_EyD3000G0080000IF90O0iF20Ztp009I201004WQ9012aI00040011000G
+aTJ0G0fN0B000003f5q400000G0W0WPA00ND0V00G5rRWT_1G0EF0WgF0180m000AOKV3mC0
+04wF300Gc@zd10W70T@R0Y820c100W@200ug100KG10h60eW203C0WkQ00W700m0300AemiD
+50U0WnC00mRK00Oe00V420k91AuH8SJ1GeW20u030m7920Y820G1549Y8UO60Y_F1cP00Ct0
+LGK1O0W0m000C700mG00WPE00pTWTcQ0C0m0_100c300OA00Ga1000002H600000P00Wi@J0
+n400YB890C0N000T000Y2000M40006300060NyC0C0G1_b8d100005000A0CaK0O0W0q1WSn
+D00U6000C0_9P0f0OWz000U2008g00GK1OWm0m000Grlr6000NL004X80OJ202000000u@F0
+G0Y0Wk6003C0V010IEv@ekx0ue10q_00m@@L000CW100e3000Y05K@kP00WwK00ug200y0mC
+RI0u1005K00@820W7H19O0YCm0G15A8Y8005K00b10qZ800KGP0h6mL60XRK0Wp000VCyF34
+0p0WWgU00V410_1cd6IeBo7YCpZ5HDW000GZt6KBE304000rr0y@lDlnv100W01800410008
+014@k10400MDtWaWD8Wy7_8tWtpDucS3_3t00W00000ugWrW_eDuYN9UZt04000NfBnfv6aY
+I2HJ@Gpw6atC3zXdGtU6Sj0600040400iZM200800003zUR5@@pW000XEkbe4b4Uv730WG05
+IP048G00080RCzm1WFK7k10002UGtWUuJe3U303v0iPC6@@VIa2F00G0c0H08XWe2G0G1040
+00004G11e0GHG1A044G01204W04WW0iKj1080080G3yyY1G0G4snnWWjD8ez44000000W1C1
+W000000G5100W00QW4W008W40602042H0000020GG00200Y040400200G010RzR024100004
+W0G540W08001K0G00100mPvD0000100W2OC00Y0YAGC4KWmW801o05e0G008104e82W0W20A
+0W214H0W00011S1BzP00040O0G000004001_lW12H000G01000GI02YA024000lgG00WH12a
+W00W020400800XG210001G10G0H23G0000WA02041WO4H04WI580HW01q400200440HmY004
+0G0fY200104008G23C00G004G00000201C00a21X608Qm29KG0820OaH1W4e410142Y0eW29
+GG4G002m0W001G0WA0100W8G0000Y041810000G200H000m04809W000q_l12220G2000yY6
+G00X202GK20a00G608W0GGW0X023W101Y8e8WW0G04e880G1O6200mW12aGG0000I008W0XW
+W00060Ie8GWA3002We005m82OG04eK@4m270W00u1208002W00W040WK0000ZW0424200000
+40meG0000000WI0000W088mr@60103uaV6Iwt0GG00O100000WuR00040GGJX60043004481
+0000020m000opt0000C000M000GW00G0m14Op@60GI100080030WJvD0080G4T6000Y000WW
+80G084000002Irt0000HYWO080088G00ejiAEzW1H040Y0000000I4004800W082000S3002
+0sGC14102I00000HWSJl10260014800W00W020C080X002G000010020400800001GC00W8W
+02000000G010W1W8020W1@D00200298016000002W000W00000003000G002J1jdm3vL00Y8
+Y00002GC2G0000W030G21W800G0ZA0Y0080W80I0140040X000G0H0GVR6qLj12I00G10XiS
+k1400WG42HGC4X100G04210080W800WUcp0Y0188G02020000W4000a080000020001482O8
+G04000YWW80004X00de@GV@F4Pc1G4G010000800EPA3000mWN800W001004G82W80002100
+aidf1260WW608OG000002002002208001840000W04000G4GW02021Y004004000Hm040200
+WI00001801WG00G8M8e13sR01000G08000W08G40iul1zndmxm6qEF3ZuR000828I00ZJO00
+10000YG000G00GGC0a1000mQDt01000W010ott08001JeP00Y008Y000000W0GeS@V2002Ho
+st0003000041104214904GG8AGK85K000G8Q0W823065012002G400004G4000800020004G
+00400WLyP0008Z01W88AIK8204H4KG8GXAH0q0041000oT082mO828XW6G00H00W022GL100
+0022W1AW0WWW02e082f0GaIG9WX0201WX0G24K4WW1G0064G1L0a0001nGW80W1np04W2080
+05G0Q811CCW090411HmW128040040Wa21G05000e00H5Z8g242CC0We80cqt0W002FkdmmhC
+We8000000L920082G040OW07Y000WYUGX1G00282G0O0905Km2HY100J04AI00002G4e01IH
+10X8aW000G40W0581Gm8G88Hm0HL8c0YIG0W0WXQ81040a100004G00AY20LC801A01004aY
+0Y0804e0fG08I440aIA0KI448010041W000WK100000WqbC84tA8000000I00I100W0200b0
+0W0G0G0000GgcK60GL@600G000280000H040KNvR0f00090H0aIAGK290SXg1080f0004000
+a2K0010300I18000X0Mht0D85K040W0G0W000o0C0X8GYA08130014204OG01GG0GO500004
+C10HA300000PkJi1RUBnqp90ea000W02W4048000WECGciE1142001a00G40KTl1000G0004
+1840184041P10W0100040W08000WY50W008I2YXyC8qV3aW202404WS4004000e00306W80a
+0Hn80IX00006018sW018CIW8G001008000G8E0000W201_BHw_600W8000107WX0020190Q0
+G1000800d3P0W00almD0GW8000002WWW0004800m00G02G00004010000090W00YGq@l1dyR
+W04W02680000C02400G008tV3Emt0G00C06Y00I40arl1WY08QE6ZA@J00a69040G001G22G
+08009008000myF000G0G0W4WO2110100510G0a20Y00a01000G080a00040049G00IX0G200
+W0820e00c2W12000W0002100a000X004I000A0GW40800WW8et14W0aV102G08480000z30W
+08tBaT120W9l0W0004840000M0000W6IlxI0208J9000aU100000201008PI820Go800080b
+QI014Xlb008g40W00S0s00000s6U2eF0000WlWiI0000yof_6000WL0100aRXQI0108L00QY
+t000R40000rIH00000000C100W0T10004WRK0002L0@NV0000K500G01fUl10w0G1E2WMDW8
+if0H8Y0c100Ub10SL000CUe00jQ00wH4Amc20002uV50uCvWR000SJ20mg2ud74m@H0mhk2W
+hEGCS6u@L3G15WWh60GNT5WU400jf00Qr0c18W0002u1F0m7_0mLJWp07GbvE030K06000L0
+0063004T00O_1mWO2W104qYY1HVcGTrC0004X00uf04HI1i702G700GM0006100WgLuR680@
+4K0O0W0K100e300GI000X000330H66G2v6OC00WX0001300M6WA8CWv0G0K100M300uOMS68
+0@8K0O0W0e200C600mm80ug10m6Rm7PUWlK00Lz0W00000m30Ir300WuK5008E@B00zXRG2p
+6030000@VJh@C0mD500FYW2AG0V41Wg200j9000e760WRA004H438Y8kQ0CSr00uZ800630e
+D50Gh6m@MDW@LG0Vv10@N10kg10G4Y0ug2ugD9m@5GWVU0W5K00tC20_820Sr04Hxj100GG4
+R0e@70GF200rmLHG_6CYF3LVV2000Av300JwpGJuI47_63Z@mCb64rV200204G204Xl10804
+G0004UF38400UxM204002010gJx100sv@ZRGRS6aLl1LmPGPw9S8k180W00G08yOc4vgpmrw
+Fq3w3Zyp0080XnqL1mU0GEuXqzV2R0dmlVRqxE308W2YK812W010W10cAFXdpDO8_7000800
+448ez7000W3G028L_4spoWkwIuIT3wBtWyQUedU3IA@XfwD002e0bOW0G180Njd00100090K
+0008mAW4XY0140080104W93bG0000030WF@D0G041840G0e020W0000yi3GAG00101G20000
+G4800000501328OzB3G000AW20004012G00G0m000820C000WW08v93QSo0G10W40W002W00
+K000G1008000G0000YA50103002G010G022203008021Q8a4082H0448I000G0H000800000
+15SHe100040e00_hd100KIMUD101W002000gSIW008000I00WY80004801601HGW0010K1W0
+Y800G90KWW6GH20G900G49000Y800bK0502W2G204HW000500Y12W0b001A0W0401C00Y42I
+08000003021O0LO0m0G0110001W090a100Z0a024We0GH0PY1m00002GaDwJW000meH680K0
+G0G4W00400Z00000041600006G01G00008h7i020W00Q010800G020008W4e2518200Azt0O
+4O1054601f50002000W01Wg284020G0C0000GG016008002b006W02W020WE000W600G0004
+20CW8mXx@00W04e08GmX0S00048004W002mxZ9qwl1t_p08000m0000G08wmo000HjPsR0W0
+02O0040A01W040804000mG0E040003002e0gvo0q0e200q0000404G1G000W030104000C01
+0G40G0400G0Y0008G8280G000080009W0000882G80J41O0140_AtW2fD0064Gj_90040CCC
+3080G8000208000c100004Y860g@t00We1400002k1XG0010004303iw@P000E020400010H
+lP0WGW040008000104G02000100W800eSwI000040008041000200W1f000420220O010050
+G8201800WKrl1002100o0Es@3020028t00X00W02W00010GW8201008Z1YwzD00042E38W2d
+D00000800800G2280WdQt0W04C80WW41XGA8W000034000G10000AeW49401G01ejN3AytWr
+uDG00a0000GG2000001008800a00000W1002G4000020000GO200000040G2000085Tc00aH
+0000ADkRmM46iAG2W04000G000OsPBT30008W0000Q000803C000400n108080W004W00nty
+600040I000CG0004000020000I04000GWH9W0G0WHG0TqRGpt60WCpi@J6000PW0G0Oo3300
+10S5d10004s8t000G0G0004008z3l100080140000G60000H4100004W0000U@G0WP844081
+81000a20O8000028G00008000050500GAG004002aqCd1e0410922000G10800800XXqD008
+80010ekyD008000G188Y8H00X00AKYI80YnC220ec0000aeW008000800a11008800W00X10
+ZfR0W0YP40WY801082mG0005mC0348W1HHm8800028GW010Y00000eX100H04n0e0208WW0A
+04c8024W204m00CG0WGC8G80YP80p4022b1O0Y3E000a0mW226aO25KWCY02OK1g0Gc2W082
+00G420283X004210210004GX6YGa8444W802200CG00G9440I5m004000301L1K000n4201A
+4100Mzl14101800W00W01e12W00G8W4200G0G0W8414806L8ZA0WWAH8A000IbKw8YG2006C
+1J2KWO0S50W0WZAGIW00028MHI0Y0bI904C026GK0G04G0040pI8AW0A0228821W01O00800
+402H4280O0038008080G0I0m0Y00WAmbs6qvl1bvR00W248210000f01021m4WYKO8800W02
+000dic00aI0000Y480fgpF1W400WIA1qO04WG000uA8500008G00a200a021GAf40f1010aI
+0000W000f0001820a2K8L80440I12000200WK00W0G00I9b1GaK870K000004040A00040GA
+eW21A008004GA_t008202W800200810000081W0W8G12W2132050W086KW4012008ap@D00X
+05G01G4P00G040Y_D1W0000120W0400000csW0000020108000e852W04320M00LYS900i03
+KW000G0IG0080400800G14000M620G0125400G0W000010A010008A040WTjC8v890086AHH
+C00W8e2G1PeO0I6X0Q0eX8GC7W1W000010Wp3D00008182I00G0RDQ02802H02402000W000
+0WT3W0401200O0YW8W0280102000400W10aW000W188000068TyY1402000200030Wm02109
+W04504800mH8208u0m30G021W0000I042GGE@tWxEVG000201A02Y02040100G08000OyV34
+0008080us13000804818QK300401W02wP9301000Wc301G200088009G080Y0GA40008La9G
+280Y00240W000W0GG8910H0409088YK0C010a2W08040G80LW04We00404000Y80AG02aG10
+81800HsW00OxZU30000W8R000i9G7R6a3k1000w92000qH8Q2O600Pb0040mBKBHYR6qEl1e
+7W800xZ0000qKqF180WKl00W000eIWBXAuCOfV3000mg40G0WjGVA06a573XXd000G20000W
+55000WXO60Lr10sD4gIV2iR4GOc70uH71Gtd1WgU00C30F00000W@0000m@@1q@G0eL30000
+04MD000G03u80BG10kA00yH80uc4uXD9000GW@70WND00t4000JL00mL50WHBW7sa0ND04_l
+00_p30yn82Vp0@301_gA4Sr00eW20qZH0eL30Gh6m@K1Z@LW0r140hIL1QiPY_F04zXEOcCb
+nCpGbggIqCpCeL5008w000m0WXe346k1HUR0YA00cP0LSx0C0G1O000Y200G400G42000002
+14000e0H000p100i2WmlDWVE60C080k100nmP08x000uP00mK1udX18A0281k4OO00mm0C3X
+1C602WA00mS000BJ1m01Ocf4OC08WP00We010c2QOu6WA23GKW60g050H1208y10fQ60gn6g
+I_1iXDGe6r0uFO0GtpPp01ynE0000WX@@3G6O8pM3_Pc1ZE0WE100z820Qr0UmZ8000Gu100
+O4Y0m7100mZN00qg10eL3u1RAm@6GWFy1W@h00tq70_840SL1yng2u@28mFF0m@B0WR_GcU6
+udD5m@H8GA06Opf0aB40eE8O0V_HLO0Xd04W@B20Vi8y42fE10020zKdGUu94Dc7vRp000Bm
+4mLfMyP00800004Qty7UrtWiePOzSF0cJ0iZE39fpmOw9yeD3fgBnhw60840e3TaIWx1000K
+Q6006S7Zf_E12000000YFnP8NS3_ht00000m00023t01000jZd000OWm72fOT300W0_UN8Jd
+NHEzR000W060004m0ZlrJ004400W000082m080e8004Ol1000414100801elU3G000y@83W0
+GA0000W200000000451G010W020G02q0m800X0m082010000W00G010002WWW4I000WG2021
+1W000050G000004I01800WDvDuZT3000I020Y8KS34084G02000Y000W005H4G008W849004
+08WWW008000W054021Gcts0100102W0G00Wiml10X00wPF140W0800H0200W00800007O010
+0000000X0012010800000a2X0YK002e000014ea140550W00W00G0020W24200000AW00400
+8e00Ga0A00040100000084W00G0WexD000400X00H404W00140000007000G04G0O000G282
+G0HG04MF300400040G200e@V308W0ixc100G4G860009G008000W3Q101000G800310m8000
+K0010S0HWG0002040400W0H1YJCA000G2Y8WO0210W420200003088440180W2005EMo0000
+4aGG00040A0800000840018000001K0060220040GW100400W04002000W0X2098f230e082
+5A0W012mtYL8001OJ@40X00Mtj1W0WY0070010200GG000K108WG00W00W44000AuN@4W440
+00000430GHu6ari1j@R000WZv@D0224Gw@60408OxV6wBtW3@b00201008WQfD8HS3Eou100
+0Ws300EwdXMdPuhU300X0UHT2000010800030uaV30050G280Ofy4c7s0000G40W00200000
+148CY820801008000010W00H0202W100W80040020804O40KUl12WW0_brWf@D00K0001284
+04400m004100W86100000O00208G820000I00CW022W1Hrn600OW0CGGmvK64tU27NOmotC0
+GW04W0200WWY4_D00414080Wp5D00000Y82G0104600800G0y4U2RSc0200030000300000W
+1G1000e00G4m00W20blR0H0104200WE80002m00H44W80mSt9000W02X801G008840VoRmpu
+6SiP2N4dmZBCqNl102H000000GWGykE3wft00400LkR0W02WlrJ0001GUW6W0000G0000G04
+G000008GW000aUU20040000WgJ000040oUy60880eST34010CCl1hZRmryCyKk1800000G00
+0W02280mBf6014H00010408082KCW00042Y81H01G040020W04080G61013W000G10G02000
+0eN2Ce4C300Y0W0a8100G0Y00eR5C03K0001W001a00G8Y04G0008M3800005W0C020K0020
+0Ga0K0000W001H094G4080OW12G08000XG41Gsp90K4400080A000W400210DW1W0W0W1000
+0W00gG00000a02400800E0400224Y028Y80Y82G40W4G02800161089G05100I00000A000a
+X8000CGG0a800a00O008H0B2W10412W3140H4801a100G0020Ga2000GA100GaG2D4GG89W0
+8W812020I0904A408Y00009WW0204WZ04W0000GiGb_R0O0100Wm0z_R00202W00008G05GW
+02Y0XG4W028240125W000000XG1H0W40005e00G0000aYGCG20080f0W8C4125G0020YhnR0
+00X0200008208b00WG018CS3U3t0H0W04000aG01000W6n280000cZMDG408014009080P1a
+0000I08W09aN10004W05000020G0G100I00Y05e00I0G0X000D1G0G100AuzD30G60080010
+158WWY9W00X42C0028020302KW000450I1880000060W0410G9005G800080KW240I1m0800
+H02B000m@148000200401WO0I00002810W1yD00X00G0100e9JG000AGw100W00W00004001
+00uRP38G800200460004A28W41iWWY85eeG000eWCs01HW52eJO0230YW00021S000G2A1G1
+102DW002X180200004C0e0WW6004A800H0G020810004I000G290200W@I000G30WG0000G8
+00G0400G4010W4I810002G200W41myLC0201430W00090002W8G00G009004800828004000
+0102800020240G40800040W00n801000A00G00W04800800G0WGW00W000m0WY1a000GH00H
+12GGK12e6808100GG08800G401W09I0H000G010e00mRF9018e40002HGZ0H0K00KWW0540W
+000G00804054800KWW0800000G0K200W6I3210018W08800GG000G4A20004100GG408028Y
+000G0000822H000900841001B404nc1W000o1t0G62zkX0GGwB0G8200440008Q20000SWe0
+0008m1008OV3GM08000U1H10040mXmzJG00000S0000jKL0OGC0C48W1P1m0W00WE1I8qP6Y
+XBXmmD0000003XPG@70Yym3myV0OcPKn3F4j@18Qg2GqKLbez70@xF0gILYmCcXML00W8g20
+p000H820m1Eg2W0g340yLL0Sr1YTp0@lf0_lW0yV40wdP0qg000eCTW8mDm@RAW@BG0@71W_
+u30jv00wH40qZ8ylD5u3V4m@Y0mlK5Whgg8Fq1HVe3gwF0yF00uX74zCpi2d1YEpCy@X7uX7
+omCp4jPc9QP220HiP0YA8AWM0L05We0A041K0Ct10Oc3qHK3e3u403maeA09HH1IYYA045L0
+g8Y0K1e08200OC00WX0b0138H26WA4C0L0K0g0e4L1G9A8000IU3KYn08HA0I8H11NY06W41
+C0O0O0m0y0W1u923mH4WW202300460Lnmb0G1WG30ug20mD9mLF2XRA02V410lQ00_O10KJD
+8ug1e_@0m3FSWPcHGFyWWEy11z700wm3U0000Fu50000m@A0mDDZW7w01pK6peALUu1gCpC4
+yX78eg000mqrC2Ue34KLgCJcouX7an3FGmggYWP201LL52_70_@F0KLLguX74q3F88LhIG@1
+WWHAO00oO6p8egK5mCz0WF210V42@y84_F22yp30y@1oAtWwsWv8EF0530q8WGdqlHpw6000
+4e4xD_XR300000008HA00iusFB7q5000000wdL8SoD1@C_d7xwOmNyO0ix18jXMUddacwD0W
+821A040408W00G1_EEXuw31002mwx64ai1W000000GAC808Zw4cJsWwGPuPB30G40CZF3Ps9
+HmTO02008WE3c_t0G010frBnnWRyrl100KelwFXmsDe9U6skFXs_bOlmDw_t000G0WWG0Id@
+XRyPulFC2ptWssDORQ3uBk0_S03W000W0W0ivV2VbnmR@9a_k1HjoGKWL028000G100W0dhi
+D04000002ee8EPeV60004AP00u@ZGIVpWlA5wyIR00mzKbfJBeSIYt94r990Q10ISiYA9UuW
+4OUeuXoGv1000DM10Wy1oPfU3I1GYn2if@KC00uNcz0O0002ARLY6NhesLC0EM0Cs96zraJ8
+iL000GeY49YZb4000Ww300Y0gYQJU8sn4I1WYkQbuXL6YWbXeAc1000ji00WvNgeOsA2fuaN
+Lnuq_4Qtj500GWDzsIxhCiYl1f0Gnd9fbD0Rn6CvOMj0000su00GF3@lJ1jZRvnPMO4nXS1a
+030WUniGUBSeP0yg0yOkJ00m0w0mXK0O0GG1000000640H1KH4xO02N1eO09Y6OZe02101I0
+G82800000X8000008G200001GA06KMl1000SI1WXe0OOB_A000mHG00exU3I5GYe1g8AWGaZ
+J000muiGV3000vm9000OScJA0K45W4j1aGjzF0K00eaV6I5ebe1KP8d@32w@Va_l7AZt05fG
+xJ000jISMpFMwFJyB1008ST2005azVKj5PLR1OojF100_oU00eRk@tsx@i1R40GEG0fWbhu@
+PFeR0fd4I1yfP0J0f@Vhw@ro_@ik@7By@lAFSAfgKF0OV@lHAfdijjDH@ZK0f@VC_@DcVUlv
+a000mVEznI9jtiIF9IX3R473004000At1A0000W00800m@@6C1G2011G2WLE00G07yRm7i60
+X0000000GT5010G000W0000GCqV20000d7NYBonuzlY0000bhg4000280001000LN0G00404
+0820HAm000AW5tV8AZqG000yVu300eE1C004BV2ljp0W20WcFE40C3004H4080800824004y
+@l103000000W002ef_V40005LYG00WGa61000010G0004W8210000008MtDg6@@10G75IW40
+0000G00K000WG0nO104HI_b@000020G0mT@B1u8000200010080000G0WW0024qPH0202000
+0W000200HmMy@0000LFC0X026020A0mA8YmG10GW0aI000JoE6KMTEpgu400KPW2a8402Gm0
+240W00285Z40G081C007IB41000000X0G00JtV9G104W400800000018cCUAhnWmQI8h6X00
+0mf104OR4300W000e010000800X@@v10e02000O0K480004cvk800Gy9SO0O110000100W00
+00aqdEF00WW0Y00S6b10010010W20K0u@@V0mM00020G00400ZW400m0fyQW800WuBo10450
+004080G400G0020GW880uX2XqC800010I800m@@60W0G008mm@@yuXepK6HhALUuG7yF00GL
+L1D00y@@F00CI9204100YWV0uALK100C7G04OWNoZ7000e0Ga10W83G6H6WCW20P01W@@52y
+J0000C00mK1m0m0W1010300WA000110002001yILqCsO5L10000eDt0K7U4CW0WgG0W0W900
+On53oSnWkmww@VI00StyixL7QPmTsa80208wVF0Iq0y6J80840wH8gD3OuqPF000WpI008ki
+GYXU60G027vKHf@p00OXjswG000GSPsIZ391G40e@@h001Gm@@60QCK0402ntP9000100X00
+000XtjJ8ITFkyi24G0X00001014adK2000200W8eG02005G002aWPtI0040006W04001zrPW
+08WWTtDG0440200000800W20000GwL0AOzT30G10e002Of16UU@10001tjzGMyCW00800C0m
+gu60WW00001mku6qzM2vaQW02044500bfbW00002W00090000000G088aS3W00200120004m
+eU6000tp0001840WjoD0000100WbW6DG004GRZXSYQ2TdpGsvC4UV2200W8G10G008u2I90q
+00y2v3vfR000G0000A00000C30W3000000000G10e00j2PGh_Oigk4HipW00GXmhs8tl4cgK
+21GK0fNaGpO6O2008oI300W0000Wsa02GaG9qME380006CdXxBV8iiG_FFXbpn0000800408
+080003000048W82001aKQw6KMh1G48000500W4100n@2100IH00802W0b040118W00G00000
+G0001@AQ0AY0WjuCu5_4002G49d1200008080000000X000800001v5uHMk6K@B32080_@t0
+800W0WCmoKC100GGDMPGlk60KS0W014GqZ9000II40800000P0000900Iuz1G000dlP0880W
+SHP8j_7sAH22I00hzZ10eWm0@JuJH36et080080K04000G0000H800q2P609048V03W10f83
+a00G2000I1WgDCOO@4000OS7C3240000I0KeW1DGm0002WhxD00G00W000008W40W07_y100
+8000G80000GG1H060G52efA0G0m@@R001e68000G4084WI080a100mj7408000G8024LX0G0
+00222XHD20O0184w0G00412000KH0eUJ300500001000300H0800HG0000G104000G020K00
+221001100020040jVi4W000_7rWCbU0006W0G011Y082100K400300Y10CW8018200G00000
+1GW0WP0404G821000G58885qY80W08204020X2G58820W00K6Q80C0WKYc002GGc660000G0
+08mQi6040W8PJ30040c1g1dNo00W2WHKDu_E3050100W0ug6300K04Oq320W00500W00000I
+50G20e4gVW0G004Q00000mgM04UMD1100040008200GWC00042mir600100000PATC0001W0
+2000YWWewO0Y0801000H000xtQ0000a5SD01W0meR600eWg8K6000YCyg1nJR0GCA08W021V
+o0000a8TD00mCysQ60A00000020004D000400G08000K0G00000021W@KD00W8GYg9830018
+000m00WewI000KGA060000000W84028001Y00G0000G8a38udB3W200MhX40200G00120200
+W40W020WCRC00W00000G00420W400C000Kr000X400000400X8W200040008021C00G04001
+m0@@d02YW0004000GW010W000O0008GDT603I0OJS30020O0602044mLe9y@l4Y0G0wCy120
+800G1GG0000W0010900800WB4COa030000000I0000lTJ1000410K050e0A84100A4e0K82o
+qXCW004HNj9W002uX230X000004O23308Q0G0Y00W2018G0080042YK0UXm0W080@@R0000I
+0000040G000GqGr3004000088400040400000K3000WG1Acx12000OG0000CtY8P00048mWP
+60009Y480024W8Y004vlcW00800020OWe000W0m10Y00020G08245000107I1810218082Y4
+04WW070OgqPiZ@E0Whk2W@2m@@60Wep0000W0A2m@@D00w@F0C140MTN_NL1KLL004H04H00
+0Cc10L41020WulZo000GLgAo@0GqgIbeFq1@Ve3cP6gCpCY_V04jgp8w3FGqggYPoC3@300_
+7WeDpCHxF000n40000014H00f7p000WeH0U0002008408OO0G0W0u600030087I30800GM1G
+000W10001000W000Oa000Go000W1e3930304WEP1O000GM200W20300060O00000o0A041K0
+8o02Gq18Ze3G7G7WEW60T0D0Y2Q04TW08w0wa2W10D0P0A0Yy@l100WLf200y@F30uX70000
+G1D085V64P6WGLL_o30Sdx00gy1D00040008A0i70S2s10mhl2md000Wk7c000U0000W180G
+4H0Wx_70eoE00u10Uu50400yF00GL4085J600G000m6m0uLW24eAL9000GWgKb0cni1gILLL
+50_7WgmrDrr7Il_190G0D@x1000yy5OeU9CA9dXzXVexC6Y4V60002XS720WiuklXPqyMYKG
+YDgVOWQI0tt0yJ56@@J2010WWUPukS600H0y0k1NWRWWG1WeLC00000W808a00GT0O000Gei
+mD8dC9EWr00008s400wfZXbMCOOsP4G00isT200001840002W03000P002e484W0W0WI00Sh
+i100012no0020W@@d00W01G000ZVd0000200200110000000m9RUR3wws0100000H0001G00
+0000G0n5OUKTR2dtQm@xC00W01000000eWJlC0G00002eaKVP08W0Gbw9G000100000O0W1v
+V0W00HRv60er000G0m8D6KAOB5jp000W00WW2Prp000040GI001000K8008O408W00IWG000
+000H0G00008010G1004W0044000LlR0000aTSC8dO6AHB1K100bdd00400000D0004040000
+00wXqD2d7ZZG29qM3kq6ZxfP8Yw40000tzE6r6OGD_mibV2jYamgI6CVj10024wXu10040z8
+RGVdF004020H00084000002XT0_y031WG0L9eIERFyKi1F0o000G000G2tizmjN6yEF31xRW
+000W1hJ00007h10W6mCOb@7cp@akjC8C_A_lF10080000WARoWYODe6@4AccXtpOOsO6000A
+79X72210EntZt8De4V6_vpW@@JG1000080WM0C0201mL@6G000ev1300G0KD33FCcmubC00z
+10080G7yI0440uP53I3t342007YOmplI0aG0G020GZ960000080G080G00400W0W069F10G1
+0rXc080001010LYcW0A124000e2000000Y600O8H9wst01800Ps72X0092001Nj@00100085
+0Y000GWKI1W0W0018r556GA0WK0a20fa208IA00GA01000002X20041G00AG1G0pnPGCu600
+8100G150040200000INxMpWo@jX0H0mpw6yzF3voR0G00C415W0140Wbe001G000410e0040
+42M200G020580000800W400A000000i0000000i0u@V66Zs0P00000000k@0ibU2ltYn2yR0
+200eQT3YaF10804O10AG8e204400W0185G0G21IGO01G08KG1H0A0W04A44X3G801y98903A
+4W8eG2220A08m014000W020WGK82080G05e8000004ACm10G000000WXb00X80WWkGV8nsJY
+Sr007m0j@@0080G08Y0020400081K0G19G44G5W04014q024802GHW08W000080W00048W08
+9AipWfwD024010000004460040W0004G1G002000bvlRDO8T9000HSuV89vbmm_C800000j0
+W0G4G0260YW_008O0w5w30Y02eN08YK0O0zGW801S4001Y00GW000m20012WX0B0G4006200
+0H0I181X000WSA810Y0SNf11cF3100W@tb0004fCp00@1m3UGbgKLqFuXeLrCH@70YMLgCZg
+KPcPeo@08w@1GqgoCeFy00000O600_@l20O0000W1obr0y200j@B1004vGXzu@V30040AJD0
+000yRs@F0W4Ct10Ok3s3S7u7uISFmbevWBHpFGYcV0@C@WK0IWvWb8pF8H4JWV8cWa041C1e
+4J2G9ICWIaO4a8n8W9YHGI0f0c0IYP1a496000DO02HYH00000c0OUu700W00200uRVF000o
+G00083k4I@F12ggA08pCyF0Pegg4KLL9eChIGPcXWEyWgegA@3W3_702EZP4yG08OcoGGLfo
+@gIb@1WApC31hgA2gA04CpC8OcPu@3Fm@00W@1GGFyWW_3000L9@3GLL9_VC000dIK00esS@
+000mpQ008gVUEqlbJQDOlVO00uu5_@C1NFJR@y0Us1eDFRgDmcJyd1000VsuvynL8FZRG5r6
+qrl43_xHm@C00eqDaGa00000W00P@j4K001CZT204W0H080CKh16808_AtWhqP00400200e@
+@D8DS32JF14000WFR0s_l20050JHJoNK6020G008GquQC4f03000WUzsWyXCuYU3c08XPSJu
+iQC000WRR008f0CMLx4004G0G00C02000020830Gjt9Kx434210Bxt008W000000W08a@F60
+014Q7@1005EtlzpkXIaQl1LXpGAwCijl10400000e0004Ogl4sHS3WrA0B@FZ800WPnDG0H4
+00000000I000WELp0G0GG3zp0K000m0000800004000G001W0mTt6iuk1G08WourWwHJeyV9
+0001o800ejbPG4Y180810GG20004182014000080aCO_3zyd040000I40ZiBH@n6G0008OIF
+00urcZIEtSO0000aZHDOpV3IvxXmkDeu_4EHqWy_VuEpG0Ii0aiBCv@pmo@9004W8R@700Y0
+00C00W020W100000W000410Y0W4410808200G0000G004G4WG2W400u3j4I7i20008o300QD
+5600G48202GGG0Ge014012006W00I8400e20811000X00g0G3y6ySc1K004G000G440ORV3s
+Kq000207VO000102108420G000aKD9600WIoA66Y8800000410W0200081W8020LGWH008W8
+0140888W00X8Lvc6G000Y082010W000100G00ogFXKVJOzLL0pf0SjxC00A100W10W0Wwdx4
+e0010Ae0K30000010Y8A08Y8G0048e00010000W0X8W000bo_GLz9SwQ8000We500SKmCFYO
+040e4000eruR00G00080G002000CW0020ePY4010W4rV26000YscXkfF10WmNCrmG000O1R3
+G0SW00W110K050W0682012441440080W0Omq7m010ihF3D@RGMij0K30ergPEJt030K00104
+xht0W8040W0W001000gF01W0A70GWMPD0050000W14901ZgRm0hOq_P2hxMHYBmCxl10WC10
+000O481etV3000I00000i08100Ea5zPuwQ3crdXkwD0W044028808GG9mQW000WNMD8jzA00
+mUdGECEj000mV00G0LbgH08uZmCc5XPC3UpO6ym3FuXN4ggg8m300O_10Ga1W10002060000
+0C08GY2GW4T00000Oa@l1000808000G00G000W0W00101W0020lGV3GJC0JftI5S6e08000H
+1208240GK100m0G5H503GA06W00C01WWvU00040044WUzDelBR000mWJ00epTOc@t04J00Cf
+300u8000W00Q8400Y00020000mSR3FA00Om@MVooPgSzR5TaOmjt9yRD6Z_L10S0WyWj99P6
+gnMb04c1000SUmRW00187kJA8cX26h0010mDw9iOk7DRB100wbsvHQaz40001qSj15jd0080
+WnrC0001Gkr6yWR29G@Gox9K6F3W700A_3601010400C40000020X10mSKCqEj18000G0040
+G0000420280020010WG208520H00000G010004I0100G08004G00200000184000019eR020
+GmhwbWR80GW@I00a0uj_700088040000o0200WjmD000WnN_6G01Y00W00408ae@I0005000
+0400W001W0W0080W040I80Ca2W5000800WGEAr004G02000_iqWPfP8I1900iK_ik40W002D
+_X14C010000O80000000600I104Vi10004C090000408K00001W@dJ8SF3oml20W00G04W00
+0080400000mRJ6qYT2G200U@@1Gf30l423W0WWPwD0G0CGz@6y2_3W00401Y0SAE30012800
+0SNW1R7pGO@dOA00u@V9400Y00W00082Gx@90002CBV32ut0G00Gpwp0821000O0@yR000nW
+i@PO9U30400agO20W0811W000WWuoV3Mwt00104JfpmS@C0W8vEz@AG002y@l182G0opF10W
+000K00002023W00100mMY9afk100000W8I4hD300H0YsyXC@P8jD300G0imP8W6R0ETlYT6D
+u@V90001HC000206100I0X0100010cot0W0007uR0Wo000m40000KUtF10030nKQm2v60J00
+e@V30030qLT2tnpG1vF0000Xz00Goed0HW000O044020000A400W0120iJl1000W80000000
+102000GG05X01G000FpW100W021100800800GK02W40800050000e0X800222W0000508000
+10GvbmmF_C00GkeDzA8108sry300501A2008G0HG852W0004D4m0W0i0W00000800440W400
+04H808GW4K400GC41128Y2100G82000W0100u0004002GY080W4lC06W20802000Y008W000
+22S3F30K00czN2mO70T@B10048410W080H00041300eZi4040H8W014XG4WInA2G0G521000
+0H000G008GW0G00eAwD00GHW40000aW02W80G8820A2K0G100f00HW01041g04WIA041a20A
+4180G0000Y2002850H0241W02000Y000802081000X20000uw_4000GaXJ5JzR02W2WauJup
+T3000cG00000QG60ao2A009ntRGZ_600040K282810WT@D00W02000020200002000W0W22W
+4000001B40W001a000O100G01X5010044006WA00G02000C0008000Y0000020H0Om@@6008
+bTMDCgytW5yJ00WG000000088bCOGNZ6ycl10400000Y4Zk1@ed00W00000W00080020i_k1
+06W0s@t04c70O0GWuWI00088400G001e108W6W20600W20D000802W10000m00n@d0OX2WYK
+hOYz4spF11000087W18018008080u0060482C0XhR0241m@@DG05419I08L000BzRmi@6aYY
+1rzd00W8W4@D00GG40040W0114000822400000We1280040208n@p0000sOFgO2D3Y@l2401
+842GG010030a02010wM@6W040OkV300080oI0uL430208001WK90G0GPWU2G080V40000W2W
+00G4K70001KEGM000Gcy20H000Xm8041Y200W0W38A40080E0W80ehU600SHd_E60A40_@d1
+0GK10080u000020420000g5000Ge08200UuF1000aA0000A3300000Weg20000GH405z@0LL
+vA3Sm@08oPCJq72WeLbAHdfC_NLgym3ouV04z3F8wC1Gqgg2epC3@300W7U0s@F10I70L@B1
+0e7G@h7000W@@@d100ues1mE000P0100mV0000@@F0ytK007C0000uB00e7n4y5000m00Wa1
+G5Y9G70C02000P000Y000Ct10Gi2mmS7W106G7G1WEWAGH1LWYE00C@0w8o0s3q183e0G6G1
+W8W20H600YCWC000PQ@F1000Go400_@l2100J802023d108g00GM1WXj203020N000C00002
+004800000YW920002W0000300WiZzR00U000Sr0BAo00000N100PnD300acz@n0Wx0000008
+_80JQdGro600GcrkFClP0uVJ0udFspGDh900000200upu@iYF3W860AprZwrDOVxVAytW3OP
+8DxAwr9XFjVGr00G1uF8W00OEyM010Gy0tIdVB10Wex@@D8xN3_B7920083RlH@wFSaV2XgQ
+Gw@I0Qc0OnPC_U@aC_Degv7W000jpk1ZYR00400A8004000sis0W0007LR0000120000H008
+0001W00eye400G00G00I0W008020000Gm4YW040080W0wKz4cAF10400bdZ1000YEpJ0009m
+P660200500000A02K0004042008W0G20001100802000G0W02G200CUl1AW10801C0280010
+G040W002010010W8000G401g00e02000W000e00Q9s000CV8001IpsWMwJ8mz4cSFXc4JG00
+4GIq6qxj1fvR000820W0e0000W20804W0W0m020080m000W00GErt080010OG1WW2Gaol100
+41e001qAk12W0200GY00000H0C0000400XK0080800WW000W880204600000WrU0X2000040
+POy4W004yQo3dwd001W000003unG8L9W08008081G80WYtCG000W00G00200008AIEF10W00
+pcd0O001A00GJ0QW0000A00000800W02Swc100000801aFl1000G8P000902eEV6YWcXUxb8
+yU3MOa100W08500020002004002u8@Lahl12000000Y4w_6jyP00H0eOBI0WC0000l9000W8
+10C002020009yB3sBdaRODOMT32MtWeqJ8s_70020800uejk4080092I2iRV90020Swg1040
+0WH09kFS2010040F04Se100004I00iqX4@@NX04Y0008GBvpm_y6KCJ20040W0604_l1JdPW
+0000WWG04H00cNF11010VZm000GWDdI00W800o1120WG8300000WxF40060000G0a@@F10i8
+4008020090000@iEXvk3100G0014WirD000800820K000bmB1W40WTzJ008WOx_6008Z8@U3
+0020yVl1prJ200142020G001_ENYOCJ0028800G0280000WW0W04W048000G040G009YG8I0
+08202LUl1nrp010044W40400W80X8I4WG61e280508L000WZL10mK00W2001018EA0WQz310
+0W04100HmLH01010G40Khl1VcR010G00002hg@00AW050W00940844KGa041H08X00028I30
+rNRmZl6iml120000W01G0GW094W404200GGW88014L0000001c0000A900IGC0000020W0G1
+0ul1F0092100420GC8C26Aa0W0V@Rm6p6iIE3000a410004fa21GY8000A2e404C0H8bPG2I
+80WKI100H400050WW80000IH40W44000e00WqEC00240040GG2000GAe0G049000000P2e0H
+aPwJOWQL0b090021O3j40I000004emL60W1W100C28W00HAGG00008WG1X00W0WG21G002G0
+835000000H100GX8G000X0400000a000G000004X04008P000820W001m20000000I218i@4
+020000G0esE62wt3Q000@_R000G0800Hr_dG3@60501008021G100u048W41000W98820W0G
+WW1SK8441e0W2HX8400X044o0000108044zyR010W000W0WW004012Krk1000eb6003002OU
+y400C0q6N2@yl1G4000G010W0AQzF14000BJaGM_601600G004W001W0G002204W0020888q
+030000Wm08010108mG00000G0010010i8d100090W00082W0G200I000000000AB00880520
+0820GqbCCll7005000000GY88k@7MRqWD@D0040200002G@1048Gz2i50HW0KB080610G01W
+0e@6W14Wl0s2G400s2040H008G00081000WG00G00048O0WokD00m6W000Hj000WnO8lZ910
+000hqQG8@Ii5C34000000G20100e0090000W200rpR008IW_0JmdV00000000mDA0WhC000e
+000001300k100400IB000y@z3m@1OzV90GQ0OPQ0moqO900W7yGZbI30Bb60B300WtBf10yF
+00LhYbSX0Bb600KjS8000m0008ud@1m@@1mvqR800Ct1G0W3m000a5GImSWa8n58HpF0NcVW
+i0_0S1SYo2e4PEG9YO2Iav7m4Y98B010J02H0Qtt010002030h4tWUgC00G@8000G100W202
+H80600080ejA3ctV3CL00080CYXp0000J8000002YO0008cP9YNt0@3WWKz11bP62wF0UWgg
+KbgouV08u3UGmCLbW@101Fq1Lz70Uu10egg0400000Fy@l1WVPQ000qW7U0GQM2Wb100WNTQ
+0OPQ0000mI00WgLrL3_648c1PzN100GHA00060Ee0u230m@10050GWPBzzV5000OpcjYYquP
+RS6Ilc1010WbvRmc_CG100upR6UWqWs@V00WqRKumq7s67meoi@j0_N0OpzbkQF12001vX@0
+004WRoD89K3EnDXmvP8IXA000m5lk4jaNHa2ayja1dcpGx@6KUk1xfamKK90140WG40GWS90
+G00WG42mgS60m0W00000W0G1004000wa1000aTg1heWHhwC00800000INM6qSj1Bnd0G000W
+81K5id00e100GGXDud080440G200048_@t0W001G0W01100W061020Y00G005K0YG010G001
+8W02G48KWW802G0G0A004W0000wz02GqCa000240W00080Qft02080TxB1a00000400W04kt
+tWBzD0Y0W00W0440GGW00G002W000W02G0m@@606000021Gx_908W10o00mu_98008005500
+80041W04X00G00201I801a410WW02WW04O2C010000G4m04840006b014WG0GIdtWwvJuoV9
+k1t00204GW01020000800W00010G80G000I200WW000G0W0mG1G1WeH@J000W0408Wc5IebF
+600W0a4d10I14_@t00W4104000010W00001W0408010120thQ000vQ000IYG000420acl1fZ
+RGl@CK8a1@wBnYPCafj1RxRGni9yts6r_R0CW0000G20C00pStWT2DW00480W040060040W_
+@t0m570001400002H200O00Gn@IasV5l@oGbT6qxl1001GcstW2yP0001mN0Fy@l1010WWW0
+24Fi100001091G00002W000044OGG2G800Ge000I081004A1480001G004K0000G010W00Wm
+@@dan2348000000G08mekjGgAEXhsD00Y4000000a0WaGG00200080GW80A448010102WG00
+ojm000lSG20GG00001000000808208014TnxH6C9ybD3800004CeKuPBtwRGPd60WG0020Ym
+mz902000O0044G0WlyD0Oq31a00446W0000140W0aXM2jsJo9x90001000W040100W10PmRm
+S@C00W000Y0mnz94Zf1000801241302G030i000313WW8G8010e0GH48GWIX84Kf408a4OQ0
+9830G000W5cq84DgG246a22C02LQ00802W0400Oa2XCkw3WG200W6GGG100K07H9s60020OT
+p7M6_1040000H040H00a200I480D2A6HGG92000GJG201I86W0g3C222m0K04H8000q98W00
+2G052A060042008G80I01qkQ80808400G8G808C_4W2000WWG1G8Nm3_F4Dg10GA0W88O00Y
+W2000HGqF001IOjQ30G200G0000009G0G4282W00208WK2A14W00000exM0W00a0300800G0
+081W0008002ehV3vuq4wnV3A00000G0Uyr0W0G12020000000H382N640KG1400004200084
+000100W86ht00a10020G0210mGY00000hs11804Y1000G00W084e01001080WeLW91K00K5w
+Iikx3RAc08m1Wa7Duy@40G0W00040060W020XVyD0I00000004400ZlQ00O0ZDZD00Wx8063
+08000WW00040002003W00GEJdW050eXeM6OtWo@J00W410482XG040X000030001X0n904Y8
+042000400Y0I2HGG485080A4000miP2812GG0W0W802000100WG80WG0lE7IPy644Z1r9ZH4
+x6qoc1XXdGQqC840400C0GDx60081W200uSw6W100OYU3GT08100T0000cg9A00000S00000
+02Smd1nipGcfRKAk4TtRmob60WF0O6@A0007KaV20000fwB0OPQ_oNgOfq0mIf1GrI3WMq20
+BZ6BN6DbgLCS900GbECk40WbfjJjD0000l3r00y@V0KL0Uat0GGC1nCp0pF004J06TPRGT@6
+00004008e0G0G1e302020ozsW0uC0606Ghs643d10KN0YXp08080G0W1I@s0Y200Fkw12G00
+0W000W90U@tWovC8Bk4Uuc400GQ00000mCpmoMQXbfHJcU6Ovq08OF3iCDMADQWt30Ofq0OP
+000m2FD0Y181fbXbI30Bb60c7D_60GG1000Y0000qF000p00Wy@Dm@V100_vN@3u@_3m@pPh
+bsm910mdSlrsiMU8nsdG276KsV5F_NH6G900001W0080000mB619fBK3nLa4E61fdme2d000
+01s00GUx@KNk7xLOmgvg4Dl1vsR08020W00000yc500WiYdJn_PmZtFqwz34000GWG000200
+00G0I1G0G0080020E1t010010GL000010W0005000W0000kD002G804GW08000080mnN90G6
+0200000208040000e0kcd18400XsdG7e9G0G88S@4K014ixV2fPPm9j6CDg1hyd00W800W00
+G4A001008OWG014W1CG90C532uXK20G1L80iA2GG98Q0W8000y010H801WG8H818e04O000G
+W0mzMpGjs64xl100GcW000004G2Y00W20004W0000204H080000G9OG20023X4000WeW00G3
+qMR2ledmY@60020ePV3001000081020020W8G038802G1C1821240ZWm1AKe6u4038W02CHW
+82mX310O000WgD0414G040138G020H000001WYWSyP00440200a0oD0G1E000004m1BpUR02
+000000H4W00000SG8A01WaG12000HG806004EsNY2tV00W0020040800000IG0004yk10140
+808W0008000ZWW008400G0020040006B008108032182W000O0MLt010000i0WkQEXTpJeA_
+4IBt0000GPMRmZyU00010042mItF000G00GWW0090GG80040GQxn0O0O2088000G00043WW0
+G2040020020008u300m8010841msRC01W0020020G8YBzCG0cG00D1000489vRmM@90000kt
+@46gcXeobe2I6_@t00021800W82G31Go01O0G000I006000149Uut000f041498100001100
+nI8200WWrD0007G@v908450880200008300000W0O480aW0OUR9080400102000098000404
+W40a63FX5O2100IW000WjiD02G00042G100000900G8CYG4e8oV340Gm00000GV380001024
+2Z@p012008000000Ypvc1001040G2sY@XaxJOuQ32wFXvHse@_4W0G0iwl12W146ar0000G0
+08a0004030800400010080040000rF0Z00000004u1fI000Y031WmJM6KkV240006cY10120
+2002C00G0100ugJ300010003OCL608008002OsU3IoF1080001mI4C6GHPG8I98A1f0GH4Gm
+0W980G0G03b1G5fgG21O02X4210G9000i7hY2A0ZW0400K0040Z@@R000O2m0o0a08C4n8XW
+42OW880WH614O0KXG4000181000YO6R3000000e02X00468P0W8400e000a21KqF37tR0000
+80408000I_Fy11EaYA002GY20GY0149e00W18A10O0aeOK5G1K0O2G04H4COAI2463C04000
+KN01280H08o8500WQjJW00W06100CGW80K0450012WWX001822000a04280G0_@F100G4GWW
+04W00000200J420G2200a05Kd04000000KW2W400000A0W40G000a200014@@R000GA0820L
+mPW020020G000GG4W00W85940W850I02P4W040008Y00000WYdG105080002K00WCZXF10G0
+0ZId0H400100X000e0200Kal1G0G0_@t008G10002000G1000Y008Gs_90080000OODaC0WG
+84K0G4G000X2807Zd00I0aG_D080020K1040220f000100GAG00H0144014O10aG00000WJ1
+WHW2000LcvIGO00u@V3020HKFg10000050WaNE3090000G4100000GW00010100XJ_RGKE9q
+oh10W08G000yeT580A0002G080008GW0H000WW020GG00000007183q40Uo3002001o0GcC6
+C1T20WG0I_t000080080W000qul10G20Y@d11030hkR0800WJ@J8NU9guKYm@D0100420a62
+0G0090G0822HY00140H26202HG44082504n005He0000d2W180i48tpRW400W9eV0H00W804
+8400200W000400W808@V6Eqm000004000BoM2W800000O10010yGWL1002mR1WwAC8_V300r
+00080a000Gxz6K2d18R02W00l48Q220B00X30000i4i000PGDahJOueV36zF100GD0010m0a
+10000Cbz7G6000006PeP6QRdaSmJ0D0Wl3i4V7OPQXc9HCSC0GBU00pC30cP6m300iCD0myC
+0qjl1CJ00000@hm1yZtge03040V10W000000W@3F0000Weot@90G1GOdV3yA0Gu@_10000uH
+t6000G0n40GER60008600GC20mS7W000030MyFX4mD00060C080O000vWR0H70006060C000
+G0846k1000m4100Wu20OA03_LFX4vI8G030WE000910042004804100@eaGx76Wm0W0W1450
+40ZKvCedR30mD0SrV5kQ00IM@1BJZbIZ6Bb60mx10ME5W7YNt000NzXid00Ipo@@D000S60L
+f00uX7AuxY04000G00K5e00007GtP70ZkY10O200yH4PiBnJRjG0G0ut@A0T80ydDLbsRG@l
+FqDf1tpM1GG0WMvm0000AT00WtVmuhkGokt01G00bh7Irr6q1C6noBnGwCSpX1TkRJ_v6SC4
+3ZxBnV1X4ek1X_j12000WzC0NpVoDBIi7eD1_d0800mJwa0001mn@6S7i1G200000mZ60000
+000085m0wJe6U3QYr000080402QpF10220000G0W20roa1@58HPz6qBF3PaRmcG600020420
+GaR600004K005WW22014K08e801M018822L000GW28001K022058EG18e0041100WxGW24K0
+28W000008W0200G4W080W020DNp08402000200800HG000e0000050100010800W000G0800
+H4000aGe00G010000OAoNY2SD00W0Ir_6Cnl1800000mW02002W00880100I00810000WG00
+0W24001G01200g0e1080H80X00008o0A0110G08DzQQ00G0G0G44W000000W_Dl101GWC080
+4xl1842W000004G1280080W1agwD0001000W6X008JcR0G10WUvterU3gut00010052W0200
+0G080G011014444409mR0800400C0W20W000G000WL000GRq6yKk1trZ1200G0020RzQGGO9
+W00W000041000G000VLSIr9K5F0UX70Vm3@@Rn@zUy@k9@dx2ppeZ1Og6W3R_lm7HJZF100W
+03ddmoi64pTBWqM0oWkYoqDuwV36@tWppmelU6ciFXd_huZP3Eld100801tQmzt6Ca53DPnW
+W00WnyDe@U30008i5k1tZ@m4vL4xV2rvRmjN6C8_6pXRm_c6K2k1viQGStIysF300UWsGFXd
+OJuBI32@_XDjzetV3UCFXpmaO6jA000WadE39zRmISI0c918EDU0800CvB3W040sstW0uPW0
+00Gv16W0W0OT@4000K0020004G0180000012WG0G0122G200e40008G100202204000400G0
+00001O500W240Bf@G4c6010004W00GG0WQ@D01WWq1zCG010020000e0001W0W00IUiqWjCD
+uYR6_wF18W00leP000Y00C00G00K0O41040WW0G1AW007K4YGWG000KC00e160C044a064WW
+4H0I2O82G000mNZ01000408100200480W0000C00080K6_649h1080Y000008A0000XWG000
+1100G804W2G0000G000500300Y0GWG1a84o000YW200m00000X8zJOBS3g2q0000G0WW06gt
+03000a00G0W00G0H60Cm00061AGm0Gc02184C08040n0284Gm1G5080614O00000at6W0m02
+0WW00G00W0804000W400014208000GG01482G0080WW010200eW4048I0100011002W06a04
+2800O00020000800WCKG66e020041504G1G0dzNH096apl1tXQ015WaAMD00G8007W00I000
+0201WW2G02104G08000G1010W018000GZE00OrZ4UwlY3@J0000I@@IG0P400H8000000101
+L4Omku6qjw3b@B10W08O2080W0000W200200I00KB_60402GG04001100O000800001000uK
+50204008008Y028800e0024183280nuw6000C86_4YZq0820000100200004H0W800G0420X
+0X06G4000020HW0W12Gk@9iyV2pFp0008m9lJeOU3G8102G850O2WK7VC0406410000040W0
+11W00041Z400Y20Yn0001W000100m42cgF108204100G01WG40G08000810000000Xf80820
+MeV2082200000G0O0088000000I0GpsRma@60004w@V300WO00044200008HWkUJ0W002020
+00Y01XdRW00390C0WT0O04000GW0G400G804000005uW0Guf9Cjk1rkRmZ@6yNk1002000G0
+CZl1bOR045300W000GW040W0004GG000000204GW0DmBn@@60GCI3W82vYhCqsl120240108
+Skl1O0220G008W002G30200a120X06004009000OOb80W04100ZW003jc000OWBtJ0080042
+01000XTUR00W0000G408206_t024000002002W00Y2G0W40010H800G200WsFF1I00080000
+G402H40008H500WeStJ06G5000G2GG4e0680440m0W2a24K012OH84000420a5u4GW388090
+H89000GHI508YAWn82W822004550cH8000W8GH0Eas00G8000308G0000000C00001000Na8
+qG40Ki80gK10X0042Wm092KOe82B1GK14025AXI0EI4s9iai1LoR0G2Y4Y6nKe8000G48KpS
+20GKaGI0Z8G2GGX8G1LA00G4W80O0e006WeaQm0N2G40A043W0Yg00a000GeCW82H0000Z8G
+0GqCY00100W4GPL0004002410J0G420WA8G4H0W0nG5120G4040G40000W40K00WH000J00W
+4O0YG100XW0H0210e862WG0X10OaLzD00200000I000K0800000IDiZ1a200W0a0KBR25_RW
+I000000KW20410G1GWG0W8G20000GW002nMR0201000N1W2G82dsWMCC0000W80000000W00
+20500020010G10508WdlJ0000001GA0W04WW00cZt000G0C3000W0I1Y0G0G10GUz6KTV201
+00008N00022000200mmSRJug7305001002100008A000W085yR00WG0080000401f2W80000
+i@300250200W0000knr0000S5wd0000mv_D00X0r_@600G82H4I0Y010008W7mQ0W0000020
+000Y028W24398yV30440qnV28a500482010G8bN6I5t00WW08GY000483W08000Y0H0080W0
+00040W0G0K8G2000mq9WG00A0W08m00004W4800000G200qIk1RpR0100000890001048020
+W0002WGo@604011W00q4y6GSG004GC00008443G@@B1W080a01GxbO00G1WE@D001G055G08
+400WO4GXI0401G050030K062W8WYWI18100m805W10CW2GL0000MY0WG0440G0811000aGvt
+FKpT20800e800004200G02802WCrDG0a4vhH9aMl10X0W8W40e00000C0mz@60081000080u
+F0000YU100c3d141104001_Xt0000i00100O84TpT2400000P00100m8000uF2MG000GC40E
+Mr00008JoO00W0WMaJ0a8000G40Wa1000WMgTF1X0020e50010200000040210002Gz1000G
+v0000000SzV30005i@l1W20v00W000x0O4030000000u20zX20Qf5yZ@1uX7QOPQ0OOU0moM
+28QM20jqIQeP9BbcAfnI0jKQ0KD000GxR90Mc60OU6f100iKQgylk0uEp0ugH@d00_@N0000
+0OaH000W30uW30g000_pF00m5_wV0zG30wGr1av20000IV@@pTc30010WVyjX1000HC004f0
+80uUx40WX10033WP00Wr00Wb_JWW10003G704067RR0000mWkDG080e0m001W00TkR00W3nu
+kDG0G0W0m0010100030_vt00GO00WG04501W800O1S30O00mC3m8A03000p100CCzR3406cx
+0C0m0O000m0008A0J@R00QLbJyJ00p00001G020n000NzA00aQU2e10FuXbCP6BJpIQf50Jp
+I0IJQ0ebMouM2WXXb0acb0moq8D00GQM6000000S401cRWhl004K5o0Ib1S50_300Nb_0000
+0GK2eF00000S7000WgQ2W@3C0p@F0qNVG_@zKmB@vg10K5500@10WwrnuUV34000000W0012
+Guz9qdB6nUa0L10WkfV85A3Ygt02W00Blzmnz9W000ux_7sl@112000020wrtWkrCu@V3804
+0CJj7000Wa004KpV200cAMks30800VsRG3@60G008rV900W0S@l1fapG_@IypF3tWOGYRR0W
+00eRy40sl0KXz6j1bG9uOyeN59Xd0000YMpDeil40000W04WenR3YcEXofPudU3EinWp@D00
+00iU00WjjV8U0CgFoWJkb84f400m0yJJ2lPdGcwF00200040G3y90W2801200080G2840A00
+00GW4aVk1440008X0G0100100000nM80A09kR002808W00000WkAt00GG0v7P088020008tz
+PW00004W0000WW0A01000200W200001m00400W0000G008Y0G00oHYI0W0WOcz7QPp005400
+X0I00X0Wc280850W00Y00GG10HWH4Y02g40cW018210G04100Wu3G8W8000We00010W000G0
+08npRm5160004400G10G40000400W0G4480G002GG5a2G000080001I5011028G05Om020e2
+13G00010o8t022005jB1040000W04000ggA100m40011040H0W10M030002820G00Ge81006
+G0WPc00Oe00O00000a20ZeW1000GW00W0WmiS60800efG340000WW0001B00000W0a0000A0
+q0W001004Km0L000e00060AW5W0080QGW420W0GG2G004u04Woet00200lvdmHyF0020u5G3
+0042200OW40W008XH08010G08000C0180040Y0XA0WF3C00O00005jeyD020000W001420lq
+d0240WSlC000Gp@@6aQa10CGWkd811800004W00GW01400HW0GK@XidV20002GW808000242
+0810401nW0408000040a109IG30601021000012G000Wg10W00003Q00018000024Y0meDa0
+400m@N6G0000000HZy6q@U249200WW0000G0008o7BRyuU200160001100800W1qrT600290
+801012Z80G000400040Okbl100G0W401000Y3U00000000003000300800004Ga00GY@9ygV
+200020W00900W0W00m1030G000282000W0040W200JQ6DXoOy0008000010080XzR0302G28
+00O0C0_@t000480W004001W800WG000a0002G80G20000W02W0IvhT30301Ced15TomZx9Co
+H2000080m0W24W080040WWe@@D00490014mIwCuVTI800004G0010200G0G0420020G00020
+02030G0010400m0G0W18W0O0aGX1Wqe00089004004020G000Y0G00H00_zqWjyV0G80G_y9
+qMl1v@RGY964dl1likn__9800410040GGW8Gn2A0208G4mC3H1e0W28006L01Li004H0C020
+H1KK0fXG00eWO8I1C000ODE0L0X0W25083CWGB3007aX880WW0EhA3W000000G0G00X01200
+m00001I000G00IW00W10420004e82GG48I0280G2G000YGG0IZzR000O000G04G000G2008G
+10eWGWv124308443X113G500790GGg04aW1eQ0890E046ne080X4Y0000mjW00G520842WW0
+22004301004K58C0GN@9aQe100040W0X00H400458008G4W1YWWGC40G0009O400Y8080005
+10408GK2104SB682006wtWjPJWK3W05010Y0000Ga0czt0X10KW00089100A50420G61a201
+W0G00000VPI124IOnV30W200A0098k4kcL20060P@R0000g_@D0G00GnO9aEa1@@x10W4W8V
+Dek63K0K0quh1xzc0J1000H4008Z21W0W0aeGWX0050008822140010W00S8d1000YAY5Z7U
+VW200GajC00001080G1iX0G10OEk402002018000C0O00WpCDW01008W820120WW00008208
+G4WG00000d200020440_8s00020RJN1081WLVJe67300G0W020eC430G2012000048000W01
+020@@J2002100G00G4910W000GAejO30a4G0W42008200Wa8020400XGf00a2I000yw2X0We
+201G04W000A00K7o600O40000052Guxu729qW@@D0e00mGoL040000052000020G0@@R000W
+Q2G000K00AynW_cD00m200WXKX0000G450000Ww0m00Ww000040Jj0P1OGdV900W29LO9QVE
+XMWC00G20000KG008hBR00G2100000e2W000Cy@l700WC0000moq0Wvf1Wbf10pCZbCF3BpB
+B1f1moe1WbHZbpO6cd9qi400i8v00@t60000k300OPQ_ZVO000C30J5v@VC04G0000SzJc4y
+F00000@tVC20WcVE200e0u@@0uc0y@F68c0008080W0G8sD3000YQW01K0G0OCS68GC0GW02
+W09k000O0mWu20101KZW104000uy000H70006080C0O0G1vkP0c0000400JedGM090000K08
+m42m0We1I000600080O0G0W001oKn0o000@@x10uX70OPQnmP01008M20G00GW00W20005eh
+73kKm0fHJfq20Bb60B3000oWf1Wbf1000Wbkd0LL50@x30@tB00o@@CuF0000@@F0@xXQkDm
+7000000CW2AWU1000mT0etU0000KNtxaK3E9@@N1009w0v8vUy7scp3000GHmbGav6SNU228
+00U0uWSSOe_S300Y0at832G00IGt0000Sq300U1@10100XeRm0v9iAj1Ffp0W00m@mCeCS30
+2400W000000ucvC800082z7E9FXkrP8Xz4Uvc11002G001_@t000NrZ9iHfvCKjc4RlRGqHI
+0000y1U3EFFXfqJ8lS6Q@FXTtDeos4I@N2Wu70Rk@mwy6StN25Ypm1z904808hP6UWB10100
+drRmXd9SPU5@@d0000K0G0W0800G0000080e0s4oPt02000000W100mXI000000H7_60G000
+W01Gul680000W40W84000200@1OW2002040000G10u000G50viC300W0GG004W0000OG1044
+07EPmX_90H0284U3gdF101G8088W00800002v_P3002000K88ew4420008G00G000W80aMsD
+00GL6001GW00000A204W00L4A08012000qpiD00GW800800n0GeW04G24G0G690GO0000000
+A0108W00G0490QG018108200qG88050102800GG4emA3YrdXUzDOxU30W400G00040000e0W
+J_CW40409O00020WZzd0800G00057pP0O0000Y50dFP0030201WK4G1O08W000G10m1000W0
+001X00W20G040200m0C21a02012000000a0021082WW0060e803K800802e40WHPW0Y1400K
+4W6icl10W40G000a@l1L@d000WWl@DeZG3IlFX2eD004001W00080000W0cTt0000eI50000
+40MFl1PbPGC@9W0200B00000C00WK04000400q0080100A005010A010000W018000004011
+0G0ai1OuY2Fw3NY1@n8ZV300y4MhP5NzRmtj6020000G0a002000WmC20Z0YG0ajT2040W80
+010G02vYO30081SFv3RzVInBUOSq0uOD62_F10G00BsRGmg6aFI23wR000200WXW0W0GoUt0
+000G0WJ0140010W9uWp7_b9dq@J00003h00WkbaO8@4A8rWaUD0G80mm@6000G4340mju600
+0W008100G000W0GG10WQ0i2Y000J5_mWgO4iQ500i3EEjYy_D04202000G808000200002G4
+G0000004m8H020000m00H02006004200044a6qD0A000W12WazV0004HqvF0W108HqAg343W
+OA0phR0200WJpJ004W004000808202GG0WG0O0049G4080c004y4WO2LC3008408044G2A62
+G4W1WY000X1K320G00m403eK0eN3DOg@7QgfYP5y8Gs40000wM0Y0100G@49S@l100GG000W
+KUl189000820218002H0HRz6WH090J812aG400GK00W40409001G2m4KX0G380m8H81jR0G4
+02G00W8GA0cct000W2PiR00GW02800Pmo00W000GW0Py912W2WU@D00mbqdRI000W20a2000
+00G10HW00085020882uDV3M_sW5zJ0KW0GAT904eW2091GOu60004080280W0GW00082A0gY
+t008000G4040W804000f00GLjCq8Z1xroGJ@6W80W00000Wu24G000rLRGWz9KJa100A0000
+Y5gW1020Y000000G4u_z4W000m800uss48B020004010WGH@6CtV200Wm2us00038r2oGwv9
+4DO2rrM10008000yJ3OmT@FSbe1W84f0H01WG08G00GuKlFipW10000Jqt041A804cG8W200
+05Gfwt40041atB308G1AzjY06ne5z400yz30G10900mFZI0001eFT3m00Wqvl1Rgp0O00000
+41fhb08081X04001084000e4008CS30010G0GA003WaM8I24000400Wsln04T000007wB_Xc
+nDOzt70G0094000O@IKau9SqV200M0008W7cg120010I11004Q10q000O3WRtP0000B00008
+720000GC00000O1W000UGz9S36CuX70_dk2000iQ20005K045z300m7ZJnWLLD00F0000uO0
+_@V0y@@a@@V1000m@t385L0WGiDmdg000W0Sm300000G00WV56k160000WC0u00000P100C7
+WH0CWCYC000OWeBDuUE60m00a2W48000002000Y100G_J2p6a603000000n500YB06020C0O
+08000o200OA00a3k1PpPGiu60008400me08YO5a50fobm_D2TW@3WW50swU32A20PcP0000G
+z3OLg2m@zpF00000mVBiA0_@R0gA4000y0GH00WgKn@0GW@300@N507uYHTr680008nU6Ipc
+Xjjn0000AS10W3Rzeos4o7NY4HI8sT3_@@18e000WG0w3F1000WFCc0400WN5P8lxA0G00iW
+k100q8gHN2800471@GIuFCCk4jmPGruFG1008gV3G00000Y001W0008000020v7R0400X5mP
+uVV6szt010W0D@R0uV7WuS29HMC2PFXtmtO6U6g@CaNvn8vR3kM@XBoD85U3_KFXOrPO1z70
+0080800uTT38040ymW10G10G0008003usc42dt00400RpdGVv60200SsV3EZr00001zcQ000
+5WQMP0000W0W08040020100000G00Y00H000WG204G1t2P0040eBwD00W0000f00044002G1
+00G00Y020028000A4000400Ie0XW6q_3Fszm6_Cahl10100_R@180000408IuF10iD000W00
+GG010IHI0a8Kd_60008401G007W4LGG000000050X20W00b42220011e8820200000100K18
+ma20W101G5000YGW0G88842D400804YjvJuDF3C10GazF3BLdm7V6W0004002ux_FG00020W
+0KdD6000Wqw0000000K080mY30WS4O4tl10W408800000fYW2WW1000n0GG0081e300000W0
+8G450G002009W0e2HiYA0G14405110340H1WW0Ome800WG800uqQ38m00Ko@3PFaGEoO41j1
+0G00UmY100FC7xdmuT6yyl1G004W0E5a5l1pqd0DGGWVuD8hP3M@t0804GpxR0X00800GG6G
+G0QIDaPhy8YS3AyF140000OC10K880a41000000G018W00O000000m80800001082000010J
+3R0004J0288000040aYy@l10W000008k8Y1DhdGqrISn59fQpmOoF0002NJ00W00800G000W
+00100020C00Y08W000240046G0W0800000H00040088ey_D0010W00OWL@Dew@4Qzn010008
+042w@@19100pZQ3002WGjD000eE0010G00G02000W8002018tD60022WW840000mS268000G
+480Gg@601000410GDz6040GW0000400YtrneoN9cSEaK_DOdV300@0Ssl140I4W008abe1eK
+41Ad@XmyD0100G_x94uf18000WX04G01WG0G00X0204100G0056r@XNxh0400GkpCKok1hyd
+00900000W0G50G08O0000Mr40i0042p01304000WY2G1G81Z0Ge8G51K08G2498488000WL0
+44G008W00Y198C2G0811W22W0100X0W8058WW0We00014000408002e004G0bAHx@W0100W0
+00G000UZtZ8_b0180m996000F1008218102008AG720Ge00X80G0e80002080010W4140YL0
+0002GH00W028a00G0Y0a404W0e220100Gci600GA081K0I3W0KWW00G02W002yfl140080G0
+0G010009010000G010000f01002IYWQ3Z401004tl182010109yp@300A0gft00i5Kh@R0e0
+0WpmC0004m103q3V20W0e0L0410000K1000G001000R2mmcaF000Y00W000a100G480GK002
+HW04000H00GZg6W8G0yHR600002008280820W2WdOh00WX000a8000eU408Eqt000GGXpN10
+100082082A0G2004vZ1ZcbmubIaZk1000mYHF100W0lxOmjh64XT2G1002IZ10000400Gch_
+XaVD00GZC0W050m105uO0218WmmP00G00081000W60W0AW3808012G02W0001YtqD0G04nz_
+9000W044000I0WS_D8mV3YuE11200XpkH2@9CxF3rqo0W@1002000W00Eir0400W@@pmH490
+G1002009a40Ie80001WaQOt02X00r@Rm@j60G000890009w04000K0016Gr04T2080070I10
+00WQf_K32VBXAuC8A0300H2q2g4W40800e000006wm21000yEtI00G0KrL9C2l1zlP0031I0
+010@2o000000W08@NgoXqpCGl100eV51W8I50000Hzh@kNV0WCo0y@@AgE10KHL__R0yFH0u
+k@000000020GFYGL00W@y30@xP006m00WT00000GLAO7G02OWW8H000GD7082008o000a10X
+830206OdR3_7t0cV00000C2VBXtFDm008oKS64xF30W92_YmWfwD0yg000Og00mK1XlzG2S6
+We2m8HS30004100OK000W0u2G1010H1m00080O0O0f0mGBg2btl1twQ0000I@i3WG4109e0x
+Y0Y0007yd@000L00WtYP0V00G7003G1000m@l00000W74Gql6000W2Y800e0000yF0000000
+0V300000WylV00WriOu_1a00eTiQm9batoM@IilV2tuRGd@64kV2rydGKfL0YNWe@V3U2tWX
+MOeHT9c0oZzKIew0FI8tW_XVObT3gzk2000i1xaGS_6aLh4VkPply6K1d7BWS20W0JG000Xr
+pmpyRiDj1Bii1100WxZbeTU92P_XRsDeqV3020W4oB3G00A00000Ip10000AG00Ym@D00441
+W20WSyDW0G0mHI6Kxl10W0200001G0004G0n1pI0010200W0GA0W3fP8PV3gP@XE_mulw400
+08a5d100G0010G0000rL0000000000LJzR02G4a8@P00G0W00Y0000000G80W400G2WG0001
+0900G00080G00LC000W0000402A0O440000420G0GG200eQT6AyhYp_PO9@40C0000W00820
+00800420004000S00HGG000WF@3i602G18kF3C0C84zl10G00dErW@@D0809W1008105000O
+eWW00000G8MF30100001GecP300IASH897g03W50WF_J0004mGh6SvV2010W00W0k@l1RzP0
+04000004T@R000Yer@D000m003WeyWCuLnGYSHbm@D0000kp10WM5J8SU3kQJ20100800000
+14a@l1P6QW8G0WbDbuhdYEztWKhJ0019mO@C040WebR900Y0SaE3lAOW802WDqP0G000001W
+Ww2v5LLs8sWQ_D0eG0GJxR00Y000p0041WWclV00H0GuxC46k1jZNHMcs0W40ucL3G280000
+0Wp00mJuC0001eN_40008S8E35nmG2z6Ci031wRGxsI4wvC0002C100O02G400C8000000sF
+@XpWI0GXVKP0010200G80G4000H0EBr00002WW81W00HW8GH4843GY_CKqV2ZuM4000A0040
+f@R0m76Ww@D000W2000200A20828cyF10C1008204141004G00XWW00WW@wDWG00010G0041
+0Hjd000W800200G80IcFXYmDW000mI5s000WABV3000GY600OAS6MMCXD@V0900GK2C00eG0
+20WGtSC00040K0WmrQ9yeM270MndYg04e000WRnT1FG000u8N6_y7300G00030Uf_XF2mux3
+UW2000Ya1OB_46Sp00A00G3002zFXRWD0100Gc@FSTQ2h@BHdkdSRL8Vuc0C10W0qVuYS3kx
+_XKvD8AG30002qcl4xgRG9u64dV2XlLHmJj0eG000GqUpgC000018000W21WTnV8JS62zr0G
+220Dnz0000I10000a10ckk800G0_7U00W20AG000yb0m@@9000w00000WX7GT200nTp00004
+W001b_R00E2WkxD004HE055WS_Vm350GTz9Ga10OYoMgn_10K04vURGWK6yuC3fVpmz@6804
+08Bk400W0036102040c00WrhP0H400020100W8DUmpm_I0WPY1002000k_ehV00GHrO7C000
+4m@k3WR_7GR_F0ZtR0Cw0082WEq100MxUZJP39BmD2srWw@P0mT3GmWX0810Oh@7gktW3bJu
+wMC2dd1000GPoRG5fXy0k1xad00002Z000rDpG9HaCrF3JdpGTwF4T_300G06pEXLXzOGz70
+0eCzwB6J5JI6JsCf1C02N0_TEXWY998U3QPtWinDeE_421tWTNaumT340000G004000oORI0
+08Y0800m11FKij140WW000G0500000WmFg98G80On562gt00GW0400418W40K48OEP340000
+06100004004G0C0001800060ylk75t@Gcv6qmV2G400G005KeU2002001100G084W01000yO
+8G0W400G040404002000048Q00Y40W00210G0e002100400A08I010Y000KW00y9h12G4aG0
+D10W00Gf14000W20G4022800190888WG0H1GOqFSXl1XqP00000W081j@dmex6000W0W2G40
+0O00m00zuP00000W0G8200W0mGW06000aKGW00908W0408086Ms08e00000G00I0Kpl10100
+400ZW824H406W1000200040000171802g010G5I402G022204I000X200818010204W5yn04
+00uF_OiWj4zxRGl@6O700enU6405020W7yMU30010W200010GGYx600900m10000040GmGde
+Rmz_6801040G08000300100G0OoCJ8000GW400G00mSTl100qwwx9Xt9n8FT30011G020011
+GnwG946N20200W0800W10PXPLoA438020ntd0X001800820004qj04uW1rtpmy@9W0000000
+4001000W0jnR002041CG000000WW002001W0XW0000021afbR0HW08P200Vpop8l6010000Y
+0X002G0080000G8200rVf7001410WY04G0401000GG00G0000G0ket00GW0tNO0Z000000GX
+JWnKXj00G000e84600WkIC00O000Wqp3yV0202GFxFqXf10800AdF10G02VzRW8000400F08
+1000Yv82W08fmJ0010K5@605000H881008I1040OG042000Wc30_eZ10220W080YGY100290
+GH00088WW0Km00e0KG420G01400100400a0Ac4WY22a90014n0cO11C0818WAEI1UYIn082G
+0eGm01G0W2B0300G430004310WG0004008ywk10800AUF1000G41000G0414H8224X22W080
+0W0801148A0yrj1W000KWW080X74Z0CW00H1m00ZW0WQ_@t3000H0GA8EIE401000HAf00IY
+200000Wgy5@FKvl44G0O10W020e0Oh@4QgF1G5000000OYK00W00IH200200YhQt00000H41
+000000105AEpZIvD08W0W8W004100WDS0_4d1W000Hv@mVO6834W200100G000020084Wowd
+1035W0100W5180400epT36aYaSsgOeV60mW0I0W00H002000CE200vz@02I0Wl_P00300G00
+0m021Ye88400088808Dt400WW00280C244000008OGC8pWGG44zUaGPtpW244000_Jl5l10Y
+WWDrJeWM36Zb100W20Wa80482200a09Ga0401m6z311W000000SB0000K1Ago3I0004W_I00
+00x5000yZ2mS@CSQc1vkz0cE1180W3Wi0004WCqIy3I00e0OB0CPl100W2W00C43NHWWA00W
+LpO00qd_0O5000i8Xb000cnJ@6000m020001W5K0K5H0K5400000m@g000000k1WSvD00G08
+NL1GFa0yG1gh810@vV0BG10GmgvRS6k1@6_G_qI004CK000W3C300W100mD000iRqel1vjO0
+1G0000100G60g_t008h000W0W100G600W40002300oA0L040C27F1000X200J90L0AWn0W0O
+000m0008B0rhd300080Uu5lyR00001ND00Wn70X8000Qc0e@V30_c2ieT5000cz0000000G1
+00eN0000Sp@sP@@Jls000G400400u@huZzmpBWuYxX7G@@FWK500UvTZyQJehf4MhtWdjJuu
+U3Q_y1m100fFNHJZsCVl1jfbW0080800000G0W0002201ebT3gqr01210nsA1021Wq_DeqH6
+00mCT5U2@upGnx6qAV2R@Rm2sIq@j1LMBH7u9yHP8Bz@0408WK1a0SM1GvXviiU50001kLF1
+04000G00kIr0W01GngR0008G20000090104008G0uhTCUbF1000mh1dGdv9040000W0000WW
+U_JuX_4_eNYtE31G00mXuCyti7W000800GG00000040WWWW5hD00GgD000YAvD0G1KHLl900
+00glT6e000G008000GGp@64yk1vuO0000G20019yam9z60100wYY4AWd18080FMP00000028
+W00W0hYs000GX0010X012Y1000W02W802WlgDW8014Y0000H1004020342Y4000400204W64
+H8000000eG0SDX120G20800yRj12020040400020140002000n40010000002010G1008410
+WQzD000G00WG00801000004804F53PrR0W000000802800090W010OZN300G20XOA00200O8
+08020020K8C04HG20Z0000YN0040W0CG8e800G0P201G0XY1W20YFxJ00080W0080C002G00
+8000G80W0080004O0000040488O0GS6l1O00M0mGC1000vPVFG00WyBF6R0RGzz6ae@300ym
+cOpWD_JOiV300GeCDj1@eo0G80We_DOrV3kzFX4_31008m2sa0808o00W00001G0085Oa001
+00We10W40000aHy@@3040Wgyl200204G00gpF100121tRm7n6CQUBfmR00G004000pyR0180
+020600000082800002A0G081YG00GSG400040000W0gdV60802G00002O0GqyFaSl1000YYY
+p00a88008210A0G4000100C0I800018pkWHstL4LI2xxR00101004G82X10000Y000014300
+000001J20X0g_t00061d5xH@@6Cxl1rZc0200080W8z@R0W0004820z7Z1208W@@nuqU3040
+00004020011020W000O0000W0800000CPI4004J00G0G100ACc10G40G8G0Ayd1002GzzBHG
+yCiQU5@@R00W0400010G80EE@10G00tgR04100000GYWa20WAO01XW0g11120G9080G0I800
+00mmPYWH4X00aL0epeVW88Y0I1000W0Hjo@0I00000090W01Rst00Ga0W0G0W000G808200G
+00YHq@@hW040GtvIqvk13bR000010010Y085080K82680050Z00828KHW2WK0008aA0202X0
+00G34004J0@@R0008O0Y4Y00W0440008408xV3000Iq2Y10W8I00000a00010006Z0284A0O
+2GX10W82W80mm12m8sF0A000a0000aAWk_D0008ID@9KGD3000eobFXIbJW020n@@60k44u7
+V30500C1F300W10G02KIF3Ryp0040Wz1C0000WX00Wz@D0K2080I0adzh0800040WekOzuaU
+3_5FXheDWc0000008L220R_dGUq9i1a1m240s_F10008l@d00I0WjMC000GGB@64Rd10122B
+Cl2A0000000WWu0aFi704102ot02G08840000000WW8G000000SS20040510IxdXK@hOvK30
+003i7W1vep0210Y7kD0140OHAjy7D60C000020auU2W040Yzt0G00000C0YQE10G40Y400s3
+d1G0G0fMX100K0W200081G0GA4q3@3010040GXWQ1808WAG0nO000000GY0100K0002jVp0Y
+E000GW3000WzAPW0040e0v4kzt00K20W006000000XG8pw4w9tWXsD8Gk4g4F1000W832180
+IZy@l400W@0W@@1000uXQ3IGdX@@Vml00000m86uV62u@@0mZF0G000Wg000WdD00ug20080
+1000001CEU600Wh000000V1ms@60W60aU00G8s9000QML0W0000000u@U1005m@@10OXeCvA
+W000WO00e4kA4000008OQ903_@t000O000m0WXi203048nj40en000H5004LGhR6y@V20C00
+8P0O000qf_@4000oazO2hFQ00a1W7nD0226mL0689000Z00Gy@j0WF00000W@@3mFWDG0100
+0kg2TZ02G0Wle0WxQ20p00007zx2GKI5W4KWk100f9700u@V3m4000002G0C300_@WGZzmgl
+00m00070aYK00tnFW0a3U500000W10CvV27mbG066ip_33OB100awCgC8nQL_8lYFpV0200W
+000280100008wRt00016v0mGDuC0I448pP9Apd1G680tQN1021WNpIeFSF0001qKl1V@xHHu
+ICtl1000WQop3000yG700gxlYHXUuESFkN@108000010M6p002000200Q@CXS0Cu@V600WaC
+HU5jdd00WIWCTt00G0m5WU4zl17moG85O0K000800w@@98000QCD36jt04000xyd01004205
+4HQP0000G1100WgxW0GG0G00A0182000GG04X2082G0G8W80002GW00009W2fgOdU3IrFXJw
+D8OD608104RT28000IsrWRID0W10GYz9000O4000800GO1000000K0GHG01001WC00004201
+2402G04I0000007p0W040G4H02004e014X0010A0W001W000G0G001008G0GW0010020X0e0
+0008400080m800A0e00200G0WYu_D0W021008eC4C8n@4W000Cxi1d@R080000006W100000
+WSwe10X00800000M0000000cG000000WG080G40080YA00JlT60O0045X000Wn6X803000I0
+10u02XW0M0000O8OW00A011G021W200001W40W0001041010002G20000G50050G00100Chz
+O00W08W040WWG0400W0W00iTo7Izt0002006006ZdX@_O0G20mDy6iWX14000800WG801izk
+40vf000W0m40m0200000W00WZ1oFF101000884I_@XQwD8eU3Y_@Xpzjfu@7ErD10040800W
+0010000WJE10Gmw6SaV2vTd00G8010000004AqCafzDuxT6Yrt0000GNTom60608008My701
+000000vu@40000kzl1t@R002ArV@J000WqslC0010W00GW00G02A00xRdmgwdKO@3v_RmlLL
+yYx37EQmvA9ySl10P4008c8014P86D30G4000Y00004ujw64y79HwRmRQ6SyV21ipmwf9KIC
+3tURGKx94Ol4fBR00014000eeF41xL8110000G0000I0av_9ZVXnqy60008uFU32ptW4@Cu4
+03UZqW1JIOAU3IV81000WG0G0410OG0030ZG000WBAA48nO0G0W0100GW41004X108G81002
+1108110O04G03000CG0XLHIOezD02024WU21r@mvX9aGF300G1__F100803hP00040O010W0
+08wPd10u0W020082HK1K02W0141000u3sD0100Kh260040W004HUMLyEF3TxRG9d600b000Y
+800K2010Y0BGOGA09G90Y08280008100W0G00b000cEWh1blbme@602H0000051W0mo@DWCI
+10000200WK0G4400XIHACG4P040eW210W107XRm307qbXA000200K0040800O90G0100K00W
+240I181W9080100G40045G2000i05004UY1zpRmf_600G001A040000WkD8W00e01000aG8Y
+XX00G0105800G000O80GCwV200W4UzG50W0K86040U040000021C050008W08400000201I1
+0K000005m01801I004W4GG81W101010080qd@VG000ukF600O000003R100Y4GCG3G0W201e
+044000C0A8G0000A0W00ES8XK1D8vVI00G0810W00080W082000I424400082W0HvJO38Ha0
+10qCW400010400c40W00041H000800GG0GizCaCL2z2R00WzakrD8V730a00008201G0mbo9
+igf1Bvbmq@R000Wb00000GW8100W0m10410020G0G4C500010EmK2f0m0cI00W0W3OA50Y2m
+W@MC00040W21XkYP00a900208Z0000JS_T0100yL0W048200000H@D0W0Gz2i000G03C00Gw
+_60I04uLf4U_F400GqoCZeTu1@BpC_70PCZPY_V04TcgAw3TGq7wWgEq1Fy00cP6HNLLY_F0
+4TcP0w@0m@000uX7WfszmzH0eL30G70m700Wh2_pWANCu3j4000000pgwb_G0WU0000YG00g
+FG1G430W86G6HCWCWQ0P050o0A041qK0e8A0383W0G6G88MF3GC0046k14T00001OaAd1000
+GK000mj300R7W1pF030KWE00Wv000M1000M100C2mW94W0020100060aWu6Jqnmwwpu@V0ea
+_400WF2100000ig0000@1000y@@0mV00086100U000CG10000uc280000WFY0WRMmq@6u615
+00000Rc1GX7E0PzOJhrR0010OvQ3MDoWG@D86V3MyFXb@D0GD3mRa9q9k1FXNnXiLKag4L@d
+GYO60001uNX4000OC4k108I04000y8k1DZP00000GW0000000100z9G5E100cGFX0UDefkA0
+20GKXT2xi@mXv9qY_3FU_Gtr94JU2B7@m1sCSZD300sz_7BXIjze3R3g8l28000fA@mL_6q7
+L2XpR0010G000G000GV4tWIqIW000020KWY0IO7T903T0CtV20W0YszcXCdPuzyAI@@X_rPu
+hE38G80W00GOkU30404Kxk1000G100O0040eWr40m00180421W00010b3iI00G02WK0000G5
+000eb80G0G0000H140000G0Y2000WCg00000002g0Y0000100800e100GWScd1PkR0W00002
+0G8L000404aol1YG900020010W1G00O@198W0W87k4Art00404G0080G0H000000H01C800G
+00020Y0kzt0008WA80a4W8aA6P2400W100Y4000H01G000elZ809GGG900812115640WXK01
+00G0O0G2100801G0G00WW0C000e0400W408000A4G0020W0G800000404042100002002004
+00W00320418Kmn6CW00200Y0G7L6G0W00104020H000004W400101W4G4H000200G008G001
+4G0W0W04G7m820W0G1AX2300G880LC100C0a0000uZC0W6X4WA0G53002AWG00LCWW6X40C0
+4280GWq000W100A0C000W501W8hAO0G00WJhD08p020a1X@@D0030400G414G08i40czF1m8
+0W4240ctN2010mTQb0004WUxD0008q@@6021W1W40mcy60010000W3000It1103yR0G400K0
+q0bvR000020C00T_R010P000W000W004000m02004000G20G000x2Q00W100G000a1G0G000
+8009mV3sz@Xj@D8l_7AVm00001JPOW180000000380010003000008O9@6080000G214G000
+0W80K4HIvF11200ZfQ00100G0Y0TvpG8x9000eeg@4830000W0OyU6EI9X0KIeqy4Uwd1001
+2G080C800KVa1000400G010000I02081000080W00080008oY50G41W0004W0W001GK04011
+00140400000aHICG002mt@6W800uET6W00000486G0280860410WG0800400ySD6W0004010
+S__304486VtWuPJuvx44240080WSpV3000G010W00G0Gf@6G004umT3sYt00210DsRmAz6C0
+Y1zgRGXy6000WW8W0oUt64AX15mB1002WfnmW020GsU60GG0080114042400W00618000G04
+G008800400001000Y81W008900100002001100G000Z0G0090W8OB@40090aFV2RZO0W00Xn
+@D008W000000W24Rel1W00004WGtsbGivC02G104112012281W2208W08Go0G010K008GWAG
+0H100100442G0P000mrG4041H00GW820K9Y000W111G40120Y0000C0G880WW0W010014002
+000008WxAOG9@6O04000GGaGP20000W4108Gi8G4wu30100c9BXaGD89V600082hW200X400
+0G5100X01OG0G400W0GH823WG6A010G42AW8W180Cwj1gAGT0e84WOIWW820e8qG40900m19
+0800WI80W00W000048020W0200140410000W0AGEy680000W0GW0040G0CG4be01201aAh1W
+00G0502SQk4xERGwl9KAE30008000GH00W42600f81G00G00GA0000P00e4ewV300WbGA10G
+20400aA10a040HAe0Ge0KLV2aA1000c00Ae0aG0010W20000G000e0G0H0004WK0a0G020G1
+0000W0U6s040b0jsR00G000G4K0000kiFXmmD00G1oUyCiDX18200MIn000G0020G0040014
+828000H0400020W84W00000i_0XG000WG0AWG408281020BW08100W00810WbzDW00000003
+000HNsb0i03000280009B@t00W5H0100e0W020G004Y00000Yecb000402G001000Jzd000G
+W6fDeJ83A_s0WB0001GQ02411502W1W0W0000C00G000OL800164P0G090000000I0A0O0G0
+002000100W2080b6zD8RU30W800102K0W00004mDwD00IWY00000021000002e3G000uG@4U
+7BXx@D00802G18gSGIuzt7Ils000G00083W00280G044W10O80Wt@D00mQB001000G40G040
+00814001G00W004WQiI8tx7kZpWEZC02100001100I5PaOmjy6800m4000IOUF00Yk010006
+0GelmP0A00Grx60010000G600000C2zQ0040kB0qyl10WD00000P4000qBGl98000s30000O
+W40000OZ0010kM8R0000GS10000A080000i00000D6m22000uG00040002002Gj30000w0ag
+1000830yul1H3OWH000000WUz50YAZXqwh0Wh6GUP60000100084G00100WMD001000OJ1kg
+bd40000Pn@04x81eJFfDLXtB4fBunC000G0@700UGxz60WRA0000G306000000HS70000ypF
+0vvd00Z0GeY00EFWvpfF1000n80004020Spa1@@R000P008w0a1002@_1CH064H040G0G000
+Y200G800mD60WyC03H906043d10W90008L1008p10Oe0mWO5C60A0300WA000Z100oA004k0
+OGC1K1W2YXp041008Y00GS18mq1m003G5000200W80002500IA0g4X0w002W0WKvDuGVCulV
+0000_BVz4iD000000aEb30002840000ug100020GL00W@F70E@F0C02_xV0TJ102H0000W00
+0xe00U200000yl490000mL30et10GRA00Xxp000ynK0CemO30W3EC4l10y@V00Q0eU00OHT3
+0000QL00eeR6YusW@cnOmsGImt0P100JkdGBRLK3U51XdmrtI02000X80GaW64MU2dfb0080
+00YG0DxdmDl6iVT220W001000K088hk4002000mz8LU90004001GuNU30001G0008t43oiE1
+00G2FaBH__6000WO2M300Y0000010m0G@@600WGO@V3W00W4oE30020c@t00800fQ@Ghw90A
+g08_U90m000110euV300200004ORz7Q8lYZzJety7EStW_MO8nS9IsF1801000O04000000O
+ufV3000mf1008vsJUG8100008050oq7310G40040M_t00A027@RW0000K0000440000W001G
+gzV3W300W10000201D60001W00W2W0GG001YO0J0G1W01a2lD0100000e61000dqRW040100
+W04W0A000W0W00024010e010001G200e0040002GG11Y0W000GW0O080cuo00020G000G011
+28000W0184G920002802A0040808000X0GQ_600200140020800008e0W010000GA0070Y02
+0202404e020015000Y00WX820e2420C08G0GGmGI004405X20C00006AKmW2W0001WWWG298
+02000820100084WG00000K04WG100801480200400618802041A30000000DA0600H008080
+W03G0G080m004bKP004010648tXR0A0001WG000004G08011H00I0400C808a0200W420e0e
+W2043W010W0G0W8RyR0Q2C812m02E0401CeWZ00001W0g004000ak2B2W0W10010WWS882W0
+000n046000C1C0W0400181820020Y04I018W00Oe1g18A08Y0I024080035010WO0041G14W
+26WG102W002G40011H00020W4000e8@DuVG3gk@Xu9J85T302AWOG4G180e0045000082482
+G40300002G0G1W020480000YXVEpW1UC0008mZy90000a0W40W0005000JzRmio60300W000
+0W0084200Htd010200104200G0000G0HYiUa40001080W8c@A080001000W0G000800W0Y00
+G8004W002010G00WWG000000150_@t0WrD4XkdW8040000W00GI08a4G0P00WGWW0800G2G0
+@fa0CG0090093zR000104G80tIBHww90G082c000002WsxP0G00Gur600080041400G00108
+e82Kgpq010G08000800100G6e8T3080W0002t00000Y8m2yD0040u7S6CGP2080080G0010G
+OJg400002a040G020221Wu@JW8000004iLKCOZf4oiFXGsJ00Y000005820W00008I0W000G
+0Y800m410000aJcd008200200000GE2r0200000Ce000K00G002H0Gu@Civc1NmP00202410
+083H0YKt0O000W42000C1i2F3xqPGHS60G00uki40480qOf41fp008808000Y01G0G89qRj1
+080GW000100300044W0G000000@T0EttWBoDOrU3G000000G8oU300800420000200I0WX9D
+010W00GC00082rnRGg_900n0600G28Y0K4XA082HW0C0008002001C000eWuD000G4G00001
+0G2G4H00H0000021Y00I041050W0H00Ge80320800W6820I00083WHGW0C1G002040002zW0
+G02052G8000GH0000Y803000H428004HGI0898A2206404W03000007000EW10000GA04aW0
+g002IG02tSOmyR6008258G0080090e00hgR0841HG00W20082PAXiHD0H00200000C2G8I0G
+0G90G9Y50HgC8W1A412G9W1e100GO0Y80490000WG0X024210000iv300G0HW018YW820088
+1G0004a800WIm20nt460402GeGG08202O1o0W0420H5Ge201G4K4W90941A2EHqbWG000100
+6G1W0G842e004PbV36ttWWvJeXo4U@FXxoJezR3020G1mG104900e4101000aIA208aG0000
+04n2LV@60A00G00001WQWuED0a02100GA00102W0f850Gq8a1I000GaK8000W100850011G1
+W0fqP000W000GJaI02040WrhF3twomp06SFi45vdm0C6CQV2000G020484G00000hu00Wz@D
+000GA082400G8W4000200W08000W00W0WH022888HP10KWW0e004000G200048000a84W00c
+Id1vkRGg06mK0000G0mOs6000O0X48mGmCCe93HyR00W0edSJ00QW20000WH0GneRmn@606H
+000W6500G4000G2400wut0G10XO00103G0O10240e000800G0WY0WW0020005000GG002000
+C0040880I4tW3vC0X0000600000120O0Ydt0CG005@pGkyIiEi12W04ort00GI42W0000011
+00W002WoQ@C06k1unf400200Y00Cb@4Yvt0001020406@qWj_DG4000104101I0DuRmMoF00
+Ya010WGc_90080208000A0000035xd08G2WnfV8CS302i000G0V7934000W_3000Wy20002G
+0B8000e5200Stl1mC2000eCWiJ0000voxK6001et1000WVXC7G000o50MHo00GD0000G90HA
+4vl10G000002Wi20004zYP10QP1eA00K0IU9XSxP0004W00000y5000800e30Q0U0mZ80ex3
+W000u7Y0mLD000000NL0N9O@k60GLK1W82000h50000000ef70unCzrdCC@F0OWH0GuD0014
+0W8tv@03Wxk3G4tC820000Gydl0uA30mDROR0000000GcE000W0000G000W82004P000O0W0
+m0W100a_j1V_R0H6000404VnnW000me0CG1O000m0000C00Wu200m503vD060OmV06mE000G
+@1008Y00mK18Yf2W1010300W80001000o8004@08Oh0O0W3e200W100mD00We600vP066h0C
+0G0g0GYu600G60000084L000m1d4O0t000000W_lF0e20@hV400002000ylX_t00x_Zd704F
+y7WW20000m0wpF0qc20YL300080000G000WR200WKa30e7H0G16mL4K00Ykd1008YU0WB410
+0GWRA0W@z504000c3A000W0mc2uZ8U30W3e@l2m8wIWPu100CWPm3m7Y001MxsZndbeNSCMz
+F100IQ@_Vod0aySz3vZd0020XYKbG400GcxF4xl1jlA1Of11008000W0_5FXB_Je3T3YiRZt
+zP8iu4k@M20000AG00oaNYd0aOTHCic00qjz6XqFJo3RKrE3L2RmlRLaX_3006J3dt08G00n
+l@mzx6qyd4T4WHgy6000Wvm_A_ttWxtDuhV3A@8XCOC0002nbu6CjR2Vmd0OI4WJcC000600
+80YO@g8sI32VNY_tVuoV3Est0000100YW0142SNl11Sb000000014W020EY91004002G001K
+G028W000400002G004000e010G020W8TV3yF0010000K003002g8wJ00001W00B005035c00
+W00014KW000104012G04G002WW0WoHD01008W00202000000B6mW@@D0GK04G20ev7J0000o
+y@600G1wxV3cyo00G01020G028G16W08JV300800We210W0oi@600WO70G0080G80050Y022
+sfF1004W0G20010W4hl1020005002GW1000100048G0040020t3tWpXD00W0qt@6KIh1z8dm
+b8L4WV2LQRGww6y@l1e100osdXtyD0oi2GY@600010G00nVnFiYe4400GIsFXg@DemH3g@t0
+W008Vd4IK8aK_F3000Wj300CwHKd2CLJ1ob529tyd000_l85_FIXRVLiY5Qz00GlRQ6izuV2
+15f20000WV80v8WKGu9yjA9lPeII18D5D6ncy@hBTr0L5TBl10002V100vEJoHn9KY19dIdG
+SqI43nC00A8wd_4000v2F8I1KGKe8jGH0U94H82C6GW78Wqfb51008C8qHqK0W0004O008uS
+0_RQZgkme0RF05c0Saz90l000K1208@10GmNvAn6W000010042008000Gy@0W8204000800I
+424H000000D0O0921Wozb00G512H2WyHK1d00mqE2LgV2Oq40_Ukb3n9100lVyHljBdAx_d0
+Wt2WTca30LIunv6Kn_9W400AaIE0008lleIXg6qMtI00WSG00uy1k1T0O0E00aqBU000mHSE
+XKrF3WU60cuw@8o_@Xj31001W100000WGuBgS@l10u3000008@0WK_10fF00WMvw20p0e700
+000h400a1bF00KO7X000aL0WSbKW4WL40gNgB0900NsR0000YXtDeeJCWG00SbL5000GuA00
+qTNBLlRm0p6ygc70A10a00002808@u40018KXy3pnR0000fSsDOrr70020G40000GlLAr901
+408CU304G0Kae130DJ6pCG006OrwA0200SQV2nDpGQgO0a81eeV90800S9OBrGL10W8WD1CO
+PV3G00WaUq6a0009010Krz300020060000W2V00GA_600280000Kqn9CEk13I2300000GG40
+W4W000WG00GG0000008002W2020esPs0002G0092G0010128W200quv900M02G4000O0G1W0
+0020040384kl1000000uMh00204G408G80012000200100820200X000G2e0jJe41300804a
+l1K00W0002qml10H00082000L200000W0020005a0Y28I040W08m0G02108G04W400010O02
+2010G080W00000010W0280WC0W26K0n00X0021G0GK0800014G00014W2108806G4H1010O0
+04K02000mo1W0200000W22vG0004202041420WWA01000010W4H001fXW0010820W2W01G02
+00010580002520W0W0G0004202G08000G12001801080400508eXWS0ZWW00W0280WG000G2
+060200000H2G00000W10W800G84H0GW2G2Oc12I1C4C10Y0G80G0WqG800Y08WA08X4Y0018
+84b8Ag0010KY0aW01000acKG0808020O412DW00a0G00W0WG42e8G8000S02WYG08eGW0102
+0000W44W220100W005400CWYG0000140008004ea0000I0204120100220C800000W080200
+04420106000000W403050022WW0040WLxJG000G0nC00102800mQg6yA@300iK0002000100
+4CHox60O020000OC_68000e8V3WI00awk1ZvR001000GW00004_pt006000O04sqF1043000
+0000W842H2000G8010KVy38HG0404000000G04020GG00C00104800800W000041C7000008
+19O0eq6G4W0O020mcvtWFwDemV30C04Tvl10100000GG0G00X0W0W00myyD000040008W080
+080W0282W0W02008ml@6800400040K0900003G00CtKmWrwD04020808W_zD00404W800008
+08080_j81H0X900e8G400qnV200WGnF84qpV2W00Y006GiET2000GISqWS@D000080a020J0
+8O180wytWiyD08040410G00400004100WO4100W0W01000108000281400000XG000W42208
+0W00004UvrWffJG08200G1I00W0020008910004fjU3gat0100000IJgvt00G0000OW00000
+1040020mAzC4Dl100G9aX0100040G4080008401W000W080J0I04881300W06hh103WGGW8G
+0W0W00vW2W8000m00GHY00800008Ghbx4MlF10GG000000e1W821O00900001Wu8C0208010
+1mazD04920W40018000102a001irV2raOG@_6aul1@_R0400000GWGC000082W100000004W
+0YInD00a03WW00G8Y00X3600MW01K81L4MZ9006I80WWI1940H188I001Y6mQq6GA00Y0404
+W80120O10010H202WL100W2W0L50H0G0HG0H4GG00008G00GW0000Cy141808AW1GA00264K
+40010200000004c000i2W8000H00WW0e7gDWC4G22502W0200W68000K0Y8A0eW82I0bGG0C
+GY2G001W1H2GG2442b8WXH01m48WHXH8018000YW140GG90W0002G2048001088200080401
+040e080C00G0O0G508C5XQG10H4o02H800294Ba8410YY0062Ge04W600000eJ3YG204WG48
+05800200W80m084S7l1JnR0W00000G0W0000G988Y8G0I1981ne614Wmm04G0084020Y001e
+408004X3G020Gm84a0004ORT385080m800KI1083020850090210000W40080051W0090004
+0000G000004H40a00aIA000a0Y0100W90220WK00408K4I901pnR0W3HA1081WC0085049W0
+08nU300K0i@l100W06Rt0G2004W0000200010000a000G0G208W401cWmWtJCWK0G0082100
+29000m050W0W0W0O000G084800001W002G000082004000040050W00G000X090000006000
+0W0I08A400485W0000G002e8W8900801004940000W4GW0020408008000Gm40Wail1XrR0e
+0000W00BuR000041000W000020000Y000W8Gy76a2G2A20G008410800WX8W0208H4a0G880
+G0020W001W050808GKAE0phO00202000GxdR00840001080Hm82YJ0G6000013G008064A0S
+00W0000Y1O0cW3000a70008002v1G108G0OeWy40G01Y0W8AD63440000000G009008dItD0
+10200400008m000GGO20120G100G08100G2010084G2401q8020G040GG4I181G01GMtt000
+018W00cq@1000W000G0X0G280H00020W00400060002YKt0004040000zh0qll10600kS@X3
+yn0000qQc60800ew@400G8K@l10Wi00W00u500ORU3ml8000071rIG0GGH200010080000aH
+0060IZG4H80088000W0H0000G0wF0000YN8x2400Gv1OW00G0aT10209N000WH6wV0000EN0
+GWXOC00L000001G2109toW20000m0HE000GW30y@l10W950000G0Y68503c@t0WK000WWMK0
+W@f00V42t800_824z000ut@10HV30eW2W16W@10000mBXpOWN310000W00XITzL000N_bV0_
+X80qLV3Gly004WmQL1l@l20m@V@@600uFq708010y4YyV1w30000@y3Wh6000yF0goC0000O
+600ovt0000W2yF08W000B0_d06yl80udV3DmC0W0C0SL1yJdQ00000000mxc10H1004C00Og
+0Knq1C601WA00GK0002100YV000C0C8o0O0W2W000a500WO00W86000504Yx0C0m0O000Y20
+0OA00Gq10Wz603H7060S0C000O00047000Gv000@C00YV0C080O0m0W000Ynm04L00000g08
+00001G0000100G600Wi400P906oI0C000O0GZ@600P500YA0C0C0O0W1f2O0x000600WUrb1
+002V820ko00SZ20G030000200Os000W@@_n@7000CW048mip0WFY000y0002C0000l200_n@
+kTZ20GVw30n000OWpD00140q9Yy@@@C820V420000_un6wD0W00000WP0WNL0SJ1eQcFev2G
+0000eNE1GFgA0goC0feAChAp00020FL10000ucbbNHHQ6SSz3B@R0800WuyD8ID3UlN200Kw
+PudW800WxxJeSvA0820KeE9VvOma_9atC320104008KA032000080000800A02Gl@6GG0006
+00muqC0Aq0420W1000084G07up0W0G009040010MntWmbCuDVI2BAXfmb000WGQ@FKVT2VzR
+GWmL000W2B0000W0WNGCum@7W040K3EFxNRGXmF0W00Ory4A2q00120000800W0z@l100900
+0X0SsC300_r1410ikb1F6PG1U600O002G0mIw6Sob100100Y00SfU8000Y00W0G10800220G
+05WByC080010G2020GWWO2GUaE10e00GGH00000000G40000Ga000000O0080200G0020200
+QGR600000Gc0000001A00000H0240CJk10W00048002C000050W0011022JKRGiN6000W0W0
+G008004G0W0GG00000G0018j93Qlm0000We022GW63e02G40L480eW00G8WG10218002GG8W
+00600Gc340010000180GGW0Ga4822W0A0G48700G01XY08Y2W0mW6Z9800I00000GW000mo9
+A21Z400G408G1GG2400108C220004182X0020410080WG000004000040W41600000H2W04W
+000920GG90g0800400W08001000AG4480040400W004004K0422G8I400410X822O14000eO
+0WG002000C040G800o81200W10G00100G00W40bW02GGYK410000G01BG022213SgQ4WYG8T
+oR000WE10X2G8GA400GH80460010IK14000G400G0008W400m0W40420450002G0041e0040
+G0J020W100C1W00Q0H010I000020404020KGW04Y0KGkJo030W008m040o8C1k1G00S00100
+1WG0Cw0mCu68400G0000Wc00W0W08080@@t0i008O0020W0249l1NoR08000Wp5GlMP00100
+4300ZZR00800O5100520YByX7uDec4380402W8001080000YSuDuNx4G0000H4000G000020
+004400CW010W00G08HU30800001130220G000G000Y0001040I0XOOsS344oG088200000G0
+02W00001400000eI0000100020m@@P0401W410WrPCOR0300000Go08gU3_nF100P0x_R004
+800010G4W08000W0020G40280000401W02CUMF100W802000W8000W1200m000400006G450
+wGt0I00008010980y@l1W0100000040G0000002x18000TjRG6U9000W00Y0W801XD9D0001
+000200W000010020PUj_38200cpm00822I0080000G20mG00010W041190TiRm2@90101Pa@
+40004X000eR33gXt00100I1000010awe1x@d08k4WxuPuZ63kJt0W00XflP04008008G0004
+ABqWwtDOrS3002G0080W004usw902000O0000GW00W0G3PbGL06yc230000400WTNl1G434U
+oBX@uD8lT3W8GW04010000Fs0000108zpp000042010@@R000110A00J3Q0100010GW0000W
+120iXQ2a100mGWG0001008000104e000A2mXW2012GO042SG80162404G01209080AG0Y0GW
+00WG40Y0400000G202000eG41001G0001W0K020m3440mG2040W01m00u00400W03xs0006P
+GW00408080WWuUK3Qjq0GX8245AGW2042008042708822G00A000GG0Y2bFV2000482000G0
+84GW00H50004ne842Y80WGG00fG1YC4100OW448084808WGaQe10100G0m000O00W0H2WB20
+H12Ym9400J40Wa82KD80Z1000Y40G842H0C4G0000GW054802KG4AC000003G000G0OQV3Qx
+F10m400G4000Y08000K0G40008002K0A00c5e01JW8G00J4002000W00000848h41WGaWY04
+W808G00G0G8204WK30000H00850G0I0AYKa220a9100A0410000Ga24009G0GAf0G69020aY
+00004081I500GK4000K0000a00I10420200W02G104W8IHA804Y000000ER850o000000G10
+0GK200m@@60A04CJy400KGX0400090G4W9ikc13rP00100100K0006000G104040e00GE0Wg
+QDG0Xa100144a00@@R080G0W400IW00028G08Y000W400I000008G0W2090000GI00200G08
+0a1800044000800G010b81a00000tRNmP0Y0000O00@@d00m00O050Lgc0f0GW_2VetV3020
+4004G0000002IXKXJ00WW404X82O2e28G01Y11002J004c080000008TSQ0Ze00000GO0GG0
+011KVX1tzRmll6W3Wm04W0008000A002e1400000A05eN53020600208eO30GG8001q00048
+q02OW00O40000000HW0G080G00W2WVsCecH304000806K80G80D8uJXD00f0012Y002Y4000
+0W210Sgl12040w@F1G060800K0001081000820500WKQDeZt40080I000eWE308002000ce0
+0W00800G0H0840Q@81G40020G9W4W0001X0440GWo6004018900100WFKCOWU30101KWF3G0
+00HV20G00VP0P3000qR0000Wk0h6006et2040WG400000w3000GgNeV2K00X_10W00A0yel1
+00K8Gz9404GK002G0GW0Wy0C0ul000WcVqB0001yHsia1000i010GGM80aYi100M0800WA40
+0OUP3QYc1qZ2000mHgZsWvQC01XK00@t00_82kHG1yH48adZ1U400jQ00iRi10GWRK000000
+t4000000qbW9CW0F@00UwXK0C004x60000whl097RWD100WYB00y00_FM21600OZD0000kpT
+000000W00C35000W0000mD000W1_@V3000510@300incw000aJUN00008Yx0WO00WH500J5G
+5cTmOHiP000GC000nA00ND066hWi0W1k100m000O600mq10Wf2mFYBGK04G2S60G00Wu700G
+703cV069kP000mD000OC700Ol10WO2m0W0WmuD600004000i20WO5W1J8030K02000C00041
+000C000O0m0G0MXpW@@DWH500YAmC02060804Ygp0Y0ug20mTfp@hAWFY0M0000Z8200D000
+00USp0F0029GRW7B0GRA00mXlc100p1A0cty0ydl00350uc40mSWoD2Ulj10yll0W8000GZw
+@@4OmL3y@l10mi@1GLc1mpF3y1400880@z300000jA802000a_w100000W0m73jPWO0qLe0m
+F_P7hO500G0MP50ND00m4WofXfaiDk6t0m640@@BH1t90G00eHw7svE400G00C00080846a1
+008080W00G1001021108WwmDW00200G0004012000MGdX@EC8UR9O50000W0O6S30G00D4U2
+YG00UK@Xymh000100240000WtYR040000400200G_@@XowCuVS3kAm00000tgOGI1X00e1Q2
+T6_EEXHtJ8Bx4AUtW7@a85kAoNt0010100080G0W00W00000IAK6K6l1LsPGYn9qyk70kG0E
+dFXnMDOQc4kQtW0xy00001000900000204cZt00G04000G820000T028G800K6W@1DW200W0
+00180H00W88AZt001040W0W01W8HGa1011040040081m200A00XOW3400200n7y60000Kq01
+0G0080G0080W0e5m4W2W0050GXW0008544W0m80501WGWW00000YWWG20W8080500000840_
+@V3G00i000040G1200008040xuP0G0a24GW0BsR0090A001GG1W108W0KGl14414G001O40Y
+G03G00W0020202008WG000q06W6048808KG115W010W10G0OA204J080Y0000gf01XW4KGH0
+AY82400068a22CC10GGWW010010g01O40e0IG1C81e2218X00WPH81I001W01eGAD00301A0
+0A000G20aWo@t0W00G01O10L8084X000840G00280G800GY1m00DTX12OWOK00Y021Y042IW
+1210G1m004000401H00GYG5K308HKGL2m0E8XLnW10WG0MK40WG090a000WpEG008KW02040
+J024W861DH02A00C464800A2We4X9W0GOC30W10G0q0GO206oC0C8602000J0e100020000X
+0X0G1080KKG080080W00002WOW0W0200G0010000WK002G20OA0guV32e814400h8c000040
+A828cG080W0y@l1W0020000SNj194P0000A10e0440G149120000J2G0G0YGK00W02004200
+W200XG01008Q08W10094080408200ed830000000K001WoK@6ywV2000W6mt0202Y0018Mpt
+01088n6A1GG048W00VvR0010YMBC0H00uxu900814X0020G1000EZ0804o4rWgtC002WGk_6
+040GuuU30G00G01000G000410W080x7QW002Wt_JOvS3W2W0A00140e4809848000000H011
+W0000K68IGWcC0289080G00H8G00285dP00YaWfDD0004W02O0000W200204A08000G04020
+000X2D1jtRW04141G00mS0400W0Ge000W02GGv6810WG4820010eksJuIT3sebX6iJOZV36U
+FXHqDe0_4000ea1V236RmvcC00080G00mex6G200W00000G0miPDmZ00GWx60WH040GW0000
+G4W8404W100000G4n1Wn0mqx60G00402400G000010GH00c4FXJdD0220m5z600010001JUc
+900n0enJ6008WjNl1W00G000102002O00Gyk90W08ODG340400020OOp400G@F5i122a0000
+09000008204200W1G40aG0Yna180GG0001Exo001008200Y7b1G0000W026xC1000D8H4008
+802800000C8002000W4vwR0W0aK00080090H05YW0W01001100W0081000G0011LO8GGGm0G
+1I440WW810b0GG002G4000q2J000G0G9090O2aG0012e07G418WY000O04WOWeA08GY0800W
+8I02G0280000O01G0000Y8H0100G480WemxDO_U30004H0H0W0400Y85GWAL0e0080G4YWG0
+G4WQL4411cJyD000GCG100W00W2GG80XG01801100I48800K140000E8003020001400IG00
+08W040420o0WW8W10000hw0e02001020H10XmG41K4H0829222YeC1a04800G4104B00W4W0
+4G204WC6H0G0W4aG000G028202000014lqa0I812G00G080W04G00A000007004000Y0a0GA
+1G1W10A0W209008000G10040W08bK10X8100I5Ge@6020000485082G0000aY080009W8f82
+01a00WIA0W82m00000KhJA00AXS30H01W8f40408202HA4010480H8L2888011KI10b00008
+51W500401InC0W02415e0020800W20H000WW0e000420G4G000WI0000G1000140080G0100
+0W020W0E067tWV8C00802G8mGW00001W0cxt042G204400110020010YPA8W20W000j4QW82
+01000002EG004002e008008O950W02084AW00800e4002002Y4W14800010200000482000Y
+0011008gX00000We0CWk11iO0H0G0W0200W00000e0CW848O20820WhhDeW9300100008101
+G0W800G001ZkR0041W5GC000Wocl6000e1QK20H0GWdiD0108E0000491G080m0O0Wm00601
+G060200U00Ic0We1A1W1u041108W11f04C01W001eX4002o06YY0E00H0WG018m080W1480H
+90Q008010G60017yRW01I008aW004004a0sQq30G000400GX00000400W1O00W00050aG900
+5I00W014010000W2@r_W000000L_WH040I88240Wm0000K88201104020G240G01808004DG
+20240009m2G8000200G048GyL680000012OeR64Gg140W00008000XK00000P0WbvDWWaTX0
+009l0B0004m3St01000el0800WlWQ9008W8nK_60010H1040WIXU7G08GN50kjt00Gl0080m
+D2000IYel8E3Ahp02Gs10000y2zNW000KB004610G0100eN4W14WXW_3G400_2000naQD080
+24031M0W808C40Mlt00GK0G000u0000G10qZ8iZL3uA30GLlZd000CZ9vDW0ND000000A800
+SJ10exEeA00mD50m3x60W100800000uA28mL6ui@T305u60@700062_00280WE0W@9W0teWT
+_tL00001SN30eW4000LmL@xhh6mTL100P_V04n004H400W5OL00mL3m30000LN5WU500Ivt0
+Z40008WF410V820G500Ga20GK2WXa2030CWE00Wi000k2008c000S1Gme2W106G5008jR38T
+100W0q1W10HEu60008700Ok300S7WXVC030K06000C00043000b800WVC00ZL06oI0L08Ny4
+00P781xDWTaVWi0g0S1KYo2e4HCG9oU3Iaz6m5Y98B0L0Jf0O0WGaO400H8W91402080H000
+Y0004000kQ00yH40GW10002G150eg00Gh200HzRWL30WenD000_800SJ200000WD3jtWdtJ0
+00W10E008040tld0OX600Ae0brR00005W000qI30bJ40Qr04aggyX@0uV00mCcHmPCZW@fA1
+pK62cfCgwF0KLLf0O01@xV0ggA0mC0glsZksy8tw7IfdXTyD00007Q10WYWa0080GQGF0000
+OBL3o2GY3nb0006W010WY_b0408GXPI4sc1d3aGAvCiVj100kyt_@120W01fp000A0G20002
+00oAtWnkb0001W000ea5PG000mDRU43k4RfdmQxC0004OYT30K_0qp63DDKnsu6S_k1lZBn4
+vI000012X0GHxI0080uwS9oRA140001oPGfRF000WnX00GxzF010G0020Gkx6000WOOD3s9d
+Xdobukv42Zt0A0W0pcRmFy600G100G008G00A00044G0eG10120004080G1022010e0008I1
+b00000201A4K0G51A008282Yt002GG448000W9000000e040WW0000801128020102000402
+GX20041W0W0100000PW002008a09001G0v3amXcC000W000084e0002052W20041LG028K15
+G0000O4C018Wm2G800A820W88GW2f0200Y4AWG0A7t00K008W01030G0082001000X0004X0
+2OG080W0W0W8G01080000W2902W80001G00820610080Y2XWK440200H0800f002HWmXN688
+8040O0YW044G100010G00WH0W02W0004020200100404G04000000W1000G00A0042W50W0G
+8Ga000006W12808L0E00K9400HW05q120K0WZG101H048000G0GW01302Z4160000D0Ge80G
+0XI0WW0ume04WO0800W80610G000mfR0404002G022Y0W880WW88HLG01O00080GW1G1204e
+H00G00000Oa10110fYH4e0CWG00800e000Y0W024000424040010W0W010K000008310000H
+08O0020G00012GOm8300C0qtl1O0000100X500eCG30308Y00G0000008140100000G00301
+0W1Q@x40010WA0000GH800010402Z@O0G000800e010W0082G0G02030mrr6e000fTU3YGtW
+f9IOjq740000G00G40Y8W0000202W0IG00040W88000004103041404H065o0000000Ga111
+000GG0W000011G08W000010080W8010I0402010001Aj@R0Ot6WsqO0100Sn69000m040200
+04mR@J00WH00082W000x_@GsuC0G0100004801G00040mG0GI0080000110Oms60WW810001
+0WWeImD00m08000002W100G28Y8002G8000G1200000G80K00000YGG001004hYW4WTtU000
+81W00WdQD00G09004000J0nbmmbx60G80eCcAYypWPjJ8FT3000Oyaf1820008005eE3008H
+G442G000P7T38000G800200YGux900WAvrT6MaE10a280W20@Zt04W8a00000400L4V200X0
+wOoWpPm0002m3l6Csk100400W0Gakh17od0034WQjD010000010200G0K000880ikk100000
+820avh1WkL0gdtWptJG424GcX602GG020GmVz90040y9T3002008008qB3kZFXTxD0004000
+0G0B240aOG00f01WA008000M1200205e0e8W8K0H4260GW0mry6W0gW02008884K4100eY02
+mCp280290G40C80c0800X0608W180218G00001G18WyxD0810000G000W800140Y0W08502C
+4100m08011H00P20060e4800C00080041000Y08200HISyN2jSO000000810WA000OG01080
+0002CG0G2C000m001G088W2X40100WO04000K40G400228300W0e0020402HK3005900GKK1
+0Cq00CCY224G8W21G000G02G040100m7FW10WQxJ021W0e080Y040Ye200J408Y01XGG00a0
+0A000GB_RW8080H8040W400040kQB3jjd0001A2850084H852W0G81WKI1W4I4018500G400
+00G1000v8Y48010020000I10000G005K0C00aC0IX4c00O000f000a000W20G080W00000uU
+3GAz6GA0004G200W2000040Gg8840O000a200a08100G1020020804001000HI100W0I00W0
+W0000G22Ci43W200E@t0W00000AG4G0P000018005800XuvJ00Hc0001W6JC8pQ30200WeO0
+00000i000G12020IW05HW0002A4w40000gT00e@V3a000100000H000000W006210e008000
+Y29TV3000W00YC20000G0G4020H9SOGwz94jf1tiQ00H4580000I00008A020E0D0002010G
+00Wd@RmL_6C@l1N@RW008iB_D004Ge00000G9u0b000m044ea1400000eS100010A0001000
+10102W001W021H430Y2W026002002YW010004be100800K0000A1W3000000WOrC0000C060
+eLYP0G0040040Y00000X08200SPe18W000G02Kok12040wAmWGsD000aosy60450eV43G800
+KKY100WHG0000MY10020W000100G000W0G0002G0000G8G5m6aYi4W2006AdXEja00mM20W1
+Tj0008040i000W_3200e@2w5W20G_8lkdWI0010m0Pk000WqB0GG80G00000W50100x2X_30
+08eR5048JV3020000W210007S1f0000GQ100Aft0G2100040G@0404mV100000480000a0H0
+00A0av3200Gj00X80104000W810004K7l13fc0G00010K800mD90WRI000005K000000SJ10
+Kq20uyz1000mDRA0RGC0000Wg200jA00Qr00000K5lz200Wm7Y0mhC0WFw304100U00_700S
+r0Jrd00WwA000000G4X00YuE0000whF000000W_0SJ100k7001500047000GC@F0Y300A9c1
+000eW7mDVEt0000Onsp008k00OT1mmy3i7020300GM000V100kE00Og0k0G0O0W0W0008300
+G200Wa200NDWECAWi0G0S100o200m800mU300v70301060GmDu6W9000aO2000000ud100u2
+68tWiqDWv700pD03CL06080Copt0000e600pTWEWQ0C085W40W82C4l1f7R04000430WMD00
+VMt0080000W700WRA20V420ggLY00000eJ_d00tK00kQ00OJ1C3028Y80q300eDb3Glt7003
+0HiQ0Fu10_Nt0UZ20C3000qU6002wp0000000WvDF000200m7040000G7yV0A000o1t0000u
+PpP0mnhA0000W@V0Y173000edvcmvt9CAl1tWpGJuC0H00eEQ9wWD100r3RroGEz6aPz3foc
+mzkFaDR2VxRm_iCCXb1dSR004008002@udGTB6CGR2200010X441W10X10cfb100801KR0GE
+6W3QDexT3kqoWnzD8eO34G00qcd4vaRGHy646k1Thl1600WSTDeKy4_J@18m40PfBnP@6008
+00000ge10WZzPe5K3IOdXGlzeZD6INE1W040W008_qsWiZJe_k4oWtWrSDOUQ3QYt00013Di
+@mao600O2400004G0eyoJeCz4wUpWTuPuqP3sZF14101LxRmlyIKml10G0410280G21W0000
+408WCsD004008002Y000000204040080100Y0C8W020080G02014eY08K48W0000200e1000
+522pt00001000C0040WO02W048W0W000G0C0000W8GH08i053W00G00000020012101A808m
+204nW03GahvDG00200000004GL9RW21000800W080000408e844G01800YmXJ00G01H18WOx
+D000W0206ebtD04H40102GQG000608402GW28K08O0W02YfUlD0000AFr0KKGe4e8G001400
+W080HW0C0b0KI40XWW38m2230X20W0QK08eG280X20IGG02K80G000900H2y6K6X10A00KK8
+0Y0O00G4000108100G3cR0G1I4W00820K11W000WW0G001000AA08W000O080900022W8W20
+1002X00CKP2688G3840eX00BW0421G428010HG86G0000b000000B2g0K88A44K20G04H0m0
+2C19m1611330D8G4KW80XI2q024YG618e42021W0W300Oe1W0e04X0Y1000G00808012000W
+0010K2Q0H1m00W0GGGIzF1801020041220qyV2W00GkIcXtvVW0W000000008D00Kc80W200
+00W0C0mlW60wN00W0W0001200400400o_t000a0000104DI00X0U9Q30W00O084044210021
+08a0001IAusWJhDewn44000qwV2tvR0G0040080vdbW800nsxDW000W00420G48FtO000100
+00W08200900040002818088Yn@D000083500000W029042XG0188G0410000G0GG0xRR0020
+a_pD0G00HFt6ygO20000tyrW@Eb00mGqv@608W0udi4oBWXT_D02000844HG0m4G4000G0G8
+J2000KG0G801WGC040GH01000W0O001100YtK0000804000000W8G40W18860400040W0W00
+G0G8000G1800W00I8W0400G0081020W00004000208040040cwnW3HPe6N3A9z100015c818
+04Xg_D08G0mP@6W200G0100Y000040080018ea0Kpl1Wk5002400010eiH3000200200G002
+G0000W20G0016wr000W81qR0400108060008c@tWCIhOFU3oWaXLBVuoU342001400e273_i
+tWLxDOwU3gdm0090W0000eB0008G00000308000W0100004H81W02001G4008098000W0W06
+ko0000GW0086gtWNN2fL0300G000W0ANV30404100GycT300W4000hW2G00000800G00I200
+SWW0nG120bW803C40WW2a0e808Z0Y42GH0210007A100WW08088CW0G880E4XW209G4m1122
+0W0330H1KG114W402H00W26G1820W041800200A0W1440e0HW00Wc6n0W000HmRmVy600I00
+m41mu_600G200004G01Zv@JW802GG_608G0581YiWH44HHCY0280G00YW00G40a00IW0243G
+0Y00b0q81042024000WsL001Y0mGG0003ZW841GWG0g292601416H00021WW00G2G4421205
+20W0W0K20344W4081009mvQ60P00eQf4Yid10200000e40000004WK40o4Y60080ODG6wpoW
+PlC0a0a0f0W100900HA000XG940a2200900G0I188W4200000eEe0Ob73000A000WYK01e0W
+90I1WGm0008YK401n410G90000020WKW00H8O20GA0S2X8I6fa2200H020010002000W214I
+800HgftCe7E6008WarR20400AXpWKwD00W0qcS60000G200204W800I00105000000G4000a
+0001414G8000000K0btl1lvR000040u08001G006210Y008090200000288201EdB190W2YG
+0G024c1G0G000050W0Wg@DW0W0Gb@6ych1bFQ00S0WmmD8xs7klDXZVD8bd404GOW1G0eUS3
+0200002u0n000uW5008IWW4000W880002402030400200001G0W3401O0AG400m_P6G1G031
+H0114G4WY01W000000C00q8erO60e11SQy3TX@mA9F0K80W00A00WWeiXD00002000KG048C
+00090000G00y8O3000mAF00O8u40W0G000W0A00900M0484W8X0000WeCYY10G180K0mGW4H
+2900GN29SEk1N6@0K00WLHC0804000WQ50000b10K200aTd1rDd008J2000I6100ZBt0WKI0
+G0fMG@5004qM10220G200000rU0000g3000GO0aG0mMN9000e78G10O7XUNG080V5084101W
+0000a900208Xm@1884Iz202W0G000080wF0000QBzoPmGw64Jk10g50Mbs0CNWPLXdW81000
+00WMD00000FymU200mD90WF2XgUi8T30u300mL18@Q3yW020002mV@0W@@0002000P7t10qw
+1000Wx0010W0FND00KzV0KrF080000W0yd@tx654m@c1GW1FWh2004W00_84GyH80Ay000zp
+AFXCcb00100W902aR02TlO000GcMJDG000m5064oj10Go000Z1G702GM0408000x100y4008
+T10Wr1qXz6a504030006000P100Wo3000H5000303kP06080L000H1008400Ok30Wy4uC8Ny
+40Wv700pE0NaV0C0uW4oDeXR3GS10ayj1000C000cF7c7BHRWNB0GN71WU410jf0V000U001
+0000eA00ugY0mD90WRIWF2K0p0WHU000UJ10SK000aa000V420K5y0801my@su@h0mY30G11
+euV3K70000000Hd10061Wq@D8B83Ers000euJcv1008WwmhuA0CQ833W740daBnU@9yRc413
+4oPR9CA43@SpGk@600W00G0080G90040400000100rXk4@xR0000U70000001g2mWogD8gT3
+W04080002200GDw9aTf10004UBWaryDOUS3IN@X2sPW080GKuFica400Ue@Z8aP_Ue2U9IGd
+XEpV000GGo@6y5@3D3R0G00G0002HAOm4vI4eU2Wo90000001028ZN3kkt001000W080G000
+220eOU9YZ9XHwnOCV30aW500500000OVK6008K080Cmkz6010P8mT38000100A000GX00802
+B0X8001G000G0O01015024000001080W000meV820W80aG412GKW00W220044010W0004000
+Q0W0100I5001008841eoV300WGG100ukN3sntW7ub04005a800C20000OC01G4W42000G1Gt
+66G0WOn02D0808eozD0HC11000001K0O0G40000000420410100O40240800G800W8292010
+000K61000GWW0G40000904W0G48000K01480G8e00W021000240280az5D000H00O4040GKW
+G20000800O80G000800120052G08Y2B1002X000I000IO8IO1080X8000200G00G0C081O09
+6G030W0O423G200000W8100800052K0900018Z0aO008W0100X048W020404000W41H4G200
+0OPfG00K046PK00u06281G0YmGW001KW4WG0g42034G0WHW0W001GYuPU30H00YW1G0020ae
+0800G10W200000WG022eul4s@t0G0G40800k5s00400PPQ04W00000WG000hoF10W11TCR00
+00ekHD040W10000064W00160m00qpX1000uq7000200QnV300m0C_V20004kds02W00nMc00
+00vc0I0000G1W649d1B@p00G40000400W8G10Gy@l10a80oDt00080WW400W834KP2028800
+8c0WG4100W800G8040001H0002004a028S00100000G4001W51G100036420100A80080nHR
+0m00eimD00e00G80WGDCOfV6gQqWPEVOlQ3clr000400G000e00Kwl140I080AH0GX020W08
+000002e80000W00OG01000020G49230GcW084G0200n0G08G000004008W40004Eb0Ssl1ff
+R0W0W40880G0440400800e0100W0484W8100918kCt00200Z@R0004W9kV000WKMd6qOv300
+0A080W001WOQq400801W800082mNp600W0Quk400W0G20000W0ooe60W042000AU108000WW
+C0W0W80yDi1040W00m80H00G0001800mGkJ000W400000240pmpGi9I00000YW0mZy6CZk10
+00G00002HW08gP3W00G8000010040040008G082YW000i0h1000042mGazk1811Y00080800
+00Wpscv6004000I00040201802020A3t000022000FZtWLDPe3U6MmWXQyD000W8G00A04O4
+08Y800Y000010W08001408308W100044mGeX5HH0G800IL120G204840L00WH01X1822BX83
+23I000G12W00482WWYA860224000WdT000182OGm0fGmiG00G1W2104G6W5401WP0288G0WX
+04aW18e0910AJ0G0000100010000021RtR0G00G000WW200QWF1000o008000GAUvl101W80
+00G01020mW44GgH007O1GMK84I08008WG111811000084GG5PWGW03Y031L1Y00Y04281Fu1
+WAGGKI08P200e0X869G000uQ0051508G3020A0810B0KG4QGG24000Y410C40mW8WW400aGO
+800e201H020G04K018W04WSRJubV3I_910W00Hjd00W200G00800e0000W00a24000810400
+00K8028WKK00G0eK53008G10102008510W88GI2WY30000W00f0020292aIAG012400000e@
+IAY0GG1G0H40009040HAfG06A02048pU3002000G00KI5000HmbzDG0W05000GA000W2W000
+000A0I004000W210G000GAeUCxXYDCW800GZy6yql101GG022YemIGuUV38000042K00W0Y0
+0eGG05000000IK00404G6008G010YM8GW2000oqW000810015G00280a0014044XWY8G0uns
+44000040AL0A00G0000882DwOmdQF0039KI0G4G000Q284xoQmx8600200000n9x9m000W00
+0X00000108420000011000202040040W00860108800A000WW80GDY6GGG000448000KQ140
+200C1C10G400080C200000m4uZzR0080510X0dlP02000000e0048CW80Cll10W02001405G
+1e6830W00m020u@g40000soX1V_R0G100208G00IY00A01000008808G100241040009000W
+0040W00490200248208440G0800G0Q00I001001000Ml001GSGl100a41001aoO2rbO00G1Y
+2aJ0004GpmCaZC3bhO0000000980000WK80yuj100I0000020gb00008100mb0D0rb0040q1
+a91000WH00W4q4d1E1040mBmg4800xj0008001W000Y_R002Gw5000e8Hj38008o00400100
+00G0wB1000gN82500024000s4q0y30000yHG600a6M2z7O0010M00G88D40gXt020R10O0sr
+200a0d1bepW80SL10uZG8YD90008W@Z0Wp0GOu9egL30004Wh60GL10WMT00G000QJ1k2004
+X8G0100m060m710002z200100000u6h6000mD000WwJV08s00_hF005zjA40Gr@5GTW00WXF
+Mk4oogYYsV000me00WG0a500W80ozs00OP000m0OdX10302WP000T000I200aC00G80wGq12
+201W100OE00Wb0006500UA0kCr0x1W0i3WK0C00WV100WK30We6WAtO060O0C000H100C500
+8G000m08Yn5030AWA000C000C1004H00GK1GW82meSw40004Z00821CHC2G007m4008B0YXp
+W8mDGL08WVU0GND0Wsy10jf00QJ1_nc20GA06O00ls30c9L0SL1Kb_4u@24mD50m@Z0WhEGY
+u6OWL3G4H8WF_0G@N0Ws4000HeV0m7H00GhdF2e0wh@6kQ00yH4063d1OZD0S00wJV30000_
+X800G000000GZ900P4SZ1zTd00FGaFxb8LiAAYxatyV0000Tdv6q3k4zOdGk99qEWAPoHIvv
+9000Oe2y40G40000080E3A_F100b5HyWnqs94mh1PZdGASd4fWDm0006TN20c90pwLH3@9a8
+b1ntMnWuRiCU8LCo0600WhtPeAE3wzb1w100FlpGEx9CTS2j80Jpp9SDW109000800GH0WuO
+k40004000802000280WfvI00A20000400218002_UDXcwD00mvE084WA@D04W200W0083010
+G500040000H0014Y088W3tJ00G1G@z642i13IaGW_6CFk1000EGG0HH400400148802L003@
+wR000G00802PaO040080000082Y0a400802080X40018041G00e00Y00H200I0012022A00G
+0800404000_Q10404002861000004W40K8G4A000040C086J010G0080C404Jg17pdmfX64y
+l120000101001YuDV300400WX0008110000020W204G001100W000J0084001G0W2400G002
+aig14G10_@t02E00dOP00806388G4GG0010GG001002mGvF6eG0a20000Ae21008CW0G01mG
+HG5040028A0eQ011m0005P02000W0210000100qfWC8pS300100004G4002040018200040M
+@s0GWW0a01002000HW000C00K00WSsDONV60004800024KW400402010040008740G00UoV3
+_ZtWLyD00G0000qh4yD8mU30W003200euB300K0000GQ@@7k94ZFfP00KW800K00I000400w
+4nWZ8DOBI36nFXPlDu7@40W02000002020X000Y0W000001121qil10c848008004000m820
+01mq6C0008004100Q4GPdunHZIKdl1N_dW008Wu@D040018000001G8208ENdXvnD0WG0002
+0WZ0CObT3000PCvl1W000000X9700000000GZ0000m84000000WO00000OstY600GYCUaDMT
+pW@@V0G0WGnV68W00020000G0XDcC0W8W40G8WIlD00001084080000090XSWe0148e9T30O
+800300IA0W0W000808WJpR00WE7G2W0WG40xzq0208WDvP0O00YrMK9hy788008001G2G010
+10WEaDeNK3g2r0000G028YG20G00WmOm_400G0180000H0mfx600W0000W0008W4rC0yS30G
+W0WrtDG08000000W00I0W04000G0GWW8pt4kPtWfm910bWe00I0WG0820XX0002X8881H000
+Y0000041059WWa801WH01028q4U600W04H0Y0I820W8A0008W84G304100W8000460a00G82
+0G0444000W4vK8004S845A0mWKGMYt0WG5064Gc11C01O2GiaN3G0W0G0C0uoyA6@J2G04L4
+0090KXq04090L00WG00000202X8Y00G50228000G40004W08WWH0GK28000Y009W0108A000
+298000008406H91H4H20610bG106210048000eJN88I200804G480GYg02Ya8009K000YX0e
+40013m1000Om04re1boiH1GFC6F34GW100f0ipl1@FR080GA2000Y080ISp008G000W40W0I
+100W40005W400Ic0040J040W0GAf042G2100000jj0A0W00281GA4004O401aY000820G000
+0800W4a20WG080002090zzdGZ_604e00001GFS60008OLV60005000G0041000G400080100
+40A0040000410Y01800We004G020W11009K33028000Y008W00021100000101050WG00014
+G12G080X000000OjD810040WKC1Y000G2n480110O20004H0W00000010204GZQ@mTB6yoS2
+01A000WW0004f3U3_@t020D04W0000W01028X00G200088W000081G00000400000f0810e0
+00G00W0a0908m402W00I0X0aY0000WG0020YG0GYe0W849000089K0G000OEO02G004068W0
+40000020J000001WC00e00002202C00W100090SWB6400WIRI2008080H0mO40001W001W00
+00K0b200L0AG0008A8WGIG00K00A10AG000GP44K000Y0W2W01100W0G005G240000YA200W
+00GI000a200G0008000sbG00W00020028003oQ0002WQb89KP6gBdXAuCu6y4GK00100S0H1
+0000mXszD000Gc00800v2Hf0OGF@600g30G0027WC0002eO00000O000000z10a00t5000Wi
+Wi3G004u500upV3GT1000IS0PNG000gbdjD000G41W00K0005E@00208X0P1004Gn002KjF3
+k2m7X00W0a@NL0tK01_l00_p30Sp82is0@lf0_uZ0yV10wh70qg50OA06Or0_n31yl80y7F0
+ug60mL50WhAWhU42Vz01_V00_n70SJ000GzI00Dd000e000G7y@LA0000mL3000@70uP600i
+0m300_820g9360GO0I0m0GbW103W2WA0b8L0AH22KY4CW49O0gGm0K1G5e2WIK50bemf0OW0
+KHO5e2GH1aW49k09AO0mmu2Y2812300WDCWWee300R506YRWe0GW8nJ0e300@C03WE061ULn
+_5600Y1004J004PW0HD8yV30m30QJ14KcPyb@0O6pSm@0GmgKbW7w11Fq12Ue3U8JPym30uX
+78OLLHm@0WWgg21Fy0@@70cPcCI1m0PMbWoC31fgALvm3Um3gKbg4y1F8eg000eb4p0ILL0q
+Z8mi2wxV300y_70000Wg000xG1008CUeAczH40Wv@JUR6G000NXZHXuXS7_300SWwU3c@rQv
+zR6outWAvD89j440040020ycQ3MqcXkYO08l20009WAiVeJS3ssrWHqV0200GIwL000Gufx7
+cjNYJkbubT6wJ73000WS500cunZTtPeVU3oOdahxIuzx4YKF14000pkRmlx6010Gu9N362FX
+gJDOJz400eHKxi1lnBnfyFqyO87GPmRz60W042H002400000W02400UXtWTuJ0e08GZb6800
+L000W0050800W0G0HH008WyqW1000GQBrWHvD0K93000G0020WBWRG9p601C0We000G000W2
+00rpRGKw6yDd1Lqd0080000e0x0_00018004H020W0WG0X108eQL3wot00W0W8c908201088
+0041000H44G00W00400G8W4Ql1624002000101440000WX001CH41X0000WnXW061060X100
+0800012088040000G40H0G00003000280I0W0004004888000H001uGl4E2t0G40002W0000
+m0802O2H300088240XW00W8A001C01G0W0oft020010Ag1cio000YA004I408C000W000G38
+00004080O0O4040001G28W008016108G043100000M504G1048Y1G00G400GG00E0A000G0Y
+014W000040W1G0100G4Hj10444004300000020I3j6041000002I00G0G000060Vot020040
+020011W0WO0OmP6sAB1000nxmQ00002G00800109000001m04I0G2K9SNl100G4G002000WK
+J40nkI9CyV2m00Q000WyUl1F2d0800WWXaeQR3Mcy1800093p0401W3zDuSI300000009uOS
+3YMpW4_Dewx400G08W00eBC3G00000e3_GO3kyd100W00001EtEXxj2PaI9000200W0H020m
+yw6y@V20W80g6t01G00W00W040400W000950002WCLDet032ut00004040012008yy0OMa7U
+0@Xr@JegkAsnj28000G010W00041l1nlcmB@6aTk10W0W003402GG9OP3gsy10X200010481
+000120000DR00elChOTF3gEr60X0c020080W0040Ge3E3A7z1000G000aJ4n0o000Z6Om0_9
+Snh1PZR0000000PZp3MnR2d4Qk4000M0W0W0WP020W0101820W000202_nt00004G0800000
+040W09500030O030Km2e0100W00X00403mEh90W062004288180425000009P0qRk1Ngp000
+100045ZzRm2N9KAw9000000380W24211mWG004G00120022uF1200089G0080004C41C5400
+9W01I20ggG04800e00W0m0400100G0GWW00C00110X0W00858000OQY0WrocG5l9W000u0W1
+2tfYKNz0002006000000Q000E86320b04XG00WK00008G008500e4a000a210M6t00040010
+n0W2004eW20420900000aKppzmlg90000XK00Goig00e0Op_4Uut0000H00400W80TpU2V_R
+008000W0K0X0000G800G00009800044eG8W0000400000aAsj4Mjt0miF0hMRmF19axl1020
+80W0WiN46H@@00W4WC2DurU30100Cdj1XPRmbkFW000000W0020008O0P@R0G010400W8040
+oFF1200000P80000W8012000Eb00WJMs000gmoigKSl1z_QmIF90050OOJ6Q@s00W00W8000
+9G0KHc1I0004080810002000000mzvDe_T3KY2000ub8jQCY8sWaWXH000G4sCisY1nO@083
+000083eF0000WlKXl1000g10G00G1WS2V3000X020000m2006WDX000W4502VJ2W0I0000Wm
+200ajy3HkuHMS68a10W160e@NvAFYmJU2W@51W0y1g40uh70ucHa8k1_Vr0yp30u@20SvP90
+00W3S0NjcT3w@k200u@M1000mEACjE30y@Cg5c4100W2031406000H08CS3URt08G8000W0G
+400G400W0000330066WPCCWn000cbAN2000000H0Z000G1C100o200GC0000QhVF10W00R7Q
+GCj600XB00000L00W3hV8mLCcIq00GCH0G4Hgvn0V4n30000y@L0wH00qX@100000FY0000W
+Vy0W00000m30_840yH8yrZGu@20mNF0G00000y10V410000_Or000000Ou1ybS307L0CGc7n
+Vpp6jLKO63De9HftCCdk1000WT100yFkA80W0gCG50Y00PzymFu60W00iWN3Ar530008TUp0
+0WmCW00WdIdGp@6iNa1pfh2024W9qJ8YE3gut0204Wtmz000WWe3Ce0@4QGBXtBn00000GZ2
+WLwg8IVC2fhYr@JuST6E3V3W0000G00kfsWl_h8t03M4t0000uk1G0EL@X@WQ9bz7400W022
+04W00C400WiwI0400200000W800416808000200010008G0203100000C10S3U2P9d0040WX
+mD0000000740m00K4040041040002A8mm@608Y040401885YqHb89T32jF1W20001000084a
+GU2pXR000YH42W0GY800X0088008fV324s00120G080_ct00W400080A4t000G8008GUGt00
+00802G0020W00000a400002GG5Im00G001003G08W080000G020G000G0800G00248FC3Yar
+WwePe2E30G00080YuW7301W0008040G00K3000eGG08090000P005ODA300418G015000880
+O0G0W04GGW0000WGO0OVR30000001GO8H30800000X0W0400W000008C4W00GGG92OW0A002
+0m2824G0H2Q008G001n8004000200W00Ow230W0000W48M_400100080W000HVs6G0040G00
+m0w6000W08G0md660001fyV3kprWsvJ8CU3001GSHV20400110020000G200000ep@D00092
+0402K0W0ZLR00O0W@@D02i0HXs6y4_3fXdGlz9qLa1ZBPm_z6SUk1ds@0G01000O0G4H8000
+1isl10054A2BXLtJ00102W00if@V0Sw2Ge_6igl1D5a00000420W5A6It@L8X0G00014Y82W
+xQD0G80020801C00rvd0G20WmzDG00W0804WszD04040W0G01a00400100Z884000O020900
+000Gua4W0oki204800010UDB79000W0GXX0040I1000G00810000G20000ETq002800100G0
+C000408iV304W000220W00O1d9W900uoV300GhyNQ5I1G0Yn97W000jkamuvC4dP20080gLs
+WQ@C00WHK0x6000G1900GMx6yTl100G400000OE18DT6ApC12G043qOGCgm00G00I0102GW8
+2888a14Gm2W200005H024W800112W008W00G400I010004HG0G4G0A8YG004G0W480080KW0
+0I13C20808Y0010XK000D00We200000iO101Mot00G0000408G000400004X40e100080Jdc
+G3xg00G90110rTr6W0000GW0Y0A000H012W4AK09a020eo0W030G00W00W4I8G04100800a0
+00W0020002Hm0OG0141X2400g84Wg080m000W00000ihEx53800Wcbq010e00861W200yb63
+tuGIe@60W00W00000Y0028W00m4G5W030000CGJ30902GW00WG00GbC60010000W000G0000
+2W4410800G000WK0008W00G9000C1000000M1500G0I1u60050OEV30WK0G400e9k40502Si
+F6W00G_ODX_@D00W0100WWFmD0O002GG0002020120001001G00004200140006GX8G0900W
+000080000C4000200G00808G000800412210GY20009120060000WMfW00W20YbMV080He40
+40G1G80GXGAhsWE9D86U9MCAXOpJeIV3G8W080000XG8mR_60WG00q000021aR@DW420KFe6
+840W8F730420W40G0W41G@mC000800W0000NT0e080K1WQU@1GW340G000W80qwI2HPwn@x9
+41l128I10G401020GG0008A80G40000W00f0H100XG1G0X00L0e00K00We0L80I0000WGK01
+080000000K8GA44b5i1p9R0G1801000WZF00G04000W8dy42cr00400GK00IkMb01I0045GE
+u6q103f0GHK0F0000022Gc00020y20dVQ008J0040G61000ThaH0200GY0mHG9000000qB12
+01SY00G004840000I00e6N3wiEXZtD000G4180WCVV8gC3y82@uH4_o38SdP0y3V0uZc1mD9
+0WF2XVsa0Vy11_w10_n70Sp7YXp0@y82_w10ypC0caj1f0O000uBF800000m1EWR200WvZd7
+2ZpWKzJ00NDGOuma3E3XXBHA0KG5W0WA0b8402H02004C00OO0gGa16305010003000n000W
+5100Ga100m40nmX6K@j1000pT000h0T861O0GUsUGa10uFr70WWPA31@30@dfCUu1gCpC4Sc
+P8egFa3k1UuF0ym37uX74q@08e31GGggYWKLb@z70FuXCcnC2oCc1CJ000000m7X0800W@Z0
+200Gfs600WkPGV9000yd8d19fQpKu9aSV2zOB1004WaxDe7r7cxEXWyD81V303y0CHtCDR@m
+WzCqWD9rdp0080WaVD004GmO_60804enx40084000WWt80GLk9CTa13wRm@@609004000041
+0Xw8DO5T3IaZXErVuDtD_3dXOqD0000nZ@6G0000040040000008D1@0120000ND3HToPx6C
+tk1zkx140GW_kVunxA_8t000G0d7dW000WFvDG010GWmC0AD18pW427sW8hJ000000e00010
+00W80G0000820eP_DMMF1020K00G000W0Y24XG400GFp600O08tW404080050EgU30010qSg
+1vyPmbyCq4f10400000WeNW0PJT30100020GOPU30408KFl18I30Nbs00001080W2Mr0K000
+000W2KF100880G00GWW1000WWI00008001A006W1008080GI2010100200002W00440e040G
+00W0182000050410G0G_dt02000240040000003020000K8080000W1W1GW020W0000WAW0G
+YotD040W08200WK00NcP0G110001G0C00e00IO005WG2H108000GH10a21H810WW120WW0W0
+000GG0W8i00hpt05K000000050m0102W42430108OG02Y080G00G10W00420W0004002048G
+00A030W0000GC000G001G0000X2PpW3_D8@O3W1G0avk10aVG0K028000000200404300K60
+0W000080006W00100OO20W208010008ivY1G11XWGm000000928400G0W008000a90020010
+K004W162W@DD00K408000S0005Kd040000W20G00000210W10000010G8W@_V00002040YjP
+D000800106G004000ObA40ifl10040sxE101200100000WW60W00000G2868014G11KG000W
+000X0e40028WIOJ08044GG000800LiRW0000X00000W8a1000800GW0WG8iUSll1XLBnk@90
+006QtV3o8t0WW0W00208O20izV25hRmv_6qxV2010W0200azl10080AdsW9zDecH30000200
+0Y0O00086000100021Ust00004lcdGSjayyl12JK0__tWxhD080G02W00W001Y00000049Y0
+Y00008020HG0C00W24sFt000800080aG00KwC30040YRc14004jDc0800WgmJ00000H00W2M
+IOy5CsSd1000Km100kvj20040vpR0m0K001e0vkQ0000C0002000agcs02000bjpmwy6yIe1
+@hR04G4WguDG0001022WcgUuwJ3000101Y08spA2Iq000PTzlpGjO6i3l10820sMd1400002
+000G2002900104W00200016jmB1408000840008012C00WW0W024082000W24000G4041004
+0941GY_9yHg10204G4044ZF30W02AgF10000WxL2MXp00400000W81G20HWW01048008040W
+8060W00X0O0400HW8006I00G808W0GWY8W00W100a8Y012000004600000G000G408040004
+00400050W10102eGK0550H282H00401A0G200W800W001mRDISTQ50001EUn0000CK0016xt
+042007hQ0042308W8002G0002W42008Y202d1002i8084Y009134240428C14X50008A0040
+0080080008000100G4000010050000WI00200020A085KnTQGL@64puC000000SlH0008K83
+000904fa201H800GWZXDWK0040040I950W4400W03100040085p00002WKa2e0We0W0A0C30
+O000W2004000GAeGGf04FU2rQR0G0006252W2080008yal18400Un760vF890P00CC400W00
+140GI8G00G00X0200004421Xo00G0I4Xm80W28805080A002000gC008W00iAW2I1m@@60W4
+84M005G0000G887qRW0401404080880040WW00OEI3sz8XuiR1000DK106001000G0G2W000
+C300G0022080WZ020600g8X0G0u0e1C0KIW0C0Y3WWX009eWAAc060C0g9402000q0E08401
+000410K01000214400tzd0080G000000WWG0000W8XuHw40H2040j100000GD0qdC900mGht
+t040G0Xad0008G001G80G1ggm0G0880088K0G404W0WW000G8880000GZ00GG0G000O0G000
+0400000CPuP0004I10000a10Qzt000R04000r201aRg1@Z3pz@60_38AtD3001W000000qF0
+020SlGM9000ay2020000m1080wF1150yB8B00W4Gl00000885000WU10K0m@5O100XWzG000
+082060020R3000Gr20000004p80G_@6000o0202k808010uZGu300mNF000000G150m3em_J
+8G6303C0aNE3000400086Tj1y600__F1GWXzU300000uP60maA0000Ww70000_p@@1e@@3W_
+d10TW10km0AKO6SXX90JD0WeZ0Ga00mp@I00084008A18YG0W104W800mO000J1000400480
+G00041W0oHF104000408oUZX@sPG0G0GQ@600uL8tD3404cx080W1O000m000OE00G410Wv7
+G4xCmU0S0C020w0KYC7e49g09oS3KXv6e2WCG50beA02Hp1004Z008M1CHC2o203W0008A00
+WfV0mD500eWYFsK0x612_w10zV10wH00eg@DkGC40u50@@R00Q@B0000kxP0Z@d1w8200uWg
+Kb0pO61F402gAL4yG7y@XEuX7SmCpGGLL5W72000000U001@d0cO2G42G0bop0003WCSCugV
+CwutWXJbutv4000GdQE3d@N1009W@@JW000Iw_dG000001WmIw680028IR6W0180044002WW
+00GWK_D021101G0W4dOOw032At000xM0012oxt080000180_Hd10002z6z0082Wq1COaxDAM
+@Xxn9PVzAoyE1G670nwpmq@LS7E3Ga00sPF400008010cdpWv@DG040GQw90012010GW0080
+4400T7O0088004W0rqRGvH94Ka10800000G2M04e2A3wh@XCxDub53Yj@X85y01G0mVx6i_j
+1042010008080000GGKs6000G01040200XdtD08170000m6BCulV300400e0G00G0mc@600u
+V2G000W00evMD0CA2nF_90200ubQ30000008WO683QTFX1vD000G5WW084800024G0580iVT
+2Xzd00OW0CG00040400340008010mW200eZzJ000G028W010G000020025W000W01G008018
+20008040041WW082G0008Qb000X000WA00WHSoW1VnO01W0Z3YD0Y0m002W082G000000GW8
+020Ym0bWX28801m06808W00000W100G440G8W144m08802HW0Oyzl1xfR00G42H00G0G00CG
+00G042W03C001401800VPO0000010Y0TsR01801100W80102qt0300W0XG48000000WcPW00
+G210W840014080GJ0G0GeWQ302800004fKN3G02030I000G00H80420o0g0a0W000O2G20W0
+2010001804GG0OWY0W0002W011HG@C000A00500000080103GpGd@6G040G010W0m1100042
+010IBn000G08W400220ypl124G000C4c@l12W40G00082028iy48100000001410200WunDu
+d@4G010W020W00000006W0190G0002008c040300G6590W8WevU9G200000W000100090040
+0000Y0200qO96W020cQm0WT20Z@NnHl68Y88Y8YG4p08YlHJ00820GCJaZFC00Y0X0000002
+G0104ht7Z1@D008GK9w98082010I000Gc5xD0Y0600100a020BQQ00080000X9YRGzZ60002
+6O00K7dLySW1T2R0000H1410000450004KW10000G4020W880W00HqB600022X000030WTCV
+0000yvz6yoV22000000018008MV30044aYl1rTdmgr6itU2002Xt6r300G44100sZq00001Y
+820410082K0WW0410a8210S0000Y0G48000012008401G080000G8FBL20200W00Wgc@1024
+0Zzd0004mdsDOnV32BF1G200WdC2MNN20410082082H8U_l1008Y410YO6W4H4000Y0W8000
+008J0wAt000W9000CGW00G641XW0W0G00G8100TNQ0002WPxD080W102WO000G0GeW00800W
+W00W000GW0P0W0m010W00W4AWGW010008W20010104020504000140GG1800G4I0G000GOY0
+0CpV2pmd0004H0G0Y00nPC300WP4H4041W2OE2041HA0HY000410002Y010Y0O08680Oe200
+0GI0LPgX408CAGG2a01CjCQ0008Y4MCuN_400500008W00G088G0O80420W00800820Y0000
+nYd6Ckl10100G04G4sl10400004000ei20W0GhwF0004100GKfW60HY0W8Y0g8K5008Ye82H
+08I4CZP0OML482209241X88QOe00GL9mW400042I30844444e00sYNYf_V8XS30500001200
+20W821G08bK00n8000I100G4G00010821W0XaIA4Iko0mZAKxmaGZ0FSze1040f8528YC02W
+K8100080085W082I9YKI10Cr00185W0000201W2000920GAf00WH0qfzOyZk1JxRmQb6Ccl1
+010m004004G0G1W10e0180K00W20G00OWmG00180K0D11A000KfPO0004WpEIeBV6008G0AG
+0105800G040200001e02400i0W28W0W0020802W000100W00002H0002G0E3Wf0KpxZ1W060
+000Y000a1Y000020WO21184W01000O100G005W0E00118E2uW40G0m0W0KW8040020001X00
+070006HJXR0020000Y0jl@Gq16000060W0011480000440400000a00110B0008G20G0G480
+4C8eW000u@33c@F100m0xEb0000qBGJO3z40H10800W00W00Y00000KGDoP004WeDMI88N38
+0000UJ1eu@AMRm0G040G0000490010W40401Y00I080400040231841000G200W004090000
+W00g0HZ00000MGy86SU_38200Mot0804000081Y000K0WCGE3gyt0HGV20040z2r10001a30
+410040W0G4eF4002Wl0000pPG20001qc@V0aX0108aX8bC000IlS201C_2zY120mvB00G8GG
+08000fF20C0pUXUG0000Q400OYV3GV0A000V1000000egR_P00L1305820000A0F0000@100
+0W@@3e@100000W0700aP60000Um3HMbgY_FF4Tco8QLfo3PAZ7Um1FyWe1uVGV8000MWwyWX
+r@P0WE000S00Tmi0wWP0r9Z0IXG14g00eK08Uf0mKWFhf0FWte00pK40gAr0y36yH58ex80q
+D50Wh60W@10004000O0G0G0W1010100060000100YA00000LmK100W0m87T30004X004b04P
+c3m007e3e0G7G1WPW20pE00YC0TCx0o0w1q1K0e380mC000e31008c000G0@HRG0TCGW0OYX
+18302mF00mU00031006A00CK0_Pe0s305u700OD00Wn000ZA00460pCC0H1G1C300e200m80
+00WP0Wg0000c100000C300000gg3030003Q00000_@F0100000G0C4G0W8YO89W0p08Irn68
+000a4G000000G300f0a0000cG3hGe0YA000004VA00008mKm3mEP4WA0B0L010g02gL30KBi
+0e6u1400000A0GRA0W_3eRegQV824kH102000ynOs3PLy7MJVZ@_D00WBsGQISWM5000WItV
+ZSsV0025miQRiTU220042XpWYhDG0000408WWoC8JV3ILs0WkE0jbPmDvC0002G008mZl6qa
+T29nb000804G00Jmj100000Y00lU7o_s6yZU200W0wfpW8YP02000000KZ200tfBHQz9KzT5
+0804YzxX9sV8VzAUxFXysP0100008WWMkDOkT9Uws000JI9YRGyy9qpk1V6Om1y90100W008
+0400WNubu8U98000Cci1RUQ00e00000W00m050G1008050100004WHEDG002mW@9000W00H0
+WW3000G10000WG040imU205J0U_t08e00pud024W00W0002G0MMd14084410C010808K8040
+00Y2b10K0002KWGW040A002WQ8880020080W0H00000Y028OAY40848Kij1001000050G208
+wM3Iut00G00VuR0G0000GG028016oF108018G22000mWO00000010K0000W0W0200018CRd1
+GA00w0m00G00000Y020WO0000006mm_6080812G00W0200m0XW2Y04n01009g0G56028022H
+0000e24023Kzl1000112110G004WC02000G0mGG2000500400000W10nnY9000W0W00W085W
+pqDGG00Ha_60K0000GYVvz68W0683E34m00042010080200K0W0240044000004100088002
+00J00G01400000WWBG80e00110A0YG01K0K200QG010m0WHH_CS8j1VwR0000100037kcmem
+9arF30820WW20irl1t0O042011000WW40QmN2080108G0gia100108C0880010200080H080
+4020i000G000m0f088012102708i0X280W02maXD_JeyY4EPCXP@tG4H0HdPC000WXl00080
+00400A@@d00W400m0G0800Iic10200W02002G4000G000Ga0W00012180W0I@t0008004115
+800SPx30202400800W00000488W00W002C20wptWfZCe8R6srtW2qDei33a0200041001b01
+00020C84040gdAX@FP001W0043818204080Ybt000vW4000ASq080084011WG6P81004W000
+0W010480l_R00G85000GG0G808G0000mW02002082W0000G0000042WG2ORqA000G001400G
+0000020G40BgR0mn302200pjBnQ_6Kmj15mR000Wmi_DOBM30000H00W40204G401001GW80
+2000G00H28bU600001008G40HGOx602000H200028YqmV000WGmMC00800060mMo9000W1B0
+0GSoL080000820204WkPI8Gp7W0308W0W02G08016WcyJOVy40002G10000W8088H80H2188
+00Gg02XW00W2a00G0004G48tgpGIw6Col1G4W84500YHG00M44OaT6000p320030a0300100
+W20UUF1408020000H00022YG0H10608O0044W0WW00000GbAG0p0WH028a8G5c20OW20O0g0
+O6nWm3G3a00I5D2eK0s@t0002G000PG08C1W80000552820800Y0I480W02G4231016q4yC0
+00GEGz400120200G0000G0WH1400G4000@P0G82G0G4WWY00Wn_D000080001102W00W00W2
+1agl1Y0WWW00eO00mG0O400140041W48m8W0008454KK2m0g080H0G18Ag0402GCH@30WG0G
+8000001uqT3000GA0048QV6000G2000eCR300K0mC0000005H0800G8KWA1Ck_t0wB5GjrO0
+4080200KW2W40000G00W460000a2082960GA100W82004eBU380080W88aKI9ApG48105000
+00000I100G0018510WG8IG0XnM1C000G0500100kWpWUuCeAv4000W0008wqE3kjp00W501d
+PWWG0000ZG010G0004100CCaN300H00000100840000W0L10G8002800Y2W0KWK200300008
+0800060W0aa0W18Y00840080K00400WX421G0XB0K06G0WFRP004440880080002YG024G0S
+00uaV36vF1000A020000W6800800mO42021H8Y0804140WA841128241K000md580W8W0W00
+W8W0et_4003004WW8ia4804408K0d0800040H00W006G00040101S0YYW000004WB0Y000KG
+14040000C20O00WFwh0909Gsl6qL@37@d00014200141A218000G41210140800408W000uP
+VYa0000020800W0WCiJ0008800WG00G5DzP00085W40G08I1G0Y0048H00f8002G0I0880C1
+0000a0G0GG4008W41010000G417p@1L0000W10K000W060O@V300HY0100utK36Mc100GBW5
+0000WXasl1000O12000mG000WD5g100XGg000000Y00000W50040m3XC3G00Gw504000IWH0
+G4a500219lGK200G0Ybp0W004eF2000Wl0s80000s200000840000o4W600WN0ewV30m@l10
+000Ye2egA200_7000000O2@340K70Y0801eA40eAx@p030000KLL2mWP4jgg8w3FmC7UGCS6
+GLLXsX000GF280_@10000C700qqF300W8fgA08pC_70PKbgYkAL5TcgAw@0GqPAZgKbALL51
+OcPGVJ10Sp10uBe0m@GmyFYW7Y01V41WkQ00ZtE104000G08000O000a5000e00G62WXi402
+0YXBXa2UGKW00p0504L008g0gGK1H1q2e2e045G0W8000G4200OS100G0S3n4W0080100020
+00Y100YQ00Ct1O8g1s3qOvC00c3A04T008w0qni3e3e2mEG08hS3GK10me2eYe2C604Gb0pJ
+uw@4y7000Wg00W7210G150000PLOGQZIq6k1O00pG406m00G1A4P60W2A1G4H0OWZ0Oq000m
+A5x0g280000mE0nXQGrk6yIP20003W8200H10WP00mI_6OJ18000TZ20yA30uVY0mD90WF2X
+FAI0NDWK_f60Sr0dLB10G00000G0001020WiN@C00000RU0SGE3F28nJsLaDWDDTBnv_Iakc
+1Nydmuu6mV00eaEIUGFXXqVesV3ULVZ2qge1lDE7N200gN1C0pfuF4EWANaxHtu94Ek1zzp0
+GZ7WYwm89k42KeYqrn000Ym6y6aOl1tOPmn@90W02e_V300000002kwU6_KF10K0000e0Y5c
+1q000blRGM@6000auBV3kHsWETC8HV3sQtWdID000040X00GG4180000X0GG008044000000
+40G0@wRmQ_68000u3m7sq@1000WpmB100W00W00nLd00W6JG8000000e40200002W00G@_60
+G1064040WW0022000Y02k_m01008002001100A080000WA00GW08002001G0W21084010W8a
+GY@hDuTT3UYt0G9809@d000808084b@dWG0000040fvRmto9000K0080W100a1xJ0iQ24000
+0W0G5080000401000240001004101A2G00120J100W0010000O0400H0020020W08105010G
+Km6080040m800bW00W3000000K0000038dZ72v7ZRzDOW@A0080KxV2000uOF01CKF3bwdGY
+4Cyxl4000W08A006X50100000G0W0W00G020WG1We0GOBJC_QsWYKc100l5G40WGmJ8vVC00
+1Wygj1BIyW0000080W0000G00Gagn60822gWSZVjV0000400020014zCR080001PB0G00044
+008200O2qA0W00awf4fsn004H8G000O0100c0000018J6RU@y10400L5OG0f6W100ihT3IcH
+Y2Ah8dS30W0000014000140400004002W0W000210ex6Cgn8XES2vGy4IFF1007FroR08000
+0O00D2030GG0c0G0DsmG5zL00H84000Hbw64lv6DyR00004004I00800C006Cl105C0W000Y
+00020000G01WGJnesV300n0abl1810Wgtq002804W0e0g20I2GY0I0GmkFO00G08jH3YeDaJ
+uJ00030W00800GG000u92GaW8GYXm08200GXQMhusV3waFXyxD0020000080442OGP0WA2C0
+0420Y208C280mGGWpaMHpz60A00OcfAU_@1480000080Y02800K2800000U6I14Y0Gm00WK0
+000PCStD00K0810Gux@78b000012G2I10081200500Z80UZCXMpV0WY00082WuQO8tNC0000
+2400000A5G01G0G00W200055W0m2001O10G000P8003FHoyS90000XC000GG00W0002AC0Qz
+P3000A001W0010000u8UuD0011q@l10JG0GY00Y10000006000AiQW00B88120GScK8008WU
+Fw1000722G0830e0W0Z05W28108048009zYH9JaSfl1THR000G000012G0000Go0W440G044
+8000002ApkNnuG6ymR5I40AW190I0141005200000WY060006iN20GcE801eC200TDb7rgR0
+0O0Wp@D00450W000E00000Kw500W0zN08VT36TU3G2002XK0sud1000z2000A2tWCzDW400m
+GeCKtF300G7v0000Wx8gZYGa380m520OiN300Wv0000G1r0e0J1G78I1PZf2008A0000_xF0
+00C0wpF2an2Kb3FeAL1m@08w7yGq@jiV50Ga100n5G6000600m4sU0004b008A1m082W1GI4
+3Waee000G66G9QE3GqS6e20003WMnU302008c00000CjTl1VqR000m850WPCmC05GKWe0C05
+0O0w5LCSpLE0um3KLL7OcP4KLL9e3100mFNL4CpC0eggeA0000@3mY@L000_NN00GuSL0mJ0
+1WkGWgG01r122kx10G0102T00ODR6YtEXWmheAS6U3dX5jP0000AF10WAAmOdx4szt080G0v
+pDpMr6iNk4BW_GiuFyFj13zR00W@K08009wunmsLaBk1X1@my0LO080uhR329FXZmJumR62z
+_XpiJ00000e42Wavs8H9IIAmZk4sOHUC0200aBk1@lR0000Oy2G00800gKW42401hm7IJ@6W
+eW00000WW00004000800pgoWLuD0002000802e00BXd000040e004800E_F10201tJRGoz60
+08N640000aWYbPJe_U600400010iXS365EX0jD000WW0000GG0W40004020KU@300088G000
+212ehU6G0B0000A2100000W80W21400004040G00014m001000G01400018W0I0204008028
+0efpD01000uh5W7qD01000040000801GO001403ZWG0000G804080021000080fPeD000026
+eW0000M00G2HXW00000K400009A00004BsO0008000K0001W40114gl100G00100WG000084
+800001W83@5O0020A0000GP0W00080001ujR340K0G00W00W20000000220000z94000004Y
+0WGHN94Mg100W18G0G0008248W10W0300002W300080008000G8000000m3000OH400000WG
+10G00040000209iP0I02WzvJ0000uT@60W02000WGUn6G0004080G0p600400030010808W0
+0004G6lr08402Pyd00WFqR1I0000uk@60G0100W0Y0W100200jO810080040A20W0000W8W0
+0b0000440000I4Rw@0004G900000W0W0Y00402040412080W8600GC000000206PsV9kv@X4
+@J0ii3000WWScJujV6sz@10010t@dmx@900440020000W8800Ht@R00G420080000ED2W020
+10080W04090W0W0080YG40W001f00010108000W0JgpGfIC000020040400e@XD0004pZZL0
+0m0ux@48001W0040H00GqF6KgE3XP_0H00082000GW000002200m00GGfJ6W48840001G0W0
+Y00001200W0GCOj1FN_mPCCqfU2028000C0VXP27moGEn9S1f1b_Rm6fOG000uSS600080GH
+40000000CGP61GJxRW8o000220doP000Y00X00010008W0G000010WGux9aeW1pn@0eT0a_w
+JuR_4slt00020PEbGP_6KDZ4HY@GPz60P00GC1I0YGY8HKmCc10P88m0B600G08Z0CW884DI
+LaPAW58K40HGX0000e018YTuJ0001yYv60021200m0000A00010000100GhD00uwV36Qd100
+50rROGsA600060800W0000w000NinmMe6G000008ImR_68Y000Y21W8W000WS4e82005008a
+02I0CGW06L64G5HA12801000010H1m006G0WivD0020m4x60008G004mk_600020010mvB60
+0WaJW0008000H000dpc0000H000WG10800000W860028000GWIbVuS16G010SrT2tVR00200
+G110Y8128bK08300H0I1080001KaK0004bG0IH010G205msb6W8eW040202aIA041a000102
+0I10G0W00e000aCG900WG00K00002d18_qD4G200000WK0020000I1G981000WK00W80SyV6
+kUx1002GT_R0010C0088090We9280464501W040100K0HG04GO1H459l101000WeYY00048W
+00m210G1Y00040_Hr0P8000X0012082000qE04G2iLKfZ1PnR0028402080081dZt0Wb10dD
+w1GvHO0G0C2012HG0200405EY60050K90A0A0400010007000800q000G0001FcW5WO0445n
+400O08A0200GH000002m1G000005000mGS8C60002dut03004vfR008200Wu0T3@GAn9WG00
+00G80008W2@D00204100GG10820100O0W0200GW000100001140Y00W000aok100eA900000
+8G000042W05G80101G0011010K10K00GFu60eP0OQKCM@d10A002402phBX6cbe8@400zG00
+00q800qjw6W_40o08@2w300Xm_B000000230008J02102U140000GA40000W2W10G4q70021
+SlGK0XVp0oW001Gq80000nF00aeC6lZQ000WQA0000L0wT21XWzN0W00000E0WwbtW20_840
+000emg20008mL30mFY0WR610V410_82_Or0Sr0104G0q7H0eL10Wu@DmX70000O6p4PLgAw@
+KLq7wWeLbALTe3Uu10KLLW600000000OHCVQIK140S_U5_50000000W@100ly@@@900pC004
+H0xCp011W1C300i601IS02au648nDmDYAmQ0m0C0GWg000CxeL3G00WxWa08yR300uWA0G7G
+WWE0T0T0w0A0m0q0pUp0mi5000G0U8oWrfV0W000pF010406000Cw0m070WvEWB00mU0a5N2
+DMPm056iTl10i00z820Qr0kng1yX80wA30800K000e0008100G000W00mdhC8I130OcvyUD3
+0GL100020Cm00OW10c10qUcC0000km10WrhDOaQ9S3004Hk1000GhpN2y330Vwp00U1000GN
+_2WhtvcdW_h00G9nZ05j2_6Tadm8yCqeK2FbL1000XmkP0Se30020WESIerxD2ZCXzqFfREI
+sVTZOXPumn7QMdgEWU8qz4wUFXbpb0100G6y900uzOiV3gJNYvsVuGf4c0a43000VpR00G00
+H00120004080M4d100Y0000AG00428000G00H1200nsR000401000dfR08200W00WzLR0H00
+0mNE000e000818801ucA300G0KvX100H00100G14WenU3080Gyqc1000040408006uWT30G0
+G800W04G01800810000WH0G0000W8G001126Y92G1468b0WG2G0W40GK4501I208O0G84462
+0200W008OnT3K1000O00G040020e0WI01d8QmDQ60H2000000690W9xD000K0W4004001OW0
+02AtWo5C0G400080040018W060000Y040G0400200G00m004G2GGG400000244Gkz60X00WI
+0W00K00Ym0000m100010m11I08000084G8W064000002A0001030mkQ68Y0100002G00A00W
+0G0100G000m0000G000410060004WYW000000gK00W240041W200G001041004A100Y00040
+04G0G0G08m000H0000GW000018I000484G002CPi1680O0K004zM200200G02qdV20001100
+YI4W10G1A0824G80100190046402W00X1Cr836090020000WA0WlqI01mW000000m003@d0I
+000WpB0vvdW000ZgNJe0G3oaoWe@DG400G986000G0210GF860W0e0280140034014XeRGcz
+6K9l10200002G8600esE304008I00u@V3W002204HekC3Mbp0Y51000000440aIP2zsQ0000
+Ub7H0rBR0Y008n004xo@0400W1wD000418C8YXzC000048m08008008e1Alt00C040240AFF
+X7@J0W10000A041GG0001G0W093G00a8E400X44822lzR0G0080000200100G84wl1V@p000
+880180080y100G00a0PA130000b_b1FZpGxh60000240X01002OW005oR0000040405wdGl_
+9axl1000H000eK_M280G0G0000G0200010001G820000206ut0H800BbB1000n2rJ00C2082
+W80G220000GW0YSye1v@d00W1WTiDu5_4G4000030BIV3005002400001mNz600I000e8mgy
+C0100m00G0040WkUD0004028W80WP40G40cQs00404FsRmjq6OG00eVt4W800KMl10008jE0
+00020OgM6G40000W00G02mrU9G0W0ApV3g1s0000IG000W1Y008800W4G01G8400W1T0RGUS
+6yae10004400Z00Pg0200426942GI80W10Ca8Ce6Hf1GL10602GY844400Y00Y2ZW82G4008
+00C8000W1hR0G04HW0WW00GI1200008Z2o020Y013W04049K6H40W0m80OL@400G030W01G4
+44Wa20W0008008W2Y001C00400aXW08G00CA9q8me0GW215m8C8g008400GH80003Vn00GYG
+00GIH10200G4204020800OG1J0LL0X8m0800g003031000000K81W0Q@t0WCI4GG20Et81W0
+01RmR001000iX028K4X08L8W8000W00C0000G41040I008GjNl1bXP00200H0L8GT020YIWI
+060oCH0802O40W048G0G0a2101000W1G2280WEvV000800420G200a200kmt0000W0GAf02W
+862e1080080000W800KG10618WfRh0000ieaIWQDC8CJ3050900m0WKG000W0Wd2CulV60O8
+W0A000G000ea20Cc0000AG000I200WQsk7csFXozD0G0020100035001004I6004GYG65G0e
+0120000G00G2tsWupJ8hT6E6t000P6019000080AG0001Wrq_600001008I3p6q0e1000100
+0m000W0020000W0005009e00W0G59G20090EoFXB@D8ZV30000H040ABJ34000W8W1438110
+mG00u2Q4080s6n0G0024000E_d100W0W0000800yvi10gM100040WW4erG30Y0GiIR202800
+200W0210001080W000W40008W08001G0Gm082O0G004m18G620W88B400H810m@@90100210
+0042000418Y10Aa008022YGL009109280G002WW0018040GG0GG40G00G099vyR00G000YG0
+xAQ00A2mwyD02230000Oe000Y080010G02K0eMV622@121G00120GY40100020n208G00I10
+0W40G6Ao00020vtR0W40WZ_b00CGj00010w005UpWN8A00000S000oQt0m2G000nGw3l200C
+QeE0004YECyl1vLQ001WU2G080J40EjEXv8C8RE3Itt0q32000mH0B000AG3v4_A0GL0000k
+WgQ1WFY0G761WMD00jf0VOr0_G4802O0yA30uZY0m7X0001WFYG4ND004Ha@@D00H4nWpCuc
+2000000GA000Au60C340000ubFE0000WIX70F20000000eA008400000000uBN10A400@500
+G100UW200WF00002Co0Cp@10000WgYG@0000GG8pF30OlV0980041j10C040G0O000K10088
+00mK20We4mCpOWA0m0g000Z100C3008g00GW0e2X1G4000L00Wa00042000C00080O0G0G00
+1WGU06000Woq000J500260L8Y0L0G04DKl1000WL000h0C0G0O0W0W0WOuC000600OC0OOg0
+o2W0G5008A000X000cA00460608WeY281000000mpb105e0uXs10000UO600O408Y800W7uZ
+7Hm3LXWh60GtK0WU400IJm0H41008W1050TX10N500K5000Gg0G4Y0Wg6Rq00080004DT3Wk
+J50xWH5WW2wtE04X2vE@000ObQtDWgm100000LK0y200LeI0tW20lH1000O0yG@0u@U0E00m
+BW000000@z@3uI004G8cwM63N2Wg30frdGUzL4ID6NoJ2408010G0LVRmFl90002O6C34G00
+ibl15ozmqx6CRj120110000Q5008nZ4sqrWm@P0210mg8CavI2G0040208Ktl1LMRml@L0W0
+2uI63Y77ZIOVeRz4MRF12000000QsaFaT0wOZxAUXtWBwD8iM3UW@10040G0W0W002qT76fk
+QmT_600OA500W01G0WVxDeVX4_@F11042buA100X00804Z@dW002Wz@J000mnkj6W82W00G0
+09W01I4G000H20e4G841000000GW0200000480000009Y004400WW0K10KC2000104000aW0
+0010W0Y0W008200WG0e2XA000WZ2W0G10W4G4bOP0000G0101drd0W0000020b@R00W00014
+0lpd0000K2A00R4B100020C0480020208G0840300840aK0800a0YW03000200110e2C2O24
+0I4282G824GG004G10000G0A10X07@R0G08WBACeKU3000Wem0G0080480000GG0G002001b
+8000004401W00H0G0000A_bs02001FtpGeM60020G0000200801000842400W0400m000020
+11WCY00GW80qWG0010GGX011WG80mbG000G00880m04003Y0000044nG01g10G000600neO0
+0010G00G8000W0W8W80G001000W0001110002m1031G0G302W0mx@682Q8uZD3040a00I000
+W0oP@6004040W0oxy9CGV2Jqd0A0000034000804G100008hF30G110u10041400m0cT@D04
+G00A0Y001248Y0WA7p00L10G00004101100eHU3000400002300020M0Y000WrO200G000WW
+000WoWX68008OXF3_@t0800AHrRme_C00040000C158WrcDuZ03gCs00W004HG800W820151
+011vz_6G00Y0810000mC000GlVR0302WdrD0010000080080PuRmzw6G0W0OyV64Q00ikl18
+X00gzdX3NDOkV6QmjYfzDOxR6QRtWhAC0000110K4004Qt@RGMt647j100020801Kqi10000
+801GKSE30G4G080G080W100000Yr3024041000080800H00000800G004Wzbb001404000zh
+dGuu6yil1xXdGaO6ijG200Y0000810m0uSN3sLt00C08hmR00m00100Y000G490100000GH0
+8m000WW800O00w8F10021TwRGFo60gg1uzT64H40We008i23w59XpEV0500Gow602208P53_
+Zd100a0000W410Y00108oM300W00008280000W400CH6W0800a8100480004100120G00GCJ
+0W00010C18UV3000e4Yl10400Egm0y000lqR0012WtICuvQ3G00002G08Gl4689Xdsh0108m
+Oy9Wu00Wo420G20GAH4K04GG40Ge20OA20LWe08Y8GG406PK88230O61804JG04KW01YK4A2
+f8C1YC10122KZKKB@60W882W000000KW02m020000uV00G00Y00400AK5200m8c804C800eG
+00GW0004O010000G0Uer0014GxSPW0YW001102400W040awl100G2w2tWwQC0Ho00GKb3o02
+0W8WY0400022W00G00W8280WH9YWH0009H08G000eK4W00GW20044000800180m2844mY@90
+00G1Y06SqQ6000008x6ueX60G00141000080101020GG0WW0X00W8503UufYllDG03000G4W
+lyDOrV380K0200Gh3W4850YG410O4E34WK0002W400850210G20K@@R0f000a090aI0000WW
+SEl482000000HAf0uWV300W2040aYK0O60080I1008380GW00WC0W0828000G900W0040G00
+04I00000W4GFS60000100WsI@L00G0009050014000H00AG0300WPeG08000W21000240810
+050000004K002008800080H08b1HGjBd4G00000mF2400eIV3012100G0100K6WG0400W000
+A0120284H508W00080000200800E4t05X000G080G04TkV5zKQmlY6G410004G0WDG12080W
+0G00001X330X00D08Y0610H1002y0H82000II03000WW1OG20vz@018800000WtM10000W0W
+100m8008G00O040X008Z0G0Q092GG0Gtg6004002W0C1004000GN7Q0G1W0G00000D0IQnWu
+_P000H000000Ga00000W002000WG004102024GIaK048C000awZ188m00040W00820G001GG
+edXCWW00GFD6W0I00000ob06000WX900Gut6GGY0uKU34G80250Y020010WG0000000Wq000
+8SbZ10000011G00KW8Ny7a000ypV2WC2801fCS8k1000g50G00G78J00000U1Wq@D00K3000
+0G20R00G00r200iSi151mGCSF00uJ3r00000LW@@D001Gl00240_2r20001e30aBk1YWe000
+80m1YY00020700YA2J0005onnF0040000uD0sx10kQ0URr0yn720000qNF0eDB0Gh60WsKWR
+y82NPWF_G402400yJ000000G6G00F2XFY02V4101000_80B@R000K50000U0000000YO000e
+X100F030000080K000g0000KLL59Ld9Q7UGqEyWPaP6LfALUm3H@F0YMLg2zXE0G6GWg0ioV
+200W@7wt0r30000004Gf04sl1OC008O0SnC3K96k4000YI00CZ1gO636301O60vUR008Y00O
+c18IK1C602G500GK000J10WOmD001W004020006000H100mXA00WR6000103cP020u0g000p
+1K0C3e0Oc30GK3eZ86G7GDWCW20P050Y0204P008Y0a1G00104qBk1O2000O00yRZ1zmdW10
+yH8000WRWL5m@Gv0000WFK500iA00u10KmDymc2ug1Am7H08H4105C0WU410z82N100ko0MD
+1c0u5Y0WPK0W2K000I550e7S300e0004000Gs600KG20G4Y0WG0oTY0W2W1W9600170060Az
+mR0L51Wr@b0090lP002m30W4102wiE4G010FU3Js@F0M7087SXUuk20008JkdGgP6SYb1G00
+0Ufr010G0dXRmeuLS1K20008T20000000W0WmpR9a5k4ZxRGG09qKk1f08nkyI000000W0IF
+tLCFU8Lrd000Ss3pPeiSLA2daxqJW00Cmvz60W00eJE66spWGjIOo@7_qF1mgD0D4RmUzC00
+108S@78000aO032000EltWK0OupT3001218OG0W100080G4W11402100C40000a02000e220
+01W0Y0W004IGG0000JG00GIHmG00W01804G00Y1000021006000b406AG000a0000WK04400
+0CD406G0W0gsrWQqDeb@4W00W0G0Gept4wYF100184000wJrWX_DO073_us0GH018800000L
+KCb1000W0014002401100228004000WWHK012eW2guGK3000H0W00GG0K0004AOKG08W21L0
+50aST2080000GP3000490GqGh6002001203000G48GGTk@G1o6qIl10400QAqWsxV0010008
+W0152W60W00G140G22a0008104G30002G01000b022W00W00G0GH3gH02001900bOGG500m4
+0802400e00102DW0e20aAoWW25G000a0GW0G80W40002z20015u@p6iph120606Kt0040800
+20gLrW8@D8dV3000m0000402Cm6@CKZX1400002m200a004000W00000K0400000G08000K0
+1800WG000WW0GW0C1000014mG80G5@6W00400I0W2G00G144000K0040D_V2W001000mmL0Y
+000000H0XCGIumG3G100SVQ5BQRGA_6Sje400W0O801910028m04GW80101000W840YG0080
+040aX080W5nDG0H00008G0040000Kkqr001G4bxQ006084GGGNGR002020m8000EL102180W
+0vtA3_@d10m40FcRm@@O82808gG60mC00010004104020GA000000044W0201040000e00G4
+10PyQW80000G0H2A08kH9100HY002901408W08200m405W80014YG0000meKdl1Y@1000H40
+020he93Y@d100GG9PRGX9XSDR200W0gxs0Wm00G18000200002wjT344000400aW40q139G0
+061800mqt6G000W000X00We4@D001110G00100W04000000nK00040GGzaCK2V2tcMHjt6CV
+k1G4H8wZtWMoV0G00GZW60240eQW481c00Y010880XSo48W00000P0G000W001G00HGVw904
+2Y00GGnvx600210G000G00000nA41200H00i0z31Ai10G4008204180E4t0H000b6aW04100
+4H0G8G400K014W50021210005X4YYWK1W8252v0HmW2310GY80Hm8gXWGWA140700m8WG0e4
+X4OG0o0148GYWH0W0a1Ae61L3X44HC5e8e0X290G0000uhCA0WYG48Le2000W030quV2Y100
+W80n4g06YGa800H00GH41W0G401G400200W80mC0082080p214G41P8KG4807eWGXH1O00aW
+08Y0004Y220824GWGGLHm0d0802008G081414H8880G400411C00e9013X8Ina909GW800Y8
+Y020W0801202OK000ur10aOWGm1040300GGm000Vbc008W00G00BfA108AYljD00H4o8@9O2
+000000004I00000W200MHF1180K40408002aCl11YP0fa200618lsR0000A000a0WGe00202
+WA000120040Wk_DeR@400Sf2A10u@V3owH5000K4002xrtWvwC0000900GA0Y00VapWG0W9W
+00420A1IWqWwkDWX002G083W14K00G000J0q_V28020W600e200W808mHz60400vXE30X60W
+100eYV36AIYHWn0000o5@9G0008XV30080GW4000W04G00000160a00G20G01000G0080G8C
+202u0P0102000I450210Au0200800008G1W000W2G2000008G10G0G03000001W40001G401
+W000W00000m5F1414088as78004S5g1j5Z120WecwDeRz703008100m000W0400110082W40
+00Ge00ZIG400I404G09K008280G00A580400080800010G00100W25Rh1r7O00GG00008205
+00000205000WxJXVO00099MvAASt09000G000W00Ha6l1400080080K0G0102980008200Tr
+R00WC0000WOWe00004m100u@T323t0W00000WGwaF1W0000840030GyYk14000000H020G03
+000Gp3IG0040500gjzXjyVegy700Wa1Ya002Z0WG0000m00ZYR00f62000X4000H000A@K00
+G1Sb1GuV80mNU0m710WF210V420ig0kf08yH404005uZ0A000I00040008008G00m0egg000
+k10Ak1e@l3At@t@w7WXDC0Vv10410008VH400O0WOc40000CZS00enV3W9W@x000udwA00c0
+0000Gy13uoq9O0100W1SCY1Gnv_D000Ge000G1G5X203040L043N20GK1WXf2G50CWP00We0
+00c1000800GK1G0m0Y205W10003000HXXRW0m0G1W104030006080H100GS400W9500W2030
+cYYXmtCO406Y_F12400000PI8tW@zDG00Oe0a100u700000000F0m7H0000WVU412WmF_u30
+z@h0gTI000Y0ezl30uX2KuAWF410V820N5000000yH80Gkovg1Wmkx2m16WWF20110022002
+000400080044Y8280000Ws30003S0uc20K00mvQ3G_qCKEs640000mn43m10e@V30We00000
+Gp92O9ujC7833KcG8uI000Wth00GNuLCHk7VqHIEQX4RT22WW0AEVZywO8ryAIJlYYqPefDX
+koB4W560JUGoH2m4N36bWpG6y6Kyj1P_RGjR9K5@3Y600I5lYCtDeW4CkUFXHvb0108W8W02
+02X0@MPmcV90020040020Y0WoiD0108GDG9W0010100001G00I003uRG1v6yfj100qe1108W
+080eg59s4pWwvP0X000000mUeCe4V30800y@i10201_py140012000G080aMZ1TJR00G8000
+G00801GW00SMe16C004000eWW8G05C000000K04800HG004e020G84022W140000WoO0C000
+W1100900G0Q6KoV235OGsU90W20exw4000X00H000XG002002G008000001W0W0801X00040
+0200W040880424fm300G00a000004002Wm5n60000X020014W22eW000G08042W1W000H0W0
+0I08004G0204A4W0000nEG4W008000GWLyp0040G00G0W0012uF100006020EIA10G102C00
+G160yMT260208G01KZd1u0000O0001000080u6X6qAe140020060G004G00WGNo60W100020
+00G020003XzPma@60X000040G_@600eP702001e8WBAtW040m1_CG0G0OiV602200040Okx4
+000G002000014012e@@D00G4m4w6y8l15TRGfH608G0040C08200008A00Y8Ehm00484I104
+01W402G0WWW00W000Wf70rcPGHYC0001G0002240n@@PG400G0t90084vqJCUDqWkAC0W800
+000mkpJ00008030020004020Ehm000m000G4GG0G8001GI0G040G01081010008080G0GOWI
+3000n1I00W0000W0200010X_R08000a00G80W80X000WC28vV6W004100Yy@V30G600008u1
+R3aH40A20YG44GC00C20014dPb0m00WX_D040020000WG012280M1dXkED0O01miw6084009
+00021011120FqR0210000WXG101G0W201018Rz44000040WerV300O04AU208200G4021001
+0Y000WGWDuDW8m0max9iEi100060020011800800600W89D0W420014XaYD00010408G0000
+02410W00q8d10000W0140008001G0G0220m0a800888A001000qu80G00008W04000QBsWs@
+D8Ay4IOD14X00XCd008200040001Y0K400W8O2H00mh26ill12800W1448280008G0004006
+0600G8G30020W2G1500010080CW0W04000K002K003Y14W1L000084108354WGY1WW570cGG
+K4WgG02a005GC2000ZcW004000A00100W0W2G004400010060085200W0100020E@l1000cX
+80410Wg2G082W4X8W00W8X8100H420000H4H4Y0W80Ga84XH0G54Y0700aW000025030HW0D
+G8004100WG400000282H014W82441CWAW0204404501O10130041G003POGG2m5W0KG088GI
+G0GK8GQ0130CmW0o4W002000iNO0GHW28WW5a008Y8GRz600005G100WOg8Y0004P40w@F10
+4H0xePW80W2Y00020WI008ZW8e0GW040YWW810000I60400GTul1W20008000Ae00a0000W2
+00008f0O0084AGf0aNzd0Ga2WtsD00009X0002000W040_@t0G15Cl@R0mh0W@hV8XtD0W10
+00f800G000aIA0010000fW0a00000WK0204G04I95X42o14004yyl1hQO00C84000K0G0026
+tWI8CW0X0Gjt6004a280002140W0G07NPGe@C001230400000QV104HY@GTL6acf40000C00
+00am00G4I4G010Yg91W24042000A00H60O83304W0062H0c0G01OG0W00W4Gfz6W2W80020W
+W011K00GW00500G2W010G00G02400e1W205020642y@l1081G100G011000081400000YWW8
+W0000000ePjv@7aGG000G0OIJ3EicXgSI0KW200404A011pPO03e07010G82020418000805
+eK00W40W00000200Y80004HK0W008A00004X04008AGWG100000W04W0G0000W083lR8100X
+Y0G80040We00000G0oWA900000m8300K0bCWVW000GDS6i_F3I0W8000I008Y040W0000100
+G200oK00a0100104H0KRu9WGO10000uXX9q1W1f0y0G4000628Y0040KB0SEE3PEcGAy60MG
+000062000YakJ8BU30G10000OuAv76ft0X000Ge5000Y0804000q720H2GlGVCG400z2002H
+0G6I008wZ1G8XuBU8w3TGqPAZ7oK6LLb3Uu1HNLLY_mg4zX78QLLHLggYggA3pCJqKLLebfG
+0C3k1G0XhCG0@xA0cnC1kA02400480XcbW0LLL020000CAe2WCP30ttN@300W1Wq@D0W0020
+W0F00O00100CJ00CDU28a00r000OW1sWg0Sb10OL92OaW5G5W0W3GWQn407JC0YFO0s1p0q1
+G10X100230L46We0D0K1A0Y2K0G8e0a2m301021000A00SZ1O0e0K1W4uC00Y2GCS603YA06
+040C000H18084000we046d1m000W102Kwk1a100I18Xc@PG00Oe0WmO5i70AmDWamU09HZ1I
+Y6NW4Dk0_PS1s3e2u7G9QFWGanF0e7H0GFYmFU4X@5X0@u10@N10kfF0yH80uc4uZD9m@30X
+lU0W@NmUS600050WTdXdV61ND0Wcv60z84000G0qxl0XL3uVC12400mRK000000WZnG30000
+000GfROpW@100000WSnF00m@@bzF30i100mX7O3LLnCp8e@1GGg2WWKL51Tu1@JLLUm30yF0
+44Um3uVRZjqW@600WlVswY2rUZGgVuZjP0lo0KQ_C@iTon@6y2Z7ze72000OC300XgXnTu5T
+NU5n5q200FsHyYg6U3MoEXkiVuo_GswtWQ7D000208000WJ60zrRJ_0pKjlD000uy500qtQB
+DKSIP_F4fmCBud00y_op@LvE1RsAmcLbDufV30k60CbeDPFaMp0cbPWbB0RGFA9i0k1f0GHK
+0a000yELW76SezcPgeUcAY2m3000ia3002c9gKOh8AsAY2W400ABljeoLtg00I0e307I1WYe
+0E10001m10WK1U8FMX0002s1W3f0GHK0eabO2f2mmx9@t_o@htyVwF@VUq@zUD600CWQvDe3
+06I1WYe0EH000Gg0F4KkG08G202HW8G000849220001IW880a0J1WYe0EHW0008E8mK1C000
+00H80W4r520GI402I49000088110000IY440YaGA0K45m9I0000f1GcAW1000S88000WS807
+002EpX00W38u40000ESa205H1i1Gu4W3n_lGj@7ax@0z_@Fm@xJy@z8@FArn0WlsNqv@3b_V
+Gh@@Jx@zy_@En@dpy@tK@VDt@FJ_@ni@@Bz@to@@JT@VKv@@q_@Dr@@I@@lqDR@@R3000Q90
+00@@@@@@C0800u@VR0SY0y@@@@@@@Tw@N7@@pv@@@@@@@@@@@@@@@@@@@@@@@@@@jJ100002
+0GTOU04008IC30000r9M5000uW400y@@30010_@790400z28X008Wm12PE030100000000GY
+UC1Hz@F38000_@@108010G002KmW85IeJ130280y@V2@Bm0Oj5WD1U8IXbC000az06@@pm74
+O41X1000eOD00y@@d000n18G0K8e1d7GIdUj0W00e103AsBXXAgu@@G4JN00004f933IgmW@
+@X4000gO00WmCSQA3301004JO2x9Cp@@C008CSf43W9000004PEnb04000020e103Y0m0000
+GJVKn@@X0Oo020204000H000000P0_@letMCeNa4_@@7000Ce1H80G4120G08D3acbn00800
+000J0W02000W400800100000X@@R30WMs@@D01G1mP65jpI2010000W004G000X0mf2Ca9wC
+WWN0C000COg1Bccp@@C00BY30000WW88W000G0008000q0W1@@d3000I@080LMOp@@O002W0
+H0000WG0000240200008KuQ2W00000A0y@FC00IwIr9XDXA200Ga000G0u00Y000108082Y2
+00W00782200804008_@t60cE80000WK80yOYG@@R0008Q7UGqEyW@Tu1@30LcnCH@F0YMLg2
+zXE0000Wg0y@@C000OLy@000000G0Kr@@81K04n008Y1aH4383e6G6G1WCW20H010YC00000
+o000@@F300KO0000200650400Wi0u@VB1Wz04RL2gg80_@@jEjUeNhA000GiGHH@@t500dYH
+eVhtAI_@@1me70@@huGRL000WsB00GvDvq5z6tabGCSF08000G48W0W0WKuC02000G000100
+G0080000210000G002001040400000GI001000000SQpOXKKj1001004100800G810qvS600
+G0AVE36iM2800000W0AcpWdvC0204000400400W8e0G000800000H400G0040G028G44G00S
+qc1P1ameS6KKd1WO4004G1Kv632W00GG140W08OrD3_6m000G020W00G000W000210Ha2aKh
+N28000000400100G00010182I208809000000109I13G000G40010000H0G000200H0G800a
+000000WC0G000000yi000oL2Z_vI0020mcV90WG60900Ga26aud1JH9nyV9G00081G90G10i
+cZ100010G00G020o040m7VFaUd112Q000NI0014DunW008004G12000C001qHE348008a020
+408edS30800qOLB0KW0WG400080G4G0mvWLy5e100GG00W001020W00q@@90wpY0013msQO0
+1Y0000WGPw6qNe100GIG2000001CdBOYNt02W04G040QwY10804v8QGIK6Cu530H00080000
+0Yqj00mRx9iee4XkR010C000W0202000040G000284OvY68G00eK6L0408OG8000800100Y4
+8OudD3W000008000GWm0a60010210824400000000U01000W2080GG000C2W@@b0008y2a9O
+030WG010CmG80H04W008gkJbDXU08002410Wo4PG0206800mlBC89o40100S_e1WQJ000044
+H9601000020GC000800oNb6CMf108X4G01CiNfA410G80440n00K04000W0002840WG08000
+8000001G100G204AG0WG0X00028I0090G000040W88YG000080000WdT800e85480G4@@B10
+0W2L0000H0W410a2016W0CG0004GmCm00CG904G4I290W400Gk@a000G4050W00X0210WGOA
+4H060WW00erH60001W002G000001W00220W00041102004I0241000000kfW0W0W040A2000
+036OJeI000A4W8208200020GWA20C01306O6008C1D0AWaEVu@VL050WabX11iP000800050
+0000020Ijjf1WIa4K4000Af0GcW000000GqB0NbOmf0R0A0040200e04WK0O0YG2m2Jv8W00
+uVF66Fr041000041820000010000Y4000W40048000000wQ00v@VF0500WWC0G0G10e00W@@
+DG800G306K2G2RfU2041WmRC000YGVg604060A00000500010diP04HW000W82CW8Wm000Y0
+g02a000WvC0048dfQGffL000GI00000Am3u00GVcc0G244GW40030X_@N580G0dmP080XWjO
+J0004mZg9000WfKL30XaAH12000008004100G420000ZA2qJh1xsaGTZI0004OWF30W0087X
+0000W814A000028020gtQ6000a00000804H020eBt400800000I8q30001KZ00080600000W
+U1000WE2000M72080084syQ3000i00000O8G220We9m400im0000Sz13Unb40W100C304100
+udF0mxl3G1lI000_t70Ye8000Y4HLgw3yWdggoCLLL4Cpi8C3000SuKD20z74LfAL100LLrx
+kLO0_100A008w700W7000W@10UxO7Y_tt0yd@1We@@L1W10003034L06000C000800004008
+Y100Wu3CG18000m000m400mu200H5G5pF06WK0C010O0I082000VYW8G03GW060C000O0A0@
+@@0YA000K0600We00041008K000e0eYG1W102WA00GK0iCfAA00000WdxF0_H1@yF00000UJ
+1pD_Wh600@F3W_1000000QJ10etO300090I1V40002q8KGG84WWGeG000XCRv30001j100O3
+000W5S305S004000K00S502OtP2m7H0Wh60WrXZgUvA00SVz@V5lpE60100I0811tI20w6WC
+Yhes76wE5fHIgu@VIu700SZS5nx1600200018ZYAnUtI00eGAZRFc9T600WG0G000000Lnj1
+rAR0100080240A81WGKA80200101a0800I00G00a00020W80000400Y0280G0H010W048038
+G000W00W480810002FW000G1GW0OxD34000y8d1001WU7t00G00roPGbu90810PQx4Mlj20G
+0080G0080080508AE6oRp0000080O0C0082G2042A880GWG10A1W0290I50WW1Y1520020f0
+48G0404W8YWX02400000En30200W0000GAIt0001020004041y2i11dR000C002K40030000
+O0WO0148004W02000404200W00Khk4400604005lk100080002002000802800124G408000
+C0b0WW022K102214C0o0WP0G000GG810P413020W0A00100430WH00W4000uW0200028010m
+0Ga2600G40G08G1S60001ObS30a0W0200010000400K0e08101kx9X@@b8hL30000j3l1Fbp
+0X01040q00W10G000H0100024opx608001A2W0WGG5GDI90010n228W8404404420Q00000W
+RJ1020WarN2Hed0120axqJeHG3820W0W000G002G02WivD0H00KaS6y@F30020lUoWwwJuwR
+30020000e1X00Gzy600W00YH0800060C4W8600002004GC048001G0000000220080000C08
+UT34B000104OS_7MvcX5wDerU308aS00010I09GszCyT@300GGICq08402FaPW000000C00I
+I1000a001000G8CG200010020041008000804I0180011005414H8Y0C00H0O_U301AW0000
+001U40W08000008040H40CRl100W8snt0H00000200G40020000G08X100000G00040001WW
+10AZ@48000Cpl402000448000W002I01G428G300001800425GmisU30040W81Z10802C002
+IW002G80_zt080aHGW00G0000002uPV30Jf0SQl10408000WqQM20800U@sW@@D0Y40400G0
+a1010G00a20W0C20OG03g_l200010a20W84000400008200038002800241C000009RB30S0
+G0100ecT3000005G02002200020040W0000000BH0Guz@4uB00i2C3W0006fs00004800004
+00C9c1fXO010008G2WW814040W8mCWuOG6_@d1H88062g8825G00880W08aIW200Y040G488
+30a84G910K08080842m848Y8K5Y2W18GMGHHaW7OAaE2o08020055X01204LD30000K114W0
+G000u@ykW1008408H000Y01001004G400020091830030W4HH000W0804g04q104W8g41100
+6f2042GG1a0Y4bjdGJz9000m0K0200W0G00G008W2WG008Y00G1510YLX68E226D20K04S15
+KcHmGW4SW0P0940094O8Y0GWW880800005WHqW8h20Y8W8400000GW04mzz60ok008010140
+0400G000W4H00000004G0Gu_CO4000H000G100g228482HLy018g9GbWG5X02000GG00W04s
+vdXZtCG0W0500mH00W0W20G01G1K4l10Hg000G0W8eW20G00300A0G440W0H8L0HG8WCXKI1
+1WW169851WeG040HI12YGYG085f0mC8040000Gye000G00uMD30002GA000e00GTw6G41000
+0eKnB600GagqD38500W181WKI928JWqVrm00GXG_w9ea0020O10G000mWW00140G0K0000GW
+O040e0OG00KG020G02OCW001181O2110AW00W012c0080A49m0KW0220mG0000004Q020GqP
+k100eG008W0W4Y00G1opy60400004000014040Y40a3000801401008aG004WSG8820egXl2
+EGGWO08W084W8W8401I0108WW@@D0O062001GAWO000WGGW381C88We202OH0EW318W4550G
+WWG1GO48Y1YW022H0450GG15WGm02G0420008640000eW00000802004KOYY80020Wv0a054
+00aW304G8002S0EW40000G40220W0W091801002W400G10184406_N20W04TzR0H01080000
+G00000H200Y00480C060010IW0109Cm0008G0102014402800081480401e40GW0G40WYOGG
+4m004MWG2G1X20G2W01000OX00e0K00G0008G500A40040104Kg00YW01Of001G2aW0K4008
+0400126000G40W011Y4G040G00I400000G88005xl4W50000mXacU2Y0000A3W80000Gj0Gy
+_600OXWI00gGmj0G00vQ101GG8080040z70008@5qV3100vN0WG4000E002Gl30800@2000K
+jH64000W6100200080000r20000e34900000E0m@@600Y0000W01eF0000W5@cG70C4_F300
+0L51Uu92ymZgcP6uXlApC34K140ztF0wtT0qFHyl12eAtWm140mF41WF2E0ta00kg0_@H800
+04G000uD50mD@2W8Y00@N5@100X@p002limsDGLeW200m4m0300000O20003C0WP00FKGX1C
+00CW1000C00200ta00kg0K0G2Sr02uc20mD50mL1EP@AGK10Wf2m0J545G2WAW2WA0001100
+0A00SZ1OGi2K1WRuC004100OC00O_1uoy3W107WB0006000t000cT00C@0TOw0x1W3e200W1
+00mS000WE4008G00WO2aXP6W004mC00060A1H1KYYIW45b0g8A1K181e2GI43WW8W000J500
+cA0gCg0Z1W0C300C600mK0000100010YNvP0000eK0CJJ0GZouN80m6p0G00400m000300Ue
+08204y@7H00G0W800eVg0GgY0WU4XgG00V820ko00yZV0y7000001080047J8W000lM00100
+0g2000U_pN91O000K1U00mCpGGLdXW7U01pC3paP6ggALym32YPc1ag50ezp0GVUnDsKWRKm
+1V820@G40__@@90W56O9Rdkkd1Gm00@@hoI_dirlAdUJ2000O_300VrbM_yDcLk7JUdmHsIa
+zT50MM0U@JbJ1mut@700101400A0S36Hr00000004W010410eW00100Y0K04104000204002
+000220201G204HG0800080W1W02G2100022480000a0800000x60Wu@V340100510u_U90G0
+000204G01mMvFq_f1XeMnSt6ea0000401100180280210eG0800G2I01W30W080808W00P05
+04e28WGWC4226W21D11a82XHWW48288440G818c4GKYW0S2A401000O0XW0M0Y0a2G00200W
+00003WW22upP3800O00W04230040420W00008800000WO0G0W4X00OG20008G00Ue73aG008
+10800H001W2G0080800220094HG00X0aIGH20002W0444G04G08aH058WG4CWG02H2WKP4XC
+202I18Wo829WH20eI4bP218Z8A800000OuX0g204GX040O000KY00e000W008W2080U30800
+80000GW80901WIuDWKWG084H008I00000UPBXyUVW0400W0000m01@@RW100002000010Eqo
+0020842G104008G888RT3G0248W0BugQ300H00000g8Y4WW010000Zj00m4x6yik100X22UF
+120000I02Ios00024drp040000W08TMY1410000W8f0Rm@@604G00W0W800A00005tnRWG00
+4KW460a800040000220X014WH44004G0820O00W0H020G0Grq6000V300880000GW4004040
+0YO_@l1200G0WHa10014000HIT6G0G0G08G8W00008080I8106o0G41GSO@A0G8000200100
+02W000H00W0Y00W0200410000400408009001240GWW810Q_V34G0C04Wa00008041000104
+00K040000900088mPT68me80000020010410W1CGg0_1102aI48451008000O6V300082100
+W00X0000020G0PX9HIv60Y10u9V30852G002028401404010YrzR0800800G0001018G80G8
+80WWn010G00G820000001W004W050411800800H00GW000WoG21000109014H4100010GW10
+80Xo00Ga100002414Gm00W00000I0000W090W008W9O0H08400SeO22010wsN200820200G0
+004Jl1002G00100G058RE3WGW00200G0W000400001A400K0000W00Z0000022Y0060HnyRm
+y@9008P301086G1010000W048X8008282008200Y0820000110008W00000808P040W040W0
+G800008380000WOCv6a8U2hPc0W1W80G1A800KG0G0WA2GaG0H0a6S885X0000W04X01049Y
+0I401065H9IGA04GW40AJGWW04JX140e8I10542AAC1NGW902G04GW03G40E0m00000xw100
+0HH4KK00G4BY010KTa1K3H0A2614oamW9YX0a2J84080G401W8841eY2000G5OW0pGO0Y1bG
+W2018411I000W00400XRPmrx9W20WG0408H40G2800W100800208040HGH3L9WH88G408G84
+aKG009402423EOa213G0cea200HqGL800N1415G040m44YG0PW320W042000W1000IPBa08H
+2202KaI420q8i20801018010802414WGWO203I4XAg9200QW00n20WMg0905Xe0G4O2G1OeW
+eY944IFqW@@V8jR3QLt008W000W01O02G0000XWa0eI010220WIgG1P0000fWW8C58I0GAYW
+84GG4185GA0402WKi05b0A4W85008I4GaKIDxl100cI8000H10008G100W4WSnD0008W0000
+04007ZR0fWA090W120A0100W80Y0urV380000Gm2uYNC80KG140008410G0X20m00t@R0f00
+0490120A0020X01800800010880020A893158WGG0a4080290W000WK0HJH0YX004G0XcIA1
+e000Wf580W00G0K2C1U2W400008O00080200200WGb108000YG4080W21uvU30W8000G0190
+anwzL0010G8120W86040W000W480M1XWCAHG810W90TW2eG020010W20100520Na040GKOA0
+WWCW00H2083I000Y8040B0224022W020306W2G0000000D000qya00030005W00A42000W06
+e1W4G1KGHGG01A810W830A228Z0000040I0000H0000020001000a0mY0000m1802Od@A0G1
+H00GW002G48WWG100W008100a4WK00W08000G0941404220810401280018810000G250240
+W28H2G0eGG4G00e80000200084000X00000Gb00290002X0002AYt01m000600G2a2X01X0W
+0000I002008099YkWt0I0208040032K10I000001800WssVe2E308304bk10We20000m1o00
+00HWH000402G0000Gl0I80m71z7GWG8z508012X000WGKx6180hEGlB8200@204Y0G0G0000
+w700HGkN000Ww4P4X0WWq80000G003000012I10H2Xi20W48v5008rT30R00000RfYS30000
+0810000Ga002WwuIu@V60m@0w@@0q5GuF4RO780G4w0G@zFWxe003q80UlxQK00S@z0uc200
+0H000Y0WFY00ND0@lf0_@F0Sr00w@F0K650eL30G70mD00W@y5000002YW100000Ce1Pm098
+WH0I90g2I0aq0210eAT1eqW0mvv5W2I002K2pSZ3W100_H40yz@00G00mD5m@FYWh6G0ND0W
+_820j900y@l100WTD300y@l1020YKGYYI0C4b0g041K189Y1GIKMWWee241k1Y2W2E3t0430
+0C@W0Ow0Sny3o203u702K704ee080JDGWcx0@Ct1O0W2m001g3W0mO0000X0G04r00Gi2m0G
+1a5WdZR00O2008O00mN1e2H58B020L00Wn00062008g000O0OGK1m002e2000300WefzRW0G
+0WOiJ000C313S42cP6cvm3ym3POcP4KLL9eC@7GPc1WET40G00@1A1_G40e050SJ50ug2G00
+0I5GGeW44I9091J0I0I0a4yH48842912GIG22WG84mmlD04u20000200L10G6HqVt3ekg0Ga
+P2e112WRGCmc2y02EuZ4uCG10_8400G1Spc4ug1Wn7H0mFYu@@4UsJYQxJeT_4wYMYJ@hOiT
+9000WmB00eIEL0100CAz9ZZ@mV@LalU2m000MvkY4_D000qtXvOiRj79YVIkwCiXs99@@0W0
+000K905hJLhj6y_d7PfdmxL642u64200A1lYjrPuOk46xsWi139IN3080Iyfi1V8R0002008
+0140000100W028004088OW000110W82001808000mC2GS26024000400e0G32G02000000OC
+08008sU36FNYNrI00020008eKqJ0100010000W00018WUYxXocVG0040W0080018GA000GC1
+06W0G0H518m0200G4e1Y0008H1G10080L1I0042M0108YI0J85O426GG180fWG0G0W400Y28
+0000Oi1W450000H0G000a1202FE10W047sR0K000000I5zdW000mhXDG00WuQ@6Ctl1zzdmW
+16040000G0090W0080W202008C2Y0000D08204G0W20840008011220P05423600020Y2200
+WC0EHG01201a400e8000W0092G0810052000003Y10W4pD0044Jc_6a78340021000001X00
+000K80WSvD00201080008G00041EvtWQ2zuGP30080G00b000G0X104a8000I4W800008000
+0q016W00G5000W0G48mG019G02K8W0Y20W0m02I00W020008X0G1DGKu9SNV200010202KOY
+40G00oXmW8YD00W0q@@900W0PyU3Uot08060O0G0_@d14G0000m0G0n20010200A12000021
+00A00110G80004W04000800A0000b0000a00B8G01W0nC30W000W020MqF4C0G000G2080W0
+4H00002800I04Y0W0WC00KO00W00gip78400mGW0Co26gxF1W0002000004030000101000W
+040Y48150W900021008410AW000440G00E9G080080ixV30001vG00evVF0K000b000009IH
+J6G0GG0GW10G20WfOOW00W00080mWI0bhRmAwC000100001088002000WC8_Fp00W1400G0m
+0100010400000011080X0220W004004100009800WQrJ00WIunBOqPb1fhP00000280GO080
+G0I0019GORI381008000W00200X010000mC20oFb18000vsR0G00WKKP000W014008000049
+W1e4O0000W11W02G8G0000i04058O8G0Ge1040W8X804H4C000Om80002@18Pk4_oN22a400
+G48080G0H000000e000604W0FXR0G00900Ga20000W8W01O00WPA002W0OY80020001002G1
+W0C0W8200mMMJ0211001W5eW00m00G1mG00YW2a0HfYXG13WW0E010Y102080016GW83AOI2
+0M5DG450HG94X0OW06m0C000Sn1m0XXY10080g000WX4eW19I0WXA04em20G8G40q8000C01
+C0WGH004o800104GG3402088p8pGc944p2mCY0e021G00e000W0WCEa100Y00020004G000A
+10GW45LG1We2I8881X08WW4YC8e4G317mG4TOGnq0Jem0G1WXe202G4IC2g0CYOmWA21W100
+0m8z_ER00I0000KW0K00840800A0G1W4JK2267GmbY5X1201AY0GM4008W20G021K8X280G0
+000A40owF12000002000K0i7l47XQ0fWm408800GA0081GW0fa234Y0G0HA40aG00008b9WW
+1G0WKIH0601000000k6f0W8mCbl1FsY1140WQmnOM@7000e000O0008uOb60800OVV3QkdXh
+vD0000of160aGWGIA18G010XK882040016G0Ae01GIA49104W0WGa440000Gx1G000220082
+400G2C400kXj200G84000_itWFDO0200qUKI00000001ubiCqxe10G00wztWr0D038W1vG80
+W1x1a3G0O001o80401S0E4G44W010000G1m0C0805G2001W02000el60XWG4004wV5LWQGwo
+6i5l1804200000GG0u253srd10a001XQ0W10WUFD0410GI96qu33000200G400GGGa000O88
+00000eWC0H4G0e81020649G4080ue0WGWaQct0A0W0G0000ns01080QXAC0G00ygh1GL846Q
+n0W08181000481080Wm08000000100A8W00004a000020W0Gt_6KgS2LjbmclC00b0000mlB
+804W@2002Wm0G00G0wF104GkNe@6411mnmPW20G8qV102WyN000GxIgF01XGA70GW4en8CS3
+MtdX0_DesQ6M7o000200W00yF00000410rN50UGaXxV00FY000O5400W_@F0jQ10G000agAS
+ZV0uBV5mF_1mhC0Whc5d12uZ7X00G0WFY0WND0040000bp1Ll10a0200mAkQ00ztF0Qr@000
+G00Y0uV41m7Y0YF410@xF000000000mJ70m@0ux@1YCpKOj100m00W0103YAW8000C00WRhJ
+0W0W003010406000C0000200Ct10OF3qnU6W10EWB00WE000t086k4e307G702CCS30vm000
+pF00YC0k00W6hbWW10002GbK1C0000e000G1W1W2030Y68XN0C0206GA090m00KcT0000002
+E10nRdWT10000W1Cu@Tb1400X@@3W20000O00_820yn3Sr@8u@@6m@@1eh60G72fWMD01ZXp
+02AG884mhC0WR20004f00GrtU8W2g00tK000i00_820yH4S325u@h_m7H0e@X2G@_102000L
+bV@O00cn0_5WO0y100O0twinass00GRlWRU6@_a8_D0200n@RL8G00OYSF0_W0awM8L4qIRU
+aCu6Cs500oCtC0G00T4PmDDICwk700WAAUdaxnnuDJ90001002gugS3G010yLg1FcRGSz6av
+h1hIPmRT90200004200WO08210002008WGzSF3W@G0sdlYyqD0X00mOvIW00800000W00Xvf
+D89d40400DFk100010100214a0004W82G001G001WGkyt004Q0010G02000W001W0020m20G
+0000088K005W0800004W00104G40800W0242G00604WK2000QI214WG490G4000W0WG00mMx
+C02000200000A0004000884340000004008408820G00080gps0010G00WW_Cp0002G0G00W
+G8010080139000G4000f0G001WC0ixl14I0880WGW080W0G080W004A00080008410W0K080
+014YW202GW2008014G0e0Y003020g0000zz014008A000000W041000Y_lJW000I4z9Cwb1@
+@d008010G20DXd0000408000060020002020048ODz9W008OnT6c@dXH1DeuR30a00G001uu
+N300002m00P_V60lu000GGuQU3_@N20A000000H00000004G224000000Y04I02cQB1OG000
+W2008000G0We1@40Y10SJG2PXzGh_6W0018W_4Y9t0G0000400opvXAdC0000CS00WnCzOVV
+3sCs00O010010U_tWzeD00080001mxnD0W80mn@64sl1zwRGD26S8F3T_R00G11100G40420
+0000406OEpA_qt004y7Nje28000G0G2TrRmr_606G0000a01002G08808400040202IuKQ3_
+BaXqzCukV3QPtWlhO000GmYj6Kh960tL0csK50H00004W0WX0WXW0008W004W00W11W1008G
+2I003P000100440000C@hR0800WGFD0010W1000O00001W0000PypU2L2Q0444We_D8GS36N
+I200044501k1rZtwJ002Gmz_600K0001521G1W@9D000W0010000C00001X0Y8X0O0230044
+42aBdDG0200009400G80200001000X109002X0002082K01GG0W80G00G00mA02GWGAaOiQ3
+00mw_NQ8HvR00W000G10G00Y4H4aW0C2W8K8001G00214W1GCKW0u0bAm0MHG89O60O1K00W
+00MKnW8qC080801a000G00VnOGXs6CrX1040440151W1W000001G50G410lqz0008O0000Wa
+30I0S30080lPaW20W51WW82801GI0HW00n008K01YO40KY24H0O4A1K00I8WGX000c20L000
+tt_GPo6qwR2pwRmxt6qxi1fZB18W0000WKa200X040000WpsG100W0WgHJesV9I4tWiPbOFM
+3Eab1GXG2ZoQGQ0OaZR2jVR000081000HvaGEn90004be000Y0140aXX000000eT30041W00
+00110042aTXj100OWuwU00W00084000A0DxdWK00WozD0286OYi6CmF3G800snb1008W3@Y1
+007K000o0G0800Z00A000Gt00002pr3DOZOC0040W0508qV300000401uqd4oYp00KW000KG
+W0O002G000G4G8194rT200O000080400eqW400400402uw@4g_sWUaJW100Gpt600I00000i
+D00W8bVeGvA4000Cvf10W0W080m0000XG00C410000WGa080090C02O40241W400m2nVOdT9
+08HG0100W0G20W00mXZJ000eGOp900080800004WU70m0G@5000uq2o2008Wom4hRyMk1F9c
+myi6ShV2m2000000G050000090G000200F8OWD0010W00_xV0EaE18000G0XRK0004pF30OZ
+7X0000Wh6uzvD0Ci0ycy9c100040000P00004XTY000u@@0SNG00_@1mDp00860W8m0H40Wg
+A00zF000W000W101020ZZkPuBE34060SWa1000040X18G010N0604000O0GWXzp0pF000S06
+00Wi000c300WsX000Y900YC02hYX120000W000W80YXhYiuC0X1W102WgKwCOQu7UuFX9xC8
+qw40WW20004418542GA1G2GG44G0gv6300I@NJ7ost6uH000000Wx@B0@XX0Kuk840WVxH0E
+J10W140yF8O0VeA00mtVV10Y800u1GHuIqww3jy@0020Yvmz0KM0Gjuayvz3fX7ok86K9E9l
+U72000Y4JO8CSC000W44_6tgRmcsRyhk70009o7t300YxFwToaUgq3V2R8RGdvC00009JFFw
+Yl2mnA0pgJoryFa3W4Ryn02140010IK0050G00Cbj146W0RUt02W018eW0M7oWVxP0002mrz
+6arl12G00oXF1000eC200EyFXhOJu5@40e05W4000002m0z6a2k1090201W04_k1020WgbnW
+7zP004G0c00080H42WWG0GG00380008009402004002GG0180iqY10H0004G000G4ORV3080
+0000G0002020002801Pzd0006D10000000900G4Ql10GW0o1FX6@JG0G000W1000Hm088W04
+80050002040W0100G20200A00221a0A8IV30200028WG08Ge0OW0A0a20W20WA0200Q00744
+a00000IGW0HYXWX0001940000X0082G000W8W0ghD1001002040G03ixZ1vyP0OqdW1tD000
+XG3_64jW180000010W200m0W0mk460200004301X0200I100220W0G0200OJ33000Gafl1W0
+08sxt00X08000W80080008Oix40200yiC6LDam_xI00002b00GNuIC3734000001Wi1i1008
+W00002009uGV3000830100A0E04100A000HwR000YWzsD001WGz@6080600000WG04000004
+0WAvs0000O00W041O8CI96G001_@t000pc040GW008a0l1lNw14G01100001n0AdpW6@D020
+080014e000N_R010G400240211_bb18018a001MprWn@DW8W0mUD6KLc7r@RWuBAWHZC0000
+WW02Wo7n00000O4052000G00H00WGcOc1GG400G000W00e7H3kJt000G0XgPW00000201bcd
+0600WoeI00W00G00ZOsCuGvA2@F18000000OG102S8T2Hi4200010X00001180W00400W0m0
+20108GW01G800002000q0100800800100802H000WYClV2020W0100G00G4001mwm600X0G4
+H00000oEG31009pxga000200006003WhFC020000WG0003008100220Swd1W038800C02C8W
+WGe200090Y00WW40MGo0880m0H8GH0G10a8AH902W8008H050c96H82AH0c1100p0G_xU0G1
+901W020004a000zUY1008008G00224DX040H2Y01Q0504W40W414Y0GG4GA03O0MGeogQW08
+0KG88X0G15Y1800316K400001H0G0fzRWW2e08WGGA080gRD1800000009100y0U5XJRmsw6
+000WJaW0024G04900000IwdtWDMh0008XG4040W09YW4W0m028002X4W4eec80A0806e02G0
+00Oe2g1C2YX84OWbkDuzD300K0y0c180020200G00W00GG81W2110O0jv6oqw9008FQ0L900
+020200OkQ3oGb1G200000fQ9r0G1G0vUO0041WTtC00G15GW404500xzR00W2W_IP000QC00
+04X040020G000WCIB901006Gr00TA07CoGFhISfU2002005A000G0ubS30220m000H6000n0
+0hWpD000aWG00A84001_R0K00W__D0100010000002000W0404GW028yy4wIoZb_D0000FX1
+0WXzb00m0mZ@6CM738GG004W0G008W88010010G0602020Q1r028210G0044X00404eRT3WY
+0000I1udT60020ibZ1090GEzF1WW80FE6200FjOhE108008924C2W00081aG000100G24010
+85G28Aa400814W0009H090W00W4400W0G840kZt00020080W420b00000308mK_60oI001eo
+00e100m40tGx10W00C0000e706sN20Ga03DOm5vC0a00000q200020W00PbR0I1W800W0HbR
+0j00000B0a00052000000q@l0mcvCeA0ttV0YfCkJ50KL5BdR000u10UeA0in6K500ukx08v
+@A000XWm000000E04COW44m80fW00094L860000000Haah1_G40yV50O@@10400W8k3Gl_0W
+_0l@igAYGW7cmL0CX80u1000W000250202Wi0018000G000GC000m00We303YB8oR3e300GI
+008tR3M5FX1@b00o08040000@804004000808000G0u@@900H60000GJK6CiU20C00OO0OWn
+06301mLlu60004K000e0KXmOuC00H100840000G00G0W0000080mD50m3Z9000k200SL9Z6W
+802G70EgH0iHDq100OcP21t3G2901V7onx6eV05000kg0gIL8yV10uX00800000200pC30J4
+1oKmTkfWky@H0ukR0OdR96x6Z9l310G004100000yU600AJZdCv81101mzaL0000ScI3M7d1
+1000G020shc100NB@apmFy9atV2txZ1800WXoJ85EF00080O00e9xJc_@10GC000000Zb0q7
+WDHhJIjUUycb10200k_c10W000W08c_c1000ie500EMt00020FxBnohO00808Ky4kM@XkRC8
+kt40010qJb1DoRGmu90601000WG6S6iE_3bp@0008_D2mehS300W00400CmUL00001400Y0G
+000e00G120W0AK01K814W00G0004820010000AGgGF1000G0420I8sWxtCeGT6UGF1WhD07g
+dGAhCqc53000WgBF1001IW20WW0G05ic1psQ0800WlpC00002004600Q00100000W26800eK
+80GB4u8iD8U6301400080e8P3cRtWj0h8U@40000HB00uq@400m04Y03pmN1G84400e0Ngam
+W@C0200Oq@4UAr000400080Iwt00G04BhRGN4C8GW08c53kvd1G00Wvpp000DklLnejU3c7m
+WWlDe4y4UdWXCpDufIIsyFjA2KC5X@FXu@IC_V4a@3Hv@FO_l3d@t0YgKcP8XC66qAamzb00
+005K10W_@P8ON3AOZdzlzOIV3_bTZPrb00GsGQ2BzCF9@QbGUtg02g0ujEdEBlYNUhOwuA00
+W0b0e4C100U9m90101GWGW080W2840uyV3G82000000G04000001G007RRmqz6yZi1rqx10W
+ss6tDOOV98028W060OsT908200000G00fGr09qH@30G8000118204GG8G00n0819Y0G04040
+900WW408043X4X08000010W0041q2l100XegZ@10WG0x_R01G000000WbO08000G020404G0
+0W0000818GG200G0yOU2000204020080000e4W416G0K4020W02G090WW00800100e3kDe@@
+400900m04G0G82O29G4WGG40205n0202040W000DG020my0Y002EBp00G00W0X00000W010O
+ei7EKt000G04800000m3M0000040002G800001000K010e00000000K8WRwD0000nvo60W11
+40m028W2X6DDmW080108W8BPu@V3000300019pR3000W00200W10m1q6Kil12000G000qg73
+9nPGqxF4xV200I100I0Kdk1PvRGlQ9000GOu03QLF1000600G08040028W0041GBz6yzl1d@
+p000q000WXW014MUt040007lR004GWkeP8n@4UeFXcAC0204000002G00m800YEt00HP000H
+G005aLVk1lLRGprFCzl1I140W11W0O000W21GGT901402402O0@FW00200W41KW000GC80G0
+0082G0W02W00141W000002001GYXtWm@b0020W080000K043CW400004182W8040088z3000
+010001a000mieV3_XtWoPbedU3G0000181OVn4U2e2G0iG000G006G4Rj14410ATDXTtDuWx
+A0G000GA183@4G11021001020000a1011HlCQmkuLSrV2vXO0ZI0400080010Ist0100440G
+0W020a_D3pVO000008a0000i000G0G4000G40GzpI08008Tz767tWmACOLo40vK00802uqvG
+gwt021100040ktFX8mD0068040000o907zR00e00ZC00mOKe08X5Z8042KA01WeH28000004
+00W8000148JV3ArtWdhV00Ce1GOW00000Y07WG0mi0cX0222G80002308m41KWn0Y5100021
+04G3wIikY1000G1003088211000I0I00G200W000G00X1a02H0A200eO2200LwR04W2GG8b8
+0WWX040HWu840m10142I049o00We200200W0W00G00400G00K0PgdGV_60WH108090W0W43H
+WG0GW04041001WI011000kM1106K00882400W03DiV30024CqU2hTd00A0812J0KYmG1WG8A
+G00ezV3G11GW2030B10Gsq9imj1410000a41000WKG1uEs600G040Y00W00XckDex@40W0G2
+00000G150G4Wu_D0W00mk_6GA12009W40000ma3K60000101GA008MOF050000020020GItC
+KIk400Wb000400e000042000400Wc84200I09G0000000104GX7nD0041G@@60aG0OjR3K00
+0Kag1HdR0e004W00H82000000PQ00000800G0at0IebVC020G10i08ZR3cmFXvqb0W80000G
+C01W80000GO02020D0008Gyl600WG00C0Gkt9W4028tU3O020e070aX88IA09W008G4W00e1
+W1004000GS104e000024W10000400GWphZ12M0CW106a1WG00000H08uk@40G00_u@3PeR00
+8004100G1000080a4Z10008AbXXj@DOXL30a00aal1RhR00W0a4YC8@V30Of10G0000A0020
+000W008001Yxt00W20tr_040102000Y005000800018YN30210yPk18710M@t00W90PhQ00W
+0800W0Wj6840ojWQ1808WAGMBC0WG0G10000O0W2xD00m20060TX0G10080m00043l18B000
+01l0000bHm61000mUXJe2TC000GA2000eC0GpyLykB3q1m@j7W70WVm00010y0W104Vy080H
+1O6O0000Wg00mgq6KyV2sK00_@d1R0W80004WmNRIWx502tK001000_8000SAD3W7I50V42F
+0mR56Cmk40000003000G0W020e7H0400m7_820000G820Y000klz00A0800xYp00Og000O0m
+We2W107Kjj1C700O_100m0m0W0WHGt64Cl1000P8004Z080018000I200GC000W00Wi202H5
+06080L000H100C5000RA0002300cP0g040H100Xop0020WqZC8UR3000Cf004K0O000K1WK0
+I8zR90mT0QJ10040yF80010CmDA0W@zF01k_V20u@_z1z@30000WV2mp_R8p3gGT2CZ70yA3
+0WH000u4y00wl@0qZ8S500u6500WlPZ100uE00W00y@xS200OY80e7Z40eA0QpFM000eQLsK
+L@l100UehVBg26IuKB3gyrWeuDeJyA00W04dk10000@6l2WaA0bRBnrw6Kvj10028U8NbuUN
+T6U3Est020800000l1tWXmhe@P3EAAXn@b000dpxwISpj1dGRGa2F00W0uJFF000G1e00OE5
+3m820ibl1000a000100G08uzG000200202400qOP68GG900000O_0WOmVO@x4Q0d15001008
+W008W000000G40000eXoIOn@70G1102O0040808e020K1Ke2GW04gGzkl1h9m0O80W@_JuCU
+6000n0040004404W00C1020002100GHA2000100002028087jPmHv6KLE300G0084000G200
+0010X2G04A0W0400X0G0AW097b7000000IG0e000GG008900404004W1I6G00000m5J9qZK2
+bx810000280040G0W09C000K00J03002000WfPemmlRFSwV20g0WG0000200080048012y00
+006WG42800G80eSg7000b20G0000102010X6G80CK000000G022400Iy_60G00ORB3Qi73mG
+0G000G000W0001000G04000mjQ00002000G4ld1G010G008yXV5008WG080C@k1xuRG5KFiz
+V20a006zt0000200212zpWGy910G0CG4000020C180000002m0000820004Z300ZyR004200
+20W000030tWrDn8ca4QD9XpEb08800A88O00G0800204WW00GW8moJ8000GGW0200006WCG0
+20080W000000W86vdV3014000404004nh_OCtl10G0022OZWyD8mV3000800G20005GdF600
+10O4hAIz@10a480W900800o0031H220G0024000W6HW40G00W80000G018818000vtLn@@6m
+0200400800080WW0DIk141W0P00000nC18W0H00W000EG7z6W000ez1Fc_t00W0A0000W011
+000I0o000000C83080G40402e80WW40W1GX3OiS830W10_ftWGLh0204b0Og44Go0Ge6AW19
+4A480WW10ohU900X0OH_DG8W8W0G01n4G8G0W0Ae8e8X0A0Wm0000y3404W80A2WG014Lm0W
+X0G0008C3l4Qvd10804000G003004000100220GaxGg0000C08GA000GY0AA00G20m0049JW
+0f8000800XXPGqFU08IH60J4WW3P2C7Ce0I184Q8G01000i51a056418I0260442Ca04H008
+X0G6WOWX000408020820800DWPGpjLyVx39jbGAgLSxF30GA0AXp000WPC90f8L0G2IW0000
+08daIC00G4280100000G04ep@J_6O30G205O_GJe94sM2@@Z1GW0000A00040000021G0HGX
+420W2000RK0120000801G0009aHZ0RSM73jsQGfU9C8x3LAO082102000WI00000GkGc7@@p
+00300040G80G404Y104104480We100GsA020000DGG0O2000W00008WuV2PoO328U30430@L
+Q0O0W00000hlPmkJa0000140GA4H2G02a4I086008021GW000003J044000W0018n0W81000
+Ia0040GY@@n00A00GX000200tlPm@@O4Te1@@d0600W4uCu@@GGV00000Vf3W440400mN000
+WI9g3000Xe3nEpGd0X00004HGWGCmL000_3W7S000100y@RA000Cp40wVT1eHu4000lxP00u
+@VC00050m3F2050WRsK0tKW0_820zH40m8000qSN00@380kQ0k14G000g1Wv1m7H08L10W3D
+t000010KtT0W8YhIi103030606080C000OKTj1000P8000KCT8CC00OO0cnC36301O600OC0
+0WX000uHD00mm00We2O602030404000L0002cQn60GW0W101G6008qQC050u150CZ8m102St
+T00mC0OAeIcM5H0uXE2GLfs7hAWFYGMV410lQ00c9000iYL0W7w80tH4t000_I140000GLz1
+eA04fD6EyF0000@hH00OqcGM7390000Wu40_@FaynJ8XS6QLr30800b7_0a00WHoD0202Gcv
+FG080OEM926E1000ig200EFNYDuU86zAEYRf7qz00WXs7nLiEE3nU@GlUXKSb1tR_Ge99021
+095_7EcyXoSPe2K30is0CuE69ax1100e00nuSQ300120000a00418000010000K5U_qWvlD8
+Ob400W08080Ol_4084G00800W068800mR@C0000JX86yAe1000208000G0WP5T3800000002
+800002YWsyD0I0000080000e0004WAG8C3V5G0WG0X0W8W88W8mGX1W02G00Z0Ie00G04X00
+012X80A0080008rcRW000WpiC000G000C040000WW0W800yhj1800G10020400000p410040
+000WY02G00C00X0OzQ3G8040021000G00A08000X3YR0G021i404Rop0W0000120lyp000W1
+001220K20200GY040CY0W84008I205@R0O205G0840028W00GT3l10009QMrW0pD0WK00010
+22014m02001K04ek1Wyd000400000140W10A00C2000060010e0W000I4000G00213000bGg
+ct00A215sP0O00WLiD0000ustIG0G0000GW0u08W4000040W3400004GW1F004GWbcV85y4W
+00WS1l10W60E1d10080000uiB00aqf1LoR001000G0GvddG1z64tl1G1G0WGW404C0OMU30C
+G04gl1jw@01080H0000a106Kq000H001W800100400u0W1M_z100090004004000040G00Gu
+z600801400mZD6004100WbKxsCiJo308Y0MYF100800W00He1820404W0W8Y0100629z_N18
+WC2000008300040me84G4000G00042000080000eiEV2LxPGekC00080X9Y00W140G0080G0
+510H0G010800WOF2WCqh0000nby60IG000080G0I030007MO00I80000041p0Eyl20G40G00
+200G022942G8102WW02W000G000021n830000OWW08W8sD0090m@h9G00W000WmP@6000GG4
+00020W0001A4000000GTzF30m000100G800WX000118081000220wit08000GG4G6Zn0000J
+LWammuL000GW0000100XinJ00010G20WHyD8do4Ajt00W06fqd04108408000000441000Yi
+vV300qqLiE39sO000040W2800G0W20000408sc4801W808G0IW02002XUVn000C242D20000
+8118K20eYO600JY0a04I0H808e0H69GW0P005e7V30040100600490CG00H8000000500L00
+b940000052G040X0GGG9414Y8000uU3G3y9000800C000e000W30m06WW00G82404GOWW000
+0GG42A000XG000000H4022W52488C409K0MeN200888Ga0K0o8W6LWmK440Gn0G888WY00I4
+WYeG4G000H0W008WjzD0050GwC6W40000O0112G000mK0808KQWA92IuX4WK4GO82G10W000
+uvC00SwS20030EZq020008008KS000G02400000G80000G4W9X0wmbeg290BCmW0Z0K1C22D
+EM1040Wa@JW8I150810Y4WK00004G01GA000eH2GPu9qk_308000L0000G3G0G100G000850
+8000e00000ukT5S90G0GThl1a20042W0y6V54G00YdT32050F@R0G0m01H44G04600040140
+100KmC@9KNO2DTcGOc6084G000003100W000WYG800000Ep0uZ@7G4000B000M410e004000
+HBud0082Wk@J00002208XuChObU3018008G1008723P1G6e0GAa5mX86G1PG000WymoE6000
+00802Gg@F001S0000014G4W20080200K20W0000000Oyq902W0ehQ30802000W000801G000
+002FhR00G0WBhDeCU3W040yBy60I85150002Y0w2K34S410a0000H0010002040XVdGx@6SX
+R2h@R0020I0GW0I10000e80081G0I2000whoWV080002W40W00000I080000Y40OzV3W0003
+100_lT30W0400200A4euKxUG80000m60000SjG@00G1Kz200iRk15qZ1000M00040C400008
+G20000W4010W0j000WU706W@1000021s0I4dX8sVW000GLB6aZO50e20fgU0AH4A005eAHo0
+0G1m3Y0mED00u0003K0p000U920e000000000r2mts3000WV1000000f0O00g200E1000WVW
+0008Y0W0008000SL000y_700Yvd100m@y70027F10yn7f@R000mV0cv60020yxV2eAOop@20
+e2K5my0U86E6406Cf0C0G1O000K100u400mF30WX10302mQ00GfC90m00000Wnvt6qCZ1000
+YK004f0g0K0H103m000W100mC000WpN4_308A000X0002100660Y040Z1009aRGg060m0mWW
+1W102GbKwI8cV90eg@100W0G0sX@hm4rT70UuE0O2g00m10KW10A00uCpC60000008WZxD00
+000000i7WDrD00tT40Y820_820yH4yXgPuZ8GGLF0Oyw60_K1e@@4000u10000Gg3eCU0Gh6
+0WMDWV0uV@RW@0Wy0ylL0yQF0Wf_1000mJcXW56G0kh00_VYYbn0e80mOtaCC_9000OzE00K
+AdDnfl1010XZmDOlf4IztW@sDeZV3UmsW3ob84P9004prAE3ZGnG0n9aTM5rXBqxsCyak7Wl
+40MT7ciJ318Y00200g9lDOgT3QIFXflJO7TCY1N2000K2600MHnW85U8uO3I6NYOoJeDSC01
+000W0000W00000600H0@xR000808100LDRmGyC00W0ODbAsWrWNqD000KIHhL41M2lnRGz_6
+00808aU3kfO300G180WWW04H008GG00K501O8011e0822G1010YA00400124W0G0W0RqRmoh
+6qNV2Nbd0W00aIxD8sU30PW0Krk400e004804tk10008040G008W040000120001002W1840
+m0294Y000Ku_I0W13002Y000280800WH2eWG400AW0001004610X0000005WG0GagV29YpmY
+@C008GeEm4000G4sJ2@@R000WYi@D04020000000e00008008004G02000C8000X0100OW00
+080zwl1HnN10808200G0W00W400W0030W0840G2000a0G080obtWctJO8C3g9tWg7VeTR300
+000003DhwAUAcXxBIO4y400400G022Y80m8zL00OW00O01181000G0W0000G001810010000
+40000820WG00000We00u@VL0NG0y@V5vnP08G420010G00A800GS0l1DbP007o000W040G0h
+zF1H00037p00G00001W0020810WW00000100W0WWE@D0104n_dj00025q00mh@L0014v5V38
+K488080w_V3WG0000GG000020WWW9LVuc@40G08CUk1C000W002Wi000000WW4I00000020Z
+04000W80OTpM00e1jkz6Fxd0000mdrD0W000104murD0000010W0082GGW80Yo@10200W1G0
+00A0030000G8X00200000G00acqYXALL1qD1mVgO000G000A01001W140ds@W000G000O0n0
+0whM200G000G804028G2814XG3c0P8A0108Gm9800XG4G1G4qGW000WsmzeoT92SoWMzV002
+W0062G100089m0041aY0e0vTU3W0G0W40H290G496W28000aW400W00Kky3G00Y50022HG91
+IG402200O018GHAGW0G012A0G00GY00G40K3008YW6fL500ycDvN100010400Y0P80001A44
+012300i0W041008000CW00000H1Ce05YBC800020H44GG4000498zx7_4@1000GnONH_ta0u
+41OzV9cnqWU_P00W0G__C00e40h00m98LKfV200W042004Nl100G00W70avhD000GPC00yIa
+7820G080Yqez30040GO804xV58W000010igl18400kADX0zD01200W00WxnPOC_G004A6p@6
+0K0000030000uoD3kRC10001Y00G00HGyG031@dGJtC0K00wu@4sDt0800100O0_Hk50oE0b
+El1600004a2G180aY00SHl10G001000G0110fAa0GW4Wgxb00S3GXE6yTi1000a6aqWreUeX
+TIYh9XWc3100I4800WWyV0Wa9X0009Z0001c@mjw90001WO00W7_720yr60yVY000100NSn@
+00WkPNXGpCmt00GM_d000xCd@D00WA00083ym3W8S70W930hxO0uW30040yW1Wu1FWhkwe14
+100000ZS@V20me200W0G5030204GOu90m00001W100020400Xjjnn@L0S60O@OC0808Gm0G0
+01eJCv9800000G8f00001e3008B000Z0y2W1trQGK_9mS10qh@10ldhVDyth_2m@z7W@R200
+W900m@@900NOOjdMYSbX@@J0002800000mu@s110G7400GOc70q1mx@60Wgg200Oc@36G4H4
+003V0aH60KuN2J@JIduIqic49@@000uW2oj9dgA_EyXp@b81C3s3OZWlVeRO30pY0ifl7RX@
+GFP6yzD9H6WnXzRSVG5000OoP2ZXtv9yyDW010qXkAzyR000stK7Q140GnRwXKgl1W000004
+8Kzw3n_mm_zUaCk1leR0mO7WCphu_T3G004qzl1640GNdYXpUJOkN9cZs0G0Q04GA0480GH0
+8401m04801WIuCOWK36MNYRtP8tD300G00200280000008s500trR00020G002DsRGHr6008
+0uCT30040284064G0C8WG0G0000K000280qDe4Lko0W44013WK2Ga00I00iaX1010000G08W
+10OV@4MudX@_POIV3080WSal100_ZxpD102000GG0_98Xa_P00W01204400C00800000W860
+08kP3k4f2G1000000t_t00200080WoTq08402hEZnD9F04008oR380W000000qTIG1ZL000W
+0000ok_60000H5003W0080028vZRm4W9aul4002000O42W00eiV302010G000200nYr60H04
+0W0WoMadaxV2nUu1W000800I0402W020000YOxR6wK430WW000011C080H09Y0200000H900
+00G0WQYqZsQt00n@QesO0010eER3GX4480m0SYR3A5t00210nKYnBR6yal1200KMttW8oDuE
+V3EftWTIR1mD0GpoO02000290GYR6G0008kA3sVtWJ429pV3W000Kyk1lyR00G1WdwDu@cGM
+9b1000ei500Qr13008GF5dm6EgGY00040W0K1000088010K10048W008hW40190rMl1XxGIj
+@600OKEX_AC020GW01048gW00GGCE898Ga1G0W00040408000810002080102eh2000G080Y
+W2W48W0YH0Jm140008WA10G800W8001Y240Y00080Wf6P8GrG00000At18feDG2400W00180
+WC41CggEC0W00000822008PoQmWWRCET2W440onb7000Cm600wqkYxtJ00080G0801400bYd
+mS@6yvA6fnpGr99CuBF00qL20E4002G004YwgFX5kDuGQC0000W000X00G0400002W0l_Rmc
+_6ynU2dPSIpl90WB1OyMC000G8400O7T3G2G0W00020GW2G30WluCecAC0040XGe8eBJ3400
+C00W10W00W420W25P8ytJ000C00X10000PI1LiN73G2W0IDt010042W000400qPk1n2VY000
+08m00@YuHwmU00878_YG00H0G20OW0W0G8Y6ipk19Dx10z@F0000Y0K00000u@70upT3y@U0
+000kpV@0000uE30u@BGJ2000G8200WHE0sYs300mDA0W@T30cb_F3w30000um76E604000O0
+80G0m002W0000300WevinmFu6CV69@pR0000Sq200pYX10GGG1000vWp00OYWt7CORxDy20Y
+G40W0I0000_@1@z@t0Wf@1ufCqXa1@SR30WPzC@b000yF0ypF0000UFWA000tPrV100l3e@1
+00000WES0000014zx3rWpJit9K6N5@@R0uQ7WOmpfdkJc@pWPjCOb@708G0NVS5HYp000085
+300nTZndKFCfkGPi@0000400A15V@0000ma2U00mds3TO0000yQbJYKuakubeG_J0T00aWWD
+VXk100420W000048_xt00W8A20200070Lml1poRGmrI800000W0W020WIoD0004I_x6000Wb
+@0WmIx9a7Q20W015000DDj184000A220400Qqz400G0yde17qdmohC000WG138X8A0000042
+240EGt000W008000G040420ejT3sRtWr6DW8000080eqXJuDU300G0MSl100sA0G010040G0
+04022GWoECG0082040G80G0010W4282080004002200020020088W0W810W00002Gr_645F3
+0G0080000G0e0W04220040220W000010G0040408COcq60H028BN6Udp000002030AWsWprD
+00000i02a@@D0ut0G__9CVY100000G04W0a800G0180W20C1W00cW808004020020001H008
+0000060004CyV2NJ_0WGG1eG0200000WW00000001WIQ@6iGi1JmRGKz90400uFy4Utt0020
+8Hqp0000SS0G141000W00G048004GpX_6020Y00002200W2vDuXi4000W00002W01nVzL000
+20080GEu6yyl182Y06tB1W02GG000cMdXFxD8__4EnFXfxD008004W000W0000Y_110H0202
+Onx70040001000G40G0BWP_JG0e00001XNpJ000000GG8G0002020BPpWR@D0W120G00WvmJ
+W00000o0W39C000WSQt900W0ORV3a020yGz30024d@t0400201004XB44IO208G0cNF11m00
+040GE1m000G0G090408W0020100a04090002O80101080SMW1VlnGt@6W200I008GD@900WY
+89S900010000QGI9M@t00418820000040000cvW084008YmW0fF@080008W08f@R0804WbCC
+000W0010YckI0013GX590100OqV30400000800C0001040W087kR0W0G828Y0vmPmvy90004
+ufT3W20eG00GG208GfkCqeb1008000SO_zT20G04o@t000Wa408WG0000300850302008004
+0G00Glw6004GeEz40008CIe1DfdW8c020m0848280WmG0Y00G0G004100H0OfY0KLhMqWXSI
+0W0W08202000420m0IUb1048Y00W80J42WX80WC000O@dH14O40404XC004eU20WG88SG200
+8e000m011W40081000IG2W1W004580H045W000n000G0006mW24000028001eUxDW0000080
+0082WW0Y0102I00420410W0000C1C8220I40000WOAuG_40201800G001mGu860360uo@4G2
+000006000030201000yi58WG0G0G9Y80000pK_98a000508AI2HO80Q8G0G400m1888002a2
+420W0260004e050KC3X800010492401W060GWO2Ub10800LM@W000WIcbeiMCA0s0005K0A1
+0G00000m53K40104004050ZWd0000gkiJG00000aA8002GF@p081000G80PRQmZqIG000WA0
+0mJlFKIh4PCXHnp6SSl182W005000CB000Y20KW2G0000m2006iF100WBLsd0GA841G000W0
+0G410ifU220004000Sth40040Urq0GG00tsd0GW40G0G00810M4MYphheE53400080230000
+1m352G40W410Gg_c100808800800Y00000G02000W10040084000W000O0ul330101G81000
+04mCh90242000G08000W080NjdGog60001OkV361KYZYbexP30a00001G49G00004V9G000X
+400W00iuD3010G0001W1000080GY_9000800510000089000080O00800000Y00010008201
+1xR08000W00MX3@G8B6yNFC00M04408A4000yv0B00G0062096p00W4WBuP0r00000K00400
+0W0629NYUoJOLV30m@00000q@VjF00OtytIm00_lV0W00C000WP0_@730eA0@@dWD00000m@
+y700wvt0p1008W00uN43000O8ok400W@oF00G02i912000S1K0400000D000m000sX@100tK
+WP0u@0mCpHmi@ZGLL51pC300_70_lALfQ4LfA8g2000e000G1W1W00300020yFg1f0OGVu64
+_z304040G08a8E30002500000g000910084000Fx000YK004A0g000H1G@@9002300060gCp
+WLoD8QW48G0O0m04101W1G003W48W09G05GW0A0C0G0O0Y0W04001e00000Os910002mW100
+004ly00cTK04GT0IVr000GLF00u_OzI0Z00000yH70GY2ubV0m0x2mLVz@@40GzL10000km0
+8gg2G0000WGax0uhg0W3FmS00WRc1Wy@D00V1007000WmNsK0HM3p0F10000G194000W@zdV
+000a00G06aW4a0198181G2GIG00W4W4WS@Ff333M8va5WDGB00GriLitU2FktoQsEbpl100w
+gx@MYRvt8gpVwArZk@n0Cs2GJ2u5F_9000G7_mWy@P8cJ36xwXMEX1800mzT900500000102
+02000000Y0100000W1uqU6QjF1200005002jt0000C0084000000mWAdR30G00e0028Hv740
+00LKk1G0G0004000W0QGA304000G0008040G12000000210AzmWEQD01044804000004021k
+oE1000002Y1QaF100020206k081000G8W0084G40G008mO3001u0208090208000WuA05cP0
+000AGW018W0A801400080HIG0WW20a040G080020e021022mCXG420G0040G0500W8801H00
+04mfT90G40eST300G1000008W000WW105000000400300000W0W18G0aWcDueV30G10y@l1O
+000W00801000020Imv901200e1WiW000000ag300000e00GG0083062G000G008000G08k6a
+1000208000W1WH0028G210120020204G00008002W004e1cH5C00020O00W64J05W0Gs_IKm
+Z1byR00W004080z@p001000W8420000J00y@l1W240cwt000zITzd0102004G0G1W02Vs000
+1K08GO00G0i3d10G00H0n010G00G008H0082G0GVkd00G0000i0Dld0004H0W00401102G0G
+4W0imrG0800G001OQz4wLt0Y00W00122qt00G04Flbm@@900m000I20000cVuJ0010myS680
+X0SV@40010ayW1l6b0000XNwJ04I008000HW00NNpml@C4ml1XARm@@9CFc1n@R0820G0000
+00WG5N00W020G000qcwCW0W0eaV3EjpWTvPW000W01001001ByRGN_9Sol1tgQ0080WM7J0G
+00GHuRixU2G40Gc6p040G08002W200qBk14W0000O1SfX1G000000Y0008udV30031000GQn
+y4U1m08800GG00gjtWRzD0002HA_94bl1BTP00W0oJyJ04H0nHiIqBy3W00002000204uz43
+6utW7UC00000OM60W004XxRG6@9000I00000Ca8XY_CO9j4oip0080200GWY9d1C00000800
+8800800004A0W060W0310H4001K000W000m0Gm@CaNV2jPO00004000H010000800e0mY000
+4c2008A0000e80G10W4H100009gY000C0W000I0024LyG28e00e8080A900WKG2400G40002
+004G0300228028204G01K04H0W00000a2P10000M041200H040W0W00110408W018020X012
+280G4gW88pO0W08YV9Qwt0G00W0Y001000W44121W000180O00000500q81W00420H0Gjy6W
+8050C0G0A000000XJ_P0000OWm4G8X4644008e80ukC300100Y2G108G8WGWm@@D0404mFK6
+000902001008YzuD8sM605000A02O9k7ATp0I100duRmcY64SX1ROp00W20Y00021000Wf20
+002u7D30W90SHU2WWKA100I5eD3J0QGEyFCXo3dnNHNYI08000000204HWTyD0010GJ86KYX
+17kp0040A0008y4a800S0iVl1VzR00020W08GlgQ008AZoVbOoO3Aqn00008l6RmknF000We
+fU32rdXa_D0000108W0080CHudGU@6G0882001oD_C8080301000W9i6tJ8_T300W0qHk10G
+228G04i@l1Ngp00002200141000G0053730W01QYp00000400KkvtW_sCuAAL_xd10010081
+201000sQ08OM380100GK0ugE30G0a22Y01am814010e00WHfpmCi6G008OfU3w0m0082055O
+mSz6008Guv@4028100a2fzV6000O20000W0GD180WUqD0000mUF6qfO2W00100000I040042
+0000MjHK00000u000qwF38B00000lScW1tq@mRzFiOl1NsRGxz6u70W000200_lSKztVov10
+0W8g_ik708000m10000cnE0S8L1SVx1000mT0YwtWHkD00mn7u10AG1mz_3H0gyrWkwC0WV@
+70080L300kf00w_t00yD0B1R00@JHAQ6yWF20yV4c1_80qVH0e@WlALfggg2W@5n3F0Yg000
+04000C0G0G0m0W001008B000Z00m@@6W820Ol@4000cv00000O0W0000201000200WC00003
+00020C84080G0O200_ht0GV900GW00WW1G400efH3Uxq02600CC0L000Zb2G2fqbm3S6GIC0
+n402Y91C0I2O0m0m0W18103Ga46WAHa_68pC0000yl@X2000Wg000x_@t000mclyRGs_60mK
+3u@@70m700000qkxK71Lf9N00CW3G023t0n20000005_I0000Sdx00000mAL100_70KW2WtJ
+az100Vf040000m0004ng00K00m@@Jz7W7@@tCpmiWAjK1b1y2w0y4q1uzW3mBJPQsCOMmCb9
+WPq_s3Rr7oBSX00mNBWyMowjYtynu9RRIuN2W@A0f_N10W0Wg@P8CyYwXFdyyPeeDF2Z_XyG
+tujzAEO0ZM1sucV300SL@h96lE4Ic@O000Gg6Q3ELtW@sJugU3000100W0zqz4G00145k1JZ
+R0004001004G000004SAU20hB0UWFXlwV00001082el@DuOg4W808qCf1TXR0014G0200pUR
+mMz90108eo630100022008240GK00000001200HG4qOl1Nsd00GW041000002H0302808008
+82820201100020044I088W2000FG08WHYD8XE3Ent001A4WGG0010400GW00012W02021010
+80H4WGG8W0Y00G0W0WA430m09RnmbwCygk12G0G0000800WH020n8B9GY0002002O01WrwJm
+0008001010223_O000182GY4000084800a0W0000000b60000nAO002KWVzPejL303m0yQj1
+1@RW00101020PzR00W0000X4W020004GasV2000G0W0X4IZ1rzPmEu9000110W0mBy6a3F3G
+800gts00014G022W100C7U2020G03000a40eJe4wvF1001W014000G001I000001010G0m00
+G001We0G032401802080K4K00K020_@N20W9000220WD0CpZ1@gp000We1_Dea930G0042X1
+1zpmoz60HW0OUU300W8200WGU00mUkISCj1082067qW@@J00Y8mfsFqtZ4JfPmOQ6a6V2200
+0M1@122000014kHF1000Gz8d0081004120G0G0168201000nQ@Tb9KzV21uRW00000102410
+00010208000HGmZt6000280z4UJH5H000HyRmrS600400WW0400480000Ga0mG0o0I00G020
+G08C96G00G0W02EitWZyD0qT2mqS6abV2pzR0o00W2UD02Y00008WneCW0W0WW0000000028
+00004yOy3hYRmuT9C6j40010MGF10008040810000WC40820910110800o0Y0000081CGOPS
+3cut0000K4C00IadXNwJ028001082H0W05HQ001000G0G0418Qrt0G000bIQmGW6y2z32010
+G500CqB30434sDt0H000Y00000028200608208G208C842AmP0Z0I921GGGKW840a00H10YW
+AG0010240Y0W80000IH2001800200100404uaC300030049G1WC0W04G8E0H4Y00W4G1W8Y8
+000080GY8080G9GQ0420000084200MyF1080G00WP08WoW40GesQ6_Sn0O4GW@@RGjW60O0Y
+081508mG4W40441004O0Y80H0KGY030Y8G1e2008Y8W400Y90G29000GX70e000XyR0200aT
+@J0810W0082YC2800000442G08000085Y0g842000X0GwcEXehOuOC300K8000W0000500mW
+0qU85D900040A00G4002f00101a10GA01002102a20901I90A2004I800000m1T00iLh7090
+1GA028lU3mW800014G00W002GWrwDW000mOv9CUF30WG0Mjt00400000YG4004Te1Vo_Gsv9
+Cje100G0000W20f0100G02040W800000e088000n20W0028040G00000Wgc0nWcoDuPV3002
+W00G40100000GG0a0001480WX001G060620e00aVJI8PeA00020280PzV3o1FXtaDubV3AE8
+12004Ga000082SUd10100G0W692o052eO04008G00I00G26pt0GU10HjpWW88008020H405C
+088C3709020G402281088DW81O0WGS02b11000G01IW9zlR0W01000000Y00E8tW4_D8S@4Y
+tF100240W080WG0C3l4002a0G200W001080001W0201e048H08008LGK0240G5u6OU00e9L3
+IIF102W0G048Mgp0400I0G10WGG02488G9GAW0Y00GO20qWG0a00G000n8HT300Y10000088
+Y00W00W000m54000eXqPF30008F6rWCXP00m20000LX00000Y000000aGs028q2wZ0000yB0
+0G000400008301004610007yjoB10OWQ0010OK00Ext00GK0G200u0J148d1brdGR_IScV20
+W0J0000G1408oyG0102wB00004yB0_NV00XL0K500ek1ugS200000rt7mq@D0q2YGfu90208
+QpV3y700Ar100000W7H8004m7Y0mhC0WhA20V420kg0_uG7yH4Kfgg4TLL9QLVGq@1WeLL5F
+Su1ggA0KLLH3W@XsV000c8004L02vWp000WmR9DOGS3w@t00m410Wm0W0W18B020600Wz000
+6200CC00uc1sHm0m000eIOu6000WHb00mkF6Kld10008000Y000Cb000e0uIK2W104G5WaWA
+09HH1IYYAW45L0g0O0K1e0W1u923mH4WW2mCG60W0W0e101G102W0000000f2WhA000u_@40
+005q5g1kH00yt@001Y08xV3Su10004_7AeKl@180l3mh_7W0m004000Eq1@000cv6Oyl@00K
+u1eE000WJjoV9000tD8e1cxF0400gegg4KLL98LdHG@1WWEyWPSu1FuX3gIL22W@1ym2uQ9r
+R9McdXnqs0WV0GoOLikDLdo9100WWZbC8p0C400G000WPPL3MIyX9AV0400HMUd4@j7JXlnA
+UR008oTLTgwQJ58G00vm@mXVC0W000W000Gz3W18PuFP6_GYX85Q10W010000001AFjp051W
+004000505pzsWR6OO0430I00KbR2V1R00800K008000eHE0000000G00nsz9y7h1DNk10W00
+000289000000Sei1tbcmrx6G408OqS30010W04044I0mPH6SJh1RRRGTo6W000GG00000018
+100xzO0W0GG0AG0P_O080GG010000cV00400AA8240K0WK090A0Wd1O0WW0040KXG00W04K4
+X08800400I00GK0WC400000600W02G0004W600040GHedG1h9010Y0W1044002X000020480
+8WyBj160W1E6s004G0W0GGkSs000050008001K00Wm00W20000G0W4GOGW0000G00W400y00
+W000mH00000eW2CW0210a0S0440I000G00G0801000GW800001820WL_J00W400G00410400
+00WW01000000O0nVV6ibj15hRGAa9iVj15SP0E00000000W0Eo7HYbfbuBP3IRs0000a_00G
+A@s080G05qn00G00A000W00G0120110G00820WG0WwOC000G01800G1X2nKRmTzI000G8CL3
+Ub9Xt3D8Jr4cMoW@@Pej730010igT2b7a0002k@@D0G4100000GG00RvP0020404G80WH00G
+W0y@l10H4000000G411080800W000m0000008BW0010Z0W0q@i6y6C37iRGR9C4iU200103A
+@1WWW00000WXW0CCV2000W0448Kba12D14gutWb@C0W0200002808801080008sXl1X4OGix
+6STG24100Mv8180002000sUF1800G0004IEtWVaPOuU300G0cpY1L8dGiiC0C0000000CW0m
+7lC0G850000SS201I080021200W8x@56G00m0900OSx40W00iVl1VmPmuy6O0300H40GAfFq
+Vh4ded000G800W0PSnGLgFKHi100O1QEE10G9000ws1800K3F32000000010W8yNS30100S0
+T2@ek10W4aV@J0gW000000a020020080000804eAy40m800W0002e0G4mF80020502uPy68G
+O00m0210008O1102028C4000sMW00n002001HW00g1G808W4010002WW0K160Yg0WO10WG80
+4000800002Y00W17D020GK2t60060n8u084GO0e0100410kOA140044200G00400002009Gc
+q6qzl10020044Y0086PHB3IstWgwD0284Y0084W2080000mG8G1W8408181a412000m_414G
+GWW86092002W0080000W0480W8W4G1G30KX000Y050W2008000W0000G80C0H40AW0W001G0
+1GLG0000E000AG2WX0200m88400_6mWazD0820m@M600000W00rqnCG0e0eq_7000G10GW00
+400e00ecnD009000a2A0KA4W80000C6IA0W40a500W2G0aW800Ae02a00004G008IYu6iqV2
+ZKOGiu64H83dX@0W000000X8001Uat000200812E5@100W0W410ctd14100PYP00Y10KG400
+00eG4000400000144000WXB8060040200WC0epI3420000G200G9GCw68300uP_4e9400AG0
+OV3340008O00W000mct6C3L5ttd00W0Yx_D000G0022G8001Pwd0000XR6D0W0G00000o000
+00Y0m20000a3q0G021q0F000Sm3C0000058Y101000440001G0000O0i64PP22004W08006m
+Wm000W1G0WuNC0a00mbnO00808l43w2aXBShegu4a000Mhk10080kvB1000000ytW0f0000W
+002GGah6W00001G00GZ40b008vsQ00W080W0000H0Qfm00004I8001000W080ehyAK200006
+0W0000W80WytDW0G2GCzC0o20000oGfvF0W8002X0B0000872000000n0000O3W600kM0000
+H4z0021Gu80Srl100M08000A4c28HS3YVc145000207Az@1W006lXp000W00y40m200000F3
+010000KNezI8700000GKYuOCql1Cm0000M22000000sD000Ebf0WoiA0gn@1p08000Wkyt@@
+xilKuat40uZ80m7H0000WRA000W8005q00GL110W0YPcLrnpF8004n0G8W0a1WEQIeAS3W0H
+4K9X1m0008B00i_l1PnPG2S60008I10GC2mW95a408030006000d000WnD00mG100H8mD210
+20W0Y000800082008O00Gm0e2W1G500uWk48Y00G41W0W182020300060C001GW0AW01K0O0
+80m0G0W00v_OGlpLuH400000G306000TYH00Gsy9G40000n2F0U_V04000CJ10000000q100
+00c000l_F004000KMW00CW0WPA0LH15eYF2i1000000oH01qL71mxs60G00uUz4Ebc10a0a4
+0019881HGG2IGG8aG840m3FWxRtof@64JT8000ea500yiDFbaBnoz90002W000W0G0W4yPuQ
+z4U@FXkSCu9V900X0yHY100QZB1dabyPeCVFAxMY1l99X@A420WK@l10kN0wH7cwz8PmV34G
+000W00O@T66sFXNRP0W04GgTO010000007010WkmD88XD61SZepb0200uWy6qQg1BKPmz@60
+KW0O0h4oTvX_OC0W00mqM600OG090014KG00G0000ei1000e6GG08G00005WhqD00WG000WW
+2qC8FT640008002ebQ3000gihC3Z_@02280000004W8YU9100100G00cno000100C00EkF10
+0200W0C0110s_l100G0tgt00W02W00801000wmXug83Uao0G4G0280900GW000110001A003
+000HW00W0010iUc1ZcdmM26Ci768G00000W00W0e@@40400800YvuT302007ml1lNR001000
+808G1O02wt00B400048c_o020W8000GXC000012G0W03000601004G0180A002800G000002
+10A40FqRW00000C000O00C000a3X72008ght00G10401GQ8aXD5POMH60008aR@300e00002
+QWH008000001E010Gm240_@tW1sD00W8000W0G0301PR0802WPmPu_F300GC9000gUoA00OW
+50l10004p4i21C00VxBHY9I4fT2WaU0MEHYZvDOUS3k@N282WC00W8MhJYr@V0040G_z649W
+4NvBH2@60G0GOW13ckr0Ga000004000nvL0Ge6K9400Y00W00001GB7900024000e000000W
+0001moyKbSsP0000Hww9Kos3000Y63CXsvCW000G@S6008n0001W8G0WZlP00040841P800X
+@X_0020G0860RJP00000I4M0ZcZ1000u8S39wJ9080002200WG0mY3F0eu0eo@4AlsWqoD00
+20082a000G4o400UoFX75C8DV32ReYhzD0Cm00801800440200A59XBNV8Ow4AfF10001PFO
+0W0W080000G040430G4GG0000eI00WDvD8CT603WC20000XW0008XgKRJ000e8G08W7yD02W
+0W042ce4yW0W00H00eOBU0004102eWQsP0W00000800KG40820008200e000W00X820W001F
+kQ00WEB8480G450_Sd100G1018cH2heGH00G410mjA90008004300O40ZI5024004821iNl4
+000fMCt0I100WWK0gm_1284000018508yDO2000W840000f4000I6000A0e4G000G85G0820
+AWK00280025000WFC000G01200XK000WW4WT@J0Wa2800GA000afbz00W2o92CW000GTc6iq
+S5G0GG000YA0e01080mev9000G06000001404W0XUd00W03000K014mGW00W80001400e404
+G00O82HG0020YG0G20008O080G0108I0G_zc1WG21200e0080y4d1zfd0WW20000HW200020
+00Ae089wAO8E00W043011000W0G0112100MnF1002000021Y000022OLZ4W2000000a0G202
+20O200A000q0H8eqvk1VmR000F@dvD001100WmajtJ0G0P8AC4G9000A200Emc12000001GG
+00W0000PxLCkPs0G4100000gUpWfMyu_kA0003GY000414W8000mv70TiK180W0GY080000a
+400yfS2lvR0G08atfD00H2GCzI00w30000eN00WsyC8tR3EYF1W0000G0gT0000L7GuDU680
+P70W08oBmM1001Sj0W05pR0G2G010KB000u4685000GA6W4Qzt0a5000WWNs0@Xw7O00W400
+000j000xvB100yGg0uB1ZPW00000SJ10SL0sU_450OZQ0000mh00000mR0000SY80kA000Is
+EwN200m00ucw0uc2uA00mD50GLrCu000000ybP20000mNU0mLJBl20Oc10mC3W1000304000
+00L000Y200@@R0pF000C06000CI18100We6000S06000C000c3008k00O_1m0G0W1050100W
+A000Z1000L70x1Om1n6CxV24C00Og0g0006xwV60004A00040H1W0G000C600mG0Etk2gc1W
+cS20o9S30y3C0KV0cwt00iJ40000yQ106s@3000aF2m0000ug2000000I000000Kmcp9GM0o
+I4001Gs5W85U8OF3KTL8G000m@H0e710Wok995ROoGtWHzJ00mmLCudaHV8xTSI2SLyT53ft
+B18_5WMG2fbV301000010u3lGwCGbGtE1000spIaSm_F7kpGFuF4RU2JnpGwxF00uVfN5I08
+00W0010004G3Ba0001uxT36waXXuP8UU90800000400G0I6x60000SxU30W0Y20000yP0000
+GX@_Du6V6sct000WYzup0000qGHzuOV90400CkF3XORGkzLKml1W08C00W0028004G0H2040
+080000J6001WAjD00W0880000080W028004W00WW0GG148W0YsfJ89V302G0000000G1HwyO
+qjU2N@OGN@C00G08l@A080G00W40000000I20100000O00K00000100930000mTD0W0WH020
+W000W0403KvS600W000m0mix604W0eKV3QytWUzJ0GW0msaRqdV21kBH9k6SqV5W0800004C
+PW1008G0000X00010005L00W71g00008004AGm50hDm00W10m004NRpGv6WDCGO56qxYu944
+k13eOmsS9q1G2huR000hWl6_F8qDUQF1000G006000W0q0W11zdGp_9000WYd00my5fboE30
+08000W000W1e103IltWK0O8l@400SQaXJNFmBHjW600001020000W4a204W080GQ20G00000
+a0GA0645030100aKE0CspL0008Fks320000Gm000W0Y0020H080000022W0tLPm5sC000WIk
+00mo9@dy2db8pG0xCKiL20200O20GWj0000005000000oD000sW20s00eOx0y4WW0000W000
+006c10W2fS20a7kW8581HHHq2b0ubOYW8mC01UG8IdEB400GmWmZGJ101008W10G0p1Wye0m
+0GOGgZef00X00H1O00GzcahS2000k2008580Gy70W0Vb05vk1000200G400W0000vl302mK0
+C8AWG8A04q0Y1W800Y1wDm00008A1eO0045G800WG0WX1000mDww4ECw@2d_Vmg310ksSfbe
+YrU02@wJ00G5jVlnMP@drch0OIW00029d4eKEX4v8eF000203000000Md3001RjqcTB9V000
+0p0eNM000mhu00aHaF00Cbdbc1m700000M508cfkABLb8tn0000ag00WnJFPLVCEJLbHNbuu
+rAsnE10804000000O0_Gl70G0000W0iiF3lvRmO1gSLV295Soa_I0mr0e6MFoR2cr6suVsJo
+j@1000W66006xxa_xDO1V3ol4Z2uJ8H@40G024Tb100420008qS_3n@R0020WKzD00100280
+53W21020G8000G00KW000000Xp5QJ000GQU@6000G0008G3q6yKV2K000Yld10WW2xZomajL
+4fl1G080wwz108000G000810CQV200G1000CkAH20001011230IW000212000WEB4400401W
+5GG40W42G8A0008eW4xcR08020G00020010W04Kgk100G000200Ae00G0000W142110F1@mo
+@CCmR24401gvt030002001c7t0100GG000_Et000G0090080B004020G280060024080HO04
+WG004H20000Df090W8080PWG800XO6a2180GW221110004O0W00001004G010W0G0WutJ010
+01G10200G065u80200KOk1Z0BHl@9i5U2f1NHTxI000G10e00G001800WLZR000gdT699cS3
+G300KbR2XGt2040ehhV00G8GwqR000040G0800040G63000006i0jVk102804003KaS20000
+@it000W1R_R00020G002W010chrWi2sOiU3kZt000W0jEOW0000C000000K00G01502854F0
+G0000H80cW01000000Gq_Y00000020200010Oa@600301W00GXn900W00094HksFyUT80022
+6ud10005W0000022000G1200mjn6qVV5Hxcm5t900W15000080180500004W0004SRk13yR0
+004H00a05AO0J00Wt@Ju05O0W00000W00020WW0WjyD8D@AUkE10G4YjRQ008060000WqG00
+W00SZG20440Qut000800040G0800001000040C000000G0GWW000000Geu33cCd400020080
+wvt0000H000614G4W0142L20G0CLSAX10WH0000418G5YG010000MA10001G041XH00901XA
+2111124804000008G000402H00106I00G2LK050080O0GW0OrR3oxn3004000040040i0G10
+004G8W0W1O0m4000I00048082440YQ6ZMpD0H0100P60Co00YW30000WY711G000AG004G40
+6@gRW8G00020200m001020240W40010300W80W0W000W01I00W011Y102000480@_N1e00Wt
+@n0K000810008000011oj73A00041A80010mCfaI0168000000HPaA00000100e000W4GmfC
+0W000K0298100I90004G80000WG08000058100000KlySIbw6C2@301104010ykU5DlQ004L
+40520014403600A000ic2201002W0000004920000GOez4W0000YG000002G402P000ftdm6
+d600W0uC1CYR914208@@d00K0e2xPu3@A0W00KNk1T6P03n81m0G80008vD0005080802400
+0040208100oxt0001Az9R000m1W002K080420G80002G00moy9iPV8fvpmrv9CD_63zd0Y00
+0415024048CW0000YElV3G010SSF3pTR002020004W00G00200040Ya00091GoAUJuGzA000
+G2000vA@720tWZpD00000Y40XeVg00GG618000C200WWG000000wd021mkN000m95z00000w
+80KwU2jYRmRw6CHl18B40W00la2G2ZzdG709C@@900W0DmzpRlx@7WrN70@7WT@tWg7000Gu
+1L1uD5NR0E00Gh6000000000yO600ugB6000FG10000_@F0xV00g2008Y8wwX4000m800000
+20kx@30Wf20WC203028nUC00000004n00G42WmS7W00AWB00WA000Z100GKB00mD600HA030
+1060804000O0mJ9600Y802YA040e0O000q100O4000W000X0010088000000WWkMEXl@V0W2
+Am@@9uhh08x@4SW00000_de00GJ@U000K0000000uE0000OsP0S6000omq5WeYob26000w00
+00elY2002000000vQ01q5c1200000WZ3000000k910000yV120000m@30mL1eEkb6b53000a
+m700gepfLpsuyD601W0qS690G00004jdrl1Xz@mx@60200unO3G000000HOvV32UoWWzVeR@
+7YH2Z6aD8lhA2sJYoaD02000mK6WC@h3002KLngu3000800mpRI020000G0mUT600400000q
+DV604000400G306ivN508a0oKmZnwaG0G0GzV6008G0G0G000005W000011G0140000000OF
+2000080G01088003G0840W00GhX6GP02uRX4Yhs02080jLR00010040200K4AztW3JV00G0n
+FbFKL93lLY1004800880020011n0Y00000e1800002W404000jZ00Y00104408AW2I00W04W
+84W42I088W0200100004W48W124X04021a000G0008220102010000384800000GCPI0000I
+GW00000001G0HMjneSIW0800G00W00082G5008W00m88X000X0X04000G330G0001W080G3W
+2m021C28K01DI002W040018002W0W0000G810GG28000W0000G2080401000040621004000
+KSJ2fKkHJRX0180uyV3084W040G00W8mvZ6y0W100eTG00202002101mgV6iHe1G000m5000
+000G01C04G0WDaC02020200WiiC01400006W00n8k@JoEy18000HcQ0008YjmCO2N30pi000
+0W8OB3IRn0040WGW00wjt0000H0000500002802W00203140001p7Q000C04200020MUHD74
+000Jub0002004120000004H02002G00W040G01W02O01000H0B0G10GW0004ernCW04W1020
+0G000021004G0040W08400022WMzO0aH20000mdgCW00W04G0Wec8fKIF00G000W08pJ3AXt
+001W0HoR00WcT0000C001WY0m00ma02W0C00GC0G800400W00801a3uUU3400220C002110Y
+G31e00000225000iKf1W000WK00y@FF800WsjF18000DYO00000808X003W04000m212102W
+00000GGm000GW000W4000W0G2EP408Y80000Wwot080004800100100H00H0W030W000000K
+03gJcdS2I000040420000G000110GC000020H0000a00102W19A000GX20O60GG02Y88KGAm
+090IX512Q0XGsW2XC61KHe248GW4001G80WIWWm0042G690G2GW118001Ce4400140W0K020
+K2028Y0Q7TcI3J0020GyE6We11W0e0000I80G0e0W81WG4JW28601e0000@La204O940HY48
+904u0D1808226GG0GWW0GC084WH2X0YY201W0004020b30G0We03AO0Hg0iWX00208G207W0
+8G10m010H0000G0XPKj102850081005K00000G2I12022W0G21081AW400G000G041000089
+B501G024IX0000WG2W0A1G1000WG40000010G410120800WY00Ge4204I52281000WK00X42
+00G90000XdTJ0K00GMkm0000100O600W8W020B7O0D100G1204160GaWW0000W1000GY00W0
+000008978k00G02080000G00O400X3Y42K004N000K000018100J000G80000010106A80W2
+0W0W082B000800A100G08G9L6CpyCryQ00040e00008G80000W022Y0G820Z0000200002WG
+020002WGa000WkLY0022aW804G014G84eW1mOe60WG04000284009W000084IYs02000TpOW
+CG001000040W080IaMi1h3Rp5T600000404GBh6WG080WY0Gnj6030H010G100000J140010
+842f822W1n000210800000G89G010000105000400000X2GX00000G002Wa00010a81Y8000
+G1KG000W4808MP3cqCa@@V000Ga18000u00vkP00W54040v2XwRG08Wo104OGN3Ga0000040
+000aXeM2400Wd8d0o40000q88Q0024mWK0C0000026XU10000y502ts00G68200aC280000G
+G800000OW@@j10e0000000S0000WPK5WPQ30dq4JgALsmSPmyCoW7UC1ppO2p100mf3Uag5j
+0ug2Wd18mlFG0G00WVy50tK00cG00K3C0mg1uc20m@50800000C0WU410jQ0@RJ1_n3gyl20
+4AK1eg00000005e00000n3@@@m0004n00821WWO4010AW90006000Y100cV004P0OCw0a1a0
+W1e003G0GW000024K0Ss100m0WXi2030A06000C000C1KYaL0D8O0OGm0K1G0e2Wm88000X0
+0035006A0p4K0Z1W0K100a500WH000W000230200Wi00W@@NIkL100mYTi38Ku2mk000mRQG
+1qc20e_V3K_g20W2XFy5W0100JGL22004aCROL6CBjq4Wgg2m@Z0WhE00tK00kf0_700yV45
+u@V00100mFo6G012000ml_10WyrZw@V300GhiCeApch50X0Wqit04e0GxyCKLR2LqRmCz9yb
+z3P94LYxRaQk1ZgVI@IdSsj13nt2001Yg@t00WCGEuFqnj1r_dGEt60002e8S62@t38080rI
+N1G21W1eh8XO3YlFXVnD00W080000H0W000000c800000WW00000014080000KQgtWefDeX2
+3MToW7yP001000G40000000X0MPcXVzD00004024mEpg8sQ604W0000W000GGC_600400288
+08W20O0040G480001008mG8000000IU310DpR000020810W0004C4010281800X2808G8040
+000011010002GH00O028041GW2W000GK900YIGG400000I000nud0000YkyCesQ3QPDXgqJ8
+OV6044000W00080qwr6W1040110205W82020204G010000cbW000000cXcWD0100W0402100
+8222X12W0008WG0W800W0004500800WGW0008W080018W00000e00040141008081j4I@@10
+60GzGlHWkX000eOUs4000006u1u5@4040WitV2G0100068yuh1prR000W04040000I0100W0
+000I420H8482000NVQ0400WNvDeJSLwxd100G000001800kKU2410W008G00G00000bn42W9
+_P00008010WGqh00100m0220001W0000G00COC67SfY8000000G82W0oiWX9RJOw_40Gya22
+8G00G8OZ360G8XG0W024WGWIyJW8000G000Y0000WO0GC0000W86W06X000010W000G0000e
+0200004avy@9aqaDrT@mjv94rl1W5N081Qa00GG0000284400008dANHY@60404feB30080H
+010001O400X00484lLRW802mZcW1W10m8yC8008fvZ400080040004000006q3W0000H0W08
+2GGe0A01mSz6ieG2B@p000WG0W0011Q0K006WW000200H0X0X0c000048a0a80G0aDxf2000
+80008810W82040000200GGDy64cE36000806000GE103og080HO8CW0MOH12G094014W0Y00
+G4G44H4Nxd041G00G40G4G000W4XW0g241G8002OG0OW80Y1H2GAW0Ic1W4628c10I030nlg
+202W80410@@dWG000m020a10H450a00400041W8004820M00000Cai2808HK4HY0010840W0
+421028e048K000W0000H000Yrrd001G42XJL89GGH80a0YGK4XC40241H002600eO0800042
+0000Ya02GeR5F100050K20H008W2284004GAe00Y4000a20G0240W0e0WGH0004W0G000320
+0000KLA000a0A10a2004981GAIH0aY000008000o08wV6008I1000m110010001a00DpRm1t
+I00O0usULG0040010We0Y5004400G10400020YA04W2W000C0B4002800WC00K0008o08H82
+001A412000XG008WGWG034000X000X100x@p010100000m20G0008W80000G20003Ww@iv@V
+3oTq005200002018202080009004004WImnuPGVu6GO000Or98S4G00G2000O010WW203H00
+4m0000I0820@Bd0I40WxnC01W101Y208009010000KW000040O0mgD6qIvC040040W0Kwl1T
+0OmD@60G0W0WY000004000W0004000mXE000418a000a2uC00100010WnVCeAQ3Mjt000GQ0
+92WG2a41020X6112YG844210086C01000W089nV308H0ipjA00M8008eB40000W0W10G0mM1
+020yMGl8404q7100G000O0084Hk0000W3000Ga0z500K0zbJNC000Gl3000W@20Xb@000W00
+GT00004v000ywk1tf@mfw600108wD3kjd4p0uXo0000GL7A30000LDJHx90m3L1000W7g2W3
+@J00rZ50tK00Yu3_RW0yrJ84nj15@N1O0G0000W0W6884P51W@l7WPcv9m6000WI0jg2FU00
+m@009dt208k00GC1mWu2a407azc1C700O_10Wu2mWe3a506G70004000H000mvQ00Wv600J7
+03_PGK0m0C000O000y3G9280q0G0W0W001W00201J00000000CL008g0C3m0e20148d104W0
+0O0Z0m0m0W1W10003083208203VM800mfE1000010qVl100egz0WF210006@cW0_82200004
+0008YLHG00WWqC3haMA3p30KLL0hFs0@h60002d5010000_rl0eBV108CB0_qJGgH50BZ9po
+KBQLA10uV0q20xvZnbo648k7PYpGkM90M@1OX_JIf390W003CcGK@I0020uyS3E7t0K08000
+0ue800y2I5LOmG_tRKlUH1YpGAx90W04uoS300Su76kP0W00G004Sok17xpmt_F0004OcV60
+03W00000eC0G1iL4s93Bl9n@xR0000G0080020010G0T@Rm0n6aHb105W0cwR3G0001pO00W
+0W5aI0000FWW1eolJ0CG0mNQ9000G0010010040080ldR020102004W00000X00H0G0W0100
+004010e0000000WkGQ2002800W0a7V2bwRmMz6yMk19Cb0000cjZDOyU60a4IG20W00G0080
+2WVwD00m360G0200040408gMFXZ1C000GW000gdnD0W8G0i00G002GW0G8405802e200X4X2
+2G2G0004109kz@XVkD00W0mt@60014uzy400m080G08_@40048KjF30020000I0eW210000W
+0G402007gQ08O1OW000018W00GW00OW08000020a3dDG00K004480304000W800Y20G00420
+4WX00080K010041GYCHW1W90000004Ua1nxR000W80W00bcdmt_9Wa00OW@7A7CXL_JuPN3g
+unW0@J0308GUzFqqV2BmR00010W008G000G0G00G00082W2080G52W08411W280Stc1D_pmQ
+Q6auB34008MXNYaBJeJG3g_V300k4LOg2020WCgDG440GJ_600080W004Z04W3pd9GU3okZ4
+1Q50jfV222WO40000YC000H410WO4004G1@90000uzB6sBNYkSJ8S@7MiNY1_b0000Qk0RyZ
+l48m400081SQj19UO0ai004004000C2hNYuwPOmvAG100kFq9xpV2004900000404Ict0040
+WG180C300002000C00040b4Ps000Amif9S9F3PF8HNsL0UK08PNLCm0YOG004600080Y1202
+1004008XeG000W4000EK1WOwJuwT32xF10C20xvRGrzF84H0OrJ3kno3000mg500Uyd40007
+65GG016WeAW4GnCZ08W00G4OHWO60WW41GH63PwQ6cit008000008000I120I0408rHY9ySV
+200A00140040a20085e00WbpP0020mKP9000000mErZ@d001G000WW00GA0000W40e850G20
+W00K0000040085000G83pFXMeD080a002Z800204100008010000H41Gdp6S@l1000H180HX
+8G0OVL6000G00Y0OOp70nI0arlA00Qi058000Y210002Y29X7pC00G10G000P0003sbmDQ60
+8W0OsR30820arj1Hem000G2802000D8wXb10002hkQGzPFe2008@tJ06002411002140Y0O0
+9006WG6000a00Y8GW0WIxxLinE31tNnmkIqtU500KRgy@40009Wq0I0900020aGA4G1000K0
+00WI0a8140GY81000WaG4u9u02000E0GNv600g50000A1eMWmlPe7X402uj0010OAP6K0000
+060Onu70Uy0Cu@98R62002l000100HW000WU00000S4O52000nM00000meB64kS2Uz00Itt3
+00G40yQ10000ON00O0iG2Iv400mh00100e00GzL3WO@30000GH0000uV0W7U0210y700qbl0
+0W8mJm00831WmS7010tka00CxWn0DudT6GS10my3m80c7000YO00084V600ehCulA4T00OO0
+wmC3s301W1008A000X00025006A0g000x1marU8300OeL6Avl506505_VY004000O008WLZK
+m00_H40GW51uVP0G00m000Ga2C4Ql4xsp00G0XfZDuZjAgMsWEyDu4V30000f600OGRggttW
+iaC8xy40001Mol100016c_XbpI000G020000G000WG8s1t000jlG400d0Falkb8mRF0008Kg
+93TZd0009WOkC8jC3IGdX3mC00000128020W020004a40Cjj1WIBXMs_aDe29TT9YKWXVqDu
+Zz44004io@9000WpPwa0e9fwz4oCp000e2ViP00006044eW0010002008GuAB3YAt0W00400
+08UTd1G900e000000G0000gHQ300uv10GGCcM3e000a0l140840003KSV20080W020q@c1zD
+R0G11G0420dJdmOzF002020000018G02008W00ggNYZmJevU34004CsR2rqR000a00W8ZhlO
+02000mA14Nrd0Q8W008110GA2GK000G80004021YG04W006f000q48324302240400WXUC00
+W04202Wv@JeuU6W100TUl1NTR0O000G108W1008000G0G0I00000G0u@@D01W0080G0G400A
+000Qvt000i0BSR00A001100xoPWg11401G000000WGu0W00G880WG2880008620040W1Ga00
+090CC208G2G404101020I00000W0010084G0A0Tnpm0x9asl1G04002e3ibF3vzRGOh6qUZ1
+z3Y1010080Wm0280czt000aF000Co@t080G000010000I08Auia7W00e0GG0010W8200G000
+G0680dgtW13huiVFgjW4002E0Ga04H40000W0X000mF208GO0208GsjnW@@DOZL900002204
+008210WWmRfD0G201080eA_D0100my@FS_s6ldxn8i900G82H0G00I2000G4A0040014G830
+000G0G410Y0G0G410__FXTxJ0000GnW90G0485l4000GKR_CrbW10100000840002_tWV_D0
+0WM541000220l_R00G4Worh0800GHy90220040O0001040000W0W004042l4Pbc3n0W0G004
+W800EdtWEQC0G3B2020002083hRG9eI0080ACV3IGt002K0NtRmy@6aPe1XwBnIY9Sjl4010
+GQkV3000m0280GGH01W0G4YAM00006000Ga50W0I83BKO0008210G400G01G401ozd1014G2
+04G0080G0H140000GO21001Y01n8G00080800400840CmG2huRVLUvF10X3G4000G08W0G08
+YCY82WW00y40000_ZnyW3W000G1C3204020G4Y020040G0ail1004G2LW100W80528010K10
+0K40W4W88G004I0008800000W82yUGCE2hYAdh000850W0200G3a200e4GY000uy_V30Qw20
+H02Ow@40500_mF30G80ovq018G03pP00W2Wo_J8JI3_u_XBLPeCA9G800Kzp600408QeG0A0
+1100G0700WsbJGRW00001WWoD0200GLvC00G0060050014000M0W900Wc04ql1m200cstWVN
+hum_D2_tW_VtW0082000DH2001@p00WDcpFIe__4QkF1110000080011000W1O2e002a2G1G
+10G00gCda6Yv9O_703N0qd_3DANHU_9024aAo@4M@lYouD8uSF40000060OZV900zb00G0tB
+08GQp600Q000i100002uJaD200sIJF1W0H000XGIaZ1000H20000W3m220W0WX0mOnFiIZ10
+009_@F100eBbnJoqQFKvl100m990W7A30_06FKbHgl00sH70SK000ODe00@060EgHgFV1SqH
+0ecQoqc10iQ05_O0000GR_F0ehE0000g2@@00004o7Z9y_l40G41IdmZ8mDOZ@A0Wv600pF0
+6060C08W4nD0W000m97008w000m0M1m0G000I200cht0YC004H080W0GaBk1000YK004X0C0
+K08000m001Y0061G083W08I01ODR3cUU9Qg100OaQK3WTe307500015X1GQg1W_mWV0007v8
+H0000OY@1GWU@h0WRA00ND0000U000@00W2miC5K0bAW7X30cdXM0000yF00qHjPfNZKl@9K
+sD3LXRm_HX0000Clz70Bx0C_l100GGQ8VZIRnO2_SUczaLdDOcnG2fVc7qPO4T6AfFXD_z08
+01mo@C00uMFqv4wn7ZvrDepz4csDaQnD020W2402000000O41_@d1X2001lPmjlLiHb10002
+0W820010014G02000WG604440YUm04101000G0100G0W0001000008a0G0fad0080G40000A
+20GW288000G00400400100008W0k@@1HW000008G0014wi1vtdGLw6CJl1bVRGju60004W00
+GGiu90200G003000080A40028W000WfQ2WGG400W0202401020A0000GW10G0060a00002W0
+W2200842eW82G0511WY08X8mG0O0G0G01GWG0QsU30a40CLg481000GG18a281000qPl6040
+0e5V300E00W000030W0004000GRkR00G010W00400000m24yk1410H804Y800a0020000xN0
+8eCG02W0100W050a0X00GW80480101W200001aGWI8002K2e04000440003008WGmG00CW0A
+010W0020W10G00A802uxz7g42Z2wnuwQ90W00Uzl14002110006730800mNS6CKl1L0OmQx6
+iYl1400GG01804150XI0021G04201ZHQm@@g0001yxU9AIBXGkP0W0020000G40000084G20
+1I4G0000j510W9DD04022000Ge42004000000200W1000800G0W0M00060k2t080000W0G00
+00DUk1000H001000050008osYUqYe1vWpGt@600118TJ900H0W800W04H40W00006008SF1G
+20Kyl1000M00900W8000400G0K0400100100920008022000988001000WY0g_t0G2000050
+2MFXkFEP_V6wClY3uJ08002202WNyD0yw51008G000W01108008atl10W10@H@1482009040
+0G80004G0200G0100W8YGW011008m0GGeHRCwhdXTKCuPT66aFX2kbeQU3gxt0000Kyc80_m
+sWVvJejU3400000001I0004G0WTwD040a0a01W3zD0180KS@6W080010WGZPRSjl1G048e0G
+041@3dcN100W8000WG0400eEZ20fK10O100WN64H8GW202048WY0Y8002G0081000G004G48
+0e108010m80G5t60HAcnGCW480W0O00081G8C434X89G2HaG0K2W28C00rhPGM_O00801000
+40W00000G5@d0414080402400Ybd1094001008oGo0006200K20WG040000sn84W0380G0W0
+40402a0m0KGWW408C1018102040eW21044IK2YKaX2G0140008I80X0G8X8008I880A00882
+044GH010X8W000AG40U_@10090FyR08100I10000200WK000GYyCEF0000A000G0H0000GAI
+1Q4I040000WmF1G82q4a002GA02G2000e20WDyDG20000WI000G2420f024o0008WK02b4Ie
+HI153200052090000gqrDk@t000084812ZOt05220Btj1G0000G02000i060X00G01WWH4HX
+2000vUHzO0e000W000W24G0084n00001000W0000G40I0000080W80W0KW8WG1400088o00Y
+G40W00cn2X005044WNpmObU60W1105080G0Cm4yX00000G04000290005000W4m300E000a0
+30000000CX0W0040300C90082002102G001000W8180WW01W02006G0FMWHC0W9G01211m41
+0n80442i29m602081I_tWQAtOxV30010KSf1t@728020G0200048400G00G40000et10WRvD
+000W000G0e820Gb49@@t00G0402008040W8Y02800W002JW24H4X250WI0i8c1LhPmN6R001
+0G10000OWU50G88z50AsC44110T3P08000000z20000uB000e23HW004GGWOsD000Gj0W000
+w0aNxQmMw600o4103WaHe@6446xU10X0G80u0040ib0W08lbPKsOjz7if00ivF90KHL0000W
+XD50004WFY0GtK0WM50000D20m7H0WEwW60G0tHqV_820CG10OM000Ye00000080WDc180A_
+t0vCvV0OgMHZnZZ3fR1DyOf9uPOIrgW0a0a084298008MeA0m00a0d1000pP00cv0k087y7w
+ZtWFqPW010000G6cP000G0L000Z100C5000au000Y8000C08OK1O0W0K1008200G0000JA00
+0506YQ0C0G1O000o200GCOImy3auv7mlYBmUWV0k0JJO0ccE7eD0O0R0m0m000WnIcX0m7H8
+rLC21@100mc40000m0@3mRA0W@300WiJ000000mT82012Xx8A6@4oLn00000MNV0OpC0wz@1
+0008eCpGGPcn@m@WgKb7CR61CZP2u1j4mSP0WvoGB00WMQrpsFTKl1m54Wse5A7ECAWGYN1W
+14004000Mg000XXdmMuOCydJzKs20040001ovzT500WWADgO7z7U3tZCqD08w1mIx9afE6@Z
+hIMCC00100808G1yC47Q20200cHkYOuD000W00020200100W8G21200002DAG8G002A00100
+09010A0W08GG00KaH600020G01gA0040088000100A0W00093S3_atWA0C8406oeEXvoD000
+10000g6bDOe_40040yMk1vEdm8zCW0000K04KKI60e002G0100WiV001G041e044I00AW01G
+01040924K42W0840018YW9I840180000e4K0201040m082200X020WA00400TXRW000aduVW
+00G0G08040W00200080W00G18JU3000WKPl10040420WS@V2RJp01400000WG0G00W0GG0W0
+464I020000f23456WGu00GW00WWGWW10013m30aH81W0e200040B0G5OY200004g0O090000
+0O0080000W02m010n_R080020014ledmG@FK_T2FBRGqra0W0000W001W1WS_D08021000GZ
+200000003WW080G1G00onW6Sel14040XA08W0G0fKV340E0W08GWG088000020W0F2V2a00W
+nPCOl@JoSt0100008H0o@t000bb0W0000002800u8U3oZp000200W10W00e0000600200G1W
+PhD000Go_ZpyUj4JONHVz60010120G100W0080GWCI000008O3Z01W0GuU60GC00o02GoX60
+04408WW000PW1yD08O00G20WN_D8Vp7c_KbRWP8UOCGG00002001G0000100010000p000GG
+10W08X000G00G200W0200004000Y000W001200000DRb000W0G0KW008W0000800189uS2Gd
+4000H00040080LJl100_ZW8004_b19lRG6_60DH0vI23oVFXf@D02G0GyCj00005008mo@6S
+ol1ZnRGSyL0002000W0G080044H202Y00B01820W200001WH420G020014W020A00o02W800
+0000AzcO000a4W0008W0000800KXn02040G2000W28Tmh2060004400H00cP_4808020Y08O
+408W0650G0ee00A000Cg3e00L110K2WG800bWW000008W0W8W34L9OaAKeJ00Xm8GK10K000
+I5001800014028G100G410P_7200G4O2000G0fG00802048@V38W80yvj1Bxl10e0000L200
+200WKIzSl100G48L000a00002400282Y0bK0eK50G0I900005100fWWCc0f9aIA00hY000f0
+4OE1000HA00G0W400oSz4W020IGI000800WO1eMV3u8000002vbVF0004280W28WWaeY38G1
+00WwDGMAt0WG60G0C06wt080I100W0W00WGC10I8022G480G0000XW2000Gn8G000O5oujd0
+00HW00000H000000D0O0000WCGzW0000900020C00882011W00YW20001y100W3030WG08F0
+0W006W1G002m90201C000m0KW01O00000G0W8W00823G0420C00OG00G440mAldW0H0eux7M
+jt300040048000G21000G0a0I18HY01000I_50010000m0G000W8G0010200W40400010002
+00WGW00W20W8W008010001GWG52800G000mvvJ2088400004WwJ001ao1YE0100070GW@zDe
+qD3cq5Z98CW00000fFYOuC0COHj00018w00nzR00e70000W6X_0000Ww70001W040000qF00
+00qNG@4400WV1001000AWKrd100c@R0g8nC00020W104002uc000WTD00Qr000H0000VvZS8
+J0C0WAz0SL1K70x_R00kf002000KG1YJhYu@h000Ok30003m500G600W8000H600YC088cWf
+LD8GwD0004204CI11101q1004500mK0004k200CZ108A1mmC6e208WA0002000Y000EL00Cp
+0gO_1nmP0L0006100CT00Ok1sTcE6ZXBqet60m3CH@RA0GghAp@0WW0J000000q210WRA00@
+m00if0kZ84yH402000qZ@3W400G8_Gu0007WW00i5k1A0m@y7W10WR0uYp4Qq7cSVtezQ9Ax
+B10008S0006qFXA@OOBx7opsW3j99@46Amp00W00G0002ioWi@V0G00mLm9q9F6006E10000
+002wjU6odt020000G0GwFOZEuX1240mEJFqSV2Jv9nisC00U100000224WAbheb_Pw3C1000
+00880UrtWkvD8v_AwDFXcptWR00GvVFaYk10050wHtWgjD8i8FEZM24000WX800000zpJ200
+24000GW0408CS3W0GG9WW0OfP30201qCk1xcP0100Y7fD000080K0000w0800010020H4W01
+000cW0WqqD040028008200G00WG1200300028X0440180140lAR0000mWtDeKu700G0060Y0
+00848000008008088010008W0C10003104000W8200004000W0120X0W001H10ZM_00W0040
+80J7c0W0000v6GGW0a92W0008000G1mtR68Y02051GW82020400lbR004180004020W0I100
+04WfSnD000I10H00032200L4W00041e0W30000G0W00031101G80880006rq0XYY20109W40
+W4f03000G0210060001G002000G00Z000uW81201Y20G040e4000f2W40088002G01HW0G80
+I0102000e14003000PG308X030W1K10004020G100iU13FHw100080050NkR0020eEhD0Ie0
+Grv60100u13CYmt000P9040801428200eP36008W80W00100oIy6W000O8F6ImtWC@DO_3U4
+0GGW0018vYG0MX00W01g5V300W8Mqk1G4H208Z000o089z7YVAaHSn0G2Hqg_60W8Wex@4G0
+00qOl1m0G0Mek2G000W0000001JQm00000100G00008HjmmSs6CqQ2u000o_y70008XT@GJ9
+CCBw600wM108O04000W2WGDvFqI531e2pghLyS@30040020G0G408RyAceX1mh4001000e8W
+aUV2reRGfw9C1U20WG0IA87W4WG000204100020Aex401o002W0OPH6Uul2000Ss08GG8080
+0W8b048400040G8081G0wkt0W0400082ktr0X000FJRmfip0G00elU3MVa10WW0003048612
+002K400mwlF08000800q@_600e20W8Y2eWg6GW0000He8210080000YG240PA10K5NuR0000
+G000500W2YEc4000K0G40cot01000W200U3tWFmJOWu48504Dij1WCH0UR@XEiDuoz4025Gf
+041GW082f00090000004t48100W0C3G0a00IHACaYK002f8K1G201QI000G22ban9@wp0290
+00020000OFtFXDVC000008210W000dszGA@6yOW1S502K0X00000100GKct6ilQ20040a104
+X8G010W02020400G8XDOmoLU0G408hV3Iqt0000100024000yjx30G0040WG0030000C0c00
+Wd_b0400000W0104000_b900Y128WW000000W01600D5a0C10G282W1@R000H34000038O2x
+nWShifzV3W200qQV28W021240Kkl700000dt00000m002mi76ChT240000m1I002O0Y41mbu
+6azl18200Y6WX_@b00G20001qTuPG0052YA0WOuCO_@4wTp00F20jqRGiu6W100udv7000C0
+000Zwm60000Gj0000005_Mp000008A00002E0008G801004WUd0G18@5gT31W0K70WG00GYl
+m000600m130@03N100Lyp0m01WTf31WF20001OF0G000mL5m71A00000FF00@2A0U000yY80
+0280000mL30mWrm00Y9OnT3IHt0800086008G00Ga14v0Q6000cI008kvD3Y5FXuZV8RS30w
+H000YA00cP0g080O0G07vO00000Y8004L08O_1g0W3u200e300mS00WvE00HCWE000P08LQX
+000C1GH0e_V3IpBXVGnGHH0eD50GFYm7T_@000KG20000uBeA0tfHu2vRR900Gk7jDLW0WW0
+008aRV2N2x1W00WzzJuO_A0p70ajU2DqpGYu90W00u@wAkr7300W0FVRmN2XKIaAs500cKZa
+m@c1100m_@X00W000G0GH@9SrV500C5salYQuJuzC3_67Zies0000q_t6C@V20X10cC@XjiD
+W0W6mxG6SIl1fQQGev6eW000000083d0000Y000G1G0000K50406001W0200W004Gpas00IW
+00012000124008SG3w0tWiyzG050080000088002f050GyFV20008080G000W000mmau6W00
+Wev43ofF128000200104000W02I0100006P34G02G101000BeWgoU34400020Z091WW80800
+2G0e0We000508002000300O80000020800000001PMRC0002W50028280G040W48ebhRGrx6
+qka140000m00000G00050042c6iP08040i00WQcC00Qm1000000j640205G0W0K0O1m063H0
+4080W04G000A0O062A000020WG82GH0400841400We0G0120020G00I0x_QGC@94n@60200Y
+WtWtIDe0v4EjnW@@D01G0GK09iSl1DfQmx@60Cn0ilT32us00010W0200080G8G400010100
+444000200C000CEl1B67IDzICGe1@wBnXz60000yfO3wpNYJsD00009b10W@@J0W60GFn600
+4102W1Gpr60e8Y04000001080W0TyRGUrj8000OLV3AgL2001202410000ibl1rcBHk@60W0
+SVaV30100abW140021400010040000140400W08Y8XG0090WCX40002008pXEOu4ELA6L200
+G80280EPCX_rb00001G43400000O602mtWE_D0040000400880L_R0G282H800000A08O000
+04grS3_OqWhhRfN@4Q5bX3aJ8UjA0GaGCqk1000efE00Sxx3bLQGaP68008wvS300100180G
+201mDJX48t34000420WG200IK00m4@C00O8020210W1400200280Y0_14100044XG8G41G00
+000BUy660800G5000I0G4G0G8000GC200GK00040GX8c9GpC3Cu04404081A8G4000000emO
+XLv5D3c8rWNuV00003G28A0W1008O0ZIz1004W000H0040008G28000uJ6W7yO001400a060
+80W0OY04G010rG0002000K0008b0OM21CW8X04c1000GL_@R001W008000410YW80K001851
+00000W04010000c8500084kwc1W100W200GO20G00800G2mV@90W800008514WGc500000Oj
+C00irl1G020098I1A0K4G000fGmC8a00Q0A04WIAi2l10W0100020aIJOih4UGSZcrDW4000
+00140aGi000G00WQk_Y18mG02VCX_zJeU@700042C000KW021100005000KnA8q000Y00200
+80800088eXC304002000110G4001008200240Yh@400C0G000C0GGK@l100K400300G0Xuos
+7_NB10207XNNHNx60L000G08mg@F002a0S209000A048400W8y000qAj1ZZ0300000H00byR
+W006G8001tiNHP@LG000eUO3E@t09200NTd004W800000O01catWhej1H2G000GWmmJm1000
+ITWCtG000w5084000W20u@V300P20000A6E3000043t3G000000a900000l000WtqYuCeNU3
+0W0mg4000ujGFP804iF200Y000G0000Yi100m618o6101RX_VIMyLGJD0u@@740Wh65l15V@
+00MDWMpDmL30eD100Gz9000000uc2SxV20WC006000000K600Wy3eAp8IDg1mZS4Wxe00@06
+0_13g700qT49xx1H6000004XXRGuR60004n00Ok3a100e30@@d00aL00mK1m000W102iAj1R
+kb0H4000O04000L000c100WEWN38Y00WO2W007W0000300WR000pT004h0T4r0O0W0m000W1
+000G00We30003e303A3N80C0WU4100G0NLtj70SL000yRcw@30OcR0eAR0G150Wg0WDqN0FK
+b3gl00rH70onQ0a_20eT4f600mTnGQGjvsCtE3BL7ID@60u71ucrSs54ZxlJ009000040908
+0G80200008W00u@V600W0sfl1tLcGkv60W00400IGlj6W0004000a8X8WHqJ8N_7IJ4cuhtO
+UzGQPtWWpDepO32Ht0002000qM1G00CdF6VX3p4v9igk1tOP0020408G0Bebmiv900001808
+0000XWlVOS93IDtWcAD0Ks1HT2HT@k1400001041008G40108G0YWhD004WnLw9080024004
+090000A000W06qo01040200G4000WW9WOVT3000mm800GG000001ahuIGWG00010WAfC0G00
+8100WRgD00080088G00GW0e0100008440OIO90A008000084m09002LW00GW00K008000Y00
+J001G000GG00828W800W080001nY0200044180W2501aW0080G0G008C018042YW04G02000
+801000242000ns8040000G0002281000G0010G00008W0G8W08g104MY020A00020W8O452I
+H0QeW0H0W1G0003G8h_RGUy680000024mJXC0X22002L20W0020W04WGG0We0W6G4W000W04
+G0a221ZSR0AOW000808EW10m8430030230A000009W000411400Col10W00W0000mB204X00
+001408104W10G004009W0008004G1W080GX918XC000X002WmA1090Y4a0c100m10HH001W0
+84G4_600080000o9_6SzM200A00004002GAbF30G01aXl100W00080yYl1W10Iw@tWoFIG00
+WW001110G0AW00WmW02X0000101000sqrCODF3sH81G1040000e240qrl100080100030G40
+800060008008000gidXrmb8wV3MwtWhlD00000WY82000020020000W2061Wa0mFT6S3a100
+YW00W0820000G084300028Y2004040000u4jYV3080G00000W00OXy6W0020210GtK6W000P
+EV32Ws00002j5R0009ifYJOz@4AstW0mCuz@40G0C0003OgV30Z84080000f00001000212W
+000022009411800a0G41800000G8000adY1fJRWW57eUyJ00G00420WbzD020040400W00Yb
+4Q00W00200W081G8000W0GG000101mGmYzV014GW020WGlJ8tx4gBt08000GC006VCX4pJ00
+440412000G00480Mzb14000000G0G000000oY00mAuC4Jl15mR000BWs@DG21009W00K2000
+80000G4yAl1020W2s@1G00100G0_5CXT@J06G000G000028htR00G00416008008I80G00me
+h@4Ent00W087iRW000W4wD000@mxuF01002880mHz6aTl1N@R04000180000WKW402040GX1
+00mBMCW000KW0009010160000G000G0qai14200000830Y8022I880900000WA21542Y86AG
+4G26000WG0J00GW490000e0OW00030X2003XG4208YWH0a08Y028a01G000G7AGL_R00mW00
+008G08000H10H04001008W0980G0000C0GLG002n002F0C80018H80W3001KC808604W0000
+0X7@C00Gm029W45IWKA00W00001G0WOtV30GW20008P_U3G14n8680001010G401GYY226jW
+1I48O4WGW14eeY001WGm28Y008Y0KrX1W0000G000WX00000hp00W2nD00W00G40224G400G
+0002e0WI202G010W0nh@DGG04840408C1020G60G4380000IG0Iur60W00W2A000W80G4000
+00085000080000020110D8bKOGX00002i_c1a2001Wa1GAe00YG2W0aI000GG200f0008040
+aYK00f0080IH00G0a0GaK0200200I950W42I40000IfJFb1080K0000Z6m010000824020WG
+Af0WIA100a22000W004f000AYK0WY00G4408Wg@J0X0000a2AWG2a080G_@t00K842G10128
+000610KW00021241080020W02W003A004W5GE000O220040qeXI20G011XWW0G0405YX0010
+0I60eHi828W0WG4508000WaR0kHt0W0000WGe0204842400W0m5@60C33G8202G0W040000H
+00e900G0G000G4mEY6yol100000G60000W2800WW008880C00H0Ixs000G0A88008I0n4S20
+0PG00Ia082010620000400X20C1700400080004401W0000G00Q000O8422WOOG100G011O0
+O00040A0002U900v@RW090WnvJW0006W800420I06020100202218e120Y604410G00G1WW0
+0010exQ68208Ctl1880nEqF10000m2Y0oRrWh@D009000021C40800W00H0002G004081800
+09GXODqR000900405@_R0W018400208G000Wui@l10048txF10080dtR08WWWuvDW09020G0
+4G009GK01000W010W0000002GX@@J0A10080800000000g10000K10OaV380zb0X20dBaD02
+0W8k000000840020s2a000s2w7000WuB00020G40001et10000NXU7G088z50800X000000q
+7006WTl0000cP0g3tWEzD00G60100GCGj0000K3ep000WGe@60S0x@W_B8000_Id86000830
+00GzS9qlf140s20G0ih50006O000000O6007Mp0000G10mEYughan9d0G000Wgk100G00G01
+sOo9SJ10qk_3sK00YXB1000yQ400YXB10m7000W84FW@300Fey@7000@@@l1ylw0UgtWldV0
+00Obg0800000000tO00000CCM100W3K100e300GS00We300nD064L0C0u0K100Y200O600mM
+10WX1G5J7OjK0C000G600mS70WPE03pPGK0m0k000h100C70002l@WR010WG00102W800W80
+001000_P00040OO_1G0W3u700OF00Wv000J700cEWT4LWe0G1O000m000mKiy60008M180W3
+u20IY10cmS0EuN200F0_xF0z2AFOJ10001SZ20y3H0ugA0W845WV1ZRQK38204kQ00Ur00yn
+@1mzt1mD5W@00WRA0W9@J0841m_@60Wzz3000W7H4G00000010jv60w0000PczWg00080800
+00080W0000410007ysf000080q30sMm0200U0GQfKQfBnoC5aMQ1Wb00Wruuv233Y7d1000K
+7EOG4vRyez9taQmP_90000001W00G000002twd0020eopPW008m8ra000x20100100ew@DOL
+y46ktWjvJ8cf4QX@78010DwpmHxLKuV2L_d0Gu2000021n_GGzpSAb1@@RmqS60002eW93G0
+204Yd7Vod0040WiNVep23uF01yoE3xpRmet6isl1rXRW0W0WQzFH00080080000342WO0208
+G01u00000A00A40004020F4F1uW0001840000Y00e0G001W0000610800200G0HG000m0040
+2400400002000an014004000000K84G0802e_CF14080faR008080001O040EntWxbC0WW0G
+CqL00020050n4z6000601W00218000W0e000WG4082054KG0005W0O00000G200410A04040
+400G000807G40W05HO10W00M00000H000820E0000000EI1000G008W0080GG030K00000G0
+0A0G000G0008108eA0m44020GWKK1Y0Y00G080W2800WG010000800IEx6anx30800e8G000
+10m020WOA9008m86a0000X80G0001280W2140000080100e100K0H02020100GG2084400m4
+00000r041000W60010W0W8021XG00W00003M30X2vD00GCWW0e20300dZR00602W8000G108
+004081028H02G0040018tkP00W060414@gnGEhI04000004u@@680G0114040W12208G00a0
+00800100100040040C0Y01@R0Gu102204W04GH1000400QVP3000000ep70000408000GCG0
+02IUrW_nC0000W00W2W00I20800GW5Y024000040W020014PSdmm@LqJl120G00G0008A800
+008000ftxJOvV38200000C10000051G02I000200001210X00G0m@a6000WOD0340000ck1f
+lV60Ga00W8088b7008HKbYA1wR04H000W1ATzR01200Y01W000H8Y80CSi12800E5pWA@DG0
+00000GWzwD04020G0WG004W002WW40W0W000004d310W7wDG082080Y20G0520820W00acV2
+0180ErdXaF3H400a8810W004hmd0040WSED000WGmd94@l18W00000014Y00G0000800W002
+0020X0W0O0G002G00000D0000006fJaF18000G000000WW0G8uCz40006002000G00A10WzZ
+FvFU3QJtWwVD0W000081W8AJG40000W42084004Y0AWFX4yDm000100040W400011m000G01
+GGW0000a4WeyDeyT62pF14G0000W40G0G8960uWm7Er730K10G0H00G002GW0efp40GC0yuj
+10O8S0400W8200f0110G00WG0A82A0GAGe00010GW4104O00H4WW202e42YW0082h2W0Y9W0
+000Cc300kvt00W800A820W001n0Kut03400I8000WW0X220Yc4NCuGn7k@l20W0W00941K0W
+Om030W0Y16043WG1Y403100Y82H04140800410082000aOG4402900G0W0W00420W802WWG0
+3842Z000NW21QW80C71000Y0426000mGCEV3040AX4000105304W8W040jUR000I0040A6W2
+GmH02H90008000G00WSob8_V6weq000G0a200K0400Af00Y8G00a240000000fW88H002bYK
+06W4000I1G482000WK4W00800I9040C100YK04040G040A000Y000fa2A9a8400000iJ0auU
+200I00bK0aoi1L@d004H0I900G4I02eFXqOz000G00840GX080G1m0400040AW0015G000Q2
+00W2a240OQ20G010OH40104206080A002G0IpG928W042822I1220G05W0W0000AG2002G0Y
+8G000000OZNtWvsJ0806cG00hZzDOlS3008WGvGA00G1ITz9CfW70009006o0384120GW0EG
+04000Y0DBmXGGW20em000W2e0I0W12281C040m840W0E02000O22000C1c4n00eI08W01UWE
+00K002e1600HQqt000_c000W0H0000040H0G0080W7SCeFt40000111GX0G00m40c_@JuEyD
+0001048000014000800gG00H4Q5m0KW8XY2888200jAb1G20203001Y20a200480WeajD000
+2X0a040G098222m00W0240UzA30k90qwl100YWEnt00a20W0006nt0HA40000A048I86H3Or
+3I000000OB000WeM0G040G0000WGl4000071ztG000y508410102000qR2020ulGlI004W@2
+040000G10G0oA105WaNeN04e0W6100004800000z30000y5000CG7W0w4d1q3G000nHY_F1Y
+000000g50000K78QChG_@F104vXE0W@0mCpGbPcHqLLbeLjAHhgAY_F0KLcPeggGWgg2jFY0
+GFE0WsK00bV0N920000g00000000uXA00gK5W02WgE00NL51cP00Ur00m00008g56k140WVz
+700udfE0W0y50@7Wf@D00fE0000FhE0WsA20O0008GF0OmUI00H400J70HcTWi0j0w0A0Y2K
+0G4e0mi30WP7O7pFOEWQ06010L000c385Cd1ROk3KHK2e3GE03WefE0PJp100cT008g0OOh0
+m0W0G500OC00WX0000t4W5nD006608080c100o200Qvo00200Ct040G0g000K1008Oru6azG
+80820jQ002H4_mg1ibg40WyqDG40_840yH8y10Xlb000O62ggA4OcPmC_70_7y0pp80uV00U
+00WU4108W00Or0_o30Sag0yA3080000GH600qxF3c1Wtz0W8y8V208000G010GF08ZT3Ajtc
+ssEPsSC00mByUo9frRp@W98G008CS30G21SI83J@RG7v6K@l1bsR000G02080@@R0Wt0Wb7J
+uSy7QBsW1yV02W0m@@CSaM2fdlHaQFSXm9pxd0000ML200@94r@@9acR2009000088000000
+emXxF08008ST3QNtWzuJ0200q6x600GBeOy40m00qk_37HdGy@90020S8mA_WF1000WByd05
+4gW8nb8mU3W0e200000104Gbr60W008hh400G00080ecK3UXm0GSR00W5002206Al1b5pmno
+6K4V2080I000018W010440HG0WZGDuoT300G0i1W10800000180C0W44440400a000O000m1
+30KQl1080867rW9pC000840m1002140000414002aa04m00020010J8Y0000G401A0mADF3i
+O01qYl10WW04G001202uSn40G0X040004KW0041Y@xDuWU301400W8WW440GA_6qUl4g0000
+W00800Kc00C000W54000pqd0G004000000GW92000010WK080W21Wk3CGDX02000020W804G
+O00040004CQV300KW21249KO30042W0031020qMr9W88W00004H40012203uR0G810W008GX
+40G2011100fUW4YK81000W0G0W00I10G00m00Wmj_CyTk1280GwsF11202jwR00O000040Bn
+R000084800000H08G008840G000WuI00W0000001008W080uXo7G000KjV20A02QdtW_cCei
+V3_ntWJ9P0086006m000000G8G0012qKc1ZZRm8YCqbV5lZdW0G000GGGa01000000000J52
+0000040H000W0000G0210Gegm40800aqF3p4O00044100mFPcW00004800@_p0000HW100Y0
+80000G240800G0Oy@9q6e10303s0tW09IOzV3_XpWlqD02X00080WMsD00XWQzn9000H0020
+20W8Wf7J8MS3W80800000Y0408000200GBgR0010YuFCuRK90X80001000410Y000040G4G0
+1W440iql18000gSt00088jUMnM@60080f5O3002088000SO2mOw60WKWuuo4_0L2080000O4
+k4E1C0208002N1FXPuP0002400008W028000WG0024W08fU3oEt000e0N4d000200006BppG
+Bo64Nj100O0000W0H120000FO4G00G00VdR022000000G0I4YqxXbqDOjF3W00CSYk100040
+410qsg482048m01G6cYXCH8552k8Gf4102O0_rs0G080082002040400Im0000G0G0W40000
+2swt0400G00X0100G08W242K00a04G28XKGW0000eA104201W0e000102W060X010H40cW08
+AV6W80000048gL341021820008J0f0GePDDuwS3EYF100GWYH6a1W4100100810C1W0000X0
+802000W102400I008008YfGDOBT3G000Kmf1N@R001G04400240I500KOW120010W8000W7a
+2VCRW09A0H4044H000GW0G0W00WW000120H00W02000G08000000Ch30GY004W0YX10G0810
+H0GL0a0mq@6SCC300A00000900a200K288GAGD0Z04W0oYpWW_D000850IG000W0jDQ0f001
+04104G00002000fG0021608L008I0KY0f85080G000000YTW2Wv_D000e0080A200W0W0005
+00yaj19YR0GG0004W080040O80G08W00G10f0084281RAY1041100Y8008W08800K180280G
+hcC00G040800Y01000M0W20G0WXG1C00180003100W000m00Y808000G80WW0Y0CC3005000
+CKFDd10208202HgOt0000K010Y42K00400I0G2040120O400W8G08W0G4Y010H0GRiL00003
+418Y8A088428mWG0000WaFg1000004n0G200X00001W004G00000G0W0012G0VS43000A00W
+52W000003I1920JiOW18W000000fAGYorWMnD8_V3001HW4410O0100000008400G80001G0
+88U543Qwt0020WJNOGKbF0W48441H081G200Y020084HG00W0aC_M6w_t000G00gG18G4000
+1008e000200WW41Y00I4f0WA02W0000XK002900000W8100Wo24000e840000GA0016R0K00
+Wg7IOdK30201K4k1820W8M441009X00040GW000eGHyA1OZ0000OB00000600000WL0000IR
+1oTaP00K30W00G2GM000G0y20H000108041Y200W0W3eE4008WE0W880420200WU3W000y50
+008P1I00OwS30W0041k10O4850000G60ukS380a50008434T02000E0W0@_R0G20100GBXHB
+100O60gw10yH4y0WQuZ84mz70Wh60WXcJmg10mvp9eg8@30HVe3gAJPym3KvX74z@08QLhIq
+7U0eFy0L100KLLKCn40uZ80qB000ml6W8nJ0Y00WFS0G@000nvRWP50WenPGQ0Wl30000Ovo
+e100GZbf10BJ30B3mdy9W7U0uM_4GO00mK1e2n5C60A0300WA000Z0004X000408O63G0Whk
+D0000A04P00Ow0aHa1C7e3G6G1WCW20H050cE004P0xOs1o0a0m86E3000Gn5000X00003W8
+2606080L000H1008400G420G42W0X0020C0J0008000Y0004T008o0m0W00101K7J204000G
+08yDD3Y00H00W@1ejEK6V411gw10Em00SJ00ug1000W00RA00U00@m0W9hp0000qavJmC0_8
+40000Sog20004mp30mRa1Wh2000FO10uc40000mx00WV002@000_m10_80JiRGZz6ehl0CI1
+3OU60000i400000e1000WbI3Wbb60000008503AVRcBfn8zz70Vx0y709rXp00W0W4nzuxrG
+Iwt00000000Io2d101805bB100045200DcN1W00WwpJ8CM3cEEXjZVeIyPEth500x2pz5LAu
+LSuy3rbdmyJ6y@l10G2Wk3j2WDA0b@@mUo6KWE308200000L7k1002000G0MFE37I@000W80
+H00020G00G088O0OIz4040a00000G400020000H0GGL2000G00G9000WwOz60400G100utu6
+08080000450010100000GuC1000W00A40o1y604000008Gyj60800We400W828402HNsR0W0
+G00000A0WG0W00108000144020WBrCG08400200WY2G84W00m00e000002000008I0000108
+2ct0401000800100ipL20020100882804012WI008G014004801508280GK1100064850000
+IMtds001048G000W0088200G0000100G0G85xR010HG102WYWWA48400AQW0541082g02001
+80041G03CkS2G000000200022020020G1W000001e0040qqV24200000202020000eG22020
+00W008G2000W181GW00W0f20410W1W001408408Y0004Q600X23140000hg4000010WG1G01
+01000A042000G0020100040a10000H000L00IW06W800W04802WBDCGC0G0G0020GK0G2062
+Et004m0G0W0000W00041G4W0W00000I001000G800020uJQ3W02W0400ueU300F0CFl1010S
+U6F14040010004G0040020K0mTXC0W004200G_@60082eYV3skt0q000020W901400G20320
+200jG0X268041K0200X000008mqD9y@l12E0G000008800100K_z900Y0OmC30000sjW1W00
+8csp0W00a400WQsjYB2C000000WD30000GW01czlYABJ000A64W00440Wb8c00OmWJOD040a
+01X04W00W00G00020204100G800G1mt@JG200m1v6000YOsU302001e00Py@408400500001
+1ILv900W000003X000G03000004aVG_@e1W400oeY106100140X0500081014m40G092W098
+I000W0230G8G00W000X000I4003000C0800008W8GF@600W3uRQ3Yst0001G9tRmBJ60000f
+I_40080i1W10000lsx110100W002yt0000im7W0a04G8040u1L682G00201000W000G48W28
+LwR08102G01200X9G20W001000498G8W0800000Y0W044G0K40500ogw6iJi182044000100
+820G00080006H4lcR08n0WvCb0G00m6vCK8l1l9O00WynL7C0290mYT64RB300O0E7r00a00
+7kR0840G00G0mG0O060GCJw3000040080000I18010KCGGW1H000I0090X210GK00mgz60O4
+02900ZG4000G80008000m040g1G50W0090DpI200b0100X29e2080X00000GVi080H2Xe00W
+1000Da0mdm9iqd1GLH000W082640HiG26YWL0h0K203WWm4a02X810u014Xe00WQ00G0X000
+eG1I200O9820204810W9001001000YGW0W80W80W000820X02KYG4Y00e40WG10G00CI00O0
+00G000O00K2WJHW60W018Vr7400182000000lp0E445402g8W1001imG2W0G882Y0IK09080
+ICcAH80WI4043O840A0c282G5I1G2G516nG4G1XC2mAW0H10oOK8IW02HG2H400G4000Ljk1
+n@R0250A0200zsP00200200008208bK08o40uGU3000G10080008L@_6qxF30HA0w5r0004e
+a20000110010e7_4Y9t0400HWA180101GAf80aaH40aA0104g8H4fOaW8WG0aYK02Z805alu
+P0128010WiKLV080G2584WXQD89J306KW04001H900G00oLwD000f0e010020XFu@0G0804G
+0000000LOW0P00028G4G000Y8A0Hv@0Y4LK0m4801WG80G0044nIC844Y011OOe8824G0IWW
+2YY08xV3000Y200048WW0040WZgD0100W2HC000e0eW39024c20q00000E01G40202021003
+04igW1K000008000602000OJY6yqF34000GG00000WWS000000ez_DOzz4000e0H0000086m
+20011GGW8G506001G0C0D18WG2820Ju00I6848C02440011C0801WgsDus_4W840000W4080
+044H008G200G012400018W20G00G0WPqDO4P3000I5wk10080MIEXKCJuDx4000HI00WC2hA
+00101100Y41G0WGY4G6WGY481W8H0XXG4G00H2480898aWW0400YG008000G211Y82W86IuM
+y400aH0000434500000E000zBP0w30000uB830000GZK_g1000G4000auM2LrR000902000Q
+1000TJKB0002WE0monC00O11000eG0000C24f2OW1O@5qF012XzN00000006002Gl20800@2
+0000bwlt080000We00000mXPYsV04jCpO6PcnCc11LfAqHO30nM40k910SJ2ynZGuc240000
+G000Wh2GUP60WT41004Wx82G000WM500ozt0NB00001000W0000V4000grS0GRA0WMDWF000
+ldhF300WbH30BZcqiC1E30mocD2W1oacbOPQU8DB1abf10FI30cd10Mc6BjCDMADQiKQ0m3U
+0OPW20W20005064f0C0b0K12041008200G410W82G4pCW8080C000H100C5008g00WO2m001
+W0040YK0Ce6x4400045G200Es1006A004K0c1G@v64JU20We2W0n5030A0J00Wa0004300C@
+00GS1S1m0I20700000300Wv00005000A0C0G0O0W00000W0000G01utA0GlR30d0Y@r20F14
+WXypW7H000a2000mhC0Wf200Ta300Gn@6GF0000NDmQtC000GmN00WFS0GF200WRr80eg20G
+LHm700WNB0WZlJmg10eL300cd10PwbWq0OPq0mCcnobJJmWK0I00BJ3B100McsCPnPWP00WJ
+l5A6S6000G250WOPEIYEFXbz3100G0400XciCOXxDW000G8001040mA_FS9K2P_d000j_Pqn
+eBT3cYtWrpz8C_A0200y8V8NkV2uT0Wql3f5UO4010qvR5nkp008000W10HgRmQwC0W000G0
+0m0uC0000s400K1MISgE3O00000000420egb7gXR3000GBjPGcm6CpV29bR0C0G000104001
+108000O00002nJz6000YW00808020Y000x_Q04000010000ar10G51108OTC3MiF1008000A
+2004A000000YG00G08010W20W0010280W0G1010O000001101q0W2G11O00G0041W0081102
+028002400G2009G00000G00018XG2002412I01KGm080000G8W000A0824000001G010802G
+0002028G01802080WY000W0000100028G0G1y@l10rK100G0020YvVN38200040G0040W004
+020W2g0004g410800021WW00C245X4WWg84IL08eO2G1X608004C4106000G04WG00AX800K
+L_60000vhE300I00W0qGG1002Z00G01WLkR0a2500W0m8G00010W00GW00W028000W0I02G0
+G0W20H10108200G000G822VMR0000KI200m80WcWp008G4x4O00000W0Ge4W1CC00m800040
+0C008W0m40622O0CXAY0048X4YE0O00A002DK251W0K0004106q010G4WuUC000W0IG0ak@P
+000X0001eX_D00080W00080W0001G0088008000A00000000060000NgsWqDC8dU3008VB0G
+4100002B0Wk@P00I0mqp6002021aG000W801004201W0GW000v2102200W02001041000IW0
+040208004204W0000244114004008Gj4ojdX62D8MV3m4010G00G400mox60100000G00G01
+0W02l_P0402H800021000kU000004G80W40I80800Dyd00080W41008202Qs080000410W80
+8Y482G000000410280000a1018_Re1G100000W0004OsV3WS000002G00H4808G0030p@p0G
+00400020048W08Y00G22m000400080803pd004008J0040001408800000043X200I220TxQ
+0000mbmD016004X000015W0e04088I0200O2G0a0I01021002890W0y@l1e10000000a908s
+G3C0014Lb101000C00DYU21tdGvcF0G00200W020221G000840Iay102W0jtR000tsz@Du@y
+4YusWmtP00W0821W10144C22I0002G2100W0G100O8920000C40180002WG00W8420Wg1C00
+H080100041Ghjd08W0WOlV8nV3G00610400010001GWEmDuf@4000202100082W0100W_0A0
+Y0100a200000084804000W800G4WY@t00G000G444G00qqk1FGQ0086Xc9D87Q300308208W
+080Grz600W00402200f8000H810H04041004AZV302000G001W0Y00000000g204W00L0GA0
+0W4540008000X0tKa0WO5000C8WI4GG104000041o00Og10m08200G2G030G320040005900
+CM10G482000482A4100G0AGG82B43qe0aHn44Y7GaWGY00Y290o488GW8GG0nm019604W400
+0I0100244AL044CZG845800nww606018Tf400010080041008800OCH4GWv04G4100820645
+W001000W04002G00A200G034g006800W5000wu408A00840I40X128GG08000Y0004084W00
+G0H00GHP05X0292bK4Y1Xq82GWm04O805W440c0e8009HW0020H0I080821C0421aYK00Z8W
+0eX0I8WG0000200W200QetWpJV00Y05e00nt@JeEV300K245l1Zup0f400G01020000yA200
+0001002e0010f01WIA0010000f00Z0m00I0A1WG1K00f858C2029W000081X00850000Ir00
+I1210fKV3G004H00W00GG010G0000u004900000Ae00000Kac6aHT2fddWYY0WYzJ0808208
+a800208K10Exd10G4801009A880000JPW0000050800080200W00404b2000G0C00480000u
+O8I0W8G0102ef0024XGK841800Y890o0040W01420H41G100GG000W0001OtL3G8G0G00400
+0WE004awzJuxG3Act0000GW0001004C_l1000W0020W4W1ex03cit000W40000008C4Ud100
+wY100I02000400HTh6020801W800400082400W000e01000IO4aX80G1W1v0G0m0120ZW0G0
+080080G8WS1D04000006800G2BdOGcz6Ge0010e00X0000W20D5amy6600W00200W0082000
+08H200400W000000W020400100081K00400K04WG1040G0012000qU004a0042200020GI1W
+z@DGW00080W00404G04GX00W2X00GG00fI0808804G0e041W0060G000240G49451H4XGa84
+WGGG000b8H40G0WElDm800mUx6W800Qng7000m20000WX0W00008m00HzR0W8JYs0C8uF6GM
+00000U1000EX93WK1CeZU3Gl0000071z00WGOT4000129000W0qxW000hlGc38000z204W00
+0G0000g510008108azcI0200002G00003A0mD90003WRsa0@03DkQ002000KJ000000mCFuY
+V60G70w3300Euq100ucaoIOQC3000hA0G1L2V410lQ00c80006o41WP0007q0V0mDw60W3E8
+qC3kXp0McsCvWRWP0C800KGN_Q0012006400480a60je50M6DM200IpIqOcP9YR004L00GK1
+KHK1ozsWjUO0H401000100GG3WRW00GG1WXe6G500WE0a2W100W000W102H586S323t0WD10
+0Gm000X1G5pEGK04GiS6WG00Wv60003WBcV060O0k000O00045W08g10mS7WXe6030504020
+C04002GKT6030306040C00080000a10TU00Qr0_Xx80mQrF43N20yc20Og@1m8p00cO20000
+CHa0gg00yX30QJ00eyV3av10061cHL0_170SJ000Kww10O600Qr0gog1y1740000uDa1mD3s
+p0q0W7y8DBHZbf1WqiC1k4O9DBnoqQHQM28Lh20ja60ym30iCDMoyC66FgOfq0mIf1GrPXVI
+s_680028RyG00ydaDNHBO3JX@9W000020WmI@9G100Oxy4YFF1WT00NQto5x6a_6I19ysAyg
+4Ak11mP012W00G00jUc0060W85a0002sjxjaCV2zml1800epaD00A0501000004h2RGky602
+05400G020WG008Wjp@000W0000mG00200W0I0209ty40S6Y6JV20004M_nWJvD0W010040H1
+0040W20m0X0WG2800I0000W80G018000WW42W8200G000W0112X003nd040800K000G0Y002
+0S0m000104020qJl1G090_@t010Y4GW22001W04G0000G0080040012W00GW04W12W004G04
+0004G010Y00G0G2000WJn0804A0004846800800008400000GXj600WG20020808826CGW0O
+8G24GHWXcYK0C3A0G2Y0408W008KG30YY800GH404f0K11CNhQ00800a00000G0C003GG010
+10001120000000GAksp02001aW50840G018WuhN36Zt01002A0010I80W00e000e0GG04100
+0080000e50W0e00000G0g040G028088W00Cah1002G00520e002W4W3G2G4W00201W1108e0
+WGAY0i418002A0W0800WG00W88H200a00G06WCHC040W080801000LqRGdq94ql1hSP00882
+1004dHd08G0WG@D021W10080800480W0cps0000008BQ000A43v37WR0000mKdC0W288AW02
+YIX0W2W1n8W2jDk12e008460Y50mGG00e80031W50Lsd00041038W4440W2W820W0eST3040
+0rKk1VSP0104WTCJ0041094008000Lud000W20G2WG0003Vq0_200@@R02922G0G0W000008
+Wavl10008W8000o000000a02I080G0W8110Y0118000040800H0400WG040G0GWG0Y0XG000
+0548W001W000h9A1000GrmRGis9000G40Y0m_@68I02A57300000W0G4500W918200G00040
+8G4G00G0RkR30GS82010esR30001040G00G02040WIdDe0330W508O8040800310000G09jP
+00H8808288K010W0000041008GQP90W10G09W00W0000W400W008W4a4U20W0W0100000YuQ
+T304101000401004044002G00100G00100430O030G2en4C08000ml410I15bEPG_p9CrS2G
+480000eb3d15kR0W00G8806G00G04G00010000c0003G2180C004hzt0030adxR000meCBD0
+1G0mw@60004gfP30400000G4G8440O2G0WW98Y8WpLm080040n0008280920001800GA00G0
+W000uOe80W020000Y200GWz3C020003000000044010008Y100eq238804000G222040008S
+000G00001GW00G281V3000SoG040Y040WW1904G00GA19HH00AY0oW0HaW8C20084HiRGty6
+080006A2042W4aW01O52XGaem02061C08e00gA130I822am0GGf0Ua1C4042G0000LTq880G
+W08809010AGW00100040010D000J000000OX4084HYo000W0aK4X0IW0W0Gq00Y700I0iC2P
+W21W01W26G1C40ig4MO1YGfGcmX90GG10c102K02H8b81048WG4108X0The1000008W08a0X
+G0H0C411HHG08004IHQ0H0601W2H4144G540n0080Y100200AYG0K0Z190O04G0260085000
+oT100J41004214060CG84G400W018DG30G40W011G02X0e2e6H18WGe8C80G38WYG0mAY222
+0GW22emHqW03150160G0804H0W0X008Y8080004iwT2004005W0COD39mP00800W1WKXXd08
+H00I95G0C2040K00000H0085000I02W0a20001e0000WHXG100004002K200b000GHA0Yu4R
+3000400e0YI010GaI00G82040e08cGI200WKA08H804285440IA0W0G08W440W85bKY8G2YK
+a208X00000A1ugS30000m80003Y0Gz66aHU200400a2000GG000W4000000G840AG02GP0CW
+GeJN3G4800WG80HW0284HK005000it100000WWY00020800410800KGolF10G01W00102820
+0350000010W0000808321e0W042GG8WG4G2W0E0C04042G009G0G010XO8W0020H20000000
+C00004086G508aXbkJ0O80GXs90W04004040800830100000204W010mA00W0GH0G0010WW1
+0008002620000uE004400880W0000200G480G00O00000100026wt00401W0000010O0b004
+0m4W280W0e0eG040OK086aI080W40WW040910X180004jtX1005W1m004uO20005WGG4KQi1
+W2000100000G000a00WO0000408I0000200O0100008J04HG200400oIt002000G08100mnS
+400400081000G00G000a000iwl1jZR0000101808GZaG008846H298G4GG86C04G401G0GI4
+01a8Ia0140XHGG24W0000W4900500iO_423t0G000G500sAdXwuCm8q30000mAuI8HS30R00
+080RfwV3000KB0100WE0000cZAvC00000GG00000z00000w8W0000eRp400P1G000mBmM200
+1Kj0W08001G002WwJ0010w0o6W000mBdhR000WU10400ybu1e_u1082Iz@ld@VuF@pFW00G0
+vF004TT2fhdW80iR80egEu3L9GLpuWRA0WtK00piA0cfA0SJ1Cpc2uZ84mLK1e3E0GR200WI
+60s@t0Vjf0k300oQ_1qiqT0WcqO9WMAD0MMQ0u1F00V7OvovWR00qIhehJ8CS3CCF0W7U0mo
+00003000406Og080G0OC8h1FcR00GGK2W0080300GG000Y0006L008g0gOK1Y2W0IWB14600
+Cp0gOO0g001CBxD3000WwN000X10023WAcRGK000CIaB1000X20005GK0y@a100G000n500H
+606YE0T0O0G000q1008A00Gq100W1WH8c64Jl1K0m3z00000L01000WB0000y@@0yG00uEH0
+GLT20JE10OG0x61W_820jP40Qr00qZ8ihD5u3H4mkY0mhG5WhA00ta00k91UVJ2Sm16eZ708
+140m1100GAWg0SL10ug2u800mDo0X768IS3E3t00iCDkH6Q23F1Lh2W2p3BHpIMADQIZb0Q6
+p0OvOuC8Uz42spWnm3f0xJU@E1Wj10pmrryOUaw@3tX@GP99mI00eATL_FNYPpseEEKhHeYt
+KVu4UCkAF1GqC0ZphoRxISUk72080QHN24000000H_xDXRwDOeU30G00HH00e0U9O700S8V2
+0028UMFXxqD00200600000018011wbt000010W02UiF10200piRmSyI0800280000W0WpqD8
+A@DkZpWorD00G00480000W02C008844000000GmEG00YvyJuJB30W00CnV20040ket00G01W
+80W0H11PA2W29205K0W40H046W6900400218WGG00W00400245qQmB@600CWfkd4oF_XNzJ8
+jV3801G000400060G00W7mC00184108eHuD08I1HHz900004W10yz@64fG2hTR0H800AW004
+00H000820W6W00G0800080W0W120028W01008CO300G14WF6JupmA_6quH5u000oyd110000
+00OXC000000uRU3Q0fYUsC8JU30803GGYK040Y0GX00128009W0_fs0841G0020UTtWgHi10
+0Gmbu6Knl1088GW8G9Eyl100eG102014041000mV46q_F35PR020020010G000W00W010100
+09G3s6020060000WHW008220W0CgiSZlFh0H0G0W0000G00080W0004800800080008010W0
+Fwdmwt682w1ejS3QlGYPZD00K2002G0000G0300020000240G80000021G10000Mc7q0220A
+2000_QfbYtJ00W920G0000840300MPt01W0Y02J0W008qne10000i7Y4G0000180GR9I000G
+0G0000G08080004040412000W00W9000G20HK00G084002W910AeS30200qKmCNyR00Y0500
+000009100J230W40eG00000020800040GW0000qa8014200G0c30XPY100020W080000002W
+GW4000000K00300083POGvU6000G0W40GBOFyUJ8800004080820WG0H00100W0o80004GGG
+0G62O210501n000008e0000vAn004c20gW08000a840Jn_042100GO0eW02G00eO4800X000
+C409O0010Hc80G8W0eg8110D1808KGHG0800CQ4rWoTg8RcA0W0W0008W0GH004101241YI0
+0W100WPXG04b400X032G504H084e000000sA4K2P000GGr8tzpGY@60008XW000W800WYGW0
+M0010310u24220A25YO21Go0eG380GW0H3GKYA4m00W88Z2005mzGZGg0I04WKX4oou60000
+01200000IW05K0G900100000ZdKW00008WgECuxK900040A1011W0Ic@C00H08XD30WW01e0
+000I1GkGvyel1004G000Pqnl1G0001200KCW1fgP0m9740000K21Y0200G4H1O5u70e80000
+10880414000420pxR0H0004108G0WGa4000G8W0Z415G0004210x@2pFN600m10088mEx900
+0400201W02080410W00G0140000YCC000000W802f5N1W000G02400480W00200W08240010
+08004800W0G04800G090400024020WHDDpXO680000200X400WVxDG42080820e0H200G40C
+00080100Gr1008I20GW0G00wcZXRgJ0004002G0A2W0W0610GA011G04a2G00000f0AfW004
+bOG2aDd120W4IGoZcch8oR3IWp010000q1850000G60erU3Y5t0X000WWHg50000G70u_vDQ
+AFXrvJ000G40400080820010GB0SyyC00W200000mD5GLFYWt3O0000W_820DO10Ap00qc2K
+500uT14mC600G0201000W5y50eD50GRAmD00WZK500asF3000pb100e5BJ30Mc60Q9D00000
+m3FYXp0fb60PnPG_r6000iKQ0Ofq00W7aXX0101J5G4040L9cQ000WG10WW2WAYKWA043U20
+0up100cI004K0c100K1W8jVeXE3MWrWSmP001WGAT9800040O0W0W0000100010o33600mc4
+0000m9pivg10SJ10000uzD504G80000m4nD0eLN50tK00Eu0E200Sm10izj40W6Bb60ggA0M
+MQ00000Ov4uO00Bd60m@WurDWbfr20000Mc60rFOpouR000WKE00mq5miG7Cba@30WKvKpFP
+kiDAK3ZJntUNU9C300i6eAHE@G6b6a7E6200088W04L86tjBnYNF000KydV300KW0G80OiV6
+6DdXMdVeVU3G002S3V2@ddG5e9q_l10WW04400qLl1FoRGxp6C7e7ldQmhU900088xU30yg0
+00000008HEVRa8k1@udW0000O1G01_d0000Y7VCeQF66us00814L_bG2t64jE3tj@0004Wwb
+C8rz46Wt0000q602800000WW0eEV3g2yXYlDW000mjE600040020010G402W0j3_mhr6iul1
+00W0UNmWszaOEmGcfF10007DrR00W2XCBF9Ow40W000001uFU3kkt004000008smy1000100
+0H010WGG4JWn20G@7j0W0080T3Qot0GoB0TZQmeYjOG00uCm402W0Cp@65sQmocgS2h1lSRm
+129S9e1TEOG4dUyll1V_Rm3@60W0108000K04Wi8COrp7gjsWTqDOsz4o4B44000l6O00200
+40000G0000iq9002eCcMUat0O0005Jc0200WSAnG2H0Gww9ynM8000G00202000a00000G0W
+Q_D04000Wz6W05C8pKLkkt0G00A0101W0104Kl1PeA14G400CAA0WW0YzsW87D8bDF002001
+01PdI3000C000400084000MM3002410MJtWKM3100W0008G00mW0WG000100WA80f022430b
+osJeg@40004Z80000I82G5g8S0a0318HUeO0100048K0028G0020BhO000jD1W20xWRG3t9K
+Qh70G40008001G0GW0200201100G04000GGL4XR5W2WKG0004Gk1tFRGpYaKDj1ppc00Y6A0
+000020G0000G1008NeJ02K0yKl1T0aGgZO00W1ATeP000020Y008000H000000eq500kxhbj
+DCemE3w08XfiDupI9AYq00080NFGo6E90800egT600WAcJR2BBr2080amjD0660GSlO00020
+0100001WEsE91y400001044ejH3080000BH8gOLcCq03000000400010052080422I000000
+0910cP_XvtD08W400OAaH0R91y4G40800040000C5W4W@oDugHLg1E1X0200G204200Chi40
+0W5j700G1002WGH10H5WbzJm1W1GoPd0WRafLT300Sfa8zC0e50oBp0L1moe1000Wg000cd9
+ijAW1008B000Z00mhF9KNS80WG0WWW18800u0k40f80002100020Y00WJg39CU3UztWiuO06
+00GlsI833000ei3K0KLA00Afx1300u3E0GLA000Iko0q70WMD00000l300kxbxJebMqa0d1M
+ED0OU604id1xw1pFsAUcgANel1Wf7WMt_FoNRwb@100CDvm7L6v6KoU2fUR000YWkmD00WWG
+wEO0009yozA0Fg0SSU2XepmDwC40l1xoR0000G00W0ZmpGFyF0020G040G6z6W008014G020
+10WG01@Dp0040YsyL1000kr00WSBo9vz4sUd100W05ld000011W00h@BX001WZzL10WMy@@6
+W400e5nJYsdXqzJOV@40008yJl10004hGs02W0400G440A4Czl100e0C000CxV5@sPGb@I0M
+Z1OnnG_@tWQuI000GmpxCa__600084H00iqD3Pl2p@@6u400u@Vd0444LoV2000WG0W0000G
+400W004008300G8000004yEj1z_V202D_mGZ24000043000053Va0100100104W00sAqWPNW
+14Z0mgfE10G00W42000aC010HJzR0000mk5Du@V6MnIYePsWh00GzgE18W55W000082O0I40
+A0YeW001G000008081W02018W0a2808WCX0048XOL00GTa3hJ0000X00200HX0W0W08W0G00
+W0W02GG1oC0m00G18W8008WD@CeUH9kvV3GR903sw40aY00001000e000H000W2K0W80O00G
+1200090I1m0a25K0a10okN5000KS300Qsr9W000xaR000B100000g0004K00800G8G150000
+W1W0000Z840W4olA008sY0s900W000j04WO004m020004G8080K00OJK40Lm0meW148860G0
+200e40RbRG9@d00p0OhOd00A000e0002000G4040002801024001G499L300G800G48MgM00
+00I300eKPdGF4000079BU3I@s0062irVRmX@600OX0400OMSd000000GvPwpE100W5WAWW8p
+C3r_70gggCCpCHxX7YMcp4j3F8QPcnCoCZ@100gILe1uY@Mc3LYeg5YH500YAG74L060j0C0
+A0H1K082e0Ga20W85G5HA8AGH06W00400041m7LgGD00eFRd00WRI00NL00ig000010000yc
+20ug50m7H0WRAWRMD0NDW0xwRWD10WM_F100tSdsKbqjJ0wP0M8FgSkDeeRa0000Q100uxxv
+10W000W0OoUO2wV3GJ80jf3vuyF000WXw00GuqU4Y0IRtd30WZtNFX9BYnU@@1UXE0lUNnKZ
+5bnVH000CuB00STIQtIkD0S2WuvPuDX91000w000O3_DUgt008001xRGA0K45G5ZX2F00B90
+020jmRmL29a4F3HAamywFa2057cS500PnyGheDV9A@tWK0e8A09knr900T33NdmRb6008W8u
+R3kqqW@@JOMJ3I1WYe0a8f0g0040W8000002O306yjl10GG0ozdXE0C850AY2GYZT@lOPB10
+0GR1G2OOQ3QFt0W402VJRm9q@0m00udPa00mS4KTK4000kWFXIbA2qG2mYsE10921Y8G8a00
+08Y04Y0008H80KnfGq700UztWJGDOiMRo2tiYQD8gsMMC@D00088000Q0mW0rPhM33kzF4m3
+O0G2A0502G09eKW480103G1I0O00C00248XkyD850AY2eYfrR181200000YG00tUxXUWZ400
+09Sm9v000000dah303481WW8G240002Y4X000GW8G420IW1c205H18X0pX00W38u40000ES0
+000GE4m100XpK0eGE400S4910000mHG0Y2m0Wm90t@R000070000f0a08L6I41GG49100001
+HG0000GI411G4909Hf0GHK0aGa40OR_@ps@@Qv_lKJjwol500zrn4c080800400VxpGMXH10
+810001mWgm0uN18WV60W4000040020GA@Iaal1Vbz3W100G008@Is2000KG100ztpG0rOC09
+LTxV2005r9FD0040000W00G020002W008a2G2dVYH_@R0040OeU3E@l2020Y3ep0200WFxDO
+GS6w4@1mP30b4Q0000H02004000_0sWqgJ8Wt40002G000O8V6004000H000000840WEzDO9
+K6800000010100mnw9akl1ZhR001GWvkDG00020002W0000400802A105800A400000Y0W0G
+2808400000WpgA0400W808480220f2G018X0elV300002002022200G018000tnc0001WtoD
+ep@400W000020800eG00WUhD8Y1300G0040GuiF60040avR21yR009W000820048_ut00080
+0010W0114ai104001000008u00G002G40028400O008X02G408gm40mG0Cyw68000F3C1080
+00080NNtWCmz040WHFx94D8300400024e00AOQI300200120uGU30HG5iag1000S0W60iDE3
+01000W0e0004a0400000ei7C0000O@oC00100000405000110dMOmRsH10007e08mriC0G10
+W0G0G_i60G00000Wq4j6Kdf1dqc00WW0004000220004aHV2rgRGktH1We2iUU6082W4rR2p
+fR0100000200W0HwSd10G80XM@0000800GGpUU5WWbWgHD006G600000G084000001a01218
+XK3_1mWFID8A03G610000800082W0W0G00100080004m040uUqh000mZK20e5L6G0200G200
+H080G80WLEC0000KGg64bQ2080800G0004W00100080emyDuKL340G04vUK00CzWG00W0000
+00m0Y1G1q00224W9W00880181A00C00W01W0008044W03100400C400000CmC0K032WaG1GG
+G10YKG0Y02080008809000G0W0KOMEg0l920002022C0008040G04GO240G010H54212016W
+004014T018C008000m000000G030000G008402200210082GG0H2AWe400480AAWWH09ynhK
+7900000600K2000000Gi810De1XAX40GW003G9k60WI81000001Wae0O01a815K0GAH2P0G0
+bp3mWe0I8j@e00iz980000X0m1v600022001eI8880408G1008A0000000W11100840440H1
+a000GK111HW202444X0a00ulS3Y2mWwXe2S81mUK6iHl7Bgdmrh6C9U20K00kgdX75e20007
+t1000002buBnYn906000000pzn60000a4G000G06I00W0020000012000025mbt600G0O5Rg
+000S5ox3C000muBWo00G03000000XhUbu@V30W1845W1WY10gwbgw@P0a0KBhr60MdjMwCRj
+qQhMfrMh600W800G400GhiER0OTsSfpivIhjgbMRjwe0EHr00nAyjSnF3xnN100022300Pfr
+oiz60W10W0040020000m1Njp0020WsfC0800000400610fkR0004WCYOe5@46QoWutVe1U3w
+Lp0000000Y@kqdXauDOPPC0010CCK2ftp0044000W0WG00EQ_dxJn00A2GIKRS0aDb4P0000
+G00eG000080005fW13spGa_60010eWB3Q6dXSoJeiS3000G8700uf_4A9t300G08000WW00y
+Vc10012MGp000060000W088SYc100W0X0082040100G019400808A000WG00YH40410W0000
+WtLCu@V3000G100040WYGf@R00emPqXA4000SeE3XsPmLt68200OGY400G880408sF6k5p08
+080mY804e0002000e10IEM68m1000848040L040000L0000W20G1080000W0004He0040MaD
+10W02brm0836W_mP00g80W001280042000000G05042Wg040G42GY0000Im00201b0W02W04
+K010Wi24H02f000000056208048088W20G050004Wm040m0800000C000000H1I510W020WL
+10550080400WAY9000WO00000208002m000DiOmpjCCCF3000eqA00y@F300121010W002Sm
+U3sFp00010O402006800002W02W0W0080004400002C014GeL23cco00G008004000800aZ2
+0410A86WIxJ00C1000W02002@@d0W00e0cD000p4100Wj@P0100mz@9000f8_V6010Q00000
+01WGFy60W040G20464008W0020000W00801KG010024G0C00GO0H4028000000KW40000188
+G02004Ubd1006000W0UtF100H0hDN140GWYyO0Y00GzqF00J1Ok@P080W0040iv89W000002
+8AxD60404yx830W0WAiB12001F6R0000280W08004008WKik100020402004000200008CD1
+00@@ppcXCKxC3000306000G000008mCI9icf40G00O0O008100200mCqC4fl15@RGFk6qtF9
+0m000W100000W1c1000W061000000O416mC000040038meK0C8oo7W010Cee1V7cG1qIKQa1
+vYl1WZ6Wv_BQsv40008_@l1O0O1W8Y4011208400W0W001800L00000G002040100W000000
+200W00030J08YW01I00W0ee0COPf4wwq0000CS400gx@4000300W0003CJ01240020441000
+80OWv00G00K3W13laW00008000200W040m0002400080G0m@@DG001mkW600448@S3002005
+G008uW0K4000I42B9Q0020K0G0e880000000089Ek@J2DpWNADG0Y8WH00012006H000002G
+61000AC314Occ3V00000G880EwW0K20mW0200002vnr40G00yAe1zccW2Tq1Ce40O314Y28X
+awJ0CA3m@@d4V630e4I0W2AHGb8101e0Y10WupO0000000GayYI0G000W0W000G0Lsx1002X
+e0CG01WGMOIm700u@VI00011000m800Gxv60mW00K4i22220W00BndbGH06000002400180W
+Wz3X0100000eXx310mUsq8s4yF6000a00G0G0001102GFf60081u@@Ae4G0chX1j1Om9zR0K
+t1udzMQzdarSDu5V3o7BXKnCusaDY203000at1un@@LG000008O000WJl0g1000Ec_@Xyna0
+T0006000jQTs0pwip7RZe0gGhL300W0mt@F9_iJqQr0yg3Cl_72O40Wx@Tggm7400000010G
+00O8E90001AIQ3008000808nM32hrWXsg0000BR10WsWVuNd7UfJePuUujIO00qPdKWJJrzG
+lm6a4d1jzcm@l6G00040002005WEVJefQ3AJM20rE0hux404004X8A00G440200042088W0K
+00X1SC0W0I01100040WL5O0002G0W80001481800040geR3W00000180G00mgu6002000006
+p00Ww_P0G01m_p9K9X1004000G0G0W00000mb464pj10080YvnWXoDuri402G40G04001010
+00680G80000040W008GXe2WW00W00WY220n08O020040G0208041K000021041300KSg10G0
+0MVs00010dWR00WJ7200000G1_coWfmDW020OJdFSHP20020wwsW6Fn00G018O8800004094
+00m0002G000180010W0Sm0001G07002040m0401200G0WGm0W0X841012a204X5W0000W00O
+O00W004O2G00000WW08WcoD0ya7000000X02l4b00G0WsmJ0W002000800080X0GwZsWt9J0
+000ImH6ySk1Vld00800W01A20240000005G0C0W04001020040W081400008038G02W1WaqD
+eN03YOtWEsh000W0000_ywCOpy400800042ftSCQTtW4sDe3yA000XiJV2G00WkQt0010008
+08gChY1lJ0043mx160200O593000WSzk100ECkXtWUuD000880408900OrPd01W101030b82
+Jdv6G0W0wYR300G05Pc1pkRGQkFKIk10800080020202000yfe6G001u@V34X00CSP5I0I0o
+mFXjzjX1W10140WmxP8Ro4YTtWupI0001W040WNwb8MV3000WO6688Uv4G000W0010102GUP
+6qHg1FcPm@@jKnV2010800002100CUI6kycX6vtuz@40089SBx3lpdmIEs00020X00010000
+m0m00WWGG0080G820G11101WheC000GmHdC010OGm20WW80qjvD0020ITi6SEl1@@R0GB5WX
+9D00CGC000K042400O900W0W1c5001300OG1o4W00204Qzf50W0W0010002286800C00W800
+00002TyP0020O0008LzRmO@900iW001Gg0Y140040G0G06Iq0G10101W0IDt0DhW000108W0
+00044m0A809001540062000002G0100004010OmlWRPXG60004807T00A1mQj64Qc1HWyGmo
+6Wa2Sa32eKK0L00OUBeP3MZt00G090GJ51eIa000G8lC6YN6cDfJOv33YAhYRyP000640008
+gG00ndL1GK9eYyD8ZP38QGG008K1111152OaubJ8gi4EpGbl5D000WmNyRSBE3vJl1000Q33
+0WG000AytW3_D0W02mK_y0900giT34000000I8TVC00IWywx900wzIMs02H00bNP0000Ycb@
+vAP6IIEXDIDu@@A6vmWqbD8AWAkGBXWcVOuK3A8PcGpY200080hrweoeALQjY80nG4EiHT6E
+m8XQrh00WPOhppaCW4Rh5oizI01G0OoT3gRsWYtDefV3Qm@1WFF004000040_kb4BaOGRy6S
+dV2XyX1004YQrIuPVd000WJG00OjUCMzt00100jadmYr6Cdj4BtRmUvIKRV2ncB10G1YWyD0
+00080012W000W0000240yWl400WS00W0SQi172EJkwCStG2@@R020e0C000jpp008WWMXbeX
+R668FXo@V0yn00000mOYP0010W20008000080400028001G0110G08ernD0G30200240020z
+5P0400ee0C0000mmH6SHe1hLRmBX6CPZ1W00010W0000G0080mjD6CdV2BlcmQvF00004022
+00006zA00A0008W00G024W020wfw6GG00000600100208000G000W4y_l108G02dtWAsC0GW
+001000020Grjc0G01WwoD00a000A0WOuD0880mGqF4Qz3JyamgzC4xU200u1Eps00600G000
+gHF104000H0GoBt001G0009GMJt00043020004001001200210001000GHvR0004mwCCuUT3
+sfrW_RD8JU30a02rfk1000GYbFXivJuX@A0408100000F6000020WG00800W0210m000010W
+122WIzD0010Y0W001048FkQ000IafkIe9D3oUWXspcfBoJ0d00qsl100W000C006W00A00Gf
+v608000048200022100bZvHKET1WGHxy@76os00001T_RmNs9yrpU0zF2Qut00O0P5nd0080
+060600Gm0001000420100GJfHrKUBK0002rF11G00hyMnz@6CV4U00ixX000W080000m0Y9G
+18002090X800H10686500810W00e2048GL4W02SpqU0EB10008001K000W000G648300828c
+Jm02C4008W20X20G800G0W0GWKu100WL7a0GWrCW00qWI1g4O90020E0fMd0300WxCs30Gmh
+W0000400VvR000KCm0442WW00G2Wa2G20C80oFHhY@91ml20040400G0G01000WAqwR2pYQG
+3T6SmsFXK84B3020400JzR0822080400000a40080002084W00600G02RKi70000001JvPdG
+CSCm0040300GkI9KFoU00000GWr63tOTdcGkr9000280A3kgzXnfOODP3000G1O00u@V60GW
+0aYA6001022aXGgD0008mK_6000G8Mx4wLzX6gteRT600G0Spl10W80G04000A0u@V3000a1
+400gJT60400W00000810200GG012jqcGSPCG0040800002GYCKJOTtDgocXtsV0000usyOS5
+F3W5K0_vqZ@_V00G0qfaIq@l1rndGMrCKel1xqRGPl9C2f1vnRGXy60020eAS388000002a0
+10000840020000W000WZI018VT600L00W00000W102000228G000QCsWGwD00W00G0000W00
+G02000028a008x@400045@F302W00000WW000000W20000K000002KK10CNk10e00w@t0201
+040W08040W00WeJP3G00010W4002W000080044W00000813WHW00080010538W000210581G
+000W2080W00004W0G04GGa20820K00000eG0WHcD0404Hw560W0802000aG0100042900040
+0b_V200120000015WW0C0000010e0156P040W000820400W0280GI001C0010WK3eA9G0Gc0
+e82A0484200828KKW6808X50901424000WE30004GCJ8W00100eWm0G110A8A415002281A0
+8XdOs00I80K40H807A00L7M1e004W11808W00H25W8000G0mWA00G00LWY120XW2GO8Wc7H2
+80100008G0G0OsV34G00G000W00W00G000G09RRO0040018G0GW54Km00004122XW02OG000
+02K8K2n40HG3WG2Y801000Es3020401n0W00000G0W00K00G85O02014G081004G0080200D
+0WW030804K2n1805L03000aWG00020K2950008G204X0XW04066W8K0G0b0GCGWiWT200008
+0180040030002OG00000OP04_ds00W000G0000882W0900000884OGG0C800W1W0004002G0
+1q55600000K0000WE7082G019G040ie0Y8140B0W5X02040408GW01G0O0A00004241102o0
+W0004004380040201208ueII028W00040200520G0G0G0CigA0008W010abk1400W40G0800
+W08808000fKvDG000qBs60Ct0OD_4002008a800O00W0200W00fxP0900WCpDeXZ4000G002
+00W20040004200h9pGtqs0W000000JZL6GGGGu@V3GG000G0000O000084t5000900YW9XYx
+DO2U340W00020G0801020WVyO0010800100G0000G00004K9sFC0CWwzt0W00G000000801W
+00AfU34WG000000008UM0C4nl1v@pGB@Im0m28tV30040q0W1X@pGP@jCyk180002dt0W000
+4002Q7FXkwD080008K4WsyDuNp4004G4lc1FyR08000400WT2aG@z600088rU30G2GktO53F
+S200A00n4m421000K0I80W10O84X010WWWG020b4G009KH402424000Ul30000000200X5W5
+0201a80G0H18802WW410018102020X002L0eK000e0M@t00m0m809W0060804010G9W0W0aA
+SI0C04GJ1j0a04e_U300g011I0GC404GW011A100500W00W2020OPI300es5IX12000W0G08
+G00Y0W0000030808G0W8020188a00100G286qUV20CG202W00q00000I0WG000A00080G667
+cBxD8@Q30G84W07TW0A10BG0XGiJG84Omy@60OZ185R64210mH70WI00MM0CCql400020WZE
+adj14000A2eYrxR1005400Y040G02802Yb_1000eq6W06o@XyiD8BW400008800eXz700G00
+0W81100W02WX9e9ffV900G10u0100000W84WWED00000A00840800G0WG1G0S@N200iIG4I0
+WO011209g02000n004f8GW0C2280G0WW0a804G2G00WGY04G1G0001OC@4A1i88G00JwdG8s
+6avl1002000001W088b6308000iw21m82W2080K08G07HWGG4b0G410080462e00I42Oa004
+O2A0220HG5g0800ehAD0000W0G8flcNAwQ3800C6YT2RqRGY_60000nY00GAsCa5G23ORGoJ
+CSlo3vPR000WZC_j94R900s0003000jQji1nwehP00GPMM0Radz9f2yGfPRibkDWoS0M8dXD
+z3fmV3MttWvzVuzuVIo73000Ke000cgFXoynO1v40800CIQ2X@pG2@94qCF1nZ100Vxex9f6
+QXIja7mdA00000UYBX0IhOsv400W0GW00SZV3s39XayJOB930002KAV24000C00200140020
+004OWjvJ000CGwy9CqS2DqRmgkF80000000lU0100008bTRWI00240000GW0K00IabV2hXp0
+0W00001000801280G00012000000e06D08mW008841002NHoGMu90010Oiv400080G016200
+00080001W0004Nam010024W020000W104W028mWh6000100mdC600X6vI00008080XKqD0G0
+000040008W0K00980020100W28801GG4I0000G200W2I000a006800000W2W0GG080420G00
+a082mjtL41x37dR0080WdVC00W0006G00800G010000A000GG010000003W0000000eS1002
+08qm400G0011400W00100YRqD0G012401a1sD00012002O800GWA8W0YI008K008a0Ga2600
+W01A080W090b0W04001Eqr02000K0020W04001000YK0000WQcDW0We2H80WRoJ0900mns9q
+tj1hRdGeu6mGH08xX4C200sba1O0007Yd10W000004008101010210GMs9yOj10001140810
+410205mWJ6qKF3808080021W0WG008m@@s00eCwRT6QxoWQmCOGS3sypW@nU0GW5m2Y6CkU2
+1gR020001000BqRmuLFW4W0u@@S47D0y@V20WG0kjmWLyVeux700009000084400008ea0a1
+jN1WG006160NibGPQ60000Y000400IiOXXXI80m@@CGG1008G0m5w6Kzl1xXPmzW9003Gx@V
+300C0KWv3vnPGux6KLc180020001ijd1004012004Jk1Jyt20WzsOcDeRJ6010G0010PMV32
+Rk21000lpdGl66q@F3HhR00O0O2W0E01918421080OG8G00WY000XW8G802000YKBUB0VG0Y
+Qr0080840eWIVt000C0000W00C000020K000G11WYpD0040W00W1830IGI04s@t04m0m420O
+2GtWsnJ00000WG08WW0G@@R0O000O1012I000YG00W0W10W43028WvPK1000DZG0WPzDG0O0
+W01K0XMO0YH2000030610uTp4omFX@@DW00210WI48W10006GpyF1m0W0WGW0UzFXeoC00bG
+20Sq14e480014G0004ii1AX406QlbIEJ8@C30G9W8D6P8gC3G0004Yc1huRGpyFWW0Sa30e4
+02018W00Xcj103A0004388084G04afC30G60caN50H50twp0030014a98008YUnWbOt8_C3Y
+2WXZPP0G030O00080K001100W00quk10E0G000008860WG00302WkxF1000Pgv64lB9pcV20
+0W208008G410000048008YW00000aG1000000H00000G210042GGWG_L10GKoU@d00200310
+Gr@jG2008gi4002CyyU2000DAxl5mu105@R0000hypC8eP3oFpWz@t8AW7oZFXeos8VC6oKM
+5000a4lMhZAZaGp_fpR@E9Oo@@FfKb7k3iYIgPuUU6I1W10004000G9700yKMKBOR0004040
+10W000cRt00201jSRG@p600001400W0G0WhkJ00G000W040040002GIyE1010000sm2e_XEz
+VeN@7ouEXP1O86S9Iss0G000010G2w73008GlU@0W00WjKJ8QS60Ya0yez3b@@mnsCywg4bV
+@mOu9yng10801kwc118000020ABF1000G0G84Mw_102049vPmTu600802000j700WZ@RfXy4
+646ZJ_D008A00W000204HPR000G0G0004G00omt086W0XfP000H0008WG08W0Z00iel1G000
+0G0100002080X0080O00000aFX4G809W0O_M9QTdX0xPuHT9QQ@108020IG04000KBf10000
+00f0G00008G0510000809441040e0iXk1004CW000204001WY20159800204G0W2e80G4G0Y
+H0W1n008000WlV02st080104401IcBXGvDeU_40G00qPO2pndGCz9Kfc1Drd0080G00m0@pd
+00000O100000010W000402010okj64Cl18G0801G004eO0K00101400408000C4C00080A0L
+1CaIY000000o25GWG0W0000PxR32S@XjjC82V3obt000o0z3Ynny60203000440WG00001Y0
+0000W8KJX1040GGo0000020W8G0C6Wm@@D0W018G40080410000818WG020W000408002021
+8080EWt000yU0000040200100080maN9K4y3b1xX000mL_P0200Gly6000W002WGz@68080u
+kV9stF10G000H04M7n00004XYPGan90yV1Olckg_t04G010YG04000000W1000X010WG_V00
+WXGaq64iF3daP000uEc0005xu4300040000003G6020008G000480W44001NwR008000O004
+G000010Kyb1CWC02Un0W000O0W0G180y5j1FrPW010000DR90f5408080202801QpC100018
+W04Aku14WG080000000200W0040Ko@60129O_@40zd0SrJKXQR068602400mHZ08X800440e
+SR3GG0830004G0CmkS6040G00CmC040O240120020GeGG0IW208H00OO0AW000080C0W0000
+WJT00GdIEH100G008050001G024b01000X000Ka434ZW4OG40G04GW18WA58004002000GG0
+28000002Wm00GK01mKW00181182W04400000GH016611002000009wXFvKna60O0081E3K29
+4G3D8aGa00440umnD000K2II0000808H000Gm0a5d10W4I8W2A0Hj812980a10W0vCG9a4Hj
+x60oq0ObAd0GG00002uls444001e2OGG040GO0008A0nmbW008ee0OGW11029A1044000a0k
+lD11110vnOGErjKVs9v5omPyF4XV200010060CIz3LuN100hfSlY28X0Gry6K2f15T@0180W
+xXI8A534000004IQpxD0Mu0imrLJzRGsq943d1frXHK0FqyF3000OW400S2cG1Mx14100Y00
+0Qrwi1WrPdIz6H1KXMh6W6ZO8pibAOd100G0XiBHBwj0Gn3008084100000Y00000GW00002
+SER6w3s0080020W0WG008W020Y000808W_rb000WGTJ60W20OHv4_Kx10080zcPGhC6SHE30
+8000100_lk100800002aRT2O300cLs0G100628X2YA1G200jqdGLQ6WG0000200990008404
+0006@q0002WtrR00G0W5OJOvP6Mjd10020W000@aE10100xVlnW9900m7hVyAMPcXVzDeGV3
+000W4KG2ZipmWq6G0000G000048W6TP000GG6kISwT2Zso0001Wc_D0100Oy@C0y0900I02H
+000G0Z80W38W19000281800G2cCCyl1O8028018W06P080W10GW000804000000GKrL20800
+QksWsWC0AG9000240G0020000Gm88800eHV300400W008S_40202G00000400W0XWejD0400
+0Y0IWdXC00000000Oj0004G21G002GH108IR38G000e0000G5mK@6001802000080aRMCuBN
+300K0010009q0200W50HGmG020X0K80X1000800090402e000aGe0W200IK00YW380GL0080
+W0109848c@l1G08008G0000804004b000400201W1Yjs020e02C80W0W20241L080C070000
+EL044000W000GW00320G01200W0042I02W000011Y8200900W08W000G1q0I0H005Wme80Y0
+K348WG0W0mmeW004G10W00W200001220G40Y2W0600222W4W000G4OC800WW1040GG110021
+4G04000I@gR000W002088000QYpWTID002002000080001GH8e00W42010G90014840000mN
+WgCt04001O0008080WW0G00e08G0000009810GW00K0a0000038bGW440CG0j8008mAG8W80
+0C0Wf84O2900e20210002O280G0Ke104gGzDG0000Y4048008K004C000O4K02G080W004Y4
+005kn00000WM1100008W4009G0ui93400004X00208200G0W0G0000GS00GG090Y0001T00a
+cZD01W028G0000SGa000cgtWAGCW800000400049000000m000500G2000101010NG000W0m
+8G100ehV3EOtWraD0020ICz68200O9_4W000yLV20002cht0G040PgO0820WDxP00mhzj@9S
+Yd18000_jmWH4PuxO3kKdXHyD0010GBs6Stk1Bvdmnx6002200n0GV_6aDT5VoR0000eR0D0
+0008080eizDe5E3cyt0H_C1@@dmHz6qfT2D4Lnly68G00fk@DQmt06W601XOmJuC00108pW4
+ggt00O0O0G0G00W0G0G0uyx7I@t0000uO600o281YX0000000600a@V2jndm@@90030J0Y0G
+z86Sll1pyR0W08WSzJOg@4wvtWwzI8yJ9Ert00G2088002kj2000000izw@N200044000slC
+1000Apu_0012008002440M6tWrHPOoV30001006060W4C00081408jcR0006Wc_D000X0000
+08G2000G0W00C0O201K4W56086000G0G0G000GH00000W202W0Wb@D0uV0GzH60062600410
+2c8040000K1G0G0_3Y10400ISEXy1C0m44W0008200401000010b4g1202000W4S@l1080YY
+Oo01201m1000A000A060C00004000W080W0WdKb100G00824Mwn00080G0G0oqF1W0000G00
+000mIg08001WGrs60BW4000W0e41WKpD0W00002080G0e08008008G00GuYV300KmW0C0H08
+1000b080eIjBO0G0W001I0PJB10SqXKgDeVD3syFXKgV018u870G90G02G000Y2u100aJhup
+008W05ue30G900628a5m3HN@024mHEGWI09C4I5GYazP0001HsqIaID64W000G01Cnl4WrD0
+kod101440083o2uX3la8V0300120W02ecz7QR5Z@@b0004101000108LRQGpvO00001L0802
+0000W01000W2CdXt_bWW00GoX6CLR2nZWnv@a00a00W020441G040000064100CkM5000000
+i3X0G2100m40K4WsYCeq9C00940208eBV3020400GGezwGIfEaupa8lwA04a0aaM500A6Qn5
+ZehP8AW4YkUZKgX94x700003mQjEB0II5GbNAK1200mLx6aOX700yWd6BXbrV8ws70G00yCh
+1hO4o8q9aDh1@Gdmfm646T20008W000012000000W04WjzC000010008G004NtRGV060Ij1e
+bVCYWsWvZV0G21mR694v19fD@m@@RiqS2h5Om@r9000WMF00Gw5RCK_CzAd00W0WZfV8IX78
+4200WG200000006YURPebj4Uxt000hfl_RGhsF08008QR3QXc1G0210024hWBXzKgeFQ3004
+OG004G0100220W1pC00W00041eK7P080020018000000AG0KX00000401040008041G2C000
+1G0000410W020100Gc10FYRGp@6aBS2pHmm0p6ipY7J1PmZA60G10wQ83Ikr00200e0G0YBt
+0208Y0480X0W0_dd10000180020W0000200X0G020Y040W08080040080W2W12GW040000mL
+6W000W0084WAG004080A010Go1o02080TeR082KWW0D00200Y00WQsC8l63kMsWZzDWG01Gc
+w6040000G0e0O0000010W010000000G1800oDH608W02X0H0G0200040028W00GW00G02m01
+1W00803400Y4G04W00W03010050W0O230K06G000iC08000W0014a0G8080G0GecUsWuSO8u
+N36moWjpVuYp4000G0g000000000Q000K0000012028W0000800001mhuD0G004020W_EJG0
+00G_v60001Ou53IPp00W3GnYRGNV600000qm0mVy6KsS2XFammO600G82080mAX6itW1ZEcG
+a36q1k15TB100W00040a0000100040C0O400010WH9Ou@@4GWCGCsh100404040iQV2niR00
+00I_201@@d00XC002000480Elt00J009fnmyO6000Ge5G300G0000YuYz40204iZu3000804
+20qHl1G400sNEXzsJeY@400G80400G0K0GgX6qkW1Bld002_n4Wy00W00103WZ_Ve5D3kgFX
+8wJe7R60W1WrpU5j7Qms@9010C0O00mKwI0180uAz40Tv0a5G200800W0100W200G0Kn06i@
+A30W00M2o0WH000001G102ClE340802sFXD7J0W10GRq6Sa49njO000GW7@Je1V3000mH602
+O6V6YiSZxzV8B@4w@FXO@DOt23000C0O0266440428G01008A08ccqWCyCG000IzN6aFc100
+2204010m000400004000G00vNQGz@600G7I0800000080030MW84500IX0WW000AGO0uqrD0
+001GgK60040Ay43m0m08WW10W07G8U608G0044000004080WPtRGCA600020100400600020
+00O0G0G000W48qC3oumWNyJ020WZG00300G8050G0m0m000WAML300C0ypl1Wh608001Sbl1
+0040GG800WG0wTT30002amg1W200QQt000A000004W0G1012Y004520044X0Wa00WoQr0004
+8hmA120mHE0WI0804YAZX4Xb8AWD000m66k1XeP000e4a4WZS00b0928aAm3000O9100K6V2
+8W42ue34G90A3284GePI00H08gC62DxX@Wh0G000W0XWGpg00Wvtf_C000320004H80Wypa8
+DK3_7m000We222004A4aaM52GW0o9YaiIDup430020COq60AC0_@dXoqyOWV30020Kkx6009
+aI7A100W400G0Qgk200W4vsR000OeoAJ8o@A000GPT00P_V6UlUZ8@D0m00mmSLqqC6C0102
+DJYRhP8AWD_@t000nFRodGmp6a5m6XcjHGpRaFcGW8WQ3DZgv_rwNWlwBOohn2P@2Fo@F100
+FhvC0sEy9qGl4fipG2ZRSZX7vIqLLSXiDV27dcGa2WL4P5dxdGa2ljWk1txBnfUOibY4l@@0
+mn7W4Ak20800004XH9IOIg40W00001K042000K00020W40008e00SgF3N1@0000o5QseVVRw
+krWTrDuDk40000090Gu@@7sSAXuYVez@700anckoL5sRGZz6i5F3jxP060AWP0D0G8000G1X
+cbPuBU90Ec0C3p@nuy@BG@tYq@hGzVAM@V26pFtjniud00e999jv10W0804H040WmMx60H00
+e9zAQqt00012lBintx6000WYH00GBxISHl41fTIn@600G4004H0G000005080W10a0WKXf1x
+@RG5z9000100G01020WGvVukT3G04Yqrl100WH@SNbPwL14000001YSh3P5HF0GC1q@l10xR
+0QeddTQh01Y80a0OmC7CW81006a01G000LtQ000008004Htd000H40101nyp0100WUwD8lx4
+000GQV008lLIISxaqrPm0000000240000004080000G010001GW0G0120zsR0AA4WmqJ0400
+008CazeD86R308g800W0HGW0000ixOWJG0840401600020016w3sWh@D0G0120004W040010
+00400b001PTdGw@I00I020002201L01088000X080W0I80G00000400W1000W00010qqi15X
+R021e410008I0GW000abj18G08G02400000002K3i6uUH08QN3050008W8O@N6cJpWPpX140
+200W00G03W202000G20G000W1W10000002G8000040001G40080004002C00D5O0000G00e0
+0W000X0100G0000WW0008062001OW04m0008e7K000000G004mG01051I0000G008eOcx9G0
+000G01q205Shi1HAaGsxO0100040400800200200088008SEj10200020G00AWeLz4414000
+02201G00201O000002aW000000206W00120WOIC0200000opvJJ000WGKl6Syj19Kqow@C04
+0GOJM90004Cv_3hA@mMt606000G08000012040801YY@t00wF0@@dW000140G44080crEXMl
+Juh0RG00202C00021m5_60410uCM60004SwE3f_RGzv6izk1fsR0008QR000000010100020
+00G0G40600400010W8000000m20000G04yjFCHNR0010Wg_Vuy132ntWNzDW1c1000004010
+0800GW10G0000010020W00001F@R00WDP4000O0000006WC00000G0000400010013180000
+0OW00000C0WuJL9CS600a10W00004280W0Wt_D0004m_u94@V2000204041008fMR6c8mWu@
+D0CWJmEuC4@l100408080qkl18004cE2cK_D0303W03M01A00W000080408010G400020mVW
+J000K000000m0n0G1W002W8WH420O102KQ60Wa00W15W3040KG2W0000000KyW00rhR06860
+34A106W0C2008KYO0n020G900480o0W080023SuYAPmR04000880G000G0H08X6001180OEy
+600G00102W00000e0000008m00004400AA0X10002004OK40802G2000008W10G140G00000
+00eJG00002W8W10001G004005G40G0004000W0K4O000022G050WI0joA9@jN10880Ew01K2
+WmYkEXcbJ0900000600K20vLRW0Km90g4fCB41GC00qLl1AX42Qzt0GEE9P1mWI8X0Ae0WKY
+4AWW08d5G28f000GW0yxPBNmp0WGWW0hPOuU30001bTl1DzR00322G1G08800008C0004Dqw
+4_Ms0@74000W1o281110KWA0244010a408BW76P@408W0008002W000W00801GuqOKR@3Xmd
+040GW6cDeB@400iYjtj4TNxnNcXq@k188000W010G00fRUCozdXx@D0004GP@6000f100000
+G0e@@D0e6ZGDJBj_F3fKRGsqLavj4XOd00aYXS@V0000DmG0W0hhOptSYkE70W800G400GhM
+BR0iEwQ600aWb5WA9SfocN859l1WgQ0ADMhUZ397TI0000B700e_PCAYnWouPeJ3UM7Rc@@D
+00WoqznHTWF33XunsRa080008W0mctO0000AI1dEOYXJ@D040009W0Wv9I8BP3Mv@1000yA6
+00wSt91102400W008008002010m9P6ypb1040008C000WW0400280Y0G0048a2AG0G001200
+90000810400100G0G0W0000100G080040028000Q01010C8b1W02011XGW10X0W420200008
+800K0800200G000022001010W00G014VSq300WWRqP0010G00108008IDt00G00@WR0G140G
+02G006W010W00G20821880GW@qI84R3EnsWXtC0G000OM2080000080W00018G02I0f0002W
+ldJeBCRom330030bSp0400002I02C00080100400W0W00m01100008G0kmAX3vDWp00m6wFy
+Xk1000K0081000400W000005002080020W02aOf1t6wnOu60100uMT3w2p000082004O0I20
+0C8u9y78000KjX14G00sks0000CPuO0W00000yW@MJLgs6G02840000003WQ7D8v_GQXpWIq
+D8bR300081000G4r1m1tHjNk1vZP03Y0020008800G00001000100200WWm4CW00GGIP6000
+W4020400000GO0CWC000W000280000028002000000mq700qilMt@R0110WEzPOvm7gJm000
+01W400QaF100G02000@@t000B3@@x4008WynI0034500L418eG00KYH0H020i800C4WW000W
+I004080W000W014m00m0c1G0W20W021e0001011894T3Wm480We4G02G10000Wq20@@x4040
+004004G100G040014W200WG0003002G4418000001aW22e0020120W020W0gWt04WW24W580
+m0Y00Hf021A01Kb00WW00H0280G080W00000ZK00WczTAgi7GW2Q2Gb81P880a10WORDG9a0
+0008G0G2000We100n69l18005e4YAXa01W003GoP9q_f100ckYc9geoU0X04G_O6iYc10000
+54400W00WGW0m2R6000000YA6O842ZGGG0G4G4200aSM2fxR0um4WbzZQ353kORZRPDG000m
+xmIypN2FFOmk_TH8208HN9EnrWMaP0010y5hFiZR200G000m00001000U@@@T5LM2XcnGUpL
+aK63jEdmkp60Sc0u@Vd2DJYeog8qCL0000EddA@@@@Gu7M7UE000uK500iA3F7PpGTbR8000
+0004W080WZp3100GC010010O000004W000W0000mnqDt68040u4N3syEXXiD8Kq4c__10400
+dVRGxp6yhk12000MpU30WG01SI20G4WrsV0qW3Gnu94uv93FbG3BCa@f7xsQmKyd04G00010
+K226000G00002V0000000W002Iuc10400Ldd0100W4wF9hU3k481000000G8wJtWvmDG4000
+002fejJOtUCwkrW@@J00mvTwv6041004010W04000040080cNF1G40G0228k9F180000K8Gl
+AF10204000G0400000010028442WrmJG0040WW0e@@DubR300G002000G080W4W00G80L5YX
+G00YDqD0011GBw608Q30G0008W20002001W00G01020G8FU304eG18W04210Y0W00800mWX0
+W0400080W0100WW48211G0Y0g0040G10000LG44010200G0008O40W0W000040800400W004
+1cdm8z6000WG000X000WFwD020Gm@@F000e0000000GY0xJ00008410W3tD04G0308120008
+WG0W000W01004KG0001U0Y0ZWW2420080FZb100aG000o80X0002G40W0002A002e00WW014
+W0043G20W2WkzPub13000100G0000084020004G2000W0G8y@@60280IOF1001000KnG8400
+00W2G20GEx6aPF30120_Vy110100K0WdEm0000K8020000000G1gCV3cUsWs@V0602mnG6S_
+V2vQ238K2WPue20008000aiWDuzV30WW2Urk1Bn23008MW100T7H5G00e@uJOXQ6O0O0qtFC
+00e9twqiYz2vv@D0mr0ikMK04000000YGW0000Wu4_6000A4W0Y000000D0CZ0330008B100
+Lk6501W3010204G00410006060S0021008G88u0G0INDXJQL1002tChK18284000000WK000
+OW02WGWK01ku008a2mx@6iT9C0k802nbgAzD001000W1G020W0XE10002yfLEq700wn8gS_D
+00G002W000100200GQxtW6EDuPV6gxd400H9PA65Wa4210m801H8082ZGO00089000W04KC0
+000008H0002000003Y800Ws_L1WQ0m5bNzYZ1006000O5W_O000W1000000110RAF3H00WOm
+M20G0WLhjMQLRjqPpSfpchnWDNJj000W000H000MjsQfMjrIhDpbMRk60sQDj200vzV200Q_
+vMwAql4EwF1G080HndmikR8W001004GS_60K00ubT3Y9sWnsPeQ_4WH0G0042Sew7gGq0008
+000G840W0qGl1hJd00L0YDrD0080m5x6800We9U32xFXlnC040W000CWToCO6K3cos00802r
+sR0000AM60000008808qAV200010W02002061WG20010g2W0HDR000080WH29pR01000000W
+zeRWW8204100098000008400Pa_4QRrW1ps0200002GG08000110W000S703xnp000@eX_D0
+041GcO64_l40050cm@XgODOzR96rF100o0tXp040440W00WG00sXo03G003YlHd@6G01GuuU
+304000Y@10800mBN6SqT22004W0010g08KW0080K502G1G0G4I_noWslCO@B3020A00G000m
+452Y1000O4000G04W00Ka040G0020G2W4W0WG40004G0001fdA30O400400020020XGXEmD0
+0W015144002044G108W080G000808GY000W1000G0110G00010000Ea20002W0G030401000
+41XWGG0098WPfD8Cx4Y0p02000800I0W42220WW00mG0U60420Y0000HG0eprD00W22W88A1
+W00Y00248W12080G422500080KJ1ee220HHaW080405000W000L52Yg821G508228G1H0W08
+00G800028W01008Y0000I4580000204006000i330000004Sfx6ihc1W090G04IW0E80G0H8
+0282SK40m802WIG409W0GD4W1200GH40X20044G9n00A20H00XA2W0X2G02iY00G8180W0HW
+Y010404062I4H0W000W82GW08m0W0005511me86404G0000W0G00Ae0GOQ020G10HW22W000
+5a000a000KG0O8000GH001A0HW2WG000120m000WG6000W0WW2XevP30000Y0051WGW0Y010
+8X000880G0XC0204518000G0G08WWKX0580G2X050m0480AaH0XGYW0106800I1420Y2000Q
+8G0W480WG020W0400100C2020a0802000G0ge0008W0G0000W00e8G0m000W1800080WamW0
+2006G820G004G0ADt00n00000W0800Cvb1000ea32000000G10840000W1ma000kcp01WW00
+1G8000008GA0000006K22G0400900240220W08200000XP3DWG010MG000808400000mG000
+1OFV3_JF10W00Y010QHXX2IheiP30001rH_3000C7vtWcoJ8MV308H00010yOV30400EtF3V
+PR0000X@zD00080080YYvPOzH6wLa10200Xr@mvv6y@V260004200200W8_i4gat0nv60xpo
+GOt6W0000100400Oa4yDeYS6010004000030004041400WW4G0X80aOk11mRG5w9iOc10W00
+klEXGpC0001GQ_C4P93PeR0008200Y10300okt0000Oc000AtF1002000W001014ml1000A0
+W5WLkx3L_B1000260W10308wDlYJzD00028W002WW800100IOBX1@D02W0000G000H2W4000
+00600018Wp700uAiJx30W0W6UNYbuPekU6syK20080G000wxp00000600K8080000Y050800
+0X2I0m4W1000W80iQl10WW0Iwr00C000O0O8020GX2XW4G04A24WupO0Sl3000000K0GFsR0
+60023030800G010003G0400C1O00YQjCOP13Y2m0WG000O0O8G00040W08000C004303000W
+0000W020010G0W20105000pHQ084P00002W8451G01080000G0Gmm6KXf1H1O00008000A40
+001000G1020101OTz600WW0000ZW00Wf_D0102mn@600GG000K005Y00KW69xR0004WA2D00
+40GK06aml140W0m800eGW8WY001000Y0uJuGq4G800008WW50850WBE8220nc@mu@945W1W0
+20Y2e200JfL@pGg06000a20m57m01WiqVuEv4o7m0G020a20u470WiQi704G4008mG000u7L
+F01W021001K20m6iI08u1uKe4_St00280V5PmSiL45G2v3O004008800Fz7I5y98200W000G
+u_OK6l1BWQmc664xX1I300sf2300010008cgmWz1sOkV3008800W0S@jA6lE10088j@dGrsL
+aif10G001008qYT200_l_@l201G0400084G20000Ga00INmOi2g10004G2000a0810043201
+Wr_P00003500iGpI8RV3YpiYupOed@4Qwt00Z10nUpGIQFywV5f2i1800WGpOmQ4ifrg5000
+300m502Dx1hrwgH1S2000S4iQj9fzGg0X45W7TDlnxeaaQE3ziR00WNiMqU000WGJn60X028
+ET30021KwU2rTdGTG6KWS2Tld022080010dRP0040W2QD8OB3YWt01422debmso980a002Y0
+Gmn9ySa1x@d0eO500002W000_Js0841000000G02z1c14200GY000000P6O3sxoWGqI8pT30
+002001G8Gw4IQrZnwJ0004G986G000000W080WWxKJ81D3004Wq_Q225000W0000001024GA
+Z9qSl14080_@@aIzP0000HLw60002000GOtq901080G000008mbfb000GGv@6akl1Fhp0080
+0004c@lomWI600040780018010W1008G40W04Cca100W0G0000200008G0001000010W0800
+04010G88Q3IEo004804a00dc91W0W0010080G00G00WWG8A86aAG80eW0K20420002e0400G
+ir6000GiTV30800020G00e0000440W0001000jg005G0001W10W0YqaD000000WWWHpC00G0
+08800101G00W00000AG000400G3H90000AQF30010000LG010000W0840020000S0100W0G8
+12W2AA00G132Y40KK0580000100084004E0W0W600G011012W012W180O20GmbZd02000000
+80001tjs0000Sm700_@t0G010xDRGm2600042G0eo_t6G0000002G_n6y@V200W200011GWW
+00020W920G0100W0K0140000aes83000G0820m020WHGW0180D8G320W0804075B0426W10b
+0404G21m1X8GW07G0040040WQlD8q93404010004G000G02000rBV8R0010K0A0G@kd010G0
+0000R8Pm@@608040412mkwC00200GI048010W00Xm00GD2008080X81G00G00421540080W0
+20m1W0G000YW0YpuD0WGG10002G80K00O8oOtWplD0e000O00YUsDukq442004sk1WlF0400
+000420000oEN900800400W80405210WW00WG40zIl101000100CKV2G00066qWRnD0280Gww
+9G0G0egG3wIq00801000Z6fgYY2D0008Gvm60008uVe7000WgO00ODv400800090OpS30004
+001GudU6oqsW9nJO3QFIYFXqiC0010oGt6ipy3jpRmyzC0G20usa4E9t0047eXnYHXz94Pl1
+xK@mht6KRB9TWOGJ_6G8GC0O00K5u90002O6R6GG000000OMT3O4O0i@V205800000144087
+V36ot09002@FQ0Y0mWafP00086G000006001000WPW10n0020040C3aE0C00000m000W100X
+XPGv@6aw03@rpmiZ9qt@35jRmCv6yJV2S600U@tWu@D000a0810000000P80chD10020H0hI
+gP6SKY10G00UBn00G8W0W20e0YWO2O0eUS301000001W0W00004000Y20G0408020004048K
+0GKCG0D0CnYd00WqL00000Ge1_@t00n00e0101W20040Xm0800014aqdJu3T3W000Y8WX100
+080aO6m002002c008000012Gp0300400030@@R0080aVvD02000606050W0G004W0GGqlV20
+W400W0000028qC3Usm0140008G0G0W04ld1nec0Gc1W0oD00C0Hy@6G0G0100G06004I0K1O
+000@yt000240000110438W240000WO2801000WO0G0W02WY12J02mfx90O008ViAI5xXwrP8
+fC60NSWW4I18ov4c_t02100vdn00022G000a28u47mWiky3200024m0000f00WX050WW4f2Z
+KG1GA090W10000GIKPg4Qs3040002L20004Cov7008Ac5G50H00YAx1000n000024m004000
+WU0G80224w1H808O4H9WO00em632DRZzwz8E_A0Qj0KoV58W800G0000W000WW00002G402x
+7ro6oIO0008qC36YRZZkV0C00Y0000000eo500MvN2G4202X050YG080004G10491G12010x
+wVIKPU4vi4dnRGapFy9E300KCJ5Gb@@D87wAEAFXWcP8qCa0Fvh6QsC0OprKB00W80087QUs
+ztiF2UClVOkLFXneD8iULERtWHbP000kNjSdq2I5tml1000mGnJ0200001000WG0RmPGxuLa
+sy3PaRmYy60aV1u@V60G0WiLE3VUZn@1Oix@3FKwnEjCyZE3x6PmNJCu400u@V6k1rW8iJ8t
+x4M5I50100bObmxj9Sqc12004cQAXdvL10mdq1BX4f0C42000G40KCM2j@RG4g6CyQ20G01g
+FoWT2P8xS308W00800W008001000B00FLQ00W00K08ep2PGZ46ih63800826sWuwz8s@4000
+a00G0OGT300K000G0G400002061644040W80000W8000G040W0010G80G004400jaX10100I
+Cp010I8Y08W05414mk1000OOEGX0GWW0W0401008W000210G008W00W08uS30080qSU2DORm
+zMF4xV2joPGzH6qMl1G00003800208200001W04q02G01m22Lt0W08101010W408208400I0
+00000G040G020W40000e0WqG48e04WG14006100W0008v0W2230f20G80200GO000K0201G4
+G01800WDxD04201010W_oUeC@42TFXVaPm00000GKWkcP0G000G80WWYJ0400000GWRcPeXm
+700000005O@@40xU000000003qk8Rivl1DDpm4gL4QnF1ry@FF@tJq@xCzVEL@Vpr@ra9KpL
+C4TME002DIIpU0G00tgBHz@6010WeBM300Y00200OyU3G000SVl1W008EP@10200000W5F20
+EJV2@yR0800mjwJuDV30800Ski1zzRW000WB@D0014GNz9qkl10K0GkJt00010LMQGv@60W0
+100010080022091zRGV@600GW080000180040I00800400qvl12030A@t0X01000mI100080
+WW00004002Wh_JOGA3w@t01000000acqs000W021108G000000Y00WW000020400H0000m0S
+Ej1R5MHYJLyUHKD_p0100WbwJ8t@4cKa10400000O0000108W8ty4000m0002W081WG90000
+0G0G60040000WW04020001080GGe008044010WW000000GGYx@D081280006n90800180A00
+02004G020000001080008000W0G0WeNV30200G2G880V3W060X040004048G004K0000101W
+48000WgTS302010400C_V300f0G0G000010102000400504owt02000lyR0000K80YeN3B10
+G011100Tqc00WCL1401D@oW010000G0200400e0000W8yC300500000yXL34010qVX1r_R00
+009008W5pcGJ56080AKH240000244HG010080029eW203800W00GW440000G000WA000eUT3
+000Xe000000W020408000GX4G012W800Y00413f828W000WpG04050022008G0WWW02GG408
+Xe805K0W0G0214G2G0000H40080IG01GG0284H400I0040GW088000004G0002D400AGG038
+01e00I400WW40208000A80200a02W0P0080W80X100440YW44I2200001480Y20000H0000Y
+000008K0G810000AK00000048azsDG4G4W0WX00800G8e0W000000W5t00W1000100W00010
+4800W8044404W000120m0028UbsW6LC04m4GBw6018G8GV3004G0100008W14G0avfDOcD30
+080G141000001G2WIeD00G0084OWCcP040000004100Gzj@008400021G000W4002Ge04W02
+00WQ68m0Gb5Q00W0100I400X0024O01400W8W040000W86rgR0W2808G8000H00110800800
+80W0000042W088M001G0040064004G4WHPV0100240410000O0000004W000AIrD02000010
+0208mwyF04150400m1u9000W448008002G008a000UEC10004400W048005W20GG8001G0M0
+104001G00800A48Ck40X00ytl1D_RmM96abl10401_KnWQqP0000108WWtBCucVC000HuB00
+08400G80004282001500000WG000W020G04800xsRGwh64QE30400a0a0GG00000W400GWnd
+PerLCW0G00000W1W1G186q_l1CI000400H0400002000W28000G00A0000H0BGZ0GWmn@600
+ebExV30800r7l1G010X00045P2fOpGvw60840e_V300W0yIi1000WWW1W5FE308000G00_Lv
+6zy_Gow9qzl12100s3F1W0000cF0cWmW7uJW0W0mru9S1G2P2mGAdCaYV2vc@01010801000
+050083060K8xI302Y52e1X9bG300400008200000508G8WGq00GWeW000100W21008G100q0
+aX08000GG00W00001u00G0AC02K40WWm0202O00211042220O48288GW2GWe1a110G000000
+0111yR0020800008WWWWXW51010G00X480G20Gq4a100NMF102G0pyRGXx6W00000420264W
+IFIe@U308W0WHY00Y22000004001024E000A001K400212W0WwsD080000WF840200W0200W
+420080G0A00PGO0C000W000W20KxT2dCQ00f08J82W8K20HWG120A4080K80GW220G18800R
+6m0W080VadGqr9028010I10uY3m0hb000GIAr9048WWX485GWBke0a0m_200000W20XHNd08
+W0myiD0842GAsFKaT2H18100en3zP0041m8z90G40084900GGmfrJ8OV3m400aIT2000G08W
+00GG09wQ9000GBC088FR90212in@3vu@0000602eW00488002isV2foQmqhXCUF3FdR01W00
+00W0400a00000200@D4300W00WW000W0mBK60084voK3004000G48HS30WC200W00W204000
+0W80m000282W00O0Y002808G21200W409W40010GA830100W002O280W00HcDtWtmm010000
+0G00028@rR0048200000WAq000000900e8000080WA0000W0G0220G000410W01000J10Bdd
+0020YvxD8g63IzC100000044b000O1200001WY40009122600104m008n011W50840Ga0008
+G201I40240OLT62iU3000M0020IfE1A00OAW_O00GWboz3000GS000arl1bzRGUs9a5W4H1G
+IqrFaIz9vLR000300i10HNB100r@yib8BWAI5GbWwDu@V30001KxZ1TvRm5gIi9767ip0056
+WPsPeIP3EQ@1020WjhpGkERKRk100001X80G0001201mIl9010XWWG0GLy98000020WGqy60
+0040210GRz900080080000GXyNC0000hH00XhdDu7B34000002011e0040000W00010WAlt0
+4W20FCpW00810000D3OmLq9ivy65xRGFzC00048WC6Yr@120000I00Ubt000fiP1mm_pFG00
+0e5x4cVtW27I0030mqp9KyV2X1a0G04L0W01WW080G040010W40000004mW20RxR001000W0
+8DNpW000WkgP0300Go06Kbj1WTQ0AnE1W800401002010mG0S2V300W0020008002120m_gF
+102208a0GGWA00C0G1201200G001020G04160009W0kqFXLZI0G0008020WA000028008002
+000000uN@64Yl1000mD7m0Kml1zrP0WW2WTbD8NS3G0G1qxl100WW00K1SEk100804001TTd
+1dWaGX@9002201G0102420100W00eWG4G8008I8200eYY4018GW03Ym054f4080K420W0W0K
+G010400G014W0020000320000G050000G0W40400G5101020000L60W0011000L40G100000
+00440K00G881001040004G020W040002208m00KaYk100WAA@tW9WC8@V3YjsWjqD000Y8G1
+5640105zPW20X00001020KH0KH0100088o0K0G6000YG00800008WG0200YoE5600e020020
+0020020G02080018Ssd1We1800G000042100Gex6G0808m93m0000X0GG08W0000200W2G10
+GX002000G84F3W20W00G0G0m000000002GzWd004C04G00080G0260380G444040G04HW12m
+00O400W02W80000W8G00H0480000WG80y1l1m900004G4JX1TTOW00000G200002000mw4GG
+00W0000440m08000002M0080008e8GLy6W0G008000080001002200I_t0C1G0Nh@Gjx64yU
+2000C000K000G08G8000200W000010001801W0ONh4_@N500783uR000O0G010480000080W
+10G0180082WQyJusUF6fy100200G0W08100G08e@3388000000weh44000_@VBYAL0ww@190
+90dtRW00GWHtD8aTO0W400040uHC3_uE120W00W00I5BXXuL1000881W00000a00W0a00000
+G2002Kmx6Cpl10m0msFqWB5QPsp7cZnWIxJOF23kKG5002uJ9OmHBFCjF3ns3300080m1000
+0e000403200X210150040408W060eG326000000OI1j0ww4W0G0C08a80YWK0K00C00W0020
+YW2WW2528020100e1G30GC5c1@zV204000I180G88e110Y0G8000W00f1100GW40a0BFp040
+81R_t2000Cw3020W004000GG0000Y0810WH03020GG00025GW8WW0G00100Wd2CuLzMo7B10
+014i00fo73Zhs9100iOg0I0A0a20m5780XmK1i9P_708WG00G08Vi7Ual5WIF00200e000qz
+V204G0008KbAGE0W021We000000G822000a4_DW040mbT60J0500W005W0WgXL1000jWX8A4
+H02W2OK0WW001G1XGq0022004uG02A00G00CGX18GG0E0422XhlCeHVIcG91G0G000W4AGsW
+ZTP00n00020WpLK10Gde4402m0408GW8a008205G010042080W298800G01aW00W0Y00120G
+KWg6K9Vi7YA3Z@@L18P20000fGpm0081n@@m4Q63vZjHgO6y@F9000emtgr6LcA@@@@@@@@O
+E6LTxn@@j00ugvcQ6UfpZ@@z8FWJI6O6G_E012mJwaI4AJE@@Z1000UQ100xopp@@RapB33D
+m300Fa@@NQ4U3004020804400180200000020W6TF1000Ghndm3yFiqI2HYA1mh4eBqbOIU9
+Qnm300GG008C0000Kab1BldmHt6Kli1Nz_m0xICuf11cA1000EB180VuB1G00ekdt80U9005
+00G2000001WW0W8uD0GW0GfN6itU2drRmEyC4AD6HJ@000xt@@HQcUgojv@RV_lse@dTw@Oh
+_@rh@RDx@LtOxsT66RN204005iR000202004XWAnnxI0_o1OkQ9sWcXxdIuqrGY1bXh@DeXR
+3Ioc18001DsR0122WsfhWG00000100X0000a8000080202000lf10WRvD0W04mdo60W0W8cR
+34A001000Ge00000000W0W4000YjEXKhP01180000Wr8DW000GyzC0W00uZR3wkEX7xJeqT3
+opFXJsVW000Guz6010100W3RnrLaaF6T86IduCiDT52W000W000W0G8WrA0G4000G040G000
+00GG000nyR0uT1WkkDOqO3_yt0GG000100G0g002000Ge20000001010200MotWk4U001WGv
+v6W120eCT3W1W82001OhW70G000G090W12W00GG00800W0012W000030W000008021000000
+500e0W00G040uSw60100W20000002w102rzR00O0Ga20004106St00W00008404000G80uDV
+3W008000W082W000060000W900M2s00EY02000G0WWSKU200W080H0aeR28440kwt04G0100
+40G008212O010I008W04200AW00G084W0000144800000G0W0X02G000Y020100022910007
+_0002G094WG880000021a000018a0WH01W0028ibR3000000Y00100mQs900280000001WW8
+AC0GG0W0W0WmoD8OT30118210GezV30008SdS2G010010802W8028W0OG108W020005W0080
+2KG0004044001102G000512800GGG0G000Y08H000W4904021030G208C00a1804G0080W00
+K100820001a041000840800W8400W00G000001Y03000Vvd0400000804011000GKfU2m004
+000GKrU2DkQ00G000Y8104H0W002W00101400004000A2F2O01000000W1qR0K80WezD0200
+02G00000y7kQGsr60040140000G4XRgDOdU6ovt08W02G000000811000Ge0Goz6W1M11000
+2200mS1CeYV9WG00qYI2FxRG2w6CYk1@TO0000102G000YW6vsWwuJ0GG000Wfwp@DeSL3Ql
+FXq9CegT3M0e0G0100008W000Mpg1xpd08W00G0243@R00G0000C0000002010008ebz4W00
+080001040K2@9yqU2H1O00W0100W00102000400021G8GmEyC0WGn20000G0WWc@DeH06G0X
+0WH008V@A00420001eY@4gSc400010200G0064TD900802nsWG_D0K61GHiC4_V202800000
+aAm60808UkD10G00G2G0k5dXdCIusP60001Mzy38010QO4ZIeJ0000ab10WsoV0040GiDI4v
+e4Zfa000O000W0TOp000GXiYJ0040403004400080W8840PGO004000800402000001m000G
+1000001000O0m0G00022080L08AO0GJ0paw6040000GHyH790G000080Gt060040440205W0
+83030W000000mqck12000W0W0a1l100W10W8C20020GJ0ODx6WG000e000000G000G000010
+0We000020g0100042O04404IMcXyiD08000010WzbD002000m0W1SCeQT3080G0G000q_300
+0000C080W00000WW00GG0GGW10G0220H6048e000UW930K01_tn005000a1WVZt00G100W1W
+m0m00G000W00mZyC0W61000018C40I14SY30IGA004TT5jOR08W0WGiDeh@4Yxt0000WK300
+UBFXyiD04c20f01En128r_R0Y00W2xJuWU3I5810858W960b0X04d@6W1G0Jfs008O0dlkHU
+r6048484R900C6bdj4jhOGiA6qsF6002018000404yBV6sANbeh310080800W@@D00F1GUiU
+yll1Dqk1000aCmd94@GE_tWqkDGv00G_kR00G2umK6_@@1003004200080W800H0a00O01Wb
+@b8wQ343004Tz3bX@GUr9i_D3p_R00WXrK1yuXh7I50Z_jD00G0GqrI000W100uIqrI45m9Q
+5000qUhcAmCXORG_0LeL00iaV66MtWfmbuqyJ01000000Jf00GpsB1W02849300200400QyV
+3ItoWirJG204GZp901WG0000KLy9000020104WG08000001e0Qmr000q9NXXHny6SbE3dMP0
+W20Y7d3vON6EZEXowD86B36OFXZubeRg40H00yxl10PT0Y_7Zu_hOaZG00801000010G0004
+WawD008GG7oC4Tj1D0O0080W8fC8@w4010000880400GIL608000000j@10WjgzO3V640080
+00G8IXD0W0408W000I0GPs6000e000040004014G00000080200040014W00401A0h8R0G00
+eAKC0004001O020X0TRp04010003M7lOGPT68010eVE30e0000025W00OGt60W00eI73GA40
+000e0418000000300G00400GW00200080W00W08G80h6R00H200004028004W0080G10a0W0
+08001400220020008W81LX0028e0000WdHP000WW3068XC3G0080028010G010WWP@D0Cx0G
+uP6G00001W0004WWRqCW04G021W0IG094aWGGm04842A102G028G050018G00048CG220W0i
+4000W404G14e0XW00G9010giS3Q4m000000400VFpWmvC0000opq60Y8WWG00i060000G000
+a0IGo0W000G0m04W00000G021000G800002080W000GOP02G000W0G801082W8004020004G
+02GCW0201131020W04W48OW0e00I0e02011CA600X0C800G242H0W60D20014184111m0050
+005m01810000W0C0006010200801000G30004G0040I8W804G0080600080058W4440A0000
+G00600eOH640040W880100mUx6Kik1000K_ynWGoJW000GVx600G00281141108000JcbmOv
+602C0O_26GG0003000A000800WQuV00008800G010WW0000120aFc1G0006ns0G00300W1QH
+q00404080008401W4002402800WmUC04000ef3WfhVG0G002000100X2001kYt00004dHcmI
+P60G008SA3W8000b000111Gns9SuD68G000080yUd10042IjN24040XcPm036aXT200WOD20
+0iDc1JIO008W00101000I0G002809u@@7gTqWe0CW0W4mO_64ik1ZHQm@@6000CY000400I0
+0W420808wfm00G000001O4O0ygf7Xcz0000000bU@TpmW1F00008LW7U_dXB3DuRT30Y1Wr1
+@308W0_@t044408800sxd480009@RmeA9i@l10cM0oyV3W040NfNHw@Cqsk1vjp00820000W
+4W88800C20GcWCW0810Y005048G380q0q00058qi4002W0W00CcV3C0C1e0000202W018040
+o4W100100000e04000F910WyACW200000HXA@D000e000800HW6XcP00W0W58J00C0Gs@601
+01G1000600010m0G4W9030000Y000021201G020Z82041800G808000002K000WX00W10000
+40204edp4oCq0400000e0_@t00GY400020Y41_qF300Mc_htWwIC000001O0O0W0000G0nY4
+08G0082V60042G0W000020001108W00H000W802GU848GGmD_600018HD3oBp0000f000G01
+40W0f01Sn1OePa04uY3GW0mx@F0M_18qC6I5m00850WBE0ltNYGpO08G01G0GAW0NS24406f
+d1000J0004oBp00400004018Y024O48qiAEpdXaoC8qC9000G99008qC9028240M89fP0100
+12G40jso0100005007XO00500088200K000a00222W00040O003e000G14W8004gh7t@d000
+gZmn210W0mGQOiEc10W02wMZ100G080WQ0120GXWAW00002HKK240G080200GK0W005G0028
+0G382AYv_Z10G4YJPV0Ko3m@@I00420W0000600021000002Z2ZkGI0W0C800000WG8@@R00
+m20000000A0YAB1qd3002C0ggTZGps0000YY10Wyp29LWD004Wjzs3fY91m000R000Xcb30W
+1@eoE9qCL_@@@@@Dhe7C_@V300z6@@xqIYRqqT2Xwcm@@d0ms1Orx4k_s01004NSRGv1RyZt
+9dnvn@@d0000sM00m@@EDJv6Tdd0G00Wni39IX7EnEX3oD0W20mljU4fmCzaQmHu6S3U2G00
+008G0GH0W0001onT600004A0288004W01GW000I4t00q801k@m9vCCwj1DNiHJlIisU20802
+0G00yMk10A0a000022GWImI04WX06W000WXYW1G012H004801080420K080200118W024005
+G010204K00W02400100000WNe00080020G0W000A0850T9l1fKPW20000H000020450000C0
+10G00O00A0010W00802410AG08eJF8020Cok10008800G00GW0W08Y0WGGW08C000800e0GW
+G820G130g00m00G01284W80028005X080140W05m01O0118W000000meolz6awS2HA8HXr6W
+08082@4k3o0G008T7NHTxFaXl1a00000G00A80v1I3008eSci1000800G00806OBj400IW04
+04egV60jH000W0080400000e00IjzR0G80040000W100048000010K00000400080040030W
+00W00G00KNq6iAp@fwy@fG@Ngq@ZIzVeM@@9s@dbXT0y601800000e00G0000W04G40C00a_
+g11aA10P0XjND040014W001W0Y000OL500yWk4ZldGPz90G40eDz7cJFaAwJufU3020W00G0
+000W480G0WW08W0000O000110000400060100080000104H4G0W8C02W0100100401000000
+0mH5W00mz_94hl1L_d008102001fQdmPPmqBl1z6RGJrO09000010GTs9000YeTR90eeWist
+O408000WWWG0040002PWH0e0e004O00081qol1tTRGz3686144G8E0014O011G4090GW0Y00
+00dm000000Y_mD00G0HIuC00024081W0040G0000H00Ur@XWtmW010W200Wg@D01000W0420
+00e00A200W04Fb1G40WG440W0GG0000320100004006G008W00O08r_4cRtWW@D000EDG0GG
+W2W20Gm001W0iwk100400042KQU202082tt00W0000K0000G0K010g2W0044WpTh00408200
+04GH4040G0100W2840444W20004K15OW020G10802000081228854WG8WHgG8W0f00041402
+2We014m42082G0X400W2000H00400400006H64000800600890008001e000000G8X00W4G0
+50CX0000121W20G084G980W0010W041WTwDOTX463pWMSJ000W044900002Ge4G005010G04
+8100410G2002O001W0000n010A2080A0528G0eW14m42e080840WW20W0KWWm08O41002109
+400020GK76000W3c58010G03mW068G80W00MJh100G8002400G0400010004020GjnR02000
+H000W108004000GWQkP3oItWwyJW000Ga76yil100580080H0M000G04aG1081WG0W000400
+040G042040120m004049W0001jPg11zRmXv60012001000WPOW0040600k6rW1@D000H820G
+200030410040G09010W102OW00W4000WO0wCt019G0Jlk1020G0C04XspmPz688G0O4V6000
+30G02um_70W10IW10e_V60Lf000002020OXnI4VU2TTcJOm600020040208000W207sRmv6C
+4sF300W040001004yNQ6000XAL00Or@70041000800G00020bQyDuPoDkXEaDiD8NV38W004
+OD39W@08080000G0220Yk_100@9vydmm@60e0W00000010euqD8Fx4QeK50008NzdGIm94Tj
+70m000010DyV2DRdmQr60S71u9W4o5FXu4uPGt4804000G000080G00008KX0a0800W82a1X
+PaQ3Eps00400jSO0100030304002e800I0W0aY0DGqr6qUl1w200Q9t04000P1O0O0W100aW
+00450oW30e1WPM6RMHm00e002808M8q00K08KW00sCd100108080K000yLl1XrR001130e00
+JfR00040001000Ga0000000O0G04001000W0004000400W040CnV30100SlX1bZEJgr6028C
+8bQ96CzXehn87U30bN0CaT2fOd00a26m5788140op6ZSPR9mQ3EEoW_rt0W0YGqrL0000sv0
+0GAsI04Y40008eY00WbWHgQU36ktWO7IeZV902080202eQV300Y04fX100iPJklYskJ00010
+000G02WWd6p30W808000000X020000080900mviL000W00G200G0000m009084G9W0G0G0e0
+00uA0WyGhuy@40m0C00W0G041Gyos00OK8RQ9kzMYGiDG1y7Jqr64_E30000r000aYz6LgRm
+HljaITK00Im2iMB0002TeB1400W@nn8_C3W040yng1W008sBo0GcC0xPJrKx6SKW1hj@mHhC
+Cwk1fzm0G0040002TFb02010000yg500sd_XBgbO7@7_PcdEnLSfP30W04W0208s@7802080
+20Onu7_z9101804480G4W000W04G004022G0100WZV0YbNYcvV8IXP00H1G180uwV300X020
+08000Wmlq6qCT200G0G0000020u70300W2W000000020020C0000G008000TWl1220008WW_
+@V2008WIh_XM_D00G80005WYWCONV30200kec1Vb@00eW2W02K4800010OWA00uxV6Ga0WCK
+i14000m1G080000044008W0G4013Vp000021G00WW40808080G0000oHOB9080004000X01W
+IlJ00G01000G01800AA80000108m26G10e02A011KW20W051K1YWW0Gm04OW22G138020000
+GG00e0G8W0880P42C0m0W8SwvsW85CG00800W00000880W00002LbW10G02402WW060unx40
+2000WX0000020080m0W000000ZA0208Y0C0000002000G00WOMHAXPOC00030W000W04W802
+O02D44ji10800100032G00m0028002000eW020000G0GG00e000400WOiOO0z400Y8ilU200
+10@KqWXqJ000AIxv9001G002W8100WuZCmT00muyX0005i2Y404CG0G011m010W101O04101
+2G01G03800vYT904000G2000101100W3pD01G0GQx6K_T2G040a00000GG00040800008W0W
+00402H3yxE300eE_@FA00080G08IhF140400000800G00W08tU3YsF1W0W0RnR0040W8kC00
+020040W8_P0W00WW@3W@@lA7z400W200040008400010O1O@@l100WaTuI0O00H@@6000WbM
+00GXzEDJF3jVp0GG0WwxFP@i700W5z_TK0200102WS4l1K001C0C0e0000200W20HHL0q4W1
+080000Sak10004000840c100008m00W4CW000220X0eGpI04000mX3WePk2102Gs@600H000
+0G80n1m5LV00008080e8rC01000606000G04000e00AO00WORr4000GI100OoLjG800048W0
+80850WBE1G2f9dbmiDF4Vc1W0402DZXrIJ00mGwnxW1G0100WG510002600ndHoC@6CMB3Wa
+10Ye@jwInesG640002C20400G00480000KS000so@jATt00WO10401000800W8080b0O0101
+W0000EuF@xAViAY2Wa4XP0mL3m@@E5QMK0000tYqZ@@@@@@@@@@@@@@@@@@@@@@NO_l5d@N1
+w@Ka_@4g@Bnw@Hm_F4j@@Wx@Ey_V3m@pGy@B8@l2p@d0z@8K@@1s@Rmz@5W@F1v@FW_@2i@V
+0y@3G@@@t@l@_@t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@lH00020001W000G044000W00GGWL0CW000044002000000480200910u@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Bk@@X@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@Vrn0000mzBqzXm0020G0000WY00000Ca1W10c000004a001H0WG80G440
+8120K0106WGZnCaGI3C43W10W0010WGH060G0020000q47Cm00200000C0G1H0O0000GoNLd
+Wd1040W0000WDtXV0m@@30
+ ;
+' // Loading device with a `jstart` instruction. 
+IRSCAN 10, $03cc
+ ;
+D = 13;
+WAIT D CYCLES;
+' //Loading device with 'bypass' instruction.
+IRSCAN 10, $03ff
+ ;
+' //Loading device with 'bypass' instruction.
+IRSCAN 10, $03ff
+ ;
+POSTIR 0 ;
+PREIR 0 ;
+PREDR 0 ;
+POSTDR 0 ;
+POSTIR 0 ;
+PREIR 0 ;
+PREDR 0 ;
+POSTDR 0 ;
+' // Loading device with a `jstart` instruction. 
+IRSCAN 10, $03cc
+ ;
+D = 13;
+WAIT D CYCLES;
+' //Checking done pin status.
+' //Loading device with 'Bypass' instruction.
+IRSCAN 10, $03ff
+, COMPARE $0021
+, $0020
+, X;
+IF (!X) THEN GOTO F;
+POSTIR 0 ;
+PREIR 0 ;
+POSTDR 0 ;
+PREDR 0 ;
+IRSCAN 10, $03ff
+ ;
+DRSCAN 1, $00
+ ;
+
+SUCCESS:
+PRINT "Successful File Execution.";
+EXIT 0;
+
+F:
+PRINT "File Execution Failure.";
+EXIT 16;
+
+ENDPROC;
+
+DATA TMPDATA;
+INTEGER TMP_DELAY;
+ENDDATA;
+
+PROCEDURE ADJUST_BIG_DELAY USES TMPDATA, MAINDATA;
+TMP_DELAY = D / 100;
+TMP_DELAY = TMP_DELAY * 25;
+D = D + TMP_DELAY;
+ENDPROC;
+
+PROCEDURE ADJUST_SMALL_DELAY USES TMPDATA, MAINDATA;
+TMP_DELAY = D * 25;
+TMP_DELAY = TMP_DELAY / 100;
+D = D + TMP_DELAY;
+ENDPROC;
+
+PROCEDURE ADJUST_DELAY USES MAINDATA, ADJUST_BIG_DELAY, ADJUST_SMALL_DELAY;
+IF D > 2500 THEN CALL ADJUST_BIG_DELAY;
+IF D <= 2500 THEN CALL ADJUST_SMALL_DELAY;
+ENDPROC;
+
+CRC 76DE;
diff --git a/bit/main_board_034_ionized.txt b/bit/main_board_034_ionized.txt
new file mode 100644 (file)
index 0000000..3366182
--- /dev/null
@@ -0,0 +1,2 @@
+patched with patch of 18.12.2012 for correct remove sensor function
+bn
diff --git a/soft/mvdmon/files/cgi-bin/jtagmon.cgi b/soft/mvdmon/files/cgi-bin/jtagmon.cgi
new file mode 100755 (executable)
index 0000000..d614eed
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+use strict;
+use warnings;
+use CGI::Carp qw(fatalsToBrowser);
+print "Content-type: text/html\r\n\r\n";
+
+
+my $output = qq$
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<title>JTAG Monitor</title>
+
+<META HTTP-EQUIV="Refresh" CONTENT="2"> 
+
+</head>
+       
+$;
+
+
+
+       print $output;
+       print '<body>';
+       open FILE, "/local.1/daq/mvdmon/files/jtagmonitor_usechainsini.htt" or die $!;
+       while (<FILE>) { print $_; }
+
+       print "</body></html>"; 
+       
+
diff --git a/soft/toolbox/HPlot.pm b/soft/toolbox/HPlot.pm
new file mode 100644 (file)
index 0000000..c30988b
--- /dev/null
@@ -0,0 +1,157 @@
+package HPlot;
+use POSIX qw/floor ceil strftime/;
+use Data::Dumper;
+use warnings;
+use strict;
+use FileHandle;
+
+my $p;
+
+use constant {TYPE_HISTORY => 1};
+
+use constant {OUT_PNG    => 1,
+              OUT_SVG    => 2,  #n/a
+              OUT_SCREEN => 3}; #n/a
+
+my @color= ('#2222dd','#dd2222','#22dd22','#dd8822','#dd22dd','#22dddd');
+
+sub plot_write {
+  my ($file,$str,$no) = @_;
+  return unless $str;
+  if($no || 0) {
+    print $file $str;
+    }
+  else {
+    print $file $str."\n";
+    }
+  }
+
+
+sub makeTimeString{
+  return strftime("set label 100 \"%H:%M:%S\" at screen 0.02,0.02 left tc rgb \"#000044\" font \"monospace,8\"\n", localtime())
+  }
+
+
+sub PlotInit {
+  my ($c) = @_;
+
+  my $name      = $c->{name};
+
+  my $fn = "gnuplot";
+  my $fh = new FileHandle ("|$fn") or  die "error: no gnuplot";
+  $fh->autoflush(1);
+
+
+
+  $p->{$name} = $c;
+  $p->{$name}->{fh} = $fh;
+  $p->{$name}->{run} = 0;
+  $p->{$name}->{sizex} = $p->{$name}->{sizex} || 600 ;
+  $p->{$name}->{sizey} = $p->{$name}->{sizey} || 400 ;
+  $p->{$name}->{file} = $p->{$name}->{file} || "dummy" ;
+  $p->{$name}->{curves} = $p->{$name}->{curves} || 1 ;
+  $p->{$name}->{xscale} = $p->{$name}->{xscale} || 1;
+  $p->{$name}->{type}   or die "No plot type specified";
+  $p->{$name}->{output} or die "No destination specified";
+
+  @color = @{$p->{$name}->{colors}} if($p->{$name}->{colors});
+
+  foreach my $i (0..($c->{entries}-1)) {
+    for my $j (0..($c->{curves}-1)) {
+      push(@{$p->{$name}->{value}->[$j]},0) ;
+      }
+    }
+
+  if($p->{$name}->{output} == OUT_PNG) {
+    $p->{$name}->{file} or die "No filename specified";
+    plot_write($fh,"set term png size ".$p->{$name}->{sizex}.",".$p->{$name}->{sizey}." font \"monospace,8\"");
+    plot_write($fh,"set out \"".$p->{$name}->{file}.".png\"");
+    }
+  else {
+    die "Output mode not supported yet";
+    }
+
+  if  ($p->{$name}->{nokey}) {
+    plot_write($fh,"unset key");
+    }
+
+
+  plot_write($fh,"set xlabel \"".$p->{$name}->{xlabel}."\"") if $p->{$name}->{xlabel};
+  plot_write($fh,"set ylabel \"".$p->{$name}->{ylabel}."\"") if $p->{$name}->{ylabel};
+
+  if(defined $p->{$name}->{ymin} && defined $p->{$name}->{ymax}) {
+    plot_write($fh,"set yrange [".$p->{$name}->{ymin}.":".$p->{$name}->{ymax}."]");
+    }
+  elsif(defined $p->{$name}->{ymax}) {
+    plot_write($fh,"set yrange [:".$p->{$name}->{ymax}."]");
+    }
+  elsif(defined $p->{$name}->{ymin}) {
+    plot_write($fh,"set yrange [".$p->{$name}->{ymin}.":]");
+    }
+
+  if($p->{$name}->{type} == TYPE_HISTORY) {
+    if($p->{$name}->{fill}) {
+      plot_write($fh,"set style fill solid 1.00");
+      }
+    else {
+      plot_write($fh,"set style fill solid 0");
+      }
+    plot_write($fh,"set boxwidth 2 absolute");
+    plot_write($fh,"set autoscale fix");
+    plot_write($fh,"set xtics autofreq"); #$p->{$name}->{entries}
+    plot_write($fh,"set grid");
+#     plot_write($fh,"set style fill solid 1.0");
+    plot_write($fh,"plot ",1);
+    for(my $j=0; $j<$p->{$name}->{curves};$j++) {
+      if($p->{$name}->{fill}) {
+        plot_write($fh,"'-' using 1:2 with filledcurves x1 lt rgb \"$color[$j]\" title \"".($p->{$name}->{titles}->[$j] || "$j")."\" ",1);
+        }
+      elsif($p->{$name}->{dots}) {
+        plot_write($fh,"'-' using 1:2 with points pointsize 0.6 pointtype 2 lt rgb \"$color[$j]\" title \"".($p->{$name}->{titles}->[$j] || "$j")."\" ",1);
+        }
+      else {
+        plot_write($fh,"'-' using 1:2 with lines  lt rgb \"$color[$j]\" title \"".($p->{$name}->{titles}->[$j] || "$j")."\" ",1);
+        }
+      plot_write($fh,', ',1) unless ($j+1==$p->{$name}->{curves});
+      }
+    plot_write($fh," ");
+    }
+  else {
+    die "Plot type not supported";
+    }
+
+  }
+
+
+sub PlotDraw {
+  my($name) = @_;
+  if($p->{$name}->{run}>=1) {
+    plot_write($p->{$name}->{fh},"set out \"".$p->{$name}->{file}.".png\"");
+    plot_write($p->{$name}->{fh},makeTimeString());
+    plot_write($p->{$name}->{fh},"replot");
+    }
+  for(my $j=0; $j<$p->{$name}->{curves}; $j++) {
+    for(my $i=0; $i< scalar @{$p->{$name}->{value}->[$j]}; $i++) {
+      plot_write($p->{$name}->{fh},(($i-$p->{$name}->{entries})/$p->{$name}->{xscale})." ".$p->{$name}->{value}->[$j]->[$i]) unless $p->{$name}->{countup};
+      plot_write($p->{$name}->{fh},($i/$p->{$name}->{xscale})." ".$p->{$name}->{value}->[$j]->[$i]) if $p->{$name}->{countup};
+#       print $j." ".$i." ".$p->{$name}->{entries}." ".$p->{$name}->{xscale}." ".$p->{$name}->{value}->[$j]->[$i]."\n";
+      }
+    plot_write($p->{$name}->{fh},"e");
+    }
+  $p->{$name}->{run}++;
+  }
+
+
+sub PlotAdd {
+  my($name,$value,$curve) = @_;
+  $curve = 0 unless $curve;
+
+  if($p->{$name}->{type} == TYPE_HISTORY) {
+    push(@{$p->{$name}->{value}->[$curve]},$value||0);
+    shift(@{$p->{$name}->{value}->[$curve]});
+    }
+
+  }
+
+
+1;
\ No newline at end of file
diff --git a/soft/toolbox/Hmon.pm b/soft/toolbox/Hmon.pm
new file mode 100644 (file)
index 0000000..b169231
--- /dev/null
@@ -0,0 +1,595 @@
+package Hmon;
+use POSIX qw/floor ceil strftime/;
+use Data::Dumper;
+use warnings;
+use strict;
+
+use constant HMONDIR => "/local.1/daq/mvdmon/";
+
+our %hublist;
+our $r_hublist = \%hublist;
+
+print STDERR "Script started at ".strftime("%d.%m.%y %H:%M:%S", localtime()).".\n";
+
+###############################################################################
+#  Make Title & Footer
+###############################################################################
+sub MakeTitle {
+  my ($width,$height,$title,$time,$error) = @_;
+  my $str;
+  $time = 1 unless defined $time;
+  $str  = "<div class=\"width$width height$height\">\n";
+  if ($time) {
+    $str .= "<div class=\"timestamp\">".strftime("%H:%M:%S", localtime())."</div>\n";
+  }
+  if (defined $error && $error ne "") {
+    $str .= "<div class=\"errorstamp\">$error</div>\n";
+  }
+  $str .= "<h3 id='title'>$title</h3>";
+  return $str;
+}
+
+sub MakeFooter {
+  my $str;
+  $str = "</div>\n";
+  return $str;
+}
+
+sub AddStyle {
+  return "";
+}
+
+###############################################################################
+#  Local Logfile
+###############################################################################
+sub OpenLogfile {
+  return 0;
+#   my $fh;
+#   open($fh, ">>",HMONDIR."/files/locallog");
+#   $fh->autoflush(1);
+#   return $fh;
+}
+
+sub WriteLog {
+  return 0;
+#   my ($fh,$title,$format,@vars) = @_;
+#   #   $format =~ s/\s/\t/g;
+#   if ($fh == 0) {
+#     $fh = OpenLogfile();
+#   }
+#   my $tmp = sprintf("%s\t%i\t".$format."\n",$title,time(),@vars);
+#   print $fh $tmp;
+}
+
+
+############################################
+#  Write to File
+############################################
+sub WriteFile {
+  my ($name,$str) = @_;
+  open FH,"> ".Hmon::HMONDIR."files/$name.htt";
+  print FH $str;
+  close FH;
+}
+
+############################################
+#  Nettrace DB
+############################################
+sub TraceDBLoad {
+  open FILE, "</home/hadaq/trbsoft/daq/tools/nettrace.db" or die "Can't open dbfile: $!";
+  local $/;
+  eval <FILE>;
+  close FILE;
+}
+
+sub TraceDBGet {
+  my ($addr, $port) = @_;
+  if (defined $r_hublist->{$addr}->{$port}) {
+    return $r_hublist->{$addr}->{$port};
+  }
+  else {
+    return 0;
+  }
+}
+
+
+###############################################################################
+# Voice Synthesis
+###############################################################################
+my $speaklog;
+sub Speak {
+  my ($id,$str) = @_;
+#   print "$id $str $speaklog->{$id}\n";
+  if (!defined $speaklog->{$id} || $speaklog->{$id} < time()-120) {
+#     my $cmd = "ssh hades30 'espeak -ven-male2 -s 120 -g 1 \"$str\" ' 2>/dev/null";
+    my $fh;
+    open($fh, ">>",Hmon::HMONDIR."/files/speaklog");
+    $fh->autoflush(1);
+    print $fh $str."\n";
+    $speaklog->{$id} = time();
+    close($fh);
+    }
+  }
+
+###############################################################################
+#  Calculate Colors
+###############################################################################
+sub findcolor {
+  my ($v,$min,$max,$lg) = @_;
+  my ($r,$g,$b);
+  $v = 0 unless defined $v;
+  $v = log($v) if $v && $lg;
+  $min = log($min) if $min && $lg;
+  $max = log($max) if $max && $lg;
+  $max  = 1 unless $max;
+
+  my $step = (($max-$min)/655);
+
+
+  if ($v == 0) {
+    $r = 220;
+    $g = 220;
+    $b = 220;
+  } else {
+    $v -= $min;
+    $v  = $v/$step if $step;
+    if ($v<156) {
+      $r = 0;
+      $g = $v+100;
+      $b = 0;
+    } elsif ($v<412) {
+      $v -= 156;
+      $r = $v;
+      $g = 255;
+      $b = 0;
+    } else {
+      $v -= 412;
+      $r = 255;
+      $g = 255-$v;
+      $b = 0;
+    }
+  }
+
+  my $ret = sprintf("#%02x%02x%02x",$r%256,$g%256,$b%256);
+
+  return $ret;
+}
+
+###############################################################################
+#  Make a nice colored drawing of MDC
+###############################################################################
+sub DrawMDC {
+  my ($plane,$sector,$color,$val) = @_;
+  my $str;
+  $str .= "<table class=\"mdc sector$sector\">\n";
+  if ($plane == 0) {
+    $str .= "<tr><td><td><td $color->{12} title=\"$val->{12}\">C<td><td $color->{13} title=\"$val->{13}\">D<td><td>\n";
+    $str .= "<tr><td><td><td $color->{10} title=\"$val->{10}\">A<td><td $color->{11} title=\"$val->{11}\">B<td><td>\n";
+    $str .= "<tr><td><td $color->{2} title=\"$val->{2}\">2<td colspan=3 rowspan=2 class=\"ctr\">$sector<td $color->{7} title=\"$val->{7}\">7<td>\n";
+    $str .= "<tr><td $color->{4} title=\"$val->{4}\">4<td $color->{1} title=\"$val->{1}\">1<td $color->{6} title=\"$val->{6}\">6<td $color->{9} title=\"$val->{9}\">9\n";
+    $str .= "<tr><td $color->{3} title=\"$val->{3}\">3<td $color->{0} title=\"$val->{0}\">0<td><td><td><td $color->{5} title=\"$val->{5}\">5<td $color->{8} title=\"$val->{8}\">8<tr>\n";
+  } elsif ($plane == 1) {
+    $str .= "<tr><td><td><td $color->{14} title=\"$val->{14}\">E<td><td $color->{15} title=\"$val->{15}\">F<td><td>\n";
+    $str .= "<tr><td><td><td $color->{12} title=\"$val->{12}\">C<td><td $color->{13} title=\"$val->{13}\">D<td><td>\n";
+    $str .= "<tr><td><td $color->{5} title=\"$val->{5}\">5<td colspan=3 rowspan=2 class=\"ctr\">$sector<td $color->{11} title=\"$val->{11}\">B<td>\n";
+    $str .= "<tr><td><td $color->{4} title=\"$val->{4}\">4<td $color->{10} title=\"$val->{10}\">A<td>\n";
+    $str .= "<tr><td><td $color->{3} title=\"$val->{3}\">3<td $color->{1} title=\"$val->{1}\">1<td><td $color->{7} title=\"$val->{7}\">7<td $color->{9} title=\"$val->{9}\">9<td>\n";
+    $str .= "<tr><td><td $color->{2} title=\"$val->{2}\">2<td $color->{0} title=\"$val->{0}\">0<td><td $color->{6} title=\"$val->{6}\">6<td $color->{8} title=\"$val->{8}\">8<td>\n";
+    #                $str .= "<tr><td><td><td $color->{1} title=\"$val->{1}\">1<td><td $color->{7} title=\"$val->{7}\">7<td><td>\n";
+    #                $str .= "<tr><td><td><td $color->{0} title=\"$val->{0}\">0<td><td $color->{6} title=\"$val->{6}\">6<td><td>\n";
+  } else {
+    $str .= "<tr><td><td $color->{12} title=\"$val->{12}\">C<td $color->{13} title=\"$val->{13}\">D<td><td $color->{14} title=\"$val->{14}\">E<td $color->{15} title=\"$val->{15}\">F<td>\n";
+    $str .= "<tr><td $color->{5} title=\"$val->{5}\">5<td><td><td><td><td><td $color->{11} title=\"$val->{11}\">B\n";
+    $str .= "<tr><td $color->{4} title=\"$val->{4}\">4<td><td colspan=3 rowspan=2 class=\"ctr\">$sector<td><td $color->{10} title=\"$val->{10}\">A\n";
+    $str .= "<tr><td><td $color->{3} title=\"$val->{3}\">3<td $color->{9} title=\"$val->{9}\">9<td>\n";
+    $str .= "<tr><td><td $color->{2} title=\"$val->{2}\">2<td><td><td><td $color->{8} title=\"$val->{8}\">8<td>\n";
+    $str .= "<tr><td><td><td $color->{1} title=\"$val->{1}\">1<td><td $color->{7} title=\"$val->{7}\">7<td><td>\n";
+    $str .= "<tr><td><td><td $color->{0} title=\"$val->{0}\">0<td><td $color->{6} title=\"$val->{6}\">6<td><td>\n";
+  }
+  $str .= "</table>\n";
+  return $str;
+}
+
+###############################################################################
+# Draw Scale
+###############################################################################
+sub DrawScale {
+  my ($min,$max,$steps) = @_;
+  my $str;
+  #    print "$min $max $steps\n";
+  return "" if $max == $min;
+  $str .= "<table class=\"scale\"><tr>";
+  $str .= sprintf("<td style=\"background-color:%4s;\">",Hmon::findcolor(0,0,$steps,0));
+  return $str.="</table>" if $max == $min;
+  $str .= sprintf("<td class=\"label\">%#2.3G",$min);
+  for (my $i = 1;$i<$steps;$i++) {
+    #          my $j = ($max-$min)/$steps*$i;
+    $str .= sprintf("<td style=\"background-color:%4s;\">",Hmon::findcolor($i,0,$steps,0));
+  }
+  $str .= sprintf("<td class=\"label\">%#2.3G",$max);
+  $str .= "</table>\n";
+  #    $str .= "<table class=\"scalelabels\"><tr>";
+  #    $str .= sprintf("<td>%2.1G<td>%2.1G<td>%2.1G\n",$min+($max-$min)/4,$min+($max-$min)*2/4,$min+($max-$min)*3/4);
+  #    $str .= "</table>\n";
+
+  return $str;
+}
+
+###############################################################################
+# Makes Diffs to last stored value.
+# Loops over last plane/sector/board
+###############################################################################
+sub MakeDifferences {
+  my ($store, $laststore, $limit) = @_;
+  my $values = {};
+  for (my $l = 0; $l < 4;$l++) {
+    for (my $s = 0; $s < 6;$s++) {
+      for (my $b = 0; $b < 16; $b++) {
+       $values->{$l}->{$s}->{$b} = 0;
+       if (exists $store->{$l}->{$s}->{$b} && exists $laststore->{$l}->{$s}->{$b}) {
+         #                                     if ($store->{$l}->{$s}->{$b} < $laststore->{$l}->{$s}->{$b}) {
+         #                                             $values->{$l}->{$s}->{$b} = ($store->{$l}->{$s}->{$b} - $laststore->{$l}->{$s}->{$b}) & 0xFFFFFFFF ;
+         #                                             }
+         #                                     else {
+         $values->{$l}->{$s}->{$b} = ($store->{$l}->{$s}->{$b} - $laststore->{$l}->{$s}->{$b}) ; # & 0xFFFFFFFF
+         while ($values->{$l}->{$s}->{$b} < 0) {
+           $values->{$l}->{$s}->{$b} = ($values->{$l}->{$s}->{$b} + $limit);
+         }                  # & 0xFFFFFFFF
+         #                                             }
+       }
+      }
+    }
+  }
+  return $values;
+}
+
+###############################################################################
+# Find min/max
+###############################################################################
+sub MakeMinMax3 {
+  my ($values,$d1,$d2,$d3,$ignore) = @_;
+  $ignore = 1 unless defined $ignore;
+  my $max = 0;
+  my $min = 2**32;
+  my $avg = 0;
+  my $num = 0;
+  for (my $l = 0; $l < $d1;$l++) {
+    for (my $s = 0; $s < $d2;$s++) {
+      for (my $b=0;$b<$d3;$b++) {
+       if (! exists $values->{$l}->{$s}->{$b}) {
+         $values->{$l}->{$s}->{$b} = 0;
+       } else {
+         $num++;
+         $avg += $values->{$l}->{$s}->{$b};
+       }
+       if ($max < $values->{$l}->{$s}->{$b}) {
+         $max = $values->{$l}->{$s}->{$b};
+       }
+       if ($min > $values->{$l}->{$s}->{$b} && ($values->{$l}->{$s}->{$b} != 0 || !$ignore)) {
+         $min = $values->{$l}->{$s}->{$b};
+       }
+      }
+    }
+  }
+  $avg /= ($num || 1);
+  return ($min,$max,$avg);
+}
+
+sub MakeMinMax2 {
+  my ($values, $d1, $d2, $ignore) = @_;
+  $ignore = 1 unless defined $ignore;
+  my $max = 0;
+  my $min = 2**32;
+  my $avg = 0;
+  my $num = 0;
+  #    print Dumper $values;
+  for (my $l = 0; $l < $d1;$l++) {
+    for (my $s = 0; $s < $d2;$s++) {
+      if (! exists $values->{$l}->{$s}) {
+       $values->{$l}->{$s} = 0;
+      } else {
+       $num++;
+       $avg += $values->{$l}->{$s};
+      }
+      if ($max < $values->{$l}->{$s}) {
+       $max = $values->{$l}->{$s};
+      }
+      if ($min > $values->{$l}->{$s} && ($values->{$l}->{$s} != 0 || !$ignore)) {
+       $min = $values->{$l}->{$s};
+      }
+    }
+  }
+  $avg /= $num;
+  return ($min,$max,$avg);
+}
+
+sub MakeMinMax1 {
+  my ($values,$d1,$ignore) = @_;
+  $ignore = 1 unless defined $ignore;
+  my $max = 0;
+  my $min = 2**32;
+  for (my $l = 0; $l < $d1;$l++) {
+    if (! exists $values->{$l}) {
+      $values->{$l} = 0;
+    }
+    if ($max < $values->{$l}) {
+      $max = $values->{$l};
+    }
+    if ($min > $values->{$l} && ($values->{$l} != 0 || !$ignore)) {
+      $min = $values->{$l};
+    }
+  }
+  return ($min,$max);
+}
+
+sub qxtimeout {
+  my ($cmd, $time) = @_;
+  my @out;
+  $SIG{ALRM} = sub { $out[0] = "qxtimeout"; die };
+  $SIG{CHLD} = "IGNORE";
+  eval {
+    alarm($time);
+    @out = qx($cmd);
+    alarm(0);
+  };
+  return @out;
+}
+
+
+###############################################################################
+#  MVD Make vertical list (HTML Table)
+###############################################################################
+sub MakeVerticalList {
+       my @list = @_;
+  
+  if (scalar(@list) < 2){
+    print "ERROR list args < 2";
+    return "ERROR list args < 2";
+  }
+  else{
+         my $str = "\n";
+               my $i = 0;
+       
+               $str .= qq$<table border="0">\n$;
+               my $style = "";
+               my $width = 0;
+               foreach (@list){
+                       if ($i == 0) {
+                               $i++;
+                               $width = $_;
+                       }
+                       elsif ($i == 1) {
+                               $i++;
+                               $style = $_;
+                       }
+                       else{
+                               if ($style=~/BOLD/){
+                                       if ($_) {$str .= qq$<tr><td width="$.$width.qq$"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4><b>$.$_.qq$</b></td></tr>\n$;}
+                                       else{$str .= qq$<tr><td width="$.$width.qq$"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>&nbsp;</td></tr>\n$;}
+                               }
+                               elsif ($style=~/NOT_ZERO_ERROR/){
+                                       if ($_) {
+                                               if ($_ > 0) {$str .= qq$<tr><td width="$.$width.qq$"><FONT COLOR=RED FACE="Geneva, Arial" SIZE=4><b>$.$_.qq$</b></td></tr>\n$;}
+                                               else{$str .= qq$<tr><td width="$.$width.qq$"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>$.$_.qq$</td></tr>\n$;}
+                                       }
+                                       else{$str .= qq$<tr><td width="$.$width.qq$"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>&nbsp;</td></tr>\n$;}
+                               }
+                               else{
+                                       if ($_) {$str .= qq$<tr><td width="$.$width.qq$"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>$.$_.qq$</td></tr>\n$;}
+                                       else{$str .= qq$<tr><td width="$.$width.qq$"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>&nbsp;</td></tr>\n$;}
+                               }
+                       }
+               }
+
+               $str .= qq$</table>\n$;
+
+         return $str;
+       }
+}
+
+###############################################################################
+#  MVD Merge 2 vertical lists into 1 table
+###############################################################################
+sub Merge2Lists{
+       my ($width1,$width2,$str1,$str2) = @_;
+       my $str = "\n";
+       $str .= qq$<table border="0" style="border-collapse:collapse;table-layout: fixed; border-width: 1px; border-color:#000000; border-style: solid;" >\n$;
+       $str .= qq$<colgroup><col width="$.$width1.qq$"><col width="$.$width2.qq$"></colgroup>$;
+       $str .= qq$<tr><td>$.$str1.qq$</td><td>$.$str2.qq$</td></tr>\n$;
+       $str .= qq$</table>\n$;
+  return $str;
+
+}
+
+
+###############################################################################
+#  MVD Add Date
+###############################################################################
+sub MakeDate {
+
+       my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
+       my @weekDays = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
+  my ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek) = localtime();
+  my $year = 1900 + $yearOffset;
+  my $theTime = "$hour:$minute:$second, $weekDays[$dayOfWeek] $months[$month] $dayOfMonth, $year";
+
+  my ($width,$height,$text) = @_;
+  my $str;
+  $str  = "<div class=\"width$width height$height\">\n";
+  $str .= "<div class=\"timestamp\">".$theTime."</div>\n";
+  $str .= "".$text."</div>";
+
+  return $str;
+
+}
+
+
+
+###############################################################################
+#  MVD Make a table (3x subs: Start, Insert and End)
+###############################################################################
+sub StartBlock {
+  my $str = "\n";
+       my ($title, $width) = @_;
+       $str .= qq$<table width="$.$width.qq$" border="1" style="text-align:center;border-collapse:collapse;table-layout: fixed; border-width: 3px; border-color:#007FFF; border-style: solid;" >\n$;
+#      $str .= "<tr><td>".$title."</td></tr>\n";
+#      $str .= qq$<tr><td><FONT COLOR=GREY FACE="Geneva, Arial" SIZE=4><b>$.$title.qq$</b></tr></td>\n$;
+       $str .= "<tr><td>\n";
+       #$str .= qq$<table border="1" width="$.$width.qq$">\n$;
+       $str .= qq$<table border="0">\n$;
+       $str .= qq$<tr><td><FONT COLOR=GREY FACE="Geneva, Arial" SIZE=4><b>$.$title.qq$</b></td></tr>\n$;
+  return $str;
+}
+
+sub InsertMatrix {
+  my $str = "\n";
+  my ($id, $good, $bad, $a, $b, $c, $d, $ref) = @_;
+  my $text;
+  $text = "$id  ($good/$bad) :   $a / $b / $c / $d";
+  $str .= qq$<table width="450" border="1" style="text-align:center;border-collapse:collapse;table-layout: fixed; border-width: 3px; border-color:#007FFF; border-style: solid;" >$;
+# $str .= "<tr><td>".$title."</td></tr>\n";
+# $str .= qq$<tr><td><FONT COLOR=GREY FACE="Geneva, Arial" SIZE=4><b>$.$title.qq$</b></tr></td>\n$;
+#  $str .= "<tr><td>\n";
+  #$str .= qq$<table border="1" width="$.$width.qq$">\n$;
+#  $str .= qq$<table border="0">\n$;
+  $str .= qq$<tr><td>$;
+  $str .= qq$<img src="../matrix_$.$id.qq$.png" height="315" width="420" alt="matrix">$;
+  $str .= qq$</tr></td>$;
+  $str .= qq$<tr><td><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=3><b>$.$text.qq$</b></td></tr>$;
+  $str .= qq$</table>$;
+  return $str;
+}
+
+sub InsertValue {
+       
+       my $i;
+       my $str = "";
+       my $type;
+       my $value;
+       my @params = @_;
+       #style="text-align:center;"
+       $str  .= qq$<tr>\n$;
+       for ($i=0;$i<(scalar(@params)/2);$i++){
+               $type  = $params[2*$i];
+               $value = $params[2*$i+1];
+               if ($type =~ /TEXT/){
+                       $str  .= qq$<td width="120"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>$.$value.qq$</td>\n$;
+               }
+               elsif ($type =~ /WTEXT/){
+                       $str  .= qq$<td width="120"><FONT COLOR=WHITE FACE="Geneva, Arial" SIZE=4>$.$value.qq$</td>\n$;
+               }
+               elsif ($type =~ /VALUE/){
+                       $str  .= qq$<td width="120"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /WVALUE/){
+                       $str  .= qq$<td width="120"><FONT COLOR=WHITE FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /RED/){
+                       $str  .= qq$<td width="120"><FONT COLOR=RED FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /DARKRED/){
+                       $str  .= qq$<td width="120"><FONT COLOR=DARKRED FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /GREEN/){
+                       $str  .= qq$<td width="120"><FONT COLOR=DARKGREEN FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /LEFT/){
+                       $str  .= qq$<td align="left" width="120"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>$.$value.qq$</td>\n$;
+               }
+
+       }
+       $str  .= qq$</tr>\n$;  
+  
+  
+
+         
+  return $str;
+}
+
+sub InsertValueBG {
+       
+       my $i;
+       my $str = "";
+       my $type;
+       my $value;
+       my @params = @_;
+       #style="text-align:center;"
+       my $col= pop(@params);
+       if ($col == 0) {
+               $str  .= qq$<tr>\n$;
+       }
+       elsif ($col == 1){
+               $str  .= qq$<tr style="background-color:#A3E7FF;">\n$;
+       }
+       elsif ($col == 2){
+               $str  .= qq$<tr style="background-color:#DDFFCC;">\n$;
+       }
+       elsif ($col == 2){
+               $str  .= qq$<tr style="background-color:#EEFFFF;">\n$;
+       }
+       elsif ($col == 3){
+               $str  .= qq$<tr style="background-color:#FF2222;">\n$;
+       }
+       elsif ($col == 4){
+               $str  .= qq$<tr style="background-color:#008888;">\n$;
+       }
+       
+       for ($i=0;$i<((scalar(@params)-1)/2);$i++){
+               $type  = $params[2*$i];
+               $value = $params[2*$i+1];
+               
+               if ($type =~ /BGRED/){
+                       if ($value == 0){
+                               $str  .= qq$<td width="120"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>No Error</td>\n$;
+                       }
+                       else{
+                               $str  .= qq$<td width="120"><FONT COLOR=WHITE style="background-color:#FF0000;" FACE="Geneva, Arial" SIZE=4>&nbsp;&nbsp;Error&nbsp;&nbsp;</td>\n$;
+                       }
+               }
+               elsif ($type =~ /TEXT/){
+                       $str  .= qq$<td width="120"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>$.$value.qq$</td>\n$;
+               }
+               elsif ($type =~ /WTEXT/){
+                       $str  .= qq$<td width="120"><FONT COLOR=WHITE FACE="Geneva, Arial" SIZE=4>$.$value.qq$</td>\n$;
+               }
+               elsif ($type =~ /VALUE/){
+                       $str  .= qq$<td width="120"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /WVALUE/){
+                       $str  .= qq$<td width="120"><FONT COLOR=WHITE FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /RED/){
+                       $str  .= qq$<td width="120"><FONT COLOR=RED FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /DARKRED/){
+                       $str  .= qq$<td width="120"><FONT COLOR=DARKRED FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /GREEN/){
+                       $str  .= qq$<td width="120"><FONT COLOR=DARKGREEN FACE="Geneva, Arial" SIZE=4><b>$.$value.qq$</b></td>\n$;
+               }
+               elsif ($type =~ /LEFT/){
+                       $str  .= qq$<td align="left" width="120"><FONT COLOR=BLACK FACE="Geneva, Arial" SIZE=4>$.$value.qq$</td>\n$;
+               }
+
+       }
+       $str  .= qq$</tr>\n$;  
+  
+  
+
+         
+  return $str;
+}
+
+
+
+sub EndBlock {
+       my $str = "";
+       $str .= qq$</table></td></tr>\n$;
+       $str .= qq$</table>\n$;
+       
+  return $str;
+}
+
+
+1;
+__END__
diff --git a/soft/toolbox/QA.pm b/soft/toolbox/QA.pm
new file mode 100644 (file)
index 0000000..b793d4b
--- /dev/null
@@ -0,0 +1,262 @@
+package QA;
+
+use Hmon;
+###############################################################################
+# Screen Configuration
+###############################################################################
+# List of categories & names
+our $cats = {'main'=>"Main",
+             'daq'=>"DAQ",
+             'trg'=>"Trig",
+             'server'=>"Srv",
+             'eb'=>"EB",
+             'mdc'=>"MDC",
+             'endp'=>"Endp",
+             'feeerr'=>"Fee",
+             'other'=>"Other"};
+
+# Order of categories
+our $entries->{'cats'} = ["main",
+                          "daq",
+                          "trg",
+                          "server",
+                          "eb",
+                          "mdc",
+                          "endp",
+                          "feeerr",
+                          "other"];
+
+# Order of entries in each cat
+$entries->{'main'}    = ['time', 'rate','onlineqa'];
+$entries->{'daq'}     = ['trbnet', 'timeouts', 'busy','readout'];
+$entries->{'trg'}     = ['spill', 'source', 'accepted', 'ptrate', 'start'];
+$entries->{'server'}  = ['fill', 'cpu', 'icinga', 'etrax', 'pwrsup'];
+$entries->{'eb'}      = ['run', 'rate','bytes', 'lostevt', 'errbits'];
+$entries->{'mdc'}     = ['token', 'blocked', 'temp', 'linkqual', 'voltage'];
+$entries->{'endp'}    = ['mdc', 'rich', 'tof', 'rpc', 'other'];
+$entries->{'feeerr'}  = ['rich', 'trb', 'feeerr','trginp','trgqual'];
+$entries->{'other'}   = ['magnet','speech','shower','rich','mdcinvalid'];
+
+
+our $QAServer = "hades33";
+
+###############################################################################
+#  Thresholds
+###############################################################################
+# #MDC Temperatures
+# use constant {MdcTempOk   => 78, MdcTempWarn => 85,   MdcTempErr  => 90};
+#
+# #MDC locked OEP
+# use constant {MdcLockOk   => 0,  MdcLockWarn => 3,   MdcLockErr  => 5};
+#
+# #MDC OEP Numbers
+# use constant {MdcOepOk    => 326};
+# use constant {MdcOepWarn  => MdcOepOk-2};
+# use constant {MdcOepErr   => MdcOepOk-4};
+#
+# #Frontend errors
+# use constant {  FeeErrOk    => 0,  FeeErrWarn  => 2,  FeeErrErr   => 5};
+
+our @FeeErrLimits     = (0, 5, 10);
+our @MdcOepLimits     = (372, 372-1, 372-3);
+our @MdcVoltageLimits = (50, 60, 100);
+our @MdcLockLimits    = (0, 3, 5);
+our @MdcTempLimits    = (78, 85, 90);
+our @TrgErrLimits     = (100, 1000, 10000);
+our @CPULimits        = (95, 100, 100);
+our @TimeoutLimits    = (0, 0, 1);
+our @LinkErrLimits     = (50, 500, 1000);
+our @MdcEndpMissingLimits   =  (0, 0, 1);
+our @RichEndpMissingLimits   = (0, 0, 0);
+our @TofEndpMissingLimits   = (0, 0, 0);
+our @RpcEndpMissingLimits   = (0, 0, 0);
+our @OtherEndpMissingLimits   = (0, 0, 0);
+our @EBDeltaRateLimits = (10, 15, 25);
+our $TrgCheckPolarity = 1;
+our @Eventsbroken     = (.5,5,10);
+our @MdcTokenMissLimits = (10,50,100);
+
+
+our @LimitTriggerPerSpill = (1000, 0, 0);
+our $AcceleratorCycle = 12;
+use constant {CTSAddress => 0x0003};
+
+###############################################################################
+#  Missing Boards
+###############################################################################
+
+our @mdc_boards_removed =(0x223b);
+our @mdc_chambers_removed =();
+our @rich_boards_removed =();
+our @tof_boards_removed =();
+our @rpc_boards_removed =();
+our @other_boards_removed =();
+
+
+###############################################################################
+#  Error Levels
+###############################################################################
+use constant {
+  SCRIPTERROR => -1,
+  NA => 0,
+  OK => 10,
+  NOTE => 20,
+  NOTE_2 => 22,
+  WARN => 40,
+  WARN_2 => 42,
+  ERROR => 70,
+  ERROR_2 => 72,
+  LETHAL => 100,
+  FATAL => 100
+};
+
+###############################################################################
+#  Functions
+###############################################################################
+
+
+############################################
+# Opens QA Logfile and gives back a filehandle
+sub OpenQAFile {
+  my $fh;
+  open($fh, ">>",Hmon::HMONDIR."/files/qalog");
+  $fh->autoflush(1);
+  return $fh;
+}
+
+
+
+############################################
+# Writes an entry to the QA file. Arguments:
+# $fh        file handle of logfile
+# $cat       category of entry
+# $entry     name of entry
+# $ttl       time the entry is valid (in seconds)
+# $status    Status, one of the constants defined above
+# $title     First line of monitor entry
+# $value     Second line of monitor entry
+# $longtext  Long description text (PopUp)
+sub WriteQALog {
+  my ($fh, $category, $entry, $ttl, $status, $title, $value, $longtext) = @_;
+  my $close = 0;
+  my $tmp = time()."\t$category\t$entry\t$ttl\t$status\t$title\t$value\t$longtext\n";
+
+  if ($fh eq "remote") {
+    system("ssh $QAServer \"echo '$tmp' >> /home/hadaq/trbsoft/daq/tools/hmon/files/qalog\"");
+    return;
+    }
+
+  #   $format =~ s/\s/\t/g;
+  if ($fh == 0) {
+    $fh = OpenQAfile();
+    $close = 1;
+    }
+
+  print $fh $tmp;
+  close $fh if($close);
+}
+
+############################################
+# Returns the appropriate status flag (simplified). Arguments:
+# $mode     how to determine status, supported: "below","above"
+# $val      the value
+# @limits   Array with limits
+sub GetQAState {
+  my ($mode, $val, @limits) = @_;
+  my ($ok, $warn, $err) = @limits;
+  if (!defined($val)) {
+    return NA;
+  }
+  if ($val eq "err") {
+    return SCRIPTERROR;
+  }
+  if ($_[0] eq 'below') {
+    if ($val <= $ok) {
+      return OK;
+    }
+    if ($val <= $warn) {
+      return WARN;
+    }
+    if ($val <= $err) {
+      return ERROR;
+    }
+    if ($val >  $err) {
+      return FATAL;
+    }
+  } elsif ($_[0] eq 'above') {
+    if ($val >= $ok) {
+      return OK;
+    }
+    if ($val >= $warn) {
+      return WARN;
+    }
+    if ($val >= $err) {
+      return ERROR;
+    }
+    if ($val <  $err) {
+      return FATAL;
+    }
+  } elsif ($_[0] eq 'inside') {
+    if (abs($val) <= $ok) {
+      return OK;
+    }
+    if (abs($val) <= $warn) {
+      return WARN;
+    }
+    if (abs($val) <= $err) {
+      return ERROR;
+    }
+    return FATAL;
+  }
+  return SCRIPTERROR;
+}
+
+############################################
+#Returns a string matching the given severity level
+sub LevelName {
+  my ($level) = @_;
+  if ($level == SCRIPTERROR) {
+    return "Script Error";
+    }
+  if ($level == NA) {
+    return "Not available";
+    }
+  if ($level < NOTE ) {
+    return "OK";
+    }
+  if ($level < WARN ) {
+    return "Note";
+    }
+  if ($level < ERROR ) {
+    return "Warning";
+    }
+  if ($level < FATAL ) {
+    return "Error";
+    }
+  return "Severe Error";
+  }
+
+############################################
+# Tries to nicely format an integer
+sub SciNotation {
+  my $v = shift;
+  return "undef" if (!defined $v);
+  return "0" if $v == 0;
+#   print $v."\n";
+  if(abs($v) >= 1) {
+    return  sprintf("%i", $v) if (abs($v) < 1000) ;
+    return  sprintf("%.1fk", $v / 1000.) if (abs($v) < 20000) ;
+    return  sprintf("%ik", $v / 1000.) if (abs($v) < 1E6) ;
+    return  sprintf("%.1fM", $v / 1000000.) if (abs($v) < 20E6) ;
+    return  sprintf("%iM", $v / 1000000.) if (abs($v) < 1E9) ;
+    return  sprintf("%i",$v);
+    }
+  else {
+    return sprintf("%in", $v*1E9) if (abs($v) < 1E-6) ;
+    return sprintf("%iu", $v*1E6) if (abs($v) < 1E-3) ;
+    return sprintf("%.1fm", $v*1E3);
+    }
+}
+
+1;
+__END__
diff --git a/soft/toolbox/jtag_atomic/boards.ini b/soft/toolbox/jtag_atomic/boards.ini
new file mode 100644 (file)
index 0000000..fc2e68b
--- /dev/null
@@ -0,0 +1,21 @@
+[board01]
+chainsini=chains.ini
+FPGAboard_hostname=trb1577
+FPGAboard_staplfilename=jcb_trb_009.stapl
+FPGAboard_staplfilename_delay1=jcb_trb_008.stapl
+FPGAboard_addonortrb=trb
+FPGAtrbnetAddr=0xf013
+CONFperiod_trbnetAddr=0xc001
+CONFoffspillcounter_trbnetAddr=0xc002
+CONFwaitstart_trbnetAddr=0xc007
+CONFtriginitseq_trbnetAddr=0xc003
+CONFtrigmapsstart_trbnetAddr=0xc00b
+CONFtrigmapsreset_trbnetAddr=0xc00a
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+;gui_defaults is a comma-separated list of the following strings representing buttons in the gui:
+;'h_prog_fpga','h_start_trbnetd','h_period_0_15s','h_period_1s','h_period_10s', 'h_no_period'
+;be aware that h_prog_fpga doesn't wait until the optical link is up on the Trb
+gui_defaults=h_period_0_15s
+guiBM_NP_defaults=h_waitbeforestart_6us
+
diff --git a/soft/toolbox/jtag_atomic/chains.ini b/soft/toolbox/jtag_atomic/chains.ini
new file mode 100644 (file)
index 0000000..1a44926
--- /dev/null
@@ -0,0 +1,123 @@
+;WARNING this file is generated automatically. don't edit manually.
+
+[chain1]
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xb000
+CMDreg_trbnetAddr=0xb120
+RAMbase_trbnetAddr=0xb121
+DATAreg_trbnetAddr=0xb122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xb163
+STATUS2RAM3BtrbnetAddr=0xb170
+CONFsignals_trbnetAddr=0xc006
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=0
+DEBUGram1baddr=0xb147
+DEBUGram1bdata=0xb148
+DEBUGram1caddr=0xb149
+DEBUGram1cdata=0xb14a
+DEBUGram1crun=0xb14b
+;CONFperiod_trbnetAddr=0xc001
+;CONFoffspillcounter_trbnetAddr=0xc002
+;CONFwaitstart_trbnetAddr=0xc007
+FPGAboard_hostname=trb126
+;FPGAboard_staplfilename=jcb_trb_007.stapl
+FPGAboard_staplfilename=jcb_trb_009.stapl
+FPGAboard_staplfilename_delay1=jcb_trb_008.stapl
+FPGAboard_addonortrb=trb
+; gui_defaults1/gui_defaults2 is a comma separated list of the following strings representing buttons in the gui:
+;'h_man_maps_reset', 'h_delay0', 'h_delay1', 'h_delay2', 'h_delay3', 'h_prog_ram', 'h_set_timing_10mhz', 'h_set_timing_1mhz',
+;'h_start', 'h_stop', 'h_set_inout', 'h_maps_reset_on', 'h_maps_reset_off', 'h_maps_start_on', 'h_maps_start_off',
+;'h_maps_clk_on', 'h_maps_clk_off'
+; gui_defaults1: executed in this order, before board defaults
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
+
+;BEGIN GENERATE_CHAINORDER chain1
+JNR0_sensor4=sensor4.ini
+JNR1_sensor3=sensor3.ini
+JNR2_sensor2=sensor2.ini
+JNR3_sensor1=sensor1.ini
+;END GENERATE_CHAINORDER chain1
+
+[chain2]
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xd000
+CMDreg_trbnetAddr=0xd120
+RAMbase_trbnetAddr=0xd121
+DATAreg_trbnetAddr=0xd122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xd163
+STATUS2RAM3BtrbnetAddr=0xd170
+CONFsignals_trbnetAddr=0xc008
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=1
+DEBUGram1baddr=0xd147
+DEBUGram1bdata=0xd148
+DEBUGram1caddr=0xd149
+DEBUGram1cdata=0xd14a
+DEBUGram1crun=0xd14b
+;CONFperiod_trbnetAddr=0xc001
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
+
+;BEGIN GENERATE_CHAINORDER chain2
+JNR0_sensor8=sensor8.ini
+JNR1_sensor7=sensor7.ini
+JNR2_sensor6=sensor6.ini
+JNR3_sensor5=sensor5.ini
+;END GENERATE_CHAINORDER chain2
+
+[chain3]
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xe000
+CMDreg_trbnetAddr=0xe120
+RAMbase_trbnetAddr=0xe121
+DATAreg_trbnetAddr=0xe122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xe163
+STATUS2RAM3BtrbnetAddr=0xe170
+CONFsignals_trbnetAddr=0xc009
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=2
+DEBUGram1baddr=0xe147
+DEBUGram1bdata=0xe148
+DEBUGram1caddr=0xe149
+DEBUGram1cdata=0xe14a
+DEBUGram1crun=0xe14b
+;CONFperiod_trbnetAddr=0xc001
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
+
+;BEGIN GENERATE_CHAINORDER chain3
+JNR0_sensor12=sensor12.ini
+JNR1_sensor10=sensor10.ini
+JNR2_sensor9=sensor9.ini
+;END GENERATE_CHAINORDER chain3
diff --git a/soft/toolbox/jtag_atomic/chains.ini.chain0 b/soft/toolbox/jtag_atomic/chains.ini.chain0
new file mode 100644 (file)
index 0000000..7d5aaba
--- /dev/null
@@ -0,0 +1,40 @@
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xb000
+CMDreg_trbnetAddr=0xb120
+RAMbase_trbnetAddr=0xb121
+DATAreg_trbnetAddr=0xb122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xb163
+STATUS2RAM3BtrbnetAddr=0xb170
+CONFsignals_trbnetAddr=0xc006
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=0
+DEBUGram1baddr=0xb147
+DEBUGram1bdata=0xb148
+DEBUGram1caddr=0xb149
+DEBUGram1cdata=0xb14a
+DEBUGram1crun=0xb14b
+;CONFperiod_trbnetAddr=0xc001
+;CONFoffspillcounter_trbnetAddr=0xc002
+;CONFwaitstart_trbnetAddr=0xc007
+FPGAboard_hostname=trb126
+;FPGAboard_staplfilename=jcb_trb_007.stapl
+FPGAboard_staplfilename=jcb_trb_009.stapl
+FPGAboard_staplfilename_delay1=jcb_trb_008.stapl
+FPGAboard_addonortrb=trb
+; gui_defaults1/gui_defaults2 is a comma separated list of the following strings representing buttons in the gui:
+;'h_man_maps_reset', 'h_delay0', 'h_delay1', 'h_delay2', 'h_delay3', 'h_prog_ram', 'h_set_timing_10mhz', 'h_set_timing_1mhz',
+;'h_start', 'h_stop', 'h_set_inout', 'h_maps_reset_on', 'h_maps_reset_off', 'h_maps_start_on', 'h_maps_start_off',
+;'h_maps_clk_on', 'h_maps_clk_off'
+; gui_defaults1: executed in this order, before board defaults
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
diff --git a/soft/toolbox/jtag_atomic/chains.ini.chain1 b/soft/toolbox/jtag_atomic/chains.ini.chain1
new file mode 100644 (file)
index 0000000..2d652dd
--- /dev/null
@@ -0,0 +1,28 @@
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xd000
+CMDreg_trbnetAddr=0xd120
+RAMbase_trbnetAddr=0xd121
+DATAreg_trbnetAddr=0xd122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xd163
+STATUS2RAM3BtrbnetAddr=0xd170
+CONFsignals_trbnetAddr=0xc008
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=1
+DEBUGram1baddr=0xd147
+DEBUGram1bdata=0xd148
+DEBUGram1caddr=0xd149
+DEBUGram1cdata=0xd14a
+DEBUGram1crun=0xd14b
+;CONFperiod_trbnetAddr=0xc001
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
diff --git a/soft/toolbox/jtag_atomic/chains.ini.chain2 b/soft/toolbox/jtag_atomic/chains.ini.chain2
new file mode 100644 (file)
index 0000000..f285980
--- /dev/null
@@ -0,0 +1,28 @@
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xe000
+CMDreg_trbnetAddr=0xe120
+RAMbase_trbnetAddr=0xe121
+DATAreg_trbnetAddr=0xe122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xe163
+STATUS2RAM3BtrbnetAddr=0xe170
+CONFsignals_trbnetAddr=0xc009
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=2
+DEBUGram1baddr=0xe147
+DEBUGram1bdata=0xe148
+DEBUGram1caddr=0xe149
+DEBUGram1cdata=0xe14a
+DEBUGram1crun=0xe14b
+;CONFperiod_trbnetAddr=0xc001
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
diff --git a/soft/toolbox/jtag_atomic/copy_on_datachanged.pl b/soft/toolbox/jtag_atomic/copy_on_datachanged.pl
new file mode 100755 (executable)
index 0000000..b1b530e
--- /dev/null
@@ -0,0 +1,99 @@
+#!/usr/bin/perl -w
+
+#use warnings;
+#use strict;
+use Time::HiRes qw( gettimeofday usleep time );
+use FileHandle;
+use Data::Dumper;
+use POSIX qw/floor ceil strftime/;
+use Config::Abstract::Ini;
+use Sys::Syslog;
+my %laststore;
+my $totalsum = 0;
+use HADES::TrbNet;
+use lib qw(/daq/toolbox);
+use Hmon;
+use QA;
+use HPlot;
+use Getopt::Long;
+
+my $opt_help;
+my $opt_chain;
+
+GetOptions ('h|help'      => \$opt_help,
+            'c|chain=s'   => \$opt_chain
+                            );
+if($opt_help) {
+    &help();
+    exit(0);
+}
+
+
+
+sub help(){
+    print "Usage: copy_on_datachanged.pl [-c <chain name> ]
+   
+required:
+   [-c|--chain  <JTAG chain name>]             : Select the JTAG chain (controller) whose RAM should be written.
+"
+}
+
+$ENV{DAQOPSERVER}='trb124';
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+
+trb_init_ports() or die trb_strerror();
+my $chainsfile= './chains.ini';
+
+
+my $fqa  = QA::OpenQAFile();
+openlog("atomic,copy_on_datachanged.pl", "perror", "local1");
+
+my %run_counter_last;
+while (1){
+  # read last error counters from disk
+  my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+  my %allchains = $chainsSettings->get_all_settings;
+  sleep(1);
+  foreach my $chain (keys %allchains) {
+    if(defined($opt_chain) and not ($opt_chain eq $chain)) { next; }
+    my %settings=%{$allchains{$chain}};
+    my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+    my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+    my $data_reg_addr = $settings{'DATAreg_trbnetAddr'};
+    my $debug_ram1c_run         = $settings{'DEBUGram1crun'};
+    # trigger on data changed
+    #syslog("debug", "setting trigger on data changed chain $chain.");
+    my $date = strftime "%Y%m%d%H%M%S", localtime;
+    print "$date: setting trigger on data changed chain $chain.\n";
+    system("trbcmd w $fpga_addr $cmd_reg_addr 0x0000006c"); # command: M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_DATA_CHANGED
+  }
+  if(-e "/tmp/jtag_ipc_datachanged_copyram") {
+    foreach my $chain (keys %allchains) {
+      if(defined($opt_chain) and not ($opt_chain eq $chain)) { next; }
+      my %settings=%{$allchains{$chain}};
+      my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+      my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+      my $data_reg_addr = $settings{'DATAreg_trbnetAddr'};
+      my $debug_ram1c_run         = $settings{'DEBUGram1crun'};
+    
+      my $ram1c_run  = trb_register_read(hex($fpga_addr), hex($debug_ram1c_run));
+      my ($k, $v) = each %$ram1c_run;
+      my $run_counter = $v;
+      if(defined($run_counter_last{$chain}) and !($run_counter eq $run_counter_last{$chain})) {
+        syslog("INFO", "copy of RAM for $chain triggered in run: $run_counter.");
+        system("perl debug_read_ram1c.pl -c $chain");
+      }
+      $run_counter_last{$chain} = $run_counter;
+    }
+    system("rm /tmp/jtag_ipc_datachanged_copyram");
+  }
+  sleep(1);
+}
+
+
diff --git a/soft/toolbox/jtag_atomic/debug_ram1c_set_triggers.sh b/soft/toolbox/jtag_atomic/debug_ram1c_set_triggers.sh
new file mode 100755 (executable)
index 0000000..f7cd114
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/bash
+echo "Run Counter before Triggers:"
+trbcmd r 0xf013 0xb14b
+
+trbcmd w 0xf013 0xb122 0x00000007 # ADDR_DEBUG_RAM1BADDR
+trbcmd w 0xf013 0xb120 0x00000064 # ADDR_DEBUG_RAM1BADDR
+echo "Run Counter after Triggers:"
+trbcmd r 0xf013 0xb14b
diff --git a/soft/toolbox/jtag_atomic/debug_read_ram1c.pl b/soft/toolbox/jtag_atomic/debug_read_ram1c.pl
new file mode 100644 (file)
index 0000000..386abe3
--- /dev/null
@@ -0,0 +1,123 @@
+#!/usr/bin/perl
+
+
+# Use the TRUE and FALSE constants exported by the Glib module.
+#use Glib qw/TRUE FALSE/;
+#use Gtk2 '-init';
+use FileHandle;
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX;
+use Sys::Syslog;
+openlog("atomic,debug_read_ram1c.pl", "perror", "local1");
+use Getopt::Long;
+
+my $opt_help;
+my $opt_chain;
+
+GetOptions ('h|help'      => \$opt_help,
+            'c|chain=s'   => \$opt_chain
+                            );
+if($opt_help) {
+    &help();
+    exit(0);
+}
+
+
+
+sub help(){
+    print "Usage: debug_read_ram1c.pl [-c <chain name> ]
+   
+required:
+   [-c|--chain  <JTAG chain name>]             : Select the JTAG chain (controller) whose RAM should be written.
+"
+}
+
+
+# Get last programmed values
+
+open LPPH, "<", "/tmp/jtag_initmem/lastprog.txt";
+my $lastprogfilenameprefix = <LPPH>;
+
+my $chainsfile= 'chains.ini';
+my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+my %allchains = $chainsSettings->get_all_settings;
+
+
+# my helper function
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+# Perl trim function to remove whitespace from the start and end of the string
+sub trim($)
+{
+        my $string = shift;
+        $string =~ s/^\s+//;
+        $string =~ s/\s+$//;
+        return $string;
+}
+
+
+
+my $date = strftime "%Y%m%d%H%M%S", localtime;
+my $comparemem_folder = "comparemem/$date";
+syslog("INFO", "Saving RAM1C from FPGA to folder $comparemem_folder.");
+if(-e $comparemem_folder) {
+         die("Error: Folder with the same date already exists!");
+}
+mkdir $comparemem_folder,0755;
+
+
+my $result = "";
+my $hexaddr;
+my $lines;
+foreach my $chain (keys %allchains) {
+  if(defined($opt_chain) and not ($opt_chain eq $chain)) { next; }
+  my %settings=%{$allchains{$chain}};
+  my $k = 0; # sensor number in chain
+  my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+  my $ram_addr  = $settings{'RAMtrbnetAddr'};  
+  my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+  my $ram1c_addr = $settings{'DEBUGram1caddr'};
+  my $ram1c_data = $settings{'DEBUGram1cdata'};
+  foreach my $setting_name (sort keys %settings) {
+    if ($setting_name =~ /sensor[0-9]+/) {
+      my $comparemem_filehandle = FileHandle->new("$comparemem_folder/$chain.$setting_name.txt", "w");
+      # create a new window
+
+      my $lastprogfilename = $lastprogfilenameprefix . '/' . $chain.".".$setting_name.".txt";
+      print "lastprogfilename: $lastprogfilename.\n";
+      my $handle_lastprog = FileHandle->new($lastprogfilename, 'r');
+      for(my $i=0;$i<256;$i++) {
+        $hexaddr = int_to_32bit_hex($i+256*$k);
+        $result = `trbcmd w $fpga_addr $ram1c_addr 0x$hexaddr`; # ADDR_DEBUG_RAM1BADDR
+        print "trbcmd w $fpga_addr $ram1c_addr 0x$hexaddr\n"; # ADDR_DEBUG_RAM1BADDR
+        print "trbcmd r $fpga_addr $ram1c_data\n";
+        $result = `trbcmd r $fpga_addr $ram1c_data`;
+        print $result;
+       $result = substr($result,8,10);
+       #$result="0x11111111";
+        my $compare = $handle_lastprog->getline();
+       #$lines .= "123456789" . trim($compare) . $result ."\n";
+       #$textbuffer->set_text($lines);
+       my $line;
+        if(defined($compare)) {
+          $line = $result ."\t(programmed:". trim($compare).")\n";
+        }
+       else {
+          $line = $result ."\t(nothing programmed)\n";
+       }
+       print $comparemem_filehandle $line;
+      }
+
+      $k++;
+    }
+
+  }
+}
+
diff --git a/soft/toolbox/jtag_atomic/debug_read_ram1c_showgtk.pl b/soft/toolbox/jtag_atomic/debug_read_ram1c_showgtk.pl
new file mode 100644 (file)
index 0000000..fd12713
--- /dev/null
@@ -0,0 +1,181 @@
+#!/usr/bin/perl
+
+
+# Use the TRUE and FALSE constants exported by the Glib module.
+use Glib qw/TRUE FALSE/;
+use Gtk2 '-init';
+use FileHandle;
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX;
+
+# Get last programmed values
+
+open LPPH, "<", "/tmp/jtag_initmem/lastprog.txt";
+my $lastprogfilenameprefix = <LPPH>;
+
+my $chainsfile= 'chains.ini';
+my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+my %allchains = $chainsSettings->get_all_settings;
+
+
+# my helper function
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+# Perl trim function to remove whitespace from the start and end of the string
+sub trim($)
+{
+        my $string = shift;
+        $string =~ s/^\s+//;
+        $string =~ s/\s+$//;
+        return $string;
+}
+
+
+# This is a callback function. We simply say hello to the world, and destroy
+# the window object in order to close the program.
+sub hello
+{
+       my ($widget, $window) = @_;
+       print "Hello, World\n";
+
+       $window->destroy;
+}
+
+sub delete_event
+{
+       # If you return FALSE in the "delete_event" signal handler,
+       # GTK will emit the "destroy" signal. Returning TRUE means
+       # you don't want the window to be destroyed.
+       # This is useful for popping up 'are you sure you want to quit?'
+       # type dialogs.
+       print "delete event occurred\n";
+
+       # Change TRUE to FALSE and the main window will be destroyed with
+       # a "delete_event".
+       return FALSE;
+}
+
+my $date = strftime "%Y%m%d%H%M%S", localtime;
+my $comparemem_folder = "comparemem/$date";
+if(-e $comparemem_folder) {
+         die("Error: Folder with the same date already exists!");
+}
+mkdir $comparemem_folder,0755;
+
+
+my $result = "";
+my $hexaddr;
+my $lines;
+foreach my $chain (keys %allchains) {
+  my %settings=%{$allchains{$chain}};
+  my $k = 0; # sensor number in chain
+  my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+  my $ram_addr  = $settings{'RAMtrbnetAddr'};  
+  my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+  my $ram1c_addr = $settings{'DEBUGram1caddr'};
+  my $ram1c_data = $settings{'DEBUGram1cdata'};
+  foreach my $setting_name (sort keys %settings) {
+    if ($setting_name =~ /sensor[0-9]+/) {
+      my $comparemem_filehandle = FileHandle->new("$comparemem_folder/$chain.$setting_name.txt", "w");
+      # create a new window
+      my $window = Gtk2::Window->new('toplevel');
+      
+      # When the window is given the "delete_event" signal (this is given
+      # by the window manager, usually by the "close" option, or on the
+      # titlebar), we ask it to call the delete_event () functio
+      # as defined above. No data is passed to the callback function.
+      $window->signal_connect(delete_event => \&delete_event);
+      
+      # Here we connect the "destroy" event to a signal handler.
+      # This event occurs when we call Gtk2::Widget::destroy on the window,
+      # or if we return FALSE in the "delete_event" callback. Perl supports
+      # anonymous subs, so we can use one of them for one line callbacks.
+      $window->signal_connect(destroy => sub { Gtk2->main_quit; });
+      
+      # Sets the border width of the window.
+      $window->set_border_width(10);
+      
+      # Creates a new button with a label "Hello World".
+      my $button = Gtk2::Button->new("Hello World");
+      
+      # Create a GtkTextView
+      my $textview = Gtk2::TextView->new();
+      my $textbuffer = $textview->get_buffer();
+      
+      # When the button receives the "clicked" signal, it will call the function
+      # hello() with the window reference passed to it.The hello() function is
+      # defined above.
+      $button->signal_connect(clicked => \&hello, $window);
+      my $tag = $textbuffer->create_tag("redbg", "background", "#FF0000");
+      my $tagok = $textbuffer->create_tag("greenbg", "background", "#00FF00");
+
+      my $lastprogfilename = $lastprogfilenameprefix . '/' . $chain.".".$setting_name.".txt";
+      print "lastprogfilename: $lastprogfilename.\n";
+      my $handle_lastprog = FileHandle->new($lastprogfilename, 'r');
+      for(my $i=0;$i<256;$i++) {
+        $hexaddr = int_to_32bit_hex($i+256*$k);
+        $result = `trbcmd w $fpga_addr $ram1c_addr 0x$hexaddr`; # ADDR_DEBUG_RAM1BADDR
+        print "trbcmd w $fpga_addr $ram1c_addr 0x$hexaddr\n"; # ADDR_DEBUG_RAM1BADDR
+        print "trbcmd r $fpga_addr $ram1c_data\n";
+        $result = `trbcmd r $fpga_addr $ram1c_data`;
+        print $result;
+       $result = substr($result,8,10);
+       #$result="0x11111111";
+        my $compare = $handle_lastprog->getline();
+       #$lines .= "123456789" . trim($compare) . $result ."\n";
+       #$textbuffer->set_text($lines);
+       my $line;
+        if(defined($compare)) {
+          $line = $result ."\t(programmed:". trim($compare).")\n";
+          if((lc substr($compare,0,10)) ne (lc substr($result,0,10))) {
+           $textbuffer->insert_at_cursor($line);
+            my $iter1 = $textbuffer->get_iter_at_line_offset($i,2);
+            my $iter2 = $textbuffer->get_iter_at_line_offset($i,10);
+            $textbuffer->apply_tag($tag,$iter1,$iter2);
+          }
+         else {
+           $textbuffer->insert_at_cursor($line);
+            my $iter1 = $textbuffer->get_iter_at_line_offset($i,2);
+            my $iter2 = $textbuffer->get_iter_at_line_offset($i,10);
+            $textbuffer->apply_tag($tagok,$iter1,$iter2);
+         }
+        }
+       else {
+          $line = $result ."\t(nothing programmed)\n";
+         $textbuffer->insert_at_cursor($line);
+       }
+       print $comparemem_filehandle $line;
+      }
+      # This packs the vbox into the window (a gtk container).
+      my $vbox = Gtk2::VBox->new(FALSE, 6);
+      # pack with reference to start of box after any other packed with reference to start
+      # want a scrolled textview
+      my $scroll = Gtk2::ScrolledWindow->new;
+      $scroll->add($textview);
+      $vbox->pack_start($scroll, TRUE, TRUE, 0);
+      $vbox->pack_start($button, FALSE, FALSE, 0);
+      $window->add($vbox);
+      # The final step is to display this newly created widget.
+      #$button->show;
+  
+      $window->set_title($chain.".".$setting_name );
+      # and the window
+      $window->show_all;
+
+      $k++;
+    }
+
+  }
+}
+
+# All GTK applications must have a call to the main() method. Control ends here
+# and waits for an event to occur (like a key press or a mouse event).
+Gtk2->main;
+0;
diff --git a/soft/toolbox/jtag_atomic/exportcommand b/soft/toolbox/jtag_atomic/exportcommand
new file mode 100755 (executable)
index 0000000..be7c063
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+export DAQOPSERVER=trb124
+export PATH=$PATH:/home/hadaq/bin
diff --git a/soft/toolbox/jtag_atomic/generate_chainorder.pl b/soft/toolbox/jtag_atomic/generate_chainorder.pl
new file mode 100755 (executable)
index 0000000..c87ac62
--- /dev/null
@@ -0,0 +1,75 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+my %chains = ();
+my $namecol = 0; # column of chain name, column counting from zero
+my $chaincol = 1; # column of chain name, column counting from zero
+my $jnrcol = 2; # column of JNR for sorting, column counting from zero
+my $minnumcols = 4;
+
+open(PROTOTYPEDBFILE,"/daq/toolbox/prototype_setup.db") || die("Cannot open file chains.ini!");
+my @lines_db = <PROTOTYPEDBFILE>;
+close(PROTOTYPEDBFILE);
+my $keydesc = 0;
+foreach my $line (@lines_db) {
+  # skip commented out lines
+  if(substr($line, 0, 1) eq "#") {
+    next;
+  }
+  if($keydesc == 1 and substr($line, 0, 4) eq "====") { last; }
+  # if new section begins stop interpreting lines
+  if(substr($line, 0, 3) eq "key") {
+    $keydesc = 0;
+  }
+  if($keydesc == 1) {
+    my @entries = split(/\s+/, $line);
+    if((scalar @entries) < $minnumcols) { 
+      if(!($line eq "\n")) {print "Warning: row with too little entries. skipping."}; 
+      next; 
+    }
+    my $sensorname = $entries[$namecol];
+    my $chainname = $entries[$chaincol];
+    my $jnr = $entries[$jnrcol];
+    if(! defined ($chains{$chainname})) {
+      my %sensors = ();
+      $chains{$chainname} = \%sensors;
+    }
+    my %sensors = %{$chains{$chainname}};
+    # only add sensor to chain if JNR matches following regexp
+    if ($jnr =~ /[0-9]+/) {
+      my $jnrname;
+      $jnrname= "JNR".$jnr."_".$sensorname;
+      $sensors{$jnrname} = $sensorname . ".ini";
+    }
+    $chains{$chainname} = \%sensors;
+  }
+  # if desc section begins, start interpreting next line
+  if(substr($line, 0, 8) eq "key jtag") {
+    $keydesc = 1;
+  }
+}
+
+# for each of the possible three chains generate a section with name and sensor-file references in the correct order
+my @chain_names = sort keys (%chains);
+open(CHAINSFILE,">", "./chains.ini") || die("Cannot open file chains.ini!");
+print CHAINSFILE ";WARNING this file is generated automatically. don't edit manually.\n";
+
+for (my $i=0;$i<3;$i++) {
+  my $chainname = $chain_names[$i];
+  my %sensors = %{$chains{$chainname}};
+  print CHAINSFILE "\n[$chainname]\n";
+
+  open(CHAINSFILE_CHAINI,"./chains.ini.chain$i") || die("Cannot open file chains.ini.chain$i!");
+  my @lines_chaini = <CHAINSFILE_CHAINI>;
+  close(CHAINSFILE_CHAINI);
+  foreach (@lines_chaini){
+    print CHAINSFILE $_;
+  }
+  print CHAINSFILE "\n;BEGIN GENERATE_CHAINORDER $chainname\n";
+  foreach (sort keys %sensors){
+    print CHAINSFILE $_."=".$sensors{$_}."\n";
+  }
+  print CHAINSFILE ";END GENERATE_CHAINORDER $chainname\n";
+}
+close(CHAINSFILE);
diff --git a/soft/toolbox/jtag_atomic/gui/.svn/entries b/soft/toolbox/jtag_atomic/gui/.svn/entries
new file mode 100644 (file)
index 0000000..c1e911a
--- /dev/null
@@ -0,0 +1,31 @@
+10
+
+dir
+156
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj/trb_maps_jtag3/ui/gui
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj
+
+
+
+2012-08-23T20:10:26.727067Z
+156
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+b00609d0-aec6-11df-b1c7-bba583a822eb
+\f
+design
+dir
+\f
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/entries b/soft/toolbox/jtag_atomic/gui/design/.svn/entries
new file mode 100644 (file)
index 0000000..e109c20
--- /dev/null
@@ -0,0 +1,538 @@
+10
+
+dir
+156
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj/trb_maps_jtag3/ui/gui/design
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj
+
+
+
+2012-08-23T20:10:26.727067Z
+156
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+b00609d0-aec6-11df-b1c7-bba583a822eb
+\f
+buttons3_libglade.glade
+file
+163
+
+
+
+2012-09-06T10:59:56.029864Z
+c05838ec75083d126d043ceb70a64fd4
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+15710
+\f
+buttons4_libglade.glade
+file
+163
+
+
+
+2012-09-07T16:43:24.730626Z
+e7b33833b82a3fdb70934f790ccfb6c5
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+16184
+\f
+window.glade
+file
+
+
+
+
+2012-08-22T17:16:55.417557Z
+f7ebc4306d5c0c3aeb6f23945636b2a4
+2012-08-23T20:10:26.727067Z
+156
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4785
+\f
+sensor_buttons_libglade.glade
+file
+163
+
+
+
+2012-09-06T13:35:49.683550Z
+1564b0bba83700d3e874031f3dc74142
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2733
+\f
+buttons3.1_board_libglade.glade
+file
+163
+
+
+
+2012-09-19T15:36:24.327073Z
+6615672170121389ea1eacb1bf94f338
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+10867
+\f
+buttons3_board_libglade.glade
+file
+163
+
+
+
+2012-09-06T10:59:41.725321Z
+695038d60137693f46e542a2de39e7f5
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+10881
+\f
+buttons3.2_board_libglade.glade
+file
+163
+
+
+
+2012-09-20T14:12:23.479611Z
+f8beb34396b0416d1ed8a71dbcc2d742
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+12521
+\f
+window2_libglade.glade
+file
+163
+
+
+
+2012-08-30T13:02:42.154520Z
+fb4897aa8e9cfb3e3d2a1657ba37d6dc
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+11344
+\f
+window3_libglade.glade
+file
+163
+
+
+
+2012-09-05T17:00:10.823965Z
+e400061263a9e38fb0dc4ba8922fcbfd
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+11344
+\f
+window4_libglade.glade
+file
+163
+
+
+
+2012-09-06T12:28:16.560249Z
+d82643a70d27c41bb25f1d634248a08f
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+14588
+\f
+buttons_libglade.glade
+file
+161
+
+
+
+2012-08-29T13:29:06.294595Z
+2978d24392beae4187ff581c74b891e1
+2012-10-24T08:50:25.873795Z
+161
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+17058
+\f
+window_libglade.glade
+file
+
+
+
+
+2012-08-22T17:29:47.184861Z
+7c0e47301f98d7fc5771659e3aa9ef5b
+2012-08-23T20:10:26.727067Z
+156
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+4821
+\f
+buttons.glade
+file
+
+
+
+
+2012-08-22T17:11:43.115551Z
+819ff7d85fb88d51bf4ed7de1f65d64d
+2012-08-23T20:10:26.727067Z
+156
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+6569
+\f
+sensor_buttons4_libglade.glade
+file
+163
+
+
+
+2012-09-07T16:43:25.508601Z
+67677f85e7e603d45e6b587c158ad442
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+2184
+\f
+buttons2_libglade.glade
+file
+163
+
+
+
+2012-09-05T12:46:26.100151Z
+511b707e7a82b2c98ae18a37502012a5
+2012-10-30T18:02:31.268971Z
+163
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+18958
+\f
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons.glade.svn-base
new file mode 100644 (file)
index 0000000..2db3e23
--- /dev/null
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button2">
+            <property name="label" translatable="yes">TCK 10 MHz timing</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button3">
+            <property name="label" translatable="yes">TCK 1MHz timing</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons2_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons2_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..01acb23
--- /dev/null
@@ -0,0 +1,426 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button17">
+            <property name="label" translatable="yes">prog FPGA</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button18">
+            <property name="label" translatable="yes">start trbnetd</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox5">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">period 0.15s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button14">
+                <property name="label" translatable="yes">period 1s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_1s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button15">
+                <property name="label" translatable="yes">period 10s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_10s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">13</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.1_board_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.1_board_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..5888bf3
--- /dev/null
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_buttons">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkButton" id="button17">
+                        <property name="label" translatable="yes">prog FPGA</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button18">
+                        <property name="label" translatable="yes">start trbnetd</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <widget class="GtkButton" id="button13">
+                            <property name="label" translatable="yes">period 0.15s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button14">
+                            <property name="label" translatable="yes">period 1s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_1s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button15">
+                            <property name="label" translatable="yes">period 10s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_10s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button2">
+                        <property name="label" translatable="yes">set standard settings</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_set_standard" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Board Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_chains">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_subst">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;frame3&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Chain Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.2_board_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.2_board_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..36133c5
--- /dev/null
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_buttons">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkButton" id="button17">
+                        <property name="label" translatable="yes">prog FPGA</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button18">
+                        <property name="label" translatable="yes">start trbnetd</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <widget class="GtkButton" id="button13">
+                            <property name="label" translatable="yes">period 0.15s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button14">
+                            <property name="label" translatable="yes">period 1s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_1s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button15">
+                            <property name="label" translatable="yes">period 10s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_10s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button1">
+                            <property name="label" translatable="yes">no period</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_no_period" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button3">
+                        <property name="label" translatable="yes">trigger initialization sequence</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_trigger_init_sequence" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button2">
+                        <property name="label" translatable="yes">set standard settings</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_set_standard" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Board Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_chains">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_subst">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;frame3&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Chain Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.5_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3.5_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..fc45b5f
--- /dev/null
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">TCK 100 kHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_100khz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3_board_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3_board_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..0246864
--- /dev/null
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_buttons">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkButton" id="button17">
+                        <property name="label" translatable="yes">prog FPGA</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button18">
+                        <property name="label" translatable="yes">start trbnetd</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <widget class="GtkButton" id="button13">
+                            <property name="label" translatable="yes">period 0.15s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button14">
+                            <property name="label" translatable="yes">period 1s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_1s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button15">
+                            <property name="label" translatable="yes">period 10s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_10s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button2">
+                        <property name="label" translatable="yes">set standard settings (don't START)</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_set_standard" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Board Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_chains">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_subst">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;frame3&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Chain Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons3_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..ca4ad2f
--- /dev/null
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons4_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons4_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..e65e94a
--- /dev/null
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_BM_NP1_board_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_BM_NP1_board_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..8730c00
--- /dev/null
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_buttons">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkButton" id="button17">
+                        <property name="label" translatable="yes">prog FPGA</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button18">
+                        <property name="label" translatable="yes">start trbnetd</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <widget class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Waitbeforestart</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button6">
+                            <property name="label" translatable="yes">6 us</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_waitbeforestart_6us" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button7">
+                            <property name="label" translatable="yes">1 ms</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="yalign">0.50999999046325684</property>
+                            <signal name="clicked" handler="h_waitbeforestart_1ms" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button8">
+                            <property name="label" translatable="yes">1 s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_waitbeforestart_1s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button3">
+                        <property name="label" translatable="yes">trigger initialization sequence</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_trigger_init_sequence" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button1">
+                        <property name="label" translatable="yes">MAPS_RESET all chains</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_maps_reset" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button4">
+                        <property name="label" translatable="yes">RUN_JTAG all chains</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_run_jtag" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">5</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button5">
+                        <property name="label" translatable="yes">MAPS_START all chains</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_maps_start" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">6</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="btn_set_standard_settings">
+                        <property name="label" translatable="yes">set standard settings</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_set_standard" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">7</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Board Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_chains">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_subst">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;frame3&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Chain Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_BM_NP1_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_BM_NP1_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..acd81d0
--- /dev/null
@@ -0,0 +1,405 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">TCK 100 kHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_100khz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">MAPS_CLK</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button14">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">reset before</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button8">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_before_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_before_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">reset after 1st WR</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_after_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_after_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button7">
+            <property name="label" translatable="yes">trig. init. seq.</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_trig_init_seq" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button5">
+            <property name="label" translatable="yes">MAPS_RESET</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button6">
+            <property name="label" translatable="yes">RUN_JTAG</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_run_jtag" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button4">
+            <property name="label" translatable="yes">MAPS_START</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_maps_start" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">13</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/buttons_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..ca462b9
--- /dev/null
@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button17">
+                <property name="label" translatable="yes">prog FPGA</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">prog FPGA (TDOdelay=1)</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_prog_fpga_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button18">
+            <property name="label" translatable="yes">start trbnetd</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox5">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">period 0.15s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button14">
+                <property name="label" translatable="yes">period 1s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_1s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button15">
+                <property name="label" translatable="yes">period 10s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_10s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/sensor_buttons4_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/sensor_buttons4_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..7be7d62
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkHBox" id="hbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_sensorname">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">sensor #</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">insert (virt.)</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_insert_sensor" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button2">
+            <property name="label" translatable="yes">remove (virt.)</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_remove_sensor" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/sensor_buttons_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/sensor_buttons_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..a83149d
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label_sensorname">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">sensor #</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button1">
+                <property name="label" translatable="yes">insert</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_insert_sensor" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">remove</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_remove_sensor" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window.glade.svn-base
new file mode 100644 (file)
index 0000000..ced0365
--- /dev/null
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload chains.ini</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_chainsini" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame_subst">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window2_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window2_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..34180df
--- /dev/null
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload chains.ini</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_chainsini" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkNotebook" id="notebook1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <widget class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <widget class="GtkFrame" id="frame_subst">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHSeparator" id="hseparator2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkFrame" id="frame_messages">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <widget class="GtkTextView" id="textview_msg">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Messages:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Control</property>
+              </widget>
+              <packing>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <widget class="GtkTextView" id="textview_msgdetailed">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Detailed Messages:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Log</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window3_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window3_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..a6673cb
--- /dev/null
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload boards.ini</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_boardsini" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkNotebook" id="notebook1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <widget class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <widget class="GtkFrame" id="frame_subst">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkFrame" id="frame_messages">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <widget class="GtkTextView" id="textview_msg">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Messages:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHSeparator" id="hseparator2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Control</property>
+              </widget>
+              <packing>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <widget class="GtkTextView" id="textview_msgdetailed">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Detailed Messages:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Log</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window4_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window4_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..d83faf7
--- /dev/null
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload boards.ini</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_boardsini" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkNotebook" id="notebook1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <widget class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <widget class="GtkFrame" id="frame_subst">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHBox" id="hbox1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_messages">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">automatic</property>
+                                <property name="vscrollbar_policy">automatic</property>
+                                <child>
+                                  <widget class="GtkTextView" id="textview_msg">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Messages:&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkFrame" id="frame2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkScrolledWindow" id="scrolledwindow3">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">automatic</property>
+                                <property name="vscrollbar_policy">automatic</property>
+                                <child>
+                                  <widget class="GtkTextView" id="textview_err">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label5">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Errors:&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHSeparator" id="hseparator2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Control</property>
+              </widget>
+              <packing>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <widget class="GtkTextView" id="textview_msgdetailed">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Detailed Messages:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Log</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window_libglade.glade.svn-base b/soft/toolbox/jtag_atomic/gui/design/.svn/text-base/window_libglade.glade.svn-base
new file mode 100644 (file)
index 0000000..9f8210b
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload chains.ini</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_chainsini" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame_subst">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons.glade b/soft/toolbox/jtag_atomic/gui/design/buttons.glade
new file mode 100644 (file)
index 0000000..2db3e23
--- /dev/null
@@ -0,0 +1,151 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button2">
+            <property name="label" translatable="yes">TCK 10 MHz timing</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button3">
+            <property name="label" translatable="yes">TCK 1MHz timing</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <object class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons2_board_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons2_board_libglade.glade
new file mode 100644 (file)
index 0000000..2a9bf76
--- /dev/null
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="label" translatable="yes">button</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons2_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons2_libglade.glade
new file mode 100644 (file)
index 0000000..01acb23
--- /dev/null
@@ -0,0 +1,426 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button17">
+            <property name="label" translatable="yes">prog FPGA</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button18">
+            <property name="label" translatable="yes">start trbnetd</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox5">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">period 0.15s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button14">
+                <property name="label" translatable="yes">period 1s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_1s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button15">
+                <property name="label" translatable="yes">period 10s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_10s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">13</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons3.1_board_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons3.1_board_libglade.glade
new file mode 100644 (file)
index 0000000..5888bf3
--- /dev/null
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_buttons">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkButton" id="button17">
+                        <property name="label" translatable="yes">prog FPGA</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button18">
+                        <property name="label" translatable="yes">start trbnetd</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <widget class="GtkButton" id="button13">
+                            <property name="label" translatable="yes">period 0.15s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button14">
+                            <property name="label" translatable="yes">period 1s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_1s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button15">
+                            <property name="label" translatable="yes">period 10s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_10s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button2">
+                        <property name="label" translatable="yes">set standard settings</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_set_standard" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Board Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_chains">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_subst">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;frame3&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Chain Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons3.2_board_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons3.2_board_libglade.glade
new file mode 100644 (file)
index 0000000..36133c5
--- /dev/null
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_buttons">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkButton" id="button17">
+                        <property name="label" translatable="yes">prog FPGA</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button18">
+                        <property name="label" translatable="yes">start trbnetd</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <widget class="GtkButton" id="button13">
+                            <property name="label" translatable="yes">period 0.15s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button14">
+                            <property name="label" translatable="yes">period 1s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_1s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button15">
+                            <property name="label" translatable="yes">period 10s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_10s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button1">
+                            <property name="label" translatable="yes">no period</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_no_period" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button3">
+                        <property name="label" translatable="yes">trigger initialization sequence</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_trigger_init_sequence" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button2">
+                        <property name="label" translatable="yes">set standard settings</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_set_standard" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Board Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_chains">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_subst">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;frame3&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Chain Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons3.5_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons3.5_libglade.glade
new file mode 100644 (file)
index 0000000..fc45b5f
--- /dev/null
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">TCK 100 kHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_100khz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons3_board_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons3_board_libglade.glade
new file mode 100644 (file)
index 0000000..0246864
--- /dev/null
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_buttons">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkButton" id="button17">
+                        <property name="label" translatable="yes">prog FPGA</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button18">
+                        <property name="label" translatable="yes">start trbnetd</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox5">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <widget class="GtkButton" id="button13">
+                            <property name="label" translatable="yes">period 0.15s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button14">
+                            <property name="label" translatable="yes">period 1s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_1s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button15">
+                            <property name="label" translatable="yes">period 10s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_period_10s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button2">
+                        <property name="label" translatable="yes">set standard settings (don't START)</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_set_standard" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Board Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_chains">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_subst">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;frame3&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Chain Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons3_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons3_libglade.glade
new file mode 100644 (file)
index 0000000..ca4ad2f
--- /dev/null
@@ -0,0 +1,356 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons4_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons4_libglade.glade
new file mode 100644 (file)
index 0000000..e65e94a
--- /dev/null
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1.glade b/soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1.glade
new file mode 100644 (file)
index 0000000..90121ba
--- /dev/null
@@ -0,0 +1,405 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">TCK 100 kHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_100khz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">MAPS_CLK</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button14">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">reset before</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button8">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_before_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_before_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">reset after 1st WR</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_after_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reset_after_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button7">
+            <property name="label" translatable="yes">trig. init. seq.</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_trig_init_seq" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button5">
+            <property name="label" translatable="yes">MAPS_RESET</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button6">
+            <property name="label" translatable="yes">RUN_JTAG</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_run_jtag" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button4">
+            <property name="label" translatable="yes">MAPS_START</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_maps_start" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">13</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1_board_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1_board_libglade.glade
new file mode 100644 (file)
index 0000000..ff7cb38
--- /dev/null
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkFrame" id="frame1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_buttons">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkButton" id="button17">
+                        <property name="label" translatable="yes">prog FPGA</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button18">
+                        <property name="label" translatable="yes">start trbnetd</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkHBox" id="hbox2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <child>
+                          <widget class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Waitbeforestart</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button6">
+                            <property name="label" translatable="yes">6 us</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_waitbeforestart_6us" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button7">
+                            <property name="label" translatable="yes">1 ms</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <property name="yalign">0.50999999046325684</property>
+                            <signal name="clicked" handler="h_waitbeforestart_1ms" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkButton" id="button8">
+                            <property name="label" translatable="yes">1 s</property>
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="receives_default">True</property>
+                            <signal name="clicked" handler="h_waitbeforestart_1s" swapped="no"/>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button3">
+                        <property name="label" translatable="yes">trigger initialization sequence</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_trigger_init_sequence" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button1">
+                        <property name="label" translatable="yes">MAPS_RESET all chains</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_maps_reset" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button4">
+                        <property name="label" translatable="yes">RUN_JTAG all chains</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_run_jtag" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">5</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button5">
+                        <property name="label" translatable="yes">MAPS_START all chains</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_maps_start" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">6</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="button2">
+                        <property name="label" translatable="yes">WRITE_ONCE_JTAG all chains</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_write_once" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">7</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkButton" id="btn_set_standard_settings">
+                        <property name="label" translatable="yes">set standard settings</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <signal name="clicked" handler="h_set_standard" swapped="no"/>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">8</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Board Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox_chains">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_subst">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <placeholder/>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;frame3&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </widget>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;Chain Commands&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons_BM_NP1_libglade.glade
new file mode 100644 (file)
index 0000000..8523a67
--- /dev/null
@@ -0,0 +1,419 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">delay 0</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay0" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button20">
+                <property name="label" translatable="yes">1</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button21">
+                <property name="label" translatable="yes">2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay2" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button22">
+                <property name="label" translatable="yes">3</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_delay3" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">TCK 100 kHz</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_100khz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label3">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">MAPS_CLK</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button14">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">reset before</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button8">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_before_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_before_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label2">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">reset after 1st WR</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">on</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_after_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">off</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_after_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button7">
+            <property name="label" translatable="yes">trig. init. seq.</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_trig_init_seq" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button5">
+            <property name="label" translatable="yes">MAPS_RESET</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button6">
+            <property name="label" translatable="yes">RUN_JTAG</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_run_jtag" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button4">
+            <property name="label" translatable="yes">MAPS_START</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_maps_start" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">13</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button15">
+            <property name="label" translatable="yes">WRITE_ONCE_JTAG</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_write_once" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">14</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/buttons_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/buttons_libglade.glade
new file mode 100644 (file)
index 0000000..ca462b9
--- /dev/null
@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_chainnr">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">chain nr.</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox7">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button17">
+                <property name="label" translatable="yes">prog FPGA</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_prog_fpga" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button19">
+                <property name="label" translatable="yes">prog FPGA (TDOdelay=1)</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_prog_fpga_delay1" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button18">
+            <property name="label" translatable="yes">start trbnetd</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_start_trbnetd" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">prog RAM</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_prog_ram" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox6">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">TCK 10 MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_10mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button3">
+                <property name="label" translatable="yes">TCK 1MHz timing</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_set_timing_1mhz" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button4">
+                <property name="label" translatable="yes">START</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_start" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button5">
+                <property name="label" translatable="yes">STOP</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_stop" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">5</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">6</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button16">
+            <property name="label" translatable="yes">set IN/OUT pol.;start,clk on</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_set_inout" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">7</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button6">
+                <property name="label" translatable="yes">reg. MAPS_reset ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button7">
+                <property name="label" translatable="yes">reg. MAPS_reset OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_reset_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">8</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox4">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="homogeneous">True</property>
+            <child>
+              <widget class="GtkButton" id="button11">
+                <property name="label" translatable="yes">MAPS_start ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="h_maps_start_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button12">
+                <property name="label" translatable="yes">MAPS_start OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_start_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">9</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox3">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button9">
+                <property name="label" translatable="yes">MAPS_CLK ON</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_on" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button10">
+                <property name="label" translatable="yes">MAPS_CLK OFF</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_maps_clk_off" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">10</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHBox" id="hbox5">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkButton" id="button13">
+                <property name="label" translatable="yes">period 0.15s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_0_15s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button14">
+                <property name="label" translatable="yes">period 1s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_1s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button15">
+                <property name="label" translatable="yes">period 10s</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_period_10s" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">11</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button8">
+            <property name="label" translatable="yes">man. MAPS_reset</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_man_maps_reset" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">12</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/sensor_buttons4_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/sensor_buttons4_libglade.glade
new file mode 100644 (file)
index 0000000..7be7d62
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkHBox" id="hbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkLabel" id="label_sensorname">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">sensor #</property>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button1">
+            <property name="label" translatable="yes">insert (virt.)</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_insert_sensor" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkButton" id="button2">
+            <property name="label" translatable="yes">remove (virt.)</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <signal name="clicked" handler="h_remove_sensor" swapped="no"/>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/sensor_buttons_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/sensor_buttons_libglade.glade
new file mode 100644 (file)
index 0000000..a83149d
--- /dev/null
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox_top">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label_sensorname">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">sensor #</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button1">
+                <property name="label" translatable="yes">insert</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_insert_sensor" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button2">
+                <property name="label" translatable="yes">remove</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_remove_sensor" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/window.glade b/soft/toolbox/jtag_atomic/gui/design/window.glade
new file mode 100644 (file)
index 0000000..ced0365
--- /dev/null
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.24"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload chains.ini</property>
+                <property name="use_action_appearance">False</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_chainsini" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkFrame" id="frame_subst">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <object class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </object>
+            </child>
+            <child type="label">
+              <object class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/window2_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/window2_libglade.glade
new file mode 100644 (file)
index 0000000..34180df
--- /dev/null
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload chains.ini</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_chainsini" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkNotebook" id="notebook1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <widget class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <widget class="GtkFrame" id="frame_subst">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHSeparator" id="hseparator2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkFrame" id="frame_messages">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <widget class="GtkTextView" id="textview_msg">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Messages:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Control</property>
+              </widget>
+              <packing>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <widget class="GtkTextView" id="textview_msgdetailed">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Detailed Messages:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Log</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/window3_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/window3_libglade.glade
new file mode 100644 (file)
index 0000000..a6673cb
--- /dev/null
@@ -0,0 +1,247 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload boards.ini</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_boardsini" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkNotebook" id="notebook1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <widget class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <widget class="GtkFrame" id="frame_subst">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkFrame" id="frame_messages">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="hscrollbar_policy">automatic</property>
+                            <property name="vscrollbar_policy">automatic</property>
+                            <child>
+                              <widget class="GtkTextView" id="textview_msg">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label3">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Messages:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHSeparator" id="hseparator2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Control</property>
+              </widget>
+              <packing>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <widget class="GtkTextView" id="textview_msgdetailed">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Detailed Messages:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Log</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/window4_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/window4_libglade.glade
new file mode 100644 (file)
index 0000000..d83faf7
--- /dev/null
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox3">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload boards.ini</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_boardsini" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkNotebook" id="notebook1">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <child>
+              <widget class="GtkVBox" id="vbox1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <child>
+                  <widget class="GtkFrame" id="frame_subst">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label_xalign">0</property>
+                    <property name="shadow_type">none</property>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <placeholder/>
+                        </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label6">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="type">label_item</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHBox" id="hbox1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame_messages">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment2">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkScrolledWindow" id="scrolledwindow1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">automatic</property>
+                                <property name="vscrollbar_policy">automatic</property>
+                                <child>
+                                  <widget class="GtkTextView" id="textview_msg">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label3">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Messages:&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkFrame" id="frame2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">none</property>
+                        <child>
+                          <widget class="GtkAlignment" id="alignment4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="left_padding">12</property>
+                            <child>
+                              <widget class="GtkScrolledWindow" id="scrolledwindow3">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="hscrollbar_policy">automatic</property>
+                                <property name="vscrollbar_policy">automatic</property>
+                                <child>
+                                  <widget class="GtkTextView" id="textview_err">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </widget>
+                                </child>
+                              </widget>
+                            </child>
+                          </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label5">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;b&gt;Errors:&lt;/b&gt;</property>
+                            <property name="use_markup">True</property>
+                          </widget>
+                          <packing>
+                            <property name="type">label_item</property>
+                          </packing>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="expand">True</property>
+                        <property name="fill">True</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkHSeparator" id="hseparator2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Control</property>
+              </widget>
+              <packing>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkFrame" id="frame1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label_xalign">0</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <widget class="GtkAlignment" id="alignment3">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="left_padding">12</property>
+                    <child>
+                      <widget class="GtkScrolledWindow" id="scrolledwindow2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
+                        <child>
+                          <widget class="GtkTextView" id="textview_msgdetailed">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                          </widget>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                </child>
+                <child>
+                  <widget class="GtkLabel" id="label7">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">&lt;b&gt;Detailed Messages:&lt;/b&gt;</property>
+                    <property name="use_markup">True</property>
+                  </widget>
+                  <packing>
+                    <property name="type">label_item</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label4">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Log</property>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_fill">False</property>
+                <property name="type">tab</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/gui/design/window_libglade.glade b/soft/toolbox/jtag_atomic/gui/design/window_libglade.glade
new file mode 100644 (file)
index 0000000..9f8210b
--- /dev/null
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<glade-interface>
+  <!-- interface-requires gtk+ 2.24 -->
+  <!-- interface-naming-policy project-wide -->
+  <widget class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <child>
+      <widget class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <widget class="GtkHBox" id="hbox2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <widget class="GtkLabel" id="label">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">Load configuration:</property>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkButton" id="button">
+                <property name="label" translatable="yes">reload chains.ini</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="h_reload_chainsini" swapped="no"/>
+              </widget>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkFrame" id="frame_subst">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label_xalign">0</property>
+            <property name="shadow_type">none</property>
+            <child>
+              <widget class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="left_padding">12</property>
+                <child>
+                  <placeholder/>
+                </child>
+              </widget>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="label" translatable="yes">&lt;b&gt;frame1&lt;/b&gt;</property>
+                <property name="use_markup">True</property>
+              </widget>
+              <packing>
+                <property name="type">label_item</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkHSeparator" id="hseparator2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
+          </packing>
+        </child>
+        <child>
+          <widget class="GtkLabel" id="label2">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">2012 Goethe-Universität, Frankfurt am Main.</property>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">4</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
+</glade-interface>
diff --git a/soft/toolbox/jtag_atomic/jtagmonitor_lastcounters.ini b/soft/toolbox/jtag_atomic/jtagmonitor_lastcounters.ini
new file mode 100644 (file)
index 0000000..4aee137
--- /dev/null
@@ -0,0 +1,35 @@
+[chain1]
+JNR3_sensor1_rerrors=
+JNR3_sensor1_werrors=
+JNR3_sensor1_run=
+JNR3_sensor1_datach=
+JNR2_sensor2_rerrors=
+JNR2_sensor2_werrors=
+JNR2_sensor2_run=
+JNR2_sensor2_datach=
+JNR1_sensor3_rerrors=
+JNR1_sensor3_werrors=
+JNR1_sensor3_run=
+JNR1_sensor3_datach=
+JNR0_sensor4_rerrors=
+JNR0_sensor4_werrors=
+JNR0_sensor4_run=
+JNR0_sensor4_datach=
+[chain2]
+JNR3_sensor5_rerrors=
+JNR3_sensor5_werrors=
+JNR3_sensor5_run=
+JNR3_sensor5_datach=
+JNR2_sensor6_rerrors=
+JNR2_sensor6_werrors=
+JNR2_sensor6_run=
+JNR2_sensor6_datach=
+JNR1_sensor7_rerrors=
+JNR1_sensor7_werrors=
+JNR1_sensor7_run=
+JNR1_sensor7_datach=
+JNR0_sensor8_rerrors=
+JNR0_sensor8_werrors=
+JNR0_sensor8_run=
+JNR0_sensor8_datach=
+[chain3]
diff --git a/soft/toolbox/jtag_atomic/jtagmonitor_usechainsini4.pl b/soft/toolbox/jtag_atomic/jtagmonitor_usechainsini4.pl
new file mode 100755 (executable)
index 0000000..7965e0b
--- /dev/null
@@ -0,0 +1,232 @@
+#!/usr/bin/perl -w
+
+#use warnings;
+#use strict;
+use Time::HiRes qw( gettimeofday usleep time );
+use FileHandle;
+use Data::Dumper;
+use POSIX qw/floor ceil/;
+use Config::Abstract::Ini;
+use Sys::Syslog;
+my %laststore;
+my $totalsum = 0;
+use HADES::TrbNet;
+use lib qw(/daq/toolbox);
+use Hmon;
+use QA;
+use HPlot;
+openlog("atomic,jtagmonitor_usechainsini4.pl", "perror", "local1");
+syslog("INFO", "starting monitor");
+$ENV{DAQOPSERVER}='trb124';
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+sub colored_table {
+  my @rows = @{$_[0]};
+  my $string;
+  $string .= "<table>";
+  foreach my $row (@rows) {
+    $string .= "<tr>";
+    foreach my $cell (@{$row}) {
+       my %cellhash = %{$cell};
+       $string .= "<td style=\"background-color:$cellhash{'bgcolor'};\">$cellhash{'text'}</td>";
+    }
+    $string .= "</tr>";
+  }
+  $string .= "</table>";
+
+}
+
+$ENV{DAQOPSERVER}='trb124';
+
+trb_init_ports() or die trb_strerror();
+my $chainsfile= './chains.ini';
+my $lastcountersfile= 'jtagmonitor_lastcounters.ini';
+
+
+my $fqa  = QA::OpenQAFile();
+
+while (1){
+  # read last error counters from disk
+  my $chainsLastCounters = new Config::Abstract::Ini($lastcountersfile);
+  my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+  my %allchains = $chainsSettings->get_all_settings;
+  my %chainsLastCountersHash = $chainsLastCounters->get_all_settings;
+
+  sleep(1);
+  foreach my $chain (keys %allchains) {
+    my %settings=%{$allchains{$chain}};
+    my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+    my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+    my $status2_ram3b_baseaddr_reg_addr = $settings{'STATUS2RAM3BBASEADDRREGtrbnetAddr'};
+    my $status2_ram3b_addr         = $settings{'STATUS2RAM3BtrbnetAddr'};
+    system("trbcmd w $fpga_addr $cmd_reg_addr 0x00000063"); # command: M26C_CMD_COPY_TO_STATUS2
+  }
+  sleep(1);
+#      my  $str = Hmon::MakeDate(0,0,"");
+  my $str = Hmon::MakeTitle(8,5,"JTAG Monitor",1);
+  my $status_str = Hmon::MakeTitle(8,5,"JTAG Monitor",1);
+  my $vert_list_counter = 0;
+  # file to write counter values to
+  open(my $lastcounters_fh, ">", $lastcountersfile);
+  my $run_counter_changed = 0;
+  foreach my $chain (sort(keys %allchains)) {
+    my %settings=%{$allchains{$chain}};
+    my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+    my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+    my $status2_ram3b_baseaddr_reg_addr = $settings{'STATUS2RAM3BBASEADDRREGtrbnetAddr'};
+    my $status2_ram3b_addr         = $settings{'STATUS2RAM3BtrbnetAddr'};
+    my @sensors;
+    my @vert_list1;
+    my @vert_list2;
+    my %last_counters = %{$chainsLastCountersHash{$chain}};
+    my @status_table_row1;
+    my @status_table_row2;
+    print $lastcounters_fh "[$chain]\n";
+    my $deviderrors = 0;
+    my $wrregerrors = 0;
+    my $botherrors = 0;
+    my $minlastruncounter = 0;
+    my $maxruncounter = 0;
+    foreach my $setting_name (reverse sort keys %settings) {
+      if ($setting_name =~ /sensor[0-9]+/) {
+        push(@sensors, $setting_name);
+        my $i = (scalar @sensors)-1;
+        my $rambasepointer=int_to_32bit_hex(($i)*4);
+       print "trbcmd w $fpga_addr $status2_ram3b_baseaddr_reg_addr 0x$rambasepointer\n"; # ADDR_STATUS2_RAM3B_BASEADDR // FIRST COL
+       system("trbcmd w $fpga_addr $status2_ram3b_baseaddr_reg_addr 0x$rambasepointer"); # ADDR_STATUS2_RAM3B_BASEADDR // FIRST COL
+
+        print "reading $fpga_addr $status2_ram3b_addr.\n";
+       my $rerrors1  = trb_register_read(hex($fpga_addr), hex($status2_ram3b_addr));
+        print "reading $fpga_addr " .(hex($status2_ram3b_addr)+2) ."\n";
+       my $werrors1  = trb_register_read(hex($fpga_addr), hex($status2_ram3b_addr)+2);
+        
+        $rambasepointer=int_to_32bit_hex(($i)*4+2);
+       print "trbcmd w $fpga_addr $status2_ram3b_baseaddr_reg_addr 0x$rambasepointer\n"; # ADDR_STATUS2_RAM3B_BASEADDR // FIRST COL
+       system("trbcmd w $fpga_addr $status2_ram3b_baseaddr_reg_addr 0x$rambasepointer"); # ADDR_STATUS2_RAM3B_BASEADDR // SECOND COL
+       my $run  = trb_register_read(hex($fpga_addr), hex($status2_ram3b_addr));
+       my $dat  = trb_register_read(hex($fpga_addr), hex($status2_ram3b_addr)+2);
+
+
+       my $k=0, $v=0;
+
+       ($k, $v) = each %$rerrors1;
+#      $hexkey = sprintf("%x", $k);
+#      $hexval = sprintf("%x", $v);
+       my $read_errors1 = $v;
+        print "read_errors1: $read_errors1\n";
+       ($k, $v) = each %$werrors1;
+#      $hexkey = sprintf("%x", $k);
+#      $hexval = sprintf("%x", $v);
+       my $write_errors1 = $v;
+        print "write_errors1: $write_errors1\n";
+
+       ($k, $v) = each %$run;
+#      $hexkey = sprintf("%x", $k);
+#      $hexval = sprintf("%x", $v);
+       my $run_counter = $v;
+        print "run_counter: $run_counter\n";
+
+       ($k, $v) = each %$dat;
+#      $hexkey = sprintf("%x", $k);
+#      $hexval = sprintf("%x", $v);
+       my $data_changed = $v;
+
+        print $lastcounters_fh "$setting_name"."_rerrors=".$read_errors1."\n";
+        print $lastcounters_fh "$setting_name"."_werrors=".$write_errors1."\n";
+        print $lastcounters_fh "$setting_name"."_run=".$run_counter."\n";
+        print $lastcounters_fh "$setting_name"."_datach=".$data_changed."\n";
+
+       # get last values
+        my $last_read_errors1 = $last_counters{$setting_name."_rerrors"};
+        my $last_write_errors1 = $last_counters{$setting_name."_werrors"};
+        my $last_run_counter = $last_counters{$setting_name."_run"};
+        my $last_data_changed = $last_counters{$setting_name."_datach"};
+        my $bgcolor = "#FFFFFF";
+        if($last_run_counter == $run_counter) {
+           $bgcolor = "#AAAAFF"; # blue: not included in last run/not running at all
+        }
+        elsif($last_run_counter < $run_counter) {
+          if (($last_read_errors1 == $read_errors1) and ($last_write_errors1 == $write_errors1)) {
+            $bgcolor = "#99FF99"; # green: no read or write errors
+          }
+          elsif ((!($last_read_errors1 == $read_errors1)) and ($last_write_errors1 == $write_errors1))  {
+            $bgcolor = "#FF9999"; # red: read id errors
+            $deviderrors = 1;
+            
+          }
+          elsif ((($last_read_errors1 == $read_errors1)) and (!($last_write_errors1 == $write_errors1)))  {
+            $bgcolor = "#FFCC99"; # orange: write errors
+            $wrregerrors = 1;
+          }
+          else {
+            $botherrors = 1;
+            $bgcolor = "#FF0000"; # pure red: write and read id errors
+          }
+          # for triggering copyram
+          if ((!($last_data_changed == $data_changed)) and (($last_write_errors1 == $write_errors1)))  {
+            #$bgcolor = "#FFCC99"; # orange: write errors
+            syslog("WARNING", "Data Changed Occured in $setting_name, $chain between runs $last_run_counter and $run_counter.");
+            system("touch /tmp/jtag_ipc_datachanged_copyram");
+          }
+        }
+        if(!($last_run_counter == $run_counter)) {
+           $run_counter_changed = 1;
+        }
+        if(($minlastruncounter == 0) or ($last_run_counter < $minlastruncounter)) { $minlastruncounter = $last_run_counter; }
+        if($run_counter > $maxruncounter) { $maxruncounter = $run_counter; }
+        my %head_cell = ("bgcolor"=>"#FFFFFF", "text" => $setting_name);
+        my %color_cell =("bgcolor"=>$bgcolor, "text" => "");
+        push(@status_table_row1, \%head_cell);
+        push(@status_table_row2, \%color_cell);
+        push(@vert_list1, "");
+        push(@vert_list1, "Run Counter $i");
+        push(@vert_list1, "Read Errors $i");
+        push(@vert_list1, "Write Errors $i");
+        push(@vert_list1, "Data Changed $i");
+        push(@vert_list2, "");
+        push(@vert_list2, $run_counter);
+        push(@vert_list2, $read_errors1);
+        push(@vert_list2, $write_errors1);
+        push(@vert_list2, $data_changed);
+      }
+    }
+    if($deviderrors == 1) {
+      syslog("ERR", "MIMOSA26 Dev ID $chain wrong/missing between runs $minlastruncounter and $maxruncounter (READ_ERROR). Check bypass switches?");
+    }
+    elsif($wrregerrors == 1) {
+      syslog("ERR", "MIMOSA26 Registers $chain not returned correct between runs $minlastruncounter and $maxruncounter(WRITE_ERROR). Check bypass switches and TDI/TDO connection?");
+    }
+    elsif($botherrors == 1) {
+      syslog("WARNING", "Only WRITE_ERROR and READ_ERROR $chain between runs $minlastruncounter and $maxruncounter. Power off?");
+    }
+    $status_str .= Hmon::MakeTitle(8,5,$chain,1);
+    my @table = [\@status_table_row1,\@status_table_row2];
+    $status_str .= colored_table(@table) . "<br><!-- end status //-->";
+    #print $status_str;
+    $str .= Hmon::MakeTitle(8,5,$chain,1);
+    my  $str1 = Hmon::MakeVerticalList(200,"",@vert_list1);
+    my  $str2 = Hmon::MakeVerticalList(100,"NOT_ZERO_ERROR",@vert_list2);
+    $str .= Hmon::Merge2Lists(200,100,$str1,$str2);
+    $vert_list_counter+=1000;  
+  }
+  $str .= Hmon::MakeFooter();
+  my @legend_table = [[{"bgcolor"=>"#FFFFFF", "text" => "not programmed"},{"bgcolor"=>"#FFFFFF", "text" => "read ID errors only"},
+                        { "bgcolor"=>"#FFFFFF", "text" => "write errors only"}, {"bgcolor"=>"#FFFFFF", "text" => "write + read ID errors"}, {"bgcolor"=>"#FFFFFF", "text" => "no errors"}],
+                      [{"bgcolor"=>"#AAAAFF", "text" => ""},{"bgcolor"=>"#FF9999", "text" => ""},
+                       {"bgcolor"=>"#FFCC99", "text" => ""}, {"bgcolor"=>"#FF0000", "text" => ""}, {"bgcolor"=>"#99FF99", "text" => ""}]];
+  $status_str .= "<h4>Legend</h4>".colored_table(@legend_table) . "<br><!-- end status //-->";
+  $str = $status_str . $str;
+  if(!($run_counter_changed == 0)) {
+    Hmon::WriteFile("jtagmonitor_usechainsini",$str);
+  }
+
+  
+       
+}
+
+
diff --git a/soft/toolbox/jtag_atomic/libs/.svn/entries b/soft/toolbox/jtag_atomic/libs/.svn/entries
new file mode 100644 (file)
index 0000000..1d01f02
--- /dev/null
@@ -0,0 +1,31 @@
+10
+
+dir
+135
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj/trb_maps_jtag3/ui/libs
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj
+
+
+
+2011-11-28T16:19:53.211492Z
+134
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+b00609d0-aec6-11df-b1c7-bba583a822eb
+\f
+Config
+dir
+\f
diff --git a/soft/toolbox/jtag_atomic/libs/:q b/soft/toolbox/jtag_atomic/libs/:q
new file mode 100644 (file)
index 0000000..55e36c3
--- /dev/null
@@ -0,0 +1,7 @@
+#/usr/bin/perl  -I/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch -I/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/lib
+#
+use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+use BN::CRC32;
+
+print "PERL:" . crc32("A string.");
diff --git a/soft/toolbox/jtag_atomic/libs/CRC32.bs b/soft/toolbox/jtag_atomic/libs/CRC32.bs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/CRC32.c b/soft/toolbox/jtag_atomic/libs/CRC32.c
new file mode 100644 (file)
index 0000000..a941560
--- /dev/null
@@ -0,0 +1,413 @@
+/*
+ * This file was generated automatically by ExtUtils::ParseXS version 3.16 from the
+ * contents of CRC32.xs. Do not edit this file, edit CRC32.xs instead.
+ *
+ *    ANY CHANGES MADE HERE WILL BE LOST!
+ *
+ */
+
+#line 1 "CRC32.xs"
+/*
+ Perl Extension for 32bit CRC computations
+ by Soenke J. Peters
+*/
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/* 
+ Based on CRC-32 version 1.04 by Craig Bruce, 05-Dec-1994
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef GENTABLE
+U32 
+crcTable[256];
+
+void
+crcgen( void )
+{
+    U32 crc, poly;
+    int     i, j;
+
+    poly = 0xEDB88320L;
+    //poly = 0x04C11DB7L;
+    for (i=0; i<256; i++) {
+        //crc = i<<24;
+        crc = i;
+        for (j=8; j>0; j--) {
+            if (crc&1) {
+                crc = (crc >> 1) ^ poly;
+            //if (crc&0x80000000) {
+            //    crc = (crc << 1) ^ poly;
+            } else {
+                crc >>= 1;
+            //    crc <<= 1;
+            }
+        }
+        crcTable[i] = crc;
+    }
+    printf("crcTable[15]=%x\n", crcTable[15]);
+}
+#else /* GENTABLE */
+U32
+crcTable[256] = {
+0x0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01,
+0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
+0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
+0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
+0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
+0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683,
+0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1,
+0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
+0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
+0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
+0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713,
+0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21,
+0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
+0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
+0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
+0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
+};
+#endif /* GENTABLE */
+
+U32 
+getcrc(char *c, int len, U32 crcinit)
+{
+    register U32 crc;
+    char     *e = c + len;
+
+    crc = crcinit^0xFFFFFFFF;
+    //crc = crcinit;
+    while (c < e) {
+       //printf("CALCULATING CRC OF: %X;\n", (crc^ *c) & 0xFF);
+        crc = ((crc >> 8) & 0x00FFFFFF) ^ crcTable[ (crc^ *c) & 0xFF ];
+        //crc = ((crc << 8) & 0xFFFFFF00) ^ crcTable[ (crc^ *c) & 0xFF ];
+        ++c;
+    }
+    return( crc^0xFFFFFFFF );
+    //return( crc );
+}
+
+#define BUFSIZE 32768
+
+U32
+getcrc_fp( PerlIO *fp, U32 crcinit )
+{
+    register U32 crc;
+    register U16 len;
+    unsigned char buf[BUFSIZE];
+
+    crc = crcinit^0xFFFFFFFF;
+    while((len = PerlIO_read(fp, buf, BUFSIZE)) > 0 ) {
+        unsigned char * p = buf;
+        do {
+           crc = ((crc >> 8) & 0x00FFFFFF) ^ crcTable[(unsigned char)( (crc & 0xff) ^ *(p++) )];
+       } while (--len);
+    }
+    return( crc^0xFFFFFFFF );
+}
+
+svtype
+getsvtype(SV *sv)
+{
+  if (sv == NULL )
+    return SVt_NULL;
+  if (SvROK(sv))
+    return SvTYPE(SvRV(sv));
+  else 
+    return SvTYPE(sv);
+}
+
+#line 143 "CRC32.c"
+#ifndef PERL_UNUSED_VAR
+#  define PERL_UNUSED_VAR(var) if (0) var = var
+#endif
+
+#ifndef dVAR
+#  define dVAR         dNOOP
+#endif
+
+
+/* This stuff is not part of the API! You have been warned. */
+#ifndef PERL_VERSION_DECIMAL
+#  define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
+#endif
+#ifndef PERL_DECIMAL_VERSION
+#  define PERL_DECIMAL_VERSION \
+         PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
+#endif
+#ifndef PERL_VERSION_GE
+#  define PERL_VERSION_GE(r,v,s) \
+         (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+#ifndef PERL_VERSION_LE
+#  define PERL_VERSION_LE(r,v,s) \
+         (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+
+/* XS_INTERNAL is the explicit static-linkage variant of the default
+ * XS macro.
+ *
+ * XS_EXTERNAL is the same as XS_INTERNAL except it does not include
+ * "STATIC", ie. it exports XSUB symbols. You probably don't want that
+ * for anything but the BOOT XSUB.
+ *
+ * See XSUB.h in core!
+ */
+
+
+/* TODO: This might be compatible further back than 5.10.0. */
+#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1)
+#  undef XS_EXTERNAL
+#  undef XS_INTERNAL
+#  if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
+#    define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
+#    define XS_INTERNAL(name) STATIC XSPROTO(name)
+#  endif
+#  if defined(__SYMBIAN32__)
+#    define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)
+#    define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
+#  endif
+#  ifndef XS_EXTERNAL
+#    if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
+#      define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
+#      define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
+#    else
+#      ifdef __cplusplus
+#        define XS_EXTERNAL(name) extern "C" XSPROTO(name)
+#        define XS_INTERNAL(name) static XSPROTO(name)
+#      else
+#        define XS_EXTERNAL(name) XSPROTO(name)
+#        define XS_INTERNAL(name) STATIC XSPROTO(name)
+#      endif
+#    endif
+#  endif
+#endif
+
+/* perl >= 5.10.0 && perl <= 5.15.1 */
+
+
+/* The XS_EXTERNAL macro is used for functions that must not be static
+ * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL
+ * macro defined, the best we can do is assume XS is the same.
+ * Dito for XS_INTERNAL.
+ */
+#ifndef XS_EXTERNAL
+#  define XS_EXTERNAL(name) XS(name)
+#endif
+#ifndef XS_INTERNAL
+#  define XS_INTERNAL(name) XS(name)
+#endif
+
+/* Now, finally, after all this mess, we want an ExtUtils::ParseXS
+ * internal macro that we're free to redefine for varying linkage due
+ * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use
+ * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to!
+ */
+
+#undef XS_EUPXS
+#if defined(PERL_EUPXS_ALWAYS_EXPORT)
+#  define XS_EUPXS(name) XS_EXTERNAL(name)
+#else
+   /* default to internal */
+#  define XS_EUPXS(name) XS_INTERNAL(name)
+#endif
+
+#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
+#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
+
+/* prototype to pass -Wmissing-prototypes */
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params);
+
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
+{
+    const GV *const gv = CvGV(cv);
+
+    PERL_ARGS_ASSERT_CROAK_XS_USAGE;
+
+    if (gv) {
+        const char *const gvname = GvNAME(gv);
+        const HV *const stash = GvSTASH(gv);
+        const char *const hvname = stash ? HvNAME(stash) : NULL;
+
+        if (hvname)
+            Perl_croak(aTHX_ "Usage: %s::%s(%s)", hvname, gvname, params);
+        else
+            Perl_croak(aTHX_ "Usage: %s(%s)", gvname, params);
+    } else {
+        /* Pants. I don't think that it should be possible to get here. */
+        Perl_croak(aTHX_ "Usage: CODE(0x%"UVxf")(%s)", PTR2UV(cv), params);
+    }
+}
+#undef  PERL_ARGS_ASSERT_CROAK_XS_USAGE
+
+#ifdef PERL_IMPLICIT_CONTEXT
+#define croak_xs_usage(a,b)    S_croak_xs_usage(aTHX_ a,b)
+#else
+#define croak_xs_usage        S_croak_xs_usage
+#endif
+
+#endif
+
+/* NOTE: the prototype of newXSproto() is different in versions of perls,
+ * so we define a portable version of newXSproto()
+ */
+#ifdef newXS_flags
+#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)
+#else
+#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)
+#endif /* !defined(newXS_flags) */
+
+#line 285 "CRC32.c"
+
+XS_EUPXS(XS_BN__CRC32_crc32); /* prototype to pass -Wmissing-prototypes */
+XS_EUPXS(XS_BN__CRC32_crc32)
+{
+    dVAR; dXSARGS;
+    if (items < 1)
+       croak_xs_usage(cv,  "data, ...");
+    PERL_UNUSED_VAR(ax); /* -Wall */
+    SP -= items;
+    {
+       char *  data;
+#line 142 "CRC32.xs"
+       U32 crcinit = 0xFFFFFFFF;
+    STRLEN data_len;
+#line 300 "CRC32.c"
+       U32     RETVAL;
+       dXSTARG;
+#line 145 "CRC32.xs"
+       int sv_type;
+       IO *io;
+       SV *sv;
+       U32 rv = 0;
+      {
+#ifdef GENTABLE
+       crcgen();
+#endif /* GENTABLE */
+       /* Horst Fickenscher <horst_fickenscher@sepp.de> mailed me that it
+          could be useful to supply an initial value other than 0, e.g.
+          to calculate checksums of big files without the need of keeping
+          them comletely in memory */
+       if ( items > 1 )
+               crcinit = (U32) SvNV(ST(items - 1));
+       //printf("crcinit: %x.\n", crcinit);
+
+       sv_type = getsvtype(ST(0));
+
+       if (sv_type == SVt_PVGV)
+         {
+               io = sv_2io(ST(0));
+               rv = getcrc_fp(IoIFP(io), crcinit);
+         }
+       else
+         {
+               data = (char *)SvPV(ST(0),data_len);
+  //printf("C: data: ");
+  int l; char c_high, c_low;
+  for(l=0;l<data_len;l++){
+    //printf("%02x ", (unsigned char*)data[l]);
+    char c;
+    switch( (data[l]>>4)&0x0F) {
+      case 0x00: c = '0'; break;
+      case 0x01: c = '1'; break;
+      case 0x02: c = '2'; break;
+      case 0x03: c = '3'; break;
+      case 0x04: c = '4'; break;
+      case 0x05: c = '5'; break;
+      case 0x06: c = '6'; break;
+      case 0x07: c = '7'; break;
+      case 0x08: c = '8'; break;
+      case 0x09: c = '9'; break;
+      case 0x0a: c = 'a'; break;
+      case 0x0b: c = 'b'; break;
+      case 0x0c: c = 'c'; break;
+      case 0x0d: c = 'd'; break;
+      case 0x0e: c = 'e'; break;
+      case 0x0f: c = 'f'; break;
+    }
+    c_high = c;
+    switch( (data[l])&0x0F) {
+      case 0x00: c = '0'; break;
+      case 0x01: c = '1'; break;
+      case 0x02: c = '2'; break;
+      case 0x03: c = '3'; break;
+      case 0x04: c = '4'; break;
+      case 0x05: c = '5'; break;
+      case 0x06: c = '6'; break;
+      case 0x07: c = '7'; break;
+      case 0x08: c = '8'; break;
+      case 0x09: c = '9'; break;
+      case 0x0a: c = 'a'; break;
+      case 0x0b: c = 'b'; break;
+      case 0x0c: c = 'c'; break;
+      case 0x0d: c = 'd'; break;
+      case 0x0e: c = 'e'; break;
+      case 0x0f: c = 'f'; break;
+    }
+    c_low = c;
+    //printf("%c%c ", c_high, c_low);
+  }
+  //printf(";\n");
+               rv = getcrc(data, data_len, crcinit);
+         }
+       EXTEND(sp, 1);
+       sv = newSV(0);
+       sv_setuv(sv, (UV)rv);
+       PUSHs(sv_2mortal(sv));
+      }
+#line 383 "CRC32.c"
+       PUTBACK;
+       return;
+    }
+}
+
+#ifdef __cplusplus
+extern "C"
+#endif
+XS_EXTERNAL(boot_BN__CRC32); /* prototype to pass -Wmissing-prototypes */
+XS_EXTERNAL(boot_BN__CRC32)
+{
+    dVAR; dXSARGS;
+#if (PERL_REVISION == 5 && PERL_VERSION < 9)
+    char* file = __FILE__;
+#else
+    const char* file = __FILE__;
+#endif
+
+    PERL_UNUSED_VAR(cv); /* -W */
+    PERL_UNUSED_VAR(items); /* -W */
+#ifdef XS_APIVERSION_BOOTCHECK
+    XS_APIVERSION_BOOTCHECK;
+#endif
+        newXS("BN::CRC32::crc32", XS_BN__CRC32_crc32, file);
+#if (PERL_REVISION == 5 && PERL_VERSION >= 9)
+  if (PL_unitcheckav)
+       call_list(PL_scopestack_ix, PL_unitcheckav);
+#endif
+    XSRETURN_YES;
+}
+
diff --git a/soft/toolbox/jtag_atomic/libs/CRC32.o b/soft/toolbox/jtag_atomic/libs/CRC32.o
new file mode 100644 (file)
index 0000000..2f8f476
Binary files /dev/null and b/soft/toolbox/jtag_atomic/libs/CRC32.o differ
diff --git a/soft/toolbox/jtag_atomic/libs/CRC32.pm b/soft/toolbox/jtag_atomic/libs/CRC32.pm
new file mode 100644 (file)
index 0000000..3136f51
--- /dev/null
@@ -0,0 +1,19 @@
+
+package BN::CRC32;
+
+require Exporter;
+require DynaLoader;
+
+@ISA = qw(Exporter DynaLoader);
+
+$VERSION = 1.4;
+
+# Items to export into callers namespace by default
+@EXPORT = qw(crc32);
+
+# Other items we are prepared to export if requested
+@EXPORT_OK = qw();
+
+bootstrap BN::CRC32;
+
+1;
diff --git a/soft/toolbox/jtag_atomic/libs/CRC32.pod b/soft/toolbox/jtag_atomic/libs/CRC32.pod
new file mode 100644 (file)
index 0000000..ba0d1b0
--- /dev/null
@@ -0,0 +1,61 @@
+=head1 NAME
+
+String::CRC32 - Perl interface for cyclic redundency check generation
+
+=head1 SYNOPSIS
+
+    use String::CRC32;
+    
+    $crc = crc32("some string");
+    $crc = crc32("some string", initvalue);
+
+    $somestring = "some string";
+    $crc = crc32($somestring);
+
+    open(SOMEFILE, "location/of/some.file");
+    $crc = crc32(*SOMEFILE);
+    close(SOMEFILE);
+
+=head1 DESCRIPTION
+
+The B<CRC32> module calculates CRC sums of 32 bit lenghts.
+It generates the same CRC values as ZMODEM, PKZIP, PICCHECK and
+many others.
+
+Despite its name, this module is able to compute
+the checksum of files as well as strings.
+
+=head1 EXAMPLES
+
+    $crc = crc32("some string");
+
+  results in the same as
+
+    $crc = crc32(" string", crc32("some"));
+
+This is useful for subsequent CRC checking of substrings.
+
+You may even check files:
+
+    open(SOMEFILE, "location/of/some.file");
+    $crc = crc32(*SOMEFILE);
+    close(SOMEFILE);
+
+A init value may also been supplied in the above example.
+
+=head1 AUTHOR
+
+Soenke J. Peters <peters__perl@opcenter.de>
+
+Please be so kind as to report any bugs/suggestions to the above address.
+
+=head1 COPYRIGHT
+
+CRC algorithm code taken from CRC-32 by Craig Bruce. 
+The module stuff is inspired by a similar perl module called 
+String::CRC by David Sharnoff & Matthew Dillon.
+Horst Fickenscher told me that it could be useful to supply an init
+value to the crc checking function and so I included this possibility.
+
+The author of this package disclaims all copyrights and 
+releases it into the public domain.
diff --git a/soft/toolbox/jtag_atomic/libs/CRC32.xs b/soft/toolbox/jtag_atomic/libs/CRC32.xs
new file mode 100644 (file)
index 0000000..e4c2ca8
--- /dev/null
@@ -0,0 +1,223 @@
+/*
+ Perl Extension for 32bit CRC computations
+ by Soenke J. Peters
+*/
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/* 
+ Based on CRC-32 version 1.04 by Craig Bruce, 05-Dec-1994
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef GENTABLE
+U32 
+crcTable[256];
+
+void
+crcgen( void )
+{
+    U32 crc, poly;
+    int     i, j;
+
+    poly = 0xEDB88320L;
+    //poly = 0x04C11DB7L;
+    for (i=0; i<256; i++) {
+        //crc = i<<24;
+        crc = i;
+        for (j=8; j>0; j--) {
+            if (crc&1) {
+                crc = (crc >> 1) ^ poly;
+            //if (crc&0x80000000) {
+            //    crc = (crc << 1) ^ poly;
+            } else {
+                crc >>= 1;
+            //    crc <<= 1;
+            }
+        }
+        crcTable[i] = crc;
+    }
+    printf("crcTable[15]=%x\n", crcTable[15]);
+}
+#else /* GENTABLE */
+U32
+crcTable[256] = {
+0x0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01,
+0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
+0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
+0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
+0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
+0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683,
+0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1,
+0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
+0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
+0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
+0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713,
+0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21,
+0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
+0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
+0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
+0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
+};
+#endif /* GENTABLE */
+
+U32 
+getcrc(char *c, int len, U32 crcinit)
+{
+    register U32 crc;
+    char     *e = c + len;
+
+    crc = crcinit^0xFFFFFFFF;
+    //crc = crcinit;
+    while (c < e) {
+       printf("CALCULATING CRC OF: %X;\n", (crc^ *c) & 0xFF);
+        crc = ((crc >> 8) & 0x00FFFFFF) ^ crcTable[ (crc^ *c) & 0xFF ];
+        //crc = ((crc << 8) & 0xFFFFFF00) ^ crcTable[ (crc^ *c) & 0xFF ];
+        ++c;
+    }
+    return( crc^0xFFFFFFFF );
+    //return( crc );
+}
+
+#define BUFSIZE 32768
+
+U32
+getcrc_fp( PerlIO *fp, U32 crcinit )
+{
+    register U32 crc;
+    register U16 len;
+    unsigned char buf[BUFSIZE];
+
+    crc = crcinit^0xFFFFFFFF;
+    while((len = PerlIO_read(fp, buf, BUFSIZE)) > 0 ) {
+        unsigned char * p = buf;
+        do {
+           crc = ((crc >> 8) & 0x00FFFFFF) ^ crcTable[(unsigned char)( (crc & 0xff) ^ *(p++) )];
+       } while (--len);
+    }
+    return( crc^0xFFFFFFFF );
+}
+
+svtype
+getsvtype(SV *sv)
+{
+  if (sv == NULL )
+    return SVt_NULL;
+  if (SvROK(sv))
+    return SvTYPE(SvRV(sv));
+  else 
+    return SvTYPE(sv);
+}
+
+MODULE = BN::CRC32             PACKAGE = BN::CRC32
+
+VERSIONCHECK: DISABLE
+PROTOTYPES: DISABLE 
+
+U32
+crc32(data, ...)
+    char *data = NO_INIT
+    PREINIT:
+       U32 crcinit = 0xFFFFFFFF;
+    STRLEN data_len;
+    PPCODE:
+       int sv_type;
+       IO *io;
+       SV *sv;
+       U32 rv = 0;
+      {
+#ifdef GENTABLE
+       crcgen();
+#endif /* GENTABLE */
+       /* Horst Fickenscher <horst_fickenscher@sepp.de> mailed me that it
+          could be useful to supply an initial value other than 0, e.g.
+          to calculate checksums of big files without the need of keeping
+          them comletely in memory */
+       if ( items > 1 )
+               crcinit = (U32) SvNV(ST(items - 1));
+       printf("crcinit: %x.\n", crcinit);
+
+       sv_type = getsvtype(ST(0));
+
+       if (sv_type == SVt_PVGV)
+         {
+               io = sv_2io(ST(0));
+               rv = getcrc_fp(IoIFP(io), crcinit);
+         }
+       else
+         {
+               data = (char *)SvPV(ST(0),data_len);
+  printf("C: data: ");
+  int l; char c_high, c_low;
+  for(l=0;l<data_len;l++){
+    //printf("%02x ", (unsigned char*)data[l]);
+    char c;
+    switch( (data[l]>>4)&0x0F) {
+      case 0x00: c = '0'; break;
+      case 0x01: c = '1'; break;
+      case 0x02: c = '2'; break;
+      case 0x03: c = '3'; break;
+      case 0x04: c = '4'; break;
+      case 0x05: c = '5'; break;
+      case 0x06: c = '6'; break;
+      case 0x07: c = '7'; break;
+      case 0x08: c = '8'; break;
+      case 0x09: c = '9'; break;
+      case 0x0a: c = 'a'; break;
+      case 0x0b: c = 'b'; break;
+      case 0x0c: c = 'c'; break;
+      case 0x0d: c = 'd'; break;
+      case 0x0e: c = 'e'; break;
+      case 0x0f: c = 'f'; break;
+    }
+    c_high = c;
+    switch( (data[l])&0x0F) {
+      case 0x00: c = '0'; break;
+      case 0x01: c = '1'; break;
+      case 0x02: c = '2'; break;
+      case 0x03: c = '3'; break;
+      case 0x04: c = '4'; break;
+      case 0x05: c = '5'; break;
+      case 0x06: c = '6'; break;
+      case 0x07: c = '7'; break;
+      case 0x08: c = '8'; break;
+      case 0x09: c = '9'; break;
+      case 0x0a: c = 'a'; break;
+      case 0x0b: c = 'b'; break;
+      case 0x0c: c = 'c'; break;
+      case 0x0d: c = 'd'; break;
+      case 0x0e: c = 'e'; break;
+      case 0x0f: c = 'f'; break;
+    }
+    c_low = c;
+    printf("%c%c ", c_high, c_low);
+  }
+  printf(";\n");
+               rv = getcrc(data, data_len, crcinit);
+         }
+       EXTEND(sp, 1);
+       sv = newSV(0);
+       sv_setuv(sv, (UV)rv);
+       PUSHs(sv_2mortal(sv));
+      }
diff --git a/soft/toolbox/jtag_atomic/libs/CRC32_mod.xs b/soft/toolbox/jtag_atomic/libs/CRC32_mod.xs
new file mode 100644 (file)
index 0000000..b3f4370
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ Perl Extension for 32bit CRC computations
+ by Soenke J. Peters
+*/
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+/* 
+ Based on CRC-32 version 1.04 by Craig Bruce, 05-Dec-1994
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef GENTABLE
+U32 
+crcTable[256];
+
+void
+crcgen( void )
+{
+    U32 crc, poly;
+    int     i, j;
+
+    //poly = 0xEDB88320L;
+    poly = 0x04C11DB7L;
+    for (i=0; i<256; i++) {
+        crc = i<<24;
+        for (j=8; j>0; j--) {
+            //if (crc&1) {
+            //    crc = (crc >> 1) ^ poly;
+            if (crc&0x80000000) {
+                crc = (crc << 1) ^ poly;
+            } else {
+            //    crc >>= 1;
+                crc <<= 1;
+            }
+        }
+        crcTable[i] = crc;
+    }
+    printf("crcTable[15]=%x\n", crcTable[15]);
+}
+#else /* GENTABLE */
+U32
+crcTable[256] = {
+0x0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01,
+0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
+0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
+0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
+0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
+0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683,
+0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1,
+0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
+0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
+0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
+0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713,
+0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21,
+0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
+0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
+0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
+0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
+};
+#endif /* GENTABLE */
+
+U32 
+getcrc(char *c, int len, U32 crcinit)
+{
+    register U32 crc;
+    char     *e = c + len;
+
+    crc = crcinit^0xFFFFFFFF;
+    while (c < e) {
+       printf("CALCULATING CRC OF: %X;\n", (crc^ *c) & 0xFF);
+        //crc = ((crc >> 8) & 0x00FFFFFF) ^ crcTable[ (crc^ *c) & 0xFF ];
+        crc = ((crc << 8) & 0xFFFFFF00) ^ crcTable[ (crc^ *c) & 0xFF ];
+        ++c;
+    }
+    return( crc^0xFFFFFFFF );
+}
+
+#define BUFSIZE 32768
+
+U32
+getcrc_fp( PerlIO *fp, U32 crcinit )
+{
+    register U32 crc;
+    register U16 len;
+    unsigned char buf[BUFSIZE];
+
+    crc = crcinit^0xFFFFFFFF;
+    while((len = PerlIO_read(fp, buf, BUFSIZE)) > 0 ) {
+        unsigned char * p = buf;
+        do {
+           crc = ((crc >> 8) & 0x00FFFFFF) ^ crcTable[(unsigned char)( (crc & 0xff) ^ *(p++) )];
+       } while (--len);
+    }
+    return( crc^0xFFFFFFFF );
+}
+
+svtype
+getsvtype(SV *sv)
+{
+  if (sv == NULL )
+    return SVt_NULL;
+  if (SvROK(sv))
+    return SvTYPE(SvRV(sv));
+  else 
+    return SvTYPE(sv);
+}
+
+MODULE = BN::CRC32             PACKAGE = BN::CRC32
+
+VERSIONCHECK: DISABLE
+PROTOTYPES: DISABLE 
+
+U32
+crc32(data, ...)
+    char *data = NO_INIT
+    PREINIT:
+       U32 crcinit = 0xFFFFFFFF;
+    STRLEN data_len;
+    PPCODE:
+       int sv_type;
+       IO *io;
+       SV *sv;
+       U32 rv = 0;
+      {
+#ifdef GENTABLE
+       crcgen();
+#endif /* GENTABLE */
+       /* Horst Fickenscher <horst_fickenscher@sepp.de> mailed me that it
+          could be useful to supply an initial value other than 0, e.g.
+          to calculate checksums of big files without the need of keeping
+          them comletely in memory */
+       if ( items > 1 )
+               crcinit = (U32) SvNV(ST(items - 1));
+       printf("crcinit: %x.\n", crcinit);
+
+       sv_type = getsvtype(ST(0));
+
+       if (sv_type == SVt_PVGV)
+         {
+               io = sv_2io(ST(0));
+               rv = getcrc_fp(IoIFP(io), crcinit);
+         }
+       else
+         {
+               data = (char *)SvPV(ST(0),data_len);
+  printf("C: data: ");
+  int l; char c_high, c_low;
+  for(l=0;l<data_len;l++){
+    //printf("%02x ", (unsigned char*)data[l]);
+    char c;
+    switch( (data[l]>>4)&0x0F) {
+      case 0x00: c = '0'; break;
+      case 0x01: c = '1'; break;
+      case 0x02: c = '2'; break;
+      case 0x03: c = '3'; break;
+      case 0x04: c = '4'; break;
+      case 0x05: c = '5'; break;
+      case 0x06: c = '6'; break;
+      case 0x07: c = '7'; break;
+      case 0x08: c = '8'; break;
+      case 0x09: c = '9'; break;
+      case 0x0a: c = 'a'; break;
+      case 0x0b: c = 'b'; break;
+      case 0x0c: c = 'c'; break;
+      case 0x0d: c = 'd'; break;
+      case 0x0e: c = 'e'; break;
+      case 0x0f: c = 'f'; break;
+    }
+    c_high = c;
+    switch( (data[l])&0x0F) {
+      case 0x00: c = '0'; break;
+      case 0x01: c = '1'; break;
+      case 0x02: c = '2'; break;
+      case 0x03: c = '3'; break;
+      case 0x04: c = '4'; break;
+      case 0x05: c = '5'; break;
+      case 0x06: c = '6'; break;
+      case 0x07: c = '7'; break;
+      case 0x08: c = '8'; break;
+      case 0x09: c = '9'; break;
+      case 0x0a: c = 'a'; break;
+      case 0x0b: c = 'b'; break;
+      case 0x0c: c = 'c'; break;
+      case 0x0d: c = 'd'; break;
+      case 0x0e: c = 'e'; break;
+      case 0x0f: c = 'f'; break;
+    }
+    c_low = c;
+    printf("%c%c ", c_high, c_low);
+  }
+  printf(";\n");
+               rv = getcrc(data, data_len, crcinit);
+         }
+       EXTEND(sp, 1);
+       sv = newSV(0);
+       sv_setuv(sv, (UV)rv);
+       PUSHs(sv_2mortal(sv));
+      }
diff --git a/soft/toolbox/jtag_atomic/libs/CRC32_test.pm b/soft/toolbox/jtag_atomic/libs/CRC32_test.pm
new file mode 100644 (file)
index 0000000..55e36c3
--- /dev/null
@@ -0,0 +1,7 @@
+#/usr/bin/perl  -I/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch -I/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/lib
+#
+use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+use BN::CRC32;
+
+print "PERL:" . crc32("A string.");
diff --git a/soft/toolbox/jtag_atomic/libs/Config/.svn/entries b/soft/toolbox/jtag_atomic/libs/Config/.svn/entries
new file mode 100644 (file)
index 0000000..59f1f1f
--- /dev/null
@@ -0,0 +1,65 @@
+10
+
+dir
+135
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj/trb_maps_jtag3/ui/libs/Config
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj
+
+
+
+2011-11-28T16:19:53.211492Z
+134
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+b00609d0-aec6-11df-b1c7-bba583a822eb
+\f
+Abstract
+dir
+\f
+Abstract.pm
+file
+
+
+
+
+2011-11-23T15:34:42.000000Z
+f5d25acfa44435494d72210c975f97c2
+2011-11-28T16:19:53.211492Z
+134
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+11703
+\f
diff --git a/soft/toolbox/jtag_atomic/libs/Config/.svn/text-base/Abstract.pm.svn-base b/soft/toolbox/jtag_atomic/libs/Config/.svn/text-base/Abstract.pm.svn-base
new file mode 100644 (file)
index 0000000..cbe19a9
--- /dev/null
@@ -0,0 +1,422 @@
+package Config::Abstract;
+
+use 5.006;
+use strict;
+use warnings;
+
+use Data::Dumper;
+
+require Exporter;
+#use AutoLoader qw(AUTOLOAD);
+
+use overload qw{""} => \&_to_string;
+
+our @ISA = qw(Exporter);
+our %EXPORT_TAGS = ( 'all' => [ qw( ) ] );
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+our @EXPORT = qw( );
+
+our $VERSION = '0.16';
+
+#
+# ------------------------------------------------------------------------------------------------------- structural methods -----
+#
+
+sub new {
+    my($class,$initialiser) = @_;
+    my $self = {
+               _settings => undef,
+               _settingsfile => undef
+       };
+    bless $self,ref $class || $class;
+    $self->init($initialiser);
+    return $self;
+}
+
+sub init {
+       my($self,$settingsfile) = @_;
+       return unless(defined($settingsfile));  
+       return if($settingsfile eq '');
+       $self->{_settings} = $self->_read_settings($settingsfile);
+       $self->{_settingsfile} = $settingsfile;
+}
+
+
+#
+# --------------------------------------------------------------------------------------------------------- accessor methods -----
+#
+
+sub get_all_settings {
+       my($self) = @_;
+       # Make sure we don't crash and burn trying to return a hash from an undef reference
+       return undef unless(defined($self->{_settings}));
+       # Return the settings as a hash in array contect and a hash reference in scalar context
+       if(wantarray){
+               return %{$self->{_settings}};
+       }else{
+               return $self->{_settings};
+       }
+}
+
+sub get_entry {
+       my($self,$entryname) = @_;
+       my $val;
+       if($entryname =~ m|//|){
+               # Getting an entry by path
+               my $unpathed = $self->_unpath($entryname);
+               eval("\$val = \"\${ \$self->{_settings} }$unpathed\";");
+#              print("\$val = '\${ \$self->{_settings} }$unpathed ';\n");#DEBUG!!!
+#              print("\$val: $val\n");#DEBUG!!!
+       }else{
+               $val = ${$self->{_settings}}{$entryname};
+       }
+       if(defined($val)){
+               if(wantarray && ref($val) eq 'HASH'){
+#                      print STDERR ("Returning HASH in $self" . "->get_entry($entryname)\n");#DEBUG!!!
+                       return(%{$val});
+               }else{
+#                      print STDERR ("Returning ref in $self" . "->get_entry($entryname)\n");#DEBUG!!!
+                       return($val);
+               }
+       }else{
+               return (wantarray ? () : undef);
+       }
+}
+
+sub get_entry_setting {
+       my($self,$entryname,$settingname,$default) = @_;
+       # Return undef if the requested entry doesn't exist
+       my %entry = ();
+       return(undef) unless(%entry = $self->get_entry($entryname));
+       if(defined($entry{$settingname})){
+               return $entry{$settingname};
+       }else{
+               return $default;
+       }
+}
+
+sub get {
+       my($self,$section,$key,$default) = @_;
+       # If everything up to the key is given, get a specific key
+       return $self->get_entry_setting($section,$key,$default) if(defined($key));
+       # If section is given, but not key, get a specific section
+       return $self->get_entry($section) if(defined($section));
+       # If no parameter is given, return the entire hash
+       return $self->get_all_settings();
+}
+
+#
+# ---------------------------------------------------------------------------------------------------------- mutator methods -----
+#
+
+sub set_all_settings {
+       my($self,%allsettings) = @_;
+       return %{$self->{_settings}} = %allsettings;
+}
+
+sub set_entry {
+       my($self,$entryname,$entry) = @_;
+       my $unpathed = $self->_unpath($entryname);
+       my $val;
+       eval('${$self->{_settings}}' . $unpathed . ' = $entry;');
+       return $self->get_entry($entryname) ;
+}
+
+sub set_entry_setting {
+       my($self,$entryname,$settingname,$setting) = @_;
+       return (${${$self->{_settings}}{$entryname}}{$settingname} = $setting);
+}
+
+sub set {
+       my($self,$section,$key,$value) = @_;
+       # If everything up to the key is given, set a specific key
+       return $self->set_entry_setting($section,$key,$value) if(defined($value));
+       # If section is given, but not key, set a specific section
+       return $self->set_entry($section,$key) if(defined($key));
+       # If no parameter is given, return the entire hash
+       return $self->set_all_settings(%{$section});
+}
+
+sub exists {
+       my($self,$section,$key) = @_;
+       return defined($self->{$section}) unless (defined($key));
+       return defined($self->{$section}{$key});
+}
+
+sub get_entry_names {
+       my($self) = @_;
+       return sort(keys(%{$self->{_settings}}));
+}
+
+#
+# ------------------------------------------------------------------------------------------------------- arithmetic methods -----
+#
+
+##################################################
+#%name: diff
+#%syntax: diff($other_config_object)
+#%summary: Generates an object with overrides for entries that can be used to patch $self into $other_config_object
+#%returns: a Config::Abstract object
+#%NB: This method is nowhere near working atm /EWT
+sub diff {
+       my($self,$diff) = @_;
+       my %self_pathed = $self->_pathalise_object( '',$self->{_settings} );
+       my %diff_pathed = $self->_pathalise_object( '',$diff->{_settings} );
+       my $result = $self->new();
+       while( my($k,$v) = each(%diff_pathed) ) {
+               next if( defined($self_pathed{$k}) && $self_pathed{$k} eq $v);
+               $result->set($k,$v);
+       }
+       return $result;
+}
+
+
+##################################################
+#%name: patch
+#%syntax: patch($patch_from_other_config_object)
+#%summary: Overrides all settings that are found in the $patch object with the $patch values
+#%returns: Nothing
+sub patch {
+       my($self,$patch) = @_;
+       my %patch_pathed = $self->_pathalise_object( '',$patch->{_settings} );
+       while( my($k,$v) = each(%patch_pathed) ) {
+               $self->set($k,$v);
+       }       
+}
+
+
+
+sub _unpath {
+       my($self,$path) = @_;
+       $path =~ s|^/+|{'|;
+       $path =~ s|/+|'}{'|g;
+       $path .= '\'}';
+       return $path;
+}
+##################################################
+#%name: _pathalise_object
+#%syntax: _dumpobject(<$objectcaption>,<$objectref>,[<@parentobjectcaptions>])
+#%summary: Recursively generates a string representation of the object referenced
+#          by $objectref
+#%returns: a string representation of the object
+
+sub _pathalise_object{
+       my($self,$name,$obj,@parents) = @_;
+       my @result = ();
+       if(ref($obj) eq 'HASH'){
+               unless($name eq '' ){
+                       push(@parents,$name);
+               }
+               while(my($key,$val) = each(%{$obj})){
+                       push(@result,$self->_pathalise_object($key,$val,@parents));
+               }
+       }elsif(ref($obj) eq 'SCALAR'){
+               push(@result,'//' . join('//',@parents) . "//$name",${$obj});
+       }elsif(ref($obj) eq 'ARRAY'){
+               push(@parents,$name);
+               for(my $i = 0;scalar(@{$obj});$i++){
+                       push(@result,$self->_pathalise_object($i,${$obj}[$i],@parents));
+               }
+       }else{
+               push(@result,'//' . join('//',@parents) . "//$name",$obj);
+       }
+       return @result;
+}
+#
+# ------------------------------------------------------------------------------------------------ (de)serialisation methods -----
+#
+
+##################################################
+#%name: _to_string
+#%syntax: _to_string
+#%summary: Recursively generates a string representation of the settings hash
+#%returns: a string in perl source format 
+
+sub _to_string{
+       my($self) = @_;
+       return $self->_dumpobject();
+}
+
+##################################################
+#%name: _dumpobject
+#%syntax: _dumpobject(<$objectcaption>,<$objectref>,[<@parentobjectcaptions>])
+#%summary: Generates a string representation of the object referenced
+#          by $objectref
+#%returns: a string representation of the object
+
+sub _dumpobject{
+       my($self) = @_;
+       my $dumper = Data::Dumper->new([$self->{_settings}],[qw(settings)]);
+       $dumper->Purity(1);
+       return($dumper->Dump());
+}
+
+##################################################
+#%name: _read_settings
+#%syntax: _read_settings(<$settingsfilename>)
+#%summary: Reads the key-values to keep track of
+#%returns: a reference to a hash of $key:$value
+
+sub _read_settings{
+       my ($self,$settingdata) = @_;
+       my @conflines;
+       if(ref($settingdata) eq 'ARRAY'){
+               @conflines = @{$settingdata};
+       }else{
+               my $settingsfile = $settingdata;
+               # Read in the ini file we want to use
+               # Probably not a good idea to die on error at this
+               # point, but that's what we've got for the moment
+               open(SETTINGS,$settingsfile) || die("Failed to open ini file ($settingsfile) for reading\n");
+               @conflines = <SETTINGS>;
+               close(SETTINGS);
+       }
+       my $settings = $self->_parse_settings_file(@conflines);
+       return($settings);
+}
+
+##################################################
+#%name: _parse_settings_file
+#%syntax: _parse_settings_file(<@settings>)
+#%summary: Reads the key-values into a hash
+#%returns: a reference to a hash of $key:$value
+
+sub _parse_settings_file{
+       my $settings = {};
+       eval(join('',@_));
+       return($settings);
+}
+
+#
+# ---------------------------------------------------------------------------------------------------------- utility methods -----
+#
+
+
+sub expand_tilde {
+       defined($ENV{'HOME'}) && do {
+               $_[0] =~ s/^~/$ENV{'HOME'}/;
+       };
+       return $_[0];
+}
+
+
+# We provide a DESTROY method so that the autoloader
+# doesn't bother trying to find it.
+sub DESTROY { 
+       print STDERR ("Destroying Config::Abstract\n"); #DEBUG!!!
+}
+
+1;
+__END__
+=head1 NAME
+
+Config::Abstract - Perl extension for abstracting configuration files
+
+=head1 SYNOPSIS
+
+ use Config::Abstract;
+ my $ini = new Config::Abstract('testdata.pl');
+
+=head1 DESCRIPTION
+
+ Config::Abstract is the base  class for a  number of  other classes
+ created to facilitate use and  handling of a  variety of  different
+ configuration file formats. It uses the Data::Dumper file format to
+ serialise it self and can be initialise from a file of that  format
+=head1 EXAMPLES
+
+ We assume the content of the file 'testdata.pl' to be:
+  $settings = {
+    'book' => {
+      'chapter1' => {
+        'title' => 'The First Chapter, ever',
+        'file' => 'book/chapter1.txt'
+      },
+      'title' => 'A book of chapters',
+      'chapter2' => {
+        'title' => 'The Next Chapter, after the First Chapter, ever',
+        'file' => 'book/chapter2.txt'
+      },
+      'author' => 'Me, Myself and Irene'
+    }
+  };
+
+ use Config::Abstract;
+ my $settingsfile = 'testdata.pl';
+ my $abstract = new Config::Abstract($settingsfile);
+ my %book = $abstract->get_entry('book');
+ my %chap1 = $abstract->get_entry_setting('book','chapter1');
+ my $chap1title = $chapter1{'title'};
+ # Want to see the file?
+ # If you can live without comments and blank lines ;),
+ # try this:
+ print("My abstract file looks like this:\n$abstract\nCool, huh?\n");
+ # We can also create an ini file from it
+ # A bit crude, but it does the job
+ bless($abstract,'Config::Abstract::Ini');
+ print($abstract);
+
+=head1 METHODS
+
+=item get_all_settings
+
+Returns a hash of all settings found in the processed file
+
+=item get ENTRYPATH
+
+Returns the setting at the given 'path' where the path divider is '//'.
+
+=item get_entry ENTRYNAME
+
+Returns a hash of the settings within the entry ENTRYNAME. OBSOLETE, use get instead
+
+=item get_entry_setting ENTRYNAME,SETTINGNAME [,DEFAULTVALUE]
+
+Returns the value corresponding to ENTRYNAME,SETTINGSNAME. If the value isn't set it returns undef or, optionally, the DEFAULTVALUE. OBSOLETE, use get instead
+
+=item set_all_settings SETTINGSHASH
+
+Fill settings with data from SETTINGSHASH
+
+=item set ENTRYPATH VALUE
+
+Setting the entry at the given 'path', where the path divider is '//', to VALUE.
+
+=item set_entry ENTRYNAME,ENTRYHASH
+
+Fill the entry ENTRYNAME with data from ENTRYHASH
+
+=item set_entry_setting ENTRYNAME,SETTINGNAME,VALUE
+
+Set the setting ENTRYNAME,SETTINGSNAME to VALUE
+
+=item diff OBJECT
+
+Returns an object of type Config::Abstract that is a representation of the values in this object that needs altering to make it identical to OBJECT
+
+=item patch OBJECT
+
+Sets the entries in this object to whatever they are in OBJECT, creating entries as necessary. $obj_a->patch( $obj_a->diff( $obj_b ) ); should make $obj_a identical to $obj_b except for entries in obj_a that don't exist in $obj_b.
+
+=head1 COPYRIGHT
+
+Copyright (c) 2003 Eddie Olsson. All rights reserved.
+
+ This library is free software; you can redistribute it
+ and/or modify it under the same terms as Perl itself.
+
+
+=head1 AUTHOR
+
+Eddie Olsson <ewt@avajadi.org>
+
+=head1 SEE ALSO
+
+L<perl>.
+
+=cut
diff --git a/soft/toolbox/jtag_atomic/libs/Config/Abstract.pm b/soft/toolbox/jtag_atomic/libs/Config/Abstract.pm
new file mode 100644 (file)
index 0000000..cbe19a9
--- /dev/null
@@ -0,0 +1,422 @@
+package Config::Abstract;
+
+use 5.006;
+use strict;
+use warnings;
+
+use Data::Dumper;
+
+require Exporter;
+#use AutoLoader qw(AUTOLOAD);
+
+use overload qw{""} => \&_to_string;
+
+our @ISA = qw(Exporter);
+our %EXPORT_TAGS = ( 'all' => [ qw( ) ] );
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+our @EXPORT = qw( );
+
+our $VERSION = '0.16';
+
+#
+# ------------------------------------------------------------------------------------------------------- structural methods -----
+#
+
+sub new {
+    my($class,$initialiser) = @_;
+    my $self = {
+               _settings => undef,
+               _settingsfile => undef
+       };
+    bless $self,ref $class || $class;
+    $self->init($initialiser);
+    return $self;
+}
+
+sub init {
+       my($self,$settingsfile) = @_;
+       return unless(defined($settingsfile));  
+       return if($settingsfile eq '');
+       $self->{_settings} = $self->_read_settings($settingsfile);
+       $self->{_settingsfile} = $settingsfile;
+}
+
+
+#
+# --------------------------------------------------------------------------------------------------------- accessor methods -----
+#
+
+sub get_all_settings {
+       my($self) = @_;
+       # Make sure we don't crash and burn trying to return a hash from an undef reference
+       return undef unless(defined($self->{_settings}));
+       # Return the settings as a hash in array contect and a hash reference in scalar context
+       if(wantarray){
+               return %{$self->{_settings}};
+       }else{
+               return $self->{_settings};
+       }
+}
+
+sub get_entry {
+       my($self,$entryname) = @_;
+       my $val;
+       if($entryname =~ m|//|){
+               # Getting an entry by path
+               my $unpathed = $self->_unpath($entryname);
+               eval("\$val = \"\${ \$self->{_settings} }$unpathed\";");
+#              print("\$val = '\${ \$self->{_settings} }$unpathed ';\n");#DEBUG!!!
+#              print("\$val: $val\n");#DEBUG!!!
+       }else{
+               $val = ${$self->{_settings}}{$entryname};
+       }
+       if(defined($val)){
+               if(wantarray && ref($val) eq 'HASH'){
+#                      print STDERR ("Returning HASH in $self" . "->get_entry($entryname)\n");#DEBUG!!!
+                       return(%{$val});
+               }else{
+#                      print STDERR ("Returning ref in $self" . "->get_entry($entryname)\n");#DEBUG!!!
+                       return($val);
+               }
+       }else{
+               return (wantarray ? () : undef);
+       }
+}
+
+sub get_entry_setting {
+       my($self,$entryname,$settingname,$default) = @_;
+       # Return undef if the requested entry doesn't exist
+       my %entry = ();
+       return(undef) unless(%entry = $self->get_entry($entryname));
+       if(defined($entry{$settingname})){
+               return $entry{$settingname};
+       }else{
+               return $default;
+       }
+}
+
+sub get {
+       my($self,$section,$key,$default) = @_;
+       # If everything up to the key is given, get a specific key
+       return $self->get_entry_setting($section,$key,$default) if(defined($key));
+       # If section is given, but not key, get a specific section
+       return $self->get_entry($section) if(defined($section));
+       # If no parameter is given, return the entire hash
+       return $self->get_all_settings();
+}
+
+#
+# ---------------------------------------------------------------------------------------------------------- mutator methods -----
+#
+
+sub set_all_settings {
+       my($self,%allsettings) = @_;
+       return %{$self->{_settings}} = %allsettings;
+}
+
+sub set_entry {
+       my($self,$entryname,$entry) = @_;
+       my $unpathed = $self->_unpath($entryname);
+       my $val;
+       eval('${$self->{_settings}}' . $unpathed . ' = $entry;');
+       return $self->get_entry($entryname) ;
+}
+
+sub set_entry_setting {
+       my($self,$entryname,$settingname,$setting) = @_;
+       return (${${$self->{_settings}}{$entryname}}{$settingname} = $setting);
+}
+
+sub set {
+       my($self,$section,$key,$value) = @_;
+       # If everything up to the key is given, set a specific key
+       return $self->set_entry_setting($section,$key,$value) if(defined($value));
+       # If section is given, but not key, set a specific section
+       return $self->set_entry($section,$key) if(defined($key));
+       # If no parameter is given, return the entire hash
+       return $self->set_all_settings(%{$section});
+}
+
+sub exists {
+       my($self,$section,$key) = @_;
+       return defined($self->{$section}) unless (defined($key));
+       return defined($self->{$section}{$key});
+}
+
+sub get_entry_names {
+       my($self) = @_;
+       return sort(keys(%{$self->{_settings}}));
+}
+
+#
+# ------------------------------------------------------------------------------------------------------- arithmetic methods -----
+#
+
+##################################################
+#%name: diff
+#%syntax: diff($other_config_object)
+#%summary: Generates an object with overrides for entries that can be used to patch $self into $other_config_object
+#%returns: a Config::Abstract object
+#%NB: This method is nowhere near working atm /EWT
+sub diff {
+       my($self,$diff) = @_;
+       my %self_pathed = $self->_pathalise_object( '',$self->{_settings} );
+       my %diff_pathed = $self->_pathalise_object( '',$diff->{_settings} );
+       my $result = $self->new();
+       while( my($k,$v) = each(%diff_pathed) ) {
+               next if( defined($self_pathed{$k}) && $self_pathed{$k} eq $v);
+               $result->set($k,$v);
+       }
+       return $result;
+}
+
+
+##################################################
+#%name: patch
+#%syntax: patch($patch_from_other_config_object)
+#%summary: Overrides all settings that are found in the $patch object with the $patch values
+#%returns: Nothing
+sub patch {
+       my($self,$patch) = @_;
+       my %patch_pathed = $self->_pathalise_object( '',$patch->{_settings} );
+       while( my($k,$v) = each(%patch_pathed) ) {
+               $self->set($k,$v);
+       }       
+}
+
+
+
+sub _unpath {
+       my($self,$path) = @_;
+       $path =~ s|^/+|{'|;
+       $path =~ s|/+|'}{'|g;
+       $path .= '\'}';
+       return $path;
+}
+##################################################
+#%name: _pathalise_object
+#%syntax: _dumpobject(<$objectcaption>,<$objectref>,[<@parentobjectcaptions>])
+#%summary: Recursively generates a string representation of the object referenced
+#          by $objectref
+#%returns: a string representation of the object
+
+sub _pathalise_object{
+       my($self,$name,$obj,@parents) = @_;
+       my @result = ();
+       if(ref($obj) eq 'HASH'){
+               unless($name eq '' ){
+                       push(@parents,$name);
+               }
+               while(my($key,$val) = each(%{$obj})){
+                       push(@result,$self->_pathalise_object($key,$val,@parents));
+               }
+       }elsif(ref($obj) eq 'SCALAR'){
+               push(@result,'//' . join('//',@parents) . "//$name",${$obj});
+       }elsif(ref($obj) eq 'ARRAY'){
+               push(@parents,$name);
+               for(my $i = 0;scalar(@{$obj});$i++){
+                       push(@result,$self->_pathalise_object($i,${$obj}[$i],@parents));
+               }
+       }else{
+               push(@result,'//' . join('//',@parents) . "//$name",$obj);
+       }
+       return @result;
+}
+#
+# ------------------------------------------------------------------------------------------------ (de)serialisation methods -----
+#
+
+##################################################
+#%name: _to_string
+#%syntax: _to_string
+#%summary: Recursively generates a string representation of the settings hash
+#%returns: a string in perl source format 
+
+sub _to_string{
+       my($self) = @_;
+       return $self->_dumpobject();
+}
+
+##################################################
+#%name: _dumpobject
+#%syntax: _dumpobject(<$objectcaption>,<$objectref>,[<@parentobjectcaptions>])
+#%summary: Generates a string representation of the object referenced
+#          by $objectref
+#%returns: a string representation of the object
+
+sub _dumpobject{
+       my($self) = @_;
+       my $dumper = Data::Dumper->new([$self->{_settings}],[qw(settings)]);
+       $dumper->Purity(1);
+       return($dumper->Dump());
+}
+
+##################################################
+#%name: _read_settings
+#%syntax: _read_settings(<$settingsfilename>)
+#%summary: Reads the key-values to keep track of
+#%returns: a reference to a hash of $key:$value
+
+sub _read_settings{
+       my ($self,$settingdata) = @_;
+       my @conflines;
+       if(ref($settingdata) eq 'ARRAY'){
+               @conflines = @{$settingdata};
+       }else{
+               my $settingsfile = $settingdata;
+               # Read in the ini file we want to use
+               # Probably not a good idea to die on error at this
+               # point, but that's what we've got for the moment
+               open(SETTINGS,$settingsfile) || die("Failed to open ini file ($settingsfile) for reading\n");
+               @conflines = <SETTINGS>;
+               close(SETTINGS);
+       }
+       my $settings = $self->_parse_settings_file(@conflines);
+       return($settings);
+}
+
+##################################################
+#%name: _parse_settings_file
+#%syntax: _parse_settings_file(<@settings>)
+#%summary: Reads the key-values into a hash
+#%returns: a reference to a hash of $key:$value
+
+sub _parse_settings_file{
+       my $settings = {};
+       eval(join('',@_));
+       return($settings);
+}
+
+#
+# ---------------------------------------------------------------------------------------------------------- utility methods -----
+#
+
+
+sub expand_tilde {
+       defined($ENV{'HOME'}) && do {
+               $_[0] =~ s/^~/$ENV{'HOME'}/;
+       };
+       return $_[0];
+}
+
+
+# We provide a DESTROY method so that the autoloader
+# doesn't bother trying to find it.
+sub DESTROY { 
+       print STDERR ("Destroying Config::Abstract\n"); #DEBUG!!!
+}
+
+1;
+__END__
+=head1 NAME
+
+Config::Abstract - Perl extension for abstracting configuration files
+
+=head1 SYNOPSIS
+
+ use Config::Abstract;
+ my $ini = new Config::Abstract('testdata.pl');
+
+=head1 DESCRIPTION
+
+ Config::Abstract is the base  class for a  number of  other classes
+ created to facilitate use and  handling of a  variety of  different
+ configuration file formats. It uses the Data::Dumper file format to
+ serialise it self and can be initialise from a file of that  format
+=head1 EXAMPLES
+
+ We assume the content of the file 'testdata.pl' to be:
+  $settings = {
+    'book' => {
+      'chapter1' => {
+        'title' => 'The First Chapter, ever',
+        'file' => 'book/chapter1.txt'
+      },
+      'title' => 'A book of chapters',
+      'chapter2' => {
+        'title' => 'The Next Chapter, after the First Chapter, ever',
+        'file' => 'book/chapter2.txt'
+      },
+      'author' => 'Me, Myself and Irene'
+    }
+  };
+
+ use Config::Abstract;
+ my $settingsfile = 'testdata.pl';
+ my $abstract = new Config::Abstract($settingsfile);
+ my %book = $abstract->get_entry('book');
+ my %chap1 = $abstract->get_entry_setting('book','chapter1');
+ my $chap1title = $chapter1{'title'};
+ # Want to see the file?
+ # If you can live without comments and blank lines ;),
+ # try this:
+ print("My abstract file looks like this:\n$abstract\nCool, huh?\n");
+ # We can also create an ini file from it
+ # A bit crude, but it does the job
+ bless($abstract,'Config::Abstract::Ini');
+ print($abstract);
+
+=head1 METHODS
+
+=item get_all_settings
+
+Returns a hash of all settings found in the processed file
+
+=item get ENTRYPATH
+
+Returns the setting at the given 'path' where the path divider is '//'.
+
+=item get_entry ENTRYNAME
+
+Returns a hash of the settings within the entry ENTRYNAME. OBSOLETE, use get instead
+
+=item get_entry_setting ENTRYNAME,SETTINGNAME [,DEFAULTVALUE]
+
+Returns the value corresponding to ENTRYNAME,SETTINGSNAME. If the value isn't set it returns undef or, optionally, the DEFAULTVALUE. OBSOLETE, use get instead
+
+=item set_all_settings SETTINGSHASH
+
+Fill settings with data from SETTINGSHASH
+
+=item set ENTRYPATH VALUE
+
+Setting the entry at the given 'path', where the path divider is '//', to VALUE.
+
+=item set_entry ENTRYNAME,ENTRYHASH
+
+Fill the entry ENTRYNAME with data from ENTRYHASH
+
+=item set_entry_setting ENTRYNAME,SETTINGNAME,VALUE
+
+Set the setting ENTRYNAME,SETTINGSNAME to VALUE
+
+=item diff OBJECT
+
+Returns an object of type Config::Abstract that is a representation of the values in this object that needs altering to make it identical to OBJECT
+
+=item patch OBJECT
+
+Sets the entries in this object to whatever they are in OBJECT, creating entries as necessary. $obj_a->patch( $obj_a->diff( $obj_b ) ); should make $obj_a identical to $obj_b except for entries in obj_a that don't exist in $obj_b.
+
+=head1 COPYRIGHT
+
+Copyright (c) 2003 Eddie Olsson. All rights reserved.
+
+ This library is free software; you can redistribute it
+ and/or modify it under the same terms as Perl itself.
+
+
+=head1 AUTHOR
+
+Eddie Olsson <ewt@avajadi.org>
+
+=head1 SEE ALSO
+
+L<perl>.
+
+=cut
diff --git a/soft/toolbox/jtag_atomic/libs/Config/Abstract/.svn/entries b/soft/toolbox/jtag_atomic/libs/Config/Abstract/.svn/entries
new file mode 100644 (file)
index 0000000..6604947
--- /dev/null
@@ -0,0 +1,62 @@
+10
+
+dir
+135
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj/trb_maps_jtag3/ui/libs/Config/Abstract
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj
+
+
+
+2011-11-28T16:19:53.211492Z
+134
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+b00609d0-aec6-11df-b1c7-bba583a822eb
+\f
+Ini.pm
+file
+
+
+
+
+2011-11-23T15:34:43.000000Z
+d01b31af88c63accbc49dc8b5e1e4882
+2011-11-28T16:19:53.211492Z
+134
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+7188
+\f
diff --git a/soft/toolbox/jtag_atomic/libs/Config/Abstract/.svn/text-base/Ini.pm.svn-base b/soft/toolbox/jtag_atomic/libs/Config/Abstract/.svn/text-base/Ini.pm.svn-base
new file mode 100644 (file)
index 0000000..5235d1c
--- /dev/null
@@ -0,0 +1,263 @@
+package Config::Abstract::Ini;
+
+use 5.006;
+use strict;
+use warnings;
+
+require Exporter;
+use Config::Abstract;
+
+use overload qw{""} => \&_to_string;
+
+our @ISA = qw(Config::Abstract Exporter);
+our %EXPORT_TAGS = ( 'all' => [ qw( ) ] );
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+our @EXPORT = qw( );
+
+our $VERSION = '0.16';
+
+#
+# ------------------------------------------------------------------------------------------------------- structural methods -----
+#
+
+# All inherited from Config::Abstract
+
+#
+# --------------------------------------------------------------------------------------------------------- accessor methods -----
+#
+
+# All inherited from Config::Abstract
+
+#
+# ------------------------------------------------------------------------------------------------ (un)serialisation methods -----
+#
+
+##################################################
+#%name: _to_string
+#%syntax: _to_string
+#%summary: Recursively generates a string representation of the settings hash
+#%returns: a string in .ini format 
+
+sub _to_string{
+       my($self) = @_;
+       return $self->_dumpobject('',$self->{_settings});
+}
+
+##################################################
+#%name: _dumpobject
+#%syntax: _dumpobject(<$objectcaption>,<$objectref>,[<@parentobjectcaptions>])
+#%summary: Recursively generates a string representation of the object referenced
+#          by $objectref
+#%returns: a string representation of the object
+
+sub _dumpobject{
+       my($self,$name,$obj,@parents) = @_;
+       my @result = ();
+       if(ref($obj) eq 'HASH'){
+               unless($name eq ''){
+                       push(@parents,"$name");
+                       push(@result,'[' . join('::',@parents) . ']');
+               }
+               while(my($key,$val) = each(%{$obj})){
+                       push(@result,$self->_dumpobject($key,$val,@parents));
+               }
+       }elsif(ref($obj) eq 'SCALAR'){
+               push(@result,"$name = ${$obj}");
+       }elsif(ref($obj) eq 'ARRAY'){
+               push(@parents,"$name");
+               push(@result,'[' . join('::',@parents) . ']');
+               for(my $i = 0;scalar(@{$obj});$i++){
+                       push(@result,$self->_dumpobject($i,${$obj}[$i],@parents));
+               }
+       }else{
+#              print("Why are we here? name: " . ( defined($name) ? $name : 'empty' ) . " obj:" . ( defined($obj) ? $obj : 'empty' ) . "\n");#DEBUG!!!
+               push(@result,"$name = " . (defined($obj) ? $obj : '') ) unless(!defined($name));
+       }
+       return(join("\n",@result));
+}
+
+
+##################################################
+#%name: _parse_settings_file
+#%syntax: _parse_settings_file(<@settings>)
+#%summary: Reads the projects to keep track of
+#%returns: a hash of $projectkey:$projectlabel
+
+sub _parse_settings_file{
+       my %result = ();
+       my ($entry,$subentry) = ('',undef);
+       chomp(@_);
+       foreach(@_){
+               # Get rid of starting/ending whitespace
+               s/^\s*(.*?)\s*$/$1/;
+               
+               #Delete comments
+               ($_) = split(/[;#]/,$_);
+               #Skip if there's no data
+               next if((! defined($_)) || $_ eq '');
+               /^\s*(.*?)\s*=\s*(['"]|)(.*)\2\s*/ && do {      
+                       my($key,$val) = ($1,$3);
+                       next if($key eq '' || $val eq '');
+                       if(! defined($subentry) || $subentry =~ /^\s*$/){
+                               ${$result{$entry}}{$key} = $val;
+                       }else{
+                               ${$result{$entry}}{$subentry}{$key} = $val;
+                       }
+                       next;
+               };
+               # Select a new entry if this is such a line
+               /\[(.*?)\]/ && do{
+                       
+                       $_ = $1;
+                       ($entry,$subentry) = split('::');
+                       if(! defined($subentry) || $subentry =~ /^\s*$/){
+                               $result{$entry} = {};
+                       }elsif($result{$entry}){
+                               $result{$entry}{$subentry} = {};
+                       }
+                       next;
+               };
+       }
+       return(\%result);
+}
+
+# We provide a DESTROY method so that the autoloader
+# doesn't bother trying to find it.
+sub DESTROY { }
+
+# Autoload methods go after =cut, and are processed by the autosplit program.
+
+1;
+__END__
+=head1 NAME
+
+Config::Abstract::Ini - Perl extension for handling ini style files
+
+=head1 SYNOPSIS
+
+ use Config::Abstract::Ini;
+ my $ini = new Config::Abstract::Ini('testdata.ini');
+
+=head1 DESCRIPTION
+
+ Have you ever wanted an easy to use interface to your own
+ config files, but ended up doing 'require  mysettings.pl'
+ because you couldn't be bothered?  Config::Abstract::Ini solves
+ that  for  you, giving you an object in  exchange for the
+ name of your settings file.
+ For compatibility with other config file formats, Ini can
+ understand  hierarchical ini files using double colons as
+ delimiters.  Just make sure you don't create name clashes
+ by assigning both a value and a subentry to the same name
+ in the file. This is currently supported for one sublevel
+ only, which will have to be improved in future releases.
+
+=head1 EXAMPLES
+
+ We assume the content of the file 'testdata.ini' to be:
+ [myentry]
+ ;comment
+ thisssetting = that
+ thatsetting=this
+ ;end of ini
+ use Config::Abstract::Ini;
+ my $settingsfile = 'testdata.ini';
+ my $settings = new Config::Abstract::Ini($Settingsfile);
+ # Get all settings
+ my %allsettings = $settings->get_all_settings;
+ # Get a subsection (called an entry here, but it's 
+ # whatever's beneath a [section] header)
+ my %entry = $settings->get_entry('myentry');
+ # Get a specific setting from an entry
+ my $value = $settings->get_entry_setting('myentry',
+                                          'thissetting');
+
+ # Get a specific setting from an entry, giving a default
+ # to fall back on
+ my value = $settings->get_entry_setting('myentry',
+                                         'missingsetting',
+                                         'defaultvalue');
+ We can also make use of subentries, with a ini file like
+ this:
+
+ [book]
+ title=A book of chapters
+ author=Me, Myself and Irene
+
+ [book::chapter1]
+ title=The First Chapter, ever
+ file=book/chapter1.txt
+
+ [book::chapter2]
+ title=The Next Chapter, after the First Chapter, ever
+ file=book/chapter2.txt
+ # btw, you can use unix style comments, too...
+ ;end of ini
+
+ use Config::Abstract::Ini;
+ my $settingsfile = 'test2.ini';
+ my $ini = new Config::Abstract::Ini($Settingsfile);
+ my %book = $ini->get_entry('book');
+ my %chap1 = $ini->get_entry_setting('book','chapter1');
+ my $chap1title = $chapter1{'title'};
+ # Want to see the inifile?
+ # If you can live without comments and blank lines ;),
+ # try this:
+ print("My inifile looks like this:\n$ini\nCool, huh?\n");
+
+=head1 METHODS
+
+=item get_all_settings
+
+Returns a hash of all settings found in the processed file
+
+=item get_entry ENTRYNAME
+
+Returns a hash of the settings within the entry ENTRYNAME
+
+=item get_entry_setting ENTRYNAME,SETTINGNAME [,DEFAULTVALUE]
+
+Returns the value corresponding to ENTRYNAME,SETTINGSNAME. If the value isn't set it returns undef or, optionally, the DEFAULTVALUE
+
+=item set_all_settings SETTINGSHASH
+
+Fill settings with data from SETTINGSHASH
+
+=item set_entry ENTRYNAME,ENTRYHASH
+
+Fill the entry ENTRYNAME with data from ENTRYHASH
+
+=item set_entry_setting ENTRYNAME,SETTINGNAME,VALUE
+
+Set the setting ENTRYNAME,SETTINGSNAME to VALUE
+
+=head1 BUGS
+
+* Comments have to be on their own lines, end of line comments won't work properly
+* Serialisation does not take original line ordering into consideration, so comments may end up far from what they're supposed to document
+
+=head1 COPYRIGHT
+
+Copyright (c) 2003 Eddie Olsson. All rights reserved.
+
+ This library is free software; you can redistribute it
+ and/or modify it under the same terms as Perl itself.
+
+
+=head1 AUTHOR
+
+Eddie Olsson <ewt@avajadi.org>
+
+=head1 SEE ALSO
+
+L<perl>.
+
+=cut
diff --git a/soft/toolbox/jtag_atomic/libs/Config/Abstract/Ini.pm b/soft/toolbox/jtag_atomic/libs/Config/Abstract/Ini.pm
new file mode 100644 (file)
index 0000000..5235d1c
--- /dev/null
@@ -0,0 +1,263 @@
+package Config::Abstract::Ini;
+
+use 5.006;
+use strict;
+use warnings;
+
+require Exporter;
+use Config::Abstract;
+
+use overload qw{""} => \&_to_string;
+
+our @ISA = qw(Config::Abstract Exporter);
+our %EXPORT_TAGS = ( 'all' => [ qw( ) ] );
+our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+our @EXPORT = qw( );
+
+our $VERSION = '0.16';
+
+#
+# ------------------------------------------------------------------------------------------------------- structural methods -----
+#
+
+# All inherited from Config::Abstract
+
+#
+# --------------------------------------------------------------------------------------------------------- accessor methods -----
+#
+
+# All inherited from Config::Abstract
+
+#
+# ------------------------------------------------------------------------------------------------ (un)serialisation methods -----
+#
+
+##################################################
+#%name: _to_string
+#%syntax: _to_string
+#%summary: Recursively generates a string representation of the settings hash
+#%returns: a string in .ini format 
+
+sub _to_string{
+       my($self) = @_;
+       return $self->_dumpobject('',$self->{_settings});
+}
+
+##################################################
+#%name: _dumpobject
+#%syntax: _dumpobject(<$objectcaption>,<$objectref>,[<@parentobjectcaptions>])
+#%summary: Recursively generates a string representation of the object referenced
+#          by $objectref
+#%returns: a string representation of the object
+
+sub _dumpobject{
+       my($self,$name,$obj,@parents) = @_;
+       my @result = ();
+       if(ref($obj) eq 'HASH'){
+               unless($name eq ''){
+                       push(@parents,"$name");
+                       push(@result,'[' . join('::',@parents) . ']');
+               }
+               while(my($key,$val) = each(%{$obj})){
+                       push(@result,$self->_dumpobject($key,$val,@parents));
+               }
+       }elsif(ref($obj) eq 'SCALAR'){
+               push(@result,"$name = ${$obj}");
+       }elsif(ref($obj) eq 'ARRAY'){
+               push(@parents,"$name");
+               push(@result,'[' . join('::',@parents) . ']');
+               for(my $i = 0;scalar(@{$obj});$i++){
+                       push(@result,$self->_dumpobject($i,${$obj}[$i],@parents));
+               }
+       }else{
+#              print("Why are we here? name: " . ( defined($name) ? $name : 'empty' ) . " obj:" . ( defined($obj) ? $obj : 'empty' ) . "\n");#DEBUG!!!
+               push(@result,"$name = " . (defined($obj) ? $obj : '') ) unless(!defined($name));
+       }
+       return(join("\n",@result));
+}
+
+
+##################################################
+#%name: _parse_settings_file
+#%syntax: _parse_settings_file(<@settings>)
+#%summary: Reads the projects to keep track of
+#%returns: a hash of $projectkey:$projectlabel
+
+sub _parse_settings_file{
+       my %result = ();
+       my ($entry,$subentry) = ('',undef);
+       chomp(@_);
+       foreach(@_){
+               # Get rid of starting/ending whitespace
+               s/^\s*(.*?)\s*$/$1/;
+               
+               #Delete comments
+               ($_) = split(/[;#]/,$_);
+               #Skip if there's no data
+               next if((! defined($_)) || $_ eq '');
+               /^\s*(.*?)\s*=\s*(['"]|)(.*)\2\s*/ && do {      
+                       my($key,$val) = ($1,$3);
+                       next if($key eq '' || $val eq '');
+                       if(! defined($subentry) || $subentry =~ /^\s*$/){
+                               ${$result{$entry}}{$key} = $val;
+                       }else{
+                               ${$result{$entry}}{$subentry}{$key} = $val;
+                       }
+                       next;
+               };
+               # Select a new entry if this is such a line
+               /\[(.*?)\]/ && do{
+                       
+                       $_ = $1;
+                       ($entry,$subentry) = split('::');
+                       if(! defined($subentry) || $subentry =~ /^\s*$/){
+                               $result{$entry} = {};
+                       }elsif($result{$entry}){
+                               $result{$entry}{$subentry} = {};
+                       }
+                       next;
+               };
+       }
+       return(\%result);
+}
+
+# We provide a DESTROY method so that the autoloader
+# doesn't bother trying to find it.
+sub DESTROY { }
+
+# Autoload methods go after =cut, and are processed by the autosplit program.
+
+1;
+__END__
+=head1 NAME
+
+Config::Abstract::Ini - Perl extension for handling ini style files
+
+=head1 SYNOPSIS
+
+ use Config::Abstract::Ini;
+ my $ini = new Config::Abstract::Ini('testdata.ini');
+
+=head1 DESCRIPTION
+
+ Have you ever wanted an easy to use interface to your own
+ config files, but ended up doing 'require  mysettings.pl'
+ because you couldn't be bothered?  Config::Abstract::Ini solves
+ that  for  you, giving you an object in  exchange for the
+ name of your settings file.
+ For compatibility with other config file formats, Ini can
+ understand  hierarchical ini files using double colons as
+ delimiters.  Just make sure you don't create name clashes
+ by assigning both a value and a subentry to the same name
+ in the file. This is currently supported for one sublevel
+ only, which will have to be improved in future releases.
+
+=head1 EXAMPLES
+
+ We assume the content of the file 'testdata.ini' to be:
+ [myentry]
+ ;comment
+ thisssetting = that
+ thatsetting=this
+ ;end of ini
+ use Config::Abstract::Ini;
+ my $settingsfile = 'testdata.ini';
+ my $settings = new Config::Abstract::Ini($Settingsfile);
+ # Get all settings
+ my %allsettings = $settings->get_all_settings;
+ # Get a subsection (called an entry here, but it's 
+ # whatever's beneath a [section] header)
+ my %entry = $settings->get_entry('myentry');
+ # Get a specific setting from an entry
+ my $value = $settings->get_entry_setting('myentry',
+                                          'thissetting');
+
+ # Get a specific setting from an entry, giving a default
+ # to fall back on
+ my value = $settings->get_entry_setting('myentry',
+                                         'missingsetting',
+                                         'defaultvalue');
+ We can also make use of subentries, with a ini file like
+ this:
+
+ [book]
+ title=A book of chapters
+ author=Me, Myself and Irene
+
+ [book::chapter1]
+ title=The First Chapter, ever
+ file=book/chapter1.txt
+
+ [book::chapter2]
+ title=The Next Chapter, after the First Chapter, ever
+ file=book/chapter2.txt
+ # btw, you can use unix style comments, too...
+ ;end of ini
+
+ use Config::Abstract::Ini;
+ my $settingsfile = 'test2.ini';
+ my $ini = new Config::Abstract::Ini($Settingsfile);
+ my %book = $ini->get_entry('book');
+ my %chap1 = $ini->get_entry_setting('book','chapter1');
+ my $chap1title = $chapter1{'title'};
+ # Want to see the inifile?
+ # If you can live without comments and blank lines ;),
+ # try this:
+ print("My inifile looks like this:\n$ini\nCool, huh?\n");
+
+=head1 METHODS
+
+=item get_all_settings
+
+Returns a hash of all settings found in the processed file
+
+=item get_entry ENTRYNAME
+
+Returns a hash of the settings within the entry ENTRYNAME
+
+=item get_entry_setting ENTRYNAME,SETTINGNAME [,DEFAULTVALUE]
+
+Returns the value corresponding to ENTRYNAME,SETTINGSNAME. If the value isn't set it returns undef or, optionally, the DEFAULTVALUE
+
+=item set_all_settings SETTINGSHASH
+
+Fill settings with data from SETTINGSHASH
+
+=item set_entry ENTRYNAME,ENTRYHASH
+
+Fill the entry ENTRYNAME with data from ENTRYHASH
+
+=item set_entry_setting ENTRYNAME,SETTINGNAME,VALUE
+
+Set the setting ENTRYNAME,SETTINGSNAME to VALUE
+
+=head1 BUGS
+
+* Comments have to be on their own lines, end of line comments won't work properly
+* Serialisation does not take original line ordering into consideration, so comments may end up far from what they're supposed to document
+
+=head1 COPYRIGHT
+
+Copyright (c) 2003 Eddie Olsson. All rights reserved.
+
+ This library is free software; you can redistribute it
+ and/or modify it under the same terms as Perl itself.
+
+
+=head1 AUTHOR
+
+Eddie Olsson <ewt@avajadi.org>
+
+=head1 SEE ALSO
+
+L<perl>.
+
+=cut
diff --git a/soft/toolbox/jtag_atomic/libs/MANIFEST b/soft/toolbox/jtag_atomic/libs/MANIFEST
new file mode 100644 (file)
index 0000000..6ad1394
--- /dev/null
@@ -0,0 +1,10 @@
+README
+Makefile.PL
+t/crc.t                # some tests
+t/testfile     # a file to check during tests
+CRC32.xs       # the heart of the module       
+CRC32.pm
+CRC32.pod      # documentation
+MANIFEST
+crcgen.c       # use this to rebuild your crc table
+typemap                # my typemap for a correct mapping from C types to perl
diff --git a/soft/toolbox/jtag_atomic/libs/MYMETA.json b/soft/toolbox/jtag_atomic/libs/MYMETA.json
new file mode 100644 (file)
index 0000000..5db0481
--- /dev/null
@@ -0,0 +1,39 @@
+{
+   "abstract" : "unknown",
+   "author" : [
+      "unknown"
+   ],
+   "dynamic_config" : 0,
+   "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120630",
+   "license" : [
+      "unknown"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "BN-CRC32",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {}
+      }
+   },
+   "release_status" : "stable",
+   "version" : "1.4"
+}
diff --git a/soft/toolbox/jtag_atomic/libs/MYMETA.yml b/soft/toolbox/jtag_atomic/libs/MYMETA.yml
new file mode 100644 (file)
index 0000000..6ad2d07
--- /dev/null
@@ -0,0 +1,21 @@
+---
+abstract: unknown
+author:
+  - unknown
+build_requires:
+  ExtUtils::MakeMaker: 0
+configure_requires:
+  ExtUtils::MakeMaker: 0
+dynamic_config: 0
+generated_by: 'ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120630'
+license: unknown
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: BN-CRC32
+no_index:
+  directory:
+    - t
+    - inc
+requires: {}
+version: 1.4
diff --git a/soft/toolbox/jtag_atomic/libs/Makefile b/soft/toolbox/jtag_atomic/libs/Makefile
new file mode 100644 (file)
index 0000000..5f7c6ac
--- /dev/null
@@ -0,0 +1,1013 @@
+# This Makefile is for the BN::CRC32 extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.6302 (Revision: 66302) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+#       ANY CHANGES MADE HERE WILL BE LOST!
+#
+#   MakeMaker ARGV: ()
+#
+
+#   MakeMaker Parameters:
+
+#     BUILD_REQUIRES => {  }
+#     CONFIGURE_REQUIRES => {  }
+#     DISTNAME => q[BN-CRC32]
+#     NAME => q[BN::CRC32]
+#     OBJECT => q[CRC32.o]
+#     PREREQ_PM => {  }
+#     VERSION => q[1.4]
+#     dist => { COMPRESS=>q[gzip], SUFFIX=>q[gz] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi/Config.pm).
+# They may have been overridden via Makefile.PL or on the command line.
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.16.0/x86_64-linux-thread-multi/CORE
+DLEXT = so
+DLSRC = dl_dlopen.xs
+EXE_EXT = 
+FULL_AR = /usr/bin/ar
+LD = cc
+LDDLFLAGS = -shared -L/usr/local/lib64 -fstack-protector
+LDFLAGS =  -L/usr/local/lib64 -fstack-protector
+LIBC = /lib64/libc-2.15.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 3.1.10-1.9-default
+RANLIB = :
+SITELIBEXP = /usr/lib/perl5/site_perl/5.16.0
+SITEARCHEXP = /usr/lib/perl5/site_perl/5.16.0/x86_64-linux-thread-multi
+SO = so
+VENDORARCHEXP = /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi
+VENDORLIBEXP = /usr/lib/perl5/vendor_perl/5.16.0
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+DFSEP = $(DIRFILESEP)
+NAME = BN::CRC32
+NAME_SYM = BN_CRC32
+VERSION = 1.4
+VERSION_MACRO = VERSION
+VERSION_SYM = 1_4
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 1.4
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR = 
+PREFIX = $(SITEPREFIX)
+PERLPREFIX = /usr
+SITEPREFIX = /usr
+VENDORPREFIX = /usr
+INSTALLPRIVLIB = /usr/lib/perl5/5.16.0
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = /usr/lib/perl5/site_perl/5.16.0
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = /usr/lib/perl5/vendor_perl/5.16.0
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = /usr/lib/perl5/site_perl/5.16.0/x86_64-linux-thread-multi
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = /usr/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = /usr/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = /usr/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = /usr/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLSITESCRIPT = /usr/bin
+DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT)
+INSTALLVENDORSCRIPT = /usr/bin
+DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT)
+INSTALLMAN1DIR = /usr/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = /usr/share/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = /usr/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = /usr/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = /usr/share/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = /usr/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/lib/perl5/5.16.0
+PERL_ARCHLIB = /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKEFILE_OLD = Makefile.old
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_DIR = 755
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER   = /usr/lib/perl5/5.16.0/ExtUtils/MakeMaker.pm
+MM_VERSION  = 6.6302
+MM_REVISION = 66302
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE  = Basename part of dynamic library. May be just equal BASEEXT.
+MAKE = make
+FULLEXT = BN/CRC32
+BASEEXT = CRC32
+PARENT_NAME = BN
+DLBASE = $(BASEEXT)
+VERSION_FROM = 
+OBJECT = CRC32$(OBJ_EXT)
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+BOOTDEP = 
+
+# Handy lists of source code files:
+XS_FILES = CRC32.xs \
+       CRC32_mod.xs
+C_FILES  = CRC32.c \
+       CRC32_mod.c \
+       crcgen.c
+O_FILES  = CRC32.o \
+       CRC32_mod.o \
+       crcgen.o
+H_FILES  = 
+MAN1PODS = 
+MAN3PODS = CRC32.pod
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+
+# Where to build things
+INST_LIBDIR      = $(INST_LIB)/BN
+INST_ARCHLIBDIR  = $(INST_ARCHLIB)/BN
+
+INST_AUTODIR     = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC      = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT)
+INST_DYNAMIC     = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT)
+INST_BOOT        = $(INST_ARCHAUTODIR)/$(BASEEXT).bs
+
+# Extra linker info
+EXPORT_LIST        = 
+PERL_ARCHIVE       = 
+PERL_ARCHIVE_AFTER = 
+
+
+TO_INST_PM = CRC32.pm \
+       CRC32.pod \
+       CRC32_test.pm
+
+PM_TO_BLIB = CRC32.pod \
+       $(INST_LIB)/BN/CRC32.pod \
+       CRC32_test.pm \
+       $(INST_LIB)/BN/CRC32_test.pm \
+       CRC32.pm \
+       $(INST_LIB)/BN/CRC32.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 6.6302
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(ABSPERLRUN)  -e 'use AutoSplit;  autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' --
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+XSUBPPDIR = /usr/lib/perl5/5.16.0/ExtUtils
+XSUBPP = $(XSUBPPDIR)$(DFSEP)xsubpp
+XSUBPPRUN = $(PERLRUN) $(XSUBPP)
+XSPROTOARG = 
+XSUBPPDEPS = /usr/lib/perl5/5.16.0/ExtUtils/typemap typemap $(XSUBPP)
+XSUBPPARGS = -typemap /usr/lib/perl5/5.16.0/ExtUtils/typemap -typemap typemap
+XSUBPP_EXTRA_ARGS = 
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(TRUE)
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
+FALSE = false
+TRUE = true
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
+DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
+UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
+MACROSTART = 
+MACROEND = 
+USEMAKEFILE = -f
+FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt : all
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip
+SUFFIX = gz
+SHAR = shar
+PREOP = $(NOECHO) $(NOOP)
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = BN-CRC32
+DISTVNAME = BN-CRC32-1.4
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+CCFLAGS = -D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+OPTIMIZE = -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe
+PERLTYPE = 
+MPOLLUTE = 
+
+
+# --- MakeMaker const_loadlibs section:
+
+# BN::CRC32 might depend on some other libraries:
+# See ExtUtils::Liblist for details
+#
+
+
+# --- MakeMaker const_cccmd section:
+CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \
+       $(CCFLAGS) $(OPTIMIZE) \
+       $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \
+       $(XS_DEFINE_VERSION)
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
+       LINKTYPE="$(LINKTYPE)"\
+       OPTIMIZE="$(OPTIMIZE)"\
+       PREFIX="$(PREFIX)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
+
+
+
+# --- MakeMaker c_o section:
+
+.c.i:
+       cc -E -c $(PASTHRU_INC) $(INC) \
+       $(CCFLAGS) $(OPTIMIZE) \
+       $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \
+       $(XS_DEFINE_VERSION) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i
+
+.c.s:
+       $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+.c$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+.cpp$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp
+
+.cxx$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx
+
+.cc$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc
+
+.C$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C
+
+
+# --- MakeMaker xs_c section:
+
+.xs.c:
+       $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $(XSUBPP_EXTRA_ARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
+
+
+# --- MakeMaker xs_o section:
+
+.xs$(OBJ_EXT):
+       $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+       $(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+       $(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+       $(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) blibdirs
+       $(NOECHO) $(NOOP)
+
+help :
+       perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker blibdirs section:
+blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
+       $(NOECHO) $(NOOP)
+
+# Backwards compat with 6.18 through 6.25
+blibdirs.ts : blibdirs
+       $(NOECHO) $(NOOP)
+
+$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_LIBDIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
+       $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
+
+$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_ARCHLIB)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
+       $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
+
+$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_AUTODIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
+       $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
+
+$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
+       $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
+
+$(INST_BIN)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_BIN)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
+       $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
+
+$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_SCRIPT)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
+       $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
+
+$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_MAN1DIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
+       $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
+
+$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
+       $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
+
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+BOOTSTRAP = $(BASEEXT).bs
+
+# As Mkbootstrap might not write a file (if none is required)
+# we use touch to prevent make continually trying to remake it.
+# The DynaLoader only reads a non-empty file.
+$(BOOTSTRAP) : $(FIRST_MAKEFILE) $(BOOTDEP) $(INST_ARCHAUTODIR)$(DFSEP).exists
+       $(NOECHO) $(ECHO) "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
+       $(NOECHO) $(PERLRUN) \
+               "-MExtUtils::Mkbootstrap" \
+               -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');"
+       $(NOECHO) $(TOUCH) $@
+       $(CHMOD) $(PERM_RW) $@
+
+$(INST_BOOT) : $(BOOTSTRAP) $(INST_ARCHAUTODIR)$(DFSEP).exists
+       $(NOECHO) $(RM_RF) $@
+       - $(CP) $(BOOTSTRAP) $@
+       $(CHMOD) $(PERM_RW) $@
+
+
+# --- MakeMaker dynamic_lib section:
+
+# This section creates the dynamically loadable $(INST_DYNAMIC)
+# from $(OBJECT) and possibly $(MYEXTLIB).
+ARMAYBE = :
+OTHERLDFLAGS = 
+INST_DYNAMIC_DEP = 
+INST_DYNAMIC_FIX = 
+
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
+       $(RM_F) $@
+       $(LD)  $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) \
+         $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST)    \
+         $(INST_DYNAMIC_FIX)
+       $(CHMOD) $(PERM_RWX) $@
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+$(INST_STATIC) : $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists
+       $(RM_RF) $@
+       $(FULL_AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@
+       $(CHMOD) $(PERM_RWX) $@
+       $(NOECHO) $(ECHO) "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all  \
+       CRC32.pod
+       $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \
+         CRC32.pod $(INST_MAN3DIR)/BN::CRC32.$(MAN3EXT) 
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+       - $(RM_F) \
+         core.[0-9] $(BASEEXT).bso \
+         pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
+         MYMETA.yml perl$(EXE_EXT) \
+         tmon.out *$(OBJ_EXT) \
+         pm_to_blib blibdirs.ts \
+         *perl.core core.*perl.*.? \
+         $(BASEEXT).def core.[0-9][0-9][0-9] \
+         mon.out lib$(BASEEXT).def \
+         perlmain.c perl.exe \
+         so_locations $(BASEEXT).exp \
+         CRC32.c CRC32_mod.c \
+         *$(LIB_EXT) core \
+         $(INST_ARCHAUTODIR)/extralibs.all core.[0-9][0-9] \
+         MYMETA.json $(BOOTSTRAP) \
+         $(BASEEXT).x $(INST_ARCHAUTODIR)/extralibs.ld \
+         core.[0-9][0-9][0-9][0-9][0-9] $(MAKE_APERL_FILE) \
+         perl 
+       - $(RM_RF) \
+         blib 
+       - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+# Delete temporary files (via clean) and also delete dist files
+realclean purge ::  clean realclean_subdirs
+       - $(RM_F) \
+         $(OBJECT) $(MAKEFILE_OLD) \
+         $(FIRST_MAKEFILE) 
+       - $(RM_RF) \
+         $(DISTVNAME) 
+
+
+# --- MakeMaker metafile section:
+metafile : create_distdir
+       $(NOECHO) $(ECHO) Generating META.yml
+       $(NOECHO) $(ECHO) '---' > META_new.yml
+       $(NOECHO) $(ECHO) 'abstract: unknown' >> META_new.yml
+       $(NOECHO) $(ECHO) 'author:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  - unknown' >> META_new.yml
+       $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  ExtUtils::MakeMaker: 0' >> META_new.yml
+       $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  ExtUtils::MakeMaker: 0' >> META_new.yml
+       $(NOECHO) $(ECHO) 'dynamic_config: 1' >> META_new.yml
+       $(NOECHO) $(ECHO) 'generated_by: '\''ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120630'\''' >> META_new.yml
+       $(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml
+       $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
+       $(NOECHO) $(ECHO) '  version: 1.4' >> META_new.yml
+       $(NOECHO) $(ECHO) 'name: BN-CRC32' >> META_new.yml
+       $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  directory:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    - t' >> META_new.yml
+       $(NOECHO) $(ECHO) '    - inc' >> META_new.yml
+       $(NOECHO) $(ECHO) 'requires: {}' >> META_new.yml
+       $(NOECHO) $(ECHO) 'version: 1.4' >> META_new.yml
+       -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
+       $(NOECHO) $(ECHO) Generating META.json
+       $(NOECHO) $(ECHO) '{' > META_new.json
+       $(NOECHO) $(ECHO) '   "abstract" : "unknown",' >> META_new.json
+       $(NOECHO) $(ECHO) '   "author" : [' >> META_new.json
+       $(NOECHO) $(ECHO) '      "unknown"' >> META_new.json
+       $(NOECHO) $(ECHO) '   ],' >> META_new.json
+       $(NOECHO) $(ECHO) '   "dynamic_config" : 1,' >> META_new.json
+       $(NOECHO) $(ECHO) '   "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120630",' >> META_new.json
+       $(NOECHO) $(ECHO) '   "license" : [' >> META_new.json
+       $(NOECHO) $(ECHO) '      "unknown"' >> META_new.json
+       $(NOECHO) $(ECHO) '   ],' >> META_new.json
+       $(NOECHO) $(ECHO) '   "meta-spec" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",' >> META_new.json
+       $(NOECHO) $(ECHO) '      "version" : "2"' >> META_new.json
+       $(NOECHO) $(ECHO) '   },' >> META_new.json
+       $(NOECHO) $(ECHO) '   "name" : "BN-CRC32",' >> META_new.json
+       $(NOECHO) $(ECHO) '   "no_index" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '      "directory" : [' >> META_new.json
+       $(NOECHO) $(ECHO) '         "t",' >> META_new.json
+       $(NOECHO) $(ECHO) '         "inc"' >> META_new.json
+       $(NOECHO) $(ECHO) '      ]' >> META_new.json
+       $(NOECHO) $(ECHO) '   },' >> META_new.json
+       $(NOECHO) $(ECHO) '   "prereqs" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '      "build" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '         "requires" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '            "ExtUtils::MakeMaker" : "0"' >> META_new.json
+       $(NOECHO) $(ECHO) '         }' >> META_new.json
+       $(NOECHO) $(ECHO) '      },' >> META_new.json
+       $(NOECHO) $(ECHO) '      "configure" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '         "requires" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '            "ExtUtils::MakeMaker" : "0"' >> META_new.json
+       $(NOECHO) $(ECHO) '         }' >> META_new.json
+       $(NOECHO) $(ECHO) '      },' >> META_new.json
+       $(NOECHO) $(ECHO) '      "runtime" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '         "requires" : {}' >> META_new.json
+       $(NOECHO) $(ECHO) '      }' >> META_new.json
+       $(NOECHO) $(ECHO) '   },' >> META_new.json
+       $(NOECHO) $(ECHO) '   "release_status" : "stable",' >> META_new.json
+       $(NOECHO) $(ECHO) '   "version" : "1.4"' >> META_new.json
+       $(NOECHO) $(ECHO) '}' >> META_new.json
+       -$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json
+
+
+# --- MakeMaker signature section:
+signature :
+       cpansign -s
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+       $(NOECHO) $(NOOP)
+
+distcheck :
+       $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+       $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+       $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+       $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old 
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+       $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+         -e '    if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' --
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+       $(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+       uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+       $(PREOP)
+       $(TO_UNIX)
+       $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+       $(RM_RF) $(DISTVNAME)
+       $(COMPRESS) $(DISTVNAME).tar
+       $(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+       $(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+       $(PREOP)
+       $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+       $(RM_RF) $(DISTVNAME)
+       $(POSTOP)
+
+shdist : distdir
+       $(PREOP)
+       $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+       $(RM_RF) $(DISTVNAME)
+       $(POSTOP)
+
+
+# --- MakeMaker distdir section:
+create_distdir :
+       $(RM_RF) $(DISTVNAME)
+       $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+               -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+distdir : create_distdir distmeta 
+       $(NOECHO) $(NOOP)
+
+
+
+# --- MakeMaker dist_test section:
+disttest : distdir
+       cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL 
+       cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+       cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+       $(PERLRUN) "-MExtUtils::Manifest=maniread" \
+         -e "@all = keys %{ maniread() };" \
+         -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+         -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker distmeta section:
+distmeta : create_distdir metafile
+       $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \
+         -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \
+         -e '    or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' --
+       $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \
+         -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \
+         -e '    or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' --
+
+
+
+# --- MakeMaker distsignature section:
+distsignature : create_distdir
+       $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
+         -e '    or print "Could not add SIGNATURE to MANIFEST: $$$${'\''@'\''}\n"' --
+       $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
+       cd $(DISTVNAME) && cpansign -s
+
+
+
+# --- MakeMaker install section:
+
+install :: pure_install doc_install
+       $(NOECHO) $(NOOP)
+
+install_perl :: pure_perl_install doc_perl_install
+       $(NOECHO) $(NOOP)
+
+install_site :: pure_site_install doc_site_install
+       $(NOECHO) $(NOOP)
+
+install_vendor :: pure_vendor_install doc_vendor_install
+       $(NOECHO) $(NOOP)
+
+pure_install :: pure_$(INSTALLDIRS)_install
+       $(NOECHO) $(NOOP)
+
+doc_install :: doc_$(INSTALLDIRS)_install
+       $(NOECHO) $(NOOP)
+
+pure__install : pure_site_install
+       $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+       $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install :: all
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+               $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+               $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+               $(INST_BIN) $(DESTINSTALLBIN) \
+               $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+               $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+               $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+       $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+               $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install :: all
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+               $(INST_LIB) $(DESTINSTALLSITELIB) \
+               $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+               $(INST_BIN) $(DESTINSTALLSITEBIN) \
+               $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \
+               $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+               $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+       $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+               $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install :: all
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
+               $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+               $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+               $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+               $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \
+               $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+               $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLPRIVLIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_site_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLSITELIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_vendor_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLVENDORLIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+       $(NOECHO) $(NOOP)
+
+uninstall_from_perldirs ::
+       $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+       $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+       $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE :
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+PERL_HDRS = \
+       $(PERL_INC)/EXTERN.h            \
+       $(PERL_INC)/INTERN.h            \
+       $(PERL_INC)/XSUB.h              \
+       $(PERL_INC)/av.h                \
+       $(PERL_INC)/config.h            \
+       $(PERL_INC)/cop.h               \
+       $(PERL_INC)/cv.h                \
+       $(PERL_INC)/dosish.h            \
+       $(PERL_INC)/embed.h             \
+       $(PERL_INC)/embedvar.h          \
+       $(PERL_INC)/fakethr.h           \
+       $(PERL_INC)/form.h              \
+       $(PERL_INC)/gv.h                \
+       $(PERL_INC)/handy.h             \
+       $(PERL_INC)/hv.h                \
+       $(PERL_INC)/intrpvar.h          \
+       $(PERL_INC)/iperlsys.h          \
+       $(PERL_INC)/keywords.h          \
+       $(PERL_INC)/mg.h                \
+       $(PERL_INC)/nostdio.h           \
+       $(PERL_INC)/op.h                \
+       $(PERL_INC)/opcode.h            \
+       $(PERL_INC)/patchlevel.h        \
+       $(PERL_INC)/perl.h              \
+       $(PERL_INC)/perlio.h            \
+       $(PERL_INC)/perlsdio.h          \
+       $(PERL_INC)/perlsfio.h          \
+       $(PERL_INC)/perlvars.h          \
+       $(PERL_INC)/perly.h             \
+       $(PERL_INC)/pp.h                \
+       $(PERL_INC)/pp_proto.h          \
+       $(PERL_INC)/proto.h             \
+       $(PERL_INC)/regcomp.h           \
+       $(PERL_INC)/regexp.h            \
+       $(PERL_INC)/regnodes.h          \
+       $(PERL_INC)/scope.h             \
+       $(PERL_INC)/sv.h                \
+       $(PERL_INC)/thread.h            \
+       $(PERL_INC)/unixish.h           \
+       $(PERL_INC)/util.h
+
+$(OBJECT) : $(PERL_HDRS)
+
+CRC32.c CRC32_mod.c : $(XSUBPPDEPS)
+
+
+# --- MakeMaker makefile section:
+
+$(OBJECT) : $(FIRST_MAKEFILE)
+
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+       $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+       $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+       -$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+       -$(NOECHO) $(MV)   $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+       - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
+       $(PERLRUN) Makefile.PL 
+       $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+       $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command.  <=="
+       $(FALSE)
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET    = perl
+FULLPERL      = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+       $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
+       $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+       $(NOECHO) $(PERLRUNINST) \
+               Makefile.PL DIR= \
+               MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+               MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES = t/*.t
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE) subdirs-test
+
+subdirs-test ::
+       $(NOECHO) $(NOOP)
+
+
+test_dynamic :: pure_all
+       PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
+
+testdb_dynamic :: pure_all
+       PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: pure_all $(MAP_TARGET)
+       PERL_DL_NONLAZY=1 ./$(MAP_TARGET) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
+
+testdb_static :: pure_all $(MAP_TARGET)
+       PERL_DL_NONLAZY=1 ./$(MAP_TARGET) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd :
+       $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="$(VERSION)">' > $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '    <ABSTRACT></ABSTRACT>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '    <AUTHOR></AUTHOR>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '    <IMPLEMENTATION>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="x86_64-linux-thread-multi-5.16" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '    </IMPLEMENTATION>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
+       $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
+         CRC32.pod $(INST_LIB)/BN/CRC32.pod \
+         CRC32_test.pm $(INST_LIB)/BN/CRC32_test.pm \
+         CRC32.pm $(INST_LIB)/BN/CRC32.pm 
+       $(NOECHO) $(TOUCH) pm_to_blib
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff --git a/soft/toolbox/jtag_atomic/libs/Makefile.PL b/soft/toolbox/jtag_atomic/libs/Makefile.PL
new file mode 100644 (file)
index 0000000..23682b4
--- /dev/null
@@ -0,0 +1,12 @@
+#! /usr/local/bin/perl
+
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile being created.
+WriteMakefile(
+       'NAME' => 'BN::CRC32',
+       'DISTNAME' => 'BN-CRC32',
+       'VERSION' => '1.4',
+       'OBJECT' => 'CRC32.o',
+       'dist'   => {COMPRESS=>'gzip', SUFFIX=>'gz'}
+);
diff --git a/soft/toolbox/jtag_atomic/libs/Makefile.old b/soft/toolbox/jtag_atomic/libs/Makefile.old
new file mode 100644 (file)
index 0000000..cb2d5d6
--- /dev/null
@@ -0,0 +1,1013 @@
+# This Makefile is for the BN::CRC32 extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.6302 (Revision: 66302) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+#       ANY CHANGES MADE HERE WILL BE LOST!
+#
+#   MakeMaker ARGV: ()
+#
+
+#   MakeMaker Parameters:
+
+#     BUILD_REQUIRES => {  }
+#     CONFIGURE_REQUIRES => {  }
+#     DISTNAME => q[BN-CRC32]
+#     NAME => q[BN::CRC32]
+#     OBJECT => q[CRC32.o]
+#     PREREQ_PM => {  }
+#     VERSION => q[1.4]
+#     dist => { COMPRESS=>q[gzip], SUFFIX=>q[gz] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi/Config.pm).
+# They may have been overridden via Makefile.PL or on the command line.
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E -Wl,-rpath,/usr/lib/perl5/5.16.0/x86_64-linux-thread-multi/CORE
+DLEXT = so
+DLSRC = dl_dlopen.xs
+EXE_EXT = 
+FULL_AR = /usr/bin/ar
+LD = cc
+LDDLFLAGS = -shared -L/usr/local/lib64 -fstack-protector
+LDFLAGS =  -L/usr/local/lib64 -fstack-protector
+LIBC = /lib64/libc-2.15.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 3.1.10-1.9-default
+RANLIB = :
+SITELIBEXP = /usr/lib/perl5/site_perl/5.16.0
+SITEARCHEXP = /usr/lib/perl5/site_perl/5.16.0/x86_64-linux-thread-multi
+SO = so
+VENDORARCHEXP = /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi
+VENDORLIBEXP = /usr/lib/perl5/vendor_perl/5.16.0
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+DFSEP = $(DIRFILESEP)
+NAME = BN::CRC32
+NAME_SYM = BN_CRC32
+VERSION = 1.4
+VERSION_MACRO = VERSION
+VERSION_SYM = 1_4
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 1.4
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR = 
+PREFIX = $(SITEPREFIX)
+PERLPREFIX = /usr
+SITEPREFIX = /usr
+VENDORPREFIX = /usr
+INSTALLPRIVLIB = /usr/lib/perl5/5.16.0
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = /usr/lib/perl5/site_perl/5.16.0
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = /usr/lib/perl5/vendor_perl/5.16.0
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = /usr/lib/perl5/site_perl/5.16.0/x86_64-linux-thread-multi
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = /usr/lib/perl5/vendor_perl/5.16.0/x86_64-linux-thread-multi
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = /usr/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = /usr/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = /usr/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = /usr/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLSITESCRIPT = /usr/bin
+DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT)
+INSTALLVENDORSCRIPT = /usr/bin
+DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT)
+INSTALLMAN1DIR = /usr/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = /usr/share/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = /usr/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = /usr/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = /usr/share/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = /usr/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/lib/perl5/5.16.0
+PERL_ARCHLIB = /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKEFILE_OLD = Makefile.old
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/perl5/5.16.0/x86_64-linux-thread-multi/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_DIR = 755
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER   = /usr/lib/perl5/5.16.0/ExtUtils/MakeMaker.pm
+MM_VERSION  = 6.6302
+MM_REVISION = 66302
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE  = Basename part of dynamic library. May be just equal BASEEXT.
+MAKE = make
+FULLEXT = BN/CRC32
+BASEEXT = CRC32
+PARENT_NAME = BN
+DLBASE = $(BASEEXT)
+VERSION_FROM = 
+OBJECT = CRC32$(OBJ_EXT)
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+BOOTDEP = 
+
+# Handy lists of source code files:
+XS_FILES = CRC32.xs \
+       CRC32_mod.xs
+C_FILES  = CRC32.c \
+       CRC32_mod.c \
+       crcgen.c
+O_FILES  = CRC32.o \
+       CRC32_mod.o \
+       crcgen.o
+H_FILES  = 
+MAN1PODS = 
+MAN3PODS = CRC32.pod
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+
+# Where to build things
+INST_LIBDIR      = $(INST_LIB)/BN
+INST_ARCHLIBDIR  = $(INST_ARCHLIB)/BN
+
+INST_AUTODIR     = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC      = $(INST_ARCHAUTODIR)/$(BASEEXT)$(LIB_EXT)
+INST_DYNAMIC     = $(INST_ARCHAUTODIR)/$(DLBASE).$(DLEXT)
+INST_BOOT        = $(INST_ARCHAUTODIR)/$(BASEEXT).bs
+
+# Extra linker info
+EXPORT_LIST        = 
+PERL_ARCHIVE       = 
+PERL_ARCHIVE_AFTER = 
+
+
+TO_INST_PM = CRC32.pm \
+       CRC32.pod \
+       CRC32_test.pm
+
+PM_TO_BLIB = CRC32.pod \
+       $(INST_LIB)/BN/CRC32.pod \
+       CRC32_test.pm \
+       $(INST_LIB)/BN/CRC32_test.pm \
+       CRC32.pm \
+       $(INST_LIB)/BN/CRC32.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 6.6302
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(ABSPERLRUN)  -e 'use AutoSplit;  autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' --
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+XSUBPPDIR = /usr/lib/perl5/5.16.0/ExtUtils
+XSUBPP = $(XSUBPPDIR)$(DFSEP)xsubpp
+XSUBPPRUN = $(PERLRUN) $(XSUBPP)
+XSPROTOARG = 
+XSUBPPDEPS = /usr/lib/perl5/5.16.0/ExtUtils/typemap typemap $(XSUBPP)
+XSUBPPARGS = -typemap /usr/lib/perl5/5.16.0/ExtUtils/typemap -typemap typemap
+XSUBPP_EXTRA_ARGS = 
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(TRUE)
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
+FALSE = false
+TRUE = true
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
+DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
+UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
+MACROSTART = 
+MACROEND = 
+USEMAKEFILE = -f
+FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt : all
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip
+SUFFIX = gz
+SHAR = shar
+PREOP = $(NOECHO) $(NOOP)
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = BN-CRC32
+DISTVNAME = BN-CRC32-1.4
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+CCFLAGS = -D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+OPTIMIZE = -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe
+PERLTYPE = 
+MPOLLUTE = 
+
+
+# --- MakeMaker const_loadlibs section:
+
+# BN::CRC32 might depend on some other libraries:
+# See ExtUtils::Liblist for details
+#
+
+
+# --- MakeMaker const_cccmd section:
+CCCMD = $(CC) -c $(PASTHRU_INC) $(INC) \
+       $(CCFLAGS) $(OPTIMIZE) \
+       $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \
+       $(XS_DEFINE_VERSION)
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
+       LINKTYPE="$(LINKTYPE)"\
+       OPTIMIZE="$(OPTIMIZE)"\
+       PREFIX="$(PREFIX)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
+
+
+
+# --- MakeMaker c_o section:
+
+.c.i:
+       cc -E -c $(PASTHRU_INC) $(INC) \
+       $(CCFLAGS) $(OPTIMIZE) \
+       $(PERLTYPE) $(MPOLLUTE) $(DEFINE_VERSION) \
+       $(XS_DEFINE_VERSION) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c > $*.i
+
+.c.s:
+       $(CCCMD) -S $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+.c$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+.cpp$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cpp
+
+.cxx$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cxx
+
+.cc$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.cc
+
+.C$(OBJ_EXT):
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.C
+
+
+# --- MakeMaker xs_c section:
+
+.xs.c:
+       $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $(XSUBPP_EXTRA_ARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
+
+
+# --- MakeMaker xs_o section:
+
+.xs$(OBJ_EXT):
+       $(XSUBPPRUN) $(XSPROTOARG) $(XSUBPPARGS) $*.xs > $*.xsc && $(MV) $*.xsc $*.c
+       $(CCCMD) $(CCCDLFLAGS) "-I$(PERL_INC)" $(PASTHRU_DEFINE) $(DEFINE) $*.c
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+       $(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+       $(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+       $(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) blibdirs
+       $(NOECHO) $(NOOP)
+
+help :
+       perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker blibdirs section:
+blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
+       $(NOECHO) $(NOOP)
+
+# Backwards compat with 6.18 through 6.25
+blibdirs.ts : blibdirs
+       $(NOECHO) $(NOOP)
+
+$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_LIBDIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
+       $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
+
+$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_ARCHLIB)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
+       $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
+
+$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_AUTODIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
+       $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
+
+$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
+       $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
+
+$(INST_BIN)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_BIN)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
+       $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
+
+$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_SCRIPT)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
+       $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
+
+$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_MAN1DIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
+       $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
+
+$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
+       $(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+       $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
+       $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
+
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+BOOTSTRAP = $(BASEEXT).bs
+
+# As Mkbootstrap might not write a file (if none is required)
+# we use touch to prevent make continually trying to remake it.
+# The DynaLoader only reads a non-empty file.
+$(BOOTSTRAP) : $(FIRST_MAKEFILE) $(BOOTDEP) $(INST_ARCHAUTODIR)$(DFSEP).exists
+       $(NOECHO) $(ECHO) "Running Mkbootstrap for $(NAME) ($(BSLOADLIBS))"
+       $(NOECHO) $(PERLRUN) \
+               "-MExtUtils::Mkbootstrap" \
+               -e "Mkbootstrap('$(BASEEXT)','$(BSLOADLIBS)');"
+       $(NOECHO) $(TOUCH) $@
+       $(CHMOD) $(PERM_RW) $@
+
+$(INST_BOOT) : $(BOOTSTRAP) $(INST_ARCHAUTODIR)$(DFSEP).exists
+       $(NOECHO) $(RM_RF) $@
+       - $(CP) $(BOOTSTRAP) $@
+       $(CHMOD) $(PERM_RW) $@
+
+
+# --- MakeMaker dynamic_lib section:
+
+# This section creates the dynamically loadable $(INST_DYNAMIC)
+# from $(OBJECT) and possibly $(MYEXTLIB).
+ARMAYBE = :
+OTHERLDFLAGS = 
+INST_DYNAMIC_DEP = 
+INST_DYNAMIC_FIX = 
+
+$(INST_DYNAMIC): $(OBJECT) $(MYEXTLIB) $(BOOTSTRAP) $(INST_ARCHAUTODIR)$(DFSEP).exists $(EXPORT_LIST) $(PERL_ARCHIVE) $(PERL_ARCHIVE_AFTER) $(INST_DYNAMIC_DEP)
+       $(RM_F) $@
+       $(LD)  $(LDDLFLAGS) $(LDFROM) $(OTHERLDFLAGS) -o $@ $(MYEXTLIB) \
+         $(PERL_ARCHIVE) $(LDLOADLIBS) $(PERL_ARCHIVE_AFTER) $(EXPORT_LIST)    \
+         $(INST_DYNAMIC_FIX)
+       $(CHMOD) $(PERM_RWX) $@
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+$(INST_STATIC) : $(OBJECT) $(MYEXTLIB) $(INST_ARCHAUTODIR)$(DFSEP).exists
+       $(RM_RF) $@
+       $(FULL_AR) $(AR_STATIC_ARGS) $@ $(OBJECT) && $(RANLIB) $@
+       $(CHMOD) $(PERM_RWX) $@
+       $(NOECHO) $(ECHO) "$(EXTRALIBS)" > $(INST_ARCHAUTODIR)/extralibs.ld
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all  \
+       CRC32.pod
+       $(NOECHO) $(POD2MAN) --section=3 --perm_rw=$(PERM_RW) \
+         CRC32.pod $(INST_MAN3DIR)/BN::CRC32.$(MAN3EXT) 
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+       - $(RM_F) \
+         core.[0-9] $(BASEEXT).bso \
+         pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
+         MYMETA.yml perl$(EXE_EXT) \
+         tmon.out *$(OBJ_EXT) \
+         pm_to_blib blibdirs.ts \
+         *perl.core core.*perl.*.? \
+         $(BASEEXT).def core.[0-9][0-9][0-9] \
+         mon.out lib$(BASEEXT).def \
+         perlmain.c perl.exe \
+         so_locations $(BASEEXT).exp \
+         CRC32.c CRC32_mod.c \
+         *$(LIB_EXT) core \
+         $(INST_ARCHAUTODIR)/extralibs.all core.[0-9][0-9] \
+         MYMETA.json $(BOOTSTRAP) \
+         $(BASEEXT).x $(INST_ARCHAUTODIR)/extralibs.ld \
+         core.[0-9][0-9][0-9][0-9][0-9] $(MAKE_APERL_FILE) \
+         perl 
+       - $(RM_RF) \
+         blib 
+       - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+# Delete temporary files (via clean) and also delete dist files
+realclean purge ::  clean realclean_subdirs
+       - $(RM_F) \
+         $(OBJECT) $(MAKEFILE_OLD) \
+         $(FIRST_MAKEFILE) 
+       - $(RM_RF) \
+         $(DISTVNAME) 
+
+
+# --- MakeMaker metafile section:
+metafile : create_distdir
+       $(NOECHO) $(ECHO) Generating META.yml
+       $(NOECHO) $(ECHO) '---' > META_new.yml
+       $(NOECHO) $(ECHO) 'abstract: unknown' >> META_new.yml
+       $(NOECHO) $(ECHO) 'author:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  - unknown' >> META_new.yml
+       $(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  ExtUtils::MakeMaker: 0' >> META_new.yml
+       $(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  ExtUtils::MakeMaker: 0' >> META_new.yml
+       $(NOECHO) $(ECHO) 'dynamic_config: 1' >> META_new.yml
+       $(NOECHO) $(ECHO) 'generated_by: '\''ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921'\''' >> META_new.yml
+       $(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml
+       $(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
+       $(NOECHO) $(ECHO) '  version: 1.4' >> META_new.yml
+       $(NOECHO) $(ECHO) 'name: BN-CRC32' >> META_new.yml
+       $(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
+       $(NOECHO) $(ECHO) '  directory:' >> META_new.yml
+       $(NOECHO) $(ECHO) '    - t' >> META_new.yml
+       $(NOECHO) $(ECHO) '    - inc' >> META_new.yml
+       $(NOECHO) $(ECHO) 'requires: {}' >> META_new.yml
+       $(NOECHO) $(ECHO) 'version: 1.4' >> META_new.yml
+       -$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
+       $(NOECHO) $(ECHO) Generating META.json
+       $(NOECHO) $(ECHO) '{' > META_new.json
+       $(NOECHO) $(ECHO) '   "abstract" : "unknown",' >> META_new.json
+       $(NOECHO) $(ECHO) '   "author" : [' >> META_new.json
+       $(NOECHO) $(ECHO) '      "unknown"' >> META_new.json
+       $(NOECHO) $(ECHO) '   ],' >> META_new.json
+       $(NOECHO) $(ECHO) '   "dynamic_config" : 1,' >> META_new.json
+       $(NOECHO) $(ECHO) '   "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921",' >> META_new.json
+       $(NOECHO) $(ECHO) '   "license" : [' >> META_new.json
+       $(NOECHO) $(ECHO) '      "unknown"' >> META_new.json
+       $(NOECHO) $(ECHO) '   ],' >> META_new.json
+       $(NOECHO) $(ECHO) '   "meta-spec" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",' >> META_new.json
+       $(NOECHO) $(ECHO) '      "version" : "2"' >> META_new.json
+       $(NOECHO) $(ECHO) '   },' >> META_new.json
+       $(NOECHO) $(ECHO) '   "name" : "BN-CRC32",' >> META_new.json
+       $(NOECHO) $(ECHO) '   "no_index" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '      "directory" : [' >> META_new.json
+       $(NOECHO) $(ECHO) '         "t",' >> META_new.json
+       $(NOECHO) $(ECHO) '         "inc"' >> META_new.json
+       $(NOECHO) $(ECHO) '      ]' >> META_new.json
+       $(NOECHO) $(ECHO) '   },' >> META_new.json
+       $(NOECHO) $(ECHO) '   "prereqs" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '      "build" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '         "requires" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '            "ExtUtils::MakeMaker" : "0"' >> META_new.json
+       $(NOECHO) $(ECHO) '         }' >> META_new.json
+       $(NOECHO) $(ECHO) '      },' >> META_new.json
+       $(NOECHO) $(ECHO) '      "configure" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '         "requires" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '            "ExtUtils::MakeMaker" : "0"' >> META_new.json
+       $(NOECHO) $(ECHO) '         }' >> META_new.json
+       $(NOECHO) $(ECHO) '      },' >> META_new.json
+       $(NOECHO) $(ECHO) '      "runtime" : {' >> META_new.json
+       $(NOECHO) $(ECHO) '         "requires" : {}' >> META_new.json
+       $(NOECHO) $(ECHO) '      }' >> META_new.json
+       $(NOECHO) $(ECHO) '   },' >> META_new.json
+       $(NOECHO) $(ECHO) '   "release_status" : "stable",' >> META_new.json
+       $(NOECHO) $(ECHO) '   "version" : "1.4"' >> META_new.json
+       $(NOECHO) $(ECHO) '}' >> META_new.json
+       -$(NOECHO) $(MV) META_new.json $(DISTVNAME)/META.json
+
+
+# --- MakeMaker signature section:
+signature :
+       cpansign -s
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+       $(NOECHO) $(NOOP)
+
+distcheck :
+       $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+       $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+       $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+       $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old 
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+       $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+         -e '    if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' --
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+       $(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+       uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+       $(PREOP)
+       $(TO_UNIX)
+       $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+       $(RM_RF) $(DISTVNAME)
+       $(COMPRESS) $(DISTVNAME).tar
+       $(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+       $(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+       $(PREOP)
+       $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+       $(RM_RF) $(DISTVNAME)
+       $(POSTOP)
+
+shdist : distdir
+       $(PREOP)
+       $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+       $(RM_RF) $(DISTVNAME)
+       $(POSTOP)
+
+
+# --- MakeMaker distdir section:
+create_distdir :
+       $(RM_RF) $(DISTVNAME)
+       $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+               -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+distdir : create_distdir distmeta 
+       $(NOECHO) $(NOOP)
+
+
+
+# --- MakeMaker dist_test section:
+disttest : distdir
+       cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL 
+       cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+       cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+       $(PERLRUN) "-MExtUtils::Manifest=maniread" \
+         -e "@all = keys %{ maniread() };" \
+         -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+         -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker distmeta section:
+distmeta : create_distdir metafile
+       $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \
+         -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \
+         -e '    or print "Could not add META.yml to MANIFEST: $$$${'\''@'\''}\n"' --
+       $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \
+         -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \
+         -e '    or print "Could not add META.json to MANIFEST: $$$${'\''@'\''}\n"' --
+
+
+
+# --- MakeMaker distsignature section:
+distsignature : create_distdir
+       $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
+         -e '    or print "Could not add SIGNATURE to MANIFEST: $$$${'\''@'\''}\n"' --
+       $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
+       cd $(DISTVNAME) && cpansign -s
+
+
+
+# --- MakeMaker install section:
+
+install :: pure_install doc_install
+       $(NOECHO) $(NOOP)
+
+install_perl :: pure_perl_install doc_perl_install
+       $(NOECHO) $(NOOP)
+
+install_site :: pure_site_install doc_site_install
+       $(NOECHO) $(NOOP)
+
+install_vendor :: pure_vendor_install doc_vendor_install
+       $(NOECHO) $(NOOP)
+
+pure_install :: pure_$(INSTALLDIRS)_install
+       $(NOECHO) $(NOOP)
+
+doc_install :: doc_$(INSTALLDIRS)_install
+       $(NOECHO) $(NOOP)
+
+pure__install : pure_site_install
+       $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+       $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install :: all
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLARCHLIB)/auto/$(FULLEXT)/.packlist \
+               $(INST_LIB) $(DESTINSTALLPRIVLIB) \
+               $(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+               $(INST_BIN) $(DESTINSTALLBIN) \
+               $(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+               $(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+               $(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+       $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+               $(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install :: all
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+               $(INST_LIB) $(DESTINSTALLSITELIB) \
+               $(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+               $(INST_BIN) $(DESTINSTALLSITEBIN) \
+               $(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \
+               $(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+               $(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+       $(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+               $(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install :: all
+       $(NOECHO) $(MOD_INSTALL) \
+               read $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist \
+               write $(DESTINSTALLVENDORARCH)/auto/$(FULLEXT)/.packlist \
+               $(INST_LIB) $(DESTINSTALLVENDORLIB) \
+               $(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+               $(INST_BIN) $(DESTINSTALLVENDORBIN) \
+               $(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \
+               $(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+               $(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLPRIVLIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_site_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLSITELIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+doc_vendor_install :: all
+       $(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLARCHLIB)/perllocal.pod
+       -$(NOECHO) $(MKPATH) $(DESTINSTALLARCHLIB)
+       -$(NOECHO) $(DOC_INSTALL) \
+               "Module" "$(NAME)" \
+               "installed into" "$(INSTALLVENDORLIB)" \
+               LINKTYPE "$(LINKTYPE)" \
+               VERSION "$(VERSION)" \
+               EXE_FILES "$(EXE_FILES)" \
+               >> $(DESTINSTALLARCHLIB)/perllocal.pod
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+       $(NOECHO) $(NOOP)
+
+uninstall_from_perldirs ::
+       $(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+       $(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+       $(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE :
+       $(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+PERL_HDRS = \
+       $(PERL_INC)/EXTERN.h            \
+       $(PERL_INC)/INTERN.h            \
+       $(PERL_INC)/XSUB.h              \
+       $(PERL_INC)/av.h                \
+       $(PERL_INC)/config.h            \
+       $(PERL_INC)/cop.h               \
+       $(PERL_INC)/cv.h                \
+       $(PERL_INC)/dosish.h            \
+       $(PERL_INC)/embed.h             \
+       $(PERL_INC)/embedvar.h          \
+       $(PERL_INC)/fakethr.h           \
+       $(PERL_INC)/form.h              \
+       $(PERL_INC)/gv.h                \
+       $(PERL_INC)/handy.h             \
+       $(PERL_INC)/hv.h                \
+       $(PERL_INC)/intrpvar.h          \
+       $(PERL_INC)/iperlsys.h          \
+       $(PERL_INC)/keywords.h          \
+       $(PERL_INC)/mg.h                \
+       $(PERL_INC)/nostdio.h           \
+       $(PERL_INC)/op.h                \
+       $(PERL_INC)/opcode.h            \
+       $(PERL_INC)/patchlevel.h        \
+       $(PERL_INC)/perl.h              \
+       $(PERL_INC)/perlio.h            \
+       $(PERL_INC)/perlsdio.h          \
+       $(PERL_INC)/perlsfio.h          \
+       $(PERL_INC)/perlvars.h          \
+       $(PERL_INC)/perly.h             \
+       $(PERL_INC)/pp.h                \
+       $(PERL_INC)/pp_proto.h          \
+       $(PERL_INC)/proto.h             \
+       $(PERL_INC)/regcomp.h           \
+       $(PERL_INC)/regexp.h            \
+       $(PERL_INC)/regnodes.h          \
+       $(PERL_INC)/scope.h             \
+       $(PERL_INC)/sv.h                \
+       $(PERL_INC)/thread.h            \
+       $(PERL_INC)/unixish.h           \
+       $(PERL_INC)/util.h
+
+$(OBJECT) : $(PERL_HDRS)
+
+CRC32.c CRC32_mod.c : $(XSUBPPDEPS)
+
+
+# --- MakeMaker makefile section:
+
+$(OBJECT) : $(FIRST_MAKEFILE)
+
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+       $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+       $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+       -$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+       -$(NOECHO) $(MV)   $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+       - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
+       $(PERLRUN) Makefile.PL 
+       $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+       $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command.  <=="
+       $(FALSE)
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET    = perl
+FULLPERL      = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+       $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
+       $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+       $(NOECHO) $(PERLRUNINST) \
+               Makefile.PL DIR= \
+               MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+               MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES = t/*.t
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE) subdirs-test
+
+subdirs-test ::
+       $(NOECHO) $(NOOP)
+
+
+test_dynamic :: pure_all
+       PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
+
+testdb_dynamic :: pure_all
+       PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: pure_all $(MAP_TARGET)
+       PERL_DL_NONLAZY=1 ./$(MAP_TARGET) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
+
+testdb_static :: pure_all $(MAP_TARGET)
+       PERL_DL_NONLAZY=1 ./$(MAP_TARGET) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd :
+       $(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="$(VERSION)">' > $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '    <ABSTRACT></ABSTRACT>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '    <AUTHOR></AUTHOR>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '    <IMPLEMENTATION>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="x86_64-linux-thread-multi-5.16" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '        <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '    </IMPLEMENTATION>' >> $(DISTNAME).ppd
+       $(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
+       $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
+         CRC32.pod $(INST_LIB)/BN/CRC32.pod \
+         CRC32_test.pm $(INST_LIB)/BN/CRC32_test.pm \
+         CRC32.pm $(INST_LIB)/BN/CRC32.pm 
+       $(NOECHO) $(TOUCH) pm_to_blib
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
diff --git a/soft/toolbox/jtag_atomic/libs/README b/soft/toolbox/jtag_atomic/libs/README
new file mode 100644 (file)
index 0000000..3e93bf4
--- /dev/null
@@ -0,0 +1,29 @@
+
+Perl Module String::CRC32
+
+This packages provides a perl module to generate checksums from strings
+and from files.
+
+Written 19990310 by Soenke J. Peters <peters__perl@opcenter.de>.
+
+The checksums are the same as those calculated by ZMODEM, PKZIP,
+PICCHECK and many others.
+There's another perl module called String::CRC which allows to calculate
+not only 32 bit CRC numbers, but the generated sums differ from those of
+the programs mentioned above.
+
+Installation:
+   "perl Makefile.PL"
+   "make"
+   "make test"
+   "make install"
+
+If you find any bugs, please send me a good description (or a patch ;-) ).
+Thanks to s0lar(at)gmx.li who sent me a patch to replace PerlIO_getc with
+PerlIO_read to improve performance.
+
+Have fun,
+    Soenke J. Peters
+    Rostock, Germany
+
+
diff --git a/soft/toolbox/jtag_atomic/libs/blib/arch/.exists b/soft/toolbox/jtag_atomic/libs/blib/arch/.exists
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/.exists b/soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/.exists
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/CRC32.bs b/soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/CRC32.bs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/CRC32.so b/soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/CRC32.so
new file mode 100755 (executable)
index 0000000..1dc708a
Binary files /dev/null and b/soft/toolbox/jtag_atomic/libs/blib/arch/auto/BN/CRC32/CRC32.so differ
diff --git a/soft/toolbox/jtag_atomic/libs/blib/bin/.exists b/soft/toolbox/jtag_atomic/libs/blib/bin/.exists
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/blib/lib/BN/.exists b/soft/toolbox/jtag_atomic/libs/blib/lib/BN/.exists
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32.pm b/soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32.pm
new file mode 100644 (file)
index 0000000..3136f51
--- /dev/null
@@ -0,0 +1,19 @@
+
+package BN::CRC32;
+
+require Exporter;
+require DynaLoader;
+
+@ISA = qw(Exporter DynaLoader);
+
+$VERSION = 1.4;
+
+# Items to export into callers namespace by default
+@EXPORT = qw(crc32);
+
+# Other items we are prepared to export if requested
+@EXPORT_OK = qw();
+
+bootstrap BN::CRC32;
+
+1;
diff --git a/soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32.pod b/soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32.pod
new file mode 100644 (file)
index 0000000..ba0d1b0
--- /dev/null
@@ -0,0 +1,61 @@
+=head1 NAME
+
+String::CRC32 - Perl interface for cyclic redundency check generation
+
+=head1 SYNOPSIS
+
+    use String::CRC32;
+    
+    $crc = crc32("some string");
+    $crc = crc32("some string", initvalue);
+
+    $somestring = "some string";
+    $crc = crc32($somestring);
+
+    open(SOMEFILE, "location/of/some.file");
+    $crc = crc32(*SOMEFILE);
+    close(SOMEFILE);
+
+=head1 DESCRIPTION
+
+The B<CRC32> module calculates CRC sums of 32 bit lenghts.
+It generates the same CRC values as ZMODEM, PKZIP, PICCHECK and
+many others.
+
+Despite its name, this module is able to compute
+the checksum of files as well as strings.
+
+=head1 EXAMPLES
+
+    $crc = crc32("some string");
+
+  results in the same as
+
+    $crc = crc32(" string", crc32("some"));
+
+This is useful for subsequent CRC checking of substrings.
+
+You may even check files:
+
+    open(SOMEFILE, "location/of/some.file");
+    $crc = crc32(*SOMEFILE);
+    close(SOMEFILE);
+
+A init value may also been supplied in the above example.
+
+=head1 AUTHOR
+
+Soenke J. Peters <peters__perl@opcenter.de>
+
+Please be so kind as to report any bugs/suggestions to the above address.
+
+=head1 COPYRIGHT
+
+CRC algorithm code taken from CRC-32 by Craig Bruce. 
+The module stuff is inspired by a similar perl module called 
+String::CRC by David Sharnoff & Matthew Dillon.
+Horst Fickenscher told me that it could be useful to supply an init
+value to the crc checking function and so I included this possibility.
+
+The author of this package disclaims all copyrights and 
+releases it into the public domain.
diff --git a/soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32_test.pm b/soft/toolbox/jtag_atomic/libs/blib/lib/BN/CRC32_test.pm
new file mode 100644 (file)
index 0000000..55e36c3
--- /dev/null
@@ -0,0 +1,7 @@
+#/usr/bin/perl  -I/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch -I/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/lib
+#
+use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+use BN::CRC32;
+
+print "PERL:" . crc32("A string.");
diff --git a/soft/toolbox/jtag_atomic/libs/blib/lib/auto/BN/CRC32/.exists b/soft/toolbox/jtag_atomic/libs/blib/lib/auto/BN/CRC32/.exists
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/blib/man1/.exists b/soft/toolbox/jtag_atomic/libs/blib/man1/.exists
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/blib/man3/.exists b/soft/toolbox/jtag_atomic/libs/blib/man3/.exists
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/blib/man3/BN::CRC32.3pm b/soft/toolbox/jtag_atomic/libs/blib/man3/BN::CRC32.3pm
new file mode 100644 (file)
index 0000000..9b49b29
--- /dev/null
@@ -0,0 +1,192 @@
+.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings.  \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote.  \*(C+ will
+.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
+.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
+.\" nothing in troff, for use with C<>.
+.tr \(*W-
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+.    ds -- \(*W-
+.    ds PI pi
+.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
+.    ds L" ""
+.    ds R" ""
+.    ds C` ""
+.    ds C' ""
+'br\}
+.el\{\
+.    ds -- \|\(em\|
+.    ds PI \(*p
+.    ds L" ``
+.    ds R" ''
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el       .ds Aq '
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD.  Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.ie \nF \{\
+.    de IX
+.    tm Index:\\$1\t\\n%\t"\\$2"
+..
+.    nr % 0
+.    rr F
+.\}
+.el \{\
+.    de IX
+..
+.\}
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
+.    \" fudge factors for nroff and troff
+.if n \{\
+.    ds #H 0
+.    ds #V .8m
+.    ds #F .3m
+.    ds #[ \f1
+.    ds #] \fP
+.\}
+.if t \{\
+.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+.    ds #V .6m
+.    ds #F 0
+.    ds #[ \&
+.    ds #] \&
+.\}
+.    \" simple accents for nroff and troff
+.if n \{\
+.    ds ' \&
+.    ds ` \&
+.    ds ^ \&
+.    ds , \&
+.    ds ~ ~
+.    ds /
+.\}
+.if t \{\
+.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+.    \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+.    \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+.    \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+.    ds : e
+.    ds 8 ss
+.    ds o a
+.    ds d- d\h'-1'\(ga
+.    ds D- D\h'-1'\(hy
+.    ds th \o'bp'
+.    ds Th \o'LP'
+.    ds ae ae
+.    ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "CRC32 3"
+.TH CRC32 3 "2012-07-16" "perl v5.16.0" "User Contributed Perl Documentation"
+.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH "NAME"
+String::CRC32 \- Perl interface for cyclic redundency check generation
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+.Vb 1
+\&    use String::CRC32;
+\&    
+\&    $crc = crc32("some string");
+\&    $crc = crc32("some string", initvalue);
+\&
+\&    $somestring = "some string";
+\&    $crc = crc32($somestring);
+\&
+\&    open(SOMEFILE, "location/of/some.file");
+\&    $crc = crc32(*SOMEFILE);
+\&    close(SOMEFILE);
+.Ve
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+The \fB\s-1CRC32\s0\fR module calculates \s-1CRC\s0 sums of 32 bit lenghts.
+It generates the same \s-1CRC\s0 values as \s-1ZMODEM\s0, \s-1PKZIP\s0, \s-1PICCHECK\s0 and
+many others.
+.PP
+Despite its name, this module is able to compute
+the checksum of files as well as strings.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+.Vb 1
+\&    $crc = crc32("some string");
+\&
+\&  results in the same as
+\&
+\&    $crc = crc32(" string", crc32("some"));
+.Ve
+.PP
+This is useful for subsequent \s-1CRC\s0 checking of substrings.
+.PP
+You may even check files:
+.PP
+.Vb 3
+\&    open(SOMEFILE, "location/of/some.file");
+\&    $crc = crc32(*SOMEFILE);
+\&    close(SOMEFILE);
+.Ve
+.PP
+A init value may also been supplied in the above example.
+.SH "AUTHOR"
+.IX Header "AUTHOR"
+Soenke J. Peters <peters_\|_perl@opcenter.de>
+.PP
+Please be so kind as to report any bugs/suggestions to the above address.
+.SH "COPYRIGHT"
+.IX Header "COPYRIGHT"
+\&\s-1CRC\s0 algorithm code taken from \s-1CRC\-32\s0 by Craig Bruce. 
+The module stuff is inspired by a similar perl module called 
+String::CRC by David Sharnoff & Matthew Dillon.
+Horst Fickenscher told me that it could be useful to supply an init
+value to the crc checking function and so I included this possibility.
+.PP
+The author of this package disclaims all copyrights and 
+releases it into the public domain.
diff --git a/soft/toolbox/jtag_atomic/libs/blib/script/.exists b/soft/toolbox/jtag_atomic/libs/blib/script/.exists
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/crcgen.c b/soft/toolbox/jtag_atomic/libs/crcgen.c
new file mode 100644 (file)
index 0000000..b0b324b
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ Generation of CRC lookup table
+ as used in Perl module "String::CRC32"
+
+ 1999 by Soenke J. Peters <peters__perl@opcenter.de>
+*/
+
+#include <stdio.h>
+
+int
+main ( void )
+{ 
+  unsigned long crc, poly;
+  int     i, j;
+
+  poly = 0xEDB88320L;
+  
+  printf("unigned long\ncrcTable[256] = {\n");
+  for (i=0; i<256; i++) {
+    crc = i;
+    for (j=8; j>0; j--) {
+      if (crc&1) {
+        crc = (crc >> 1) ^ poly;
+      } else {
+        crc >>= 1;
+      }
+    }
+    printf( "0x%lx,", crc);
+    if( (i&7) == 7 )
+      printf("\n" );
+    else
+      printf(" ");
+  }
+  printf("};\n");
+  return 0;
+}
diff --git a/soft/toolbox/jtag_atomic/libs/pm_to_blib b/soft/toolbox/jtag_atomic/libs/pm_to_blib
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/soft/toolbox/jtag_atomic/libs/t/.svn/entries b/soft/toolbox/jtag_atomic/libs/t/.svn/entries
new file mode 100644 (file)
index 0000000..f879053
--- /dev/null
@@ -0,0 +1,96 @@
+10
+
+dir
+135
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj/trb_maps_jtag3/ui/BN/t
+svn+ssh://svnuser@salt.x-matter.uni-frankfurt.de/jtag_proj
+
+
+
+2011-11-28T16:19:53.211492Z
+134
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+b00609d0-aec6-11df-b1c7-bba583a822eb
+\f
+testfile
+file
+
+
+
+
+2011-11-23T15:31:54.000000Z
+71028f53a3da56cde4154db3cddf8fcb
+2011-11-28T16:19:53.211492Z
+134
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+73
+\f
+crc.t
+file
+
+
+
+
+2011-11-23T15:31:54.000000Z
+4f253d4d9b1bb65c9fb32b015721f898
+2011-11-28T16:19:53.211492Z
+134
+bneumann
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1027
+\f
diff --git a/soft/toolbox/jtag_atomic/libs/t/.svn/text-base/crc.t.svn-base b/soft/toolbox/jtag_atomic/libs/t/.svn/text-base/crc.t.svn-base
new file mode 100644 (file)
index 0000000..ea98aba
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/local/bin/perl  -I./blib/arch -I./blib/lib
+
+require BN::CRC32;
+
+$string1 = "This is the test string";
+
+$l1 = length($string1);
+
+print "1..", $l1+4, "\n";
+
+print "\n1) Test the CRC of a string variable\n";
+$v1 = BN::CRC32::crc32($string1);
+print ($v1 == 1835534707 ? "ok 1\n" : "not ok 1\n");
+
+print "\n2) Test the CRC of a string\n";
+$v1 = BN::CRC32::crc32("This is another test string");
+print ($v1 == 2154698217 ? "ok 2\n" : "not ok 2\n");
+
+$i = 2;
+
+$l=$l1+3;
+print "\n3..$l) Test the CRC of various substrings (using crcinit)\n";
+for ($j = 0; $j <= $l1; $j++) {
+  $v1 = BN::CRC32::crc32(substr($string1, 0, $j));
+  $v1 = BN::CRC32::crc32(substr($string1, $j), $v1);
+  $i++;
+  print ($v1 == 1835534707 ? "ok $i\n" : "not ok $i\n");
+}
+
+$l=$l1+4;
+print "\n$l) Test the CRC of a file\n";
+$i++;
+open(TESTFILE,"testfile") || 
+  open(TESTFILE,"t/testfile") ||
+  open(TESTFILE," ../testfile") || die "No such file!\n";
+$v1 = BN::CRC32::crc32(*TESTFILE);
+close TESTFILE;
+print ($v1 == 1925609391 ? "ok $i\n" : "not ok $i\n");
diff --git a/soft/toolbox/jtag_atomic/libs/t/.svn/text-base/testfile.svn-base b/soft/toolbox/jtag_atomic/libs/t/.svn/text-base/testfile.svn-base
new file mode 100644 (file)
index 0000000..f460f27
--- /dev/null
@@ -0,0 +1,2 @@
+Do not alter this file!
+Changing this file will result in a failing test!
\ No newline at end of file
diff --git a/soft/toolbox/jtag_atomic/libs/t/crc.t b/soft/toolbox/jtag_atomic/libs/t/crc.t
new file mode 100644 (file)
index 0000000..ea98aba
--- /dev/null
@@ -0,0 +1,38 @@
+#!/usr/local/bin/perl  -I./blib/arch -I./blib/lib
+
+require BN::CRC32;
+
+$string1 = "This is the test string";
+
+$l1 = length($string1);
+
+print "1..", $l1+4, "\n";
+
+print "\n1) Test the CRC of a string variable\n";
+$v1 = BN::CRC32::crc32($string1);
+print ($v1 == 1835534707 ? "ok 1\n" : "not ok 1\n");
+
+print "\n2) Test the CRC of a string\n";
+$v1 = BN::CRC32::crc32("This is another test string");
+print ($v1 == 2154698217 ? "ok 2\n" : "not ok 2\n");
+
+$i = 2;
+
+$l=$l1+3;
+print "\n3..$l) Test the CRC of various substrings (using crcinit)\n";
+for ($j = 0; $j <= $l1; $j++) {
+  $v1 = BN::CRC32::crc32(substr($string1, 0, $j));
+  $v1 = BN::CRC32::crc32(substr($string1, $j), $v1);
+  $i++;
+  print ($v1 == 1835534707 ? "ok $i\n" : "not ok $i\n");
+}
+
+$l=$l1+4;
+print "\n$l) Test the CRC of a file\n";
+$i++;
+open(TESTFILE,"testfile") || 
+  open(TESTFILE,"t/testfile") ||
+  open(TESTFILE," ../testfile") || die "No such file!\n";
+$v1 = BN::CRC32::crc32(*TESTFILE);
+close TESTFILE;
+print ($v1 == 1925609391 ? "ok $i\n" : "not ok $i\n");
diff --git a/soft/toolbox/jtag_atomic/libs/t/testfile b/soft/toolbox/jtag_atomic/libs/t/testfile
new file mode 100644 (file)
index 0000000..f460f27
--- /dev/null
@@ -0,0 +1,2 @@
+Do not alter this file!
+Changing this file will result in a failing test!
\ No newline at end of file
diff --git a/soft/toolbox/jtag_atomic/libs/typemap b/soft/toolbox/jtag_atomic/libs/typemap
new file mode 100644 (file)
index 0000000..6781a31
--- /dev/null
@@ -0,0 +1,312 @@
+# $Header$ 
+# basic C types
+int                    T_IV
+unsigned               T_UV
+unsigned int           T_UV
+long                   T_IV
+unsigned long          T_UV
+short                  T_IV
+unsigned short         T_UV
+char                   T_CHAR
+unsigned char          T_U_CHAR
+char *                 T_PV
+unsigned char *                T_PV
+caddr_t                        T_PV
+wchar_t *              T_PV
+wchar_t                        T_IV
+bool_t                 T_IV
+size_t                 T_IV
+ssize_t                        T_IV
+time_t                 T_NV
+unsigned long *                T_OPAQUEPTR
+char **                        T_PACKED
+void *                 T_PTR
+Time_t *               T_PV
+SV *                   T_SV
+SVREF                  T_SVREF
+AV *                   T_AVREF
+HV *                   T_HVREF
+CV *                   T_CVREF
+
+IV                     T_IV
+I32                    T_IV
+I16                    T_IV
+I8                     T_IV
+U32                    T_U_LONG
+U16                    T_U_SHORT
+U8                     T_UV
+Result                 T_U_CHAR
+Boolean                        T_IV
+double                 T_DOUBLE
+SysRet                 T_SYSRET
+SysRetLong             T_SYSRET
+FILE *                 T_IN
+FileHandle             T_PTROBJ
+InputStream            T_IN
+InOutStream            T_INOUT
+OutputStream           T_OUT
+bool                   T_BOOL
+
+#############################################################################
+INPUT
+T_SV
+       $var = $arg
+T_SVREF
+       if (sv_isa($arg, \"${ntype}\"))
+           $var = (SV*)SvRV($arg);
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_AVREF
+       if (sv_isa($arg, \"${ntype}\"))
+           $var = (AV*)SvRV($arg);
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_HVREF
+       if (sv_isa($arg, \"${ntype}\"))
+           $var = (HV*)SvRV($arg);
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_CVREF
+       if (sv_isa($arg, \"${ntype}\"))
+           $var = (CV*)SvRV($arg);
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_SYSRET
+       $var NOT IMPLEMENTED
+T_UV
+       $var = ($type)SvUV($arg)
+T_IV
+       $var = ($type)SvIV($arg)
+T_INT
+       $var = (int)SvIV($arg)
+T_ENUM
+       $var = ($type)SvIV($arg)
+T_BOOL
+       $var = (int)SvIV($arg)
+T_U_INT
+       $var = (unsigned int)SvUV($arg)
+T_SHORT
+       $var = (short)SvIV($arg)
+T_U_SHORT
+       $var = (unsigned short)SvUV($arg)
+T_LONG
+       $var = (long)SvIV($arg)
+T_U_LONG
+       $var = (unsigned long)SvUV($arg)
+T_CHAR
+       $var = (char)*SvPV($arg,PL_na)
+T_U_CHAR
+       $var = (unsigned char)SvUV($arg)
+T_FLOAT
+       $var = (float)SvNV($arg)
+T_NV
+       $var = ($type)SvNV($arg)
+T_DOUBLE
+       $var = (double)SvNV($arg)
+T_PV
+       $var = ($type)SvPV($arg,PL_na)
+T_PTR
+       $var = ($type)SvIV($arg)
+T_PTRREF
+       if (SvROK($arg)) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+           $var = ($type) tmp;
+       }
+       else
+           croak(\"$var is not a reference\")
+T_REF_IV_REF
+       if (sv_isa($arg, \"${type}\")) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+           $var = *($type *) tmp;
+       }
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_REF_IV_PTR
+       if (sv_isa($arg, \"${type}\")) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+           $var = ($type) tmp;
+       }
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_PTROBJ
+       if (sv_derived_from($arg, \"${ntype}\")) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+           $var = ($type) tmp;
+       }
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_PTRDESC
+       if (sv_isa($arg, \"${ntype}\")) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+           ${type}_desc = (\U${type}_DESC\E*) tmp; 
+           $var = ${type}_desc->ptr;
+       }
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_REFREF
+       if (SvROK($arg)) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+           $var = *($type) tmp;
+       }
+       else
+           croak(\"$var is not a reference\")
+T_REFOBJ
+       if (sv_isa($arg, \"${ntype}\")) {
+           IV tmp = SvIV((SV*)SvRV($arg));
+           $var = *($type) tmp;
+       }
+       else
+           croak(\"$var is not of type ${ntype}\")
+T_OPAQUE
+       $var NOT IMPLEMENTED
+T_OPAQUEPTR
+       $var = ($type)SvPV($arg,PL_na)
+T_PACKED
+       $var = XS_unpack_$ntype($arg)
+T_PACKEDARRAY
+       $var = XS_unpack_$ntype($arg)
+T_CALLBACK
+       $var = make_perl_cb_$type($arg)
+T_ARRAY
+       $var = $ntype(items -= $argoff);
+       U32 ix_$var = $argoff;
+       while (items--) {
+           DO_ARRAY_ELEM;
+       }
+T_IN
+       $var = IoIFP(sv_2io($arg))
+T_INOUT
+       $var = IoIFP(sv_2io($arg))
+T_OUT
+       $var = IoOFP(sv_2io($arg))
+#############################################################################
+OUTPUT
+T_SV
+       $arg = $var;
+T_SVREF
+       $arg = newRV((SV*)$var);
+T_AVREF
+       $arg = newRV((SV*)$var);
+T_HVREF
+       $arg = newRV((SV*)$var);
+T_CVREF
+       $arg = newRV((SV*)$var);
+T_IV
+       sv_setiv($arg, (IV)$var);
+T_UV
+       sv_setuv($arg, (UV)$var);
+T_INT
+       sv_setiv($arg, (IV)$var);
+T_SYSRET
+       if ($var != -1) {
+           if ($var == 0)
+               sv_setpvn($arg, "0 but true", 10);
+           else
+               sv_setiv($arg, (IV)$var);
+       }
+T_ENUM
+       sv_setiv($arg, (IV)$var);
+T_BOOL
+       $arg = boolSV($var);
+T_U_INT
+       sv_setuv($arg, (UV)$var);
+T_SHORT
+       sv_setiv($arg, (IV)$var);
+T_U_SHORT
+       sv_setuv($arg, (UV)$var);
+T_LONG
+       sv_setiv($arg, (IV)$var);
+T_U_LONG
+       sv_setuv($arg, (UV)$var);
+T_CHAR
+       sv_setpvn($arg, (char *)&$var, 1);
+T_U_CHAR
+       sv_setuv($arg, (UV)$var);
+T_FLOAT
+       sv_setnv($arg, (double)$var);
+T_NV
+       sv_setnv($arg, (double)$var);
+T_DOUBLE
+       sv_setnv($arg, (double)$var);
+T_PV
+       sv_setpv((SV*)$arg, $var);
+T_PTR
+       sv_setiv($arg, (IV)$var);
+T_PTRREF
+       sv_setref_pv($arg, Nullch, (void*)$var);
+T_REF_IV_REF
+       sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
+T_REF_IV_PTR
+       sv_setref_pv($arg, \"${ntype}\", (void*)$var);
+T_PTROBJ
+       sv_setref_pv($arg, \"${ntype}\", (void*)$var);
+T_PTRDESC
+       sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
+T_REFREF
+       sv_setrefref($arg, \"${ntype}\", XS_service_$ntype,
+                   ($var ? (void*)new $ntype($var) : 0));
+T_REFOBJ
+       NOT IMPLEMENTED
+T_OPAQUE
+       sv_setpvn($arg, (char *)&$var, sizeof($var));
+T_OPAQUEPTR
+       sv_setpvn($arg, (char *)$var, sizeof(*$var)), XFree((char *)$var);
+T_PACKED
+       XS_pack_$ntype($arg, $var);
+T_PACKEDARRAY
+       XS_pack_$ntype($arg, $var, count_$ntype);
+T_DATAUNIT     
+       sv_setpvn($arg, $var.chp(), $var.size());
+T_CALLBACK
+       sv_setpvn($arg, $var.context.value().chp(),
+               $var.context.value().size());
+T_ARRAY
+       ST_EXTEND($var.size);
+       for (U32 ix_$var = 0; ix_$var < $var.size; ix_$var++) {
+               ST(ix_$var) = sv_newmortal();
+       DO_ARRAY_ELEM
+       }
+       SP += $var.size - 1;
+T_IN
+       {
+           GV *gv = newGVgen("$Package");
+           if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
+               sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+           else
+               $arg = &PL_sv_undef;
+       }
+T_INOUT
+       {
+           GV *gv = newGVgen("$Package");
+           if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
+               sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+           else
+               $arg = &PL_sv_undef;
+       }
+T_OUT
+       {
+           GV *gv = newGVgen("$Package");
+           if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
+               sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+           else
+               $arg = &PL_sv_undef;
+       }
+
+# SJP
+
+TYPEMAP
+pdl*   T_PDL
+pdl *  T_PDL
+Logical        T_IV
+float  T_NV
+
+INPUT
+
+T_PDL
+       $var = PDL->SvPDLV($arg)
+
+
+OUTPUT
+
+T_PDL
+       PDL->SetSV_PDL($arg,$var);
diff --git a/soft/toolbox/jtag_atomic/main_start.sh b/soft/toolbox/jtag_atomic/main_start.sh
new file mode 100755 (executable)
index 0000000..96c26cf
--- /dev/null
@@ -0,0 +1,10 @@
+./start.pl
+
+trbcmd w 0xc001 0xc0 0xaaa1aaa0
+trbcmd w 0xc001 0xc1 0xaaa3aaa2
+trbcmd w 0xc002 0xc0 0xaaa5aaa4
+trbcmd w 0xc002 0xc1 0xaaa7aaa6
+trbcmd w 0xfee1 0xc0 0xaaa9aaa8
+trbcmd w 0xfee1 0xc1 0xaaaaaaab
+trbcmd w 0xf013 0xc0 0x1
+
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/boards.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/boards.ini
new file mode 100644 (file)
index 0000000..fc2e68b
--- /dev/null
@@ -0,0 +1,21 @@
+[board01]
+chainsini=chains.ini
+FPGAboard_hostname=trb1577
+FPGAboard_staplfilename=jcb_trb_009.stapl
+FPGAboard_staplfilename_delay1=jcb_trb_008.stapl
+FPGAboard_addonortrb=trb
+FPGAtrbnetAddr=0xf013
+CONFperiod_trbnetAddr=0xc001
+CONFoffspillcounter_trbnetAddr=0xc002
+CONFwaitstart_trbnetAddr=0xc007
+CONFtriginitseq_trbnetAddr=0xc003
+CONFtrigmapsstart_trbnetAddr=0xc00b
+CONFtrigmapsreset_trbnetAddr=0xc00a
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+;gui_defaults is a comma-separated list of the following strings representing buttons in the gui:
+;'h_prog_fpga','h_start_trbnetd','h_period_0_15s','h_period_1s','h_period_10s', 'h_no_period'
+;be aware that h_prog_fpga doesn't wait until the optical link is up on the Trb
+gui_defaults=h_period_0_15s
+guiBM_NP_defaults=h_waitbeforestart_6us
+
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/bypass.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/bypass.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/chains.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/chains.ini
new file mode 100644 (file)
index 0000000..1a44926
--- /dev/null
@@ -0,0 +1,123 @@
+;WARNING this file is generated automatically. don't edit manually.
+
+[chain1]
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xb000
+CMDreg_trbnetAddr=0xb120
+RAMbase_trbnetAddr=0xb121
+DATAreg_trbnetAddr=0xb122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xb163
+STATUS2RAM3BtrbnetAddr=0xb170
+CONFsignals_trbnetAddr=0xc006
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=0
+DEBUGram1baddr=0xb147
+DEBUGram1bdata=0xb148
+DEBUGram1caddr=0xb149
+DEBUGram1cdata=0xb14a
+DEBUGram1crun=0xb14b
+;CONFperiod_trbnetAddr=0xc001
+;CONFoffspillcounter_trbnetAddr=0xc002
+;CONFwaitstart_trbnetAddr=0xc007
+FPGAboard_hostname=trb126
+;FPGAboard_staplfilename=jcb_trb_007.stapl
+FPGAboard_staplfilename=jcb_trb_009.stapl
+FPGAboard_staplfilename_delay1=jcb_trb_008.stapl
+FPGAboard_addonortrb=trb
+; gui_defaults1/gui_defaults2 is a comma separated list of the following strings representing buttons in the gui:
+;'h_man_maps_reset', 'h_delay0', 'h_delay1', 'h_delay2', 'h_delay3', 'h_prog_ram', 'h_set_timing_10mhz', 'h_set_timing_1mhz',
+;'h_start', 'h_stop', 'h_set_inout', 'h_maps_reset_on', 'h_maps_reset_off', 'h_maps_start_on', 'h_maps_start_off',
+;'h_maps_clk_on', 'h_maps_clk_off'
+; gui_defaults1: executed in this order, before board defaults
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
+
+;BEGIN GENERATE_CHAINORDER chain1
+JNR0_sensor4=sensor4.ini
+JNR1_sensor3=sensor3.ini
+JNR2_sensor2=sensor2.ini
+JNR3_sensor1=sensor1.ini
+;END GENERATE_CHAINORDER chain1
+
+[chain2]
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xd000
+CMDreg_trbnetAddr=0xd120
+RAMbase_trbnetAddr=0xd121
+DATAreg_trbnetAddr=0xd122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xd163
+STATUS2RAM3BtrbnetAddr=0xd170
+CONFsignals_trbnetAddr=0xc008
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=1
+DEBUGram1baddr=0xd147
+DEBUGram1bdata=0xd148
+DEBUGram1caddr=0xd149
+DEBUGram1cdata=0xd14a
+DEBUGram1crun=0xd14b
+;CONFperiod_trbnetAddr=0xc001
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
+
+;BEGIN GENERATE_CHAINORDER chain2
+JNR0_sensor8=sensor8.ini
+JNR1_sensor7=sensor7.ini
+JNR2_sensor6=sensor6.ini
+JNR3_sensor5=sensor5.ini
+;END GENERATE_CHAINORDER chain2
+
+[chain3]
+FPGAtrbnetAddr=0xf013
+RAMtrbnetAddr=0xe000
+CMDreg_trbnetAddr=0xe120
+RAMbase_trbnetAddr=0xe121
+DATAreg_trbnetAddr=0xe122
+STATUS2RAM3BBASEADDRREGtrbnetAddr=0xe163
+STATUS2RAM3BtrbnetAddr=0xe170
+CONFsignals_trbnetAddr=0xc009
+CONFresetafterfirstwrite_trbnetAddr=0xc011
+CONFresetbeforeinit_trbnetAddr=0xc010
+CONFtrigmapsstart_trbnetAddr=0xc00e
+CONFtrigmapsreset_trbnetAddr=0xc00d
+CONFtrigrunjtag_trbnetAddr=0xc00f
+CONFtrigwriteonce_trbnetAddr=0xc014
+CONFtriginitseq_trbnetAddr=0xc00c
+chainnr=2
+DEBUGram1baddr=0xe147
+DEBUGram1bdata=0xe148
+DEBUGram1caddr=0xe149
+DEBUGram1cdata=0xe14a
+DEBUGram1crun=0xe14b
+;CONFperiod_trbnetAddr=0xc001
+gui_defaults1=h_stop,h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_on
+; gui_defaults2: executed in this order, after board defaults
+gui_defaults2=h_start
+guiBM_NP_defaults1=h_delay1,h_prog_ram,h_set_timing_10mhz,h_set_inout,h_maps_reset_before_off,h_maps_reset_after_on
+guiBM_NP_defaults2=""
+
+
+;BEGIN GENERATE_CHAINORDER chain3
+JNR0_sensor12=sensor12.ini
+JNR1_sensor10=sensor10.ini
+JNR2_sensor9=sensor9.ini
+;END GENERATE_CHAINORDER chain3
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/lastprog.txt b/soft/toolbox/jtag_atomic/onereg_writeonce/lastprog.txt
new file mode 100644 (file)
index 0000000..48f6620
--- /dev/null
@@ -0,0 +1 @@
+/tmp/jtag_initmem/20121123184503
\ No newline at end of file
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor1.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor1.ini
new file mode 100644 (file)
index 0000000..82e9a55
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064C1CB8BAB32648020280A0A0A0A64
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor10.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor10.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor12.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor12.ini
new file mode 100644 (file)
index 0000000..afd9bd0
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064C8CCB9D632648020280A0A0A0A64
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor2.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor2.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor3.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor3.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor4.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor4.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor5.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor5.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor6.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor6.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor7.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor7.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor8.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor8.ini
new file mode 100644 (file)
index 0000000..1444705
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064AE82BCF732648020280A0A0A0A64
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/sensor9.ini b/soft/toolbox/jtag_atomic/onereg_writeonce/sensor9.ini
new file mode 100644 (file)
index 0000000..9872cb6
--- /dev/null
@@ -0,0 +1,5 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=1F,1,00000000
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/ui.pl b/soft/toolbox/jtag_atomic/onereg_writeonce/ui.pl
new file mode 100755 (executable)
index 0000000..e09e959
--- /dev/null
@@ -0,0 +1,736 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX qw(strftime);
+use FileHandle;
+use Getopt::Long;
+use Sys::Syslog;
+
+$ENV{DAQOPSERVER}='trb124';
+
+my $opt_help;
+my $opt_chain;
+my $opt_board;
+my $opt_operation;
+my $opt_addr;
+my $opt_quiet;
+my %chain_defaults = (); #('h_stop', 'h_delay0', 'h_prog_ram', 'h_set_timing_10mhz',,'h_set_inout');
+my %board_defaults = (); #('h_period_0_15s');
+my %chain_defaults2 = (); #('h_start');
+openlog("atomic,ui.pl", "perror", "local1");
+
+GetOptions ('h|help'      => \$opt_help,
+            'b|board=s'   => \$opt_board,
+            'c|chain=s'   => \$opt_chain,
+            'o|operation=s' => \$opt_operation,
+            'a|addr=s' => \$opt_addr,
+            'q|quiet' => \$opt_quiet
+                            );
+if($opt_help or not defined $opt_board) {
+    &help();
+    exit(0);
+}
+
+
+
+sub help(){
+    syslog("debug", "showing usage information.");
+    print "Usage: ui.pl [-c <chain name> ] [-o <Operation>] [-a <address>]
+   
+required:
+   [-c|--chain  <JTAG chain name>]             : Select the JTAG chain (controller) whose RAM should be written.
+   [-b|--board  <JTAG board name>]             : Select the JTAG/MAIN board for setting signals. (use board01)
+   [-o|--operation  <handle name from gui.pl without h_>]             : Select operation (on the selected JTAG chain).
+   [-a|--addr  <address for operation>]             : read_ram1b_word needs address
+   [-q|--quiet  ]             : suppress informative output
+    
+board operations (no chain parameter given):
+    prog_fpga :             program FPGA on trb
+    start_trbnetd:          start trbnet daemon on trb
+    waitbeforestart_6us:    set wait before start time to 6 us
+    waitbeforestart_1ms:    set wait before start time to 1 ms
+    waitbeforestart_1s:     set wait before start time to 1 s
+    trigger_init_sequence:  trigger initialization sequence for all chains, 
+                            3xWRITE+1xREAD DEV ID, reset as configured
+    maps_reset:             generate RESET pulse, all chains
+    run_jtag:               Run 3xWRITE Registers+ 1xRead DEV ID, no reset, all chains
+    write_once:             Once write all registers all chains
+    maps_start:             generate START pulse, all chains
+
+chain operations (with -c parameter)
+    man_maps_reset:         software generated reset pulse
+    delay0:                 set delay 0 JTAG Clock cycles
+    delay1:                 set delay 1 JTAG Clock cycles
+    delay2:                 set delay 2 JTAG Clock cycles
+    delay3:                 set delay 3 JTAG Clock cycles
+    prog_ram:               Write from sensor*.ini to RAM with JTAG registers on FPGA
+    set_timing_10mhz:       Set 10 MHz TCK
+    set_timing_1mhz:        Set 1 MHz TCK
+    set_timing_100khz:      Set 100 kHz TCK
+    set_inout:              Initialize I/O pin settings (signals_invert)
+    maps_reset_before_on:   set reset before first WRITE on trig_init_seq/trigger_init_sequence
+    maps_reset_before_off:  set reset before ... off
+    maps_reset_after_on:    set reset after  ... on
+    maps_reset_after_off:   set reset after  ... off
+    maps_clk_on:            activate MAPS CLK (80MHz) immediately 
+    maps_clk_off:           deactivate MAPS CLK (80MHz) immediately 
+    trig_init_seq:          trigger initialization sequence
+    maps_reset:             generate RESET pulse 
+    run_jtag:               run JTAG (see board operation) this chain
+    write_once:             write once all registers
+    maps_start:             generate START pulse
+    read_ram1b_word:        read 32 bit word at address given with -a option from ram1b CONNECTION REMOVED
+    read_ram1c_word:        read 32 bit word at address given with -a option from ram1c
+    copy_ram1b1c:           trigger copy of ram1b to ram1c
+
+       
+";
+
+
+}
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+sub report {
+  if(defined($opt_quiet)){
+    if($_[0] eq 'data') { print $_[1]; }
+  }
+  else {
+    print $_[1];
+  }
+}
+sub reportd {
+  if(!defined($opt_quiet)){
+    print "debug:" . $_[0];
+  }
+}
+sub init_msg {
+  if(!defined($opt_quiet)){
+    print $_[0];
+  }
+}
+sub execute_shell_command {
+        # input args: $command, $expected_output         #, $success_string, $sending_button
+
+        my $success = 0;        
+        my $command = $_[0];
+        my $expected = $_[1];
+        my $output = "";
+        #my $success_string = $_[1];
+        #my $sending_button = $_[2];
+
+        #my $message= $sending_button->get_label;
+        #reportd ( 'report_general', "attempting to $message");
+        report( 'report_detailed' , "\nexec $command\n\n");
+        if(not open ( SHELL , "$command 2>&1 |" )) {
+          report( 'report_general' , "failed to execute command.");
+          syslog("ERR", "command failed.");
+        }
+
+        while ( <SHELL> ) {
+                report( 'report_detailed' , $_);
+                $output.=$_;
+#                 if ( $_ =~ m/$success_string/ ) {
+#                         report( 'report_general' , " ...success!\n" );
+#                         my $success = 1;
+#                 }
+        }
+#         if ($success == 0) {
+#                 report( 'report_general', " ...unclear\n");
+#         }
+        if(!($output eq $expected)) {
+          report('report_general', "unexpected output: ".$output."\n");
+          syslog("ERR", "unexpected output: $output.");
+        }
+        report( 'report_detailed' , "\n----------------------------\n");
+}
+
+
+sub execute_shell_command_return {
+        my $command = $_[0];
+        report( 'report_detailed' , "\nexec $command\n\n");
+        my $result = `$command 2>&1`;
+        report( 'report_detailed' , $result);
+        report( 'report_detailed' , "\n----------------------------\n");
+        if($? != 0) {
+          report('report_general', "command failed. output: $result");
+          syslog('ERR', "command failed. output: $result.");
+        }
+        return $result;
+}
+
+
+sub generate_h_read_ram1b_word {
+  my ($chain, $fpga_addr, $debug_ram1baddr, $debug_ram1bdata, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $debug_ram1baddr $addr", "");
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $debug_ram1bdata");
+    report('report_general', "regval: ". substr($regval, 8, 10). "\n");
+    report('data', substr($regval, 8, 10));
+  }
+}
+sub generate_h_read_ram1c_word {
+  my ($chain, $fpga_addr, $debug_ram1caddr, $debug_ram1cdata, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $debug_ram1caddr $addr", "");
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $debug_ram1cdata");
+    report('report_general', "regval: ". substr($regval, 8, 10). "\n");
+    report('data', substr($regval, 8, 10));
+  }
+}
+
+
+sub generate_h_copy_ram1b1c {
+  my ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $data_reg_addr 0x00000008", ""); # unconditional trigger
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000064", ""); # M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER
+  }
+}
+
+
+sub generate_h_man_maps_reset {
+  my ($chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "manual reset chain " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $resetnormal = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $resetinv = int_to_32bit_hex((~(1<<10)) & hex($resetnormal));
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$resetinv 2>&1 && sleep 1 && trbcmd w $fpga_addr $conf_signals_addr $resetnormal 2>&1", "");
+  }
+}
+
+sub generate_h_maps_start_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "generate MAPS start $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<9)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<9)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_maps_reset_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("MAPS reset signal $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<11)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<11)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval", "");
+  }
+}
+sub generate_h_maps_clk_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("generate MAPS clk $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<13)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<13)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_prog_ram {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $ram_base_addr, $ram_addr, $numsensors, $memfilenames_ref) = @_;
+  my @memfilenames = @{$memfilenames_ref};
+  return sub {
+    init_msg("program RAM $chain.");
+    my $numchips_hex = int_to_32bit_hex($numsensors);
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A", ""); # CMD_STOP
+    execute_shell_command("trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex", ""); # ADDR_CONTROL_DATA_REGISTER
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000033", "");      # COMMAND: M26C_CMD_SET_NUMCHIPS_CONFIGURED
+    for(my $i=0;$i<scalar @memfilenames;$i++) {
+  
+      # write RAM base pointer
+      my $ihex = int_to_32bit_hex($i);
+      reportd "set RAM base pointer: \n";
+      execute_shell_command("trbcmd w $fpga_addr $ram_base_addr 0x$ihex", "");
+      # write to configuration RAM
+      reportd "write max. 256 32-bit-words: \n";
+      execute_shell_command("trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]", "");
+    }
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000009", ""); # CMD_START
+  }
+}
+
+sub generate_h_set_timing_10mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 10 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x0000000A  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000003  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000008  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000009  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    #reportd $cmdline;
+    #system($cmdline);
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_1mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 1 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x00000064  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000031  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000062  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000063  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_100khz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 100 kHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x000003E8  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x000001CC  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000003C0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x000003E7  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+
+
+sub generate_h_delay {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $delay) =  @_;
+  return sub {
+    init_msg("Delay $delay $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $data_reg_addr 0x".int_to_32bit_hex($delay)."  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000067  2>&1 # COMMAND: M26C_CMD_SET_DELAY_EXPECTED_VALUES";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_waitbeforestart_6us { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 6us.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00000200", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+sub generate_h_waitbeforestart_1ms { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1ms.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00013880", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_waitbeforestart_1s { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1s.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x04C4B400", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_maps_reset {
+  my ($onoroff, $chain, $chainnr, $fpga_addr, $conf_resets_addr) = @_;
+  return sub {
+    init_msg("initseq setting: MAPS reset addr $conf_resets_addr $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_resets_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+            #off
+      $newval = int_to_32bit_hex((~(1<<$chainnr)) & hex($before));
+    }
+    else {
+            #on
+      $newval = int_to_32bit_hex(((1<<$chainnr)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_resets_addr 0x$newval", "");
+  }
+}
+
+
+sub generate_h_trig {
+  my ($board, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr  " . $board);
+    # hack: for runjtag trigger single trigger address is used, otherwise setting LSB would be sufficient
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0xFFFFFFFF", "");
+  }
+}
+sub generate_h_chain_trig {
+  my ($chain, $chainnr, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr chainnr:$chainnr " . $chain);
+    # set bit in trigger register correspondig to chain-# $chainnr
+    my $newval;
+    $newval = int_to_32bit_hex(((1<<$chainnr)));
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0x$newval", "");
+  }
+}
+
+
+
+sub generate_h_trigger_init_sequence {
+  my($board, $fpga_addr, $conf_fet_trigger_addr, $conf_period_addr) = @_;
+  return sub {
+  init_msg("Send Trigger $board.");
+    if(!defined($conf_fet_trigger_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # generate trigger 
+    execute_shell_command("trbcmd w $fpga_addr $conf_fet_trigger_addr 0x00000001", ""); # generate fet_trigger via trbnet
+  }
+}
+
+
+sub generate_h_set_inout {
+  my($chain, $fpga_addr, $conf_signals_addr) =  @_;
+  return sub {
+    init_msg("Set IN/OUT $chain.");
+    if(!defined($conf_signals_addr)){
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x000002EAA", "");# outputs/inputs not inverted, but activated, RESET activated and inverted (high)
+  }
+}
+
+sub generate_h_prog_fpga {
+  my($board, $trbhostname, $addonortrb, $staplfilename) =  @_;
+  return sub {
+    init_msg("Prog FPGA $board.");
+    if(!defined($trbhostname)||!defined($addonortrb)||!defined($staplfilename)){
+      report('report_general', "Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"jam_trbv2_ao --$addonortrb -aRUN_XILINX_PROC /home/hadaq/bneumann/$staplfilename\"", 
+    "------------- Connection accepted -------------
+> return value of command: 0
+> stdout: 
+Successful File Execution.
+------------- END OF OUTPUT ------------
+");
+  }
+}
+sub generate_h_prog_ram_external {
+  my ($chain) = @_;
+  return sub {
+    my $output = execute_shell_command_return("./ui_writeram.pl -c $chain");
+    #reportd $output;
+  }
+}
+  
+
+sub generate_h_start_trbnetd {
+  my($board, $trbhostname) =  @_;
+  return sub {
+    init_msg("Start trbnetd $board.");
+    if(!defined($trbhostname)){
+      report('report_general',"Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"trbnetd\"","------------- Connection accepted -------------
+> return value of command: 0
+------------- END OF OUTPUT ------------
+");
+  }
+}
+
+# sub generate_h_set_standard {
+#   my %boards_handlers = %{$_[0]};
+#   my %chains_handlers = %{$_[1]};
+#   return sub {
+#     foreach my $board (reverse sort keys %chains_handlers) {
+#       my %chains_handlers2 = %{$chains_handlers{$board}};
+#       foreach my $chain (reverse sort keys %chains_handlers2) {
+#         my %chain_handlers = %{$chains_handlers2{$chain}};
+#         foreach my $handler_name (@{$chain_defaults{$board}{$chain}}) {
+#        &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+#         }
+#       }
+#     }
+#     foreach my $board (reverse sort keys %boards_handlers) {
+#       my %board_handlers = %{$boards_handlers{$board}};
+#       foreach my $handler_name (@{$board_defaults{$board}}) {
+#         &{$board_handlers{$handler_name}}; # run subroutine saved in hash
+#       }
+#     }
+#     foreach my $board (reverse sort keys %chains_handlers) {
+#       my %chains_handlers2 = %{$chains_handlers{$board}};
+#       foreach my $chain (reverse sort keys %chains_handlers2) {
+#         my %chain_handlers = %{$chains_handlers2{$chain}};
+#         foreach my $handler_name (@{$chain_defaults2{$board}{$chain}}) {
+#        &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+#         }
+#       }
+#     }
+#   }
+# }
+
+my $boardsfile= 'boards.ini';
+my $boardsSettings = new Config::Abstract::Ini($boardsfile);  
+my %allboards = $boardsSettings->get_all_settings;
+foreach my $board (keys %allboards) {
+  my %settings=%{$allboards{$board}};
+  my $chainsini = $settings{'chainsini'};
+  my $trbhostname = $settings{'FPGAboard_hostname'};
+  my $addonortrb = $settings{'FPGAboard_addonortrb'};
+  my $staplfilename = $settings{'FPGAboard_staplfilename'};
+  my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+  my $conf_period_addr = $settings{'CONFperiod_trbnetAddr'};
+  my $conf_offspillcounter_addr = $settings{'CONFoffspillcounter_trbnetAddr'};
+  my $conf_waitstart_addr = $settings{'CONFwaitstart_trbnetAddr'};
+  my $conf_triginitseq_addr = $settings{'CONFtriginitseq_trbnetAddr'};
+  my $conf_trigmapsreset_addr = $settings{'CONFtrigmapsreset_trbnetAddr'};
+  my $conf_trigrunjtag_addr = $settings{'CONFtrigrunjtag_trbnetAddr'};
+  my $conf_trigwriteonce_addr = $settings{'CONFtrigwriteonce_trbnetAddr'};
+  my $conf_trigmapsstart_addr = $settings{'CONFtrigmapsstart_trbnetAddr'};
+
+
+  if(defined($opt_board) and not defined($opt_chain)) {
+    # assume board command
+    my $subr;
+    if(("h_".$opt_operation) eq 'h_prog_fpga') {
+      $subr = generate_h_prog_fpga($board, $trbhostname, $addonortrb, $staplfilename)
+    }
+    elsif(("h_".$opt_operation) eq 'h_start_trbnetd'){
+      $subr =  generate_h_start_trbnetd($board, $trbhostname);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_6us' ) {
+      $subr =  generate_h_waitbeforestart_6us($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_1ms' ) {
+      $subr =  generate_h_waitbeforestart_1ms($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_1s' ) {
+      $subr =  generate_h_waitbeforestart_1s($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_trigger_init_sequence' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_triginitseq_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_maps_reset' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigmapsreset_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_run_jtag' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigrunjtag_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_write_once' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigwriteonce_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_maps_start' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigmapsstart_addr);
+    }
+    if(!defined($opt_quiet)){ print "Starting Board Operation.\n"; }
+    &{$subr}();
+    exit(0);
+  }
+    
+    
+  my $chainsSettings = new Config::Abstract::Ini($chainsini);
+  my %allchains = $chainsSettings->get_all_settings;
+  if(!defined($allchains{$opt_chain})) { die ("Chain $opt_chain not found.");}
+#  foreach my $chain (reverse sort keys %allchains) {
+    my $chain = $opt_chain;
+    my %chain_settings=%{$allchains{$chain}};
+    my $chain_fpga_addr = $chain_settings{'FPGAtrbnetAddr'};
+    my $ram_addr  = $chain_settings{'RAMtrbnetAddr'};
+    my $cmd_reg_addr = $chain_settings{'CMDreg_trbnetAddr'};
+    my $ram_base_addr  = $chain_settings{'RAMbase_trbnetAddr'};
+    my $data_reg_addr = $chain_settings{'DATAreg_trbnetAddr'};
+    my $conf_signals_addr = $chain_settings{'CONFsignals_trbnetAddr'};
+    my $conf_resetafterfirstwrite_addr = $chain_settings{'CONFresetafterfirstwrite_trbnetAddr'};
+    my $conf_resetbeforeinit_addr = $chain_settings{'CONFresetbeforeinit_trbnetAddr'};
+    my $conf_chain_triginitseq_addr = $chain_settings{'CONFtriginitseq_trbnetAddr'};
+    my $conf_chain_trigmapsreset_addr = $chain_settings{'CONFtrigmapsreset_trbnetAddr'};
+    my $conf_chain_trigrunjtag_addr = $chain_settings{'CONFtrigrunjtag_trbnetAddr'};
+    my $conf_chain_trigwriteonce_addr = $chain_settings{'CONFtrigwriteonce_trbnetAddr'};
+    my $conf_chain_trigmapsstart_addr = $chain_settings{'CONFtrigmapsstart_trbnetAddr'};  
+    my $debug_chain_ram1baddr_addr = $chain_settings{'DEBUGram1baddr'};  
+    my $debug_chain_ram1bdata_addr = $chain_settings{'DEBUGram1bdata'};  
+    my $debug_chain_ram1caddr_addr = $chain_settings{'DEBUGram1caddr'};  
+    my $debug_chain_ram1cdata_addr = $chain_settings{'DEBUGram1cdata'};  
+    my $chainnr = $chain_settings{'chainnr'};
+    my $subr;
+    if(("h_".$opt_operation) eq  'h_man_maps_reset') {
+      $subr = generate_h_man_maps_reset($chain, $chain_fpga_addr, $conf_signals_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_delay0' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 0);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay1' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 1);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay2' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 2);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay3' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 3);
+    }
+    elsif(("h_".$opt_operation) eq 'h_prog_ram' ) {
+      $subr =  generate_h_prog_ram_external($chain);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_10mhz' ) {
+      $subr =  generate_h_set_timing_10mhz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_1mhz' ) {
+      $subr =  generate_h_set_timing_1mhz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_100khz' ) {
+      $subr =  generate_h_set_timing_100khz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_inout' ) {
+      $subr =  generate_h_set_inout($chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_before_on' ) {
+      $subr =  generate_h_maps_reset(1,$chain, $chainnr, $chain_fpga_addr, $conf_resetbeforeinit_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_before_off' ) {
+      $subr =  generate_h_maps_reset(0,$chain, $chainnr, $chain_fpga_addr, $conf_resetbeforeinit_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_after_on' ) {
+      $subr =  generate_h_maps_reset(1,$chain, $chainnr, $chain_fpga_addr, $conf_resetafterfirstwrite_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_after_off' ) {
+      $subr =  generate_h_maps_reset(0,$chain, $chainnr, $chain_fpga_addr, $conf_resetafterfirstwrite_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_maps_clk_on' ) {
+      $subr =  generate_h_maps_clk_signal(1,$chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_clk_off' ) {
+      $subr =  generate_h_maps_clk_signal(0,$chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_trig_init_seq' ) {
+      $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_triginitseq_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_maps_reset' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigmapsreset_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_run_jtag' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigrunjtag_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_write_once' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigwriteonce_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_maps_start' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigmapsstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_read_ram1b_word' ) {
+        $subr =  generate_h_read_ram1b_word($chain, $chain_fpga_addr, $debug_chain_ram1baddr_addr, $debug_chain_ram1bdata_addr, $opt_addr);
+    }    
+    elsif(("h_".$opt_operation) eq  'h_read_ram1c_word' ) {
+        $subr =  generate_h_read_ram1c_word($chain, $chain_fpga_addr, $debug_chain_ram1caddr_addr, $debug_chain_ram1cdata_addr, $opt_addr);
+    }    
+    elsif(("h_".$opt_operation) eq  'h_copy_ram1b1c' ) {
+        $subr =  generate_h_copy_ram1b1c($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr);
+    }
+    
+    if(!defined($opt_quiet)){ print "Starting Chain Operation.\n"; }
+    &{$subr}();    
+  
+}
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/ui.pl_old b/soft/toolbox/jtag_atomic/onereg_writeonce/ui.pl_old
new file mode 100755 (executable)
index 0000000..948b2eb
--- /dev/null
@@ -0,0 +1,679 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX qw(strftime);
+use FileHandle;
+use Getopt::Long;
+
+my $opt_help;
+my $opt_chain;
+my $opt_board;
+my $opt_operation;
+my $opt_addr;
+my $opt_quiet;
+GetOptions ('h|help'      => \$opt_help,
+            'b|board=s'   => \$opt_board,
+            'c|chain=s'   => \$opt_chain,
+            'o|operation=s' => \$opt_operation,
+            'a|addr=s' => \$opt_addr,
+            'q|quiet' => \$opt_quiet
+                            );
+if($opt_help) {
+    &help();
+    exit(0);
+}
+
+
+
+sub help(){
+    print "Usage: ui.pl [-c <chain name> ] [-o <Operation>] [-a <address>]
+   
+required:
+   [-c|--chain  <JTAG chain name>]             : Select the JTAG chain (controller) whose RAM should be written.
+   [-b|--board  <JTAG board name>]             : Select the JTAG/MAIN board for setting signals.
+   [-o|--operation  <handle name from gui.pl without h_>]             : Select operation (on the selected JTAG chain).
+   [-a|--addr  <address for operation>]             : read_ram1b_word needs address
+   [-q|--quiet  ]             : suppress informative output
+
+"
+}
+
+#print "operation:".$opt_operation."\n";
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+sub report {
+  if(defined($opt_quiet)){
+    if($_[0] eq 'data') { print $_[1]; }
+  }
+  else {
+    print $_[1];
+  }
+}
+sub reportd {
+  if(!defined($opt_quiet)){
+    print "debug:" . $_[0];
+  }
+}
+sub init_msg {
+  if(!defined($opt_quiet)){
+    print $_[0];
+  }
+}
+sub execute_shell_command {
+        # input args: $command, $expected_output         #, $success_string, $sending_button
+
+        my $success = 0;        
+        my $command = $_[0];
+        my $expected = $_[1];
+        my $output = "";
+        #my $success_string = $_[1];
+        #my $sending_button = $_[2];
+
+        #my $message= $sending_button->get_label;
+        #reportd ( 'report_general', "attempting to $message");
+        report( 'report_detailed' , "\nexec $command\n\n");
+        open ( SHELL , "$command 2>&1 |" ) || report( 'report_general' , "failed to execute command.");
+
+        while ( <SHELL> ) {
+                report( 'report_detailed' , $_);
+                $output.=$_;
+#                 if ( $_ =~ m/$success_string/ ) {
+#                         report( 'report_general' , " ...success!\n" );
+#                         my $success = 1;
+#                 }
+        }
+#         if ($success == 0) {
+#                 report( 'report_general', " ...unclear\n");
+#         }
+        if(!($output eq $expected)) {
+          report('report_general', "unexpected output: ".$output."\n");
+        }
+        report( 'report_detailed' , "\n----------------------------\n");
+}
+
+
+sub execute_shell_command_return {
+        my $command = $_[0];
+        report( 'report_detailed' , "\nexec $command\n\n");
+        my $result = `$command 2>&1`;
+        report( 'report_detailed' , $result);
+        report( 'report_detailed' , "\n----------------------------\n");
+        if($? != 0) {report('report_general', "command failed. output: $result");}
+        return $result;
+}
+
+
+sub generate_h_read_ram1b_word {
+  my ($chain, $fpga_addr, $debug_ram1baddr, $debug_ram1bdata, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $debug_ram1baddr $addr", "");
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $debug_ram1bdata");
+    report('report_general', "regval: ". substr($regval, 8, 10). "\n");
+    report('data', substr($regval, 8, 10));
+  }
+}
+sub generate_h_read_ram1c_word {
+  my ($chain, $fpga_addr, $debug_ram1caddr, $debug_ram1cdata, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $debug_ram1caddr $addr", "");
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $debug_ram1cdata");
+    report('report_general', "regval: ". substr($regval, 8, 10). "\n");
+    report('data', substr($regval, 8, 10));
+  }
+}
+
+
+sub generate_h_copy_ram1b1c {
+  my ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $data_reg_addr 0x00000008", ""); # unconditional trigger
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000064", ""); # M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER
+  }
+}
+
+
+sub generate_h_man_maps_reset {
+  my ($chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "manual reset chain " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $resetnormal = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $resetinv = int_to_32bit_hex((~(1<<10)) & hex($resetnormal));
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$resetinv 2>&1 && sleep 1 && trbcmd w $fpga_addr $conf_signals_addr $resetnormal 2>&1", "");
+  }
+}
+
+sub generate_h_maps_start_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "generate MAPS start $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<9)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<9)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_maps_reset_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("MAPS reset signal $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<11)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<11)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval", "");
+  }
+}
+sub generate_h_maps_clk_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("generate MAPS clk $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<13)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<13)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_prog_ram {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $ram_base_addr, $ram_addr, $numsensors, $memfilenames_ref) = @_;
+  my @memfilenames = @{$memfilenames_ref};
+  return sub {
+    init_msg("program RAM $chain.");
+    my $numchips_hex = int_to_32bit_hex($numsensors);
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A", ""); # CMD_STOP
+    execute_shell_command("trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex", ""); # ADDR_CONTROL_DATA_REGISTER
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000033", "");      # COMMAND: M26C_CMD_SET_NUMCHIPS_CONFIGURED
+    for(my $i=0;$i<scalar @memfilenames;$i++) {
+  
+      # write RAM base pointer
+      my $ihex = int_to_32bit_hex($i);
+      reportd "set RAM base pointer: \n";
+      execute_shell_command("trbcmd w $fpga_addr $ram_base_addr 0x$ihex", "");
+      # write to configuration RAM
+      reportd "write max. 256 32-bit-words: \n";
+      execute_shell_command("trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]", "");
+    }
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000009", ""); # CMD_START
+  }
+}
+
+sub generate_h_set_timing_10mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 10 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x0000000A  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000003  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000008  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000009  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    #reportd $cmdline;
+    #system($cmdline);
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_1mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 1 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x00000064  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000031  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000062  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000063  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_100khz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 100 kHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x000003E8  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x000001CC  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000003C0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x000003E7  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+
+
+sub generate_h_delay {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $delay) =  @_;
+  return sub {
+    init_msg("Delay $delay $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $data_reg_addr 0x".int_to_32bit_hex($delay)."  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000067  2>&1 # COMMAND: M26C_CMD_SET_DELAY_EXPECTED_VALUES";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_waitbeforestart_6us { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 6us.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00000200", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+sub generate_h_waitbeforestart_1ms { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1ms.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00013880", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_waitbeforestart_1s { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1s.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x04C4B400", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_maps_reset {
+  my ($onoroff, $chain, $chainnr, $fpga_addr, $conf_resets_addr) = @_;
+  return sub {
+    init_msg("initseq setting: MAPS reset addr $conf_resets_addr $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_resets_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+            #off
+      $newval = int_to_32bit_hex((~(1<<$chainnr)) & hex($before));
+    }
+    else {
+            #on
+      $newval = int_to_32bit_hex(((1<<$chainnr)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_resets_addr 0x$newval", "");
+  }
+}
+
+
+sub generate_h_trig {
+  my ($board, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr  " . $board);
+    # hack: for runjtag trigger single trigger address is used, otherwise setting LSB would be sufficient
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0xFFFFFFFF", "");
+  }
+}
+sub generate_h_chain_trig {
+  my ($chain, $chainnr, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr chainnr:$chainnr " . $chain);
+    # set bit in trigger register correspondig to chain-# $chainnr
+    my $newval;
+    $newval = int_to_32bit_hex(((1<<$chainnr)));
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0x$newval", "");
+  }
+}
+
+
+
+sub generate_h_trigger_init_sequence {
+  my($board, $fpga_addr, $conf_fet_trigger_addr, $conf_period_addr) = @_;
+  return sub {
+  init_msg("Send Trigger $board.");
+    if(!defined($conf_fet_trigger_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # generate trigger 
+    execute_shell_command("trbcmd w $fpga_addr $conf_fet_trigger_addr 0x00000001", ""); # generate fet_trigger via trbnet
+  }
+}
+
+
+sub generate_h_set_inout {
+  my($chain, $fpga_addr, $conf_signals_addr) =  @_;
+  return sub {
+    init_msg("Set IN/OUT $chain.");
+    if(!defined($conf_signals_addr)){
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x000002EAA", "");# outputs/inputs not inverted, but activated, RESET activated and inverted (high)
+  }
+}
+
+sub generate_h_prog_fpga {
+  my($board, $trbhostname, $addonortrb, $staplfilename) =  @_;
+  return sub {
+    init_msg("Prog FPGA $board.");
+    if(!defined($trbhostname)||!defined($addonortrb)||!defined($staplfilename)){
+      report('report_general', "Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"jam_trbv2_ao --$addonortrb -aRUN_XILINX_PROC /home/hadaq/bneumann/$staplfilename\"", 
+    "------------- Connection accepted -------------
+> return value of command: 0
+> stdout: 
+Successful File Execution.
+------------- END OF OUTPUT ------------
+");
+  }
+}
+sub generate_h_prog_ram_external {
+  my ($chain) = @_;
+  return sub {
+    my $output = execute_shell_command_return("./ui_writeram.pl -c $chain");
+    reportd $output;
+  }
+}
+  
+
+sub generate_h_start_trbnetd {
+  my($board, $trbhostname) =  @_;
+  return sub {
+    init_msg("Start trbnetd $board.");
+    if(!defined($trbhostname)){
+      report('report_general',"Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"trbnetd\"","------------- Connection accepted -------------
+> return value of command: 0
+------------- END OF OUTPUT ------------
+");
+  }
+}
+
+# sub generate_h_set_standard {
+#   my %boards_handlers = %{$_[0]};
+#   my %chains_handlers = %{$_[1]};
+#   return sub {
+#     foreach my $board (reverse sort keys %chains_handlers) {
+#       my %chains_handlers2 = %{$chains_handlers{$board}};
+#       foreach my $chain (reverse sort keys %chains_handlers2) {
+#         my %chain_handlers = %{$chains_handlers2{$chain}};
+#         foreach my $handler_name (@{$chain_defaults{$board}{$chain}}) {
+#        &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+#         }
+#       }
+#     }
+#     foreach my $board (reverse sort keys %boards_handlers) {
+#       my %board_handlers = %{$boards_handlers{$board}};
+#       foreach my $handler_name (@{$board_defaults{$board}}) {
+#         &{$board_handlers{$handler_name}}; # run subroutine saved in hash
+#       }
+#     }
+#     foreach my $board (reverse sort keys %chains_handlers) {
+#       my %chains_handlers2 = %{$chains_handlers{$board}};
+#       foreach my $chain (reverse sort keys %chains_handlers2) {
+#         my %chain_handlers = %{$chains_handlers2{$chain}};
+#         foreach my $handler_name (@{$chain_defaults2{$board}{$chain}}) {
+#        &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+#         }
+#       }
+#     }
+#   }
+# }
+
+my $boardsfile= 'boards.ini';
+my $boardsSettings = new Config::Abstract::Ini($boardsfile);  
+my %allboards = $boardsSettings->get_all_settings;
+foreach my $board (keys %allboards) {
+  my %settings=%{$allboards{$board}};
+  my $chainsini = $settings{'chainsini'};
+  my $trbhostname = $settings{'FPGAboard_hostname'};
+  my $addonortrb = $settings{'FPGAboard_addonortrb'};
+  my $staplfilename = $settings{'FPGAboard_staplfilename'};
+  my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+  my $conf_period_addr = $settings{'CONFperiod_trbnetAddr'};
+  my $conf_offspillcounter_addr = $settings{'CONFoffspillcounter_trbnetAddr'};
+  my $conf_waitstart_addr = $settings{'CONFwaitstart_trbnetAddr'};
+  my $conf_triginitseq_addr = $settings{'CONFtriginitseq_trbnetAddr'};
+  my $conf_trigmapsreset_addr = $settings{'CONFtrigmapsreset_trbnetAddr'};
+  my $conf_trigrunjtag_addr = $settings{'CONFtrigrunjtag_trbnetAddr'};
+  my $conf_trigwriteonce_addr = $settings{'CONFtrigwriteonce_trbnetAddr'};
+  my $conf_trigmapsstart_addr = $settings{'CONFtrigmapsstart_trbnetAddr'};
+
+  if(defined($opt_board) and not defined($opt_chain)) {
+    # assume board command
+    my $subr;
+    if(("h_".$opt_operation) eq 'h_prog_fpga') {
+      $subr = generate_h_prog_fpga($board, $trbhostname, $addonortrb, $staplfilename)
+    }
+    elsif(("h_".$opt_operation) eq 'h_start_trbnetd'){
+      $subr =  generate_h_start_trbnetd($board, $trbhostname);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_6us' ) {
+      $subr =  generate_h_waitbeforestart_6us($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_1ms' ) {
+      $subr =  generate_h_waitbeforestart_1ms($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_1s' ) {
+      $subr =  generate_h_waitbeforestart_1s($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_trigger_init_sequence' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_triginitseq_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_maps_reset' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigmapsreset_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_run_jtag' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigrunjtag_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_write_once' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigwriteonce_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_maps_start' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigmapsstart_addr);
+    }
+    if(!defined($opt_quiet)){ print "Starting Board Operation.\n"; }
+    &{$subr}();
+    exit(0);
+  }
+    
+    
+  my $chainsSettings = new Config::Abstract::Ini($chainsini);
+  my %allchains = $chainsSettings->get_all_settings;
+  if(!defined($allchains{$opt_chain})) { die ("Chain $opt_chain not found.");}
+#  foreach my $chain (reverse sort keys %allchains) {
+    my $chain = $opt_chain;
+    my %chain_settings=%{$allchains{$chain}};
+    my $chain_fpga_addr = $chain_settings{'FPGAtrbnetAddr'};
+    my $ram_addr  = $chain_settings{'RAMtrbnetAddr'};
+    my $cmd_reg_addr = $chain_settings{'CMDreg_trbnetAddr'};
+    my $ram_base_addr  = $chain_settings{'RAMbase_trbnetAddr'};
+    my $data_reg_addr = $chain_settings{'DATAreg_trbnetAddr'};
+    my $conf_signals_addr = $chain_settings{'CONFsignals_trbnetAddr'};
+    my $conf_resetafterfirstwrite_addr = $chain_settings{'CONFresetafterfirstwrite_trbnetAddr'};
+    my $conf_resetbeforeinit_addr = $chain_settings{'CONFresetbeforeinit_trbnetAddr'};
+    my $conf_chain_triginitseq_addr = $chain_settings{'CONFtriginitseq_trbnetAddr'};
+    my $conf_chain_trigmapsreset_addr = $chain_settings{'CONFtrigmapsreset_trbnetAddr'};
+    my $conf_chain_trigrunjtag_addr = $chain_settings{'CONFtrigrunjtag_trbnetAddr'};
+    my $conf_chain_trigwriteonce_addr = $chain_settings{'CONFtrigwriteonce_trbnetAddr'};
+    my $conf_chain_trigmapsstart_addr = $chain_settings{'CONFtrigmapsstart_trbnetAddr'};  
+    my $debug_chain_ram1baddr_addr = $chain_settings{'DEBUGram1baddr'};  
+    my $debug_chain_ram1bdata_addr = $chain_settings{'DEBUGram1bdata'};  
+    my $debug_chain_ram1caddr_addr = $chain_settings{'DEBUGram1caddr'};  
+    my $debug_chain_ram1cdata_addr = $chain_settings{'DEBUGram1cdata'};  
+    my $chainnr = $chain_settings{'chainnr'};
+    my $subr;
+    if(("h_".$opt_operation) eq  'h_man_maps_reset') {
+      $subr = generate_h_man_maps_reset($chain, $chain_fpga_addr, $conf_signals_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_delay0' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 0);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay1' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 1);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay2' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 2);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay3' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 3);
+    }
+    elsif(("h_".$opt_operation) eq 'h_prog_ram' ) {
+      $subr =  generate_h_prog_ram_external($chain);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_10mhz' ) {
+      $subr =  generate_h_set_timing_10mhz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_1mhz' ) {
+      $subr =  generate_h_set_timing_1mhz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_100khz' ) {
+      $subr =  generate_h_set_timing_100khz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_inout' ) {
+      $subr =  generate_h_set_inout($chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_before_on' ) {
+      $subr =  generate_h_maps_reset(1,$chain, $chainnr, $chain_fpga_addr, $conf_resetbeforeinit_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_before_off' ) {
+      $subr =  generate_h_maps_reset(0,$chain, $chainnr, $chain_fpga_addr, $conf_resetbeforeinit_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_after_on' ) {
+      $subr =  generate_h_maps_reset(1,$chain, $chainnr, $chain_fpga_addr, $conf_resetafterfirstwrite_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_after_off' ) {
+      $subr =  generate_h_maps_reset(0,$chain, $chainnr, $chain_fpga_addr, $conf_resetafterfirstwrite_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_maps_clk_on' ) {
+      $subr =  generate_h_maps_clk_signal(1,$chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_clk_off' ) {
+      $subr =  generate_h_maps_clk_signal(0,$chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_trig_init_seq' ) {
+      $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_triginitseq_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_maps_reset' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigmapsreset_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_run_jtag' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigrunjtag_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_write_once' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigwriteonce_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_maps_start' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigmapsstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_read_ram1b_word' ) {
+        $subr =  generate_h_read_ram1b_word($chain, $chain_fpga_addr, $debug_chain_ram1baddr_addr, $debug_chain_ram1bdata_addr, $opt_addr);
+    }    
+    elsif(("h_".$opt_operation) eq  'h_read_ram1c_word' ) {
+        $subr =  generate_h_read_ram1c_word($chain, $chain_fpga_addr, $debug_chain_ram1caddr_addr, $debug_chain_ram1cdata_addr, $opt_addr);
+    }    
+    elsif(("h_".$opt_operation) eq  'h_copy_ram1b1c' ) {
+        $subr =  generate_h_copy_ram1b1c($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr);
+    }
+    
+    if(!defined($opt_quiet)){ print "Starting Chain Operation.\n"; }
+    &{$subr}();    
+  
+}
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/ui_writeram.pl b/soft/toolbox/jtag_atomic/onereg_writeonce/ui_writeram.pl
new file mode 100755 (executable)
index 0000000..e2a6b7b
--- /dev/null
@@ -0,0 +1,423 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX qw(strftime);
+use FileHandle;
+use Getopt::Long;
+
+
+#push(@INC, "./BN");
+#use lib "$ENV{PWD}/BN";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+
+use lib "BN/blib/arch";
+use BN::CRC32;
+#use String::CRC32;
+
+#use feature "state";
+use POSIX;
+
+# whitespace trimming from http://www.somacon.com/p114.php
+# Declare the subroutines
+sub trim($);
+sub ltrim($);
+sub rtrim($);
+
+# Create a test string
+my $string = "  \t  Hello world!   ";
+
+# Here is how to output the trimmed text "Hello world!"
+#print trim($string)."\n";
+#print ltrim($string)."\n";
+#print rtrim($string)."\n";
+
+# Perl trim function to remove whitespace from the start and end of the string
+sub trim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       $string =~ s/\s+$//;
+       return $string;
+}
+# Left trim function to remove leading whitespace
+sub ltrim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       return $string;
+}
+# Right trim function to remove trailing whitespace
+sub rtrim($)
+{
+       my $string = shift;
+       $string =~ s/\s+$//;
+       return $string;
+}
+
+sub reverse32bit($) {
+  my ($in) = @_;
+  my $result = unpack("L", pack("B*", scalar reverse unpack("B*", pack("L",$in))));
+  return $result;
+  #return 1;
+}
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+my $num_words = 0;
+
+# this subroutine 
+# changes parameter 0, which holds the file handle
+sub memfile_writeline($$$$) {
+  my($memfile, $memfilenames, $memfiles_prefix, $line_string)=@_;
+  my $filenum = floor($num_words/256);
+  my $last_filenum = floor(($num_words-1)/256);
+  my $filenum_str = sprintf "%0.2d", $filenum;
+  my $memfilename = $memfiles_prefix.'.'.$filenum_str.".txt";
+
+  if((!defined $_[0])) { 
+    if( -e ($memfilename)) {
+      #die ("Error: RAM text file \"$memfile\" exists.");
+    }
+    $_[0] = FileHandle->new($memfilename, 'w');
+    push(@{$_[1]}, $memfilename);
+  }
+  elsif($filenum!=$last_filenum) { 
+    $memfile->close();
+    if( -e ($memfilename)) {
+      #die ("Error: RAM text file \"$memfile\" exists.");
+    }
+    $_[0] = FileHandle->new($memfilename, 'w');
+    push(@{$_[1]}, $memfilename);
+  }
+  my $fh = $_[0];
+  print $fh $line_string;
+  $num_words++;
+}
+
+my $opt_help;
+my $opt_chain;
+GetOptions ('h|help'      => \$opt_help,
+            'c|chain=s'   => \$opt_chain
+                           );
+if($opt_help) {
+    &help();
+    exit(0);
+}
+
+
+
+sub help(){
+    print "Usage: ui_writeram.pl [-c <chain name> ]
+   
+required:
+   [-c|--chain  <JTAG chain name>]             : Select the JTAG chain (controller) whose RAM should be written.
+"
+}
+
+system("mkdir /tmp/jtag_initmem");
+
+
+my $chainsfile= 'chains.ini';
+my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+my %allchains = $chainsSettings->get_all_settings;
+
+my $date = strftime "%Y%m%d%H%M%S", localtime;
+#my $initmem_folder = "/tmp/jtag_initmem/$date";
+my $initmem_folder = "/tmp/jtag_initmem/jtag_atomic";
+
+if(-e $initmem_folder) {
+#  die("Error: Folder with the same date already exists!");
+}
+else {
+  mkdir $initmem_folder,0755;
+}
+
+# File with prefix names files for last programmed values
+my $lastprogfilename = "/tmp/jtag_initmem/lastprog.txt";
+my $handle_lastprog = FileHandle->new($lastprogfilename, 'w');
+
+# loop through chains
+foreach my $chain (keys %allchains) {
+  if(defined($opt_chain) && not ($chain eq $opt_chain)) {
+    next;
+  }
+  print $chain, ": ";
+  #print join ' ', %{$allchains{$chain}}, "\n";
+  my %settings=%{$allchains{$chain}};
+  my @sensors;
+  my @drs;
+  my @drs_length;
+  my @old_drs;
+  my @old_drs_length;
+  my @irs;
+  my $irlen;
+  my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+  my $ram_addr  = $settings{'RAMtrbnetAddr'};
+  my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+  my $ram_base_addr  = $settings{'RAMbase_trbnetAddr'};
+  my $data_reg_addr = $settings{'DATAreg_trbnetAddr'};
+  my $memfiles_prefix; # the same prefix is used for the files for one chain
+                       # need one file per chip with at maximum 256 32 bit words
+                       # that are written at once.
+                       # then the RAM base pointer has to be changed for the next chip
+  my @memfilenames=();
+
+  $memfiles_prefix="$initmem_folder/$chain";
+  foreach my $setting_name (sort keys %settings) {
+    if ($setting_name =~ /sensor[0-9]+/) {
+      push(@sensors, $setting_name);
+      @old_drs = @drs;
+      @old_drs_length = @drs_length;
+      @irs = ();
+      @drs = ();
+      @drs_length = ();
+      my $sensorfile = $settings{$setting_name};
+      print "loading sensor file: $sensorfile\n";
+      my $sensorSettingsO = new Config::Abstract::Ini($sensorfile);
+      my %sensorSettings = $sensorSettingsO->get_all_settings;
+      my $this_irlen = $sensorSettingsO->get_entry_setting('General', 'IRLEN', '5');
+      my $bypassreg  = $sensorSettingsO->get_entry_setting('General', 'BYPASSREG', '1F');
+      if (!defined $irlen ){
+        $irlen = $this_irlen;
+      }
+      elsif($this_irlen != $irlen) {
+        print "this_irlen=$this_irlen in $sensorfile differs from previously set irlen=$irlen.\nThis should be supported by this version (trb_maps_jtag3) of the JTAG controller.\n But is it really intended?\n";
+      }
+      #print "irlen: ", $this_irlen, "\n";
+      # loop through data registers
+      my %sensorData = $sensorSettingsO->get_entry('Data');
+      foreach my $data_register_ir (sort keys %sensorData) {
+        my $value = $sensorData{$data_register_ir};
+        my ($ir,$drlength,$dr)=  split(/,/, $value); # dr is stored MSN first as hexadecimal string
+        $dr = uc(trim($dr));
+        if(length($dr)%8 != 0) {
+          die("Error: DR string is not multiple of 32 bit (4bytes = 8 nibbles)\n");
+        }
+        if($dr =~ /[^0-9A-F]+/) {
+          die("Error: Invalid hexadecimal string for DR given: \$dr=\"$dr\"\n");
+        }
+       #print "drlength: $drlength\n";
+        push(@drs_length, $drlength);
+        push(@drs, $dr);
+        push(@irs, $ir);
+        # only warning
+        if((defined $old_drs_length[@drs-1]) && ($drlength != $old_drs_length[@drs-1])) {
+            print ("Warning: Length of the same DR of two sensors differs.");
+        }
+      }
+      my $memfilename = $memfiles_prefix . "." . $setting_name . ".txt";
+      if( -e ($memfilename)) {
+        #die ("Error: RAM text file \"$memfilename\" exists.");
+      }
+      print "Opening $memfilename...\n";
+      my $handle = FileHandle->new($memfilename, 'w');
+      push(@memfilenames, $memfilename);
+      # write numregs + IRlen
+      my $word = scalar($this_irlen)<<16;
+      $word = $word + scalar @irs;
+      ### $word = ($word<<16) + pack("L", scalar(@irs));
+      print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L", $word)))),0,8)) . "\t# IRlen & numregs \n";
+      #####print $handle "0x" .uc (substr(reverse(join('',unpack("h8", pack("L", scalar($this_irlen))))),4,4)) . uc (substr(reverse(join('',unpack("h8", pack("L", scalar(@irs))))),4,4)) . "\t# IRlen & numregs \n";
+
+      #print "reverse test: " . reverse32bit(0x00000001)."\n";
+      my $initial = 0x00000000;
+      my $crcword = pack("L", reverse32bit($word));
+      my $crc0 = crc32($crcword, $initial);
+      #my $crc0_rn = ~reverse32bit($crc0);
+      #printf "crc0: %0.8X, crc0_rn: %0.8X, word: %0.8X\n", $crc0, $crc0_rn, $word;
+      # write DEV_ID
+      $word = 0x4D323601; 
+      print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L", $word)))),0,8)) . "\t# DEV_ID \n";
+      $crcword = pack("L", reverse32bit($word));
+      $crc0 = crc32($crcword, $crc0);
+      my $crc0_rn = ~reverse32bit($crc0);
+      #printf "crc0: %0.8X, crc0_rn: %0.8X, word: %0.8X\n", $crc0, $crc0_rn, $word;
+      # write pointer
+      my $offset = 3*@irs+4;
+      for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+        my $drlen = $drs_length[$reg_i];
+        $word = $offset;
+        #print $handle "0x". uc (substr(reverse(join('',unpack("h8", pack("L", 0)))),4,4)) . uc (substr(reverse(join('',unpack("h8", pack("L", scalar($offset))))),4,4))   . "\t# Pointer + reserved\n";
+        $crcword = pack("L", reverse32bit($word));
+        $crc0 = crc32($crcword, $crc0);
+        print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L",  $word)))),0,8)) . "\t# Pointer + reserved \n";
+        $word = $drlen;
+        $crcword = pack("L", reverse32bit($word));
+        $crc0 = crc32($crcword, $crc0);
+        #print $handle "0x0000". uc (substr(reverse(join('',unpack("h8", pack("L", scalar($drlen))))),4,4))  . "\t# Length\n";
+        print $handle "0x" . uc (substr(reverse(join('',unpack("h8",pack("L",  $word)))),0,8)) . "\t# Length\n";
+        $offset += floor(($drlen+31)/32);
+      }
+      # write CRC-32
+      #my $ir_packed_r = pack("B*", scalar reverse substr(unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))),0, 32));
+      $crc0_rn = ~reverse32bit($crc0);
+      #printf "CRC: %0.8X.\n", $crc0_rn, 1;
+      my $line_crc = sprintf "%0.8X", $crc0_rn;
+      print $handle "0x". substr($line_crc,length($line_crc)-8,8) . "\t# CRC-32\n";
+
+      my $crc1 = 0xFFFFFFFF;
+      # write IRs
+      for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+        my $ir = $irs[$reg_i];
+        #my @words = unpack("L", pack("H*", uc($ir)));
+        $word = unpack("L", pack("h*", (scalar reverse uc($ir)) ."000000"));
+       #print "ir=$ir.IR word: $word\n";
+        $crcword = pack("L", reverse32bit($word));
+        $crc1 = crc32($crcword, $crc1);
+        print $handle "0x".("0"x(8-length($ir))).uc($ir) . "\t# IR\n";
+      }
+      # write BYPASSREG IR
+      $word = unpack("L", pack("h*", (scalar reverse uc($bypassreg)) ."000000"));
+      $crcword = pack("L", reverse32bit($word));
+      $crc1 = crc32($crcword, $crc1);
+      print $handle "0x".("0"x(8-length($bypassreg))).uc($bypassreg) . "\t# IR BYPASS\n";
+      
+      # write DRs
+      for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+        my $length = $drs_length[$reg_i];
+        my $numwords = floor(($length+31)/32);
+        for(my $i=0;$i<$numwords; $i++) {
+               #print "length: $length\n";
+               #print "numwords: $numwords\n";
+         
+          $word = unpack("L", pack("h*", (scalar reverse uc(substr($drs[$reg_i],($numwords-$i-1)*8,8)))));
+          $crcword = pack("L", reverse32bit($word));
+          $crc1 = crc32($crcword, $crc1);
+          my $linestr = "0x". substr($drs[$reg_i],($numwords-$i-1)*8,8) . "\t# DR" . $reg_i . "\n";
+          print $handle $linestr; 
+        }
+      }
+      #write CRC-32
+      my $crc1_rn = ~reverse32bit($crc1);
+      $line_crc = sprintf "%0.8X", $crc1_rn;
+      print $handle "0x". substr($line_crc,length($line_crc)-8,8) . "\t# CRC-32\n";
+
+    }
+  }
+  my $numchips_hex = int_to_32bit_hex(scalar @sensors);
+  print "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A\n"; # CMD_STOP
+  my $result = `trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A\n`; # CMD_STOP
+  print "trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex\n"; # ADDR_CONTROL_DATA_REGISTER
+  $result = `trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex\n`; # ADDR_CONTROL_DATA_REGISTER
+  print "trbcmd w $fpga_addr $cmd_reg_addr 0x00000033\n";      # COMMAND: M26C_CMD_SET_NUMCHIPS_CONFIGURED
+  $result = `trbcmd w $fpga_addr $cmd_reg_addr 0x00000033\n`;      # COMMAND: M26C_CMD_SET_NUMCHIPS_CONFIGURED
+  for(my $i=0;$i<scalar @memfilenames;$i++) {
+
+    # write RAM base pointer
+    my $ihex = int_to_32bit_hex($i);
+    print "set RAM base pointer: \n";
+    print "trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n";
+    $result = `trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n`;
+    # write to configuration RAM
+    print "write max. 256 32-bit-words: \n";
+    print "trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]\n";
+    $result = `trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]`;
+  }
+  print "trbcmd w $fpga_addr $cmd_reg_addr 0x00000009\n";      # CMD_START
+  $result = `trbcmd w $fpga_addr $cmd_reg_addr 0x00000009\n`;      # CMD_START
+  print "\n";
+}
+print $handle_lastprog $initmem_folder;
+#   #print "data registers for FPGA $fpga_addr:", map { "$_ => $drs_binary{$_}\n" } keys %drs_binary;
+#   $drs_offset{$irs[0]} = 4+(scalar @irs)*2;
+#   for (my $i=1;$i<@irs;$i++) {
+#     my $dr_length = $drs_length{$irs[$i-1]};
+#     $drs_offset{$irs[$i]} = $drs_offset{$irs[$i-1]} + floor(($dr_length*(scalar @sensors)+31)/32) + 2; # add one x 32 bit for CRC, one x 32 bit for IR, integer division rounds down, right?
+#   }
+#   #open RAMTEXT, ">$memfiles_prefix{$chain}";
+#   $num_words = 0;
+#   my $ram_fh;
+#   my @mem_filenames;
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc (reverse(join('',unpack("h8", pack("L", scalar(@sensors)))))) . "\t# numchips \n"); # numchips; the reverse is done here because apparently internally the unsigned long is stored LSByte first (little endian)
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(join('',unpack("h8", pack("L", 0))))) . "\t# reserved\n"); # reserved
+#   for (my $i=0;$i<@irs;$i++) {
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(join('',unpack("h8", pack("L", $drs_offset{$irs[$i]}))))) . "\t# pointer\n"); # pointer
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix,  "0x".uc(reverse(join('',unpack("h8", pack("L", $drs_length{$irs[$i]}))))) . "\t# length \n"); # length
+#   }
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x00000000\t# pointer (end of list)\n");
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x00000000\t# length  (end of list)\n");
+#   for (my $i=0;$i<@irs;$i++) {
+#     my $ir=$irs[$i];
+#     #print "ir: $ir\n";
+#     my $ir_packed = pack("h*", (scalar reverse($ir)).("0"x (7-(length($ir)-1)%8)));
+#     my $ir_packed_r = pack("B*", scalar reverse substr(unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))),0, 32));
+#     #print "debug ir_packed   (h*): ". (scalar reverse($ir)).("0"x (8-length($ir)%32))."\n";
+#     #print "debug ir_packed_r (B*): ". scalar reverse unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))) ."\n";
+#     #print "debug2: " . (7-(length($ir)-1)%8) . "\n";
+#     #print "debug3: " . $ir . "\n";
+#     #print "debug4: " . $ir.("0"x (7-(length($ir)-1)%8)) . "\n";
+#     #print "debug5 (B*): ". unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))) ."\n";
+# 
+#     my $initial = 0x00000000;
+#     my $crc0 = crc32($ir_packed_r, $initial);
+#     #printf "CRC0: %X. ~reversed: %X\n", $crc0, $crc0_rn;
+# 
+#     for(my $i=0; $i<floor((length($drs_binary{$ir})-1)/32)+1;$i++){
+#       my $dr_word_packed_r = pack("b*", scalar reverse substr($drs_binary{$ir}.("0"x (31-(length($drs_binary{$ir})-1)%32)),($i)*32, 32));
+#       $crc0 = crc32($dr_word_packed_r, $crc0);
+#       my $crc0_rn = ~reverse32bit($crc0);
+#       printf "CRC: 0x%0.8X.\n", $crc0_rn;
+#     }
+#     my $crc0_rn = ~reverse32bit($crc0);
+#     #printf "CRC: %0.8X.\n", $crc0_rn, 1;
+#     my $line_crc = sprintf "0x%0.8X\t# CRC-32\n", $crc0_rn;
+#     print "debug dr_binary: " . $drs_binary{$ir} . "\n";
+#     my $dr_packed = pack("b*", $drs_binary{$ir}.("0"x (31-(length($drs_binary{$ir})-1)%32)));
+#     $drs{$ir} = unpack('h*', $dr_packed);
+#     print "debug drs: " . $drs{$ir} . "\n";
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".("0"x(8-length($ir))).uc($ir) . "\n");
+#     for(my $i=0; $i<floor((length( $drs{$ir}) -1)/8)+1; $i++){
+#       #print "dbg: i=$i, len=".length( $drs{$ir})."\n";
+#       if(length($drs{$ir}) >= ($i+1)*8) {
+#         memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(substr($drs{$ir}, ($i)*8, 8))) . "\n");
+#       }
+#       else {
+#         memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".("0"x(($i+1)*8-length($drs{$ir}))).uc(reverse(substr($drs{$ir}, ($i)*8, length($drs{$ir})%8))) . "\n");
+#       }
+#     }
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, $line_crc);
+#     
+#     #print "IR $ir, DR ". $drs{$ir} . "\n";
+#   }
+#   #close RAMTEXT;
+#   $ram_fh->close();
+#   #my $result = `cat $memfile{$fpga_addr}`;
+#   $ENV{'DAQOPSERVER'}="trb126";
+#   for(my $i=0;$i<scalar @mem_filenames;$i++) {
+#     # write RAM base pointer
+#     my $ihex = int_to_32bit_hex($i);
+#     print "trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n";
+#     my $result = `trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n`;
+#     print "set RAM base pointer: " . $result;
+#     # write to configuration RAM
+#     print "trbcmd wm $fpga_addr $ram_addr 0 $mem_filenames[$i]\n";
+#     $result = `trbcmd wm $fpga_addr $ram_addr 0 $mem_filenames[$i]`;
+#     print "write max. 256 32-bit-words: " . $result;
+#   }
+#}
+
+
+# init_writemem:
+# - loop through chains
+#   - loop through sensors
+#     - test if IR length is the same as for other sensors
+#     - loop through DRs
+#       - test if DR length is the same as for other sensors
+#     - add DR content to chain data register (hexadecimal string)
+#   - write contents for JTAG chain controller RAM to text file(s)
+#   - execute trbcmd to transfer file(s) to RAM of FPGA configured in chains.ini
+#
+# get_status:
+# get_error_counts:
+# reactivate_sensor:
+# deactivate_sensor:
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/write_reg.pl b/soft/toolbox/jtag_atomic/onereg_writeonce/write_reg.pl
new file mode 100755 (executable)
index 0000000..b603ee0
--- /dev/null
@@ -0,0 +1,170 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Getopt::Long;
+use POSIX; # for floor
+
+my %chains = ();
+my $namecol = 0; # column of chain name, column counting from zero
+my $chaincol = 1; # column of chain name, column counting from zero
+my $jnrcol = 2; # column of JNR for sorting, column counting from zero
+my $minnumcols = 4;
+
+# in future this could be chain dependent, so should be added to chains.ini
+my $MAX_NUMCHIPS_LD = 3;
+my $RAM_JTAG_REGISTERS_DEPTH = 11;
+
+my $opt_help;
+my $opt_chain;
+my $opt_register;
+my $chain_of_sensor;
+GetOptions ('h|help'      => \$opt_help,
+            'c|chain=s'   => \$opt_chain,
+            'r|register=s'   => \$opt_register
+                                );
+if($opt_help or not defined($opt_register)) {
+    &help();
+    exit(0);
+}
+
+
+sub help(){
+    print "Usage: write_reg [-c <chain name>] -r <register number>
+   
+required:
+   -c|--chain  <chain name>             : Select only chain <chain name> 
+   -r|--register  <register number>       : Select only Register <register number> and bypass register in 
+                                            other sensors 
+                                            number as string exactly as in sensor*.ini
+                                            00 for BIAS_DAC
+"
+}
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+sub execute_shell_command_return {
+        my $command = $_[0];
+        #report( 'report_detailed' , "\nexec $command\n\n");
+        my $result = `$command 2>&1`;
+        #report( 'report_detailed' , $result);
+        #report( 'report_detailed' , "\n----------------------------\n");
+        if($? != 0) { print "command failed. output: $result";}
+        return $result;
+}
+
+
+open(PROTOTYPEDBFILE,"/daq/toolbox/prototype_setup.db") || die("Cannot open file /daq/mvdmon/prototype_setup.db!");
+my @lines_db = <PROTOTYPEDBFILE>;
+close(PROTOTYPEDBFILE);
+my $keydesc = 0;
+foreach my $line (@lines_db) {
+  # skip commented out lines
+  if(substr($line, 0, 1) eq "#") {
+    next;
+  }
+  # if new section begins stop interpreting lines
+  if(substr($line, 0, 3) eq "key") {
+    $keydesc = 0;
+  }
+  if($keydesc == 1) {
+    my @entries = split(/\s+/, $line);
+    if((scalar @entries) < $minnumcols) { 
+      if(!($line eq "\n")) {print "Warning: row with too little entries. skipping."}; 
+      next; 
+    }
+    my $sensorname = $entries[$namecol];
+    my $chainname = $entries[$chaincol];
+    my $jnr = $entries[$jnrcol];
+    if(! defined ($chains{$chainname})) {
+      my %sensors = ();
+      $chains{$chainname} = \%sensors;
+    }
+    my %sensors = %{$chains{$chainname}};
+    # only add sensor to chain if JNR matches following regexp
+    if ($jnr =~ /[0-9]+/) {
+      my $jnrname;
+      $jnrname= "JNR".$jnr."_".$sensorname;
+      $sensors{$jnrname} = $sensorname . ".ini";
+    }
+    $chains{$chainname} = \%sensors;
+  }
+  # if desc section begins, start interpreting next line
+  if(substr($line, 0, 8) eq "key jtag") {
+    $keydesc = 1;
+  }
+}
+
+# for each of the possible three chains generate a section with name and sensor-file references in the correct order
+my @chain_names = sort keys (%chains);
+my $ir;
+my $drlength;
+my $dr;
+foreach my $chainname (@chain_names) {
+  if(defined($opt_chain) and not ($chainname eq $opt_chain)) { 
+    next;
+  }
+  my %sensors = %{$chains{$chainname}};
+  my $sensornumber;
+  my $sensornumberloop= 0;
+  foreach my $sensorkey (sort keys %sensors)  {
+    my $sensorfile=$sensors{$sensorkey};
+    open(SENSORORIGFILE, "/daq/toolbox/sensors/".$sensorfile) || die("Cannot open file ../$sensorfile!");
+    open(SENSOROUTFILE, "> ./".$sensorfile) || die("Cannot open file ../$sensorfile!");
+    my $datasection = 0;
+    while (<SENSORORIGFILE>) {
+       
+      if($datasection == 0) { 
+        print SENSOROUTFILE $_;
+      }
+      else {
+        if($_ =~ /^[^;]*$opt_register=/) { 
+          print SENSOROUTFILE $_;
+          print "found line.\n"; 
+          ($ir,$drlength,$dr) =  split(/,/, $_); # dr is stored MSN first as hexadecimal string 
+          last; 
+        }
+      } # after the BIAS_DAC register truncate file.
+      if($_ =~ /^\[Data\]/) {
+        $datasection=1;
+      }
+    }
+    close SENSOROUTFILE;
+    close SENSORORIGFILE;
+    $sensornumber = $sensornumberloop;
+    $sensornumberloop++;
+  }
+}
+system("cp ../chains.ini ./chains.ini");
+# program RAM, write once, copy returned value from JTAG register and print it
+foreach my $chainname (@chain_names) {
+  if(defined($opt_chain) and not ($chainname eq $opt_chain)) { 
+    next;
+  }
+  my %sensors = %{$chains{$chainname}};
+  # write BIAS_DAC only to RAM of chain 
+  system("./ui_writeram.pl -c $chainname");
+  system("./ui.pl -c $chainname -o write_once");
+  system("sleep 0.05");
+  system("./ui.pl -c $chainname -o copy_ram1b1c");
+  system("sleep 0.01");
+}
+foreach my $chainname (@chain_names) {
+  if(defined($opt_chain) and not ($chainname eq $opt_chain)) {
+    next;
+  }
+  my %sensors = %{$chains{$chainname}};
+
+  my $reglen=floor(($drlength+31)/32);
+  for(my $sensornumber=0; $sensornumber < scalar keys %sensors; $sensornumber++) {
+    for(my $i =0; $i<$reglen; $i++) {
+      my $hexaddr = int_to_32bit_hex($sensornumber*(2**($RAM_JTAG_REGISTERS_DEPTH-$MAX_NUMCHIPS_LD))+$i+7); # when one register is programmed only, it starts at address 7.
+      print "sensornr=$sensornumber. reading addr 0x$hexaddr: ";
+      my $regval = execute_shell_command_return("./ui.pl -c $chainname -o read_ram1c_word -a 0x$hexaddr -q");
+      print $regval."\n";
+    }
+  }
+}
diff --git a/soft/toolbox/jtag_atomic/onereg_writeonce/write_reg_onesensor.pl b/soft/toolbox/jtag_atomic/onereg_writeonce/write_reg_onesensor.pl
new file mode 100755 (executable)
index 0000000..6dcddd7
--- /dev/null
@@ -0,0 +1,159 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Getopt::Long;
+use POSIX; # for floor
+
+my %chains = ();
+my $namecol = 0; # column of chain name, column counting from zero
+my $chaincol = 1; # column of chain name, column counting from zero
+my $jnrcol = 2; # column of JNR for sorting, column counting from zero
+my $minnumcols = 4;
+use Sys::Syslog;
+openlog("atomic,onereg_writeonce.pl", "perror", "local1");
+
+# in future this could be chain dependent, so should be added to chains.ini
+my $MAX_NUMCHIPS_LD = 3;
+my $RAM_JTAG_REGISTERS_DEPTH = 11;
+
+my $opt_help;
+my $opt_sensor;
+my $opt_register;
+my $chain_of_sensor;
+GetOptions ('h|help'      => \$opt_help,
+            's|sensor=s'   => \$opt_sensor,
+            'r|register=s'   => \$opt_register
+                                );
+if($opt_help or not defined($opt_sensor)) {
+    &help();
+    exit(0);
+}
+
+
+sub help(){
+    print "Usage: write_reg_onesensor -s <sensor name> -r <register number>
+   
+required:
+   -s|--sensor  <sensor name>             : Select only chain of sensor <sensor name> 
+   -r|--register  <register number>       : Select only Register <register number> and bypass register in 
+                                            other sensors 
+                                            number as string exactly as in sensor*.ini
+                                            00 for BIAS_DAC
+"
+}
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+sub execute_shell_command_return {
+        my $command = $_[0];
+        #report( 'report_detailed' , "\nexec $command\n\n");
+        my $result = `$command 2>&1`;
+        #report( 'report_detailed' , $result);
+        #report( 'report_detailed' , "\n----------------------------\n");
+        if($? != 0) { print "command failed. output: $result";}
+        return $result;
+}
+
+
+open(PROTOTYPEDBFILE,"/daq/toolbox/prototype_setup.db") || die("Cannot open file /daq/mvdmon/prototype_setup.db!");
+my @lines_db = <PROTOTYPEDBFILE>;
+close(PROTOTYPEDBFILE);
+my $keydesc = 0;
+foreach my $line (@lines_db) {
+  # skip commented out lines
+  if(substr($line, 0, 1) eq "#") {
+    next;
+  }
+  # if new section begins stop interpreting lines
+  if(substr($line, 0, 3) eq "key") {
+    $keydesc = 0;
+  }
+  if($keydesc == 1) {
+    my @entries = split(/\s+/, $line);
+    if((scalar @entries) < $minnumcols) { 
+      if(!($line eq "\n")) {print "Warning: row with too little entries. skipping."}; 
+      next; 
+    }
+    my $sensorname = $entries[$namecol];
+    my $chainname = $entries[$chaincol];
+    if($sensorname eq $opt_sensor) { $chain_of_sensor = $chainname; }
+    else { print "sensorname: ". $sensorname . "\n"; }
+    my $jnr = $entries[$jnrcol];
+    if(! defined ($chains{$chainname})) {
+      my %sensors = ();
+      $chains{$chainname} = \%sensors;
+    }
+    my %sensors = %{$chains{$chainname}};
+    # only add sensor to chain if JNR matches following regexp
+    if ($jnr =~ /[0-9]+/) {
+      my $jnrname;
+      $jnrname= "JNR".$jnr."_".$sensorname;
+      $sensors{$jnrname} = $sensorname . ".ini";
+    }
+    $chains{$chainname} = \%sensors;
+  }
+  # if desc section begins, start interpreting next line
+  if(substr($line, 0, 8) eq "key jtag") {
+    $keydesc = 1;
+  }
+}
+
+# for each of the possible three chains generate a section with name and sensor-file references in the correct order
+my @chain_names = sort keys (%chains);
+my $ir;
+my $drlength;
+my $dr;
+if(not defined($chains{$chain_of_sensor})) { die ("Chain Name $chain_of_sensor for sensor not found.");}
+my %sensors = %{$chains{$chain_of_sensor}};
+my $sensornumber;
+my $sensornumberloop= 0;
+foreach my $sensorkey (sort keys %sensors)  {
+  my $sensorfile=$sensors{$sensorkey};
+  if($sensorfile eq ($opt_sensor.".ini")) {
+    open(SENSORORIGFILE, "/daq/toolbox/sensors/".$sensorfile) || die("Cannot open file ../$sensorfile!");
+    open(SENSOROUTFILE, "> ./".$sensorfile) || die("Cannot open file ../$sensorfile!");
+    my $datasection = 0;
+    while (<SENSORORIGFILE>) {
+      
+      if($datasection == 0) { 
+        print SENSOROUTFILE $_;
+      }
+      else {
+        if($_ =~ /^[^;]*$opt_register=/) { 
+          print SENSOROUTFILE $_;
+          print "found line.\n"; 
+          ($ir,$drlength,$dr) =  split(/,/, $_); # dr is stored MSN first as hexadecimal string 
+          last; 
+        }
+      } # after the BIAS_DAC register truncate file.
+      if($_ =~ /^\[Data\]/) {
+        $datasection=1;
+      }
+    }
+    close SENSOROUTFILE;
+    close SENSORORIGFILE;
+    $sensornumber = $sensornumberloop;
+  }
+  else {
+    system("cp ./bypass.ini ./$sensorfile")
+  }
+  $sensornumberloop++;
+}
+system("cp ../chains.ini ./chains.ini");
+# write BIAS_DAC only to RAM of chain in which sensor is
+system("./ui_writeram.pl -c $chain_of_sensor");
+syslog("INFO", "write once ".$opt_sensor);
+system("./ui.pl -b board01 -c $chain_of_sensor -o write_once");
+system("sleep 0.05");
+system("./ui.pl -b board01 -c $chain_of_sensor -o copy_ram1b1c");
+my $reglen=floor(($drlength+31)/32);
+for(my $i =0; $i<$reglen; $i++) {
+  my $hexaddr = int_to_32bit_hex($sensornumber*(2**($RAM_JTAG_REGISTERS_DEPTH-$MAX_NUMCHIPS_LD))+$i+7); # when one register is programmed only, it starts at address 7.
+  print "reading addr 0x$hexaddr: ";
+  my $regval = execute_shell_command_return("./ui.pl -b board01 -c $chain_of_sensor -o read_ram1c_word -a 0x$hexaddr -q");
+  print $regval."\n";
+}
diff --git a/soft/toolbox/jtag_atomic/start.pl b/soft/toolbox/jtag_atomic/start.pl
new file mode 100755 (executable)
index 0000000..851764a
--- /dev/null
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+#use strict;
+#use warnings;
+use Config::Abstract::Ini;
+my $chainsfile= 'chains.ini';
+my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+my %allchains = $chainsSettings->get_all_settings;
+
+$ENV{DAQOPSERVER}='trb124';
+
+foreach my $chain (keys %allchains) {
+  my %settings=%{$allchains{$chain}};
+  my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+  my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+  my $ram_base_addr  = $settings{'RAMbase_trbnetAddr'};
+  my $data_reg_addr = $settings{'DATAreg_trbnetAddr'};
+  print "trbcmd w $fpga_addr $cmd_reg_addr 0x00000009\n"; # CMD_START
+  my $result = `trbcmd w $fpga_addr $cmd_reg_addr 0x00000009\n`; # CMD_START
+}
+    
diff --git a/soft/toolbox/jtag_atomic/sync_sensors.sh b/soft/toolbox/jtag_atomic/sync_sensors.sh
new file mode 100755 (executable)
index 0000000..1cd966c
--- /dev/null
@@ -0,0 +1 @@
+cp ../../trb_maps_jtag3/ui/sensor* ./
diff --git a/soft/toolbox/jtag_atomic/the_gui.pl b/soft/toolbox/jtag_atomic/the_gui.pl
new file mode 100755 (executable)
index 0000000..c4a8b07
--- /dev/null
@@ -0,0 +1,1012 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX qw(strftime);
+use FileHandle;
+
+$ENV{DAQOPSERVER}='trb124';
+system("mkdir /tmp/jtag_initmem");
+
+#push(@INC, "./BN");
+#use lib "$ENV{PWD}/BN";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+
+use lib "BN/blib/arch";
+use BN::CRC32;
+#use String::CRC32;
+
+#use feature "state";
+use POSIX;
+# for a pure gtk+ glade project
+use Gtk2 -init;
+use Gtk2::GladeXML;
+use Glib qw/TRUE FALSE/;
+
+
+my %chain_defaults = (); #('h_stop', 'h_delay0', 'h_prog_ram', 'h_set_timing_10mhz',,'h_set_inout');
+my %board_defaults = (); #('h_period_0_15s');
+my %chain_defaults2 = (); #('h_start');
+
+# whitespace trimming from http://www.somacon.com/p114.php
+# Declare the subroutines
+sub trim($);
+sub ltrim($);
+sub rtrim($);
+  
+# Create a test string
+my $string = "  \t  Hello world!   ";
+
+# Here is how to output the trimmed text "Hello world!"
+#print trim($string)."\n";
+#print ltrim($string)."\n";
+#print rtrim($string)."\n";
+
+# Perl trim function to remove whitespace from the start and end of the string
+sub trim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       $string =~ s/\s+$//;
+       return $string;
+}
+# Left trim function to remove leading whitespace
+sub ltrim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       return $string;
+}
+# Right trim function to remove trailing whitespace
+sub rtrim($)
+{
+       my $string = shift;
+       $string =~ s/\s+$//;
+       return $string;
+}
+
+sub reverse32bit($) {
+  my ($in) = @_;
+  my $result = unpack("L", pack("B*", scalar reverse unpack("B*", pack("L",$in))));
+  return $result;
+  #return 1;
+}
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+my $num_words = 0;
+
+# this subroutine 
+# changes parameter 0, which holds the file handle
+sub memfile_writeline($$$$) {
+  my($memfile, $memfilenames, $memfiles_prefix, $line_string)=@_;
+  my $filenum = floor($num_words/256);
+  my $last_filenum = floor(($num_words-1)/256);
+  my $filenum_str = sprintf "%0.2d", $filenum;
+  my $memfilename = $memfiles_prefix.'.'.$filenum_str.".txt";
+
+  if((!defined $_[0])) { 
+    if( -e ($memfilename)) {
+      die ("Error: RAM text file \"$memfile\" exists.");
+    }
+    $_[0] = FileHandle->new($memfilename, 'w');
+    push(@{$_[1]}, $memfilename);
+  }
+  elsif($filenum!=$last_filenum) { 
+    $memfile->close();
+    if( -e ($memfilename)) {
+      die ("Error: RAM text file \"$memfile\" exists.");
+    }
+    $_[0] = FileHandle->new($memfilename, 'w');
+    push(@{$_[1]}, $memfilename);
+  }
+  my $fh = $_[0];
+  print $fh $line_string;
+  $num_words++;
+}
+my $gladexml = Gtk2::GladeXML->new('gui/design/window3_libglade.glade');
+my  $textview_msg = $gladexml->get_widget('textview_msg');
+my  $textview_msgdetailed = $gladexml->get_widget('textview_msgdetailed');
+my $logfilehandle = FileHandle->new('gui3log.txt', 'a');
+
+sub report {
+        # log to logfile
+        my $logdate = strftime "%Y%m%d%H%M%S", localtime;
+        print $logfilehandle $logdate . ":". $_[1];
+        # report( $textview, $string );
+        
+        my $textfield;
+        if($_[0] eq 'report_detailed') {
+          $textfield = $textview_msgdetailed;
+        }
+        else {
+          $textfield = $textview_msg;
+        }
+        my $buffer = $textfield->get_buffer;
+        my $sw = $textfield->get_parent;
+        my $iter = $buffer->get_end_iter;
+        $buffer->insert($iter,$_[1]);
+        
+        my $va = $sw->get_vadjustment;
+        #$va->set_value (($va->upper - $va->page_size) );
+
+        $va->set_value ( $va->upper );
+}
+
+sub init_msg {
+        my $textfield = $textview_msg;
+        my $buffer = $textfield->get_buffer;
+        $buffer->set_text($_[0]."\n");
+        reportd ($_[0]."\n");
+}
+
+sub reportd {
+  report('report_detailed', $_[0]);
+}
+
+
+sub execute_shell_command {
+        # input args: $command, $expected_output         #, $success_string, $sending_button
+
+        my $success = 0;        
+        my $command = $_[0];
+        my $expected = $_[1];
+        my $output = "";
+        #my $success_string = $_[1];
+        #my $sending_button = $_[2];
+
+        #my $message= $sending_button->get_label;
+        #reportd ( 'report_general', "attempting to $message");
+        report( 'report_detailed' , "\nexec $command\n\n");
+        open ( SHELL , "$command 2>&1 |" ) || report( 'report_general' , "failed to execute command.");
+
+        while ( <SHELL> ) {
+                report( 'report_detailed' , $_);
+                $output.=$_;
+#                 if ( $_ =~ m/$success_string/ ) {
+#                         report( 'report_general' , " ...success!\n" );
+#                         my $success = 1;
+#                 }
+        }
+#         if ($success == 0) {
+#                 report( 'report_general', " ...unclear\n");
+#         }
+        if(!($output eq $expected)) {
+          report('report_general', "unexpected output: ".$output."\n");
+        }
+        report( 'report_detailed' , "\n----------------------------\n");
+}
+
+
+sub execute_shell_command_return {
+        my $command = $_[0];
+        report( 'report_detailed' , "\nexec $command\n\n");
+        my $result = `$command 2>&1`;
+        report( 'report_detailed' , $result);
+        report( 'report_detailed' , "\n----------------------------\n");
+        if($? != 0) {report('report_general', "command failed. output: $result");}
+        return $result;
+}
+
+
+sub generate_h_man_maps_reset {
+  my ($chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "manual reset chain " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $resetnormal = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $resetinv = int_to_32bit_hex((~(1<<10)) & hex($resetnormal));
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$resetinv 2>&1 && sleep 1 && trbcmd w $fpga_addr $conf_signals_addr $resetnormal 2>&1", "");
+  }
+}
+
+sub generate_h_maps_start_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "generate MAPS start $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<9)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<9)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_maps_reset_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("MAPS reset signal $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<11)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<11)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval", "");
+  }
+}
+sub generate_h_maps_clk_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("generate MAPS clk $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<13)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<13)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_prog_ram {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $ram_base_addr, $ram_addr, $numsensors, $memfilenames_ref) = @_;
+  my @memfilenames = @{$memfilenames_ref};
+  return sub {
+    init_msg("program RAM $chain.");
+    my $numchips_hex = int_to_32bit_hex($numsensors);
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A", ""); # CMD_STOP
+    execute_shell_command("trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex", ""); # ADDR_CONTROL_DATA_REGISTER
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000033", "");      # COMMAND: M26C_CMD_SET_NUMCHIPS_CONFIGURED
+    for(my $i=0;$i<scalar @memfilenames;$i++) {
+  
+      # write RAM base pointer
+      my $ihex = int_to_32bit_hex($i);
+      reportd "set RAM base pointer: \n";
+      execute_shell_command("trbcmd w $fpga_addr $ram_base_addr 0x$ihex", "");
+      # write to configuration RAM
+      reportd "write max. 256 32-bit-words: \n";
+      execute_shell_command("trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]", "");
+    }
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000009", ""); # CMD_START
+  }
+}
+
+sub generate_h_set_timing_10mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 10 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x0000000A  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000003  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000008  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000009  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    #reportd $cmdline;
+    #system($cmdline);
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_1mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 1 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x00000064  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000031  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000062  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000063  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_100khz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 100 kHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x000003E8  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x000001CC  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000003C0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x000003E7  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+
+
+sub generate_h_delay {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $delay) =  @_;
+  return sub {
+    init_msg("Delay $delay $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $data_reg_addr 0x".int_to_32bit_hex($delay)."  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000067  2>&1 # COMMAND: M26C_CMD_SET_DELAY_EXPECTED_VALUES";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_waitbeforestart_6us { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 6us.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00000200", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+sub generate_h_waitbeforestart_1ms { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1ms.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00013880", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_waitbeforestart_1s { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1s.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x04C4B400", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_maps_reset {
+  my ($onoroff, $chain, $chainnr, $fpga_addr, $conf_resets_addr) = @_;
+  return sub {
+    init_msg("initseq setting: MAPS reset addr $conf_resets_addr $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_resets_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+            #off
+      $newval = int_to_32bit_hex((~(1<<$chainnr)) & hex($before));
+    }
+    else {
+            #on
+      $newval = int_to_32bit_hex(((1<<$chainnr)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_resets_addr 0x$newval", "");
+  }
+}
+
+
+sub generate_h_trig {
+  my ($board, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr  " . $board);
+    # hack: for runjtag trigger single trigger address is used, otherwise setting LSB would be sufficient
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0xFFFFFFFF", "");
+  }
+}
+sub generate_h_chain_trig {
+  my ($chain, $chainnr, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr chainnr:$chainnr " . $chain);
+    # set bit in trigger register correspondig to chain-# $chainnr
+    my $newval;
+    $newval = int_to_32bit_hex(((1<<$chainnr)));
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0x$newval", "");
+  }
+}
+
+
+
+sub generate_h_trigger_init_sequence {
+  my($board, $fpga_addr, $conf_fet_trigger_addr, $conf_period_addr) = @_;
+  return sub {
+  init_msg("Send Trigger $board.");
+    if(!defined($conf_fet_trigger_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # generate trigger 
+    execute_shell_command("trbcmd w $fpga_addr $conf_fet_trigger_addr 0x00000001", ""); # generate fet_trigger via trbnet
+  }
+}
+
+
+sub generate_h_set_inout {
+  my($chain, $fpga_addr, $conf_signals_addr) =  @_;
+  return sub {
+    init_msg("Set IN/OUT $chain.");
+    if(!defined($conf_signals_addr)){
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x000002EAA", "");# outputs/inputs not inverted, but activated, RESET activated and inverted (high)
+  }
+}
+
+sub generate_h_prog_fpga {
+  my($board, $trbhostname, $addonortrb, $staplfilename) =  @_;
+  return sub {
+    init_msg("Prog FPGA $board.");
+    if(!defined($trbhostname)||!defined($addonortrb)||!defined($staplfilename)){
+      report('report_general', "Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"jam_trbv2_ao --$addonortrb -aRUN_XILINX_PROC /home/hadaq/bneumann/$staplfilename\"", 
+    "------------- Connection accepted -------------
+> return value of command: 0
+> stdout: 
+Successful File Execution.
+------------- END OF OUTPUT ------------
+");
+  }
+}
+sub generate_h_start_trbnetd {
+  my($board, $trbhostname) =  @_;
+  return sub {
+    init_msg("Start trbnetd $board.");
+    if(!defined($trbhostname)){
+      report('report_general',"Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"trbnetd\"","------------- Connection accepted -------------
+> return value of command: 0
+------------- END OF OUTPUT ------------
+");
+  }
+}
+
+sub generate_h_set_standard {
+  my %boards_handlers = %{$_[0]};
+  my %chains_handlers = %{$_[1]};
+  return sub {
+    foreach my $board (reverse sort keys %chains_handlers) {
+      my %chains_handlers2 = %{$chains_handlers{$board}};
+      foreach my $chain (reverse sort keys %chains_handlers2) {
+        my %chain_handlers = %{$chains_handlers2{$chain}};
+        foreach my $handler_name (@{$chain_defaults{$board}{$chain}}) {
+         &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+        }
+      }
+    }
+    foreach my $board (reverse sort keys %boards_handlers) {
+      my %board_handlers = %{$boards_handlers{$board}};
+      foreach my $handler_name (@{$board_defaults{$board}}) {
+        &{$board_handlers{$handler_name}}; # run subroutine saved in hash
+      }
+    }
+    foreach my $board (reverse sort keys %chains_handlers) {
+      my %chains_handlers2 = %{$chains_handlers{$board}};
+      foreach my $chain (reverse sort keys %chains_handlers2) {
+        my %chain_handlers = %{$chains_handlers2{$chain}};
+        foreach my $handler_name (@{$chain_defaults2{$board}{$chain}}) {
+         &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+        }
+      }
+    }
+  }
+}
+
+ # outputs/inputs not inverted, but activated, RESET deactivated and inverted (high)
+sub h_reload_boardsini {
+  my ($widget, $data) = @_;
+  init_msg("reload!\n");
+  system("./generate_chainorder.pl");
+  my $boardsfile= 'boards.ini';
+  my $chainsSettings = new Config::Abstract::Ini($boardsfile);
+  my %allboards = $chainsSettings->get_all_settings;
+    
+  my $notebook_boards = Gtk2::Notebook->new;
+  my $main_vbox1 = $gladexml->get_widget('vbox1');
+  my @children = $main_vbox1->get_children;
+  $main_vbox1->remove($children[0]);
+  $main_vbox1->pack_start($notebook_boards, TRUE, TRUE, 0);
+  $main_vbox1->reorder_child($notebook_boards,0);
+  $main_vbox1->resize_children();
+#   my $testframe = Gtk2::Frame->new;
+#   my $testframe2 = Gtk2::Frame->new;
+#   $notebook_boards->append_page($testframe, "Test 1");
+#   $notebook_boards->append_page($testframe2, "Test 2");
+  my %boards_handlers;
+  my %chains_handlers;
+  foreach my $board (keys %allboards) {
+    my $gladexml3 = Gtk2::GladeXML->new('gui/design/buttons_BM_NP1_board_libglade.glade');
+    my %settings=%{$allboards{$board}};
+    my $chainsini = $settings{'chainsini'};
+    my $trbhostname = $settings{'FPGAboard_hostname'};
+    my $addonortrb = $settings{'FPGAboard_addonortrb'};
+    my $staplfilename = $settings{'FPGAboard_staplfilename'};
+    my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+    my $conf_period_addr = $settings{'CONFperiod_trbnetAddr'};
+    my $conf_offspillcounter_addr = $settings{'CONFoffspillcounter_trbnetAddr'};
+    my $conf_waitstart_addr = $settings{'CONFwaitstart_trbnetAddr'};
+    my $conf_triginitseq_addr = $settings{'CONFtriginitseq_trbnetAddr'};
+    my $conf_trigmapsreset_addr = $settings{'CONFtrigmapsreset_trbnetAddr'};
+    my $conf_trigrunjtag_addr = $settings{'CONFtrigrunjtag_trbnetAddr'};
+    my $conf_trigwriteonce_addr = $settings{'CONFtrigwriteonce_trbnetAddr'};
+    my $conf_trigmapsstart_addr = $settings{'CONFtrigmapsstart_trbnetAddr'};
+
+    my @gui_defaults = split (/,/,$settings{'guiBM_NP_defaults'});
+    $board_defaults{$board} = \@gui_defaults;
+
+
+    my $vbox_board_chains = $gladexml3->get_widget('vbox_chains');
+    my $vbox_board_ = $gladexml3->get_widget('vbox_chains');
+
+    $chains_handlers{$board} = reload_chainsini($vbox_board_chains, $chainsini, $board);
+    my %board_handlers = ('h_prog_fpga' => generate_h_prog_fpga($board, $trbhostname, $addonortrb, $staplfilename),
+                                       'h_start_trbnetd' => generate_h_start_trbnetd($board, $trbhostname),
+                                       'h_waitbeforestart_6us' => generate_h_waitbeforestart_6us($board, $fpga_addr, $conf_waitstart_addr),
+                                       'h_waitbeforestart_1ms' => generate_h_waitbeforestart_1ms($board, $fpga_addr, $conf_waitstart_addr),
+                                       'h_waitbeforestart_1s' => generate_h_waitbeforestart_1s($board, $fpga_addr, $conf_waitstart_addr),
+                                      'h_trigger_init_sequence' => generate_h_trig($board, $fpga_addr, $conf_triginitseq_addr),
+                                       'h_maps_reset' => generate_h_trig($board, $fpga_addr, $conf_trigmapsreset_addr),
+                                       'h_run_jtag' => generate_h_trig($board, $fpga_addr, $conf_trigrunjtag_addr),
+                                       'h_write_once' => generate_h_trig($board, $fpga_addr, $conf_trigwriteonce_addr),
+                                       'h_maps_start' => generate_h_trig($board, $fpga_addr, $conf_trigmapsstart_addr)
+
+                              );
+    $boards_handlers{$board} = \%board_handlers;
+    $board_handlers{'h_set_standard'}  = generate_h_set_standard(\%boards_handlers, \%chains_handlers);
+    $boards_handlers{$board} = \%board_handlers;
+    $gladexml3->signal_autoconnect_all(%board_handlers);
+    my $vbox_board = $gladexml3->get_widget('vbox_top');
+    $vbox_board->reparent($notebook_boards);
+    $notebook_boards->set_tab_label_text($vbox_board, "$board" );
+  }
+  $notebook_boards->show_all;
+}
+
+sub reload_chainsini {
+  my ($vbox_board_chains, $chainsfile, $board) = @_;
+  my %chains_handlers_hash;
+  #my $window = $widget->get_parent_window;
+  my @children = $vbox_board_chains->get_children;
+  $vbox_board_chains->remove($children[0]);
+  my $hbox_chains = Gtk2::HBox->new(FALSE, 2); # homogeneous, spacing 2
+  #$hbox_chains->set_size_request(300,200);
+  $vbox_board_chains->pack_start($hbox_chains, TRUE, TRUE, 0);
+  $vbox_board_chains->reorder_child($hbox_chains,0);
+  $vbox_board_chains->resize_children();
+
+  # START from ui.pl: modified to add GUI elements and to program only when clicked in gui.  
+  # my $chainsfile= 'chains.ini';
+  my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+  my %allchains = $chainsSettings->get_all_settings;
+  
+  my $date = strftime "%Y%m%d%H%M%S", localtime;
+  my $initmem_folder = "/tmp/jtag_initmem/$date";
+  if(-e $initmem_folder) {
+    die("Error: Folder with the same date already exists!");
+  }
+  mkdir $initmem_folder,0755;
+  
+  # File with prefix names files for last programmed values
+  my $lastprogfilename = "/tmp/jtag_initmem/lastprog.txt";
+  my $handle_lastprog = FileHandle->new($lastprogfilename, 'w');
+  
+  # loop through chains
+  foreach my $chain (reverse sort keys %allchains) {
+         #GUI stuff BEGIN
+    my $gladexml2 = Gtk2::GladeXML->new('gui/design/buttons_BM_NP1_libglade.glade');
+    my $vbox_top = $gladexml2->get_widget('vbox_top'); 
+    $vbox_top->reparent($hbox_chains);
+    $hbox_chains->pack_start($vbox_top, TRUE, TRUE, 0); # expand, fill, padding=0
+          # GUI stuff END
+    reportd $chain, ": ";
+    #print join ' ', %{$allchains{$chain}}, "\n";
+    my %settings=%{$allchains{$chain}};
+    my @sensors;
+    my @drs;
+    my @drs_length;
+    my @old_drs;
+    my @old_drs_length;
+    my @irs;
+    my $irlen;
+    my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+    my $ram_addr  = $settings{'RAMtrbnetAddr'};
+    my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+    my $ram_base_addr  = $settings{'RAMbase_trbnetAddr'};
+    my $data_reg_addr = $settings{'DATAreg_trbnetAddr'};
+    my $conf_signals_addr = $settings{'CONFsignals_trbnetAddr'};
+    my $conf_resetafterfirstwrite_addr = $settings{'CONFresetafterfirstwrite_trbnetAddr'};
+    my $conf_resetbeforeinit_addr = $settings{'CONFresetbeforeinit_trbnetAddr'};
+    my $conf_chain_triginitseq_addr = $settings{'CONFtriginitseq_trbnetAddr'};
+    my $conf_chain_trigmapsreset_addr = $settings{'CONFtrigmapsreset_trbnetAddr'};
+    my $conf_chain_trigrunjtag_addr = $settings{'CONFtrigrunjtag_trbnetAddr'};
+    my $conf_chain_trigwriteonce_addr = $settings{'CONFtrigwriteonce_trbnetAddr'};
+    my $conf_chain_trigmapsstart_addr = $settings{'CONFtrigmapsstart_trbnetAddr'};
+
+    my $chainnr = $settings{'chainnr'};
+    my @gui_defaults1 = split (/,/,$settings{'guiBM_NP_defaults1'});
+    my @gui_defaults2 = split (/,/,$settings{'guiBM_NP_defaults2'});
+    $chain_defaults{$board}{$chain} = \@gui_defaults1;
+    $chain_defaults2{$board}{$chain} = \@gui_defaults2;
+    #my $staplfilename_delay1 = $settings{'FPGAboard_staplfilename_delay1'};
+
+    #my $slowcontrol_hostname = $settings{'TRBNETslowcontrol_hostname'};
+
+    my $memfiles_prefix; # the same prefix is used for the files for one chain
+                         # need one file per chip with at maximum 256 32 bit words
+                         # that are written at once.
+                         # then the RAM base pointer has to be changed for the next chip
+    my @memfilenames=();
+  
+    $memfiles_prefix="$initmem_folder/$chain";
+    foreach my $setting_name (sort keys %settings) {
+      if ($setting_name =~ /sensor[0-9]+/) {
+        push(@sensors, $setting_name);
+        @old_drs = @drs;
+        @old_drs_length = @drs_length;
+        @irs = ();
+        @drs = ();
+        @drs_length = ();
+        my $sensorfile = $settings{$setting_name};
+        reportd "loading sensor file: $sensorfile\n";
+        my $sensorSettingsO = new Config::Abstract::Ini("/daq/toolbox/sensors/".$sensorfile);
+        my %sensorSettings = $sensorSettingsO->get_all_settings;
+        my $this_irlen = $sensorSettingsO->get_entry_setting('General', 'IRLEN', '5');
+        my $bypassreg  = $sensorSettingsO->get_entry_setting('General', 'BYPASSREG', '1F');
+        if (!defined $irlen ){
+          $irlen = $this_irlen;
+        }
+        elsif($this_irlen != $irlen) {
+          reportd "this_irlen=$this_irlen in $sensorfile differs from previously set irlen=$irlen.\nThis should be supported by this version (trb_maps_jtag3) of the JTAG controller.\n But is it really intended?\n";
+        }
+        #print "irlen: ", $this_irlen, "\n";
+        # loop through data registers
+        my %sensorData = $sensorSettingsO->get_entry('Data');
+        foreach my $data_register_ir (sort keys %sensorData) {
+          my $value = $sensorData{$data_register_ir};
+          my ($ir,$drlength,$dr)=  split(/,/, $value); # dr is stored MSN first as hexadecimal string
+          $dr = uc(trim($dr));
+          if(length($dr)%8 != 0) {
+            die("Error: DR string is not multiple of 32 bit (4bytes = 8 nibbles)\n");
+          }
+          if($dr =~ /[^0-9A-F]+/) {
+            die("Error: Invalid hexadecimal string for DR given: \$dr=\"$dr\"\n");
+          }
+       #print "drlength: $drlength\n";
+          push(@drs_length, $drlength);
+          push(@drs, $dr);
+          push(@irs, $ir);
+          # only warning
+          if((defined $old_drs_length[@drs-1]) && ($drlength != $old_drs_length[@drs-1])) {
+              reportd ("Warning: Length of the same DR of two sensors differs.\n");
+          }
+        }
+        my $memfilename = $memfiles_prefix . "." . $setting_name . ".txt";
+        if( -e ($memfilename)) {
+          die ("Error: RAM text file \"$memfilename\" exists.");
+        }
+        reportd "Opening $memfilename...\n";
+        my $handle = FileHandle->new($memfilename, 'w');
+        push(@memfilenames, $memfilename);
+        # write numregs + IRlen
+        my $word = scalar($this_irlen)<<16;
+        $word = $word + scalar @irs;
+        ### $word = ($word<<16) + pack("L", scalar(@irs));
+        print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L", $word)))),0,8)) . "\t# IRlen & numregs \n";
+        #####print $handle "0x" .uc (substr(reverse(join('',unpack("h8", pack("L", scalar($this_irlen))))),4,4)) . uc (substr(reverse(join('',unpack("h8", pack("L", scalar(@irs))))),4,4)) . "\t# IRlen & numregs \n";
+  
+        #print "reverse test: " . reverse32bit(0x00000001)."\n";
+        my $initial = 0x00000000;
+        my $crcword = pack("L", reverse32bit($word));
+        my $crc0 = crc32($crcword, $initial);
+        #my $crc0_rn = ~reverse32bit($crc0);
+        #printf "crc0: %0.8X, crc0_rn: %0.8X, word: %0.8X\n", $crc0, $crc0_rn, $word;
+        # write DEV_ID
+        $word = 0x4D323601; 
+        print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L", $word)))),0,8)) . "\t# DEV_ID \n";
+        $crcword = pack("L", reverse32bit($word));
+        $crc0 = crc32($crcword, $crc0);
+        my $crc0_rn = ~reverse32bit($crc0);
+        #printf "crc0: %0.8X, crc0_rn: %0.8X, word: %0.8X\n", $crc0, $crc0_rn, $word;
+        # write pointer
+        my $offset = 3*@irs+4;
+        for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+          my $drlen = $drs_length[$reg_i];
+          $word = $offset;
+          #print $handle "0x". uc (substr(reverse(join('',unpack("h8", pack("L", 0)))),4,4)) . uc (substr(reverse(join('',unpack("h8", pack("L", scalar($offset))))),4,4))   . "\t# Pointer + reserved\n";
+          $crcword = pack("L", reverse32bit($word));
+          $crc0 = crc32($crcword, $crc0);
+          print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L",  $word)))),0,8)) . "\t# Pointer + reserved \n";
+          $word = $drlen;
+          $crcword = pack("L", reverse32bit($word));
+          $crc0 = crc32($crcword, $crc0);
+   
+          #print $handle "0x0000". uc (substr(reverse(join('',unpack("h8", pack("L", scalar($drlen))))),4,4))  . "\t# Length\n";
+          print $handle "0x" . uc (substr(reverse(join('',unpack("h8",pack("L",  $word)))),0,8)) . "\t# Length\n";
+          $offset += floor(($drlen+31)/32);
+        }
+        # write CRC-32
+        #my $ir_packed_r = pack("B*", scalar reverse substr(unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))),0, 32));
+        $crc0_rn = ~reverse32bit($crc0);
+        #printf "CRC: %0.8X.\n", $crc0_rn, 1;
+        my $line_crc = sprintf "%0.8X", $crc0_rn;
+        print $handle "0x". substr($line_crc,length($line_crc)-8,8) . "\t# CRC-32\n";
+  
+        my $crc1 = 0xFFFFFFFF;
+        # write IRs
+        for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+          my $ir = $irs[$reg_i];
+          #my @words = unpack("L", pack("H*", uc($ir)));
+          $word = unpack("L", pack("h*", (scalar reverse uc($ir)) ."000000"));
+       #print "ir=$ir.IR word: $word\n";
+          $crcword = pack("L", reverse32bit($word));
+          $crc1 = crc32($crcword, $crc1);
+          print $handle "0x".("0"x(8-length($ir))).uc($ir) . "\t# IR\n";
+        }
+        # write BYPASSREG IR
+        $word = unpack("L", pack("h*", (scalar reverse uc($bypassreg)) ."000000"));
+        $crcword = pack("L", reverse32bit($word));
+        $crc1 = crc32($crcword, $crc1);
+        print $handle "0x".("0"x(8-length($bypassreg))).uc($bypassreg) . "\t# IR BYPASS\n";
+        
+        # write DRs
+        for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+          my $length = $drs_length[$reg_i];
+          my $numwords = floor(($length+31)/32);
+          for(my $i=0;$i<$numwords; $i++) {
+               #print "length: $length\n";
+               #print "numwords: $numwords\n";
+         
+            $word = unpack("L", pack("h*", (scalar reverse uc(substr($drs[$reg_i],($numwords-$i-1)*8,8)))));
+            $crcword = pack("L", reverse32bit($word));
+            $crc1 = crc32($crcword, $crc1);
+            my $linestr = "0x". substr($drs[$reg_i],($numwords-$i-1)*8,8) . "\t# DR" . $reg_i . "\n";
+            print $handle $linestr; 
+          }
+        }
+        #write CRC-32
+        my $crc1_rn = ~reverse32bit($crc1);
+        $line_crc = sprintf "%0.8X", $crc1_rn;
+        print $handle "0x". substr($line_crc,length($line_crc)-8,8) . "\t# CRC-32\n";
+  
+      }
+    }
+    my $ref_h_prog_ram = generate_h_prog_ram($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $ram_base_addr, $ram_addr, scalar @sensors, \@memfilenames);
+    my %handlers_hash = ('h_man_maps_reset'=>generate_h_man_maps_reset($chain, $fpga_addr, $conf_signals_addr), 
+                                       #'h_prog_fpga_delay1' => generate_h_prog_fpga($chain, $trbhostname, $addonortrb, $staplfilename_delay1),
+                                       'h_delay0' => generate_h_delay ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, 0),
+                                       'h_delay1' => generate_h_delay ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, 1),
+                                       'h_delay2' => generate_h_delay ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, 2),
+                                       'h_delay3' => generate_h_delay ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, 3),
+                                       'h_prog_ram' => $ref_h_prog_ram,
+                                       'h_set_timing_10mhz' => generate_h_set_timing_10mhz($chain, $fpga_addr,$cmd_reg_addr, $data_reg_addr),
+                                       'h_set_timing_1mhz' => generate_h_set_timing_1mhz($chain, $fpga_addr,$cmd_reg_addr, $data_reg_addr),
+                                       'h_set_timing_100khz' => generate_h_set_timing_100khz($chain, $fpga_addr,$cmd_reg_addr, $data_reg_addr),
+                                      #'h_start' => generate_h_start($chain, $fpga_addr,$cmd_reg_addr),
+                                      #'h_stop'  => generate_h_stop($chain, $fpga_addr,$cmd_reg_addr),
+                                       'h_set_inout' => generate_h_set_inout($chain, $fpga_addr, $conf_signals_addr),
+                                       'h_maps_reset_before_on' => generate_h_maps_reset(1,$chain, $chainnr, $fpga_addr, $conf_resetbeforeinit_addr),
+                                       'h_maps_reset_before_off' => generate_h_maps_reset(0,$chain, $chainnr, $fpga_addr, $conf_resetbeforeinit_addr), 
+                                       'h_maps_reset_after_on' => generate_h_maps_reset(1,$chain, $chainnr, $fpga_addr, $conf_resetafterfirstwrite_addr),
+                                       'h_maps_reset_after_off' => generate_h_maps_reset(0,$chain, $chainnr, $fpga_addr, $conf_resetafterfirstwrite_addr), 
+                                      #'h_maps_start_on' => generate_h_maps_start(1,$chain, $fpga_addr, $conf_signals_addr), 
+                                      #'h_maps_start_off' => generate_h_maps_start(0,$chain, $fpga_addr, $conf_signals_addr), 
+                                       'h_maps_clk_on' => generate_h_maps_clk_signal(1,$chain, $fpga_addr, $conf_signals_addr),
+                                       'h_maps_clk_off' => generate_h_maps_clk_signal(0,$chain, $fpga_addr, $conf_signals_addr),
+                                      'h_trig_init_seq' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_triginitseq_addr),
+                                      'h_maps_reset' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_trigmapsreset_addr),
+                                      'h_run_jtag' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_trigrunjtag_addr),
+                                      'h_write_once' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_trigwriteonce_addr),
+                                      'h_maps_start' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_trigmapsstart_addr)
+                              );
+    $gladexml2->signal_autoconnect_all(%handlers_hash);
+    my $label_chainnr = $gladexml2->get_widget('label_chainnr');
+    $label_chainnr->set_label($chain);
+    $chains_handlers_hash{$chain} = \%handlers_hash;
+    reportd "\n";
+  }
+  print $handle_lastprog $initmem_folder;
+
+  $hbox_chains->show_all;
+  return \%chains_handlers_hash;
+  
+}
+
+
+# Boris
+sub exitclean{
+  Gtk2->main_quit();
+  exit (0);
+}
+
+
+
+    
+$gladexml->signal_autoconnect_from_package('main');
+#$gladexml->signal_autoconnect_all ('h_reload_chainsini'=>\&h_reload_chainsini);
+#$quitbtn = $gladexml->get_widget('Quit'); 
+my $window1 = $gladexml->get_widget('window1');
+$window1->signal_connect(destroy => \&exitclean);  #Boris
+$window1->show_all;
+Gtk2->main;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#   #print "data registers for FPGA $fpga_addr:", map { "$_ => $drs_binary{$_}\n" } keys %drs_binary;
+#   $drs_offset{$irs[0]} = 4+(scalar @irs)*2;
+#   for (my $i=1;$i<@irs;$i++) {
+#     my $dr_length = $drs_length{$irs[$i-1]};
+#     $drs_offset{$irs[$i]} = $drs_offset{$irs[$i-1]} + floor(($dr_length*(scalar @sensors)+31)/32) + 2; # add one x 32 bit for CRC, one x 32 bit for IR, integer division rounds down, right?
+#   }
+#   #open RAMTEXT, ">$memfiles_prefix{$chain}";
+#   $num_words = 0;
+#   my $ram_fh;
+#   my @mem_filenames;
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc (reverse(join('',unpack("h8", pack("L", scalar(@sensors)))))) . "\t# numchips \n"); # numchips; the reverse is done here because apparently internally the unsigned long is stored LSByte first (little endian)
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(join('',unpack("h8", pack("L", 0))))) . "\t# reserved\n"); # reserved
+#   for (my $i=0;$i<@irs;$i++) {
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(join('',unpack("h8", pack("L", $drs_offset{$irs[$i]}))))) . "\t# pointer\n"); # pointer
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix,  "0x".uc(reverse(join('',unpack("h8", pack("L", $drs_length{$irs[$i]}))))) . "\t# length \n"); # length
+#   }
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x00000000\t# pointer (end of list)\n");
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x00000000\t# length  (end of list)\n");
+#   for (my $i=0;$i<@irs;$i++) {
+#     my $ir=$irs[$i];
+#     #print "ir: $ir\n";
+#     my $ir_packed = pack("h*", (scalar reverse($ir)).("0"x (7-(length($ir)-1)%8)));
+#     my $ir_packed_r = pack("B*", scalar reverse substr(unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))),0, 32));
+#     #print "debug ir_packed   (h*): ". (scalar reverse($ir)).("0"x (8-length($ir)%32))."\n";
+#     #print "debug ir_packed_r (B*): ". scalar reverse unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))) ."\n";
+#     #print "debug2: " . (7-(length($ir)-1)%8) . "\n";
+#     #print "debug3: " . $ir . "\n";
+#     #print "debug4: " . $ir.("0"x (7-(length($ir)-1)%8)) . "\n";
+#     #print "debug5 (B*): ". unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))) ."\n";
+# 
+#     my $initial = 0x00000000;
+#     my $crc0 = crc32($ir_packed_r, $initial);
+#     #printf "CRC0: %X. ~reversed: %X\n", $crc0, $crc0_rn;
+# 
+#     for(my $i=0; $i<floor((length($drs_binary{$ir})-1)/32)+1;$i++){
+#       my $dr_word_packed_r = pack("b*", scalar reverse substr($drs_binary{$ir}.("0"x (31-(length($drs_binary{$ir})-1)%32)),($i)*32, 32));
+#       $crc0 = crc32($dr_word_packed_r, $crc0);
+#       my $crc0_rn = ~reverse32bit($crc0);
+#       printf "CRC: 0x%0.8X.\n", $crc0_rn;
+#     }
+#     my $crc0_rn = ~reverse32bit($crc0);
+#     #printf "CRC: %0.8X.\n", $crc0_rn, 1;
+#     my $line_crc = sprintf "0x%0.8X\t# CRC-32\n", $crc0_rn;
+#     print "debug dr_binary: " . $drs_binary{$ir} . "\n";
+#     my $dr_packed = pack("b*", $drs_binary{$ir}.("0"x (31-(length($drs_binary{$ir})-1)%32)));
+#     $drs{$ir} = unpack('h*', $dr_packed);
+#     print "debug drs: " . $drs{$ir} . "\n";
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".("0"x(8-length($ir))).uc($ir) . "\n");
+#     for(my $i=0; $i<floor((length( $drs{$ir}) -1)/8)+1; $i++){
+#       #print "dbg: i=$i, len=".length( $drs{$ir})."\n";
+#       if(length($drs{$ir}) >= ($i+1)*8) {
+#         memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(substr($drs{$ir}, ($i)*8, 8))) . "\n");
+#       }
+#       else {
+#         memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".("0"x(($i+1)*8-length($drs{$ir}))).uc(reverse(substr($drs{$ir}, ($i)*8, length($drs{$ir})%8))) . "\n");
+#       }
+#     }
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, $line_crc);
+#     
+#     #print "IR $ir, DR ". $drs{$ir} . "\n";
+#   }
+#   #close RAMTEXT;
+#   $ram_fh->close();
+#   #my $result = `cat $memfile{$fpga_addr}`;
+#   $ENV{'DAQOPSERVER'}="trb126";
+#   for(my $i=0;$i<scalar @mem_filenames;$i++) {
+#     # write RAM base pointer
+#     my $ihex = int_to_32bit_hex($i);
+#     print "trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n";
+#     my $result = `trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n`;
+#     print "set RAM base pointer: " . $result;
+#     # write to configuration RAM
+#     print "trbcmd wm $fpga_addr $ram_addr 0 $mem_filenames[$i]\n";
+#     $result = `trbcmd wm $fpga_addr $ram_addr 0 $mem_filenames[$i]`;
+#     print "write max. 256 32-bit-words: " . $result;
+#   }
+#}
+
+
+# init_writemem:
+# - loop through chains
+#   - loop through sensors
+#     - test if IR length is the same as for other sensors
+#     - loop through DRs
+#       - test if DR length is the same as for other sensors
+#     - add DR content to chain data register (hexadecimal string)
+#   - write contents for JTAG chain controller RAM to text file(s)
+#   - execute trbcmd to transfer file(s) to RAM of FPGA configured in chains.ini
+#
+# get_status:
+# get_error_counts:
+# reactivate_sensor:
+# deactivate_sensor:
diff --git a/soft/toolbox/jtag_atomic/the_gui_devel.pl b/soft/toolbox/jtag_atomic/the_gui_devel.pl
new file mode 100755 (executable)
index 0000000..f3663b7
--- /dev/null
@@ -0,0 +1,999 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX qw(strftime);
+use FileHandle;
+
+$ENV{DAQOPSERVER}='trb124';
+if(not( -e "/tmp/jtag_initmem")) {
+  system("mkdir /tmp/jtag_initmem");
+}
+#push(@INC, "./BN");
+#use lib "$ENV{PWD}/BN";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+
+use lib "BN/blib/arch";
+use BN::CRC32;
+#use String::CRC32;
+
+#use feature "state";
+use POSIX;
+# for a pure gtk+ glade project
+use Gtk2 -init;
+use Gtk2::GladeXML;
+use Glib qw/TRUE FALSE/;
+
+
+my %chain_defaults = (); #('h_stop', 'h_delay0', 'h_prog_ram', 'h_set_timing_10mhz',,'h_set_inout');
+my %board_defaults = (); #('h_period_0_15s');
+my %chain_defaults2 = (); #('h_start');
+
+# whitespace trimming from http://www.somacon.com/p114.php
+# Declare the subroutines
+sub trim($);
+sub ltrim($);
+sub rtrim($);
+  
+# Create a test string
+my $string = "  \t  Hello world!   ";
+
+# Here is how to output the trimmed text "Hello world!"
+#print trim($string)."\n";
+#print ltrim($string)."\n";
+#print rtrim($string)."\n";
+
+# Perl trim function to remove whitespace from the start and end of the string
+sub trim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       $string =~ s/\s+$//;
+       return $string;
+}
+# Left trim function to remove leading whitespace
+sub ltrim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       return $string;
+}
+# Right trim function to remove trailing whitespace
+sub rtrim($)
+{
+       my $string = shift;
+       $string =~ s/\s+$//;
+       return $string;
+}
+
+sub reverse32bit($) {
+  my ($in) = @_;
+  my $result = unpack("L", pack("B*", scalar reverse unpack("B*", pack("L",$in))));
+  return $result;
+  #return 1;
+}
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+my $num_words = 0;
+
+# this subroutine 
+# changes parameter 0, which holds the file handle
+sub memfile_writeline($$$$) {
+  my($memfile, $memfilenames, $memfiles_prefix, $line_string)=@_;
+  my $filenum = floor($num_words/256);
+  my $last_filenum = floor(($num_words-1)/256);
+  my $filenum_str = sprintf "%0.2d", $filenum;
+  my $memfilename = $memfiles_prefix.'.'.$filenum_str.".txt";
+
+  if((!defined $_[0])) { 
+    if( -e ($memfilename)) {
+      die ("Error: RAM text file \"$memfile\" exists.");
+    }
+    $_[0] = FileHandle->new($memfilename, 'w');
+    push(@{$_[1]}, $memfilename);
+  }
+  elsif($filenum!=$last_filenum) { 
+    $memfile->close();
+    if( -e ($memfilename)) {
+      die ("Error: RAM text file \"$memfile\" exists.");
+    }
+    $_[0] = FileHandle->new($memfilename, 'w');
+    push(@{$_[1]}, $memfilename);
+  }
+  my $fh = $_[0];
+  print $fh $line_string;
+  $num_words++;
+}
+my $gladexml = Gtk2::GladeXML->new('gui/design/window3_libglade.glade');
+my  $textview_msg = $gladexml->get_widget('textview_msg');
+my  $textview_msgdetailed = $gladexml->get_widget('textview_msgdetailed');
+my $logfilehandle = FileHandle->new('gui3log.txt', 'a');
+
+sub report {
+        # log to logfile
+        my $logdate = strftime "%Y%m%d%H%M%S", localtime;
+        print $logfilehandle $logdate . ":". $_[1];
+        # report( $textview, $string );
+        
+        my $textfield;
+        if($_[0] eq 'report_detailed') {
+          $textfield = $textview_msgdetailed;
+        }
+        else {
+          $textfield = $textview_msg;
+        }
+        my $buffer = $textfield->get_buffer;
+        my $sw = $textfield->get_parent;
+        my $iter = $buffer->get_end_iter;
+        $buffer->insert($iter,$_[1]);
+        
+        my $va = $sw->get_vadjustment;
+        #$va->set_value (($va->upper - $va->page_size) );
+
+        $va->set_value ( $va->upper );
+}
+
+sub init_msg {
+        my $textfield = $textview_msg;
+        my $buffer = $textfield->get_buffer;
+        $buffer->set_text($_[0]."\n");
+        reportd ($_[0]."\n");
+}
+
+sub reportd {
+  report('report_detailed', $_[0]);
+}
+
+
+sub execute_shell_command {
+        # input args: $command, $expected_output         #, $success_string, $sending_button
+
+        my $success = 0;        
+        my $command = $_[0];
+        my $expected = $_[1];
+        my $output = "";
+        #my $success_string = $_[1];
+        #my $sending_button = $_[2];
+
+        #my $message= $sending_button->get_label;
+        #reportd ( 'report_general', "attempting to $message");
+        report( 'report_detailed' , "\nexec $command\n\n");
+        open ( SHELL , "$command 2>&1 |" ) || report( 'report_general' , "failed to execute command.");
+
+        while ( <SHELL> ) {
+                report( 'report_detailed' , $_);
+                $output.=$_;
+#                 if ( $_ =~ m/$success_string/ ) {
+#                         report( 'report_general' , " ...success!\n" );
+#                         my $success = 1;
+#                 }
+        }
+#         if ($success == 0) {
+#                 report( 'report_general', " ...unclear\n");
+#         }
+        if(!($output eq $expected)) {
+          report('report_general', "unexpected output: ".$output."\n");
+        }
+        report( 'report_detailed' , "\n----------------------------\n");
+}
+
+
+sub execute_shell_command_return {
+        my $command = $_[0];
+        report( 'report_detailed' , "\nexec $command\n\n");
+        my $result = `$command 2>&1`;
+        report( 'report_detailed' , $result);
+        report( 'report_detailed' , "\n----------------------------\n");
+        if($? != 0) {report('report_general', "command failed. output: $result");}
+        return $result;
+}
+
+
+sub generate_h_man_maps_reset {
+  my ($chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "manual reset chain " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $resetnormal = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $resetinv = int_to_32bit_hex((~(1<<10)) & hex($resetnormal));
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$resetinv 2>&1 && sleep 1 && trbcmd w $fpga_addr $conf_signals_addr $resetnormal 2>&1", "");
+  }
+}
+
+sub generate_h_maps_start_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "generate MAPS start $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<9)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<9)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_maps_reset_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("MAPS reset signal $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<11)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<11)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval", "");
+  }
+}
+sub generate_h_maps_clk_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("generate MAPS clk $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<13)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<13)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_prog_ram {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $ram_base_addr, $ram_addr, $numsensors, $memfilenames_ref) = @_;
+  my @memfilenames = @{$memfilenames_ref};
+  return sub {
+    init_msg("program RAM $chain.");
+    execute_shell_command("./ui_writeram.pl -c $chain -q", "$chain: done.\n"); # load sensor*.ini
+  }
+}
+
+sub generate_h_set_timing_10mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 10 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x0000000A  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000003  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000008  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000009  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    #reportd $cmdline;
+    #system($cmdline);
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_1mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 1 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x00000064  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000031  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000062  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000063  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_100khz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 100 kHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x000003E8  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x000001CC  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000003C0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x000003E7  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+
+
+sub generate_h_delay {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $delay) =  @_;
+  return sub {
+    init_msg("Delay $delay $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $data_reg_addr 0x".int_to_32bit_hex($delay)."  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000067  2>&1 # COMMAND: M26C_CMD_SET_DELAY_EXPECTED_VALUES";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_waitbeforestart_6us { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 6us.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00000200", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+sub generate_h_waitbeforestart_1ms { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1ms.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00013880", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_waitbeforestart_1s { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1s.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x04C4B400", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_maps_reset {
+  my ($onoroff, $chain, $chainnr, $fpga_addr, $conf_resets_addr) = @_;
+  return sub {
+    init_msg("initseq setting: MAPS reset addr $conf_resets_addr $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_resets_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+            #off
+      $newval = int_to_32bit_hex((~(1<<$chainnr)) & hex($before));
+    }
+    else {
+            #on
+      $newval = int_to_32bit_hex(((1<<$chainnr)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_resets_addr 0x$newval", "");
+  }
+}
+
+
+sub generate_h_trig {
+  my ($board, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr  " . $board);
+    # hack: for runjtag trigger single trigger address is used, otherwise setting LSB would be sufficient
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0xFFFFFFFF", "");
+  }
+}
+sub generate_h_chain_trig {
+  my ($chain, $chainnr, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr chainnr:$chainnr " . $chain);
+    # set bit in trigger register correspondig to chain-# $chainnr
+    my $newval;
+    $newval = int_to_32bit_hex(((1<<$chainnr)));
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0x$newval", "");
+  }
+}
+
+
+
+sub generate_h_trigger_init_sequence {
+  my($board, $fpga_addr, $conf_fet_trigger_addr, $conf_period_addr) = @_;
+  return sub {
+  init_msg("Send Trigger $board.");
+    if(!defined($conf_fet_trigger_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # generate trigger 
+    execute_shell_command("trbcmd w $fpga_addr $conf_fet_trigger_addr 0x00000001", ""); # generate fet_trigger via trbnet
+  }
+}
+
+
+sub generate_h_set_inout {
+  my($chain, $fpga_addr, $conf_signals_addr) =  @_;
+  return sub {
+    init_msg("Set IN/OUT $chain.");
+    if(!defined($conf_signals_addr)){
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x000002EAA", "");# outputs/inputs not inverted, but activated, RESET activated and inverted (high)
+  }
+}
+
+sub generate_h_prog_fpga {
+  my($board, $trbhostname, $addonortrb, $staplfilename) =  @_;
+  return sub {
+    init_msg("Prog FPGA $board.");
+    if(!defined($trbhostname)||!defined($addonortrb)||!defined($staplfilename)){
+      report('report_general', "Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"jam_trbv2_ao --$addonortrb -aRUN_XILINX_PROC /home/hadaq/bneumann/$staplfilename\"", 
+    "------------- Connection accepted -------------
+> return value of command: 0
+> stdout: 
+Successful File Execution.
+------------- END OF OUTPUT ------------
+");
+  }
+}
+sub generate_h_start_trbnetd {
+  my($board, $trbhostname) =  @_;
+  return sub {
+    init_msg("Start trbnetd $board.");
+    if(!defined($trbhostname)){
+      report('report_general',"Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"trbnetd\"","------------- Connection accepted -------------
+> return value of command: 0
+------------- END OF OUTPUT ------------
+");
+  }
+}
+
+sub generate_h_set_standard {
+  my %boards_handlers = %{$_[0]};
+  my %chains_handlers = %{$_[1]};
+  return sub {
+    foreach my $board (reverse sort keys %chains_handlers) {
+      my %chains_handlers2 = %{$chains_handlers{$board}};
+      foreach my $chain (reverse sort keys %chains_handlers2) {
+        my %chain_handlers = %{$chains_handlers2{$chain}};
+        foreach my $handler_name (@{$chain_defaults{$board}{$chain}}) {
+         &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+        }
+      }
+    }
+    foreach my $board (reverse sort keys %boards_handlers) {
+      my %board_handlers = %{$boards_handlers{$board}};
+      foreach my $handler_name (@{$board_defaults{$board}}) {
+        &{$board_handlers{$handler_name}}; # run subroutine saved in hash
+      }
+    }
+    foreach my $board (reverse sort keys %chains_handlers) {
+      my %chains_handlers2 = %{$chains_handlers{$board}};
+      foreach my $chain (reverse sort keys %chains_handlers2) {
+        my %chain_handlers = %{$chains_handlers2{$chain}};
+        foreach my $handler_name (@{$chain_defaults2{$board}{$chain}}) {
+         &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+        }
+      }
+    }
+  }
+}
+
+ # outputs/inputs not inverted, but activated, RESET deactivated and inverted (high)
+sub h_reload_boardsini {
+  my ($widget, $data) = @_;
+  init_msg("reload!\n");
+  system("./generate_chainorder.pl");
+  my $boardsfile= 'boards.ini';
+  my $chainsSettings = new Config::Abstract::Ini($boardsfile);
+  my %allboards = $chainsSettings->get_all_settings;
+    
+  my $notebook_boards = Gtk2::Notebook->new;
+  my $main_vbox1 = $gladexml->get_widget('vbox1');
+  my @children = $main_vbox1->get_children;
+  $main_vbox1->remove($children[0]);
+  $main_vbox1->pack_start($notebook_boards, TRUE, TRUE, 0);
+  $main_vbox1->reorder_child($notebook_boards,0);
+  $main_vbox1->resize_children();
+#   my $testframe = Gtk2::Frame->new;
+#   my $testframe2 = Gtk2::Frame->new;
+#   $notebook_boards->append_page($testframe, "Test 1");
+#   $notebook_boards->append_page($testframe2, "Test 2");
+  my %boards_handlers;
+  my %chains_handlers;
+  foreach my $board (keys %allboards) {
+    my $gladexml3 = Gtk2::GladeXML->new('gui/design/buttons_BM_NP1_board_libglade.glade');
+    my %settings=%{$allboards{$board}};
+    my $chainsini = $settings{'chainsini'};
+    my $trbhostname = $settings{'FPGAboard_hostname'};
+    my $addonortrb = $settings{'FPGAboard_addonortrb'};
+    my $staplfilename = $settings{'FPGAboard_staplfilename'};
+    my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+    my $conf_period_addr = $settings{'CONFperiod_trbnetAddr'};
+    my $conf_offspillcounter_addr = $settings{'CONFoffspillcounter_trbnetAddr'};
+    my $conf_waitstart_addr = $settings{'CONFwaitstart_trbnetAddr'};
+    my $conf_triginitseq_addr = $settings{'CONFtriginitseq_trbnetAddr'};
+    my $conf_trigmapsreset_addr = $settings{'CONFtrigmapsreset_trbnetAddr'};
+    my $conf_trigrunjtag_addr = $settings{'CONFtrigrunjtag_trbnetAddr'};
+    my $conf_trigwriteonce_addr = $settings{'CONFtrigwriteonce_trbnetAddr'};
+    my $conf_trigmapsstart_addr = $settings{'CONFtrigmapsstart_trbnetAddr'};
+
+    my @gui_defaults = split (/,/,$settings{'guiBM_NP_defaults'});
+    $board_defaults{$board} = \@gui_defaults;
+
+
+    my $vbox_board_chains = $gladexml3->get_widget('vbox_chains');
+    my $vbox_board_ = $gladexml3->get_widget('vbox_chains');
+
+    $chains_handlers{$board} = reload_chainsini($vbox_board_chains, $chainsini, $board);
+    my %board_handlers = ('h_prog_fpga' => generate_h_prog_fpga($board, $trbhostname, $addonortrb, $staplfilename),
+                                       'h_start_trbnetd' => generate_h_start_trbnetd($board, $trbhostname),
+                                       'h_waitbeforestart_6us' => generate_h_waitbeforestart_6us($board, $fpga_addr, $conf_waitstart_addr),
+                                       'h_waitbeforestart_1ms' => generate_h_waitbeforestart_1ms($board, $fpga_addr, $conf_waitstart_addr),
+                                       'h_waitbeforestart_1s' => generate_h_waitbeforestart_1s($board, $fpga_addr, $conf_waitstart_addr),
+                                      'h_trigger_init_sequence' => generate_h_trig($board, $fpga_addr, $conf_triginitseq_addr),
+                                       'h_maps_reset' => generate_h_trig($board, $fpga_addr, $conf_trigmapsreset_addr),
+                                       'h_run_jtag' => generate_h_trig($board, $fpga_addr, $conf_trigrunjtag_addr),
+                                       'h_write_once' => generate_h_trig($board, $fpga_addr, $conf_trigwriteonce_addr),
+                                       'h_maps_start' => generate_h_trig($board, $fpga_addr, $conf_trigmapsstart_addr)
+
+                              );
+    $boards_handlers{$board} = \%board_handlers;
+    $board_handlers{'h_set_standard'}  = generate_h_set_standard(\%boards_handlers, \%chains_handlers);
+    $boards_handlers{$board} = \%board_handlers;
+    $gladexml3->signal_autoconnect_all(%board_handlers);
+    my $vbox_board = $gladexml3->get_widget('vbox_top');
+    $vbox_board->reparent($notebook_boards);
+    $notebook_boards->set_tab_label_text($vbox_board, "$board" );
+  }
+  $notebook_boards->show_all;
+}
+
+sub reload_chainsini {
+  my ($vbox_board_chains, $chainsfile, $board) = @_;
+  my %chains_handlers_hash;
+  #my $window = $widget->get_parent_window;
+  my @children = $vbox_board_chains->get_children;
+  $vbox_board_chains->remove($children[0]);
+  my $hbox_chains = Gtk2::HBox->new(FALSE, 2); # homogeneous, spacing 2
+  #$hbox_chains->set_size_request(300,200);
+  $vbox_board_chains->pack_start($hbox_chains, TRUE, TRUE, 0);
+  $vbox_board_chains->reorder_child($hbox_chains,0);
+  $vbox_board_chains->resize_children();
+
+  # START from ui.pl: modified to add GUI elements and to program only when clicked in gui.  
+  # my $chainsfile= 'chains.ini';
+  my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+  my %allchains = $chainsSettings->get_all_settings;
+  
+  my $date = strftime "%Y%m%d%H%M%S", localtime;
+  my $initmem_folder = "/tmp/jtag_initmem/$date";
+  if(-e $initmem_folder) {
+    die("Error: Folder with the same date already exists!");
+  }
+  mkdir $initmem_folder,0755;
+  
+  # File with prefix names files for last programmed values
+  my $lastprogfilename = "/tmp/jtag_initmem/lastprog.txt";
+  my $handle_lastprog = FileHandle->new($lastprogfilename, 'w');
+  
+  # loop through chains
+  foreach my $chain (reverse sort keys %allchains) {
+         #GUI stuff BEGIN
+    my $gladexml2 = Gtk2::GladeXML->new('gui/design/buttons_BM_NP1_libglade.glade');
+    my $vbox_top = $gladexml2->get_widget('vbox_top'); 
+    $vbox_top->reparent($hbox_chains);
+    $hbox_chains->pack_start($vbox_top, TRUE, TRUE, 0); # expand, fill, padding=0
+          # GUI stuff END
+    reportd $chain, ": ";
+    #print join ' ', %{$allchains{$chain}}, "\n";
+    my %settings=%{$allchains{$chain}};
+    my @sensors;
+    my @drs;
+    my @drs_length;
+    my @old_drs;
+    my @old_drs_length;
+    my @irs;
+    my $irlen;
+    my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+    my $ram_addr  = $settings{'RAMtrbnetAddr'};
+    my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+    my $ram_base_addr  = $settings{'RAMbase_trbnetAddr'};
+    my $data_reg_addr = $settings{'DATAreg_trbnetAddr'};
+    my $conf_signals_addr = $settings{'CONFsignals_trbnetAddr'};
+    my $conf_resetafterfirstwrite_addr = $settings{'CONFresetafterfirstwrite_trbnetAddr'};
+    my $conf_resetbeforeinit_addr = $settings{'CONFresetbeforeinit_trbnetAddr'};
+    my $conf_chain_triginitseq_addr = $settings{'CONFtriginitseq_trbnetAddr'};
+    my $conf_chain_trigmapsreset_addr = $settings{'CONFtrigmapsreset_trbnetAddr'};
+    my $conf_chain_trigrunjtag_addr = $settings{'CONFtrigrunjtag_trbnetAddr'};
+    my $conf_chain_trigwriteonce_addr = $settings{'CONFtrigwriteonce_trbnetAddr'};
+    my $conf_chain_trigmapsstart_addr = $settings{'CONFtrigmapsstart_trbnetAddr'};
+
+    my $chainnr = $settings{'chainnr'};
+    my @gui_defaults1 = split (/,/,$settings{'guiBM_NP_defaults1'});
+    my @gui_defaults2 = split (/,/,$settings{'guiBM_NP_defaults2'});
+    $chain_defaults{$board}{$chain} = \@gui_defaults1;
+    $chain_defaults2{$board}{$chain} = \@gui_defaults2;
+    #my $staplfilename_delay1 = $settings{'FPGAboard_staplfilename_delay1'};
+
+    #my $slowcontrol_hostname = $settings{'TRBNETslowcontrol_hostname'};
+
+    my $memfiles_prefix; # the same prefix is used for the files for one chain
+                         # need one file per chip with at maximum 256 32 bit words
+                         # that are written at once.
+                         # then the RAM base pointer has to be changed for the next chip
+    my @memfilenames=();
+  
+    $memfiles_prefix="$initmem_folder/$chain";
+    foreach my $setting_name (sort keys %settings) {
+      if ($setting_name =~ /sensor[0-9]+/) {
+        push(@sensors, $setting_name);
+        @old_drs = @drs;
+        @old_drs_length = @drs_length;
+        @irs = ();
+        @drs = ();
+        @drs_length = ();
+        my $sensorfile = $settings{$setting_name};
+        reportd "loading sensor file: $sensorfile\n";
+        my $sensorSettingsO = new Config::Abstract::Ini("/daq/toolbox/sensors/".$sensorfile);
+        my %sensorSettings = $sensorSettingsO->get_all_settings;
+        my $this_irlen = $sensorSettingsO->get_entry_setting('General', 'IRLEN', '5');
+        my $bypassreg  = $sensorSettingsO->get_entry_setting('General', 'BYPASSREG', '1F');
+        if (!defined $irlen ){
+          $irlen = $this_irlen;
+        }
+        elsif($this_irlen != $irlen) {
+          reportd "this_irlen=$this_irlen in $sensorfile differs from previously set irlen=$irlen.\nThis should be supported by this version (trb_maps_jtag3) of the JTAG controller.\n But is it really intended?\n";
+        }
+        #print "irlen: ", $this_irlen, "\n";
+        # loop through data registers
+        my %sensorData = $sensorSettingsO->get_entry('Data');
+        foreach my $data_register_ir (sort keys %sensorData) {
+          my $value = $sensorData{$data_register_ir};
+          my ($ir,$drlength,$dr)=  split(/,/, $value); # dr is stored MSN first as hexadecimal string
+          $dr = uc(trim($dr));
+          if(length($dr)%8 != 0) {
+            die("Error: DR string is not multiple of 32 bit (4bytes = 8 nibbles)\n");
+          }
+          if($dr =~ /[^0-9A-F]+/) {
+            die("Error: Invalid hexadecimal string for DR given: \$dr=\"$dr\"\n");
+          }
+       #print "drlength: $drlength\n";
+          push(@drs_length, $drlength);
+          push(@drs, $dr);
+          push(@irs, $ir);
+          # only warning
+          if((defined $old_drs_length[@drs-1]) && ($drlength != $old_drs_length[@drs-1])) {
+              reportd ("Warning: Length of the same DR of two sensors differs.\n");
+          }
+        }
+        my $memfilename = $memfiles_prefix . "." . $setting_name . ".txt";
+        if( -e ($memfilename)) {
+          die ("Error: RAM text file \"$memfilename\" exists.");
+        }
+        reportd "Opening $memfilename...\n";
+        my $handle = FileHandle->new($memfilename, 'w');
+        push(@memfilenames, $memfilename);
+        # write numregs + IRlen
+        my $word = scalar($this_irlen)<<16;
+        $word = $word + scalar @irs;
+        ### $word = ($word<<16) + pack("L", scalar(@irs));
+        print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L", $word)))),0,8)) . "\t# IRlen & numregs \n";
+        #####print $handle "0x" .uc (substr(reverse(join('',unpack("h8", pack("L", scalar($this_irlen))))),4,4)) . uc (substr(reverse(join('',unpack("h8", pack("L", scalar(@irs))))),4,4)) . "\t# IRlen & numregs \n";
+  
+        #print "reverse test: " . reverse32bit(0x00000001)."\n";
+        my $initial = 0x00000000;
+        my $crcword = pack("L", reverse32bit($word));
+        my $crc0 = crc32($crcword, $initial);
+        #my $crc0_rn = ~reverse32bit($crc0);
+        #printf "crc0: %0.8X, crc0_rn: %0.8X, word: %0.8X\n", $crc0, $crc0_rn, $word;
+        # write DEV_ID
+        $word = 0x4D323601; 
+        print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L", $word)))),0,8)) . "\t# DEV_ID \n";
+        $crcword = pack("L", reverse32bit($word));
+        $crc0 = crc32($crcword, $crc0);
+        my $crc0_rn = ~reverse32bit($crc0);
+        #printf "crc0: %0.8X, crc0_rn: %0.8X, word: %0.8X\n", $crc0, $crc0_rn, $word;
+        # write pointer
+        my $offset = 3*@irs+4;
+        for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+          my $drlen = $drs_length[$reg_i];
+          $word = $offset;
+          #print $handle "0x". uc (substr(reverse(join('',unpack("h8", pack("L", 0)))),4,4)) . uc (substr(reverse(join('',unpack("h8", pack("L", scalar($offset))))),4,4))   . "\t# Pointer + reserved\n";
+          $crcword = pack("L", reverse32bit($word));
+          $crc0 = crc32($crcword, $crc0);
+          print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L",  $word)))),0,8)) . "\t# Pointer + reserved \n";
+          $word = $drlen;
+          $crcword = pack("L", reverse32bit($word));
+          $crc0 = crc32($crcword, $crc0);
+   
+          #print $handle "0x0000". uc (substr(reverse(join('',unpack("h8", pack("L", scalar($drlen))))),4,4))  . "\t# Length\n";
+          print $handle "0x" . uc (substr(reverse(join('',unpack("h8",pack("L",  $word)))),0,8)) . "\t# Length\n";
+          $offset += floor(($drlen+31)/32);
+        }
+        # write CRC-32
+        #my $ir_packed_r = pack("B*", scalar reverse substr(unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))),0, 32));
+        $crc0_rn = ~reverse32bit($crc0);
+        #printf "CRC: %0.8X.\n", $crc0_rn, 1;
+        my $line_crc = sprintf "%0.8X", $crc0_rn;
+        print $handle "0x". substr($line_crc,length($line_crc)-8,8) . "\t# CRC-32\n";
+  
+        my $crc1 = 0xFFFFFFFF;
+        # write IRs
+        for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+          my $ir = $irs[$reg_i];
+          #my @words = unpack("L", pack("H*", uc($ir)));
+          $word = unpack("L", pack("h*", (scalar reverse uc($ir)) ."000000"));
+       #print "ir=$ir.IR word: $word\n";
+          $crcword = pack("L", reverse32bit($word));
+          $crc1 = crc32($crcword, $crc1);
+          print $handle "0x".("0"x(8-length($ir))).uc($ir) . "\t# IR\n";
+        }
+        # write BYPASSREG IR
+        $word = unpack("L", pack("h*", (scalar reverse uc($bypassreg)) ."000000"));
+        $crcword = pack("L", reverse32bit($word));
+        $crc1 = crc32($crcword, $crc1);
+        print $handle "0x".("0"x(8-length($bypassreg))).uc($bypassreg) . "\t# IR BYPASS\n";
+        
+        # write DRs
+        for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+          my $length = $drs_length[$reg_i];
+          my $numwords = floor(($length+31)/32);
+          for(my $i=0;$i<$numwords; $i++) {
+               #print "length: $length\n";
+               #print "numwords: $numwords\n";
+         
+            $word = unpack("L", pack("h*", (scalar reverse uc(substr($drs[$reg_i],($numwords-$i-1)*8,8)))));
+            $crcword = pack("L", reverse32bit($word));
+            $crc1 = crc32($crcword, $crc1);
+            my $linestr = "0x". substr($drs[$reg_i],($numwords-$i-1)*8,8) . "\t# DR" . $reg_i . "\n";
+            print $handle $linestr; 
+          }
+        }
+        #write CRC-32
+        my $crc1_rn = ~reverse32bit($crc1);
+        $line_crc = sprintf "%0.8X", $crc1_rn;
+        print $handle "0x". substr($line_crc,length($line_crc)-8,8) . "\t# CRC-32\n";
+  
+      }
+    }
+    my $ref_h_prog_ram = generate_h_prog_ram($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $ram_base_addr, $ram_addr, scalar @sensors, \@memfilenames);
+    my %handlers_hash = ('h_man_maps_reset'=>generate_h_man_maps_reset($chain, $fpga_addr, $conf_signals_addr), 
+                                       #'h_prog_fpga_delay1' => generate_h_prog_fpga($chain, $trbhostname, $addonortrb, $staplfilename_delay1),
+                                       'h_delay0' => generate_h_delay ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, 0),
+                                       'h_delay1' => generate_h_delay ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, 1),
+                                       'h_delay2' => generate_h_delay ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, 2),
+                                       'h_delay3' => generate_h_delay ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, 3),
+                                       'h_prog_ram' => $ref_h_prog_ram,
+                                       'h_set_timing_10mhz' => generate_h_set_timing_10mhz($chain, $fpga_addr,$cmd_reg_addr, $data_reg_addr),
+                                       'h_set_timing_1mhz' => generate_h_set_timing_1mhz($chain, $fpga_addr,$cmd_reg_addr, $data_reg_addr),
+                                       'h_set_timing_100khz' => generate_h_set_timing_100khz($chain, $fpga_addr,$cmd_reg_addr, $data_reg_addr),
+                                      #'h_start' => generate_h_start($chain, $fpga_addr,$cmd_reg_addr),
+                                      #'h_stop'  => generate_h_stop($chain, $fpga_addr,$cmd_reg_addr),
+                                       'h_set_inout' => generate_h_set_inout($chain, $fpga_addr, $conf_signals_addr),
+                                       'h_maps_reset_before_on' => generate_h_maps_reset(1,$chain, $chainnr, $fpga_addr, $conf_resetbeforeinit_addr),
+                                       'h_maps_reset_before_off' => generate_h_maps_reset(0,$chain, $chainnr, $fpga_addr, $conf_resetbeforeinit_addr), 
+                                       'h_maps_reset_after_on' => generate_h_maps_reset(1,$chain, $chainnr, $fpga_addr, $conf_resetafterfirstwrite_addr),
+                                       'h_maps_reset_after_off' => generate_h_maps_reset(0,$chain, $chainnr, $fpga_addr, $conf_resetafterfirstwrite_addr), 
+                                      #'h_maps_start_on' => generate_h_maps_start(1,$chain, $fpga_addr, $conf_signals_addr), 
+                                      #'h_maps_start_off' => generate_h_maps_start(0,$chain, $fpga_addr, $conf_signals_addr), 
+                                       'h_maps_clk_on' => generate_h_maps_clk_signal(1,$chain, $fpga_addr, $conf_signals_addr),
+                                       'h_maps_clk_off' => generate_h_maps_clk_signal(0,$chain, $fpga_addr, $conf_signals_addr),
+                                      'h_trig_init_seq' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_triginitseq_addr),
+                                      'h_maps_reset' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_trigmapsreset_addr),
+                                      'h_run_jtag' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_trigrunjtag_addr),
+                                      'h_write_once' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_trigwriteonce_addr),
+                                      'h_maps_start' => generate_h_chain_trig($chain, $chainnr, $fpga_addr, $conf_chain_trigmapsstart_addr)
+                              );
+    $gladexml2->signal_autoconnect_all(%handlers_hash);
+    my $label_chainnr = $gladexml2->get_widget('label_chainnr');
+    $label_chainnr->set_label($chain);
+    $chains_handlers_hash{$chain} = \%handlers_hash;
+    reportd "\n";
+  }
+  print $handle_lastprog $initmem_folder;
+
+  $hbox_chains->show_all;
+  return \%chains_handlers_hash;
+  
+}
+
+
+# Boris
+sub exitclean{
+  Gtk2->main_quit();
+  exit (0);
+}
+
+
+
+    
+$gladexml->signal_autoconnect_from_package('main');
+#$gladexml->signal_autoconnect_all ('h_reload_chainsini'=>\&h_reload_chainsini);
+#$quitbtn = $gladexml->get_widget('Quit'); 
+my $window1 = $gladexml->get_widget('window1');
+$window1->signal_connect(destroy => \&exitclean);  #Boris
+$window1->show_all;
+Gtk2->main;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#   #print "data registers for FPGA $fpga_addr:", map { "$_ => $drs_binary{$_}\n" } keys %drs_binary;
+#   $drs_offset{$irs[0]} = 4+(scalar @irs)*2;
+#   for (my $i=1;$i<@irs;$i++) {
+#     my $dr_length = $drs_length{$irs[$i-1]};
+#     $drs_offset{$irs[$i]} = $drs_offset{$irs[$i-1]} + floor(($dr_length*(scalar @sensors)+31)/32) + 2; # add one x 32 bit for CRC, one x 32 bit for IR, integer division rounds down, right?
+#   }
+#   #open RAMTEXT, ">$memfiles_prefix{$chain}";
+#   $num_words = 0;
+#   my $ram_fh;
+#   my @mem_filenames;
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc (reverse(join('',unpack("h8", pack("L", scalar(@sensors)))))) . "\t# numchips \n"); # numchips; the reverse is done here because apparently internally the unsigned long is stored LSByte first (little endian)
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(join('',unpack("h8", pack("L", 0))))) . "\t# reserved\n"); # reserved
+#   for (my $i=0;$i<@irs;$i++) {
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(join('',unpack("h8", pack("L", $drs_offset{$irs[$i]}))))) . "\t# pointer\n"); # pointer
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix,  "0x".uc(reverse(join('',unpack("h8", pack("L", $drs_length{$irs[$i]}))))) . "\t# length \n"); # length
+#   }
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x00000000\t# pointer (end of list)\n");
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x00000000\t# length  (end of list)\n");
+#   for (my $i=0;$i<@irs;$i++) {
+#     my $ir=$irs[$i];
+#     #print "ir: $ir\n";
+#     my $ir_packed = pack("h*", (scalar reverse($ir)).("0"x (7-(length($ir)-1)%8)));
+#     my $ir_packed_r = pack("B*", scalar reverse substr(unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))),0, 32));
+#     #print "debug ir_packed   (h*): ". (scalar reverse($ir)).("0"x (8-length($ir)%32))."\n";
+#     #print "debug ir_packed_r (B*): ". scalar reverse unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))) ."\n";
+#     #print "debug2: " . (7-(length($ir)-1)%8) . "\n";
+#     #print "debug3: " . $ir . "\n";
+#     #print "debug4: " . $ir.("0"x (7-(length($ir)-1)%8)) . "\n";
+#     #print "debug5 (B*): ". unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))) ."\n";
+# 
+#     my $initial = 0x00000000;
+#     my $crc0 = crc32($ir_packed_r, $initial);
+#     #printf "CRC0: %X. ~reversed: %X\n", $crc0, $crc0_rn;
+# 
+#     for(my $i=0; $i<floor((length($drs_binary{$ir})-1)/32)+1;$i++){
+#       my $dr_word_packed_r = pack("b*", scalar reverse substr($drs_binary{$ir}.("0"x (31-(length($drs_binary{$ir})-1)%32)),($i)*32, 32));
+#       $crc0 = crc32($dr_word_packed_r, $crc0);
+#       my $crc0_rn = ~reverse32bit($crc0);
+#       printf "CRC: 0x%0.8X.\n", $crc0_rn;
+#     }
+#     my $crc0_rn = ~reverse32bit($crc0);
+#     #printf "CRC: %0.8X.\n", $crc0_rn, 1;
+#     my $line_crc = sprintf "0x%0.8X\t# CRC-32\n", $crc0_rn;
+#     print "debug dr_binary: " . $drs_binary{$ir} . "\n";
+#     my $dr_packed = pack("b*", $drs_binary{$ir}.("0"x (31-(length($drs_binary{$ir})-1)%32)));
+#     $drs{$ir} = unpack('h*', $dr_packed);
+#     print "debug drs: " . $drs{$ir} . "\n";
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".("0"x(8-length($ir))).uc($ir) . "\n");
+#     for(my $i=0; $i<floor((length( $drs{$ir}) -1)/8)+1; $i++){
+#       #print "dbg: i=$i, len=".length( $drs{$ir})."\n";
+#       if(length($drs{$ir}) >= ($i+1)*8) {
+#         memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(substr($drs{$ir}, ($i)*8, 8))) . "\n");
+#       }
+#       else {
+#         memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".("0"x(($i+1)*8-length($drs{$ir}))).uc(reverse(substr($drs{$ir}, ($i)*8, length($drs{$ir})%8))) . "\n");
+#       }
+#     }
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, $line_crc);
+#     
+#     #print "IR $ir, DR ". $drs{$ir} . "\n";
+#   }
+#   #close RAMTEXT;
+#   $ram_fh->close();
+#   #my $result = `cat $memfile{$fpga_addr}`;
+#   $ENV{'DAQOPSERVER'}="trb126";
+#   for(my $i=0;$i<scalar @mem_filenames;$i++) {
+#     # write RAM base pointer
+#     my $ihex = int_to_32bit_hex($i);
+#     print "trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n";
+#     my $result = `trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n`;
+#     print "set RAM base pointer: " . $result;
+#     # write to configuration RAM
+#     print "trbcmd wm $fpga_addr $ram_addr 0 $mem_filenames[$i]\n";
+#     $result = `trbcmd wm $fpga_addr $ram_addr 0 $mem_filenames[$i]`;
+#     print "write max. 256 32-bit-words: " . $result;
+#   }
+#}
+
+
+# init_writemem:
+# - loop through chains
+#   - loop through sensors
+#     - test if IR length is the same as for other sensors
+#     - loop through DRs
+#       - test if DR length is the same as for other sensors
+#     - add DR content to chain data register (hexadecimal string)
+#   - write contents for JTAG chain controller RAM to text file(s)
+#   - execute trbcmd to transfer file(s) to RAM of FPGA configured in chains.ini
+#
+# get_status:
+# get_error_counts:
+# reactivate_sensor:
+# deactivate_sensor:
diff --git a/soft/toolbox/jtag_atomic/trigger_init_sequence_allchains_loop.sh b/soft/toolbox/jtag_atomic/trigger_init_sequence_allchains_loop.sh
new file mode 100755 (executable)
index 0000000..e45c094
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+while true; do
+  trbcmd w 0xf013 0xc003 0x00000001
+  sleep 0.005
+done
diff --git a/soft/toolbox/jtag_atomic/trigger_init_sequence_allchains_loop_wait50ms.sh b/soft/toolbox/jtag_atomic/trigger_init_sequence_allchains_loop_wait50ms.sh
new file mode 100755 (executable)
index 0000000..973ac41
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+while true; do
+  trbcmd w 0xf013 0xc003 0x00000001
+  sleep 0.050
+done
diff --git a/soft/toolbox/jtag_atomic/ui.pl b/soft/toolbox/jtag_atomic/ui.pl
new file mode 100755 (executable)
index 0000000..e09e959
--- /dev/null
@@ -0,0 +1,736 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX qw(strftime);
+use FileHandle;
+use Getopt::Long;
+use Sys::Syslog;
+
+$ENV{DAQOPSERVER}='trb124';
+
+my $opt_help;
+my $opt_chain;
+my $opt_board;
+my $opt_operation;
+my $opt_addr;
+my $opt_quiet;
+my %chain_defaults = (); #('h_stop', 'h_delay0', 'h_prog_ram', 'h_set_timing_10mhz',,'h_set_inout');
+my %board_defaults = (); #('h_period_0_15s');
+my %chain_defaults2 = (); #('h_start');
+openlog("atomic,ui.pl", "perror", "local1");
+
+GetOptions ('h|help'      => \$opt_help,
+            'b|board=s'   => \$opt_board,
+            'c|chain=s'   => \$opt_chain,
+            'o|operation=s' => \$opt_operation,
+            'a|addr=s' => \$opt_addr,
+            'q|quiet' => \$opt_quiet
+                            );
+if($opt_help or not defined $opt_board) {
+    &help();
+    exit(0);
+}
+
+
+
+sub help(){
+    syslog("debug", "showing usage information.");
+    print "Usage: ui.pl [-c <chain name> ] [-o <Operation>] [-a <address>]
+   
+required:
+   [-c|--chain  <JTAG chain name>]             : Select the JTAG chain (controller) whose RAM should be written.
+   [-b|--board  <JTAG board name>]             : Select the JTAG/MAIN board for setting signals. (use board01)
+   [-o|--operation  <handle name from gui.pl without h_>]             : Select operation (on the selected JTAG chain).
+   [-a|--addr  <address for operation>]             : read_ram1b_word needs address
+   [-q|--quiet  ]             : suppress informative output
+    
+board operations (no chain parameter given):
+    prog_fpga :             program FPGA on trb
+    start_trbnetd:          start trbnet daemon on trb
+    waitbeforestart_6us:    set wait before start time to 6 us
+    waitbeforestart_1ms:    set wait before start time to 1 ms
+    waitbeforestart_1s:     set wait before start time to 1 s
+    trigger_init_sequence:  trigger initialization sequence for all chains, 
+                            3xWRITE+1xREAD DEV ID, reset as configured
+    maps_reset:             generate RESET pulse, all chains
+    run_jtag:               Run 3xWRITE Registers+ 1xRead DEV ID, no reset, all chains
+    write_once:             Once write all registers all chains
+    maps_start:             generate START pulse, all chains
+
+chain operations (with -c parameter)
+    man_maps_reset:         software generated reset pulse
+    delay0:                 set delay 0 JTAG Clock cycles
+    delay1:                 set delay 1 JTAG Clock cycles
+    delay2:                 set delay 2 JTAG Clock cycles
+    delay3:                 set delay 3 JTAG Clock cycles
+    prog_ram:               Write from sensor*.ini to RAM with JTAG registers on FPGA
+    set_timing_10mhz:       Set 10 MHz TCK
+    set_timing_1mhz:        Set 1 MHz TCK
+    set_timing_100khz:      Set 100 kHz TCK
+    set_inout:              Initialize I/O pin settings (signals_invert)
+    maps_reset_before_on:   set reset before first WRITE on trig_init_seq/trigger_init_sequence
+    maps_reset_before_off:  set reset before ... off
+    maps_reset_after_on:    set reset after  ... on
+    maps_reset_after_off:   set reset after  ... off
+    maps_clk_on:            activate MAPS CLK (80MHz) immediately 
+    maps_clk_off:           deactivate MAPS CLK (80MHz) immediately 
+    trig_init_seq:          trigger initialization sequence
+    maps_reset:             generate RESET pulse 
+    run_jtag:               run JTAG (see board operation) this chain
+    write_once:             write once all registers
+    maps_start:             generate START pulse
+    read_ram1b_word:        read 32 bit word at address given with -a option from ram1b CONNECTION REMOVED
+    read_ram1c_word:        read 32 bit word at address given with -a option from ram1c
+    copy_ram1b1c:           trigger copy of ram1b to ram1c
+
+       
+";
+
+
+}
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+sub report {
+  if(defined($opt_quiet)){
+    if($_[0] eq 'data') { print $_[1]; }
+  }
+  else {
+    print $_[1];
+  }
+}
+sub reportd {
+  if(!defined($opt_quiet)){
+    print "debug:" . $_[0];
+  }
+}
+sub init_msg {
+  if(!defined($opt_quiet)){
+    print $_[0];
+  }
+}
+sub execute_shell_command {
+        # input args: $command, $expected_output         #, $success_string, $sending_button
+
+        my $success = 0;        
+        my $command = $_[0];
+        my $expected = $_[1];
+        my $output = "";
+        #my $success_string = $_[1];
+        #my $sending_button = $_[2];
+
+        #my $message= $sending_button->get_label;
+        #reportd ( 'report_general', "attempting to $message");
+        report( 'report_detailed' , "\nexec $command\n\n");
+        if(not open ( SHELL , "$command 2>&1 |" )) {
+          report( 'report_general' , "failed to execute command.");
+          syslog("ERR", "command failed.");
+        }
+
+        while ( <SHELL> ) {
+                report( 'report_detailed' , $_);
+                $output.=$_;
+#                 if ( $_ =~ m/$success_string/ ) {
+#                         report( 'report_general' , " ...success!\n" );
+#                         my $success = 1;
+#                 }
+        }
+#         if ($success == 0) {
+#                 report( 'report_general', " ...unclear\n");
+#         }
+        if(!($output eq $expected)) {
+          report('report_general', "unexpected output: ".$output."\n");
+          syslog("ERR", "unexpected output: $output.");
+        }
+        report( 'report_detailed' , "\n----------------------------\n");
+}
+
+
+sub execute_shell_command_return {
+        my $command = $_[0];
+        report( 'report_detailed' , "\nexec $command\n\n");
+        my $result = `$command 2>&1`;
+        report( 'report_detailed' , $result);
+        report( 'report_detailed' , "\n----------------------------\n");
+        if($? != 0) {
+          report('report_general', "command failed. output: $result");
+          syslog('ERR', "command failed. output: $result.");
+        }
+        return $result;
+}
+
+
+sub generate_h_read_ram1b_word {
+  my ($chain, $fpga_addr, $debug_ram1baddr, $debug_ram1bdata, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $debug_ram1baddr $addr", "");
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $debug_ram1bdata");
+    report('report_general', "regval: ". substr($regval, 8, 10). "\n");
+    report('data', substr($regval, 8, 10));
+  }
+}
+sub generate_h_read_ram1c_word {
+  my ($chain, $fpga_addr, $debug_ram1caddr, $debug_ram1cdata, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $debug_ram1caddr $addr", "");
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $debug_ram1cdata");
+    report('report_general', "regval: ". substr($regval, 8, 10). "\n");
+    report('data', substr($regval, 8, 10));
+  }
+}
+
+
+sub generate_h_copy_ram1b1c {
+  my ($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $addr) = @_;
+  return sub {
+    init_msg( "read ram1b word " . $chain);
+    execute_shell_command("trbcmd w $fpga_addr $data_reg_addr 0x00000008", ""); # unconditional trigger
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000064", ""); # M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER
+  }
+}
+
+
+sub generate_h_man_maps_reset {
+  my ($chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "manual reset chain " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $resetnormal = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $resetinv = int_to_32bit_hex((~(1<<10)) & hex($resetnormal));
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$resetinv 2>&1 && sleep 1 && trbcmd w $fpga_addr $conf_signals_addr $resetnormal 2>&1", "");
+  }
+}
+
+sub generate_h_maps_start_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg( "generate MAPS start $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<9)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<9)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_maps_reset_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("MAPS reset signal $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<11)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<11)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval", "");
+  }
+}
+sub generate_h_maps_clk_signal {
+  my ($onoroff, $chain, $fpga_addr, $conf_signals_addr) = @_;
+  return sub {
+    init_msg("generate MAPS clk $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_signals_addr");
+    
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+           #off
+      $newval = int_to_32bit_hex((~(1<<13)) & hex($before));
+    }
+    else {
+           #on
+      $newval = int_to_32bit_hex(((1<<13)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x$newval\n", "");
+  }
+}
+sub generate_h_prog_ram {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $ram_base_addr, $ram_addr, $numsensors, $memfilenames_ref) = @_;
+  my @memfilenames = @{$memfilenames_ref};
+  return sub {
+    init_msg("program RAM $chain.");
+    my $numchips_hex = int_to_32bit_hex($numsensors);
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A", ""); # CMD_STOP
+    execute_shell_command("trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex", ""); # ADDR_CONTROL_DATA_REGISTER
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000033", "");      # COMMAND: M26C_CMD_SET_NUMCHIPS_CONFIGURED
+    for(my $i=0;$i<scalar @memfilenames;$i++) {
+  
+      # write RAM base pointer
+      my $ihex = int_to_32bit_hex($i);
+      reportd "set RAM base pointer: \n";
+      execute_shell_command("trbcmd w $fpga_addr $ram_base_addr 0x$ihex", "");
+      # write to configuration RAM
+      reportd "write max. 256 32-bit-words: \n";
+      execute_shell_command("trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]", "");
+    }
+    execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000009", ""); # CMD_START
+  }
+}
+
+sub generate_h_set_timing_10mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 10 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x0000000A  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000003  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000008  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000004  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000009  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    #reportd $cmdline;
+    #system($cmdline);
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_1mhz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 1 MHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x00000064  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x00000031  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000062  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x00000030  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x00000063  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_set_timing_100khz {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr) =  @_;
+  return sub {
+    init_msg("timing 100 kHz $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A  2>&1 # COMMAND: M26C_CMD_STOP
+trbcmd w $fpga_addr $data_reg_addr 0x000003E8  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000040  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH
+trbcmd w $fpga_addr $data_reg_addr 0x000001CC  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000042  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000003C0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000044  2>&1 # COMMAND: M26C_CMD_SET_JTAG_CLOCK_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000046  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME1
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000048  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME2
+trbcmd w $fpga_addr $data_reg_addr 0x000001F0  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004a  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SAMPLE_TIME3
+trbcmd w $fpga_addr $data_reg_addr 0x000003E7  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x0000004c  2>&1 # COMMAND: M26C_CMD_SET_JTAG_SET_DATA_TIME
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000009  2>&1 # COMMAND: M26C_CMD_START";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+
+
+sub generate_h_delay {
+  my($chain, $fpga_addr, $cmd_reg_addr, $data_reg_addr, $delay) =  @_;
+  return sub {
+    init_msg("Delay $delay $chain.");
+    my $cmdline = "trbcmd w $fpga_addr $data_reg_addr 0x".int_to_32bit_hex($delay)."  2>&1 # ADDR_CONTROL_DATA_REGISTER
+trbcmd w $fpga_addr $cmd_reg_addr 0x00000067  2>&1 # COMMAND: M26C_CMD_SET_DELAY_EXPECTED_VALUES";
+    execute_shell_command($cmdline, "");
+  }
+}
+
+sub generate_h_waitbeforestart_6us { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 6us.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00000200", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+sub generate_h_waitbeforestart_1ms { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1ms.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x00013880", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_waitbeforestart_1s { 
+
+  my($board, $fpga_addr, $conf_waitstart_addr) =  @_;
+  return sub {
+    init_msg("Wait before start $board 1s.");
+    if(!defined($conf_waitstart_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # Set time to wait after finished programming before sending MAPS_start
+    execute_shell_command("trbcmd w $fpga_addr $conf_waitstart_addr 0x04C4B400", ""); # wait before start (counted with 80 MHz)
+
+  }
+}
+
+sub generate_h_maps_reset {
+  my ($onoroff, $chain, $chainnr, $fpga_addr, $conf_resets_addr) = @_;
+  return sub {
+    init_msg("initseq setting: MAPS reset addr $conf_resets_addr $onoroff " . $chain);
+    # set signals_invert bit 10 (reset inverted) temporarily to generate a manual reset
+    my $regval = execute_shell_command_return("trbcmd r $fpga_addr $conf_resets_addr");
+    reportd "regval: ". substr($regval, 8, 10). "\n";
+    my $before = substr($regval, 8, 10);
+#    my $resetinv = int_to_32bit_hex((~(0b10000000000)) & hex_to_32bit_int($resetnormal));
+    my $newval;
+    if($onoroff == 0) {
+            #off
+      $newval = int_to_32bit_hex((~(1<<$chainnr)) & hex($before));
+    }
+    else {
+            #on
+      $newval = int_to_32bit_hex(((1<<$chainnr)) | hex($before));
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_resets_addr 0x$newval", "");
+  }
+}
+
+
+sub generate_h_trig {
+  my ($board, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr  " . $board);
+    # hack: for runjtag trigger single trigger address is used, otherwise setting LSB would be sufficient
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0xFFFFFFFF", "");
+  }
+}
+sub generate_h_chain_trig {
+  my ($chain, $chainnr, $fpga_addr, $conf_trigger_addr) = @_;
+  return sub {
+    init_msg("generate trigger addr $conf_trigger_addr chainnr:$chainnr " . $chain);
+    # set bit in trigger register correspondig to chain-# $chainnr
+    my $newval;
+    $newval = int_to_32bit_hex(((1<<$chainnr)));
+    execute_shell_command("trbcmd w $fpga_addr $conf_trigger_addr 0x$newval", "");
+  }
+}
+
+
+
+sub generate_h_trigger_init_sequence {
+  my($board, $fpga_addr, $conf_fet_trigger_addr, $conf_period_addr) = @_;
+  return sub {
+  init_msg("Send Trigger $board.");
+    if(!defined($conf_fet_trigger_addr)) {
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    # generate trigger 
+    execute_shell_command("trbcmd w $fpga_addr $conf_fet_trigger_addr 0x00000001", ""); # generate fet_trigger via trbnet
+  }
+}
+
+
+sub generate_h_set_inout {
+  my($chain, $fpga_addr, $conf_signals_addr) =  @_;
+  return sub {
+    init_msg("Set IN/OUT $chain.");
+    if(!defined($conf_signals_addr)){
+      report('report_general', "TrbNet address missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("trbcmd w $fpga_addr $conf_signals_addr 0x000002EAA", "");# outputs/inputs not inverted, but activated, RESET activated and inverted (high)
+  }
+}
+
+sub generate_h_prog_fpga {
+  my($board, $trbhostname, $addonortrb, $staplfilename) =  @_;
+  return sub {
+    init_msg("Prog FPGA $board.");
+    if(!defined($trbhostname)||!defined($addonortrb)||!defined($staplfilename)){
+      report('report_general', "Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"jam_trbv2_ao --$addonortrb -aRUN_XILINX_PROC /home/hadaq/bneumann/$staplfilename\"", 
+    "------------- Connection accepted -------------
+> return value of command: 0
+> stdout: 
+Successful File Execution.
+------------- END OF OUTPUT ------------
+");
+  }
+}
+sub generate_h_prog_ram_external {
+  my ($chain) = @_;
+  return sub {
+    my $output = execute_shell_command_return("./ui_writeram.pl -c $chain");
+    #reportd $output;
+  }
+}
+  
+
+sub generate_h_start_trbnetd {
+  my($board, $trbhostname) =  @_;
+  return sub {
+    init_msg("Start trbnetd $board.");
+    if(!defined($trbhostname)){
+      report('report_general',"Settings missing. Doing nothing.\n");
+      return;
+    }
+    execute_shell_command("command_client.pl -e $trbhostname -c  \"trbnetd\"","------------- Connection accepted -------------
+> return value of command: 0
+------------- END OF OUTPUT ------------
+");
+  }
+}
+
+# sub generate_h_set_standard {
+#   my %boards_handlers = %{$_[0]};
+#   my %chains_handlers = %{$_[1]};
+#   return sub {
+#     foreach my $board (reverse sort keys %chains_handlers) {
+#       my %chains_handlers2 = %{$chains_handlers{$board}};
+#       foreach my $chain (reverse sort keys %chains_handlers2) {
+#         my %chain_handlers = %{$chains_handlers2{$chain}};
+#         foreach my $handler_name (@{$chain_defaults{$board}{$chain}}) {
+#        &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+#         }
+#       }
+#     }
+#     foreach my $board (reverse sort keys %boards_handlers) {
+#       my %board_handlers = %{$boards_handlers{$board}};
+#       foreach my $handler_name (@{$board_defaults{$board}}) {
+#         &{$board_handlers{$handler_name}}; # run subroutine saved in hash
+#       }
+#     }
+#     foreach my $board (reverse sort keys %chains_handlers) {
+#       my %chains_handlers2 = %{$chains_handlers{$board}};
+#       foreach my $chain (reverse sort keys %chains_handlers2) {
+#         my %chain_handlers = %{$chains_handlers2{$chain}};
+#         foreach my $handler_name (@{$chain_defaults2{$board}{$chain}}) {
+#        &{$chain_handlers{$handler_name}}; # run subroutine saved in hash
+#         }
+#       }
+#     }
+#   }
+# }
+
+my $boardsfile= 'boards.ini';
+my $boardsSettings = new Config::Abstract::Ini($boardsfile);  
+my %allboards = $boardsSettings->get_all_settings;
+foreach my $board (keys %allboards) {
+  my %settings=%{$allboards{$board}};
+  my $chainsini = $settings{'chainsini'};
+  my $trbhostname = $settings{'FPGAboard_hostname'};
+  my $addonortrb = $settings{'FPGAboard_addonortrb'};
+  my $staplfilename = $settings{'FPGAboard_staplfilename'};
+  my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+  my $conf_period_addr = $settings{'CONFperiod_trbnetAddr'};
+  my $conf_offspillcounter_addr = $settings{'CONFoffspillcounter_trbnetAddr'};
+  my $conf_waitstart_addr = $settings{'CONFwaitstart_trbnetAddr'};
+  my $conf_triginitseq_addr = $settings{'CONFtriginitseq_trbnetAddr'};
+  my $conf_trigmapsreset_addr = $settings{'CONFtrigmapsreset_trbnetAddr'};
+  my $conf_trigrunjtag_addr = $settings{'CONFtrigrunjtag_trbnetAddr'};
+  my $conf_trigwriteonce_addr = $settings{'CONFtrigwriteonce_trbnetAddr'};
+  my $conf_trigmapsstart_addr = $settings{'CONFtrigmapsstart_trbnetAddr'};
+
+
+  if(defined($opt_board) and not defined($opt_chain)) {
+    # assume board command
+    my $subr;
+    if(("h_".$opt_operation) eq 'h_prog_fpga') {
+      $subr = generate_h_prog_fpga($board, $trbhostname, $addonortrb, $staplfilename)
+    }
+    elsif(("h_".$opt_operation) eq 'h_start_trbnetd'){
+      $subr =  generate_h_start_trbnetd($board, $trbhostname);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_6us' ) {
+      $subr =  generate_h_waitbeforestart_6us($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_1ms' ) {
+      $subr =  generate_h_waitbeforestart_1ms($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_waitbeforestart_1s' ) {
+      $subr =  generate_h_waitbeforestart_1s($board, $fpga_addr, $conf_waitstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_trigger_init_sequence' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_triginitseq_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_maps_reset' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigmapsreset_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_run_jtag' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigrunjtag_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_write_once' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigwriteonce_addr);
+    }
+    elsif(("h_".$opt_operation) eq   'h_maps_start' ) {
+      $subr =  generate_h_trig($board, $fpga_addr, $conf_trigmapsstart_addr);
+    }
+    if(!defined($opt_quiet)){ print "Starting Board Operation.\n"; }
+    &{$subr}();
+    exit(0);
+  }
+    
+    
+  my $chainsSettings = new Config::Abstract::Ini($chainsini);
+  my %allchains = $chainsSettings->get_all_settings;
+  if(!defined($allchains{$opt_chain})) { die ("Chain $opt_chain not found.");}
+#  foreach my $chain (reverse sort keys %allchains) {
+    my $chain = $opt_chain;
+    my %chain_settings=%{$allchains{$chain}};
+    my $chain_fpga_addr = $chain_settings{'FPGAtrbnetAddr'};
+    my $ram_addr  = $chain_settings{'RAMtrbnetAddr'};
+    my $cmd_reg_addr = $chain_settings{'CMDreg_trbnetAddr'};
+    my $ram_base_addr  = $chain_settings{'RAMbase_trbnetAddr'};
+    my $data_reg_addr = $chain_settings{'DATAreg_trbnetAddr'};
+    my $conf_signals_addr = $chain_settings{'CONFsignals_trbnetAddr'};
+    my $conf_resetafterfirstwrite_addr = $chain_settings{'CONFresetafterfirstwrite_trbnetAddr'};
+    my $conf_resetbeforeinit_addr = $chain_settings{'CONFresetbeforeinit_trbnetAddr'};
+    my $conf_chain_triginitseq_addr = $chain_settings{'CONFtriginitseq_trbnetAddr'};
+    my $conf_chain_trigmapsreset_addr = $chain_settings{'CONFtrigmapsreset_trbnetAddr'};
+    my $conf_chain_trigrunjtag_addr = $chain_settings{'CONFtrigrunjtag_trbnetAddr'};
+    my $conf_chain_trigwriteonce_addr = $chain_settings{'CONFtrigwriteonce_trbnetAddr'};
+    my $conf_chain_trigmapsstart_addr = $chain_settings{'CONFtrigmapsstart_trbnetAddr'};  
+    my $debug_chain_ram1baddr_addr = $chain_settings{'DEBUGram1baddr'};  
+    my $debug_chain_ram1bdata_addr = $chain_settings{'DEBUGram1bdata'};  
+    my $debug_chain_ram1caddr_addr = $chain_settings{'DEBUGram1caddr'};  
+    my $debug_chain_ram1cdata_addr = $chain_settings{'DEBUGram1cdata'};  
+    my $chainnr = $chain_settings{'chainnr'};
+    my $subr;
+    if(("h_".$opt_operation) eq  'h_man_maps_reset') {
+      $subr = generate_h_man_maps_reset($chain, $chain_fpga_addr, $conf_signals_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_delay0' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 0);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay1' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 1);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay2' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 2);
+    }
+    elsif(("h_".$opt_operation) eq 'h_delay3' ) {
+      $subr =  generate_h_delay ($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr, 3);
+    }
+    elsif(("h_".$opt_operation) eq 'h_prog_ram' ) {
+      $subr =  generate_h_prog_ram_external($chain);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_10mhz' ) {
+      $subr =  generate_h_set_timing_10mhz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_1mhz' ) {
+      $subr =  generate_h_set_timing_1mhz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_timing_100khz' ) {
+      $subr =  generate_h_set_timing_100khz($chain, $chain_fpga_addr,$cmd_reg_addr, $data_reg_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_set_inout' ) {
+      $subr =  generate_h_set_inout($chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_before_on' ) {
+      $subr =  generate_h_maps_reset(1,$chain, $chainnr, $chain_fpga_addr, $conf_resetbeforeinit_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_before_off' ) {
+      $subr =  generate_h_maps_reset(0,$chain, $chainnr, $chain_fpga_addr, $conf_resetbeforeinit_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_after_on' ) {
+      $subr =  generate_h_maps_reset(1,$chain, $chainnr, $chain_fpga_addr, $conf_resetafterfirstwrite_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_reset_after_off' ) {
+      $subr =  generate_h_maps_reset(0,$chain, $chainnr, $chain_fpga_addr, $conf_resetafterfirstwrite_addr);
+    } 
+    elsif(("h_".$opt_operation) eq 'h_maps_clk_on' ) {
+      $subr =  generate_h_maps_clk_signal(1,$chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_maps_clk_off' ) {
+      $subr =  generate_h_maps_clk_signal(0,$chain, $chain_fpga_addr, $conf_signals_addr);
+    }
+    elsif(("h_".$opt_operation) eq 'h_trig_init_seq' ) {
+      $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_triginitseq_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_maps_reset' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigmapsreset_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_run_jtag' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigrunjtag_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_write_once' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigwriteonce_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_maps_start' ) {
+        $subr =  generate_h_chain_trig($chain, $chainnr, $chain_fpga_addr, $conf_chain_trigmapsstart_addr);
+    }
+    elsif(("h_".$opt_operation) eq  'h_read_ram1b_word' ) {
+        $subr =  generate_h_read_ram1b_word($chain, $chain_fpga_addr, $debug_chain_ram1baddr_addr, $debug_chain_ram1bdata_addr, $opt_addr);
+    }    
+    elsif(("h_".$opt_operation) eq  'h_read_ram1c_word' ) {
+        $subr =  generate_h_read_ram1c_word($chain, $chain_fpga_addr, $debug_chain_ram1caddr_addr, $debug_chain_ram1cdata_addr, $opt_addr);
+    }    
+    elsif(("h_".$opt_operation) eq  'h_copy_ram1b1c' ) {
+        $subr =  generate_h_copy_ram1b1c($chain, $chain_fpga_addr, $cmd_reg_addr, $data_reg_addr);
+    }
+    
+    if(!defined($opt_quiet)){ print "Starting Chain Operation.\n"; }
+    &{$subr}();    
+  
+}
diff --git a/soft/toolbox/jtag_atomic/ui_set_standard_settings.sh b/soft/toolbox/jtag_atomic/ui_set_standard_settings.sh
new file mode 100755 (executable)
index 0000000..ccf4f63
--- /dev/null
@@ -0,0 +1,4 @@
+./ui_set_standard_settings_board.sh
+./ui_set_standard_settings_chain1.sh
+./ui_set_standard_settings_chain2.sh
+./ui_set_standard_settings_chain3.sh
diff --git a/soft/toolbox/jtag_atomic/ui_set_standard_settings_board.sh b/soft/toolbox/jtag_atomic/ui_set_standard_settings_board.sh
new file mode 100755 (executable)
index 0000000..0d39e51
--- /dev/null
@@ -0,0 +1 @@
+./ui.pl -b board01 -o waitbeforestart_6us
diff --git a/soft/toolbox/jtag_atomic/ui_set_standard_settings_chain1.sh b/soft/toolbox/jtag_atomic/ui_set_standard_settings_chain1.sh
new file mode 100755 (executable)
index 0000000..89e3dc2
--- /dev/null
@@ -0,0 +1,7 @@
+./ui.pl -b board01 -c chain1 -o "delay1"
+./ui.pl -b board01 -c chain1 -o "prog_ram"
+./ui.pl -b board01 -c chain1 -o "set_timing_10mhz"
+./ui.pl -b board01 -c chain1 -o "set_inout"
+./ui.pl -b board01 -c chain1 -o "maps_reset_before_off"
+./ui.pl -b board01 -c chain1 -o "maps_reset_after_on"
+
diff --git a/soft/toolbox/jtag_atomic/ui_set_standard_settings_chain2.sh b/soft/toolbox/jtag_atomic/ui_set_standard_settings_chain2.sh
new file mode 100755 (executable)
index 0000000..b027ef3
--- /dev/null
@@ -0,0 +1,7 @@
+./ui.pl -b board01 -c chain2 -o "delay1"
+./ui.pl -b board01 -c chain2 -o "prog_ram"
+./ui.pl -b board01 -c chain2 -o "set_timing_10mhz"
+./ui.pl -b board01 -c chain2 -o "set_inout"
+./ui.pl -b board01 -c chain2 -o "maps_reset_before_off"
+./ui.pl -b board01 -c chain2 -o "maps_reset_after_on"
+
diff --git a/soft/toolbox/jtag_atomic/ui_set_standard_settings_chain3.sh b/soft/toolbox/jtag_atomic/ui_set_standard_settings_chain3.sh
new file mode 100755 (executable)
index 0000000..9cf962a
--- /dev/null
@@ -0,0 +1,7 @@
+./ui.pl -b board01 -c chain3 -o "delay1"
+./ui.pl -b board01 -c chain3 -o "prog_ram"
+./ui.pl -b board01 -c chain3 -o "set_timing_10mhz"
+./ui.pl -b board01 -c chain3 -o "set_inout"
+./ui.pl -b board01 -c chain3 -o "maps_reset_before_off"
+./ui.pl -b board01 -c chain3 -o "maps_reset_after_on"
+
diff --git a/soft/toolbox/jtag_atomic/ui_trigger_all_chains.sh b/soft/toolbox/jtag_atomic/ui_trigger_all_chains.sh
new file mode 100755 (executable)
index 0000000..65db984
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/bash
+./ui.pl -b board01 -o trigger_init_sequence
diff --git a/soft/toolbox/jtag_atomic/ui_writeram.pl b/soft/toolbox/jtag_atomic/ui_writeram.pl
new file mode 100755 (executable)
index 0000000..f240012
--- /dev/null
@@ -0,0 +1,505 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use lib "./libs/";
+use Config::Abstract::Ini;
+use POSIX qw(strftime);
+use FileHandle;
+use Sys::Syslog;
+openlog("atomic,ui_writeram.pl", "", "local1");
+syslog("INFO", "starting ui_writeram.pl");
+
+use Getopt::Long;
+
+my $opt_help;
+my $opt_chain;
+my $opt_quiet;
+GetOptions ('h|help'      => \$opt_help,
+            'c|chain=s'   => \$opt_chain,
+            'q|quiet'   => \$opt_quiet
+                           );
+if($opt_help) {
+    &help();
+    exit(0);
+}
+
+
+
+sub help(){
+    print "Usage: ui_writeram.pl [-c <chain name> ]
+   
+required:
+   [-c|--chain  <JTAG chain name>]             : Select the JTAG chain (controller) whose RAM should be written.
+   [-q|--quiet]                                : suppress output
+"
+}
+
+#push(@INC, "./BN");
+#use lib "$ENV{PWD}/BN";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/";
+#use lib "/d/sugar/bneumann/vhdl/jtag_proj/trb_maps_jtag2/ui/BN/blib/arch";
+
+use lib "BN/blib/arch";
+use BN::CRC32;
+#use String::CRC32;
+
+#use feature "state";
+use POSIX;
+
+# whitespace trimming from http://www.somacon.com/p114.php
+# Declare the subroutines
+sub trim($);
+sub ltrim($);
+sub rtrim($);
+
+# Create a test string
+my $string = "  \t  Hello world!   ";
+
+# Here is how to output the trimmed text "Hello world!"
+#print trim($string)."\n";
+#print ltrim($string)."\n";
+#print rtrim($string)."\n";
+
+# Perl trim function to remove whitespace from the start and end of the string
+sub trim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       $string =~ s/\s+$//;
+       return $string;
+}
+# Left trim function to remove leading whitespace
+sub ltrim($)
+{
+       my $string = shift;
+       $string =~ s/^\s+//;
+       return $string;
+}
+# Right trim function to remove trailing whitespace
+sub rtrim($)
+{
+       my $string = shift;
+       $string =~ s/\s+$//;
+       return $string;
+}
+
+sub reverse32bit($) {
+  my ($in) = @_;
+  my $result = unpack("L", pack("B*", scalar reverse unpack("B*", pack("L",$in))));
+  return $result;
+  #return 1;
+}
+
+sub int_to_32bit_hex($) {
+  my ($in) = @_;
+  my $hex = sprintf("%.8X", $in);
+  return $hex;
+}
+
+sub report {
+  if(defined($opt_quiet)){
+    if($_[0] eq 'data') { print $_[1]; }
+  }
+  else {
+    print $_[1];
+  }
+}
+sub reportd {
+  if(!defined($opt_quiet)){
+    print "debug:" . $_[0];
+  }
+}
+sub execute_shell_command {
+        # input args: $command, $expected_output         #, $success_string, $sending_button
+
+        my $success = 0;
+        my $command = $_[0];
+        my $expected = $_[1];
+        my $output = "";
+        #my $success_string = $_[1];
+        #my $sending_button = $_[2];
+
+        #my $message= $sending_button->get_label;
+        #reportd ( 'report_general', "attempting to $message");
+        report( 'report_detailed' , "\nexec $command\n\n");
+        if(not open ( SHELL , "$command 2>&1 |" )) {
+          report( 'report_general' , "failed to execute command.");
+          syslog("ERR", "command failed.");
+        }
+
+        while ( <SHELL> ) {
+                report( 'report_detailed' , $_);
+                $output.=$_;
+#                 if ( $_ =~ m/$success_string/ ) {
+#                         report( 'report_general' , " ...success!\n" );
+#                         my $success = 1;
+#                 }
+        }
+#         if ($success == 0) {
+#                 report( 'report_general', " ...unclear\n");
+#         }
+        if(!($output eq $expected)) {
+          report('report_general', "unexpected output: ".$output."\n");
+          syslog("ERR", "unexpected output: $output.");
+        }
+        report( 'report_detailed' , "\n----------------------------\n");
+}
+
+
+sub execute_shell_command_return {
+        my $command = $_[0];
+        report( 'report_detailed' , "\nexec $command\n\n");
+        my $result = `$command 2>&1`;
+        report( 'report_detailed' , $result);
+        report( 'report_detailed' , "\n----------------------------\n");
+        if($? != 0) {
+          report('report_general', "command failed. output: $result");
+          syslog('ERR', "command failed. output: $result.");
+        }
+        return $result;
+}
+
+
+
+my $num_words = 0;
+
+# this subroutine 
+# changes parameter 0, which holds the file handle
+sub memfile_writeline($$$$) {
+  my($memfile, $memfilenames, $memfiles_prefix, $line_string)=@_;
+  my $filenum = floor($num_words/256);
+  my $last_filenum = floor(($num_words-1)/256);
+  my $filenum_str = sprintf "%0.2d", $filenum;
+  my $memfilename = $memfiles_prefix.'.'.$filenum_str.".txt";
+
+  if((!defined $_[0])) { 
+    if( -e ($memfilename)) {
+      #die ("Error: RAM text file \"$memfile\" exists.");
+    }
+    $_[0] = FileHandle->new($memfilename, 'w');
+    push(@{$_[1]}, $memfilename);
+  }
+  elsif($filenum!=$last_filenum) { 
+    $memfile->close();
+    if( -e ($memfilename)) {
+      #die ("Error: RAM text file \"$memfile\" exists.");
+    }
+    $_[0] = FileHandle->new($memfilename, 'w');
+    push(@{$_[1]}, $memfilename);
+  }
+  my $fh = $_[0];
+  print $fh $line_string;
+  $num_words++;
+}
+
+if(not( -e "/tmp/jtag_initmem")) {
+  system("mkdir /tmp/jtag_initmem");
+}
+
+my $chainsfile= 'chains.ini';
+my $chainsSettings = new Config::Abstract::Ini($chainsfile);
+my %allchains = $chainsSettings->get_all_settings;
+
+my $date = strftime "%Y%m%d%H%M%S", localtime;
+#my $initmem_folder = "/tmp/jtag_initmem/$date";
+my $initmem_folder = "/tmp/jtag_initmem/jtag_atomic";
+
+if(-e $initmem_folder) {
+  #die("Error: Folder with the same date already exists!");
+}
+else {
+  mkdir $initmem_folder,0755;
+}
+
+# File with prefix names files for last programmed values
+my $lastprogfilename = "/tmp/jtag_initmem/lastprog.txt";
+my $handle_lastprog = FileHandle->new($lastprogfilename, 'w');
+
+# loop through chains
+foreach my $chain (keys %allchains) {
+  if(defined($opt_chain) && not ($chain eq $opt_chain)) {
+    next;
+  }
+  print $chain, ": ";
+  #print join ' ', %{$allchains{$chain}}, "\n";
+  my %settings=%{$allchains{$chain}};
+  my @sensors;
+  my @drs;
+  my @drs_length;
+  my @old_drs;
+  my @old_drs_length;
+  my @irs;
+  my $irlen;
+  my $fpga_addr = $settings{'FPGAtrbnetAddr'};
+  my $ram_addr  = $settings{'RAMtrbnetAddr'};
+  my $cmd_reg_addr = $settings{'CMDreg_trbnetAddr'};
+  my $ram_base_addr  = $settings{'RAMbase_trbnetAddr'};
+  my $data_reg_addr = $settings{'DATAreg_trbnetAddr'};
+  my $memfiles_prefix; # the same prefix is used for the files for one chain
+                       # need one file per chip with at maximum 256 32 bit words
+                       # that are written at once.
+                       # then the RAM base pointer has to be changed for the next chip
+  my @memfilenames=();
+
+  $memfiles_prefix="$initmem_folder/$chain";
+  foreach my $setting_name (sort keys %settings) {
+    if ($setting_name =~ /sensor[0-9]+/) {
+      push(@sensors, $setting_name);
+      @old_drs = @drs;
+      @old_drs_length = @drs_length;
+      @irs = ();
+      @drs = ();
+      @drs_length = ();
+      my $sensorfile = $settings{$setting_name};
+      if(not defined($opt_quiet)) { print "loading sensor file: $sensorfile\n"; }
+      my $sensorSettingsO = new Config::Abstract::Ini("/daq/toolbox/sensors/".$sensorfile);
+      my %sensorSettings = $sensorSettingsO->get_all_settings;
+      my $this_irlen = $sensorSettingsO->get_entry_setting('General', 'IRLEN', '5');
+      my $bypassreg  = $sensorSettingsO->get_entry_setting('General', 'BYPASSREG', '1F');
+      if (!defined $irlen ){
+        $irlen = $this_irlen;
+      }
+      elsif($this_irlen != $irlen) {
+        print "this_irlen=$this_irlen in $sensorfile differs from previously set irlen=$irlen.\nThis should be supported by this version (trb_maps_jtag3) of the JTAG controller.\n But is it really intended?\n";
+      }
+      #print "irlen: ", $this_irlen, "\n";
+      # loop through data registers
+      my %sensorData = $sensorSettingsO->get_entry('Data');
+      foreach my $data_register_ir (sort keys %sensorData) {
+        my $value = $sensorData{$data_register_ir};
+        my ($ir,$drlength,$dr)=  split(/,/, $value); # dr is stored MSN first as hexadecimal string
+        $dr = uc(trim($dr));
+        if(length($dr)%8 != 0) {
+          die("Error: DR string is not multiple of 32 bit (4bytes = 8 nibbles)\n");
+        }
+        if($dr =~ /[^0-9A-F]+/) {
+          die("Error: Invalid hexadecimal string for DR given: \$dr=\"$dr\"\n");
+        }
+       #print "drlength: $drlength\n";
+        push(@drs_length, $drlength);
+        push(@drs, $dr);
+        push(@irs, $ir);
+        # only warning
+        if((defined $old_drs_length[@drs-1]) && ($drlength != $old_drs_length[@drs-1])) {
+            print ("Warning: Length of the same DR of two sensors differs.");
+        }
+      }
+      my $memfilename = $memfiles_prefix . "." . $setting_name . ".txt";
+      if( -e ($memfilename)) {
+        #die ("Error: RAM text file \"$memfilename\" exists.");
+      }
+      if( not defined($opt_quiet)) { print "Opening $memfilename...\n"; }
+      my $handle = FileHandle->new($memfilename, 'w');
+      push(@memfilenames, $memfilename);
+      # write numregs + IRlen
+      my $word = scalar($this_irlen)<<16;
+      $word = $word + scalar @irs;
+      ### $word = ($word<<16) + pack("L", scalar(@irs));
+      print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L", $word)))),0,8)) . "\t# IRlen & numregs \n";
+      #####print $handle "0x" .uc (substr(reverse(join('',unpack("h8", pack("L", scalar($this_irlen))))),4,4)) . uc (substr(reverse(join('',unpack("h8", pack("L", scalar(@irs))))),4,4)) . "\t# IRlen & numregs \n";
+
+      #print "reverse test: " . reverse32bit(0x00000001)."\n";
+      my $initial = 0x00000000;
+      my $crcword = pack("L", reverse32bit($word));
+      my $crc0 = crc32($crcword, $initial);
+      #my $crc0_rn = ~reverse32bit($crc0);
+      #printf "crc0: %0.8X, crc0_rn: %0.8X, word: %0.8X\n", $crc0, $crc0_rn, $word;
+      # write DEV_ID
+      $word = 0x4D323601; 
+      print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L", $word)))),0,8)) . "\t# DEV_ID \n";
+      $crcword = pack("L", reverse32bit($word));
+      $crc0 = crc32($crcword, $crc0);
+      my $crc0_rn = ~reverse32bit($crc0);
+      #printf "crc0: %0.8X, crc0_rn: %0.8X, word: %0.8X\n", $crc0, $crc0_rn, $word;
+      # write pointer
+      my $offset = 3*@irs+4;
+      for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+        my $drlen = $drs_length[$reg_i];
+        $word = $offset;
+        #print $handle "0x". uc (substr(reverse(join('',unpack("h8", pack("L", 0)))),4,4)) . uc (substr(reverse(join('',unpack("h8", pack("L", scalar($offset))))),4,4))   . "\t# Pointer + reserved\n";
+        $crcword = pack("L", reverse32bit($word));
+        $crc0 = crc32($crcword, $crc0);
+        print $handle "0x" . uc (substr(reverse(join('',unpack("h8", pack("L",  $word)))),0,8)) . "\t# Pointer + reserved \n";
+        $word = $drlen;
+        $crcword = pack("L", reverse32bit($word));
+        $crc0 = crc32($crcword, $crc0);
+        #print $handle "0x0000". uc (substr(reverse(join('',unpack("h8", pack("L", scalar($drlen))))),4,4))  . "\t# Length\n";
+        print $handle "0x" . uc (substr(reverse(join('',unpack("h8",pack("L",  $word)))),0,8)) . "\t# Length\n";
+        $offset += floor(($drlen+31)/32);
+      }
+      # write CRC-32
+      #my $ir_packed_r = pack("B*", scalar reverse substr(unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))),0, 32));
+      $crc0_rn = ~reverse32bit($crc0);
+      #printf "CRC: %0.8X.\n", $crc0_rn, 1;
+      my $line_crc = sprintf "%0.8X", $crc0_rn;
+      print $handle "0x". substr($line_crc,length($line_crc)-8,8) . "\t# CRC-32\n";
+
+      my $crc1 = 0xFFFFFFFF;
+      # write IRs
+      for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+        my $ir = $irs[$reg_i];
+        #my @words = unpack("L", pack("H*", uc($ir)));
+        $word = unpack("L", pack("h*", (scalar reverse uc($ir)) ."000000"));
+       #print "ir=$ir.IR word: $word\n";
+        $crcword = pack("L", reverse32bit($word));
+        $crc1 = crc32($crcword, $crc1);
+        print $handle "0x".("0"x(8-length($ir))).uc($ir) . "\t# IR\n";
+      }
+      # write BYPASSREG IR
+      $word = unpack("L", pack("h*", (scalar reverse uc($bypassreg)) ."000000"));
+      $crcword = pack("L", reverse32bit($word));
+      $crc1 = crc32($crcword, $crc1);
+      print $handle "0x".("0"x(8-length($bypassreg))).uc($bypassreg) . "\t# IR BYPASS\n";
+      
+      # write DRs
+      for(my $reg_i=0;$reg_i<@irs;$reg_i++) {
+        my $length = $drs_length[$reg_i];
+        my $numwords = floor(($length+31)/32);
+        for(my $i=0;$i<$numwords; $i++) {
+               #print "length: $length\n";
+               #print "numwords: $numwords\n";
+         
+          $word = unpack("L", pack("h*", (scalar reverse uc(substr($drs[$reg_i],($numwords-$i-1)*8,8)))));
+          $crcword = pack("L", reverse32bit($word));
+          $crc1 = crc32($crcword, $crc1);
+          my $linestr = "0x". substr($drs[$reg_i],($numwords-$i-1)*8,8) . "\t# DR" . $reg_i . "\n";
+          print $handle $linestr; 
+        }
+      }
+      #write CRC-32
+      my $crc1_rn = ~reverse32bit($crc1);
+      $line_crc = sprintf "%0.8X", $crc1_rn;
+      print $handle "0x". substr($line_crc,length($line_crc)-8,8) . "\t# CRC-32\n";
+
+    }
+  }
+  my $numchips_hex = int_to_32bit_hex(scalar @sensors);
+  #if(not defined($opt_quiet)) { print "trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A 2>&1\n"; } # CMD_STOP
+  #my $result = `trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A 2>&1 \n`; # CMD_STOP
+  execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x0000000A", ""); # CMD_STOP
+  #if(not($? == 0)) {syslog("ERR", "trbcmd returned $?. Output: $result.")}
+  #if(not defined($opt_quiet)) { print "trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex\n"; } # ADDR_CONTROL_DATA_REGISTER
+  #$result = `trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex 2>&1\n`; # ADDR_CONTROL_DATA_REGISTER
+  execute_shell_command("trbcmd w $fpga_addr $data_reg_addr 0x$numchips_hex", ""); # ADDR_CONTROL_DATA_REGISTER
+  #if(not defined($opt_quiet)) { print "trbcmd w $fpga_addr $cmd_reg_addr 0x00000033\n"; }      # COMMAND: M26C_CMD_SET_NUMCHIPS_CONFIGURED
+  #$result = `trbcmd w $fpga_addr $cmd_reg_addr 0x00000033\n`;      # COMMAND: M26C_CMD_SET_NUMCHIPS_CONFIGURED
+  execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000033", "");
+  for(my $i=0;$i<scalar @memfilenames;$i++) {
+
+    # write RAM base pointer
+    my $ihex = int_to_32bit_hex($i);
+    if(not defined($opt_quiet)) { print "set RAM base pointer: \n"; }
+    #if(not defined($opt_quiet)) { print "trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n"; }
+    #$result = `trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n`;
+    execute_shell_command("trbcmd w $fpga_addr $ram_base_addr 0x$ihex", "");
+    # write to configuration RAM
+    if(not defined($opt_quiet)) { print "write max. 256 32-bit-words: \n"; }
+    #if(not defined($opt_quiet)) { print "trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]\n"; }
+    #$result = `trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]`;
+    execute_shell_command("trbcmd wm $fpga_addr $ram_addr 0 $memfilenames[$i]", "");
+  }
+  #if(not defined($opt_quiet)){ print "trbcmd w $fpga_addr $cmd_reg_addr 0x00000009\n"; }     # CMD_START
+  #$result = `trbcmd w $fpga_addr $cmd_reg_addr 0x00000009\n`;      # CMD_START
+  execute_shell_command("trbcmd w $fpga_addr $cmd_reg_addr 0x00000009", ""); # CMD_START
+
+  if(not defined($opt_quiet)) { print "\n"; }
+  print "done.\n";
+  syslog("INFO", "$chain done.\n");
+}
+print $handle_lastprog $initmem_folder;
+#   #print "data registers for FPGA $fpga_addr:", map { "$_ => $drs_binary{$_}\n" } keys %drs_binary;
+#   $drs_offset{$irs[0]} = 4+(scalar @irs)*2;
+#   for (my $i=1;$i<@irs;$i++) {
+#     my $dr_length = $drs_length{$irs[$i-1]};
+#     $drs_offset{$irs[$i]} = $drs_offset{$irs[$i-1]} + floor(($dr_length*(scalar @sensors)+31)/32) + 2; # add one x 32 bit for CRC, one x 32 bit for IR, integer division rounds down, right?
+#   }
+#   #open RAMTEXT, ">$memfiles_prefix{$chain}";
+#   $num_words = 0;
+#   my $ram_fh;
+#   my @mem_filenames;
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc (reverse(join('',unpack("h8", pack("L", scalar(@sensors)))))) . "\t# numchips \n"); # numchips; the reverse is done here because apparently internally the unsigned long is stored LSByte first (little endian)
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(join('',unpack("h8", pack("L", 0))))) . "\t# reserved\n"); # reserved
+#   for (my $i=0;$i<@irs;$i++) {
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(join('',unpack("h8", pack("L", $drs_offset{$irs[$i]}))))) . "\t# pointer\n"); # pointer
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix,  "0x".uc(reverse(join('',unpack("h8", pack("L", $drs_length{$irs[$i]}))))) . "\t# length \n"); # length
+#   }
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x00000000\t# pointer (end of list)\n");
+#   memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x00000000\t# length  (end of list)\n");
+#   for (my $i=0;$i<@irs;$i++) {
+#     my $ir=$irs[$i];
+#     #print "ir: $ir\n";
+#     my $ir_packed = pack("h*", (scalar reverse($ir)).("0"x (7-(length($ir)-1)%8)));
+#     my $ir_packed_r = pack("B*", scalar reverse substr(unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))),0, 32));
+#     #print "debug ir_packed   (h*): ". (scalar reverse($ir)).("0"x (8-length($ir)%32))."\n";
+#     #print "debug ir_packed_r (B*): ". scalar reverse unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))) ."\n";
+#     #print "debug2: " . (7-(length($ir)-1)%8) . "\n";
+#     #print "debug3: " . $ir . "\n";
+#     #print "debug4: " . $ir.("0"x (7-(length($ir)-1)%8)) . "\n";
+#     #print "debug5 (B*): ". unpack("B*", pack("H*", $ir.("0"x (7-(length($ir)-1)%8)))) ."\n";
+# 
+#     my $initial = 0x00000000;
+#     my $crc0 = crc32($ir_packed_r, $initial);
+#     #printf "CRC0: %X. ~reversed: %X\n", $crc0, $crc0_rn;
+# 
+#     for(my $i=0; $i<floor((length($drs_binary{$ir})-1)/32)+1;$i++){
+#       my $dr_word_packed_r = pack("b*", scalar reverse substr($drs_binary{$ir}.("0"x (31-(length($drs_binary{$ir})-1)%32)),($i)*32, 32));
+#       $crc0 = crc32($dr_word_packed_r, $crc0);
+#       my $crc0_rn = ~reverse32bit($crc0);
+#       printf "CRC: 0x%0.8X.\n", $crc0_rn;
+#     }
+#     my $crc0_rn = ~reverse32bit($crc0);
+#     #printf "CRC: %0.8X.\n", $crc0_rn, 1;
+#     my $line_crc = sprintf "0x%0.8X\t# CRC-32\n", $crc0_rn;
+#     print "debug dr_binary: " . $drs_binary{$ir} . "\n";
+#     my $dr_packed = pack("b*", $drs_binary{$ir}.("0"x (31-(length($drs_binary{$ir})-1)%32)));
+#     $drs{$ir} = unpack('h*', $dr_packed);
+#     print "debug drs: " . $drs{$ir} . "\n";
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".("0"x(8-length($ir))).uc($ir) . "\n");
+#     for(my $i=0; $i<floor((length( $drs{$ir}) -1)/8)+1; $i++){
+#       #print "dbg: i=$i, len=".length( $drs{$ir})."\n";
+#       if(length($drs{$ir}) >= ($i+1)*8) {
+#         memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".uc(reverse(substr($drs{$ir}, ($i)*8, 8))) . "\n");
+#       }
+#       else {
+#         memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, "0x".("0"x(($i+1)*8-length($drs{$ir}))).uc(reverse(substr($drs{$ir}, ($i)*8, length($drs{$ir})%8))) . "\n");
+#       }
+#     }
+#     memfile_writeline( $ram_fh, \@mem_filenames, $memfiles_prefix, $line_crc);
+#     
+#     #print "IR $ir, DR ". $drs{$ir} . "\n";
+#   }
+#   #close RAMTEXT;
+#   $ram_fh->close();
+#   #my $result = `cat $memfile{$fpga_addr}`;
+#   $ENV{'DAQOPSERVER'}="trb126";
+#   for(my $i=0;$i<scalar @mem_filenames;$i++) {
+#     # write RAM base pointer
+#     my $ihex = int_to_32bit_hex($i);
+#     print "trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n";
+#     my $result = `trbcmd w $fpga_addr $ram_base_addr 0x$ihex\n`;
+#     print "set RAM base pointer: " . $result;
+#     # write to configuration RAM
+#     print "trbcmd wm $fpga_addr $ram_addr 0 $mem_filenames[$i]\n";
+#     $result = `trbcmd wm $fpga_addr $ram_addr 0 $mem_filenames[$i]`;
+#     print "write max. 256 32-bit-words: " . $result;
+#   }
+#}
+
+
+# init_writemem:
+# - loop through chains
+#   - loop through sensors
+#     - test if IR length is the same as for other sensors
+#     - loop through DRs
+#       - test if DR length is the same as for other sensors
+#     - add DR content to chain data register (hexadecimal string)
+#   - write contents for JTAG chain controller RAM to text file(s)
+#   - execute trbcmd to transfer file(s) to RAM of FPGA configured in chains.ini
+#
+# get_status:
+# get_error_counts:
+# reactivate_sensor:
+# deactivate_sensor:
diff --git a/soft/toolbox/prototype_setup.db b/soft/toolbox/prototype_setup.db
new file mode 100644 (file)
index 0000000..c75155a
--- /dev/null
@@ -0,0 +1,334 @@
+# Current Setup (reorder by sensor number!!!)
+#              connected        module         position       support        Deactivated (comma separated)      old value
+
+key setup
+                                                                                                
+sensor1            on             A              down           cvd             ----                              abcd    
+sensor2            on             A               up            cvd             ----                              ----
+sensor3            on             B              down           cvd             ----                              ----
+sensor4            off            B               up            cvd             ----                              abcd
+
+sensor8            on             D              down           DUT             d                                 d
+sensor7            on             D               up            DUT             ----                              abcd
+sensor5            on             C              down           DUT             ----                              abcd
+sensor6            on             C               up            DUT             374                               374
+
+sensor9            on             E              down           alu             ----                              abcd
+sensor10           on             E               up            alu             ----                              ----
+sensor11           off            F              down           alu             ----                              abcd
+sensor12           on             F               up            alu             ----                              ----
+
+============================================================================================================================================
+
+
+
+# Sensor Threshold
+# Nightrun
+
+key thresholds
+sensor1           193        176        139        171
+sensor2           169        210        222        162        0.93/1.03/0.82/1.07        
+sensor3           169        193        211        196        65.7/0.84/0.87/0.87      - Block A has always 64 pixel offset due to one damaged row
+sensor4           255        255        255        255        shut down                  not used
+
+sensor5           108        211        167        210        0.76/0.85/0.88/0.75  
+sensor6           184        202        215        192        16.7/17.0/15.2/18.3        used but +8 ADCs
+sensor7           152        181        230        182        5.4/3.8/4.9/4.7            used but +8 ADCs
+sensor8           166        124        183        255        1.04/2.09/0.81           - Block D always noisy, Block B has one dead pixel => 1.09
+
+sensor9           144        117        101        237        13.1/11.2/15.7/13.9        not used
+sensor10          189        237        178        229        0.7/0.63/0.54/0.57         
+sensor11          255        255        255        255        not connected              not used
+sensor12          185        193        180        211        0.74/0.70/0.80/0.69      
+
+
+
+====================================================================
+
+
+
+# Module status (reorder by plane position!!!)
+#                shifted         angle          switched
+
+key module
+
+A                  no              0               0
+B                  yes             0               0
+D                  yes             0               0
+C                  yes             0               0
+E                  no              0               0
+F                  no              0               1
+
+====================================================================
+
+
+
+# Sensor IDs (HEX)
+#
+
+key id
+
+sensor1   aaa0
+sensor2   aaa1
+sensor3   bbb0
+sensor4   bbb1
+
+sensor5   ccc0
+sensor6   ccc1
+sensor7   ddd0
+sensor8   ddd1
+
+sensor9   eee0
+sensor10  eee1
+sensor11  fff0
+sensor12  fff1
+
+=============================
+
+
+
+# JTAG table
+#           chain      JNR      Panel
+
+key jtag
+
+sensor1    chain1       3        1.1
+sensor2    chain1       2        1.2
+sensor3    chain1       1        1.4
+sensor4    chain1       0        1.5
+
+sensor5    chain2       3        1.7
+sensor6    chain2       2        1.8
+sensor7    chain2       1        4.1
+sensor8    chain2       0        4.2
+
+sensor9    chain3       2        4.3
+sensor10   chain3       1        4.4
+sensor11   chain3       F        4.5
+sensor12   chain3       0        4.6
+
+====================================================
+
+
+
+# ROC table
+#           ROC     Port
+
+key roc
+
+sensor1   0xc001     0
+sensor2   0xc001     1
+sensor3   0xc001     2
+sensor4   0xc001     3
+
+sensor5   0xc002     0
+sensor6   0xc002     1
+sensor7   0xc002     2
+sensor8   0xc002     3
+
+sensor9   0xc003     0
+sensor10  0xc003     1
+sensor11  0xc003     2
+sensor12  0xc003     3
+
+==================================
+
+
+
+
+
+
+# Some notes
+#
+
+key notation
+
+Temperature R L = Sensor 1 2
+ROC sensor 0 1 2 3 = id reg c0_LSB c0_MSB c1_LSB c1_MSB
+
+Coordinates:
+
+(x,y) - flipped coordinates
+
+(1) Standard (1,2,3,4,8,9,10,12)       (2) DUT plane D 7,8 - flipped twice (X and Y)        (2) DUT plane C 5,6 - just flipped around Y
+
+       |-----------|                                           |-----------|                                           |-----------|
+       |1152       |                                           |576     0,0|                                           |       1152|
+       |           |--                               --|           |                                   --|           |
+       |           |     (1)                           |           |  (0)                                      |           |  (1)
+       |           |--                                 --|           |                                         --|           |
+       |0,0     576|                                             |       1152|                                                 |576     0,0|
+       |-----------|                                           |-----------|                                           |-----------|
+       |-----------|                                           |-----------|                                           |-----------|
+       |1152       |                                           |576     0,0|                                           |       1152|
+       |           |--                               --|           |                                   --|           |
+       |           |     (0)                           |           |  (1)                                      |           |  (0)
+       |           |--                               --|           |                                           --|           |
+       |0,0     576|                                           |       1152|                                                   |576     0,0|
+       |-----------|                                           |-----------|                                                   |-----------|
+                         
+
+
+
+Boris Threshold FakeHitRate at 1/frame
+sensor1           193        176        139        171
+sensor2           175        218        226        169
+sensor3           200        206        212        196
+sensor4           200        206        212        196
+
+sensor5           114        216        172        214
+sensor6           191        201        219        199
+sensor7           153        176        228        179
+sensor8           174        130        188        247
+
+sensor9           165        129        112        249
+sensor10          189        237        178        229
+sensor11          255        255        255        255
+sensor12          185        193        180        211
+
+Boris Threshold FakeHitRate as before but + 2mv (high threshold)
+sensor1           201        184        147        178
+sensor2           183        226        234        177
+sensor3           208        214        220        204
+sensor4           208        214        220        204
+
+sensor5           122        224        180        222
+sensor6           199        209        227        207
+sensor7           161        184        236        187
+sensor8           182        138        196        255
+
+sensor9           173        137        120        255
+sensor10          197        245        186        237
+sensor11          255        255        255        255
+sensor12          193        201        188        219
+
+Samir threshold +1mV
+sensor1           205        188        151        182
+sensor2           187        230        238        181
+sensor3           212        218        224        208
+sensor4           212        218        224        208
+
+sensor5           126        228        184        226
+sensor6           203        213        231        211
+sensor7           165        188        240        191
+sensor8           186        142        200        255
+
+sensor9           177        141        124        255
+sensor10          201        249        190        241
+sensor11          255        255        255        255
+sensor12          197        205        192        223
+
+------------------
+DUT Tuning 10^6
+
+sensor8           174        132        190        255      gives fakehit rates 0.16/1.18/0.18         for A,B,C but B has always 1 hot pixel
+sensor5           114        217        174        215      gives fakehit rates 0.14/0.12/0.18/0.12    for A,B,C,D
+sensor2           175        218        226        170      0.16/0.16/0.16/0.16
+sensor3           180        199        218        201      36.3/8.3/0.09/0.22       One row is always broken
+sensor10          190        236        177        227      0.23/0.26/0.18/0.27
+sensor12          185        191        178        209      0.13/0.18/0.13/0.19      
+
+
+
+High Thresholds:
+sensor1           205        188        151        182
+sensor2           187        230        238        181
+sensor3           212        218        224        208
+sensor4           212        218        224        208
+
+sensor5           126        228        184        226
+sensor6           203        213        231        211
+sensor7           165        188        240        191
+sensor8           186        142        200        255
+
+sensor9           177        141        124        255
+sensor10          201        249        190        241
+sensor11          255        255        255        255
+sensor12          197        205        192        223
+
+
+Setting from night wednsday->thursday
+sensor1           205        188        151        182       
+sensor2           175        218        226        170       
+sensor3           180        199        218        201       
+sensor4           212        218        224        208       
+
+sensor5           114        217        174        215       
+sensor6           203        213        231        211       
+sensor7           165        188        240        191       
+sensor8           174        132        190        255
+
+sensor9           177        141        124        255
+sensor10          190        236        177        227      
+sensor11          255        255        255        255
+sensor12          185        191        178        209      
+
+
+Fakehit Rates 10^5 at DUT cooled to 0 deg
+sensor1           174        161        124        156        15.6/12.5/29.3/13.6      - Block C has always 16 pixel offset => 13.3
+sensor2           161        204        217        155        14.7/11.6/9.8/12.8
+sensor3           160        184        203        186        74.0/16.3/14.9/17.0      - Block A has always 31 pixel offset due to one damaged row
+sensor4           255        255        255        255        shut down
+
+sensor5           099        205        162        203        16.4/11.2/10.5/14.6     
+sensor6           176        194        207        184        16.7/17.0/15.2/18.3
+sensor7           146        173        222        174        5.4/3.8/4.9/4.7          - Fakehit Rate varies, seems to be some weird common noise
+sensor8           157        116        174        255        15.7/19.5/13.9           - Block D always noisy
+
+sensor9           144        117        101        237        13.1/11.2/15.7/13.9     
+sensor10          174        225        167        217        2.0/2.6/2.3/3.3          - Fakehit Rate varies, seems to be some weird common noise
+sensor11          255        255        255        255        not connected
+sensor12          171        183        168        199        9.3/7.7/5.9/6.8          - Fakehit Rate varies, seems to be some weird common noise
+
+
+Fakehit Rates 10^6 at DUT cooled to 0 deg
+sensor1           174        161        124        156        15.6/12.5/29.3/13.6        not used
+sensor2           169        210        222        162        0.93/1.03/0.82/1.07        
+sensor3           169        193        211        196        65.7/0.84/0.87/0.87      - Block A has always 64 pixel offset due to one damaged row
+sensor4           255        255        255        255        shut down                  not used
+
+sensor5           108        211        167        210        0.76/0.85/0.88/0.75  
+sensor6           176        194        207        184        16.7/17.0/15.2/18.3        not used
+sensor7           146        173        222        174        5.4/3.8/4.9/4.7            not used
+sensor8           166        124        183        255        1.04/2.09/0.81           - Block D always noisy, Block B has one dead pixel => 1.09
+
+sensor9           144        117        101        237        13.1/11.2/15.7/13.9        not used
+sensor10          181        230        171        222        0.7/0.63/0.54/0.57         
+sensor11          255        255        255        255        not connected              not used
+sensor12          178        189        174        206        0.74/0.70/0.80/0.69      
+
+
+Boris Optimized for the high datarate run
+sensor1           174        161        124        156        15.6/12.5/29.3/13.6        not used
+sensor2           169        210        222        162        0.93/1.03/0.82/1.07        
+sensor3           169        193        211        196        65.7/0.84/0.87/0.87      - Block A has always 64 pixel offset due to one damaged row
+sensor4           255        255        255        255        shut down                  not used
+
+sensor5           108        211        167        210        0.76/0.85/0.88/0.75  
+sensor6           176        194        207        184        16.7/17.0/15.2/18.3        not used
+sensor7           146        173        222        174        5.4/3.8/4.9/4.7            not used
+sensor8           166        124        183        255        1.04/2.09/0.81           - Block D always noisy, Block B has one dead pixel => 1.09
+
+sensor9           144        117        101        237        13.1/11.2/15.7/13.9        not used
+sensor10          181        230        171        222        0.7/0.63/0.54/0.57         
+sensor11          255        255        255        255        not connected              not used
+sensor12          178        189        174        206        0.74/0.70/0.80/0.69      
+
+Boris Optimized for the high datarate run and noise
+sensor1           174        161        124        156        15.6/12.5/29.3/13.6        not used
+sensor2           173        214        226        166        0.31/0.40/0.13/0.42        
+sensor3           173        197        215        200        55.5/0.36/0.30/0.30      - Block A has always 64 pixel offset due to one damaged row
+sensor4           255        255        255        255        shut down                  not used
+
+sensor5           112        215        171        214        0.26/0.17/0.22/0.15  
+sensor6           176        194        207        184        16.7/17.0/15.2/18.3        not used
+sensor7           146        173        222        174        5.4/3.8/4.9/4.7            not used
+sensor8           170        128        187        255        0.39/1.35/0.33           - Block D always noisy, Block B has one dead pixel
+
+sensor9           144        117        101        237        13.1/11.2/15.7/13.9        not used
+sensor10          185        234        175        226        0.16/0.10/0.09/0.16        
+sensor11          255        255        255        255        not connected              not used
+sensor12          182        193        179        210        0.30/0.15/0.16/0.14      
+
+
+==============================================================================================
diff --git a/soft/toolbox/sensors/sensor1.ini b/soft/toolbox/sensors/sensor1.ini
new file mode 100644 (file)
index 0000000..312402e
--- /dev/null
@@ -0,0 +1,49 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064C1B08BAB32648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000082 ; RO_MODE0 BORIS TESTMODE
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, Boris
+;02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,00D00008FC00E000 ; CTRL_SUZE_REG: BORIS TESTMODE
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+;08=11,1152,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, on the CVD 
+09=10,1152,a0a0a0a0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,a0a0a0a0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
diff --git a/soft/toolbox/sensors/sensor10.ini b/soft/toolbox/sensors/sensor10.ini
new file mode 100644 (file)
index 0000000..9dae9dc
--- /dev/null
@@ -0,0 +1,46 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064BDEDB2E532648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+;08=11,1152,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor11.ini b/soft/toolbox/sensors/sensor11.ini
new file mode 100644 (file)
index 0000000..eaa43e4
--- /dev/null
@@ -0,0 +1,46 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064FFFFFFFF32648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+;08=11,1152,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor12.ini b/soft/toolbox/sensors/sensor12.ini
new file mode 100644 (file)
index 0000000..68309ae
--- /dev/null
@@ -0,0 +1,46 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064B9C1B4D332648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+;08=11,1152,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor13.ini b/soft/toolbox/sensors/sensor13.ini
new file mode 100644 (file)
index 0000000..08eeccf
--- /dev/null
@@ -0,0 +1,46 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064B4E48AD732768020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+;08=11,1152,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor2.ini b/soft/toolbox/sensors/sensor2.ini
new file mode 100644 (file)
index 0000000..65583d1
--- /dev/null
@@ -0,0 +1,47 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064A9D2DEA232648020280A0A0A0A64
+;00=0F,152,006432202064AFDAE2A932648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ;DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+;08=11,1152,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000 ; Some column on the broken CVD sensor
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor3.ini b/soft/toolbox/sensors/sensor3.ini
new file mode 100644 (file)
index 0000000..fbd601b
--- /dev/null
@@ -0,0 +1,45 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064A9C1D3C432648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor4.ini b/soft/toolbox/sensors/sensor4.ini
new file mode 100644 (file)
index 0000000..eaed48f
--- /dev/null
@@ -0,0 +1,45 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064FFFFFFFF32648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor5.ini b/soft/toolbox/sensors/sensor5.ini
new file mode 100644 (file)
index 0000000..cd82eda
--- /dev/null
@@ -0,0 +1,45 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,0064322020646CD3A7D232648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor6.ini b/soft/toolbox/sensors/sensor6.ini
new file mode 100644 (file)
index 0000000..717ec9b
--- /dev/null
@@ -0,0 +1,45 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064B8CAD7C032648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor7.ini b/soft/toolbox/sensors/sensor7.ini
new file mode 100644 (file)
index 0000000..bc6e382
--- /dev/null
@@ -0,0 +1,45 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,00643220206498B5E6B632648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/soft/toolbox/sensors/sensor8.ini b/soft/toolbox/sensors/sensor8.ini
new file mode 100644 (file)
index 0000000..9c80052
--- /dev/null
@@ -0,0 +1,47 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064A67CB7FF32648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, Boris
+;02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+;08=11,1152,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, on the CVD 
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
diff --git a/soft/toolbox/sensors/sensor9.ini b/soft/toolbox/sensors/sensor9.ini
new file mode 100644 (file)
index 0000000..376b959
--- /dev/null
@@ -0,0 +1,46 @@
+[General]
+IRLEN=5
+BYPASSREG=1F
+[Data]
+00=0F,152,006432202064907565ED32648020280A0A0A0A64
+;00=0F,152,006432202064FFFFFFFF32768020280A0A0A0A64
+;00=0F,152,0064322020649ECD74C532768020280A0A0A0A5F  Bertrams LAST
+;00=0F,152,006432202064B8E3ADD032768020280A0A0A0A64
+;00=0F,152,006432202064B8E1AECE32768020280A0A0A0A64
+;00=0F,152,006432202064A9BFB1D132768020280A0A0A0A64
+;           18171615141312111009080706050403020100
+01=1E,8,00000002 ; RO_MODE0 en ext start
+;01=1E,8,00000006 ; RO_MODE0 pattern only + en ext start
+;1=1E,8,00000012 ; RO_MODE0, En_LineMarker
+;1=1E,8,00000006 ; RO_MODE0, Pattern_Only=1
+02=1D,8,00000000 ; RO_MODE1, basic configuration value
+;02=1D,8,00000001 ; RO_MODE1, EnTestDiscri = 1
+03=13,40,0000000023F00000 ; CTRL_PIX_REG, basic configuration value                    
+04=12,128,7FFF004001C03C00001C60007FFFFFFF ; changed f->7 boris
+;04=12,128,FFFF004001C03C00001C6000FFFFFFFF ; SEQUENCER_PIX_REG, basic configuration value
+05=16,64,5555555580018001 ; HEADER_TRAILER_REG, assumed 4*16bit
+;06=17,48,00000048FC01E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=0, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000C90401E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, En_scan=1, entestdatadisc = 0, En_auto_scan_discri=1, Test_after_mux = 0, ScanLineTst=0x001 (10bit)
+;06=17,48,000000D8FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, entestdatadisc, En_scan, En_auto_scan_discri
+06=17,48,00000008FC00E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout (basic configuration value, and fe55)
+;06=17,48,000000090400E000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, RowLastSuze incremented by two
+;06=17,48,00000008FC00F000 ; CTRL_SUZE_REG: dualchannelout, clkrateout, disckgmodgate=1
+07=15,160,055530001000055582AA0555E001600005552000 ; SEQUENCER_SUZE_REG, basic configuration value
+08=11,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset slot
+;08=11,1152,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+;08=11,1152,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000000000000 ; DIS_DISCRI, autoset by create_rawdata.pl!
+09=10,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE0_PATTERN_REG
+10=14,1152,000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ; LINE1_PATTERN_REG
+;11=18,144,7ABD1E6F278BC01208038180a0401808035C ; CTRL_8B10B_REG0 assumed 16*9bit: 15C, 001, 002, 003, 004, 005, 006, 007, 008, 009, 0F0, 0F1, 0F2, 0F3, 0F4, 0F5
+;12=19,312,0080d5400d5755d5755d5755d5755d5755d575500255061221200800169223980f60a06882a06330 ; CTRL_8B10B_REG1, assumed 312*1bit
+
+
+;00=0F,152,006432202064A6D899D832768020280A0A0A0A64  FPC12_R light on
+;00=0F,152,006432202064ADDE9FE132768020280A0A0A0A64  FPC12_R light off
+
+;00=0F,152,006432202064A280710132768020280A0A0A0A5F  FPC12_L light off
+
+;00=0F,152,006432202064B8E183D532768020280A0A0A0A5F  FPC13_R recalib manually by BN
+
+
+;00=0F,152,006432202064AED883D132768020280A0A0A0A64  Boris recalib CVD sensor (both on 1 FEB)
\ No newline at end of file
diff --git a/vhdl/code/blank_ram.vhd b/vhdl/code/blank_ram.vhd
new file mode 100644 (file)
index 0000000..e9c132b
--- /dev/null
@@ -0,0 +1,80 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+--USE IEEE.std_logic_ARITH.ALL;
+--USE IEEE.std_logic_UNSIGNED.ALL;
+USE IEEE.numeric_std.ALL;
+
+library work;
+
+entity blank_ram is
+  generic (
+    ram_depth : integer;
+    ram_width : integer := 32
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_BLANK_IN : std_logic;
+    -- RAM
+    RAM_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAM_D_OUT : out std_logic_vector(ram_width-1 downto 0);
+    RAM_WR_OUT :out std_logic;
+    
+    IDLE_OUT : out std_logic
+  );
+end entity;
+
+
+architecture blank_ram_arch of blank_ram is
+type state_type is (IDLE, BLANKING);
+signal state, state_next : state_type;
+signal ram_a, ram_a_next :  std_logic_vector(ram_depth-1 downto 0);
+constant ram_data :  std_logic_vector(ram_width-1 downto 0) := (others => '0');
+signal ram_we, ram_we_next :  std_logic;
+constant addr_end : std_logic_vector(ram_depth-1 downto 0) := (others => '1'); -- this should be a constant
+begin
+--wordcounter_end <= (others => '1'); -- maximum RAM address
+IDLE_OUT <= '1' when state = IDLE else '0';
+RAM_A_OUT <= ram_a;
+RAM_WR_OUT <= ram_we;
+RAM_D_OUT <= ram_data;
+SYNCHRONOUS: process(CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      state <= idle;
+      ram_a <= (others => '0');
+      ram_we <= '0';
+    else
+      state <= state_next;
+      ram_a <= ram_a_next;
+      ram_we <= ram_we_next;
+    end if;
+  end if;
+end process;
+
+COMB: process (state, TRIGGER_BLANK_IN, ram_a )
+begin
+  ram_a_next <= ram_a;
+  state_next <= state;
+  ram_we_next <= '0';
+  
+  case state is
+    when IDLE =>
+      if(TRIGGER_BLANK_IN = '1') then
+        ram_a_next <= (others => '0');
+        ram_we_next <= '1';
+        state_next <= BLANKING;
+      end if;
+    when BLANKING =>
+      -- counting up rama_a and ramb_a individually is this ok? or how big is the probability that they get asynchronous??
+      ram_a_next <= std_logic_vector(unsigned(ram_a)+1); -- word 1
+      ram_we_next <= '1';
+      if(ram_a = addr_end) then
+        state_next <= IDLE;
+      end if;
+  end case;
+end process;
+
+
+end architecture;
\ No newline at end of file
diff --git a/vhdl/code/copy_ram.vhd b/vhdl/code/copy_ram.vhd
new file mode 100644 (file)
index 0000000..640f1b6
--- /dev/null
@@ -0,0 +1,103 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+--USE IEEE.std_logic_ARITH.ALL;
+--USE IEEE.std_logic_UNSIGNED.ALL;
+USE IEEE.numeric_std.ALL;
+
+library work;
+
+entity copy_ram is
+  generic (
+    ram_depth : integer;
+    ram_width : integer := 32
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_COPY_IN : std_logic;
+    -- RAM3a
+    RAMA_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAMA_D_IN : in std_logic_vector(ram_width-1 downto 0);
+    -- RAM3b
+    RAMB_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAMB_D_OUT : out std_logic_vector(ram_width-1 downto 0);
+    RAMB_WR_OUT :out std_logic;
+    
+    IDLE_OUT : out std_logic
+  );
+end entity;
+
+
+architecture copy_ram_arch of copy_ram is
+type state_type is (IDLE, READ0, READ1, WRITE_I);
+signal state, state_next : state_type;
+signal rama_a, rama_a_next :  std_logic_vector(ram_depth-1 downto 0);
+signal ramb_a, ramb_a_next :  std_logic_vector(ram_depth-1 downto 0);
+signal ramb_data, ramb_data_next :  std_logic_vector(ram_width-1 downto 0);
+signal ramb_we, ramb_we_next :  std_logic;
+constant addr_end : std_logic_vector(ram_depth-1 downto 0) := (others => '1'); -- this should be a constant
+begin
+--wordcounter_end <= (others => '1'); -- maximum RAM address
+IDLE_OUT <= '1' when state = idle else '0';
+RAMA_A_OUT <= rama_a;
+RAMB_A_OUT <= ramb_a;
+RAMB_WR_OUT <= ramb_we;
+RAMB_D_OUT <= ramb_data;
+SYNCHRONOUS: process(CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      state <= idle;
+      rama_a <= (others => '0');
+      ramb_a <= (others => '0');
+      ramb_data <= (others => '0');
+      ramb_we <= '0';
+    else
+      state <= state_next;
+      rama_a <= rama_a_next;
+      ramb_a <= ramb_a_next;
+      ramb_data <= ramb_data_next;    
+      ramb_we <= ramb_we_next;
+    end if;
+  end if;
+end process;
+
+COMB: process (state, TRIGGER_COPY_IN, RAMA_D_IN, rama_a, ramb_a, ramb_data )
+begin
+  rama_a_next <= rama_a;
+  ramb_a_next <= ramb_a;
+  ramb_data_next <= ramb_data;
+  state_next <= state;
+  ramb_we_next <= '0';
+  
+  case state is
+    when IDLE =>
+      if(TRIGGER_COPY_IN = '1') then
+        rama_a_next <= (others => '0');
+        state_next <= READ0;
+      end if;
+    when READ0 =>
+      -- counting up rama_a and ramb_a individually is this ok? or how big is the probability that they get asynchronous??
+      rama_a_next <= std_logic_vector(unsigned(rama_a)+1); -- word 1
+      state_next <= READ1;
+    when READ1 =>
+      -- counting up rama_a and ramb_a individually is this ok? or how big is the probability that they get asynchronous??
+      rama_a_next <= std_logic_vector(unsigned(rama_a)+1); -- word 2
+      ramb_a_next <= (others => '0'); -- ramb_a should become zero in two clock cycles
+      ramb_data_next <= RAMA_D_IN;
+      ramb_we_next <= '1';
+      state_next <= WRITE_I;
+    when WRITE_I =>
+      rama_a_next <= std_logic_vector(unsigned(rama_a)+1); -- word 3, 4,...
+      -- write word to RAMB
+      ramb_a_next <= std_logic_vector(unsigned(ramb_a)+1);
+      ramb_data_next <= RAMA_D_IN;
+      ramb_we_next <= '1';
+      if(ramb_a = addr_end) then
+        state_next <= IDLE; --last word is written during idle
+      end if;
+  end case;
+end process;
+
+
+end architecture;
\ No newline at end of file
diff --git a/vhdl/code/crc_32.vhd b/vhdl/code/crc_32.vhd
new file mode 100644 (file)
index 0000000..b941909
--- /dev/null
@@ -0,0 +1,99 @@
+LIBRARY IEEE;
+USE IEEE.std_logic_1164.ALL;
+USE IEEE.std_logic_ARITH.ALL;
+USE IEEE.std_logic_UNSIGNED.ALL;
+library work;
+
+entity CRC_32 is
+  port(
+    CLK     : in  std_logic;
+    RESET   : in std_logic;
+    CLK_EN  : in std_logic;
+    DATA_IN : in  std_logic_vector(31 downto 0);
+    CRC_OUT : out std_logic_vector(31 downto 0);
+    CRC_match : out std_logic
+    );
+end entity;
+
+-- architecture CRC32_disabled of CRC32 is
+-- begin
+-- CRC_match <= '1';
+-- CRC_OUT <= (others=>'0');
+-- end architecture;
+
+
+-------------------------------------------------------------------------------
+-- Copyright (C) 2009 OutputLogic.com
+-- This source file may be used and distributed without restriction
+-- provided that this copyright statement is not removed from the file
+-- and that any derivative work contains the original copyright notice
+-- and the associated disclaimer.
+-- 
+-- THIS SOURCE FILE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS
+-- OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+-- WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+-------------------------------------------------------------------------------
+-- CRC module for data(31:0)
+--   lfsr(31:0)=1+x^1+x^2+x^4+x^5+x^7+x^8+x^10+x^11+x^12+x^16+x^22+x^23+x^26+x^32;
+-------------------------------------------------------------------------------
+library ieee;
+use ieee.std_logic_1164.all;
+
+
+architecture imp_crc32 of CRC_32 is
+  signal lfsr_q: std_logic_vector (31 downto 0);
+  signal lfsr_c: std_logic_vector (31 downto 0);
+begin
+    CRC_OUT <= lfsr_q;
+
+    lfsr_c(0) <= lfsr_q(0) xor lfsr_q(6) xor lfsr_q(9) xor lfsr_q(10) xor lfsr_q(12) xor lfsr_q(16) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(26) xor lfsr_q(28) xor lfsr_q(29) xor lfsr_q(30) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(6) xor DATA_IN(9) xor DATA_IN(10) xor DATA_IN(12) xor DATA_IN(16) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(26) xor DATA_IN(28) xor DATA_IN(29) xor DATA_IN(30) xor DATA_IN(31);
+    lfsr_c(1) <= lfsr_q(0) xor lfsr_q(1) xor lfsr_q(6) xor lfsr_q(7) xor lfsr_q(9) xor lfsr_q(11) xor lfsr_q(12) xor lfsr_q(13) xor lfsr_q(16) xor lfsr_q(17) xor lfsr_q(24) xor lfsr_q(27) xor lfsr_q(28) xor DATA_IN(0) xor DATA_IN(1) xor DATA_IN(6) xor DATA_IN(7) xor DATA_IN(9) xor DATA_IN(11) xor DATA_IN(12) xor DATA_IN(13) xor DATA_IN(16) xor DATA_IN(17) xor DATA_IN(24) xor DATA_IN(27) xor DATA_IN(28);
+    lfsr_c(2) <= lfsr_q(0) xor lfsr_q(1) xor lfsr_q(2) xor lfsr_q(6) xor lfsr_q(7) xor lfsr_q(8) xor lfsr_q(9) xor lfsr_q(13) xor lfsr_q(14) xor lfsr_q(16) xor lfsr_q(17) xor lfsr_q(18) xor lfsr_q(24) xor lfsr_q(26) xor lfsr_q(30) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(1) xor DATA_IN(2) xor DATA_IN(6) xor DATA_IN(7) xor DATA_IN(8) xor DATA_IN(9) xor DATA_IN(13) xor DATA_IN(14) xor DATA_IN(16) xor DATA_IN(17) xor DATA_IN(18) xor DATA_IN(24) xor DATA_IN(26) xor DATA_IN(30) xor DATA_IN(31);
+    lfsr_c(3) <= lfsr_q(1) xor lfsr_q(2) xor lfsr_q(3) xor lfsr_q(7) xor lfsr_q(8) xor lfsr_q(9) xor lfsr_q(10) xor lfsr_q(14) xor lfsr_q(15) xor lfsr_q(17) xor lfsr_q(18) xor lfsr_q(19) xor lfsr_q(25) xor lfsr_q(27) xor lfsr_q(31) xor DATA_IN(1) xor DATA_IN(2) xor DATA_IN(3) xor DATA_IN(7) xor DATA_IN(8) xor DATA_IN(9) xor DATA_IN(10) xor DATA_IN(14) xor DATA_IN(15) xor DATA_IN(17) xor DATA_IN(18) xor DATA_IN(19) xor DATA_IN(25) xor DATA_IN(27) xor DATA_IN(31);
+    lfsr_c(4) <= lfsr_q(0) xor lfsr_q(2) xor lfsr_q(3) xor lfsr_q(4) xor lfsr_q(6) xor lfsr_q(8) xor lfsr_q(11) xor lfsr_q(12) xor lfsr_q(15) xor lfsr_q(18) xor lfsr_q(19) xor lfsr_q(20) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(29) xor lfsr_q(30) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(2) xor DATA_IN(3) xor DATA_IN(4) xor DATA_IN(6) xor DATA_IN(8) xor DATA_IN(11) xor DATA_IN(12) xor DATA_IN(15) xor DATA_IN(18) xor DATA_IN(19) xor DATA_IN(20) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(29) xor DATA_IN(30) xor DATA_IN(31);
+    lfsr_c(5) <= lfsr_q(0) xor lfsr_q(1) xor lfsr_q(3) xor lfsr_q(4) xor lfsr_q(5) xor lfsr_q(6) xor lfsr_q(7) xor lfsr_q(10) xor lfsr_q(13) xor lfsr_q(19) xor lfsr_q(20) xor lfsr_q(21) xor lfsr_q(24) xor lfsr_q(28) xor lfsr_q(29) xor DATA_IN(0) xor DATA_IN(1) xor DATA_IN(3) xor DATA_IN(4) xor DATA_IN(5) xor DATA_IN(6) xor DATA_IN(7) xor DATA_IN(10) xor DATA_IN(13) xor DATA_IN(19) xor DATA_IN(20) xor DATA_IN(21) xor DATA_IN(24) xor DATA_IN(28) xor DATA_IN(29);
+    lfsr_c(6) <= lfsr_q(1) xor lfsr_q(2) xor lfsr_q(4) xor lfsr_q(5) xor lfsr_q(6) xor lfsr_q(7) xor lfsr_q(8) xor lfsr_q(11) xor lfsr_q(14) xor lfsr_q(20) xor lfsr_q(21) xor lfsr_q(22) xor lfsr_q(25) xor lfsr_q(29) xor lfsr_q(30) xor DATA_IN(1) xor DATA_IN(2) xor DATA_IN(4) xor DATA_IN(5) xor DATA_IN(6) xor DATA_IN(7) xor DATA_IN(8) xor DATA_IN(11) xor DATA_IN(14) xor DATA_IN(20) xor DATA_IN(21) xor DATA_IN(22) xor DATA_IN(25) xor DATA_IN(29) xor DATA_IN(30);
+    lfsr_c(7) <= lfsr_q(0) xor lfsr_q(2) xor lfsr_q(3) xor lfsr_q(5) xor lfsr_q(7) xor lfsr_q(8) xor lfsr_q(10) xor lfsr_q(15) xor lfsr_q(16) xor lfsr_q(21) xor lfsr_q(22) xor lfsr_q(23) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(28) xor lfsr_q(29) xor DATA_IN(0) xor DATA_IN(2) xor DATA_IN(3) xor DATA_IN(5) xor DATA_IN(7) xor DATA_IN(8) xor DATA_IN(10) xor DATA_IN(15) xor DATA_IN(16) xor DATA_IN(21) xor DATA_IN(22) xor DATA_IN(23) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(28) xor DATA_IN(29);
+    lfsr_c(8) <= lfsr_q(0) xor lfsr_q(1) xor lfsr_q(3) xor lfsr_q(4) xor lfsr_q(8) xor lfsr_q(10) xor lfsr_q(11) xor lfsr_q(12) xor lfsr_q(17) xor lfsr_q(22) xor lfsr_q(23) xor lfsr_q(28) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(1) xor DATA_IN(3) xor DATA_IN(4) xor DATA_IN(8) xor DATA_IN(10) xor DATA_IN(11) xor DATA_IN(12) xor DATA_IN(17) xor DATA_IN(22) xor DATA_IN(23) xor DATA_IN(28) xor DATA_IN(31);
+    lfsr_c(9) <= lfsr_q(1) xor lfsr_q(2) xor lfsr_q(4) xor lfsr_q(5) xor lfsr_q(9) xor lfsr_q(11) xor lfsr_q(12) xor lfsr_q(13) xor lfsr_q(18) xor lfsr_q(23) xor lfsr_q(24) xor lfsr_q(29) xor DATA_IN(1) xor DATA_IN(2) xor DATA_IN(4) xor DATA_IN(5) xor DATA_IN(9) xor DATA_IN(11) xor DATA_IN(12) xor DATA_IN(13) xor DATA_IN(18) xor DATA_IN(23) xor DATA_IN(24) xor DATA_IN(29);
+    lfsr_c(10) <= lfsr_q(0) xor lfsr_q(2) xor lfsr_q(3) xor lfsr_q(5) xor lfsr_q(9) xor lfsr_q(13) xor lfsr_q(14) xor lfsr_q(16) xor lfsr_q(19) xor lfsr_q(26) xor lfsr_q(28) xor lfsr_q(29) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(2) xor DATA_IN(3) xor DATA_IN(5) xor DATA_IN(9) xor DATA_IN(13) xor DATA_IN(14) xor DATA_IN(16) xor DATA_IN(19) xor DATA_IN(26) xor DATA_IN(28) xor DATA_IN(29) xor DATA_IN(31);
+    lfsr_c(11) <= lfsr_q(0) xor lfsr_q(1) xor lfsr_q(3) xor lfsr_q(4) xor lfsr_q(9) xor lfsr_q(12) xor lfsr_q(14) xor lfsr_q(15) xor lfsr_q(16) xor lfsr_q(17) xor lfsr_q(20) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(28) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(1) xor DATA_IN(3) xor DATA_IN(4) xor DATA_IN(9) xor DATA_IN(12) xor DATA_IN(14) xor DATA_IN(15) xor DATA_IN(16) xor DATA_IN(17) xor DATA_IN(20) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(26) xor DATA_IN(27) xor DATA_IN(28) xor DATA_IN(31);
+    lfsr_c(12) <= lfsr_q(0) xor lfsr_q(1) xor lfsr_q(2) xor lfsr_q(4) xor lfsr_q(5) xor lfsr_q(6) xor lfsr_q(9) xor lfsr_q(12) xor lfsr_q(13) xor lfsr_q(15) xor lfsr_q(17) xor lfsr_q(18) xor lfsr_q(21) xor lfsr_q(24) xor lfsr_q(27) xor lfsr_q(30) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(1) xor DATA_IN(2) xor DATA_IN(4) xor DATA_IN(5) xor DATA_IN(6) xor DATA_IN(9) xor DATA_IN(12) xor DATA_IN(13) xor DATA_IN(15) xor DATA_IN(17) xor DATA_IN(18) xor DATA_IN(21) xor DATA_IN(24) xor DATA_IN(27) xor DATA_IN(30) xor DATA_IN(31);
+    lfsr_c(13) <= lfsr_q(1) xor lfsr_q(2) xor lfsr_q(3) xor lfsr_q(5) xor lfsr_q(6) xor lfsr_q(7) xor lfsr_q(10) xor lfsr_q(13) xor lfsr_q(14) xor lfsr_q(16) xor lfsr_q(18) xor lfsr_q(19) xor lfsr_q(22) xor lfsr_q(25) xor lfsr_q(28) xor lfsr_q(31) xor DATA_IN(1) xor DATA_IN(2) xor DATA_IN(3) xor DATA_IN(5) xor DATA_IN(6) xor DATA_IN(7) xor DATA_IN(10) xor DATA_IN(13) xor DATA_IN(14) xor DATA_IN(16) xor DATA_IN(18) xor DATA_IN(19) xor DATA_IN(22) xor DATA_IN(25) xor DATA_IN(28) xor DATA_IN(31);
+    lfsr_c(14) <= lfsr_q(2) xor lfsr_q(3) xor lfsr_q(4) xor lfsr_q(6) xor lfsr_q(7) xor lfsr_q(8) xor lfsr_q(11) xor lfsr_q(14) xor lfsr_q(15) xor lfsr_q(17) xor lfsr_q(19) xor lfsr_q(20) xor lfsr_q(23) xor lfsr_q(26) xor lfsr_q(29) xor DATA_IN(2) xor DATA_IN(3) xor DATA_IN(4) xor DATA_IN(6) xor DATA_IN(7) xor DATA_IN(8) xor DATA_IN(11) xor DATA_IN(14) xor DATA_IN(15) xor DATA_IN(17) xor DATA_IN(19) xor DATA_IN(20) xor DATA_IN(23) xor DATA_IN(26) xor DATA_IN(29);
+    lfsr_c(15) <= lfsr_q(3) xor lfsr_q(4) xor lfsr_q(5) xor lfsr_q(7) xor lfsr_q(8) xor lfsr_q(9) xor lfsr_q(12) xor lfsr_q(15) xor lfsr_q(16) xor lfsr_q(18) xor lfsr_q(20) xor lfsr_q(21) xor lfsr_q(24) xor lfsr_q(27) xor lfsr_q(30) xor DATA_IN(3) xor DATA_IN(4) xor DATA_IN(5) xor DATA_IN(7) xor DATA_IN(8) xor DATA_IN(9) xor DATA_IN(12) xor DATA_IN(15) xor DATA_IN(16) xor DATA_IN(18) xor DATA_IN(20) xor DATA_IN(21) xor DATA_IN(24) xor DATA_IN(27) xor DATA_IN(30);
+    lfsr_c(16) <= lfsr_q(0) xor lfsr_q(4) xor lfsr_q(5) xor lfsr_q(8) xor lfsr_q(12) xor lfsr_q(13) xor lfsr_q(17) xor lfsr_q(19) xor lfsr_q(21) xor lfsr_q(22) xor lfsr_q(24) xor lfsr_q(26) xor lfsr_q(29) xor lfsr_q(30) xor DATA_IN(0) xor DATA_IN(4) xor DATA_IN(5) xor DATA_IN(8) xor DATA_IN(12) xor DATA_IN(13) xor DATA_IN(17) xor DATA_IN(19) xor DATA_IN(21) xor DATA_IN(22) xor DATA_IN(24) xor DATA_IN(26) xor DATA_IN(29) xor DATA_IN(30);
+    lfsr_c(17) <= lfsr_q(1) xor lfsr_q(5) xor lfsr_q(6) xor lfsr_q(9) xor lfsr_q(13) xor lfsr_q(14) xor lfsr_q(18) xor lfsr_q(20) xor lfsr_q(22) xor lfsr_q(23) xor lfsr_q(25) xor lfsr_q(27) xor lfsr_q(30) xor lfsr_q(31) xor DATA_IN(1) xor DATA_IN(5) xor DATA_IN(6) xor DATA_IN(9) xor DATA_IN(13) xor DATA_IN(14) xor DATA_IN(18) xor DATA_IN(20) xor DATA_IN(22) xor DATA_IN(23) xor DATA_IN(25) xor DATA_IN(27) xor DATA_IN(30) xor DATA_IN(31);
+    lfsr_c(18) <= lfsr_q(2) xor lfsr_q(6) xor lfsr_q(7) xor lfsr_q(10) xor lfsr_q(14) xor lfsr_q(15) xor lfsr_q(19) xor lfsr_q(21) xor lfsr_q(23) xor lfsr_q(24) xor lfsr_q(26) xor lfsr_q(28) xor lfsr_q(31) xor DATA_IN(2) xor DATA_IN(6) xor DATA_IN(7) xor DATA_IN(10) xor DATA_IN(14) xor DATA_IN(15) xor DATA_IN(19) xor DATA_IN(21) xor DATA_IN(23) xor DATA_IN(24) xor DATA_IN(26) xor DATA_IN(28) xor DATA_IN(31);
+    lfsr_c(19) <= lfsr_q(3) xor lfsr_q(7) xor lfsr_q(8) xor lfsr_q(11) xor lfsr_q(15) xor lfsr_q(16) xor lfsr_q(20) xor lfsr_q(22) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(27) xor lfsr_q(29) xor DATA_IN(3) xor DATA_IN(7) xor DATA_IN(8) xor DATA_IN(11) xor DATA_IN(15) xor DATA_IN(16) xor DATA_IN(20) xor DATA_IN(22) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(27) xor DATA_IN(29);
+    lfsr_c(20) <= lfsr_q(4) xor lfsr_q(8) xor lfsr_q(9) xor lfsr_q(12) xor lfsr_q(16) xor lfsr_q(17) xor lfsr_q(21) xor lfsr_q(23) xor lfsr_q(25) xor lfsr_q(26) xor lfsr_q(28) xor lfsr_q(30) xor DATA_IN(4) xor DATA_IN(8) xor DATA_IN(9) xor DATA_IN(12) xor DATA_IN(16) xor DATA_IN(17) xor DATA_IN(21) xor DATA_IN(23) xor DATA_IN(25) xor DATA_IN(26) xor DATA_IN(28) xor DATA_IN(30);
+    lfsr_c(21) <= lfsr_q(5) xor lfsr_q(9) xor lfsr_q(10) xor lfsr_q(13) xor lfsr_q(17) xor lfsr_q(18) xor lfsr_q(22) xor lfsr_q(24) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(29) xor lfsr_q(31) xor DATA_IN(5) xor DATA_IN(9) xor DATA_IN(10) xor DATA_IN(13) xor DATA_IN(17) xor DATA_IN(18) xor DATA_IN(22) xor DATA_IN(24) xor DATA_IN(26) xor DATA_IN(27) xor DATA_IN(29) xor DATA_IN(31);
+    lfsr_c(22) <= lfsr_q(0) xor lfsr_q(9) xor lfsr_q(11) xor lfsr_q(12) xor lfsr_q(14) xor lfsr_q(16) xor lfsr_q(18) xor lfsr_q(19) xor lfsr_q(23) xor lfsr_q(24) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(29) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(9) xor DATA_IN(11) xor DATA_IN(12) xor DATA_IN(14) xor DATA_IN(16) xor DATA_IN(18) xor DATA_IN(19) xor DATA_IN(23) xor DATA_IN(24) xor DATA_IN(26) xor DATA_IN(27) xor DATA_IN(29) xor DATA_IN(31);
+    lfsr_c(23) <= lfsr_q(0) xor lfsr_q(1) xor lfsr_q(6) xor lfsr_q(9) xor lfsr_q(13) xor lfsr_q(15) xor lfsr_q(16) xor lfsr_q(17) xor lfsr_q(19) xor lfsr_q(20) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(29) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(1) xor DATA_IN(6) xor DATA_IN(9) xor DATA_IN(13) xor DATA_IN(15) xor DATA_IN(16) xor DATA_IN(17) xor DATA_IN(19) xor DATA_IN(20) xor DATA_IN(26) xor DATA_IN(27) xor DATA_IN(29) xor DATA_IN(31);
+    lfsr_c(24) <= lfsr_q(1) xor lfsr_q(2) xor lfsr_q(7) xor lfsr_q(10) xor lfsr_q(14) xor lfsr_q(16) xor lfsr_q(17) xor lfsr_q(18) xor lfsr_q(20) xor lfsr_q(21) xor lfsr_q(27) xor lfsr_q(28) xor lfsr_q(30) xor DATA_IN(1) xor DATA_IN(2) xor DATA_IN(7) xor DATA_IN(10) xor DATA_IN(14) xor DATA_IN(16) xor DATA_IN(17) xor DATA_IN(18) xor DATA_IN(20) xor DATA_IN(21) xor DATA_IN(27) xor DATA_IN(28) xor DATA_IN(30);
+    lfsr_c(25) <= lfsr_q(2) xor lfsr_q(3) xor lfsr_q(8) xor lfsr_q(11) xor lfsr_q(15) xor lfsr_q(17) xor lfsr_q(18) xor lfsr_q(19) xor lfsr_q(21) xor lfsr_q(22) xor lfsr_q(28) xor lfsr_q(29) xor lfsr_q(31) xor DATA_IN(2) xor DATA_IN(3) xor DATA_IN(8) xor DATA_IN(11) xor DATA_IN(15) xor DATA_IN(17) xor DATA_IN(18) xor DATA_IN(19) xor DATA_IN(21) xor DATA_IN(22) xor DATA_IN(28) xor DATA_IN(29) xor DATA_IN(31);
+    lfsr_c(26) <= lfsr_q(0) xor lfsr_q(3) xor lfsr_q(4) xor lfsr_q(6) xor lfsr_q(10) xor lfsr_q(18) xor lfsr_q(19) xor lfsr_q(20) xor lfsr_q(22) xor lfsr_q(23) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(26) xor lfsr_q(28) xor lfsr_q(31) xor DATA_IN(0) xor DATA_IN(3) xor DATA_IN(4) xor DATA_IN(6) xor DATA_IN(10) xor DATA_IN(18) xor DATA_IN(19) xor DATA_IN(20) xor DATA_IN(22) xor DATA_IN(23) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(26) xor DATA_IN(28) xor DATA_IN(31);
+    lfsr_c(27) <= lfsr_q(1) xor lfsr_q(4) xor lfsr_q(5) xor lfsr_q(7) xor lfsr_q(11) xor lfsr_q(19) xor lfsr_q(20) xor lfsr_q(21) xor lfsr_q(23) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(29) xor DATA_IN(1) xor DATA_IN(4) xor DATA_IN(5) xor DATA_IN(7) xor DATA_IN(11) xor DATA_IN(19) xor DATA_IN(20) xor DATA_IN(21) xor DATA_IN(23) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(26) xor DATA_IN(27) xor DATA_IN(29);
+    lfsr_c(28) <= lfsr_q(2) xor lfsr_q(5) xor lfsr_q(6) xor lfsr_q(8) xor lfsr_q(12) xor lfsr_q(20) xor lfsr_q(21) xor lfsr_q(22) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(28) xor lfsr_q(30) xor DATA_IN(2) xor DATA_IN(5) xor DATA_IN(6) xor DATA_IN(8) xor DATA_IN(12) xor DATA_IN(20) xor DATA_IN(21) xor DATA_IN(22) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(26) xor DATA_IN(27) xor DATA_IN(28) xor DATA_IN(30);
+    lfsr_c(29) <= lfsr_q(3) xor lfsr_q(6) xor lfsr_q(7) xor lfsr_q(9) xor lfsr_q(13) xor lfsr_q(21) xor lfsr_q(22) xor lfsr_q(23) xor lfsr_q(25) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(28) xor lfsr_q(29) xor lfsr_q(31) xor DATA_IN(3) xor DATA_IN(6) xor DATA_IN(7) xor DATA_IN(9) xor DATA_IN(13) xor DATA_IN(21) xor DATA_IN(22) xor DATA_IN(23) xor DATA_IN(25) xor DATA_IN(26) xor DATA_IN(27) xor DATA_IN(28) xor DATA_IN(29) xor DATA_IN(31);
+    lfsr_c(30) <= lfsr_q(4) xor lfsr_q(7) xor lfsr_q(8) xor lfsr_q(10) xor lfsr_q(14) xor lfsr_q(22) xor lfsr_q(23) xor lfsr_q(24) xor lfsr_q(26) xor lfsr_q(27) xor lfsr_q(28) xor lfsr_q(29) xor lfsr_q(30) xor DATA_IN(4) xor DATA_IN(7) xor DATA_IN(8) xor DATA_IN(10) xor DATA_IN(14) xor DATA_IN(22) xor DATA_IN(23) xor DATA_IN(24) xor DATA_IN(26) xor DATA_IN(27) xor DATA_IN(28) xor DATA_IN(29) xor DATA_IN(30);
+    lfsr_c(31) <= lfsr_q(5) xor lfsr_q(8) xor lfsr_q(9) xor lfsr_q(11) xor lfsr_q(15) xor lfsr_q(23) xor lfsr_q(24) xor lfsr_q(25) xor lfsr_q(27) xor lfsr_q(28) xor lfsr_q(29) xor lfsr_q(30) xor lfsr_q(31) xor DATA_IN(5) xor DATA_IN(8) xor DATA_IN(9) xor DATA_IN(11) xor DATA_IN(15) xor DATA_IN(23) xor DATA_IN(24) xor DATA_IN(25) xor DATA_IN(27) xor DATA_IN(28) xor DATA_IN(29) xor DATA_IN(30) xor DATA_IN(31);
+
+    process(lfsr_q) begin
+      if(lfsr_q = 0) then
+        CRC_match <= '1';
+      else
+        CRC_match <= '0';
+      end if;
+    end process;
+
+    process (CLK,RESET) begin
+      if (RESET = '1') then
+        lfsr_q <= b"11111111111111111111111111111111";
+      elsif (rising_edge(CLK)) then
+        if (CLK_EN = '1') then
+          lfsr_q <= lfsr_c;
+        end if;
+      end if;
+    end process;
+end architecture imp_crc32; 
\ No newline at end of file
diff --git a/vhdl/code/dcm3.vhd b/vhdl/code/dcm3.vhd
new file mode 100644 (file)
index 0000000..da903ae
--- /dev/null
@@ -0,0 +1,102 @@
+--------------------------------------------------------------------------------
+-- Copyright (c) 1995-2007 Xilinx, Inc.  All rights reserved.
+--------------------------------------------------------------------------------
+--   ____  ____ 
+--  /   /\/   / 
+-- /___/  \  /    Vendor: Xilinx 
+-- \   \   \/     Version : 9.2.04i
+--  \   \         Application : xaw2vhdl
+--  /   /         Filename : dcm3.vhd
+-- /___/   /\     Timestamp : 06/24/2011 15:30:54
+-- \   \  /  \ 
+--  \___\/\___\ 
+--
+--Command: xaw2vhdl-intstyle /d/sugar/bneumann/vhdl/jtag_proj/ise9_tempproj/tempproj1/dcm3.xaw -st dcm3.vhd
+--Design Name: dcm3
+--Device: xc4vlx40-10ff1148
+--
+-- Module dcm3
+-- Generated by Xilinx Architecture Wizard
+-- Written for synthesis tool: XST
+-- Period Jitter (unit interval) for block DCM_ADV_INST = 0.018 UI
+-- Period Jitter (Peak-to-Peak) for block DCM_ADV_INST = 0.222 ns
+
+library ieee;
+use ieee.std_logic_1164.ALL;
+use ieee.numeric_std.ALL;
+library UNISIM;
+use UNISIM.Vcomponents.ALL;
+
+entity dcm3 is
+   port ( CLKIN_IN   : in    std_logic; 
+          RST_IN     : in    std_logic; 
+          CLKFX_OUT  : out   std_logic; 
+          CLK0_OUT   : out   std_logic; 
+          LOCKED_OUT : out   std_logic);
+end dcm3;
+
+architecture BEHAVIORAL of dcm3 is
+   signal CLKFB_IN   : std_logic;
+   signal CLKFX_BUF  : std_logic;
+   signal CLK0_BUF   : std_logic;
+   signal GND_BIT    : std_logic;
+   signal GND_BUS_7  : std_logic_vector (6 downto 0);
+   signal GND_BUS_16 : std_logic_vector (15 downto 0);
+begin
+   GND_BIT <= '0';
+   GND_BUS_7(6 downto 0) <= "0000000";
+   GND_BUS_16(15 downto 0) <= "0000000000000000";
+   CLK0_OUT <= CLKFB_IN;
+   CLKFX_BUFG_INST : BUFG
+      port map (I=>CLKFX_BUF,
+                O=>CLKFX_OUT);
+   
+   CLK0_BUFG_INST : BUFG
+      port map (I=>CLK0_BUF,
+                O=>CLKFB_IN);
+   
+   DCM_ADV_INST : DCM_ADV
+   generic map( CLK_FEEDBACK => "1X",
+            CLKDV_DIVIDE => 2.0,
+            CLKFX_DIVIDE => 5,
+            CLKFX_MULTIPLY => 4,
+            CLKIN_DIVIDE_BY_2 => FALSE,
+            CLKIN_PERIOD => 10.000,
+            CLKOUT_PHASE_SHIFT => "NONE",
+            DCM_AUTOCALIBRATION => TRUE,
+            DCM_PERFORMANCE_MODE => "MAX_SPEED",
+            DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS",
+            DFS_FREQUENCY_MODE => "LOW",
+            DLL_FREQUENCY_MODE => "LOW",
+            DUTY_CYCLE_CORRECTION => TRUE,
+            FACTORY_JF => x"F0F0",
+            PHASE_SHIFT => 0,
+            STARTUP_WAIT => FALSE)
+      port map (CLKFB=>CLKFB_IN,
+                CLKIN=>CLKIN_IN,
+                DADDR(6 downto 0)=>GND_BUS_7(6 downto 0),
+                DCLK=>GND_BIT,
+                DEN=>GND_BIT,
+                DI(15 downto 0)=>GND_BUS_16(15 downto 0),
+                DWE=>GND_BIT,
+                PSCLK=>GND_BIT,
+                PSEN=>GND_BIT,
+                PSINCDEC=>GND_BIT,
+                RST=>RST_IN,
+                CLKDV=>open,
+                CLKFX=>CLKFX_BUF,
+                CLKFX180=>open,
+                CLK0=>CLK0_BUF,
+                CLK2X=>open,
+                CLK2X180=>open,
+                CLK90=>open,
+                CLK180=>open,
+                CLK270=>open,
+                DO=>open,
+                DRDY=>open,
+                LOCKED=>LOCKED_OUT,
+                PSDONE=>open);
+   
+end BEHAVIORAL;
+
+
diff --git a/vhdl/code/jtag_bypassreg_testchain_m10.vhd b/vhdl/code/jtag_bypassreg_testchain_m10.vhd
new file mode 100755 (executable)
index 0000000..b8a72b7
--- /dev/null
@@ -0,0 +1,325 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+--use work.version.all;\r
+use work.jtag_constants.all;\r
+use work.jtag_misc.all;\r
+\r
+entity jtag_bypassreg_testchain_m10 is\r
+  generic (\r
+--    delay : integer := 0; -- this is the same value as in jtag_delay_expected_values\r
+    MAX_NUMCHIPS : integer;\r
+    MAX_NUMCHIPS_LD : integer;\r
+    JTAG_M26_IRLEN : integer;\r
+    \r
+    max_bitcounter_ld : integer;-- set to: MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD + 7-- bitcounter counts to ir_fill_ones_length, to zerofill_length aswell as from begin of sending pattern to end of receiving pattern (zerofill_length). should write something like: max(MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD, 7)+1.\r
+\r
+    ld_maxdelay : integer := 2; -- floor of ld maxdelay\r
+    pattern_length : integer := 4;\r
+    pattern : std_logic_vector(4-1 downto 0) := "1001";\r
+    zerofill_numzeros_required : integer := 5 -- minimum number of zeros appearing at tdo while first zero filling phase\r
+  );\r
+  port(\r
+    CLK_IN : in std_logic;\r
+    RESET_IN : in std_logic;\r
+    \r
+    BEGIN_JTAGBITCALC_IN   : in std_logic;\r
+    TRIGGER_BEGIN_TESTCHAIN_IN : in std_logic;\r
+    IDLE_OUT : out std_logic;\r
+    \r
+    -- length in chips of the chain -- corresponds to the number of bits the\r
+    -- output is shifted compared to the input, because the BYPASS registers\r
+    -- are selected, which are only one bit long\r
+    CHAIN_LENGTH_OUT : out std_logic_vector(max_bitcounter_ld-1 downto 0);\r
+    -- if after feeding in a sufficiently long sequence \r
+    -- the expected output pattern doesnt occur\r
+    CHAIN_BROKEN_OUT : out std_logic;\r
+    \r
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;\r
+    LAST_TCK_CYCLE_OUT : out std_logic;\r
+    TMS_OUT : out std_logic;\r
+    TDI_OUT : out std_logic;\r
+    TDO_IN  : in  std_logic;\r
+    DELAY_IN : in std_logic_vector(ld_maxdelay-1 downto 0)\r
+    );\r
+end entity;\r
+\r
+\r
+architecture jtag_bypassreg_testchain_m10_arch of jtag_bypassreg_testchain_m10 is\r
+constant     ir_fill_ones_length : integer := MAX_NUMCHIPS*JTAG_M26_IRLEN+100;\r
+constant     zerofill_length : integer := MAX_NUMCHIPS + 10;\r
+\r
+signal bitcounter, bitcounter_next : unsigned(max_bitcounter_ld-1 downto 0);\r
+signal nfa_state, nfa_state_next : std_logic_vector (pattern_length-1 downto 0);\r
+signal input_bit : std_logic;\r
+\r
+\r
+-- COPIED FROM jtag_write_m10:\r
+-- this state controls the global behaviour. on reset state idle is entered,\r
+--                                           on trigger  wait_begin_jtagbitcalc is entered\r
+--                                              when begin_jtagbitcalc is set, state becomes either idle or \r
+--                                              processing and after finished wait_begin_jtagbitcalc is entered again\r
+type state_type is (IDLE, WAIT_BEGIN_JTAGBITCALC, PROCESSING);\r
+signal state, state_next : state_type;\r
+-- the substate represents the processing state we are in, the name suffix _pi tells how many clock cycles have been spent up to the current state, processing. i must be smaller than 10 so that with 100MHz system clock the JTAG clock can be operated at 10 MHz.\r
+type substate_type is (none_p1, ir_ones_p1, dr_zeros_p1, dr_pattern_p1, dr_pattern2_p2);\r
+signal substate, substate_next : substate_type;\r
+-- COPIED FROM jtag_write_m10:\r
+-- operation = "00": JTAG_RESET, operation = "01" : WRITE_IR, operation = "10": WRITE_DR, operation = "11": none\r
+-- the operation is set on entering processing state, in setup operation is set to none\r
+signal operation, operation_next : unsigned(1 downto 0);\r
+-- COPIED FROM jtag_write_m10, modified\r
+--   JTAG_RESET: operation_phase = 0000-0101 : set TMS=1 for JTAG reset\r
+--   WRITE_IR:   operation_phase = 0000      : set TMS=0 => Run-Test/Idle\r
+--               operation_phase = 0001      : set TMS=1 => Select-DR-Scan\r
+--               operation_phase = 0010      : set TMS=1 => Select-IR-Scan\r
+--               operation_phase = 0011      : set TMS=0 => Capture-IR\r
+--               operation_phase = 0100      : set TMS=0 => Shift-IR\r
+--               operation_phase = 0101      : set TMS=0 => Shift-IR, HERE SHIFTING OF DATA HAPPENS\r
+--               operation_phase = 0110      : set TMS=1 => Exit1-IR, HERE LAST BIT OF IR IS SHIFTED\r
+--               operation_phase = 0111      : set TMS=1 => Update-IR\r
+--               operation_phase = 1000      : set TMS=0 => Run-Test/Idle\r
+--   WRITE_DR:   operation_phase = 0000      : set TMS=1 => Select-DR-Scan\r
+--               operation_phase = 0001      : set TMS=0 => Capture-DR\r
+--               operation_phase = 0010      : set TMS=0 => Shift-DR\r
+--               operation_phase = 0011      : set TMS=0 => Shift-DR, HERE SHIFTING OF DATA HAPPENS, shift zeros\r
+--               operation_phase = 0100      : set TMS=0 => Shift-DR, HERE SHIFTING OF DATA HAPPENS, shift pattern followed by zeros\r
+--               operation_phase = 0101      : set TMS=1 => Exit1-DR, HERE LAST BIT OF IR IS SHIFTED\r
+--               operation_phase = 0110      : set TMS=1 => Update-DR\r
+--               operation_phase = 0111      : set TMS=0 => Run-Test/Idle\r
+-- warning: operation phase may change during processing (because length of register is retrieved from RAM)\r
+--          but will settle from setOutputs_p8 on\r
+signal operation_phase, operation_phase_next : unsigned(3 downto 0);\r
+\r
+-- helper signals\r
+signal tmp_input_vect : std_logic;\r
+signal pattern_detected : std_logic;\r
+-- other signals\r
+signal last_tck_cycle, last_tck_cycle_next : std_logic;\r
+signal zerocounter, zerocounter_next : unsigned (max_bitcounter_ld-1 downto 0);\r
+signal chain_broken, chain_broken_next : std_logic;\r
+signal chain_length, chain_length_next : std_logic_vector (max_bitcounter_ld-1 downto 0);\r
+-- should a JTAG clock pulse be generated this global_jtag_counter cycle?\r
+signal enable_jtag_clock, enable_jtag_clock_next : std_logic; \r
+-- JTAG output signal: TDI\r
+signal tdi, tdi_next : std_logic;\r
+\r
+-- JTAG output signal: TMS\r
+signal tms, tms_next : std_logic;\r
+\r
+-- INSERTLABEL:  signals\r
+begin\r
+-- helper signals\r
+--tmp_input_vect <= (others => input_bit); -- doesn't work\r
+pattern_detected <= nfa_state(pattern_length-1);\r
+input_bit <= TDO_IN;\r
+CHAIN_BROKEN_OUT <= chain_broken;\r
+CHAIN_LENGTH_OUT <= chain_length;\r
+IDLE_OUT <= '1' when state = idle else '0';\r
+ENABLE_JTAG_CLOCK_OUT <= enable_jtag_clock;\r
+LAST_TCK_CYCLE_OUT  <= last_tck_cycle;\r
+TMS_OUT <= tms;\r
+TDI_OUT <= tdi;\r
+\r
+SYNCHRONOUS_MAIN : process (CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      bitcounter <= (others =>'0');\r
+      nfa_state <= (others => '0');\r
+      last_tck_cycle <= '0';\r
+      zerocounter <= (others => '0');\r
+      state <= IDLE;\r
+      substate <= none_p1;      \r
+      chain_broken <= '1';\r
+      chain_length <= (others => '0');\r
+      enable_jtag_clock <= '0';\r
+      tdi <= '0';\r
+      tms <= '0';      \r
+      operation <= "11";\r
+      operation_phase <= "0000";\r
+      -- INSERTLABEL: SYNCHRONOUS reset\r
+    else\r
+      bitcounter <= bitcounter_next;\r
+      nfa_state <= nfa_state_next;\r
+      last_tck_cycle <= last_tck_cycle_next;\r
+      zerocounter <= zerocounter_next;\r
+      state <= state_next;\r
+      substate <= substate_next;      \r
+      chain_broken <= chain_broken_next;\r
+      chain_length <= chain_length_next;\r
+      enable_jtag_clock <= enable_jtag_clock_next;\r
+      tdi <= tdi_next;\r
+      tms <= tms_next;\r
+      operation <= operation_next;\r
+      operation_phase <= operation_phase_next;      \r
+      -- INSERTLABEL:  SYNCHRONOUS update\r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB_MAIN: process(bitcounter, input_bit, nfa_state,last_tck_cycle,zerocounter,state, TRIGGER_BEGIN_TESTCHAIN_IN, BEGIN_JTAGBITCALC_IN, operation, operation_phase, substate, enable_jtag_clock, chain_broken, chain_length, tdi, tms, pattern_detected, DELAY_IN ) -- INSERTLABEL:  sensitivity list\r
+begin\r
+  bitcounter_next <= bitcounter;\r
+  last_tck_cycle_next <= last_tck_cycle;\r
+  zerocounter_next <= zerocounter;\r
+  state_next <= state;\r
+  substate_next <= substate;\r
+  operation_next <= operation;\r
+  operation_phase_next <= operation_phase;\r
+  enable_jtag_clock_next <= enable_jtag_clock;\r
+  nfa_state_next <= nfa_state;\r
+  chain_broken_next <= chain_broken;\r
+  chain_length_next <= chain_length;\r
+  tdi_next <= tdi;\r
+  tms_next <= tms;\r
+  \r
+  -- INSERTLABEL:  COMB defaults\r
+  case state is\r
+  when IDLE =>\r
+    if(TRIGGER_BEGIN_TESTCHAIN_IN = '1') then\r
+      state_next <= WAIT_BEGIN_JTAGBITCALC;\r
+      operation_next <= "11"; -- none\r
+      chain_length_next <= (others =>'0');\r
+      chain_broken_next <= '1';\r
+    end if;  \r
+  when WAIT_BEGIN_JTAGBITCALC =>\r
+    if(BEGIN_JTAGBITCALC_IN='1') then\r
+      state_next <= PROCESSING;\r
+      operation_phase_next <= operation_phase + 1;\r
+      substate_next <= none_p1; -- do nothing other than output tms=1\r
+      if(operation = "11") then\r
+        -- last operation was none\r
+        operation_next <= "00"; -- JTAG_RESET\r
+        operation_phase_next <= "0000"; -- Bit Nr. 0\r
+        enable_jtag_clock_next <= '1';  -- enable JTAG clock for WRITE operation\r
+      elsif(operation = "00") then\r
+        -- last operation was: JTAG_RESET\r
+        if(operation_phase = "0101") then\r
+          operation_next <= "01"; -- WRITE_IR\r
+          operation_phase_next <= "0000";\r
+          bitcounter_next <= (others => '0');\r
+        end if;\r
+      elsif(operation = "01") then\r
+        -- last operation was: WRITE_IR\r
+        if(operation_phase = "0101") then -- Shift-IR\r
+          -- stay in this phase until the instruction registers (of all chips) have been filled with ones\r
+          substate_next <= ir_ones_p1; -- fill ir with ones\r
+          if(to_integer(bitcounter) < ir_fill_ones_length - 1) then \r
+            operation_phase_next <= operation_phase;\r
+            bitcounter_next <= bitcounter + 1;\r
+          else\r
+            operation_phase_next <= operation_phase+1; -- shift last bit\r
+          end if;\r
+        elsif(operation_phase = "1000") then -- Run-Test-Idle\r
+          operation_next <= "10"; -- WRITE_DR\r
+          operation_phase_next <= "0000"; -- Select-DR-Scan\r
+          bitcounter_next <= (others => '0');  -- reset bitcounter\r
+        end if;\r
+      elsif(operation = "10") then\r
+        --last operation was: WRITE_DR\r
+        if(operation_phase = "0010") then -- Shift-DR\r
+          substate_next <= dr_zeros_p1; -- fill dr with zeros\r
+        elsif(operation_phase = "0011") then -- Shift-DR\r
+          -- stay in this phase until the bypass registers (of all chips) have filles with zeros\r
+          bitcounter_next <= bitcounter + 1;\r
+          operation_phase_next <= operation_phase;\r
+          substate_next <= dr_zeros_p1; -- fill dr with zeros\r
+          if(to_integer(bitcounter) +1 >= zerofill_length + to_integer(unsigned(DELAY_IN))) then\r
+            if(to_integer(zerocounter) > zerofill_numzeros_required) then\r
+              -- enough zeros appeared at tdo\r
+              operation_phase_next <= operation_phase + 1;\r
+              bitcounter_next <= (others =>'0');\r
+              substate_next <= dr_pattern_p1; -- write pattern into dr\r
+            else\r
+              operation_phase_next <= operation_phase + 2; -- skip writing pattern, thus yielding CHAIN_BROKEN='1' and CHAIN_LENGTH=0\r
+              bitcounter_next <= (others =>'0');\r
+            end if;\r
+          end if;\r
+        elsif(operation_phase = "0100") then -- Shift-DR: shift pattern\r
+          bitcounter_next <= bitcounter + 1;\r
+          operation_phase_next <= operation_phase;\r
+          substate_next <= dr_pattern_p1; -- write pattern into dr/look for pattern\r
+          if(to_integer(bitcounter) +1 >= zerofill_length + pattern_length + to_integer(unsigned(DELAY_IN))) then\r
+            operation_phase_next <= operation_phase + 1;\r
+          end if;\r
+        elsif(operation_phase = "0110") then -- Update DR\r
+          last_tck_cycle_next <= '1';\r
+        elsif(operation_phase = "0111") then -- Run-Test-Idle\r
+          enable_jtag_clock_next <= '0'; -- disable JTAG clock for WRITE operation\r
+          last_tck_cycle_next <= '0';\r
+          state_next <= IDLE;          \r
+        end if;\r
+      end if;\r
+    end if;\r
+  when PROCESSING =>\r
+    -- set TMS, copied from jtag_write_m10, modified\r
+    tms_next <= '1'; -- JTAG_RESET if operation = "00"\r
+    if(operation = "01") then -- WRITE_IR\r
+      if(operation_phase = "0001") then\r
+        tms_next <= '1';\r
+      elsif(operation_phase = "0010") then\r
+        tms_next <= '1';\r
+      elsif(operation_phase = "0110") then\r
+        tms_next <= '1';\r
+      elsif(operation_phase = "0111") then\r
+        tms_next <= '1';\r
+      else\r
+        tms_next <= '0';\r
+      end if;\r
+    elsif(operation = "10") then -- WRITE_DR\r
+      if(operation_phase = "0000") then\r
+        tms_next <= '1';\r
+      elsif(operation_phase = "0101") then\r
+        tms_next <= '1';\r
+      elsif(operation_phase = "0110") then\r
+        tms_next <= '1';\r
+      else\r
+        tms_next <= '0';\r
+      end if;\r
+    end if;      \r
+    tdi_next <= '0';\r
+    case substate is\r
+    when none_p1 =>\r
+      state_next <= WAIT_BEGIN_JTAGBITCALC;\r
+    when ir_ones_p1 =>\r
+      tdi_next <= '1';\r
+      state_next <= WAIT_BEGIN_JTAGBITCALC;\r
+    when dr_zeros_p1 =>\r
+      tdi_next <= '0';\r
+      -- as the comparison of input_bit always happens in the first processing substate (*_p1),\r
+      -- the delay is fixed (always the same sampling time is used)\r
+      if(input_bit = '1') then\r
+        zerocounter_next <= (others =>'0');\r
+      else\r
+        zerocounter_next <= zerocounter + 1;\r
+      end if;\r
+      state_next <= WAIT_BEGIN_JTAGBITCALC;\r
+    when dr_pattern_p1 =>\r
+      -- as the comparison of input_bit always happens in the first processing substate (*_p1),\r
+      -- the delay is fixed (always the same sampling time is used)    \r
+      -- this way: the first bit of the pattern always sets the first bit in nfa_state\r
+      -- nfa_state(i) means the (i+1)'th bit has arrived in a row.\r
+      -- if nfa_state(pattern_length-1) is set, this obviously means the full pattern has been detected.\r
+      nfa_state_next(pattern_length-1 downto 0) <= (nfa_state(pattern_length-2 downto 0) & '1') and std_logic_vector_scalar_compare(pattern, input_bit);\r
+      substate_next <= dr_pattern2_p2;\r
+  --nfa_state_next(pattern_length downto 1) <= nfa_state(pattern_length-1 downto 0) and (pattern = tmp_input_vect);\r
+    when dr_pattern2_p2 =>\r
+      if(pattern_detected = '1') then\r
+        chain_broken_next <= '0';\r
+        chain_length_next <= std_logic_vector(to_unsigned(to_integer(bitcounter)-to_integer(unsigned(DELAY_IN))-pattern_length, max_bitcounter_ld));\r
+      end if;\r
+      if(to_integer(bitcounter) < pattern_length) then\r
+        tdi_next <= pattern(to_integer(bitcounter));\r
+      else\r
+        tdi_next <= '0';\r
+      end if;\r
+      state_next <= WAIT_BEGIN_JTAGBITCALC;\r
+    end case;\r
+  end case;\r
+end process;\r
+\r
+end architecture;\r
+\r
diff --git a/vhdl/code/jtag_check_crc_ram1a.vhd b/vhdl/code/jtag_check_crc_ram1a.vhd
new file mode 100755 (executable)
index 0000000..c62ccac
--- /dev/null
@@ -0,0 +1,200 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+use work.jtag_constants.all;\r
+\r
+entity jtag_check_crc_ram1a is\r
+  generic (\r
+    RAM_JTAG_REGISTERS_DEPTH : integer;\r
+    MAX_NUMCHIPS : integer;\r
+    MAX_NUMCHIPS_LD : integer;\r
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;\r
+    MAX_REGLEN_PLUS_ONE_LD : integer;\r
+    MAX_REGISTERS_LD : integer\r
+  );\r
+  port (\r
+    CLK_IN : std_logic;\r
+    RESET_IN : std_logic;\r
+    TRIGGER_CHECK_IN : std_logic;\r
+    -- RAM1a\r
+    RAM1A_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);\r
+    RAM1A_D_IN : in std_logic_vector(31 downto 0);\r
+    \r
+    NUMCHIPS_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);\r
+    CRC_OK_OUT : out std_logic_vector(MAX_NUMCHIPS-1 downto 0);\r
+    IDLE_OUT : out std_logic\r
+  );\r
+end entity;\r
+\r
+architecture jtag_check_crc_ram1a_arch of jtag_check_crc_ram1a is\r
+component CRC_32 is\r
+  port(\r
+    CLK     : in  std_logic;\r
+    RESET   : in std_logic;\r
+    CLK_EN  : in std_logic;\r
+    DATA_IN : in  std_logic_vector(31 downto 0);\r
+    CRC_OUT : out std_logic_vector(31 downto 0);\r
+    CRC_match : out std_logic\r
+    );\r
+end component;\r
+\r
+type state_type is (idle, prepare_read, readA0, readAi, wait_check, wait_check2, wait_check3);\r
+signal state, state_next : state_type;\r
+signal wordcounter, wordcounter_next : unsigned(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);\r
+signal numregs, numregs_next : unsigned(MAX_REGISTERS_LD-1 downto 0);\r
+signal dr_pointer, dr_pointer_next : unsigned(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);\r
+signal length, length_next         : unsigned(MAX_REGLEN_PLUS_ONE_LD-1 downto 0);\r
+signal wordlength         : unsigned(MAX_REGLEN_PLUS_ONE_LD-1-5 downto 0);\r
+\r
+signal ram1a_a, ram1a_a_next :  std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);\r
+signal crc32_en, crc32_en_next : std_logic;\r
+signal crc32_data, crc32_data_next : std_logic_vector(31 downto 0);\r
+signal crc32_match : std_logic;\r
+signal crc32_reset, crc32_reset_next : std_logic;\r
+-- is first CRC32 ok? reset on TRIGGER_CHECK_IN\r
+signal crc1_ok, crc1_ok_next : std_logic;\r
+-- is second CRC32 ok? reset on TRIGGER_CHECK_IN\r
+signal crc2_ok, crc2_ok_next : std_logic;\r
+-- are both CRCs ok?\r
+signal crc_ok, crc_ok_next : std_logic_vector(MAX_NUMCHIPS-1 downto 0);\r
+-- check first/second CRC in next clock cycle\r
+signal check_crc1, check_crc1_next, check_crc1_next_next : std_logic;\r
+signal check_crc2, check_crc2_next, check_crc2_next_next : std_logic;\r
+signal chipcounter, chipcounter_next : unsigned(MAX_NUMCHIPS_LD-1 downto 0);\r
+\r
+begin\r
+\r
+the_crc32 : CRC_32 port map (CLK => CLK_IN, RESET => crc32_reset, CLK_EN => crc32_en, \r
+                             DATA_IN => crc32_data, CRC_OUT => open, CRC_match =>crc32_match); \r
+\r
+CRC_OK_OUT <= crc_ok;                             \r
+IDLE_OUT <= '1' when state = idle else '0';\r
+RAM1A_A_OUT <= ram1a_a;\r
+wordlength <= length(MAX_REGLEN_PLUS_ONE_LD-1 downto 5) when length(4 downto 0) = "00000" else  length(MAX_REGLEN_PLUS_ONE_LD-1 downto 5) + 1;\r
+                             \r
+SYNCHRONOUS: process(CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      state <= idle;\r
+      ram1a_a <= (others => '0');\r
+      wordcounter <= (others => '0');\r
+      crc32_data <= (others => '0');\r
+      crc32_en <= '0';\r
+      numregs <= (others => '0');\r
+      dr_pointer <= (others => '0');\r
+      length <= (others => '0');\r
+      crc1_ok <= '0';\r
+      crc2_ok <= '0';\r
+      crc_ok <= (others => '0');\r
+      check_crc1 <= '0';\r
+      check_crc2 <= '0';    \r
+      check_crc1_next <= '0';\r
+      check_crc2_next <= '0';    \r
+      chipcounter <= (others => '0');\r
+      crc32_reset <= '0';\r
+    else\r
+      state <= state_next;\r
+      ram1a_a <= ram1a_a_next;    \r
+      wordcounter <= wordcounter_next;\r
+      crc32_data <= crc32_data_next;\r
+      crc32_en <= crc32_en_next;      \r
+      numregs <= numregs_next;\r
+      dr_pointer <= dr_pointer_next;\r
+      length <= length_next;\r
+      crc1_ok <= crc1_ok_next;\r
+      crc2_ok <= crc2_ok_next;\r
+      crc_ok <= crc_ok_next;\r
+      check_crc1 <= check_crc1_next;\r
+      check_crc2 <= check_crc2_next;\r
+      check_crc1_next <= check_crc1_next_next;\r
+      check_crc2_next <= check_crc2_next_next;\r
+      chipcounter <= chipcounter_next;\r
+      crc32_reset <= crc32_reset_next;\r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+STATE_COMB: process (state, TRIGGER_CHECK_IN, RAM1A_D_IN, ram1a_a, wordcounter, crc32_data, crc32_match, numregs, dr_pointer, length, crc1_ok, crc2_ok, crc_ok, check_crc1, check_crc2, NUMCHIPS_IN, chipcounter, wordlength)\r
+begin\r
+  ram1a_a_next <= ram1a_a;\r
+  state_next <= state;\r
+  wordcounter_next <= wordcounter;\r
+  crc32_data_next <= crc32_data;\r
+  crc32_en_next <= '0';\r
+  crc32_reset_next <= '0';\r
+  numregs_next <= numregs;\r
+  dr_pointer_next <= dr_pointer;\r
+  length_next <= length;\r
+  crc1_ok_next <= crc1_ok;\r
+  crc2_ok_next <= crc2_ok;\r
+  crc_ok_next <= crc_ok;\r
+  check_crc1_next_next <= '0';\r
+  check_crc2_next_next <= '0';\r
+  chipcounter_next <= chipcounter;\r
+  if(check_crc1 = '1') then\r
+    crc1_ok_next <= crc32_match;\r
+  end if;\r
+  if(check_crc2 = '1') then\r
+    crc2_ok_next <= crc32_match;\r
+  end if;\r
+  case state is \r
+    when idle =>\r
+      if(TRIGGER_CHECK_IN = '1') then\r
+        state_next <= prepare_read;\r
+        chipcounter_next <= (others => '0'); -- reset chipcounter\r
+      end if;\r
+    when prepare_read =>\r
+      state_next <= readA0;\r
+      ram1a_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter);\r
+      ram1a_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <= (others => '0');\r
+      crc1_ok_next <= '0';\r
+      crc2_ok_next <= '0';\r
+      crc32_reset_next <= '1'; -- reset CRC component before processing a new chip (which has independently generated crcs) \r
+    when readA0 =>\r
+        state_next <= readAi;\r
+        ram1a_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(to_unsigned(1,RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD)); -- word 1;\r
+        wordcounter_next <= to_unsigned(0,RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD);\r
+        numregs_next <= to_unsigned(1,MAX_REGISTERS_LD); -- 1 (because it should't be zero in the next step)\r
+    when readAi =>\r
+        ram1a_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(wordcounter + 2); -- word i+2;\r
+        crc32_data_next <= RAM1A_D_IN;\r
+        crc32_en_next <= '1';\r
+        wordcounter_next <= wordcounter + 1;\r
+        if(to_integer(wordcounter) = 0) then\r
+          numregs_next <= unsigned(RAM1A_D_IN(MAX_REGISTERS_LD-1 downto 0));\r
+        end if;\r
+        if(to_integer(wordcounter) = to_integer(2*numregs)) then -- last DR Pointer\r
+          dr_pointer_next <= unsigned(RAM1A_D_IN(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0));\r
+        elsif(to_integer(wordcounter) = to_integer(2*numregs+1)) then -- last DR length\r
+          length_next <= unsigned(RAM1A_D_IN(MAX_REGLEN_PLUS_ONE_LD-1 downto 0));\r
+        elsif(to_integer(wordcounter) = to_integer(2*numregs+2)) then -- first CRC-32\r
+          check_crc1_next_next <= '1';\r
+        elsif(to_integer(wordcounter) > to_integer(2*numregs+2)) then\r
+          -- here the condition dr_pointer+length <= 2*numregs+2 has to be caught\r
+          if(to_integer(dr_pointer+length) <= to_integer(2*numregs+2)) then\r
+            -- abort because CRC, after end of last DR, lies at an invalid location < = 2*numregs+2\r
+            state_next <= idle;\r
+          elsif(to_integer(wordcounter) = to_integer(dr_pointer+wordlength)) then -- second CRC-32\r
+            check_crc2_next_next <= '1';\r
+            state_next <= wait_check;\r
+          end if;\r
+        end if;\r
+    when wait_check =>\r
+      state_next <= wait_check2;\r
+    when wait_check2 =>\r
+      state_next <= wait_check3;\r
+    when wait_check3 =>\r
+      crc_ok_next(to_integer(chipcounter)) <= crc1_ok and crc2_ok;\r
+      if(chipcounter >= unsigned(NUMCHIPS_IN) - 1) then\r
+        state_next <= idle;\r
+      else\r
+        chipcounter_next <= chipcounter + 1;\r
+        state_next <= prepare_read;\r
+      end if;\r
+  end case;\r
+end process;\r
+\r
+end architecture;\r
diff --git a/vhdl/code/jtag_cmd_m26c.vhd b/vhdl/code/jtag_cmd_m26c.vhd
new file mode 100644 (file)
index 0000000..7c70b19
--- /dev/null
@@ -0,0 +1,3683 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+--USE IEEE.std_logic_ARITH.ALL;
+--USE IEEE.std_logic_UNSIGNED.ALL;
+USE IEEE.numeric_std.ALL;
+
+library work;
+use work.trb_net_std.all;
+use work.trb_net_components.all;
+-- use work.trb_net16_hub_func.all;
+use work.version.all;
+use work.jtag_constants.all;
+use work.jtag_misc.all;
+--use work.minmax.all;
+--use work.monitor_config.all;
+--use debug.fifo32bit;
+
+
+
+
+entity jtag_cmd_m26c is
+  generic(
+ MAX_NUMCHIPS          : integer := 7; -- maximum number of chips in this chain controllers chain (because number of chips can be 0, best chose 2^n-1 as maximum to save logic. if memory should be used completely, choose 2^n.)
+ MAX_NUMCHIPS_PLUS_ONE_LD       : integer := 3;    -- LD of value plus one, rounded up, or ld rounded down + 1, because the next binary digit needs one bit more (i.e, 2 needs second bit)
+ MAX_NUMCHIPS_LD       : integer := 3;   -- LD of value, rounded up
+ MAX_REGISTERS         : integer := 14;  -- number of registers per chip.  Because of ram3 layout, values of 2^n-2 should be chosen.
+ MAX_REGISTERS_LD      : integer := 4;   -- LD of value, rounded up.
+ MAX_REGISTERS_PLUS_ONE_LD      : integer := 4; -- LD of (value plus one)
+ MAX_REGISTERS_PLUS_TWO_LD      : integer := 4; -- LD of (value plus two)
+ MAX_REGLEN_LD                  : integer := 12; -- LD of naximum register length.
+ MAX_REGLEN_PLUS_ONE_LD                  : integer := 12; -- LD of (register length+1)
+
+ WRITE_ERROR_THRESHOLD                     : integer := 3; -- if at least WRITE_ERROR_THRESHOLD bits are different from written value, count as WRITE_ERROR/DATA_CHANGED.
+
+ READ_ERROR_THRESHOLD                     : integer := 4; -- if at least READ_ERROR_THRESHOLD bits are different from 32 bit ID, set 
+
+ JTAG_M26_IRLEN        : integer := 5; -- length of the instruction register of the connected chips
+ JTAG_M26_IRLEN_LD        : integer := 3; -- ld of value, rounded up
+ JTAG_M26_IR_ID_CODE   : std_logic_vector(4 downto 0) := "01110"; -- Code selecting DEV_ID register of Mimosa26
+ JTAG_M26_DEV_ID       : std_logic_vector(31 downto 0) := x"4D323601"; -- Mimosa26 DEV_ID, which the sensor should send.
+
+ RAM_JTAG_REGISTERS_DEPTH   : integer := 11; -- will be split up into MAX_NUMCHIPS_LD bits for chip address, rest is for addressing words in that chip block. word size is 32 bit.
+-- GLOBAL_JTAG_COUNTER_BITS : integer := 10; -- 
+ JTAG_CHAIN_BROKEN_COUNTER_BITS : integer := 10; -- counter width
+ JTAG_TDO_EXPECTED_MAXDELAY : integer := 3; -- set range to 0..value for delay of expected TDO value
+ JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD : integer := 2; -- ceil of ld( value plus one)
+ RESET_WAIT_DURATION : unsigned := "10000000" -- 128 clock cycles at 100 mhz
+);
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+
+    JTAG_TMS_OUT : out std_logic;
+    JTAG_TCK_OUT : out std_logic;
+    JTAG_TDI_OUT : out std_logic;
+    JTAG_TDO_IN  : in  std_logic;
+
+    BUS_DATA_IN  : in std_logic_vector(31 downto 0);
+    BUS_DATA_OUT  : out std_logic_vector(31 downto 0);
+    BUS_ADDR_IN   : in  std_logic_vector(8 downto 0);
+    BUS_READ_IN   : in std_logic;
+    BUS_WRITE_IN  : in std_logic;
+
+    BUS_DATAREADY_OUT    : out  std_logic;
+    BUS_NO_MORE_DATA_OUT : out  std_logic;
+    BUS_WRITE_ACK_OUT    : out  std_logic;
+    BUS_UNKNOWN_ADDR_OUT : out  std_logic;
+
+    --OFF_SPILL_IN : in   std_logic;
+    RUN_REQUEST_IN : in   std_logic;
+    WRITE_ONCE_REQUEST_IN : in   std_logic;
+    MY_STATUS_OUT        : out std_logic_vector(8 downto 0);
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);
+    REQUEST_RESET_OUT    : out std_logic;
+    IDLE_OUT             : out std_logic;
+    PROG_JTAG_FINISHED_OUT:out std_logic;
+    READ_ID_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    WRITE_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    DATA_CHANGED_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    SAMPLING_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    RUN_COUNTER_OUT : out std_logic_vector(31 downto 0);
+    
+    STARTED_OUT : out std_logic;
+    LAST_RUN_SUCCESSFUL_OUT : out std_logic;
+    LAST_DATA_CHANGED_OUT : out std_logic;
+    LAST_WRITE_ERRORS_OUT : out std_logic;
+    LAST_READ_ERRORS_OUT : out std_logic;
+    CRC_ERROR_OUT : out std_logic
+    
+    --BUS_TIMEOUT_IN     : in std_logic;
+    );
+end entity;
+
+
+architecture arch_cmd_m26c of jtag_cmd_m26c is
+
+--     component fifo32bit IS
+--             port (
+--                     clk: IN std_logic;
+--                     din: IN std_logic_VECTOR(31 downto 0);
+--                     rd_en: IN std_logic;
+--                     rst: IN std_logic;
+--                     wr_en: IN std_logic;
+--                     dout: OUT std_logic_VECTOR(31 downto 0);
+--                     empty: OUT std_logic;
+--                     full: OUT std_logic;
+--                     overflow: OUT std_logic;
+--                     underflow: OUT std_logic);
+--     end component;
+
+
+component jtag_pulses is
+  generic (
+    time_bits : integer := 10
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    -- input times
+    JTAG_CLOCK_TIME1_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_CLOCK_TIME2_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME1_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME2_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME3_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SET_DATA_TIME_IN: in std_logic_vector(time_bits -1 downto 0);
+    
+    
+    JTAG_CLOCK_CYCLE_LENGTH_IN: in std_logic_vector(time_bits -1 downto 0);
+    
+    -- output pulses
+    BEGIN_JTAGBITCALC_OUT : out std_logic;
+    JTAG_CLOCK_PULSE1_OUT : out std_logic;
+    JTAG_CLOCK_PULSE2_OUT : out std_logic;
+    JTAG_SAMPLE_PULSE1_OUT : out std_logic;    
+    JTAG_SAMPLE_PULSE2_OUT : out std_logic;    
+    JTAG_SAMPLE_PULSE3_OUT : out std_logic;    
+    JTAG_SET_DATA_PULSE_OUT : out std_logic
+    
+  );
+end component;
+
+component jtag_tck_out_component is
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+       
+    JTAG_CLOCK_PULSE1_IN : in std_logic;    
+    JTAG_CLOCK_PULSE2_IN : in std_logic;    
+    ENABLE_JTAG_TCK_IN     : in std_logic;
+    
+    TCK_OUT : out std_logic
+  );
+end component;
+
+component jtag_write_m10 is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer;
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+    MAX_REGISTERS_LD : integer;
+    MAX_REGISTERS_PLUS_ONE_LD : integer;
+    MAX_REGLEN_LD : integer;
+    MAX_REGLEN_PLUS_ONE_LD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    RAM_JTAG_REGISTERS_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM_JTAG_REGISTERS_D_IN : in std_logic_vector(31 downto 0);
+
+    -- number of next chip which is not removed from the jtag chain. for chip i ( in range 0...N) this next chip is
+    -- encoded by the bits NEXT_NOT_REMOVED((i+1)*MAX_NUMCHIPS_LD + MAX_NUMCHIPS_LD-1 downto (i+1)*MAX_NUMCHIPS_LD) 
+    -- which should be interpreted as unsigned
+    -- the zero'th entry points to the first not removed chip
+    -- a value of (others => '1') means that no more non-removed chips follow
+    NEXT_NOT_REMOVED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD*(MAX_NUMCHIPS+1)-1 downto 0);
+    
+    BEGIN_JTAGBITCALC_IN   : in std_logic;
+    TRIGGER_BEGIN_WRITE_IN : in std_logic;
+    IDLE_OUT : out std_logic;
+    
+    IS_DR_BIT_OUT : out std_logic;
+    IS_FIRSTBIT_OUT : out std_logic;
+    IS_LASTBIT_OUT : out std_logic;
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    EXPECTED_TDO_OUT : out std_logic;
+    
+    -- from (i+1)*MAX_REGISTERS_PLUS_ONE_LD-1 downto (i)*MAX_REGISTERS_PLUS_ONE_LD: numregs configured of chip i=(0, 1, 2, ...)
+    NUMREGS_CONFIGURED_OUT : out std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);
+    
+    LAST_ERROR_CODE_OUT : out std_logic_vector(2 downto 0)
+    
+    
+  );
+end component;
+
+component jtag_tdo_sample is
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    -- pulse always comes in same interval (at fixed distance to begin_jtag_bitcalc)
+    -- the first sample is taken directly after this pulse
+    SAMPLE_PULSE1_IN   : in std_logic;
+    SAMPLE_PULSE2_IN   : in std_logic;
+    SAMPLE_PULSE3_IN   : in std_logic;
+    
+    -- TDO signal, which is to be sampled 
+    TDO_IN             : in std_logic;
+    -- sampled value of TDO
+    TDO_SAMPLED_OUT    : out std_logic;
+    -- sampling error
+    SAMPLING_ERROR_OUT : out std_logic
+  );
+end component;
+
+component jtag_mux_buffer_tms_tdi_out_and_metainfo is
+  generic (
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_LD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+       
+    -- pulse when READ/WRITE/... entity's data should be taken and update 
+    -- the output values for TMS,TDI
+    JTAG_SET_DATA_IN : in std_logic;    
+    
+    -- read DEV_ID inputs
+    RD_TMS_IN : in std_logic;
+    RD_TDI_IN : in std_logic;
+    RD_IS_DR_BIT_IN: in std_logic;
+    RD_IS_FIRSTBIT_IN : in std_logic;
+    RD_IS_LASTBIT_IN : in std_logic;
+    RD_CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    RD_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    RD_LAST_TCK_CYCLE_IN : in std_logic;
+    RD_EXPECTED_TDO_OUT : in std_logic;    
+
+    -- write registers inputs
+    WR_TMS_IN : in std_logic;
+    WR_TDI_IN : in std_logic;
+    WR_IS_DR_BIT_IN: in std_logic;
+    WR_IS_FIRSTBIT_IN : in std_logic;
+    WR_IS_LASTBIT_IN : in std_logic;
+    WR_CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    WR_REGNUM_IN : in std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    WR_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    WR_LAST_TCK_CYCLE_IN : in std_logic;
+    WR_EXPECTED_TDO_OUT : in std_logic;    
+
+    -- test chain inputs
+    TC_TMS_IN : in std_logic;
+    TC_TDI_IN : in std_logic;
+    TC_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    TC_LAST_TCK_CYCLE_IN : in std_logic;
+    
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    IS_DR_BIT_OUT: out std_logic;
+    IS_FIRSTBIT_OUT : out std_logic;
+    IS_LASTBIT_OUT : out std_logic;
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    EXPECTED_TDO_OUT : out std_logic 
+  );
+end component;
+
+component jtag_delay_expected_values is
+   generic (
+--     delay : integer := 0 -- number of whole jtag clock cycles to delay the expected values
+--                           --   because of total distance of the tck-line to the last chip and
+--                           --   the length of tdo of this chip back to the fpga
+     ld_maxdelay : integer := 2;
+     MAX_NUMCHIPS_LD : integer;
+     MAX_REGISTERS_PLUS_ONE_LD : integer
+   );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    SAMPLE_PULSE1_IN : in std_logic;
+    
+      -- chipcount as unsigned
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);
+      -- active register as unsigned, =register 1,2,... of jtag_write_m10 or 0 for jtag_read_m10
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+    
+    IS_DR_BIT_IN : in std_logic;
+      -- firstbit signal: reset counters before sampling this bit
+    IS_FIRSTBIT_IN  : in std_logic;
+      -- finish signal:  dataout => RAM1b, compareout => RAM2
+    IS_LASTBIT_IN   : in std_logic;
+    
+    TDO_EXPECTED_IN : in std_logic;
+    
+    
+      -- chipcount as unsigned
+    OUT_CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);
+      -- active register as unsigned, =register 1,2,... of jtag_write_m10 or 0 for jtag_read_m10
+    OUT_REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+    
+    OUT_IS_DR_BIT_OUT : out std_logic;
+      -- firstbit signal: reset counters before sampling this bit
+    OUT_IS_FIRSTBIT_OUT  : out std_logic;
+      -- finish signal:  dataout => RAM1b, compareout => RAM2
+    OUT_IS_LASTBIT_OUT   : out std_logic;
+    
+    OUT_TDO_EXPECTED_OUT : out std_logic;
+    DELAY_IN : in std_logic_vector(ld_maxdelay -1 downto 0)
+    
+  );
+end component;
+
+component jtag_tdo_compare_count_m10
+  generic (
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_PLUS_ONE_LD : integer;
+    RAM_MATCH_DIFF_COUNT_DEPTH : integer;
+    MAX_REGLEN_LD : integer
+  );
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    SAMPLE_PULSE3_D1_IN : in std_logic;    
+      -- active chip as unsigned
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);
+      -- active register as unsigned, 0=read dev_id, 1,2,...=register 0,1,... of jtag_write_m10 
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_LD -1 downto 0);
+    
+    ENABLE_COUNTERS_IN : in std_logic;
+    IS_FIRSTBIT_IN  : in std_logic;
+    IS_LASTBIT_IN   : in std_logic;
+    
+    TDO_EXPECTED_IN : in std_logic;
+    TDO_SAMPLED_IN  : in std_logic;
+    TDO_SAMPLING_ERROR_IN : in std_logic;
+    
+
+    -- RAM2
+    RAM_MATCH_DIFF_COUNT_A_OUT : out std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+    --RAM_MATCH_DIFF_COUNT_D_IN : in std_logic_vector(31 downto 0);
+    RAM_MATCH_DIFF_COUNT_WE_OUT : out std_logic;
+    RAM_MATCH_DIFF_COUNT_D_OUT : out std_logic_vector(31 downto 0)
+
+    ---- internal error out: signals that read/write sampling has been mixed
+    --INTERNAL_ERROR_OUT : out std_logic
+    
+    -- Monitoring: 16 bit usable per FIFO, depth=512 = 8192 bits, this is enough for a 7 Mi26 chain (registers 1152 bits each)
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);  
+ );
+end component;
+
+component jtag_tdo_compare_counttotal_noram_m10 
+  generic (
+    numcounts : integer := 3;
+    se_counter_width : integer := 32; -- sampling error counter width
+    diff_counter_width : integer := 16  --  counter width for number of runs in which there were differences 
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    -- pulse always comes in same interval (at fixed distance to begin_jtag_bitcalc)
+    -- sample_pulse3 delayed by one clock cycle
+    SAMPLE_PULSE3_D1_IN : in std_logic;
+    -- should this bit be counted as error if not matching expected value? (e.g. is this a dr bit while writing register or reading device id?)
+    ENABLE_COUNTERS_IN : in std_logic;
+
+    TDO_EXPECTED_IN : in std_logic;
+    TDO_SAMPLED_IN  : in std_logic;
+    TDO_SAMPLING_ERROR_IN : in std_logic;
+    BEGIN_COUNT_I_IN : in std_logic_vector(numcounts-1 downto 0);
+    END_COUNT_I_IN : in std_logic_vector(numcounts-1 downto 0);
+    
+    -- should be zero if timing is good
+    SAMPLING_ERRORS_COUNT_OUT : out std_logic_vector(diff_counter_width-1 downto 0);
+    COUNTS_OUT : out std_logic_vector(numcounts*diff_counter_width-1 downto 0);
+    LAST_VALUES_OUT : out std_logic_vector(numcounts-1 downto 0)
+
+
+  );
+end component;
+
+
+component jtag_tdo_data_to_ram_m10
+  generic (
+    enable_ram1b : std_logic := '1';
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_PLUS_ONE_LD : integer;
+    MAX_REGLEN_LD : integer;
+    RAM_JTAG_REGISTERS_DEPTH : integer
+  );
+  port(
+   CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    SAMPLE_PULSE3_D1_IN : in std_logic;
+      -- active chip as unsigned
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);
+      -- active register as unsigned, 0=read dev_id, 1,2,...=register 0,1,... of jtag_write_m10 
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+
+    --                dataout => RAM1b
+    ENABLE_DATAOUT_IN : in std_logic;
+    IS_FIRSTBIT_IN  : in std_logic;
+    IS_LASTBIT_IN   : in std_logic;    
+    TDO_SAMPLED_IN  : in std_logic;
+    -- RAM1b
+    RAM_JTAG_REGISTERS_READOUT_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM_JTAG_REGISTERS_READOUT_D_IN : in std_logic_vector(31 downto 0);
+    RAM_JTAG_REGISTERS_READOUT_WE_OUT : out std_logic;
+    RAM_JTAG_REGISTERS_READOUT_D_OUT : out std_logic_vector(31 downto 0)
+    
+    -- Monitoring: 16 bit usable per FIFO, depth=512 = 8192 bits, this is enough for a 7 Mi26 chain (registers 1152 bits each)
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);  
+  );
+end component;
+
+component jtag_read_m26devid_m10 is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer
+  );
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    RAM_JTAG_REGISTERS_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM_JTAG_REGISTERS_D_IN : in std_logic_vector(31 downto 0);
+
+    -- number of next chip which is not removed from the jtag chain. for chip i ( in range 0...N) this next chip is
+    -- encoded by the bits NEXT_NOT_REMOVED((i+1)*MAX_NUMCHIPS_LD + MAX_NUMCHIPS_LD-1 downto (i+1)*MAX_NUMCHIPS_LD) 
+    -- which should be interpreted as unsigned
+    -- the zero'th entry points to the first not removed chip
+    -- a value of (others => '1') means that no more non-removed chips follow
+    NEXT_NOT_REMOVED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD*(MAX_NUMCHIPS+1)-1 downto 0);
+    
+    BEGIN_JTAGBITCALC_IN   : in std_logic;
+    TRIGGER_BEGIN_READ_IN : in std_logic;
+    
+
+    
+    IS_DR_BIT_OUT : out std_logic;
+    IS_FIRSTBIT_OUT : out std_logic;
+    IS_LASTBIT_OUT : out std_logic;
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    EXPECTED_TDO_OUT : out std_logic;
+    IDLE_OUT : out std_logic
+    );
+end component;
+
+
+component jtag_bypassreg_testchain_m10 is
+  generic (
+--    delay : integer := 0; -- this is the same value as in jtag_delay_expected_values
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer;
+    JTAG_M26_IRLEN : integer;
+    
+    max_bitcounter_ld : integer;-- set to: MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD + 7-- bitcounter counts to ir_fill_ones_length, to zerofill_length aswell as from begin of sending pattern to end of receiving pattern (zerofill_length). should write something like: max(MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD, 7)+1.
+
+    ld_maxdelay : integer := 2; -- floor of ld maxdelay
+    pattern_length : integer := 4;
+    pattern : std_logic_vector(4-1 downto 0) := "1001";
+    zerofill_numzeros_required : integer := 5 -- minimum number of zeros appearing at tdo while first zero filling phase
+  );
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    
+    BEGIN_JTAGBITCALC_IN   : in std_logic;
+    TRIGGER_BEGIN_TESTCHAIN_IN : in std_logic;
+    IDLE_OUT : out std_logic;
+    
+    -- length in chips of the chain -- corresponds to the number of bits the
+    -- output is shifted compared to the input, because the BYPASS registers
+    -- are selected, which are only one bit long
+    CHAIN_LENGTH_OUT : out std_logic_vector(max_bitcounter_ld-1 downto 0);
+    -- if after feeding in a sufficiently long sequence 
+    -- the expected output pattern doesnt occur
+    CHAIN_BROKEN_OUT : out std_logic;
+    
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    TDO_IN  : in  std_logic;
+    DELAY_IN : in std_logic_vector(ld_maxdelay-1 downto 0)
+    );
+end component;
+
+component jtag_update_error_counts_ram3a is
+  generic (
+     MAX_NUMCHIPS : integer;
+     MAX_NUMCHIPS_LD : integer;
+     MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+     MAX_REGISTERS_LD : integer;
+     MAX_REGISTERS_PLUS_ONE_LD : integer;
+     MAX_REGISTERS_PLUS_TWO_LD : integer;
+     RAM_MATCH_DIFF_COUNT_DEPTH : integer;
+     RAM_ERROR_COUNTS_DEPTH : integer;
+     WRITE_ERROR_THRESHOLD : integer;
+     READ_ERROR_THRESHOLD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    TRIGGER_UPDATE_DATA_CHANGED_IN : in std_logic;
+    TRIGGER_UPDATE_READ_ERRORS_IN : in std_logic;
+    TRIGGER_UPDATE_WRITE_ERRORS_IN : in std_logic;
+    TRIGGER_UPDATE_RUN_COUNTER_IN : in std_logic;
+    RUN_COUNTER_IN : in std_logic_vector(31 downto 0);
+    -- RAM2
+    RAM2_A_OUT : out std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+    RAM2_D_IN : in std_logic_vector(31 downto 0);
+    -- RAM3a
+    RAM3A_A_OUT : out std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+    RAM3A_D_IN : in std_logic_vector(31 downto 0);
+    RAM3A_D_OUT : out std_logic_vector(31 downto 0);
+    RAM3A_WR_OUT :out std_logic;
+    
+    REMOVED_CHIPS_IN : in std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+    NUMCHIPS_CONFIGURED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+    -- from (i+1)*MAX_REGISTERS_PLUS_ONE_LD-1 downto (i)*MAX_REGISTERS_PLUS_ONE_LD: numregs configured of chip i=(0, 1, 2, ...)
+    NUMREGS_CONFIGURED_IN : in std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);    
+    
+    -- if true, there were read errors in last dev_id read 
+    READ_ERRORS_OUT : out std_logic;
+    -- if true, there were read errors the last double write to registers (value read the second time didn't equal programmed value)
+    WRITE_ERRORS_OUT : out std_logic;    
+    -- if true, the data read from the registers wasn't equal to the data programmed a period before (for example in the last spill break)
+    DATA_CHANGED_OUT : out std_logic;    
+    
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+component jtag_init_ram1b is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_LD : integer
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_INIT_IN : std_logic;
+    -- RAM1a
+    RAM1A_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM1A_D_IN : in std_logic_vector(31 downto 0);
+    -- RAM1b
+    RAM1B_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM1B_D_IN : in std_logic_vector(31 downto 0);
+    RAM1B_WE_OUT : out std_logic;
+    RAM1B_D_OUT : out std_logic_vector(31 downto 0);
+    
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+
+component copy_ram is
+  generic (
+    ram_depth : integer;
+    ram_width : integer := 32
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_COPY_IN : std_logic;
+    -- RAM3a
+    RAMA_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAMA_D_IN : in std_logic_vector(ram_width-1 downto 0);
+    -- RAM3b
+    RAMB_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAMB_D_OUT : out std_logic_vector(ram_width-1 downto 0);
+    RAMB_WR_OUT :out std_logic;
+    
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+component blank_ram is
+  generic (
+    ram_depth : integer;
+    ram_width : integer := 32
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_BLANK_IN : std_logic;
+    -- RAM
+    RAM_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAM_D_OUT : out std_logic_vector(ram_width-1 downto 0);
+    RAM_WR_OUT :out std_logic;
+    
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+
+component jtag_check_crc_ram1a is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer;
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+    MAX_REGLEN_PLUS_ONE_LD : integer;
+    MAX_REGISTERS_LD : integer
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_CHECK_IN : std_logic;
+    -- RAM1a
+    RAM1A_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM1A_D_IN : in std_logic_vector(31 downto 0);
+    
+    NUMCHIPS_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+    CRC_OK_OUT : out std_logic_vector(MAX_NUMCHIPS-1 downto 0);
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+
+component ram_dp is
+  generic(
+    depth : integer := 9;
+    width : integer := 32
+    );
+  port(
+    CLK   : in  std_logic;
+    wr1   : in  std_logic;
+    a1    : in  std_logic_vector(depth-1 downto 0);
+    dout1 : out std_logic_vector(width-1 downto 0);
+    din1  : in  std_logic_vector(width-1 downto 0);
+    a2    : in  std_logic_vector(depth-1 downto 0);
+    dout2 : out std_logic_vector(width-1 downto 0)
+    );
+end component;
+
+component ram_mux2to1_readport is
+  generic (
+    depth : integer;
+    width : integer := 32
+  );
+  port (
+    SELECT_IN : std_logic;
+    A0_IN : in std_logic_vector(depth-1 downto 0);
+    D0_OUT : out std_logic_vector(width-1 downto 0);
+    A1_IN : in std_logic_vector(depth-1 downto 0);
+    D1_OUT : out std_logic_vector(width-1 downto 0);
+    
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0)
+  );
+end component;
+
+component ram_mux4to1_readport is
+  generic (
+    depth : integer;
+    width : integer := 32
+  );
+  port (
+    SELECT_IN : in std_logic_vector(1 downto 0); -- two bit select input
+    A0_IN : in std_logic_vector(depth-1 downto 0);
+    D0_OUT : out std_logic_vector(width-1 downto 0);
+    A1_IN : in std_logic_vector(depth-1 downto 0);
+    D1_OUT : out std_logic_vector(width-1 downto 0);
+    A2_IN : in std_logic_vector(depth-1 downto 0);
+    D2_OUT : out std_logic_vector(width-1 downto 0);
+    A3_IN : in std_logic_vector(depth-1 downto 0);
+    D3_OUT : out std_logic_vector(width-1 downto 0);
+    
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0)
+  );
+end component;
+
+component ram_mux2to1_writeport is
+  generic (
+    depth : integer;
+    width : integer := 32
+  );
+  port (
+    SELECT_IN : in std_logic;
+    A0_IN    : in std_logic_vector(depth-1 downto 0);
+    D0_OUT   : out std_logic_vector(width-1 downto 0);
+    WR0_IN   : in  std_logic;
+    DIN0_IN  : in  std_logic_vector(width-1 downto 0);
+    
+    A1_IN : in std_logic_vector(depth-1 downto 0);
+    D1_OUT : out std_logic_vector(width-1 downto 0);
+    WR1_IN   : in  std_logic;
+    DIN1_IN  : in  std_logic_vector(width-1 downto 0);
+    
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0);
+    RAM_WR_OUT   : out  std_logic;
+    RAM_DIN_OUT  : out  std_logic_vector(width-1 downto 0)
+  );
+end component;
+
+
+
+-- component priorityencoder_seq is
+    -- generic ( n : positive;
+                  -- ldn:positive  -- rounded up ld(n + 1)
+        -- );
+    -- Port ( CLK_IN        : in STD_LOGIC;
+               -- RESET_IN      : in STD_LOGIC;
+               -- input_vect_IN : in  STD_LOGIC_VECTOR (n - 1 downto 0);
+          -- enc_pos_OUT : out  STD_LOGIC_VECTOR (ldn - 1 downto 0);
+                           -- start_IN : in STD_LOGIC;
+                           -- enc_pos_valid_OUT : out STD_LOGIC );
+-- end component;
+
+-- function ld(m:positive) return natural is
+-- variable n : positive;
+-- begin
+--    n = 0;
+--    a: loop
+--       if (2**n >= m) then
+--          return n;
+--       end if;
+--       n = n + 1;
+--    end loop a;
+-- end;
+
+component trb_net16_regio_bus_handler is
+  generic(
+    PORT_NUMBER : integer range 1 to c_BUS_HANDLER_MAX_PORTS := 3;
+    PORT_ADDRESSES : c_BUS_HANDLER_ADDR_t := (others => (others => '0'));
+    PORT_ADDR_MASK : c_BUS_HANDLER_WIDTH_t := (others => 0)
+    );
+  port(
+    CLK                   : in  std_logic;
+    RESET                 : in  std_logic;
+    DAT_ADDR_IN           : in  std_logic_vector(15 downto 0); -- address bus
+    DAT_DATA_IN           : in  std_logic_vector(31 downto 0); -- data from TRB endpoint
+    DAT_DATA_OUT          : out std_logic_vector(31 downto 0); -- data to TRB endpoint
+    DAT_READ_ENABLE_IN    : in  std_logic; -- read pulse
+    DAT_WRITE_ENABLE_IN   : in  std_logic; -- write pulse
+    DAT_TIMEOUT_IN        : in  std_logic; -- access timed out
+    DAT_DATAREADY_OUT     : out std_logic; -- your data, master, as requested
+    DAT_WRITE_ACK_OUT     : out std_logic; -- data accepted
+    DAT_NO_MORE_DATA_OUT  : out std_logic; -- don't disturb me now
+    DAT_UNKNOWN_ADDR_OUT  : out std_logic; -- noone here to answer your request
+
+    BUS_ADDR_OUT          : out std_logic_vector(PORT_NUMBER*16-1 downto 0);
+    BUS_DATA_OUT          : out std_logic_vector(PORT_NUMBER*32-1 downto 0);
+    BUS_READ_ENABLE_OUT   : out std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_WRITE_ENABLE_OUT  : out std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_TIMEOUT_OUT       : out std_logic_vector(PORT_NUMBER-1 downto 0);
+
+    BUS_DATA_IN           : in  std_logic_vector(32*PORT_NUMBER-1 downto 0);
+    BUS_DATAREADY_IN      : in  std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_WRITE_ACK_IN      : in  std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_NO_MORE_DATA_IN   : in  std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_UNKNOWN_ADDR_IN   : in  std_logic_vector(PORT_NUMBER-1 downto 0);
+
+    STAT_DEBUG            : out std_logic_vector(31 downto 0)
+    );
+end component;
+
+constant STATUS_JTAG_ERROR     : integer := 0; -- length MAX_NUMCHIPS
+constant STATUS_WRITE_ERROR    : integer := MAX_NUMCHIPS;
+constant STATUS_WRITE_ERROR2   : integer := 2*MAX_NUMCHIPS;
+constant STATUS_READ_ERROR     : integer := 3*MAX_NUMCHIPS;
+constant STATUS_READ_ERROR2    : integer := 4*MAX_NUMCHIPS;
+constant STATUS_DATA_CHANGED   : integer := 5*MAX_NUMCHIPS;
+
+constant WRITE_STATUS_JTAG_ERROR     : integer := 0; -- length MAX_NUMCHIPS
+constant WRITE_STATUS_DATA_CHANGED     : integer := MAX_NUMCHIPS; -- length MAX_NUMCHIPS
+constant WRITE_STATUS_DATA_CHANGED_OVER_THRESHOLD     : integer := 2*MAX_NUMCHIPS; -- length MAX_NUMCHIPS
+constant READ_STATUS_JTAG_ERROR                   : integer := 0; -- length MAX_NUMCHIPS
+constant READ_STATUS_BIT_ERROR                    : integer := MAX_NUMCHIPS; -- length MAX_NUMCHIPS
+constant READ_STATUS_BIT_ERROR_OVER_THRESHOLD     : integer := 2*MAX_NUMCHIPS; -- length MAX_NUMCHIPS
+
+constant RAM_MATCH_DIFF_COUNT_DEPTH   : integer := MAX_NUMCHIPS_LD + MAX_REGISTERS_PLUS_ONE_LD + 1;--9; -- maximum 32 counts / chip (one for read DEV_ID register, rest for read/write data registers), maximum 16 chips, each count 32 bits
+constant RAM_ERROR_COUNTS_DEPTH : integer := MAX_REGISTERS_PLUS_TWO_LD+2+MAX_NUMCHIPS_LD; --10; -- ld(8+4*MAX_REGISTERS)+MAX_NUMCHIPS_LD= MAX_REGISTERS_PLUS_TWO_LD+2+MAX_NUMCHIPS_LD
+
+
+
+
+--type BUS_RW_STATE_TYPE is (BUS_RW_STATE_IDLE, BUS_RW_STATE_READ_RAM_WAIT, BUS_RW_STATE_READ_RAM, BUS_RW_STATE_WRITE_RAM, BUS_RW_STATE_RETURN_READ, BUS_RW_STATE_RETURN_WRITE);
+
+--signal bus_rw_state, bus_rw_state_next : BUS_RW_STATE_TYPE;
+--signal dev_state, dev_state_next : DEVICE_STATE_TYPE;
+signal data_register, data_register_next : std_logic_vector(31 downto 0);
+--signal cmd_register, cmd_register_next : std_logic_vector(31 downto 0);
+--signal length_register, length_register_next : std_logic_vector(31 downto 0);
+signal jtag_refresh_active, jtag_refresh_active_next : std_logic;
+signal jtag_check1_active, jtag_check1_active_next : std_logic;
+signal jtag_refresh_active_last, jtag_refresh_active_last_next : std_logic;
+-- has to fit number of 32 bit words needed to represent the status register
+--signal status_register_pos, status_register_pos_next : std_logic_vector(MAX_NUMCHIPS_LD+2+MAX_REGISTERS_LD-5 downto 0);
+--signal status_register_read_running, status_register_read_running_next : std_logic;
+
+-- mostly for debug purposes: status bits
+--signal my_status, my_status_next : std_logic_vector(8 downto 0);
+
+-- status register layout:
+--                         bits   MAX_NUMCHIPS -1 downto              0  : JTAG ERROR
+--                         bits 2*MAX_NUMCHIPS -1 downto   MAX_NUMCHIPS  : WRITE ERROR
+--                         bits 3*MAX_NUMCHIPS -1 downto 2*MAX_NUMCHIPS  : WRITE ERROR2
+--                         bits 4*MAX_NUMCHIPS -1 downto 3*MAX_NUMCHIPS  : READ ERROR
+--                         bits 5*MAX_NUMCHIPS -1 downto 4*MAX_NUMCHIPS  : READ ERROR2
+--                         bits 6*MAX_NUMCHIPS -1 downto 5*MAX_NUMCHIPS  : DATA CHANGED
+
+--signal status_register, status_register_next : std_logic_vector(6*MAX_NUMCHIPS-1 downto 0);
+signal crc_status_register, crc_status_register_next : std_logic_vector(MAX_NUMCHIPS-1 downto 0);
+
+--signal status_register_read_error2, status_register_read_error2_next : std_logic;
+
+--signal already_written, already_written_next : std_logic;
+-- contains a "1" at the positions of deactivated sensors
+signal removed_chips, removed_chips_next : std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+signal last_not_removed, last_not_removed_next : unsigned(MAX_NUMCHIPS_LD - 1 downto 0);
+signal first_not_removed, first_not_removed_next : unsigned(MAX_NUMCHIPS_LD - 1 downto 0);
+--signal reactivate_sensor, reactivate_sensor_next :  std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+--signal reactivate_sensor_strobe , reactivate_sensor_strobe_next :   std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+--signal deactivate_sensor, deactivate_sensor_next :  std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+--signal deactivate_sensor_strobe , deactivate_sensor_strobe_next :   std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+
+--signal disable_write, disable_write_next       : std_logic;
+--signal disable_writeerror_for_remove, disable_writeerror_for_remove_next : std_logic;
+--signal disable_remove, disable_remove_next : std_logic;
+--signal debug_one_remove, debug_one_remove_next : std_logic;
+--signal debug_one_remove_strobe, debug_one_remove_strobe_next : std_logic;
+--signal removed_strobe, removed_strobe_next : std_logic;
+--signal m26c_sensor_cand, m26c_sensor_cand_next : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+
+signal cc_chip_i, cc_chip_i_next       : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal cc_nextnotremoved_i, cc_nextnotremoved_i_next       : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal chip_counter_start, chip_counter_start_next    : std_logic;
+type   CC_STATE_TYPE is (CC_IDLE, CC_COUNT_SENSOR, CC_SETNUMCHIPS);
+signal cc_state, cc_state_next : CC_STATE_TYPE;
+
+
+--type REGISTER_POINTER_TYPE is range MAX_REGISTERS-1 downto 0;
+-- signal status_register_reg_sel, status_register_reg_sel_next : std_logic_vector(MAX_REGISTERS_LD -1 downto 0);
+-- signal status_register_reg_sel_pos, status_register_reg_sel_pos_next : std_logic_vector( (MAX_NUMCHIPS_LD +2 -5)-1 downto 0);
+--signal mux_sel, mux_sel_next : std_logic;
+--signal driver_data_out : std_logic;
+--signal driver_ready_for_cmd : std_logic;
+--signal driver_state_out : std_logic_vector(8 downto 0);
+--signal driver_data_arrived : std_logic;
+--signal driver_data_in : std_logic;
+--signal driver_cmd_in : std_logic_vector(3 downto 0);
+--signal driver_speed , driver_speed_next : std_logic_vector(15 downto 0);
+
+--signal bus_data_out_buffer, bus_data_out_buffer_next : std_logic_vector(31 downto 0);
+--signal bus_dataready, bus_dataready_next    : std_logic;
+--signal bus_no_more_data, bus_no_more_data_next : std_logic;
+--signal bus_write_ack, bus_write_ack_next    : std_logic;
+--signal bus_unknown_addr, bus_unknown_addr_next : std_logic;
+
+signal ram1a_a2      : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1a_dout2                  : std_logic_vector(31 downto 0);
+
+signal ram1a_a1_base_addr, ram1a_a1_base_addr_next : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal ram1a_a1_rel_addr, ram1a_a1_rel_addr_next : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);
+signal ram1a_a1                               : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1a_din1, ram1a_din1_next  : std_logic_vector(31 downto 0);
+signal ram1a_wr1, ram1a_wr1_next    : std_logic;
+signal ram1a_dout1                  : std_logic_vector(31 downto 0);
+
+signal ram1b_a2, ram1b_a2_next      : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1b_dout2                  : std_logic_vector(31 downto 0);
+
+signal ram1a_select, ram1a_select_next : std_logic_vector(1 downto 0);
+
+signal ram1b_a1 : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1b_din1  : std_logic_vector(31 downto 0);
+signal ram1b_wr1    : std_logic;
+signal ram1b_dout1                  : std_logic_vector(31 downto 0);
+signal ram1b_select, ram1b_select_next : std_logic;
+
+signal init_ram1b_ram1a_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal init_ram1b_ram1a_d : std_logic_vector(31 downto 0);
+signal init_ram1b_ram1b_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal init_ram1b_ram1b_dout : std_logic_vector(31 downto 0);
+signal init_ram1b_ram1b_din : std_logic_vector(31 downto 0);
+signal init_ram1b_ram1b_wr : std_logic;
+
+signal jtag_data_to_ram_ram1b_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal jtag_data_to_ram_ram1b_dout : std_logic_vector(31 downto 0);
+signal jtag_data_to_ram_ram1b_din : std_logic_vector(31 downto 0);
+signal jtag_data_to_ram_ram1b_wr : std_logic;
+
+signal jtag_check_crc_ram1a_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal jtag_check_crc_ram1a_d : std_logic_vector(31 downto 0);
+
+
+-- ram2 port 2: local flipflops
+--signal ram2_a2, ram2_a2_next      : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+--signal ram2_dout2                  : std_logic_vector(31 downto 0);
+-- ram2 port 1: non local flipflops, all connected to components
+signal ram2_a1 : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+signal ram2_din1  : std_logic_vector(31 downto 0);
+signal ram2_wr1    : std_logic;
+signal ram2_dout1                  : std_logic_vector(31 downto 0);
+signal ram2_select, ram2_select_next : std_logic;
+
+-- ram3a port 2: local flipflops
+signal ram3a_a2      : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal ram3a_dout2                 : std_logic_vector(31 downto 0);
+
+-- ram3a port 1: non local flipflops, all connected to components
+signal ram3a_a1      : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal ram3a_din1  : std_logic_vector(31 downto 0);
+signal ram3a_wr1    : std_logic;
+signal ram3a_dout1                 : std_logic_vector(31 downto 0);
+
+-- ram3b port 1: non local flipflops, all connected to components
+  -- see jtag_copy_ram3* signals
+-- ram3b port 2: local flipflops
+signal ram3b_a2_base_addr, ram3b_a2_base_addr_next : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-4-1 downto 0);
+signal ram3b_a2_rel_addr, ram3b_a2_rel_addr_next      : std_logic_vector(3 downto 0);
+signal ram3b_a2                               : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal ram3b_dout2                 : std_logic_vector(31 downto 0);
+
+signal ram3a_select, ram3a_select_next : std_logic;
+signal ram3a_rd_select, ram3a_rd_select_next : std_logic;
+
+signal jtag_tdo_compare_count_ram_a : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+signal jtag_tdo_compare_count_ram_dout : std_logic_vector(31 downto 0);
+signal jtag_tdo_compare_count_ram_din : std_logic_vector(31 downto 0);
+signal jtag_tdo_compare_count_ram_wr : std_logic;
+
+--signal jtag_update_error_counts_ram_a : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+--signal jtag_update_error_counts_ram_d : std_logic_vector(31 downto 0);
+
+
+
+
+
+--signal trigger_counter, trigger_counter_next : std_logic_vector(27 downto 0);
+--signal trigger_counter, trigger_counter_next : std_logic_vector(10 downto 0);
+
+
+
+signal idle_out_signal, idle_out_signal_next : std_logic;
+
+--signal write_status_register     : std_logic_vector((3*MAX_NUMCHIPS) * MAX_REGISTERS -1 downto 0);
+--signal write_status_register_or, write_status_register_or_next  : std_logic_vector((3*MAX_NUMCHIPS) -1 downto 0);
+--signal write_crc_status_register : std_logic_vector(MAX_REGISTERS - 1 downto 0);
+--signal write_cmd_out : std_logic_vector(3 downto 0);
+--signal write_data_out : std_logic;
+--signal write_idle : std_logic;
+--signal write_trigger, write_trigger_next : std_logic;
+--signal write_idle_last, write_idle_last_next : std_logic;
+--signal write_state_out : std_logic_vector(7 downto 0);
+--type ERROR_COUNTER_TYPE is array (MAX_NUMCHIPS -1 downto 0) of std_logic_vector(9 downto 0);
+--signal write_error_counter, write_error_counter_next : ERROR_COUNTER_TYPE;
+--signal write_error_over_threshold_counter, write_error_over_threshold_counter_next : ERROR_COUNTER_TYPE;
+--signal write_data_changed_counter, write_data_changed_counter_next : ERROR_COUNTER_TYPE;
+--constant MAX_ERROR_COUNT : std_logic_vector(9 downto 0) := "1111111111";
+
+--signal read_cmd_out : std_logic_vector(3 downto 0);
+--signal read_data_out : std_logic;
+--signal read_trigger, read_trigger_next : std_logic;
+--signal read_status_register : std_logic_vector(3*MAX_NUMCHIPS -1 downto 0);
+--signal read_idle : std_logic;
+--signal read_idle_last, read_idle_last_next : std_logic;
+--signal read_state_out : std_logic_vector(7 downto 0);
+--signal read_error_counter, read_error_counter_next : ERROR_COUNTER_TYPE;
+--signal read_error_over_threshold_counter, read_error_over_threshold_counter_next : ERROR_COUNTER_TYPE;
+
+signal numchips_configured, numchips_configured_next : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal numchips_active, numchips_active_next         : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal numchips_active_acc, numchips_active_acc_next : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+
+signal debug_m26cs_state, debug_m26cs_state_next : std_logic_vector(7 downto 0);
+signal debug_test, debug_test_next : std_logic_vector(31 downto 0);
+
+signal debug_trigger_counter, debug_trigger_counter_next : unsigned(31 downto 0);
+
+--signal bus2_ram_addr_out : std_logic_vector(7 downto 0);
+signal bus2_ram_addr_out : std_logic_vector(15 downto 0);
+signal bus2_ram_data_out : std_logic_vector(31 downto 0);
+signal bus2_ram_read_enable_out : std_logic;
+signal bus2_ram_write_enable_out : std_logic;
+signal bus2_ram_timeout_out : std_logic;
+
+signal bus2_ram_data_in, bus2_ram_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_ram_dataready_in, bus2_ram_dataready_in_next : std_logic;
+signal bus2_ram_write_ack_in, bus2_ram_write_ack_in_next : std_logic;
+signal bus2_ram_no_more_data_in, bus2_ram_no_more_data_in_next : std_logic;
+signal bus2_ram_unknown_addr_in, bus2_ram_unknown_addr_in_next : std_logic;
+
+--signal bus2_status_addr_out : std_logic_vector(4 downto 0);
+signal bus2_status_addr_out : std_logic_vector(15 downto 0);
+signal bus2_status_data_out : std_logic_vector(31 downto 0);
+signal bus2_status_read_enable_out : std_logic;
+signal bus2_status_write_enable_out : std_logic;
+signal bus2_status_timeout_out : std_logic;
+
+signal bus2_status_data_in, bus2_status_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_status_dataready_in, bus2_status_dataready_in_next : std_logic;
+signal bus2_status_write_ack_in, bus2_status_write_ack_in_next : std_logic;
+signal bus2_status_no_more_data_in, bus2_status_no_more_data_in_next : std_logic;
+signal bus2_status_unknown_addr_in, bus2_status_unknown_addr_in_next : std_logic;
+
+--signal bus2_status2_addr_out : std_logic_vector(4 downto 0);
+signal bus2_status2_addr_out : std_logic_vector(15 downto 0);
+signal bus2_status2_data_out : std_logic_vector(31 downto 0);
+signal bus2_status2_read_enable_out : std_logic;
+signal bus2_status2_write_enable_out : std_logic;
+signal bus2_status2_timeout_out : std_logic;
+
+signal bus2_status2_data_in, bus2_status2_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_status2_dataready_in, bus2_status2_dataready_in_next : std_logic;
+signal bus2_status2_write_ack_in, bus2_status2_write_ack_in_next : std_logic;
+signal bus2_status2_no_more_data_in, bus2_status2_no_more_data_in_next : std_logic;
+signal bus2_status2_unknown_addr_in, bus2_status2_unknown_addr_in_next : std_logic;
+
+signal bus2_status2_read_ram3b, bus2_status2_read_ram3b_next : std_logic;
+signal buf_bus2_status2_read_ram3b, buf_bus2_status2_read_ram3b_next : std_logic;
+
+signal status2_run_counter, status2_run_counter_next : unsigned(31 downto 0);
+
+signal status2_chain_status, status2_chain_status_next : std_logic_vector(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+signal status2_copy_finished: std_logic;
+
+
+--signal bus2_control_addr_out : std_logic_vector(4 downto 0);
+signal bus2_control_addr_out : std_logic_vector(15 downto 0);
+signal bus2_control_data_out : std_logic_vector(31 downto 0);
+signal bus2_control_read_enable_out : std_logic;
+signal bus2_control_write_enable_out : std_logic;
+signal bus2_control_timeout_out : std_logic;
+
+signal bus2_control_data_in, bus2_control_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_control_dataready_in, bus2_control_dataready_in_next : std_logic;
+signal bus2_control_write_ack_in, bus2_control_write_ack_in_next : std_logic;
+signal bus2_control_no_more_data_in, bus2_control_no_more_data_in_next : std_logic;
+signal bus2_control_unknown_addr_in, bus2_control_unknown_addr_in_next : std_logic;
+
+--signal bus2_debug_addr_out : std_logic_vector(4 downto 0);
+signal bus2_debug_addr_out : std_logic_vector(15 downto 0);
+signal bus2_debug_data_out : std_logic_vector(31 downto 0);
+signal bus2_debug_read_enable_out : std_logic;
+signal bus2_debug_write_enable_out : std_logic;
+signal bus2_debug_timeout_out : std_logic;
+
+signal bus2_debug_data_in, bus2_debug_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_debug_dataready_in, bus2_debug_dataready_in_next : std_logic;
+signal bus2_debug_write_ack_in, bus2_debug_write_ack_in_next : std_logic;
+signal bus2_debug_no_more_data_in, bus2_debug_no_more_data_in_next : std_logic;
+signal bus2_debug_unknown_addr_in, bus2_debug_unknown_addr_in_next : std_logic;
+
+signal buf_bus2_ram_read_enable_out, buf_bus2_ram_read_enable_out_next : std_logic;
+signal buf_buf_bus2_ram_read_enable_out, buf_buf_bus2_ram_read_enable_out_next : std_logic;
+-- monitoring
+--signal read_mon_write_out : std_logic;
+-- off_spill timer (htcounter)
+--signal htcounter_next, htcounter : unsigned(26 downto 0); -- 27 bit = approx 1.34 seconds
+--signal have_time_for_write, have_time_for_write_next : std_logic;
+signal prog_jtag_finished, prog_jtag_finished_next : std_logic;
+--signal last_write_successful,  last_write_successful_next : std_logic;
+
+-- BEGIN NEW SIGNALS
+signal jtag_next_not_removed, jtag_next_not_removed_next :  std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD*(MAX_NUMCHIPS+1)-1 downto 0);
+signal jtag_write_ram1a_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal jtag_write_ram1a_d : std_logic_vector(31 downto 0);
+signal trigger_jtag_write, trigger_jtag_write_next : std_logic;
+signal jtag_write_is_dr_bit : std_logic;
+signal jtag_write_is_firstbit : std_logic;
+signal jtag_write_is_lastbit : std_logic;
+signal jtag_write_chipnum : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal jtag_write_regnum : std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+signal jtag_write_enable_jtag_clock : std_logic;
+signal jtag_write_last_tck_cycle : std_logic;
+signal jtag_write_tms : std_logic;
+signal jtag_write_tdi : std_logic;
+signal jtag_write_expected_tdo : std_logic;
+signal jtag_write_idle : std_logic;
+signal jtag_write_last_error_code: std_logic_vector(2 downto 0);
+signal jtag_write_numregs_configured : std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);
+
+signal jtag_read_ram1a_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal jtag_read_ram1a_d : std_logic_vector(31 downto 0);
+signal trigger_jtag_read, trigger_jtag_read_next : std_logic;
+signal jtag_read_is_dr_bit : std_logic;
+signal jtag_read_is_firstbit : std_logic;
+signal jtag_read_is_lastbit : std_logic;
+signal jtag_read_chipnum : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal jtag_read_enable_jtag_clock : std_logic;
+signal jtag_read_last_tck_cycle : std_logic;
+signal jtag_read_tms : std_logic;
+signal jtag_read_tdi : std_logic;
+signal jtag_read_expected_tdo : std_logic;
+signal jtag_read_idle : std_logic;
+
+--signal trigger_bypassreg, trigger_bypassreg_next : std_logic;
+signal jtag_bypassreg_idle : std_logic;
+signal jtag_bypassreg_length : std_logic_vector(MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD + 7-1 downto 0);
+signal jtag_bypassreg_chain_broken : std_logic;
+signal jtag_bypassreg_enable_jtag_clock : std_logic;
+signal jtag_bypassreg_last_tck_cycle : std_logic;
+signal jtag_bypassreg_tms : std_logic;
+signal jtag_bypassreg_tdi : std_logic;
+-- begin: global_jtag_counter settings
+signal jtag_clock_cycle_length, jtag_clock_cycle_length_next : unsigned(9 downto 0); -- 10 bit linear adjustment of tck cycle length (10ns-10us)
+signal jtag_clock_time1, jtag_clock_time1_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_clock_time2, jtag_clock_time2_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_sample_time1, jtag_sample_time1_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_sample_time2, jtag_sample_time2_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_sample_time3, jtag_sample_time3_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_set_data_time, jtag_set_data_time_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+-- begin: periodic pulses, periodic with global_jtag_counter
+signal begin_jtag_bitcalc : std_logic;
+signal jtag_sample_pulse1 : std_logic;
+signal jtag_sample_pulse2 : std_logic;
+signal jtag_sample_pulse3 : std_logic;
+signal jtag_sample_pulse3_d1, jtag_sample_pulse3_d1_next : std_logic;
+signal jtag_set_data_pulse : std_logic;
+-- end: periodic pulses
+
+signal jtag_tdo_sampled : std_logic;
+signal jtag_tdo_sampling_error : std_logic;
+
+signal jtag_tms : std_logic;
+signal jtag_tdi : std_logic;
+signal jtag_enable_clock : std_logic;
+
+signal jtag_meta_is_dr_bit : std_logic;
+signal jtag_meta_is_firstbit : std_logic;
+signal jtag_meta_is_lastbit : std_logic;
+signal jtag_meta_chipnum : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal jtag_meta_regnum : std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+signal jtag_meta_last_tck_cycle : std_logic;
+signal jtag_meta_expected_tdo : std_logic;
+
+signal jtag_delayed_is_dr_bit : std_logic;
+signal jtag_delayed_is_firstbit : std_logic;
+signal jtag_delayed_is_lastbit : std_logic;
+signal jtag_delayed_chipnum : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal jtag_delayed_regnum : std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+signal jtag_delayed_tdo_expected : std_logic;
+
+-- jtag_update_error_counts
+signal trigger_juec_update_d_ch, trigger_juec_update_d_ch_next : std_logic;
+signal trigger_juec_update_rd_err, trigger_juec_update_rd_err_next : std_logic;
+signal trigger_juec_update_wr_err, trigger_juec_update_wr_err_next : std_logic;
+signal trigger_juec_update_run_counter, trigger_juec_update_run_counter_next : std_logic;
+signal juec_ram2_a : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+signal juec_ram2_dout : std_logic_vector(31 downto 0);
+signal juec_ram3a_a : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal juec_ram3a_dout : std_logic_vector(31 downto 0);
+signal juec_ram3a_din : std_logic_vector(31 downto 0);
+signal juec_ram3a_wr : std_logic;
+signal juec_idle : std_logic;
+signal juec_data_changed : std_logic;
+signal juec_read_errors : std_logic;
+signal juec_write_errors : std_logic;
+
+signal jtag_copy_ram3_ram3a_a : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal jtag_copy_ram3_ram3a_dout : std_logic_vector(31 downto 0);
+signal jtag_copy_ram3_ram3b_a : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal jtag_copy_ram3_ram3b_din : std_logic_vector(31 downto 0);
+signal jtag_copy_ram3_ram3b_wr : std_logic;
+signal jtag_copy_ram3_idle : std_logic;
+
+
+signal trigger_blank_ram3a, trigger_blank_ram3a_next : std_logic;
+signal jtag_blank_ram3a_ram3a_a : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal jtag_blank_ram3a_ram3a_din : std_logic_vector(31 downto 0);
+signal jtag_blank_ram3a_ram3a_wr : std_logic;
+signal jtag_blank_ram3a_idle : std_logic;
+
+
+type M26CS_STATE_TYPE is (M26CSS_STOPPED, M26CSS_CHECK1_WAIT_FOR_HAVE_TIME, M26CSS_WAIT_FOR_TRIGGER, M26CSS_CHECK_CRC_RAM1A_BEGIN, M26CSS_CHECK_CRC_RAM1A_WAIT, M26CSS_INIT_RAM1B_BEGIN, M26CSS_INIT_RAM1B_WAIT, M26CSS_DATA_CHANGED_BEGIN, M26CSS_DATA_CHANGED_WAIT, M26CSS_BLANK_RAM3A_WAIT, M26CSS_JUEC_DATA_CHANGED_BEGIN, M26CSS_JUEC_DATA_CHANGED_WAIT, M26CSS_COUNT_CHIPS_BEGIN, M26CSS_COUNT_CHIPS_WAIT, M26CSS_BYPASSREG_BEGIN, M26CSS_BYPASSREG_WAIT, M26CSS_READ1_BEGIN, M26CSS_READ1_WAIT, M26CSS_JUEC_READ_BEGIN, M26CSS_JUEC_READ_WAIT, M26CSS_REQUEST_RESET_BEGIN, M26CSS_REQUEST_RESET_WAIT, M26CSS_REQUESTED_RESET_WAIT, M26CSS_WRITE1_BEGIN, M26CSS_WRITE1_WAIT, M26CSS_WRITE2_BEGIN, M26CSS_WRITE2_WAIT, M26CSS_JUEC_WRITE_BEGIN, M26CSS_JUEC_WRITE_WAIT, M26CSS_JUEC_RUN_COUNTER_BEGIN, M26CSS_JUEC_RUN_COUNTER_WAIT,
+M26CSS_WRITEONCE_CHECK_CRC_RAM1A_BEGIN, M26CSS_WRITEONCE_CHECK_CRC_RAM1A_WAIT, M26CSS_WRITEONCE_INIT_RAM1B_BEGIN, M26CSS_WRITEONCE_INIT_RAM1B_WAIT, M26CSS_WRITEONCE_COUNT_CHIPS_BEGIN, M26CSS_WRITEONCE_COUNT_CHIPS_WAIT, M26CSS_WRITEONCE_WRITE1_BEGIN, M26CSS_WRITEONCE_WRITE1_WAIT );
+signal m26cs_state, m26cs_state_next : M26CS_STATE_TYPE;
+--signal write_count, write_count_next : std_logic_vector(31 downto 0);
+signal m26cs_stopped : std_logic;
+signal m26cs_firstrun, m26cs_firstrun_next : std_logic;
+signal breakpoint_active, breakpoint_active_next : std_logic_vector(9 downto 0);
+-- chain_status:
+-- bit 0:           chain broken
+-- bit 1:           CRC_error(s)
+-- bit 2:           programmed 
+-- bits 3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 3: chain length
+signal chain_status, chain_status_next : std_logic_vector(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+
+signal trigger_begin_bypassreg, trigger_begin_bypassreg_next : std_logic;
+signal trigger_copy_ram3, trigger_copy_ram3_next : std_logic;
+--signal jtag_tdo_compare_count_internal_error : std_logic;
+signal run_counter, run_counter_next : unsigned(31 downto 0);
+signal jtag_status2_copy_requested, jtag_status2_copy_requested_next : std_logic;
+
+signal jtag_status2_copy_request_strobe, jtag_status2_copy_request_strobe_next : std_logic;
+type CPS2_STATE_TYPE is (CPS2_IDLE, CPS2_COPY_BEGIN, CPS2_COPY_WAIT);
+signal cps2_state, cps2_state_next : CPS2_STATE_TYPE;
+signal jtag_clock_pulse1 : std_logic;
+signal jtag_clock_pulse2 : std_logic;
+signal jtag_tck : std_logic;
+
+signal jtag_pulses_reset, jtag_pulses_reset_next : std_logic;
+signal jtag_pulses_reset_complete : std_logic;
+
+signal jtag_chain_broken_counter, jtag_chain_broken_counter_next : unsigned(JTAG_CHAIN_BROKEN_COUNTER_BITS-1 downto 0);
+
+signal jtag_check_crc_ram1a_crc_ok : std_logic_vector(MAX_NUMCHIPS-1 downto 0);
+signal jtag_check_crc_ram1a_idle : std_logic;
+signal trigger_check_crc_ram1a, trigger_check_crc_ram1a_next : std_logic;
+signal trigger_init_ram1b, trigger_init_ram1b_next : std_logic;
+signal jtag_init_ram1b_idle : std_logic;
+
+signal ram1b1c_copy_trigger_strobe, ram1b1c_copy_trigger_strobe_next : std_logic_vector(3 downto 0);
+signal trigger_copy_ram1b1c, trigger_copy_ram1b1c_next : std_logic;
+signal copy_ram1b1c_ram1b_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal copy_ram1b1c_ram1b_dout : std_logic_vector(31 downto 0);
+signal copy_ram1b1c_ram1c_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal copy_ram1b1c_ram1c_din : std_logic_vector(31 downto 0);
+signal copy_ram1b1c_ram1c_wr : std_logic;
+signal copy_ram1b1c_idle : std_logic;
+
+signal ram1c_a2, ram1c_a2_next : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1c_dout2 : std_logic_vector(31 downto 0);
+
+signal ram1b1c_copy_trigger_active, ram1b1c_copy_trigger_active_next : std_logic_vector(3 downto 0);
+signal ram1b_copy_requested, ram1b_copy_requested_next : std_logic;
+signal ram1c_run_counter, ram1c_run_counter_next : unsigned(31 downto 0);
+signal ram1c_chain_status, ram1c_chain_status_next :  std_logic_vector(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+
+type CPR1BC_STATE_TYPE is (CPR1BC_IDLE, CPR1BC_COPY_BEGIN, CPR1BC_COPY_WAIT);
+signal cpr1bc_state, cpr1bc_state_next : CPR1BC_STATE_TYPE;
+
+-- DEBUGTDO fifo and control signals
+signal  tdodebugsamples : std_logic_vector(31 downto 0);
+signal debugtdo_rd_en : std_logic;
+signal debugtdo_wr_en : std_logic;
+signal debugtdo_dout : std_logic_vector(31 downto 0);
+signal debugtdo_empty : std_logic;
+signal debugtdo_full : std_logic;
+signal debugtdo_overflow : std_logic;
+signal debugtdo_underflow : std_logic;
+signal resetdebugtdo_toffifo : std_logic;
+signal resetdebugtdo_strobe : std_logic;
+signal debugtdo_activate_strobe : std_logic;
+signal debugtdo_active : std_logic;
+signal debugtdo_timeout, debugtdo_timeout_next : std_logic_vector(31 downto 0);
+signal debugtdo_counter : std_logic_vector(31 downto 0);
+signal debugtdo_ran : std_logic;
+
+signal crc_error_on_last_check, crc_error_on_last_check_next : std_logic;
+signal last_run_successful, last_run_successful_next : std_logic;
+signal last_run_successful_tmp, last_run_successful_tmp_next : std_logic;
+signal begin_count_read_errors :std_logic;
+signal begin_count_write_errors :std_logic;
+signal begin_count_data_changed :std_logic;
+signal end_count_read_errors :std_logic;
+signal end_count_write_errors :std_logic;
+signal end_count_data_changed :std_logic;
+signal last_read_error : std_logic;
+signal last_write_error : std_logic;
+signal last_data_changed : std_logic;
+
+signal sREAD_ID_ERRORS_COUNT_OUT : std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+signal sWRITE_ERRORS_COUNT_OUT : std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+signal sDATA_CHANGED_COUNT_OUT : std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+
+-- INSERTLABEL:  signals
+
+signal m26csoptions, m26csoptions_next : std_logic_vector(0 downto 0);
+signal jtag_delay_expvalues, jtag_delay_expvalues_next :  std_logic_vector(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0);
+
+signal request_reset, request_reset_next : std_logic;
+signal reset_wait, reset_wait_next : unsigned(7 downto 0);
+constant reset_wait_zero : unsigned(7 downto 0) := "00000000";
+
+signal run_requested, run_requested_next : std_logic;
+signal write_once_requested, write_once_requested_next : std_logic;
+signal write_once_count, write_once_count_next : unsigned(COUNTER_WIDTHS-1 downto 0);
+
+
+
+begin
+
+--fifo32bit_debugtdo : fifo32bit
+--port map(
+--        clk => CLK_IN,
+--        din => tdodebugsamples(31 downto 0),
+--        rd_en => debugtdo_rd_en,
+--        rst => resetdebugtdo_toffifo,
+--        wr_en => debugtdo_wr_en,
+--        dout => debugtdo_dout(31 downto 0),
+--        empty => debugtdo_empty,
+--        full => debugtdo_full,
+--     overflow => debugtdo_overflow,
+--        underflow => debugtdo_underflow);
+
+
+
+jtag_bypassreg_enable_jtag_clock  <=  '0';
+
+
+resetdebugtdo_toffifo <= resetdebugtdo_strobe OR RESET_IN;
+debugtdo_wr_en <= '1' when debugtdo_active = '1' and debugtdo_timeout <= debugtdo_counter else '0';
+
+tdodebugsamples(31) <= begin_jtag_bitcalc;
+tdodebugsamples(30) <= jtag_clock_pulse1;
+tdodebugsamples(29) <= jtag_clock_pulse2;
+tdodebugsamples(28) <= jtag_sample_pulse1;
+tdodebugsamples(27) <= jtag_sample_pulse2;
+tdodebugsamples(26) <= jtag_sample_pulse3;
+tdodebugsamples(25) <= jtag_set_data_pulse;
+tdodebugsamples(1) <= JTAG_TDO_IN;
+
+RUN_COUNTER_OUT <= std_logic_vector(run_counter);
+STARTED_OUT  <= jtag_refresh_active;
+CRC_ERROR_OUT <= crc_error_on_last_check;
+LAST_RUN_SUCCESSFUL_OUT <= last_run_successful;
+LAST_DATA_CHANGED_OUT <= last_data_changed;
+LAST_WRITE_ERRORS_OUT <= last_write_error;
+LAST_READ_ERRORS_OUT <= last_read_error;
+
+REQUEST_RESET_OUT <= request_reset;
+
+the_bus_handler : trb_net16_regio_bus_handler
+  generic map(
+    PORT_NUMBER => 5,
+    PORT_ADDRESSES => (0 => x"0000", 1 => x"0100", 2 => x"0120", 3 => x"0140", 4 => x"0160", others => (others => '0')),
+    PORT_ADDR_MASK => (0 => 8,       1 => 5,       2 => 5,       3 => 5,       4 => 5,       others => 0)
+    )
+  port map(
+    CLK                    => CLK_IN,
+    RESET                  => RESET_IN,
+    DAT_ADDR_IN(15 downto 9) => "0000000", 
+    DAT_ADDR_IN(8 downto 0)=> BUS_ADDR_IN, -- address bus
+    DAT_DATA_IN            => BUS_DATA_IN, -- data from TRB endpoint
+    DAT_DATA_OUT           => BUS_DATA_OUT, -- data to TRB endpoint
+    DAT_READ_ENABLE_IN     => BUS_READ_IN, -- read pulse
+    DAT_WRITE_ENABLE_IN    => BUS_WRITE_IN, -- write pulse
+    DAT_TIMEOUT_IN         => '0', -- access timed out
+    DAT_DATAREADY_OUT      => BUS_DATAREADY_OUT, -- your data, master, as requested
+    DAT_WRITE_ACK_OUT      => BUS_WRITE_ACK_OUT, -- data accepted
+    DAT_NO_MORE_DATA_OUT   => BUS_NO_MORE_DATA_OUT, -- don't disturb me now
+    DAT_UNKNOWN_ADDR_OUT   => BUS_UNKNOWN_ADDR_OUT, -- noone here to answer your request
+
+   --BUS_ADDR_OUT(0*16+15 downto 0*16+8) => open,
+    BUS_ADDR_OUT(0*16+15 downto 0*16) => bus2_ram_addr_out,
+   --BUS_ADDR_OUT(1*16+15 downto 1*16+5) => open,
+    BUS_ADDR_OUT(1*16+15 downto 1*16) => bus2_status_addr_out,
+   --BUS_ADDR_OUT(2*16+15 downto 2*16+5) => open,
+    BUS_ADDR_OUT(2*16+15 downto 2*16) => bus2_control_addr_out,
+   --BUS_ADDR_OUT(3*16+15 downto 3*16+5) => open,
+    BUS_ADDR_OUT(3*16+15 downto 3*16) => bus2_debug_addr_out,
+    BUS_ADDR_OUT(4*16+15 downto 4*16) => bus2_status2_addr_out,
+    BUS_DATA_OUT(0*32+31 downto 0*32) => bus2_ram_data_out,
+    BUS_DATA_OUT(1*32+31 downto 1*32) => bus2_status_data_out,
+    BUS_DATA_OUT(2*32+31 downto 2*32) => bus2_control_data_out,
+    BUS_DATA_OUT(3*32+31 downto 3*32) => bus2_debug_data_out,
+    BUS_DATA_OUT(4*32+31 downto 4*32) => bus2_status2_data_out,
+    BUS_READ_ENABLE_OUT(0)            => bus2_ram_read_enable_out,
+    BUS_READ_ENABLE_OUT(1)            => bus2_status_read_enable_out,
+    BUS_READ_ENABLE_OUT(2)            => bus2_control_read_enable_out,
+    BUS_READ_ENABLE_OUT(3)            => bus2_debug_read_enable_out,
+    BUS_READ_ENABLE_OUT(4)            => bus2_status2_read_enable_out,
+    BUS_WRITE_ENABLE_OUT(0)              => bus2_ram_write_enable_out,
+    BUS_WRITE_ENABLE_OUT(1)              => bus2_status_write_enable_out,
+    BUS_WRITE_ENABLE_OUT(2)              => bus2_control_write_enable_out,
+    BUS_WRITE_ENABLE_OUT(3)              => bus2_debug_write_enable_out,
+    BUS_WRITE_ENABLE_OUT(4)              => bus2_status2_write_enable_out,
+    BUS_TIMEOUT_OUT(0)                   => bus2_ram_timeout_out,
+    BUS_TIMEOUT_OUT(1)                   => bus2_status_timeout_out,
+    BUS_TIMEOUT_OUT(2)                   => bus2_control_timeout_out,
+    BUS_TIMEOUT_OUT(3)                   => bus2_debug_timeout_out,
+    BUS_TIMEOUT_OUT(4)                   => bus2_status2_timeout_out,
+
+    BUS_DATA_IN(0*32+31 downto 0*32)  => bus2_ram_data_in,
+    BUS_DATA_IN(1*32+31 downto 1*32)  => bus2_status_data_in,
+    BUS_DATA_IN(2*32+31 downto 2*32)  => bus2_control_data_in,
+    BUS_DATA_IN(3*32+31 downto 3*32)  => bus2_debug_data_in,
+    BUS_DATA_IN(4*32+31 downto 4*32)  => bus2_status2_data_in,
+    BUS_DATAREADY_IN(0)               => bus2_ram_dataready_in,
+    BUS_DATAREADY_IN(1)               => bus2_status_dataready_in,
+    BUS_DATAREADY_IN(2)               => bus2_control_dataready_in,
+    BUS_DATAREADY_IN(3)               => bus2_debug_dataready_in,
+    BUS_DATAREADY_IN(4)               => bus2_status2_dataready_in,
+    BUS_WRITE_ACK_IN(0)               => bus2_ram_write_ack_in,
+    BUS_WRITE_ACK_IN(1)               => bus2_status_write_ack_in,
+    BUS_WRITE_ACK_IN(2)               => bus2_control_write_ack_in,
+    BUS_WRITE_ACK_IN(3)               => bus2_debug_write_ack_in,
+    BUS_WRITE_ACK_IN(4)               => bus2_status2_write_ack_in,
+    BUS_NO_MORE_DATA_IN(0)            => bus2_ram_no_more_data_in,
+    BUS_NO_MORE_DATA_IN(1)            => bus2_status_no_more_data_in,
+    BUS_NO_MORE_DATA_IN(2)            => bus2_control_no_more_data_in,
+    BUS_NO_MORE_DATA_IN(3)            => bus2_debug_no_more_data_in,
+    BUS_NO_MORE_DATA_IN(4)            => bus2_status2_no_more_data_in,
+    BUS_UNKNOWN_ADDR_IN(0)               => bus2_ram_unknown_addr_in,
+    BUS_UNKNOWN_ADDR_IN(1)               => bus2_status_unknown_addr_in,
+    BUS_UNKNOWN_ADDR_IN(2)               => bus2_control_unknown_addr_in,    
+    BUS_UNKNOWN_ADDR_IN(3)               => bus2_debug_unknown_addr_in,
+    BUS_UNKNOWN_ADDR_IN(4)               => bus2_status2_unknown_addr_in,
+    
+
+
+
+
+
+    STAT_DEBUG                        => open
+    );
+
+
+
+-- RAM1a holds JTAG registers, written via trbnet
+ram_jtag_registers : ram_dp         generic map(
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => ram1a_wr1,
+                                     a1    => ram1a_a1,
+                                     dout1 => ram1a_dout1,
+                                     din1  => ram1a_din1,
+                                     a2    => ram1a_a2,
+                                     dout2 => ram1a_dout2
+                                     );
+ram1a_readport_mux: ram_mux4to1_readport generic map( 
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map (   
+                                     SELECT_IN => ram1a_select,
+                                     A0_IN => jtag_read_ram1a_a,
+                                     D0_OUT => jtag_read_ram1a_d,
+                                     A1_IN => jtag_write_ram1a_a,
+                                     D1_OUT => jtag_write_ram1a_d,
+                                     A2_IN  => init_ram1b_ram1a_a,
+                                     D2_OUT  => init_ram1b_ram1a_d,
+                                     A3_IN => jtag_check_crc_ram1a_a,
+                                     D3_OUT => jtag_check_crc_ram1a_d,
+    
+                                     RAM_A_OUT   => ram1a_a2,
+                                     RAM_DOUT_IN => ram1a_dout2
+                                     );
+  
+-- RAM1b holds JTAG registers, read from JTAG chain
+ram_jtag_registers_read : ram_dp         generic map(
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => ram1b_wr1,
+                                     a1    => ram1b_a1,
+                                     dout1 => ram1b_dout1,
+                                     din1  => ram1b_din1,
+                                     a2    => copy_ram1b1c_ram1b_a,--ram1b_a2,
+                                     dout2 => copy_ram1b1c_ram1b_dout--ram1b_dout2
+                                     );
+
+-- RAM1b holds JTAG registers, read from JTAG chain
+ram_jtag_registers_copy_read : ram_dp         generic map(
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => copy_ram1b1c_ram1c_wr,
+                                     a1    => copy_ram1b1c_ram1c_a,
+                                     dout1 => open,
+                                     din1  => copy_ram1b1c_ram1c_din,
+                                     a2    => ram1c_a2,
+                                     dout2 => ram1c_dout2
+                                     );
+
+
+ram1b_mux2to1_writeport : ram_mux2to1_writeport generic map (
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( SELECT_IN => ram1b_select,
+                                     A0_IN  =>    init_ram1b_ram1b_a,
+                                     D0_OUT  =>   init_ram1b_ram1b_dout,
+                                     WR0_IN  =>   init_ram1b_ram1b_wr,
+                                     DIN0_IN =>   init_ram1b_ram1b_din,
+   
+                                     A1_IN   =>   jtag_data_to_ram_ram1b_a,
+                                     D1_OUT  =>   jtag_data_to_ram_ram1b_dout,
+                                     WR1_IN  =>   jtag_data_to_ram_ram1b_wr,
+                                     DIN1_IN =>   jtag_data_to_ram_ram1b_din,
+                                     
+                                     RAM_A_OUT    => ram1b_a1,
+                                     RAM_DOUT_IN  => ram1b_dout1,
+                                     RAM_WR_OUT   => ram1b_wr1,
+                                     RAM_DIN_OUT  => ram1b_din1
+                                     );
+
+                                     
+-- RAM2 holds counts of matching/not matching bits of each register of each chip
+ram_match_diff_count : ram_dp         generic map(
+                                     depth => RAM_MATCH_DIFF_COUNT_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => ram2_wr1,
+                                     a1    => ram2_a1,
+                                     dout1 => ram2_dout1,
+                                     din1  => ram2_din1,
+                                     a2    => "00000000",--ram2_a2,
+                                     dout2 => open --ram2_dout2
+                                     );
+ram2_mux2to1_writeport : ram_mux2to1_writeport generic map (
+                                     depth => RAM_MATCH_DIFF_COUNT_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( SELECT_IN => ram2_select,
+                                     A0_IN  =>    jtag_tdo_compare_count_ram_a,
+                                     D0_OUT  =>   jtag_tdo_compare_count_ram_dout,
+                                     WR0_IN  =>   jtag_tdo_compare_count_ram_wr,
+                                     DIN0_IN =>   jtag_tdo_compare_count_ram_din,
+   
+                                     A1_IN   =>   juec_ram2_a,
+                                     D1_OUT  =>   juec_ram2_dout,
+                                     WR1_IN  =>   '0',
+                                     DIN1_IN =>   x"0000_0000",
+                                     
+                                     RAM_A_OUT    => ram2_a1,
+                                     RAM_DOUT_IN  => ram2_dout1,
+                                     RAM_WR_OUT   => ram2_wr1,
+                                     RAM_DIN_OUT  => ram2_din1
+                                     );
+
+-- RAM3 holds counts of errors and 'error over threshold's of each register of each chip
+ram_error_counts_A : ram_dp         generic map(
+                                     depth => RAM_ERROR_COUNTS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => ram3a_wr1,
+                                     a1    => ram3a_a1,
+                                     dout1 => ram3a_dout1,
+                                     din1  => ram3a_din1,
+                                     a2    => ram3a_a2,
+                                     dout2 => ram3a_dout2
+                                     );
+-- ram_error_counts_A : ram_dp         generic map(
+--                                      depth => RAM_ERROR_COUNTS_DEPTH,
+--                                      width => 32
+--                                      )
+--                           port map ( CLK => CLK_IN,
+--                                      wr1   => juec_ram3a_wr,
+--                                      a1    => juec_ram3a_a,
+--                                      dout1 => juec_ram3a_dout,
+--                                      din1  => juec_ram3a_din,
+--                                      a2    => jtag_copy_ram3_ram3a_a,
+--                                      dout2 => jtag_copy_ram3_ram3a_dout
+--                                      );
+-- RAM3B is an on demand copy of RAM3A     
+ram_error_counts_B : ram_dp         generic map(
+                                     depth => RAM_ERROR_COUNTS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => jtag_copy_ram3_ram3b_wr,
+                                     a1    => jtag_copy_ram3_ram3b_a,
+                                     dout1 => open,
+                                     din1  =>  jtag_copy_ram3_ram3b_din,
+                                     a2    => ram3b_a2,
+                                     dout2 => ram3b_dout2
+                                     );
+                                     
+ram3a_mux2to1_writeport : ram_mux2to1_writeport generic map (
+                                     depth => RAM_ERROR_COUNTS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( SELECT_IN => ram3a_select,
+                                     A0_IN  =>    juec_ram3a_a,
+                                     D0_OUT  =>   juec_ram3a_dout,
+                                     WR0_IN  =>   juec_ram3a_wr,
+                                     DIN0_IN =>   juec_ram3a_din,
+   
+                                     A1_IN   => jtag_blank_ram3a_ram3a_a,
+                                     D1_OUT  =>   open,
+                                     WR1_IN  =>   jtag_blank_ram3a_ram3a_wr,
+                                     DIN1_IN =>   jtag_blank_ram3a_ram3a_din,
+                                     
+                                     RAM_A_OUT    => ram3a_a1,
+                                     RAM_DOUT_IN  => ram3a_dout1,
+                                     RAM_WR_OUT   => ram3a_wr1,
+                                     RAM_DIN_OUT  => ram3a_din1
+                                     );                                     
+
+ram3a_readport_mux: ram_mux2to1_readport generic map( 
+                                     depth => RAM_ERROR_COUNTS_DEPTH,
+                                     width => 32
+                                     )
+                          port map (   
+                                     SELECT_IN => ram3a_rd_select,
+                                     A0_IN => jtag_copy_ram3_ram3a_a,
+                                     D0_OUT => jtag_copy_ram3_ram3a_dout,
+                                     A1_IN => "000000000",
+                                     D1_OUT => open,
+    
+                                     RAM_A_OUT   => ram3a_a2,
+                                     RAM_DOUT_IN => ram3a_dout2
+                                     );
+
+
+
+the_jtag_init_ram1b: jtag_init_ram1b generic map(
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_LD => MAX_REGISTERS_LD
+)
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_INIT_IN => trigger_init_ram1b,
+    -- RAM1a
+    RAM1A_A_OUT => init_ram1b_ram1a_a,
+    RAM1A_D_IN => init_ram1b_ram1a_d,
+    -- RAM1b
+    RAM1B_A_OUT => init_ram1b_ram1b_a,
+    RAM1B_D_IN => init_ram1b_ram1b_dout,
+    RAM1B_WE_OUT => init_ram1b_ram1b_wr,
+    RAM1B_D_OUT => init_ram1b_ram1b_din,
+    
+    IDLE_OUT => jtag_init_ram1b_idle
+  );
+
+the_jtag_copy_ram1b1c : copy_ram
+  generic map (
+    ram_depth => RAM_JTAG_REGISTERS_DEPTH,
+    ram_width => 32
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_COPY_IN => trigger_copy_ram1b1c,
+    -- RAM3a
+    RAMA_A_OUT => copy_ram1b1c_ram1b_a,
+    RAMA_D_IN => copy_ram1b1c_ram1b_dout,
+    -- RAM3b
+    RAMB_A_OUT => copy_ram1b1c_ram1c_a,
+    RAMB_D_OUT => copy_ram1b1c_ram1c_din,
+    RAMB_WR_OUT => copy_ram1b1c_ram1c_wr,
+    
+    IDLE_OUT => copy_ram1b1c_idle
+  );
+
+
+
+the_jtag_copy_ram3 : copy_ram
+  generic map (
+    ram_depth => RAM_ERROR_COUNTS_DEPTH,
+    ram_width => 32
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_COPY_IN => trigger_copy_ram3,
+    -- RAM3a
+    RAMA_A_OUT => jtag_copy_ram3_ram3a_a,
+    RAMA_D_IN => jtag_copy_ram3_ram3a_dout,
+    -- RAM3b
+    RAMB_A_OUT => jtag_copy_ram3_ram3b_a,
+    RAMB_D_OUT => jtag_copy_ram3_ram3b_din,
+    RAMB_WR_OUT => jtag_copy_ram3_ram3b_wr,
+    
+    IDLE_OUT => jtag_copy_ram3_idle
+  );
+
+the_jtag_blank_ram3a : blank_ram
+  generic map (
+    ram_depth => RAM_ERROR_COUNTS_DEPTH,
+    ram_width => 32
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_BLANK_IN => trigger_blank_ram3a,
+    -- RAM
+--    RAM_A_OUT => jtag_blank_ram3a_ram3a_a,
+    RAM_A_OUT => open,
+--    RAM_D_OUT => jtag_blank_ram3a_ram3a_din,
+    RAM_D_OUT => open,
+--    RAM_WR_OUT => jtag_blank_ram3a_ram3a_wr,  -- disabling blanking ram 29.10.2012
+    RAM_WR_OUT => open,
+    
+    IDLE_OUT => jtag_blank_ram3a_idle
+  );
+jtag_blank_ram3a_ram3a_a <= (others => '0');
+jtag_blank_ram3a_ram3a_din <= (others => '0');
+jtag_blank_ram3a_ram3a_wr <= '0';
+  
+  
+the_jtag_update_error_counts_ram3a : jtag_update_error_counts_ram3a 
+  generic map (
+     MAX_NUMCHIPS => MAX_NUMCHIPS,
+     MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+     MAX_NUMCHIPS_PLUS_ONE_LD => MAX_NUMCHIPS_PLUS_ONE_LD,
+     MAX_REGISTERS_LD => MAX_REGISTERS_LD,
+     MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD,
+     MAX_REGISTERS_PLUS_TWO_LD => MAX_REGISTERS_PLUS_TWO_LD,
+     RAM_MATCH_DIFF_COUNT_DEPTH => RAM_MATCH_DIFF_COUNT_DEPTH,
+     RAM_ERROR_COUNTS_DEPTH => RAM_ERROR_COUNTS_DEPTH,
+     WRITE_ERROR_THRESHOLD => WRITE_ERROR_THRESHOLD,
+     READ_ERROR_THRESHOLD => READ_ERROR_THRESHOLD
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_UPDATE_DATA_CHANGED_IN => trigger_juec_update_d_ch,
+    TRIGGER_UPDATE_READ_ERRORS_IN => trigger_juec_update_rd_err,
+    TRIGGER_UPDATE_WRITE_ERRORS_IN => trigger_juec_update_wr_err,
+    TRIGGER_UPDATE_RUN_COUNTER_IN => trigger_juec_update_run_counter,
+    RUN_COUNTER_IN => std_logic_vector(run_counter),
+    -- RAM2
+    RAM2_A_OUT => juec_ram2_a,
+    RAM2_D_IN =>  juec_ram2_dout,
+    -- RAM3a
+    RAM3A_A_OUT => juec_ram3a_a,
+    RAM3A_D_IN => juec_ram3a_dout,
+    RAM3A_D_OUT => juec_ram3a_din,
+    RAM3A_WR_OUT => juec_ram3a_wr,
+    
+    REMOVED_CHIPS_IN => removed_chips,
+    NUMCHIPS_CONFIGURED_IN => std_logic_vector(numchips_configured),
+    NUMREGS_CONFIGURED_IN => jtag_write_numregs_configured,
+    
+    DATA_CHANGED_OUT => juec_data_changed,
+    READ_ERRORS_OUT => juec_read_errors,
+    WRITE_ERRORS_OUT => juec_write_errors,
+    
+    IDLE_OUT => juec_idle
+  );
+
+-- the_jtag_bypassreg_testchain_m10: jtag_bypassreg_testchain_m10  
+--   generic map (
+--     ld_maxdelay => JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD,
+--     MAX_NUMCHIPS => MAX_NUMCHIPS,
+--     MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+--     JTAG_M26_IRLEN => JTAG_M26_IRLEN,
+--     max_bitcounter_ld => MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD + 7
+--   )
+--   port map(
+--     CLK_IN => CLK_IN,
+--     RESET_IN => RESET_IN,
+--     BEGIN_JTAGBITCALC_IN => begin_jtag_bitcalc,
+--     TRIGGER_BEGIN_TESTCHAIN_IN => trigger_begin_bypassreg,
+--     IDLE_OUT => jtag_bypassreg_idle,
+--     CHAIN_LENGTH_OUT => jtag_bypassreg_length,
+--     CHAIN_BROKEN_OUT => jtag_bypassreg_chain_broken,
+--     ENABLE_JTAG_CLOCK_OUT => jtag_bypassreg_enable_jtag_clock,
+--     LAST_TCK_CYCLE_OUT => jtag_bypassreg_last_tck_cycle,
+--     TMS_OUT => jtag_bypassreg_tms,
+--     TDI_OUT => jtag_bypassreg_tdi,
+--     TDO_IN  => jtag_tdo_sampled,
+--     DELAY_IN => jtag_delay_expvalues
+--     );
+                                     
+the_jtag_read_m26devid_m10: jtag_read_m26devid_m10 
+  generic map (
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH,
+    MAX_NUMCHIPS_PLUS_ONE_LD => MAX_NUMCHIPS_PLUS_ONE_LD,
+    MAX_NUMCHIPS => MAX_NUMCHIPS,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    RAM_JTAG_REGISTERS_A_OUT => jtag_read_ram1a_a,
+    RAM_JTAG_REGISTERS_D_IN => jtag_read_ram1a_d,
+    NEXT_NOT_REMOVED_IN => jtag_next_not_removed,
+    BEGIN_JTAGBITCALC_IN => begin_jtag_bitcalc,
+    TRIGGER_BEGIN_READ_IN => trigger_jtag_read, 
+    IS_DR_BIT_OUT => jtag_read_is_dr_bit,
+    IS_FIRSTBIT_OUT => jtag_read_is_firstbit,
+    IS_LASTBIT_OUT => jtag_read_is_lastbit,
+    CHIPNUM_OUT => jtag_read_chipnum,
+    ENABLE_JTAG_CLOCK_OUT => jtag_read_enable_jtag_clock,
+    LAST_TCK_CYCLE_OUT => jtag_read_last_tck_cycle,
+    TMS_OUT => jtag_read_tms,
+    TDI_OUT => jtag_read_tdi,
+    EXPECTED_TDO_OUT => jtag_read_expected_tdo,
+    IDLE_OUT => jtag_read_idle
+  );
+                                     
+the_jtag_tdo_data_to_ram_m10 : jtag_tdo_data_to_ram_m10
+  generic map (
+    enable_ram1b => '1',
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD,
+    MAX_REGLEN_LD => MAX_REGLEN_LD,
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE3_D1_IN => jtag_sample_pulse3_d1,
+    CHIPNUM_IN => jtag_delayed_chipnum,
+    REGNUM_IN => jtag_delayed_regnum,
+    ENABLE_DATAOUT_IN => jtag_delayed_is_dr_bit,
+    IS_FIRSTBIT_IN  => jtag_delayed_is_firstbit,
+    IS_LASTBIT_IN   => jtag_delayed_is_lastbit,
+    TDO_SAMPLED_IN  => jtag_tdo_sampled,
+    -- RAM1b
+    RAM_JTAG_REGISTERS_READOUT_A_OUT => jtag_data_to_ram_ram1b_a,
+    RAM_JTAG_REGISTERS_READOUT_D_IN => jtag_data_to_ram_ram1b_dout,
+    RAM_JTAG_REGISTERS_READOUT_WE_OUT => jtag_data_to_ram_ram1b_wr,
+    RAM_JTAG_REGISTERS_READOUT_D_OUT => jtag_data_to_ram_ram1b_din
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);  
+  );
+                                     
+the_jtag_tdo_compare_count_m10 : jtag_tdo_compare_count_m10
+  generic map (
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD,
+    RAM_MATCH_DIFF_COUNT_DEPTH => RAM_MATCH_DIFF_COUNT_DEPTH,
+    MAX_REGLEN_LD => MAX_REGLEN_LD 
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE3_D1_IN => jtag_sample_pulse3_d1,
+    CHIPNUM_IN => jtag_delayed_chipnum,
+    REGNUM_IN => jtag_delayed_regnum,
+    ENABLE_COUNTERS_IN => jtag_delayed_is_dr_bit,
+    IS_FIRSTBIT_IN => jtag_delayed_is_firstbit,
+    IS_LASTBIT_IN  => jtag_delayed_is_lastbit,
+    TDO_EXPECTED_IN => jtag_delayed_tdo_expected,
+    TDO_SAMPLED_IN  => jtag_tdo_sampled,
+    TDO_SAMPLING_ERROR_IN => jtag_tdo_sampling_error,
+    RAM_MATCH_DIFF_COUNT_A_OUT => jtag_tdo_compare_count_ram_a,
+    RAM_MATCH_DIFF_COUNT_WE_OUT => jtag_tdo_compare_count_ram_wr,
+    RAM_MATCH_DIFF_COUNT_D_OUT => jtag_tdo_compare_count_ram_din
+    --INTERNAL_ERROR_OUT => jtag_tdo_compare_count_internal_error
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);  
+ );       
+the_jtag_tdo_compare_counttotal_noram_m10 : jtag_tdo_compare_counttotal_noram_m10 
+  generic map (
+    numcounts => 3,
+    se_counter_width => COUNTER_WIDTHS, -- sampling error counter width
+    diff_counter_width => COUNTER_WIDTHS  --  counter width for number of runs in which there were differences 
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE3_D1_IN => jtag_sample_pulse3_d1,
+    ENABLE_COUNTERS_IN =>  jtag_delayed_is_dr_bit,
+    TDO_EXPECTED_IN => jtag_delayed_tdo_expected,
+    TDO_SAMPLED_IN  => jtag_tdo_sampled,
+    TDO_SAMPLING_ERROR_IN => jtag_tdo_sampling_error,
+    BEGIN_COUNT_I_IN(2) => begin_count_read_errors,
+    BEGIN_COUNT_I_IN(1) => begin_count_write_errors,
+    BEGIN_COUNT_I_IN(0) => begin_count_data_changed,
+    
+    END_COUNT_I_IN(2) =>  end_count_read_errors,
+    END_COUNT_I_IN(1) =>  end_count_write_errors,
+    END_COUNT_I_IN(0) =>  end_count_data_changed,
+    
+    SAMPLING_ERRORS_COUNT_OUT => SAMPLING_ERRORS_COUNT_OUT,
+    COUNTS_OUT(0*COUNTER_WIDTHS+COUNTER_WIDTHS-1 downto 0*COUNTER_WIDTHS) => sDATA_CHANGED_COUNT_OUT,
+    COUNTS_OUT(1*COUNTER_WIDTHS+COUNTER_WIDTHS-1 downto 1*COUNTER_WIDTHS) => sWRITE_ERRORS_COUNT_OUT,
+    COUNTS_OUT(2*COUNTER_WIDTHS+COUNTER_WIDTHS-1 downto 2*COUNTER_WIDTHS) => sREAD_ID_ERRORS_COUNT_OUT,
+    LAST_VALUES_OUT(2) => last_read_error,
+    LAST_VALUES_OUT(1) => last_write_error,
+    LAST_VALUES_OUT(0) => last_data_changed
+  ); 
+
+the_jtag_delay_expected_values: jtag_delay_expected_values
+  generic map (
+    ld_maxdelay => JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE1_IN => jtag_sample_pulse1,
+    CHIPNUM_IN => jtag_meta_chipnum,
+    REGNUM_IN => jtag_meta_regnum,
+    IS_DR_BIT_IN => jtag_meta_is_dr_bit,
+    IS_FIRSTBIT_IN => jtag_meta_is_firstbit, 
+    IS_LASTBIT_IN  => jtag_meta_is_lastbit,
+    TDO_EXPECTED_IN => jtag_meta_expected_tdo,
+    OUT_CHIPNUM_OUT => jtag_delayed_chipnum,
+    OUT_REGNUM_OUT => jtag_delayed_regnum,
+    OUT_IS_DR_BIT_OUT => jtag_delayed_is_dr_bit,
+    OUT_IS_FIRSTBIT_OUT  => jtag_delayed_is_firstbit,
+    OUT_IS_LASTBIT_OUT => jtag_delayed_is_lastbit,
+    OUT_TDO_EXPECTED_OUT => jtag_delayed_tdo_expected,
+    DELAY_IN => jtag_delay_expvalues
+);                                     
+                                     
+the_jtag_mux_buffer_tms_tdi_out_and_metainfo : jtag_mux_buffer_tms_tdi_out_and_metainfo 
+  generic map (
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_LD => MAX_REGISTERS_LD
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    JTAG_SET_DATA_IN => jtag_set_data_pulse,    
+    -- read DEV_ID inputs
+    RD_TMS_IN => jtag_read_tms,
+    RD_TDI_IN => jtag_read_tdi,
+    RD_IS_DR_BIT_IN => jtag_read_is_dr_bit,
+    RD_IS_FIRSTBIT_IN => jtag_read_is_firstbit,
+    RD_IS_LASTBIT_IN => jtag_read_is_lastbit,
+    RD_CHIPNUM_IN => jtag_read_chipnum,
+    RD_ENABLE_JTAG_CLOCK_IN => jtag_read_enable_jtag_clock,
+    RD_LAST_TCK_CYCLE_IN => jtag_read_last_tck_cycle,
+    RD_EXPECTED_TDO_OUT => jtag_read_expected_tdo,
+    -- write registers inputs
+    WR_TMS_IN => jtag_write_tms,
+    WR_TDI_IN => jtag_write_tdi,
+    WR_IS_DR_BIT_IN => jtag_write_is_dr_bit,
+    WR_IS_FIRSTBIT_IN => jtag_write_is_firstbit,
+    WR_IS_LASTBIT_IN => jtag_write_is_lastbit,
+    WR_CHIPNUM_IN => jtag_write_chipnum,
+    WR_REGNUM_IN => jtag_write_regnum,
+    WR_ENABLE_JTAG_CLOCK_IN => jtag_write_enable_jtag_clock,
+    WR_LAST_TCK_CYCLE_IN => jtag_write_last_tck_cycle,
+    WR_EXPECTED_TDO_OUT => jtag_write_expected_tdo,
+    -- test chain inputs
+    TC_TMS_IN => jtag_bypassreg_tms,
+    TC_TDI_IN => jtag_bypassreg_tdi,
+    TC_ENABLE_JTAG_CLOCK_IN => jtag_bypassreg_enable_jtag_clock,
+    TC_LAST_TCK_CYCLE_IN => jtag_bypassreg_last_tck_cycle,
+   
+    TMS_OUT => jtag_tms,
+    TDI_OUT => jtag_tdi,
+    IS_DR_BIT_OUT => jtag_meta_is_dr_bit,
+    IS_FIRSTBIT_OUT => jtag_meta_is_firstbit,
+    IS_LASTBIT_OUT => jtag_meta_is_lastbit,
+    CHIPNUM_OUT => jtag_meta_chipnum,
+    REGNUM_OUT => jtag_meta_regnum,
+    ENABLE_JTAG_CLOCK_OUT => jtag_enable_clock,
+    LAST_TCK_CYCLE_OUT => jtag_meta_last_tck_cycle,
+    EXPECTED_TDO_OUT => jtag_meta_expected_tdo
+  );
+                                     
+the_jtag_tdo_sampler : jtag_tdo_sample port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE1_IN  => jtag_sample_pulse1,
+    SAMPLE_PULSE2_IN  => jtag_sample_pulse2,
+    SAMPLE_PULSE3_IN  => jtag_sample_pulse3,
+    -- TDO signal, which is to be sampled 
+    TDO_IN => JTAG_TDO_IN,
+    -- sampled value of TDO
+    TDO_SAMPLED_OUT => jtag_tdo_sampled,
+    -- sampling error
+    SAMPLING_ERROR_OUT => jtag_tdo_sampling_error
+  );
+
+the_jtag_write_m10: jtag_write_m10 generic map (
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH,
+    MAX_NUMCHIPS => MAX_NUMCHIPS,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_NUMCHIPS_PLUS_ONE_LD => MAX_NUMCHIPS_PLUS_ONE_LD,
+    MAX_REGISTERS_LD => MAX_REGISTERS_LD,
+    MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD,
+    MAX_REGLEN_LD => MAX_REGLEN_LD,
+    MAX_REGLEN_PLUS_ONE_LD => MAX_REGLEN_PLUS_ONE_LD
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    RAM_JTAG_REGISTERS_A_OUT => jtag_write_ram1a_a,
+    RAM_JTAG_REGISTERS_D_IN => jtag_write_ram1a_d,
+    NEXT_NOT_REMOVED_IN => jtag_next_not_removed,
+    BEGIN_JTAGBITCALC_IN => begin_jtag_bitcalc,
+    TRIGGER_BEGIN_WRITE_IN => trigger_jtag_write,
+    IS_DR_BIT_OUT => jtag_write_is_dr_bit,
+    IS_FIRSTBIT_OUT => jtag_write_is_firstbit,
+    IS_LASTBIT_OUT => jtag_write_is_lastbit,
+    CHIPNUM_OUT => jtag_write_chipnum,
+    REGNUM_OUT => jtag_write_regnum,
+    ENABLE_JTAG_CLOCK_OUT => jtag_write_enable_jtag_clock,
+    LAST_TCK_CYCLE_OUT => jtag_write_last_tck_cycle,
+    TMS_OUT => jtag_write_tms,
+    TDI_OUT => jtag_write_tdi,
+    EXPECTED_TDO_OUT => jtag_write_expected_tdo,
+    IDLE_OUT => jtag_write_idle,
+    NUMREGS_CONFIGURED_OUT => jtag_write_numregs_configured,
+    LAST_ERROR_CODE_OUT => jtag_write_last_error_code
+    );
+    
+the_jtag_tck_out:    jtag_tck_out_component port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+       
+    JTAG_CLOCK_PULSE1_IN => jtag_clock_pulse1,
+    JTAG_CLOCK_PULSE2_IN => jtag_clock_pulse2,
+    ENABLE_JTAG_TCK_IN   => jtag_enable_clock,
+    
+    TCK_OUT => jtag_tck
+  );
+
+the_jtag_pulses : jtag_pulses  generic map (
+    time_bits => 10
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => jtag_pulses_reset_complete,
+    -- input times
+    JTAG_CLOCK_TIME1_IN => std_logic_vector(jtag_clock_time1),
+    JTAG_CLOCK_TIME2_IN => std_logic_vector(jtag_clock_time2),
+    JTAG_SAMPLE_TIME1_IN => std_logic_vector(jtag_sample_time1),
+    JTAG_SAMPLE_TIME2_IN => std_logic_vector(jtag_sample_time2),
+    JTAG_SAMPLE_TIME3_IN => std_logic_vector(jtag_sample_time3),
+    JTAG_SET_DATA_TIME_IN => std_logic_vector(jtag_set_data_time),
+    
+    JTAG_CLOCK_CYCLE_LENGTH_IN => std_logic_vector(jtag_clock_cycle_length),
+    
+    -- output pulses
+    BEGIN_JTAGBITCALC_OUT => begin_jtag_bitcalc,
+    JTAG_CLOCK_PULSE1_OUT => jtag_clock_pulse1,
+    JTAG_CLOCK_PULSE2_OUT => jtag_clock_pulse2,
+    JTAG_SAMPLE_PULSE1_OUT => jtag_sample_pulse1,
+    JTAG_SAMPLE_PULSE2_OUT => jtag_sample_pulse2,
+    JTAG_SAMPLE_PULSE3_OUT => jtag_sample_pulse3,
+    JTAG_SET_DATA_PULSE_OUT => jtag_set_data_pulse
+  );
+  
+the_jtag_check_crc_ram1a: jtag_check_crc_ram1a  
+  generic map (
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH,
+    MAX_NUMCHIPS => MAX_NUMCHIPS,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_NUMCHIPS_PLUS_ONE_LD => MAX_NUMCHIPS_PLUS_ONE_LD,
+    MAX_REGLEN_PLUS_ONE_LD => MAX_REGLEN_PLUS_ONE_LD,
+    MAX_REGISTERS_LD => MAX_REGISTERS_LD
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_CHECK_IN => trigger_check_crc_ram1a,
+    -- RAM1a
+    RAM1A_A_OUT => jtag_check_crc_ram1a_a,
+    RAM1A_D_IN => jtag_check_crc_ram1a_d,
+    NUMCHIPS_IN => std_logic_vector(numchips_configured),
+    CRC_OK_OUT => jtag_check_crc_ram1a_crc_ok,
+    IDLE_OUT => jtag_check_crc_ram1a_idle
+  );
+  
+
+--BUS_DATA_OUT <= bus_data_out_buffer;
+--BUS_DATAREADY_OUT    <= bus_dataready;
+--BUS_NO_MORE_DATA_OUT <= bus_no_more_data;
+--BUS_WRITE_ACK_OUT    <= bus_write_ack;
+--BUS_UNKNOWN_ADDR_OUT <= bus_unknown_addr;
+MY_STATUS_OUT        <= (others => '0'); --my_status;
+JTAG_TCK_OUT <= jtag_tck;
+JTAG_TMS_OUT <= jtag_tms;
+JTAG_TDI_OUT <= jtag_tdi;
+PROG_JTAG_FINISHED_OUT <= prog_jtag_finished;
+READ_ID_ERRORS_COUNT_OUT <= sREAD_ID_ERRORS_COUNT_OUT;
+WRITE_ERRORS_COUNT_OUT <= sWRITE_ERRORS_COUNT_OUT;
+DATA_CHANGED_COUNT_OUT <= sDATA_CHANGED_COUNT_OUT;
+
+
+jtag_pulses_reset_complete <= jtag_pulses_reset or RESET_IN;
+
+m26cs_stopped <= '1' when m26cs_state = M26CSS_STOPPED else '0';
+
+jtag_sample_pulse3_d1_next <= jtag_sample_pulse3;
+
+ram3b_a2 <= ram3b_a2_base_addr & ram3b_a2_rel_addr; -- hope this is the right order (base_addr should be the MSBs)
+
+SEQUENTIAL : process (CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      --bus_rw_state <= BUS_RW_STATE_IDLE;
+      --status_register <= (others => '0');
+      --status_register_read_error2 <= '0';
+      data_register <= x"00000000";
+      --cmd_register  <= x"00000000";
+      --bus_data_out_buffer <= x"00000000";
+      --bus_dataready <= '0';
+      --bus_no_more_data <= '0';
+      --bus_write_ack <= '0';
+      --bus_unknown_addr <= '0';
+      --length_register <= x"00000001";
+      jtag_refresh_active <= '0';
+      jtag_check1_active <= '0';
+      jtag_refresh_active_last <= '0';
+      --trigger_counter <= (others => '0');
+      idle_out_signal <= '0';
+      --status_register_pos <= (others => '0');
+      --status_register_read_running <= '0';
+      --ram_base_addr <= (others => '0');
+      crc_status_register <= (others => '0');
+      --write_trigger <= '0';
+      --write_idle_last <= '0';
+      --write_status_register_or <= (others => '0');
+      removed_chips <= (others => '0');
+      --reactivate_sensor <= (others => '0');
+      --reactivate_sensor_strobe <= (others => '0');
+      --deactivate_sensor <= (others => '0');
+      --deactivate_sensor_strobe <= (others => '0');
+      --disable_write <= '0';
+      --disable_writeerror_for_remove <= '0';
+      --disable_remove <= '0';
+      --debug_one_remove <= '0';
+      --debug_one_remove_strobe <= '0';
+      --removed_strobe <= '0';
+      --read_trigger <= '0';
+      numchips_configured <= (others => '0');
+      --my_status <= (others => '0');
+      --m26c_sensor_cand <= (others => '0');
+      chip_counter_start <= '0';
+      --m26c_firstrun <= '0';
+      --m26c_secondrun <= '0';
+      --mux_sel <= '0';
+      --driver_speed <= x"0005";
+      --already_written <= '0';
+      --read_idle_last <= '0';
+      --write_error_counter <= (others => (others => '0'));
+      --write_error_over_threshold_counter <= (others => (others => '0'));
+      --write_data_changed_counter <= (others => (others => '0'));
+      --read_error_counter <= (others => (others => '0'));
+      --read_error_over_threshold_counter <= (others => (others => '0'));
+      debug_test <= (others =>'0');
+      debug_m26cs_state <= (others => '0');
+      bus2_ram_data_in <=  (others => '0');
+      bus2_ram_dataready_in <= '0';
+      bus2_ram_write_ack_in <= '0';
+      bus2_ram_no_more_data_in <= '0';
+      bus2_ram_unknown_addr_in <= '0';
+      buf_bus2_ram_read_enable_out <= '0';
+      buf_buf_bus2_ram_read_enable_out <= '0';
+      bus2_status_data_in <= (others =>'0');
+      bus2_status_dataready_in <= '0';
+      bus2_status_write_ack_in <= '0';
+      bus2_status_no_more_data_in <= '0';
+      bus2_status_unknown_addr_in <= '0';
+      bus2_control_data_in <= (others =>'0');
+      bus2_control_dataready_in <= '0';
+      bus2_control_write_ack_in <= '0';
+      bus2_control_no_more_data_in <= '0';
+      bus2_control_unknown_addr_in <= '0';
+      bus2_debug_data_in <= (others =>'0');
+      bus2_debug_dataready_in <= '0';
+      bus2_debug_write_ack_in <= '0';
+      bus2_debug_no_more_data_in <= '0';
+      bus2_debug_unknown_addr_in <= '0';
+      bus2_status2_data_in <= (others =>'0');
+      bus2_status2_dataready_in <= '0';
+      bus2_status2_write_ack_in <= '0';
+      bus2_status2_no_more_data_in <= '0';
+      bus2_status2_unknown_addr_in <= '0';
+      bus2_status2_read_ram3b <= '0';
+      buf_bus2_status2_read_ram3b <= '0';
+      prog_jtag_finished <= '0';
+      --last_write_successful <= '0';    
+      -- NEW SIGNALS
+      ram1a_a1_base_addr <=  (others =>'0');
+      ram1a_a1_rel_addr <=  (others =>'0');
+      ram1a_din1 <=  (others =>'0');
+      ram1a_wr1 <=  '0';
+      jtag_status2_copy_requested <= '0';
+      jtag_status2_copy_request_strobe <= '0';
+      cps2_state <= CPS2_IDLE;
+      status2_run_counter <= (others =>'0');
+      status2_chain_status <= (others =>'0');
+      jtag_clock_cycle_length <= (others =>'0');
+      jtag_clock_time1 <= (others =>'0');
+      jtag_clock_time2 <= (others =>'0');
+      jtag_sample_time1 <= (others =>'0');
+      jtag_sample_time2 <= (others =>'0');
+      jtag_sample_time3 <= (others =>'0');
+      jtag_set_data_time <= (others => '0');
+      jtag_pulses_reset <= '0';
+      jtag_sample_pulse3_d1 <= '0';
+      breakpoint_active <= (others => '0');
+      ram1b_a2 <=  (others => '0');
+      ram3b_a2_rel_addr <= (others => '0');
+      ram3b_a2_base_addr <= (others => '0');
+      
+      ram1b_copy_requested <= '0';
+      ram1c_run_counter <= (others => '0');
+      ram1c_chain_status <= (others => '0');
+      cpr1bc_state <= CPR1BC_IDLE;
+      trigger_copy_ram1b1c <= '0';
+      ram1b1c_copy_trigger_active <= (others => '0');
+      ram1c_a2 <= (others => '0');
+      ram1b1c_copy_trigger_strobe <= (others => '0');
+
+      m26csoptions <= (others => '0');
+      jtag_delay_expvalues <=  (others => '0');
+      
+      crc_error_on_last_check <= '0';
+      last_run_successful <= '0';
+      last_run_successful_tmp <= '0';
+    else
+      --bus_rw_state <= bus_rw_state_next;
+      --status_register <= status_register_next;
+      --status_register_read_error2 <= status_register_read_error2_next;
+      data_register <= data_register_next;
+      --cmd_register  <= cmd_register_next;
+      --bus_data_out_buffer <= bus_data_out_buffer_next;
+      --bus_dataready <= bus_dataready_next;
+      --bus_no_more_data <= bus_no_more_data_next;
+      --bus_write_ack <= bus_write_ack_next;
+      --bus_unknown_addr <= bus_unknown_addr_next;
+      --length_register <= length_register_next;
+      jtag_refresh_active <= jtag_refresh_active_next;
+      jtag_check1_active <= jtag_check1_active_next;
+      jtag_refresh_active_last <= jtag_refresh_active_last_next;
+      --trigger_counter <= trigger_counter_next;
+      idle_out_signal <= idle_out_signal_next;
+      --status_register_pos <= status_register_pos_next;
+      --status_register_read_running <= status_register_read_running_next;
+      --ram_base_addr <= ram_base_addr_next;
+      crc_status_register <= crc_status_register_next;
+      --write_trigger <= write_trigger_next;
+      --write_idle_last <=  write_idle_last_next;
+      --write_status_register_or <= write_status_register_or_next;
+      removed_chips <= removed_chips_next;
+      --reactivate_sensor <= reactivate_sensor_next;
+      --reactivate_sensor_strobe <= reactivate_sensor_strobe_next;
+      --deactivate_sensor <= deactivate_sensor_next;
+      --deactivate_sensor_strobe <= deactivate_sensor_strobe_next;
+      --disable_write <= disable_write_next;
+      --disable_writeerror_for_remove <= disable_writeerror_for_remove_next;
+      --disable_remove <=  disable_remove_next;
+      --debug_one_remove <= debug_one_remove_next;
+      --debug_one_remove_strobe <= debug_one_remove_strobe_next;
+      --removed_strobe <= removed_strobe_next;
+      --read_trigger <= read_trigger_next;
+      numchips_configured <= numchips_configured_next;
+      --my_status <= my_status_next;
+      --m26c_sensor_cand <= m26c_sensor_cand_next;
+      chip_counter_start <= chip_counter_start_next;
+      --m26c_firstrun <= m26c_firstrun_next;
+      --m26c_secondrun <= m26c_secondrun_next;
+      --mux_sel <= mux_sel_next;
+      --driver_speed <= driver_speed_next;
+      --already_written <= already_written_next;
+      --read_idle_last <= read_idle_last_next;
+      --write_error_counter <= write_error_counter_next;
+      --write_error_over_threshold_counter <= write_error_over_threshold_counter_next;
+      --write_data_changed_counter <= write_data_changed_counter_next;
+      --read_error_counter <= read_error_counter_next;
+      --read_error_over_threshold_counter <= read_error_over_threshold_counter_next;
+      --m26c_state <= m26c_state_next;
+      debug_test <= debug_test_next;
+      debug_m26cs_state <= debug_m26cs_state_next;
+      bus2_ram_data_in <=  bus2_ram_data_in_next;
+      bus2_ram_dataready_in <= bus2_ram_dataready_in_next;
+      bus2_ram_write_ack_in <= bus2_ram_write_ack_in_next;
+      bus2_ram_no_more_data_in <= bus2_ram_no_more_data_in_next;
+      bus2_ram_unknown_addr_in <= bus2_ram_unknown_addr_in_next;
+      buf_bus2_ram_read_enable_out <= buf_bus2_ram_read_enable_out_next;
+      buf_buf_bus2_ram_read_enable_out <= buf_buf_bus2_ram_read_enable_out_next;
+      bus2_status_data_in <=  bus2_status_data_in_next;
+      bus2_status_dataready_in <= bus2_status_dataready_in_next;
+      bus2_status_write_ack_in <= bus2_status_write_ack_in_next;
+      bus2_status_no_more_data_in <= bus2_status_no_more_data_in_next;
+      bus2_status_unknown_addr_in <= bus2_status_unknown_addr_in_next;
+      bus2_control_data_in <=  bus2_control_data_in_next;
+      bus2_control_dataready_in <= bus2_control_dataready_in_next;
+      bus2_control_write_ack_in <= bus2_control_write_ack_in_next;
+      bus2_control_no_more_data_in <= bus2_control_no_more_data_in_next;
+      bus2_control_unknown_addr_in <= bus2_control_unknown_addr_in_next;
+      bus2_debug_data_in <=  bus2_debug_data_in_next;
+      bus2_debug_dataready_in <= bus2_debug_dataready_in_next;
+      bus2_debug_write_ack_in <= bus2_debug_write_ack_in_next;
+      bus2_debug_no_more_data_in <= bus2_debug_no_more_data_in_next;
+      bus2_debug_unknown_addr_in <= bus2_debug_unknown_addr_in_next;            
+      bus2_status2_data_in <= bus2_status2_data_in_next;
+      bus2_status2_dataready_in <= bus2_status2_dataready_in_next;
+      bus2_status2_write_ack_in <= bus2_status2_write_ack_in_next;
+      bus2_status2_no_more_data_in <= bus2_status2_no_more_data_in_next;
+      bus2_status2_unknown_addr_in <= bus2_status2_unknown_addr_in_next;
+      bus2_status2_read_ram3b <= bus2_status2_read_ram3b_next;
+      buf_bus2_status2_read_ram3b <= buf_bus2_status2_read_ram3b_next;
+      prog_jtag_finished <= prog_jtag_finished_next;
+      --last_write_successful <=  last_write_successful_next;      
+      -- NEW SIGNALS
+      ram1a_a1_base_addr <= ram1a_a1_base_addr_next;
+      ram1a_a1_rel_addr <= ram1a_a1_rel_addr_next;
+      ram1a_din1 <=  ram1a_din1_next;
+      ram1a_wr1 <= ram1a_wr1_next;
+      jtag_status2_copy_requested <=  jtag_status2_copy_requested_next;
+      jtag_status2_copy_request_strobe <= jtag_status2_copy_request_strobe_next;
+      cps2_state <= cps2_state_next;
+      status2_run_counter <= status2_run_counter_next;
+      status2_chain_status <= status2_chain_status_next;
+      jtag_clock_cycle_length <= jtag_clock_cycle_length_next;
+      jtag_clock_time1 <= jtag_clock_time1_next;
+      jtag_clock_time2 <= jtag_clock_time2_next ;
+      jtag_sample_time1 <= jtag_sample_time1_next;
+      jtag_sample_time2 <= jtag_sample_time2_next;
+      jtag_sample_time3 <= jtag_sample_time3_next;
+      jtag_set_data_time <= jtag_set_data_time_next;
+      jtag_pulses_reset <= jtag_pulses_reset_next;
+      jtag_sample_pulse3_d1 <= jtag_sample_pulse3_d1_next;
+      breakpoint_active <= breakpoint_active_next;
+      ram1b_a2 <= ram1b_a2_next;
+      ram3b_a2_rel_addr <= ram3b_a2_rel_addr_next;
+      ram3b_a2_base_addr <= ram3b_a2_base_addr_next;
+
+      ram1b_copy_requested <= ram1b_copy_requested_next;
+      ram1c_run_counter <= ram1c_run_counter_next;
+      ram1c_chain_status <= ram1c_chain_status_next;
+      cpr1bc_state <= cpr1bc_state_next;
+      trigger_copy_ram1b1c <= trigger_copy_ram1b1c_next;
+      ram1b1c_copy_trigger_active <= ram1b1c_copy_trigger_active_next;
+      ram1c_a2 <= ram1c_a2_next;
+      ram1b1c_copy_trigger_strobe <= ram1b1c_copy_trigger_strobe_next;
+
+      m26csoptions <= m26csoptions_next;
+      jtag_delay_expvalues <=  jtag_delay_expvalues_next;
+      crc_error_on_last_check <= crc_error_on_last_check_next;
+      last_run_successful <= last_run_successful_next;
+      last_run_successful_tmp <= last_run_successful_tmp_next;
+    end if;
+  end if;
+end process;
+
+
+SYNCHRONOUS_CHIP_COUNTER : process (CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      cc_state <= CC_IDLE;
+      numchips_active <= (others =>'0');
+      numchips_active_acc <= (others =>'0');
+      cc_chip_i <= (others =>'0');
+      cc_nextnotremoved_i <= (others =>'0');
+      last_not_removed <= (others =>'0');
+      first_not_removed <= (others =>'0');
+      jtag_next_not_removed <= (others =>'0');
+    else
+      cc_state <= cc_state_next;
+      numchips_active <= numchips_active_next;
+      numchips_active_acc <= numchips_active_acc_next;
+      cc_chip_i <= cc_chip_i_next;
+      cc_nextnotremoved_i <= cc_nextnotremoved_i_next;
+      last_not_removed <= last_not_removed_next;
+      first_not_removed <= first_not_removed_next;
+      jtag_next_not_removed <= jtag_next_not_removed_next;      
+    end if;
+  end if;
+end process;
+
+COMB_CHIP_COUNTER : process (cc_state, removed_chips, chip_counter_start, numchips_configured, cc_chip_i, cc_nextnotremoved_i, numchips_active, numchips_active_acc, last_not_removed, first_not_removed, jtag_next_not_removed)
+begin
+  cc_state_next <= cc_state;
+  numchips_active_next <= numchips_active;
+  numchips_active_acc_next <= numchips_active_acc;
+  -- index, running through chips 
+  cc_chip_i_next <= cc_chip_i;
+  -- index, last not removed sensor 
+  cc_nextnotremoved_i_next <= cc_nextnotremoved_i;
+  last_not_removed_next <= last_not_removed;
+  first_not_removed_next <= first_not_removed;
+  
+  jtag_next_not_removed_next <= jtag_next_not_removed;
+  case cc_state is
+    when CC_IDLE =>
+      if(chip_counter_start = '1') then
+          -- determine number of chips connected in serial to jtag chain
+        cc_chip_i_next <= (others => '0');
+        cc_nextnotremoved_i_next <= (others => '0'); --position in jtag_next_not_removed, 
+        -- with the following initialization no chip will be unremoved, because
+        -- last_not_removed < first_not_removed
+        -- and numchips_active will be set to 0 if really all chips are removed
+        first_not_removed_next <= (others => '1');
+        last_not_removed_next <= (others =>'0');
+        jtag_next_not_removed_next <= (others =>'0'); 
+        numchips_active_acc_next <= (others => '0');
+        cc_state_next <= CC_COUNT_SENSOR;
+      end if;
+    when CC_COUNT_SENSOR =>
+      if(removed_chips(to_integer(cc_chip_i)) = '0') then
+        numchips_active_acc_next <= numchips_active_acc + 1;
+        last_not_removed_next <= cc_chip_i;
+        -- if first_not_removed unset
+        if(std_logic_vector_all_components_equal_scalar(std_logic_vector(first_not_removed), '1') = '1') then
+          first_not_removed_next <= cc_chip_i;
+        end if;
+        cc_nextnotremoved_i_next <= cc_chip_i + 1; -- next not removed chip after chip i is stored at location (i+1) in jtag_next_not_removed
+        jtag_next_not_removed_next(to_integer(cc_nextnotremoved_i)*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto to_integer(cc_nextnotremoved_i)*MAX_NUMCHIPS_PLUS_ONE_LD) <=
+            std_logic_vector(cc_chip_i);
+      end if;
+      if(cc_chip_i = numchips_configured - 1) then
+        cc_state_next <= CC_SETNUMCHIPS; -- finished counting active chips
+      else
+        cc_chip_i_next <= cc_chip_i + 1;
+      end if;
+    when CC_SETNUMCHIPS =>
+      jtag_next_not_removed_next((to_integer(cc_nextnotremoved_i))*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto (to_integer(cc_nextnotremoved_i))*MAX_NUMCHIPS_PLUS_ONE_LD) <= (others => '1'); -- set next chip for last chip to invalid    
+      numchips_active_next <= numchips_active_acc;
+      cc_state_next <= CC_IDLE;
+  end case;
+end process;
+
+
+-- delay one clock cycle
+jtag_refresh_active_last_next <= jtag_refresh_active;
+
+
+-- monitoring
+--MON_FIFO_WRITE_OUT(0) <= read_mon_write_out;
+--MON_FIFO_WRITE_OUT(1) <= read_mon_write_out;
+--MON_FIFO_WRITE_OUT(2) <= read_mon_write_out;
+-- monitoring debug test
+--MON_FIFO_DATA_OUT(79 downto 64) <= JTAG_M26_DEV_ID(15 downto 0);
+--MON_FIFO_DATA_OUT(111 downto 96) <= JTAG_M26_DEV_ID(31 downto 16);
+--MON_FIFO_WRITE_OUT(2) <= '1';
+--MON_FIFO_WRITE_OUT(3) <= '1';
+
+SYNCHRONOUS_M26_CONTROLLER_SIMPLE : process (CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      m26cs_state <= M26CSS_STOPPED;
+      trigger_begin_bypassreg <= '0';
+      trigger_jtag_read <=  '0';
+      trigger_jtag_write <=  '0';
+      trigger_copy_ram3 <= '0';
+      trigger_juec_update_d_ch <= '0';
+      trigger_juec_update_rd_err <= '0';
+      trigger_juec_update_wr_err <= '0';
+      trigger_juec_update_run_counter <= '0';
+      trigger_check_crc_ram1a <= '0';
+      trigger_init_ram1b <= '0';
+      trigger_blank_ram3a <= '0';
+      run_counter <=  (others =>'0');
+      m26cs_firstrun <= '0';
+      jtag_chain_broken_counter <= (others =>'0');
+      ram1a_select <=  (others =>'0');
+      ram1b_select <=  '0';
+      ram2_select <=   '0';
+      ram3a_select <= '0';
+      ram3a_rd_select <= '0';
+      chain_status <= (others =>'0');
+      request_reset <= '0';
+      reset_wait <= (others =>'0');
+      run_requested <= '0';
+      write_once_requested <= '0';
+      write_once_count <= (others =>'0');
+      -- INSERTLABEL: SYNCHRONOUS reset
+    else
+      m26cs_state <= m26cs_state_next;
+      trigger_begin_bypassreg <= trigger_begin_bypassreg_next;
+      trigger_jtag_read <= trigger_jtag_read_next;
+      trigger_jtag_write <= trigger_jtag_write_next;
+      trigger_copy_ram3 <= trigger_copy_ram3_next;
+      trigger_juec_update_d_ch <= trigger_juec_update_d_ch_next;
+      trigger_juec_update_rd_err <= trigger_juec_update_rd_err_next;
+      trigger_juec_update_wr_err <= trigger_juec_update_wr_err_next;
+      trigger_juec_update_run_counter <= trigger_juec_update_run_counter_next;
+      trigger_check_crc_ram1a <= trigger_check_crc_ram1a_next;
+      trigger_init_ram1b <= trigger_init_ram1b_next;
+      trigger_blank_ram3a <= trigger_blank_ram3a_next;
+      run_counter <= run_counter_next;
+      m26cs_firstrun <= m26cs_firstrun_next;
+      jtag_chain_broken_counter <= jtag_chain_broken_counter_next;
+      ram1a_select <= ram1a_select_next;
+      ram1b_select <= ram1b_select_next;
+      ram2_select <= ram2_select_next;
+      ram3a_select <= ram3a_select_next;
+      ram3a_rd_select <= ram3a_rd_select_next;
+      chain_status <= chain_status_next;
+      request_reset <= request_reset_next;
+      reset_wait <= reset_wait_next;
+      run_requested <= run_requested_next;
+      write_once_requested <= write_once_requested_next;
+      write_once_count <= write_once_count_next;
+      -- INSERTLABEL:  SYNCHRONOUS update      
+    end if;
+  end if;
+end process;
+
+COMB_M26_CONTROLLER_SIMPLE : process (RUN_REQUEST_IN, WRITE_ONCE_REQUEST_IN, m26cs_state, jtag_bypassreg_last_tck_cycle, jtag_bypassreg_idle, jtag_read_idle, jtag_write_last_tck_cycle, jtag_write_idle, juec_idle, cc_state, breakpoint_active, run_counter, m26cs_firstrun, jtag_status2_copy_requested, jtag_check1_active, jtag_refresh_active, jtag_chain_broken_counter, prog_jtag_finished, ram1a_select, jtag_check_crc_ram1a_idle, jtag_check_crc_ram1a_crc_ok, numchips_configured, ram1a_select, ram1b_select, ram2_select, ram3a_select, ram3a_rd_select, chain_status, jtag_init_ram1b_idle, jtag_bypassreg_chain_broken, jtag_bypassreg_length, crc_status_register, jtag_blank_ram3a_idle, ram1b_copy_requested, jtag_refresh_active_last, m26csoptions, crc_error_on_last_check, last_run_successful, last_run_successful_tmp, last_read_error, last_write_error, request_reset, reset_wait, run_requested, write_once_requested, write_once_count) -- INSERTLABEL:  sensitivity list --jtag_read_last_tck_cycle, 
+variable output : std_logic;
+variable i : integer;
+begin
+  m26cs_state_next <= m26cs_state;
+  trigger_begin_bypassreg_next <= '0';
+  trigger_jtag_read_next <= '0';
+  trigger_jtag_write_next <= '0';
+  trigger_juec_update_d_ch_next <= '0';
+  trigger_juec_update_rd_err_next <= '0';
+  trigger_juec_update_wr_err_next <= '0';
+  trigger_juec_update_run_counter_next <= '0';
+  trigger_check_crc_ram1a_next <= '0';
+  trigger_init_ram1b_next <= '0';
+  trigger_blank_ram3a_next <= '0';
+  run_counter_next <= run_counter;
+  m26cs_firstrun_next <= m26cs_firstrun;
+  idle_out_signal_next <= '0';
+  jtag_chain_broken_counter_next <= jtag_chain_broken_counter;
+  chip_counter_start_next <= '0';
+  prog_jtag_finished_next <= prog_jtag_finished;
+  chain_status_next <= chain_status;
+  crc_status_register_next <= crc_status_register;
+  
+  -- ram multiplexers
+  ram1a_select_next <= ram1a_select;
+  ram1b_select_next <= ram1b_select;
+  ram2_select_next <= ram2_select;
+  ram3a_select_next <= ram3a_select;
+  ram3a_rd_select_next <= ram3a_rd_select;
+  
+  crc_error_on_last_check_next <= crc_error_on_last_check;
+  last_run_successful_next <= last_run_successful;
+  last_run_successful_tmp_next <= last_run_successful_tmp;  
+  begin_count_read_errors <= '0'; -- added 201210
+  begin_count_write_errors <= '0'; -- added 201210
+  begin_count_data_changed <= '0'; -- added 201210
+  end_count_read_errors <= '0'; -- added 201210
+  end_count_write_errors <= '0'; -- added 201210
+  end_count_data_changed <= '0'; -- added 201210
+  request_reset_next <= request_reset;
+  reset_wait_next <= reset_wait;
+  run_requested_next <= run_requested;
+  write_once_requested_next <= write_once_requested;
+  write_once_count_next <= write_once_count;
+  -- INSERTLABEL:  COMB defaults 
+
+  
+
+  case m26cs_state is
+    when M26CSS_STOPPED =>
+      -- if stopped, start again if jtag_refresh_active is set
+      if(jtag_check1_active = '1' and  jtag_status2_copy_requested = '0' and ram1b_copy_requested = '0') then
+        m26cs_state_next <= M26CSS_CHECK1_WAIT_FOR_HAVE_TIME;
+      elsif(jtag_refresh_active = '1' and  jtag_status2_copy_requested = '0' and ram1b_copy_requested = '0') then
+        m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+        -- if just started, reset all counters
+        if(jtag_refresh_active_last = '0') then
+          m26cs_firstrun_next <= '1';
+        end if;
+      end if;
+    when M26CSS_CHECK1_WAIT_FOR_HAVE_TIME =>
+      --if(have_time_for_check) then
+        m26cs_state_next <= M26CSS_COUNT_CHIPS_BEGIN;
+      --end if;
+      
+    when M26CSS_WAIT_FOR_TRIGGER =>
+      idle_out_signal_next <= '1';
+      last_run_successful_next <= last_run_successful_tmp;
+      -- if not stopped, test if we should stop
+      if(jtag_refresh_active = '0' or jtag_status2_copy_requested = '1' or ram1b_copy_requested = '1') then
+        ram3a_rd_select_next <= '0'; -- select jtag_copy_ram3_ram3a
+        m26cs_state_next <= M26CSS_STOPPED;
+      else
+        -- if we should not stop, check for off_spill and if we have time for writing
+        if(run_requested = '1') then
+          -- increment run counter (exclusively done here)
+          run_counter_next <= run_counter + 1;
+          prog_jtag_finished_next <= '0';
+          trigger_check_crc_ram1a_next <= '1';
+          ram1a_select_next <= "11"; -- select check_crc_ram1a
+          if(m26cs_firstrun = '1') then
+            trigger_blank_ram3a_next <= '1';
+            ram3a_select_next <= '1'; -- blank_ram3a (at same time)
+          end if;
+          last_run_successful_tmp_next <= '0';
+          m26cs_state_next <= M26CSS_CHECK_CRC_RAM1A_BEGIN;
+        elsif(write_once_requested = '1') then
+          trigger_check_crc_ram1a_next <= '1';
+          ram1a_select_next <= "11"; -- select check_crc_ram1a
+          m26cs_state_next <= M26CSS_WRITEONCE_CHECK_CRC_RAM1A_BEGIN;
+        end if;
+      end if;
+    when M26CSS_CHECK_CRC_RAM1A_BEGIN =>
+      m26cs_state_next <= M26CSS_CHECK_CRC_RAM1A_WAIT;
+    when M26CSS_CHECK_CRC_RAM1A_WAIT =>
+      if(jtag_check_crc_ram1a_idle = '1') then
+        crc_status_register_next <= jtag_check_crc_ram1a_crc_ok;
+        output := '1';
+        for i in MAX_NUMCHIPS-1 downto 0 loop
+          if(jtag_check_crc_ram1a_crc_ok(i) /= '1' and i < to_integer(numchips_configured)) then
+            output := '0';
+          end if;
+        end loop;        
+        --if(std_logic_vector_all_components_equal_scalar(jtag_check_crc_ram1a_crc_ok(to_integer(numchips_configured)-1 downto 0), '1') = '1') then
+        if(output = '1') then
+          -- if no crc errors for configured chips (consider changing this to checking the whole vector, and also let zeros be ok for crc check)
+            crc_error_on_last_check_next <= '0';
+            trigger_init_ram1b_next <= '1';
+            ram1b_select_next <= '0'; -- select init ram1b
+            ram1a_select_next <= "10"; -- select init ram1b
+            m26cs_state_next <= M26CSS_INIT_RAM1B_BEGIN;          
+        else
+          -- crc error in configured chips, don't continue
+          crc_error_on_last_check_next <= '1';
+          -- clear requests
+          run_requested_next <= '0';
+          write_once_requested_next <= '0';          
+          m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+        end if;
+      end if;
+    when M26CSS_INIT_RAM1B_BEGIN =>
+      m26cs_state_next <= M26CSS_INIT_RAM1B_WAIT;
+    when M26CSS_INIT_RAM1B_WAIT =>
+      if(jtag_init_ram1b_idle = '1') then
+        if(m26cs_firstrun = '1') then
+          -- skip data changed
+          chip_counter_start_next <= '1';
+          m26cs_state_next <= M26CSS_COUNT_CHIPS_BEGIN;
+        else
+          trigger_jtag_write_next <= '1';
+          ram1a_select_next <= "01"; -- select jtag_write_ram1a_a
+          ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+          ram2_select_next <= '0'; -- tdo_compare_count
+          begin_count_data_changed <= '1';-- added 201210
+          m26cs_state_next <= M26CSS_DATA_CHANGED_BEGIN;
+        end if;
+      end if;
+    when M26CSS_DATA_CHANGED_BEGIN =>
+      m26cs_state_next <= M26CSS_DATA_CHANGED_WAIT;
+    when M26CSS_DATA_CHANGED_WAIT =>
+      if(jtag_write_last_tck_cycle = '1' or jtag_write_idle = '1') then
+        end_count_data_changed <= '1'; -- added 201210
+        m26cs_state_next <= M26CSS_BLANK_RAM3A_WAIT;
+      end if;    
+    when M26CSS_BLANK_RAM3A_WAIT =>
+      if(jtag_blank_ram3a_idle = '1') then
+        if(breakpoint_active(0) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          trigger_juec_update_d_ch_next <= '1';
+          ram2_select_next <= '1'; -- juec
+          ram3a_select_next <= '0'; -- juec
+          m26cs_state_next <= M26CSS_JUEC_DATA_CHANGED_BEGIN;
+        end if;
+      end if;
+    when M26CSS_JUEC_DATA_CHANGED_BEGIN =>
+      m26cs_state_next <= M26CSS_JUEC_DATA_CHANGED_WAIT;
+    when M26CSS_JUEC_DATA_CHANGED_WAIT =>
+      if(juec_idle = '1') then
+        if(breakpoint_active(1) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          chip_counter_start_next <= '1';
+          m26cs_state_next <= M26CSS_COUNT_CHIPS_BEGIN;
+        end if;
+      end if;
+    
+    when M26CSS_COUNT_CHIPS_BEGIN =>
+      m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+    when M26CSS_COUNT_CHIPS_WAIT =>
+      if(cc_state = CC_IDLE) then
+        if(breakpoint_active(2) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+--       if(m26csoptions(0) = '1') then        
+            -- skip BYPASSREG CHAIN TEST
+           -- and set CHAIN status to BROKEN
+           chain_status_next(0) <= '1';
+           chain_status_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 3) <= (others => '0');
+             -- next state:
+            ram2_select_next <= '0'; -- tdo_compare_count
+            ram1a_select_next <= "00"; -- select jtag_read_ram1a_a
+            ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+            trigger_jtag_read_next <= '1';-- temporarily go on (for testing without mimosa26 emulator)
+            begin_count_read_errors <= '1'; -- added 201210
+            m26cs_state_next <= M26CSS_READ1_BEGIN; -- temporarily go on (for testing without mimosa26 emulator)
+--           else
+--             trigger_begin_bypassreg_next <= '1';
+--             m26cs_state_next <= M26CSS_BYPASSREG_BEGIN;
+--       end if;
+        end if;
+      end if;
+    when M26CSS_BYPASSREG_BEGIN =>      
+      m26cs_state_next <= M26CSS_BYPASSREG_WAIT;
+    when M26CSS_BYPASSREG_WAIT =>
+      if(jtag_bypassreg_last_tck_cycle = '1' or jtag_bypassreg_idle = '1') then
+        if(breakpoint_active(3) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          chain_status_next(0) <= jtag_bypassreg_chain_broken; -- chain broken
+          if(unsigned(jtag_bypassreg_length) < 2**MAX_NUMCHIPS_PLUS_ONE_LD) then
+            chain_status_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 3) <= jtag_bypassreg_length(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0); -- chain length
+          else
+            chain_status_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 3) <= (others => '0'); -- chain length: set to zero because to long chain found
+          end if;
+          if(jtag_bypassreg_chain_broken = '1') then
+            jtag_chain_broken_counter_next <= jtag_chain_broken_counter + 1;
+            
+            --m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+            ram2_select_next <= '0'; -- tdo_compare_count
+            ram1a_select_next <= "00"; -- select jtag_read_ram1a_a
+            ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+            trigger_jtag_read_next <= '1';-- temporarily go on (for testing without mimosa26 emulator)
+            begin_count_read_errors <= '1'; -- added 201210
+            m26cs_state_next <= M26CSS_READ1_BEGIN; -- temporarily go on (for testing without mimosa26 emulator)
+          else
+            ram2_select_next <= '0'; -- tdo_compare_count
+            ram1a_select_next <= "00"; -- select jtag_read_ram1a_a
+            ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+            trigger_jtag_read_next <= '1';
+            begin_count_read_errors <= '1'; -- added 201210
+            m26cs_state_next <= M26CSS_READ1_BEGIN;
+          end if;
+        end if;
+      end if;
+    when M26CSS_READ1_BEGIN =>
+      m26cs_state_next <= M26CSS_READ1_WAIT;
+    when M26CSS_READ1_WAIT =>
+      if(jtag_read_idle = '1') then -- removed (jtag_read_last_tck_cycle = '1' or ) because writing to RAM needs time
+        end_count_read_errors <= '1'; -- added 201210
+        if(breakpoint_active(4) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          trigger_juec_update_rd_err_next <= '1';
+          ram2_select_next <= '1'; -- juec
+          ram3a_select_next <= '0'; -- juec
+          m26cs_state_next <= M26CSS_JUEC_READ_BEGIN;
+        end if;
+      end if;
+    when M26CSS_JUEC_READ_BEGIN =>
+      m26cs_state_next <= M26CSS_JUEC_READ_WAIT;
+    when M26CSS_JUEC_READ_WAIT =>
+      if(juec_idle = '1') then
+        if(breakpoint_active(5) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        elsif(jtag_check1_active = '1') then
+          -- in case of check1 set, don't write registers
+          -- in order to save time
+          -- clear requests
+          run_requested_next <= '0';
+          write_once_requested_next <= '0';          
+          m26cs_state_next <= M26CSS_STOPPED;
+        else
+          -- do the following later!
+          --trigger_jtag_write_next <= '1';
+          --ram1a_select_next <= "01"; -- select jtag_write_ram1a_a
+          --ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+          --ram2_select_next <= '0'; -- tdo_compare_count
+          m26cs_state_next <= M26CSS_REQUEST_RESET_BEGIN;
+        end if;
+      end if;
+    when M26CSS_REQUEST_RESET_BEGIN =>
+      request_reset_next <= '1';
+      m26cs_state_next <= M26CSS_REQUEST_RESET_WAIT;
+    when M26CSS_REQUEST_RESET_WAIT =>
+      reset_wait_next <= RESET_WAIT_DURATION;
+      m26cs_state_next <= M26CSS_REQUESTED_RESET_WAIT;
+    when M26CSS_REQUESTED_RESET_WAIT =>
+      reset_wait_next <= reset_wait - 1;
+      request_reset_next <= '0';
+      if(reset_wait = reset_wait_zero) then
+        trigger_jtag_write_next <= '1';
+        ram1a_select_next <= "01"; -- select jtag_write_ram1a_a
+        if(ram1b_copy_requested = '0') then -- this is a hack, to only change ram1b if not yet data changed triggered copy request
+          ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+        else
+          ram1b_select_next <= '0';
+        end if;
+        ram2_select_next <= '0'; -- tdo_compare_count      
+        m26cs_state_next <= M26CSS_WRITE1_BEGIN;
+      end if;
+    when M26CSS_WRITE1_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITE1_WAIT;
+    when M26CSS_WRITE1_WAIT =>
+      if(jtag_write_idle = '1') then
+        if(breakpoint_active(6) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          trigger_jtag_write_next <= '1';
+          begin_count_write_errors <= '1'; -- added 201210
+          m26cs_state_next <= M26CSS_WRITE2_BEGIN;
+        end if;
+      end if;
+    when M26CSS_WRITE2_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITE2_WAIT;
+    when M26CSS_WRITE2_WAIT =>
+      if(jtag_write_idle = '1') then
+        end_count_write_errors <= '1'; -- added 201210
+        if(breakpoint_active(7) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          prog_jtag_finished_next <= '1';
+          trigger_juec_update_wr_err_next <= '1';
+          ram2_select_next <= '1'; -- juec
+          ram3a_select_next <= '0'; -- juec
+          m26cs_state_next <= M26CSS_JUEC_WRITE_BEGIN;
+        end if;
+      end if;
+    when M26CSS_JUEC_WRITE_BEGIN =>
+      m26cs_state_next <= M26CSS_JUEC_WRITE_WAIT;
+    when M26CSS_JUEC_WRITE_WAIT =>
+      if(juec_idle = '1') then
+        if(breakpoint_active(8) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          trigger_juec_update_run_counter_next <= '1';
+          m26cs_state_next <= M26CSS_JUEC_RUN_COUNTER_BEGIN;
+        end if;
+      end if;
+    when M26CSS_JUEC_RUN_COUNTER_BEGIN =>
+      m26cs_state_next <= M26CSS_JUEC_RUN_COUNTER_WAIT;
+    when M26CSS_JUEC_RUN_COUNTER_WAIT =>
+      if(juec_idle = '1') then
+        if(breakpoint_active(9) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          m26cs_firstrun_next <= '0';
+          last_run_successful_tmp_next <= not (last_read_error or last_write_error); -- added 201210
+          -- clear requests
+          run_requested_next <= '0';
+          write_once_requested_next <= '0';          
+          m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+        end if;
+      end if;
+      
+      
+    -- WRITE_ONCE states
+    when M26CSS_WRITEONCE_CHECK_CRC_RAM1A_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITEONCE_CHECK_CRC_RAM1A_WAIT;
+    when M26CSS_WRITEONCE_CHECK_CRC_RAM1A_WAIT =>
+      if(jtag_check_crc_ram1a_idle = '1') then
+        crc_status_register_next <= jtag_check_crc_ram1a_crc_ok;
+        output := '1';
+        for i in MAX_NUMCHIPS-1 downto 0 loop
+          if(jtag_check_crc_ram1a_crc_ok(i) /= '1' and i < to_integer(numchips_configured)) then
+            output := '0';
+          end if;
+        end loop;        
+        --if(std_logic_vector_all_components_equal_scalar(jtag_check_crc_ram1a_crc_ok(to_integer(numchips_configured)-1 downto 0), '1') = '1') then
+        if(output = '1') then
+          -- if no crc errors for configured chips (consider changing this to checking the whole vector, and also let zeros be ok for crc check)
+            crc_error_on_last_check_next <= '0';
+            trigger_init_ram1b_next <= '1';
+            ram1b_select_next <= '0'; -- select init ram1b
+            ram1a_select_next <= "10"; -- select init ram1b
+            m26cs_state_next <= M26CSS_WRITEONCE_INIT_RAM1B_BEGIN;          
+        else
+          -- crc error in configured chips, don't continue
+          crc_error_on_last_check_next <= '1';
+          run_requested_next <= '0';
+          write_once_requested_next <= '0';          
+          m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+        end if;
+      end if;    
+    when M26CSS_WRITEONCE_INIT_RAM1B_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITEONCE_INIT_RAM1B_WAIT;
+    when M26CSS_WRITEONCE_INIT_RAM1B_WAIT =>
+      if(jtag_init_ram1b_idle = '1') then
+          chip_counter_start_next <= '1';
+          m26cs_state_next <= M26CSS_WRITEONCE_COUNT_CHIPS_BEGIN;
+      end if;
+    when M26CSS_WRITEONCE_COUNT_CHIPS_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITEONCE_COUNT_CHIPS_WAIT;
+    when M26CSS_WRITEONCE_COUNT_CHIPS_WAIT => 
+        trigger_jtag_write_next <= '1';
+        ram1a_select_next <= "01"; -- select jtag_write_ram1a_a
+        ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+        ram2_select_next <= '0'; -- tdo_compare_count      
+        m26cs_state_next <= M26CSS_WRITEONCE_WRITE1_BEGIN;
+    when M26CSS_WRITEONCE_WRITE1_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITEONCE_WRITE1_WAIT;
+    when M26CSS_WRITEONCE_WRITE1_WAIT =>
+      if(jtag_write_idle = '1') then
+        -- clear requests
+        run_requested_next <= '0';
+        write_once_requested_next <= '0';
+        write_once_count_next <= write_once_count + 1;
+        m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+      end if;      
+  end case;
+  if(RUN_REQUEST_IN = '1') then
+    run_requested_next <= '1';
+  end if;
+  if(WRITE_ONCE_REQUEST_IN = '1') then
+    write_once_requested_next <= '1';
+  end if;
+  
+end process;
+
+
+status2_copy_finished   <= not jtag_status2_copy_requested and not jtag_status2_copy_request_strobe;
+CP_STATUS2 : process(jtag_status2_copy_requested, jtag_status2_copy_request_strobe, status2_chain_status, status2_run_counter, cps2_state, m26cs_state, jtag_copy_ram3_idle, run_counter, chain_status)
+begin
+  jtag_status2_copy_requested_next <= jtag_status2_copy_requested;
+  -- these are all copies of the registers changed in M26CS
+  status2_run_counter_next <= status2_run_counter;
+  status2_chain_status_next <= status2_chain_status;
+  cps2_state_next <= cps2_state;
+  trigger_copy_ram3_next <= '0';
+  case cps2_state is
+    when CPS2_IDLE =>
+      if(jtag_status2_copy_requested = '1' and m26cs_state = M26CSS_STOPPED) then
+        trigger_copy_ram3_next <= '1';
+        cps2_state_next <= CPS2_COPY_BEGIN;
+      end if;
+    when CPS2_COPY_BEGIN =>
+      status2_run_counter_next <= run_counter;
+      status2_chain_status_next <= chain_status;
+      cps2_state_next <= CPS2_COPY_WAIT;
+    when CPS2_COPY_WAIT =>
+      if(jtag_copy_ram3_idle = '1') then
+        jtag_status2_copy_requested_next <= '0';
+        cps2_state_next <= CPS2_IDLE;
+      end if;
+  end case; --finishing needs 2 clock cycles, after 2 clock cycles the next jtag_status2_copy_request_strobe will be accepted. the copying itself needs much longer, so if the querying agent waits till after the copy has finished until the next is requested, the new request not be missed due to this delay
+  if(jtag_status2_copy_request_strobe = '1') then 
+    jtag_status2_copy_requested_next <= '1';
+  end if;
+end process;
+
+TRIGGER_CP_RAM1B1C : process(ram1b_copy_requested, ram1c_run_counter, ram1c_chain_status, ram1b1c_copy_trigger_active, ram1b1c_copy_trigger_strobe, copy_ram1b1c_idle, cpr1bc_state, m26cs_state, run_counter, chain_status, juec_read_errors, juec_write_errors, juec_data_changed)
+begin
+  ram1b_copy_requested_next <= ram1b_copy_requested;
+  -- these are all copies of the registers changed in M26CS
+  ram1c_run_counter_next <= ram1c_run_counter;
+  ram1c_chain_status_next <= ram1c_chain_status;
+  cpr1bc_state_next <= cpr1bc_state;
+  trigger_copy_ram1b1c_next <= '0';
+  ram1b1c_copy_trigger_active_next <= ram1b1c_copy_trigger_active or ram1b1c_copy_trigger_strobe;
+  case cpr1bc_state is
+    when CPR1BC_IDLE =>
+      if(ram1b_copy_requested = '1' and m26cs_state = M26CSS_STOPPED) then
+        trigger_copy_ram1b1c_next <= '1';
+        cpr1bc_state_next <= CPR1BC_COPY_BEGIN;
+      end if;
+    when CPR1BC_COPY_BEGIN =>
+      ram1c_run_counter_next <= run_counter;
+      ram1c_chain_status_next <= chain_status;
+      cpr1bc_state_next <= CPR1BC_COPY_WAIT;
+    when CPR1BC_COPY_WAIT =>
+      if(copy_ram1b1c_idle = '1') then
+        ram1b_copy_requested_next <= '0';
+        cpr1bc_state_next <= CPR1BC_IDLE;
+      end if;
+  end case; --finishing needs 2 clock cycles, after 2 clock cycles the next jtag_status2_copy_request_strobe will be accepted. the copying itself needs much longer, so if the querying agent waits till after the copy has finished until the next is requested, the new request not be missed due to this delay
+  if(juec_read_errors = '1' and ram1b1c_copy_trigger_active(0) = '1') or 
+    (juec_write_errors = '1' and ram1b1c_copy_trigger_active(1) = '1') or
+    (juec_data_changed = '1' and ram1b1c_copy_trigger_active(2) = '1') or
+     (ram1b1c_copy_trigger_active(3) = '1') then 
+      ram1b_copy_requested_next <= '1';
+      -- deactivate triggers (copy is requested)
+      ram1b1c_copy_trigger_active_next <= (others => '0');
+  end if;
+end process;
+
+
+
+-- -- OR the status bits of all registers separately for each sensor and (JTAG_ERROR, DATA_CHANGED, DATA CHANGED OVER THRESHOLD)
+-- WRITE_STATUS_REG_OR : process(write_status_register)
+-- variable write_status_reg_acc : std_logic_vector(3*MAX_NUMCHIPS-1 downto 0);
+-- begin
+--   write_status_reg_acc := (others => '0');
+--   for i in 0 to MAX_REGISTERS - 1 loop
+--       write_status_reg_acc := write_status_reg_acc or
+--                 write_status_register( i*3*MAX_NUMCHIPS + 3*MAX_NUMCHIPS - 1 downto
+--                                        i*3*MAX_NUMCHIPS);
+--   end loop;
+--   write_status_register_or_next <= write_status_reg_acc;
+-- end process;
+
+
+-- READ_STATUS_REG_OR : process(status_register)
+-- variable read_error2_acc : std_logic;
+-- begin
+--   read_error2_acc := '0';
+--   for i in 0 to MAX_NUMCHIPS-1 loop
+--     read_error2_acc := read_error2_acc or status_register(STATUS_READ_ERROR2 + i);
+--   end loop;
+--   status_register_read_error2_next <= read_error2_acc;
+-- end process;
+
+--numchips_configured_next <= std_logic_vector(to_unsigned(3,MAX_NUMCHIPS_LD+1));
+--ram_m26c_a1_next(M26C_RAM_DEPTH-1 downto 8) <= ram_base_addr;
+-- put together ram1a address
+ram1a_a1 <= ram1a_a1_base_addr & ram1a_a1_rel_addr;
+buf_bus2_ram_read_enable_out_next <= bus2_ram_read_enable_out;
+buf_buf_bus2_ram_read_enable_out_next <= buf_bus2_ram_read_enable_out;
+BUS2_RAM_RW : process (bus2_ram_addr_out, bus2_ram_data_out, bus2_ram_read_enable_out, bus2_ram_write_enable_out, buf_buf_bus2_ram_read_enable_out, ram1a_dout1, ram1a_din1, ram1a_a1_rel_addr, bus2_ram_data_in, m26cs_stopped)
+begin
+  ram1a_wr1_next <= '0';
+  ram1a_din1_next <= ram1a_din1;
+  ram1a_a1_rel_addr_next   <= ram1a_a1_rel_addr;
+  bus2_ram_data_in_next <= bus2_ram_data_in;
+  bus2_ram_dataready_in_next <= '0';
+  bus2_ram_write_ack_in_next <= '0';
+  bus2_ram_no_more_data_in_next <= '0';
+  bus2_ram_unknown_addr_in_next <= '0';
+  if(bus2_ram_write_enable_out='1') then
+    ram1a_din1_next <= bus2_ram_data_out;
+    ram1a_a1_rel_addr_next   <= bus2_ram_addr_out(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);
+    -- only allow ram1a to be changed if stopped!
+    if(m26cs_stopped = '1') then
+      ram1a_wr1_next <= '1';
+      bus2_ram_write_ack_in_next <= '1';
+    else
+      bus2_ram_unknown_addr_in_next <= '1';
+    end if;
+  elsif(bus2_ram_read_enable_out='1') then
+    ram1a_a1_rel_addr_next <= bus2_ram_addr_out(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);
+    
+  elsif(buf_buf_bus2_ram_read_enable_out='1') then
+    bus2_ram_data_in_next <= ram1a_dout1;
+    bus2_ram_dataready_in_next <= '1';
+  end if;
+end process;
+
+BUS2_STATUS_R : process (bus2_status_addr_out, crc_status_register, bus2_status_read_enable_out, bus2_status_write_enable_out, bus2_status_data_in)
+variable bus_addr_int : integer range 0 to 31;
+begin
+  bus2_status_data_in_next <= bus2_status_data_in;
+  bus2_status_dataready_in_next <= '0';
+  bus2_status_write_ack_in_next <= '0';
+  bus2_status_no_more_data_in_next <= '0';
+  bus2_status_unknown_addr_in_next <= '0';
+  if(bus2_status_read_enable_out='1') then
+    -- STATUS register layout: 8 bits/chip 
+    -- first 32 bits : CRC status
+    -- bits i*32+31 downto i*32: bits 0: JTAG_ERROR, 1: WRITE_ERROR, 2: WRITE_ERROR2, 3: READ_ERROR, 4: READ_ERROR2, 
+    --                                5: DATA_CHANGED, 6: reserved, 7: reserved 
+    bus_addr_int := to_integer(unsigned(bus2_status_addr_out(4 downto 0)));
+    if(bus_addr_int = 0) then
+      bus2_status_data_in_next(31 downto MAX_REGISTERS) <= (others => '0');
+      bus2_status_data_in_next(MAX_NUMCHIPS - 1 downto 0) <= crc_status_register(MAX_NUMCHIPS - 1 downto 0);
+      bus2_status_dataready_in_next <= '1';
+--     elsif(4*(bus_addr_int-1) < MAX_NUMCHIPS) then
+-- --       for i in 0 to MIN(MAX_NUMCHIPS-4*(bus_addr_int - 1)-1,3) loop
+-- --         bus2_status_data_in_next(8*i+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+7 downto 8*i+6) <= (others => '0');
+-- --       end loop;
+-- --      bus2_status_data_in_next(31 downto 8*(MIN(MAX_NUMCHIPS-4*(bus_addr_int - 1)-1,3)+1)) <= (others => '0');
+-- 
+--       bus2_status_data_in_next <= (others => '0');
+--       bus2_status_data_in_next(8*0+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+6) <= removed_chips(4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+7 downto 8*0+7) <= (others => '0');
+--       if(4*(bus_addr_int-1)+1 < MAX_NUMCHIPS) then
+--         bus2_status_data_in_next(8*1+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+6) <= removed_chips(4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+7 downto 8*1+7) <= (others => '0');
+--       end if;
+--       if(4*(bus_addr_int-1)+2 < MAX_NUMCHIPS) then
+--         bus2_status_data_in_next(8*2+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+6) <= removed_chips(4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+7 downto 8*2+7) <= (others => '0');
+--       end if;
+--       if(4*(bus_addr_int-1)+3 < MAX_NUMCHIPS) then
+--         bus2_status_data_in_next(8*3+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+3);        bus2_status_data_in_next(8*3+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+6) <= removed_chips(4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+7 downto 8*3+7) <= (others => '0');
+--       end if;
+--       bus2_status_dataready_in_next <= '1';
+    else
+      bus2_status_unknown_addr_in_next <= '1';
+    end if;
+  end if;
+  if(bus2_status_write_enable_out='1') then
+    bus2_status_unknown_addr_in_next <= '1';
+  end if;
+end process;
+
+BUS2_CONTROL_RW : process (bus2_control_addr_out, bus2_control_data_out, bus2_control_read_enable_out, bus2_control_write_enable_out, bus2_control_data_in, jtag_refresh_active, ram1a_a1_base_addr, data_register, jtag_check1_active, numchips_configured, removed_chips, jtag_clock_cycle_length, jtag_clock_time1, jtag_clock_time2, 
+jtag_sample_time1, jtag_sample_time2, jtag_sample_time3, jtag_set_data_time, breakpoint_active, run_counter, debug_trigger_counter, last_not_removed, m26cs_stopped, numchips_active, m26csoptions, jtag_delay_expvalues
+)
+begin
+  bus2_control_data_in_next <= bus2_control_data_in;
+  bus2_control_dataready_in_next <= '0';
+  bus2_control_write_ack_in_next <= '0';
+  bus2_control_no_more_data_in_next <= '0';
+  bus2_control_unknown_addr_in_next <= '0';
+  jtag_refresh_active_next <= jtag_refresh_active;
+  ram1a_a1_base_addr_next  <= ram1a_a1_base_addr;
+  data_register_next <= data_register;
+  jtag_status2_copy_request_strobe_next <= '0';
+  jtag_check1_active_next <= jtag_check1_active;
+  numchips_configured_next <= numchips_configured;
+  removed_chips_next <= removed_chips;
+  jtag_clock_cycle_length_next <= jtag_clock_cycle_length;
+  jtag_clock_time1_next <= jtag_clock_time1;
+  jtag_clock_time2_next <= jtag_clock_time2;
+  jtag_sample_time1_next <= jtag_sample_time1;
+  jtag_sample_time2_next <= jtag_sample_time2;
+  jtag_sample_time3_next <= jtag_sample_time3;
+  jtag_set_data_time_next <= jtag_set_data_time;
+  jtag_pulses_reset_next <= '0';
+  breakpoint_active_next <= breakpoint_active;
+  ram1b1c_copy_trigger_strobe_next <= (others => '0');
+  m26csoptions_next <= m26csoptions;
+  jtag_delay_expvalues_next <= jtag_delay_expvalues;
+  
+  --driver_speed_next <= driver_speed;
+  --deactivate_sensor_strobe_next <= (others => '0');
+  --reactivate_sensor_strobe_next <= (others => '0');
+  --disable_write_next <= disable_write;
+  --disable_writeerror_for_remove_next <= disable_writeerror_for_remove;
+  --disable_remove_next <= disable_remove;
+  --debug_one_remove_strobe_next <= '0';
+  if(bus2_control_write_enable_out='1') then
+    -- CONTROL registers layout:  
+    -- ADDR_CONTROL_CMD
+    -- ADDR_CONTROL_RAM_BASEADDR
+    -- bits i*32+31 downto i*32: bits 0: JTAG_ERROR, 1: WRITE_ERROR, 2: WRITE_ERROR2, 3: READ_ERROR, 4: READ_ERROR2, 
+    --                                5: DATA_CHANGED, 6: reserved, 7: reserved 
+    if(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_CMD) then
+      bus2_control_write_ack_in_next <= '1';
+      if(bus2_control_data_out(7 downto 0) = M26C_CMD_START) then
+        jtag_refresh_active_next <= '1';
+      elsif(bus2_control_data_out(7 downto 0) =M26C_CMD_START_CHECK1) then
+        jtag_check1_active_next <= '1';
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_STOP) then
+        jtag_refresh_active_next <= '0';
+        jtag_check1_active_next <= '0';
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_REMOVE_SENSOR ) then
+        -- only signal ack if really written
+        bus2_control_write_ack_in_next <= '0';
+        bus2_control_no_more_data_in_next <= '1';
+        -- only allowed to change removed chips when not writing to JTAG interface!
+        if(m26cs_stopped = '1') then
+          if(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))<MAX_NUMCHIPS) then
+            removed_chips_next(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0)))) <= '1';
+            bus2_control_write_ack_in_next <= '1';
+            bus2_control_no_more_data_in_next <= '0';
+          end if;
+        end if;
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_INSERT_SENSOR ) then
+        -- only signal ack if really written
+        bus2_control_write_ack_in_next <= '0';
+        bus2_control_no_more_data_in_next <= '1';
+        -- only allowed to change removed chips when not writing to JTAG interface!
+        if(jtag_refresh_active = '0' and jtag_check1_active = '0') then
+          if(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))<MAX_NUMCHIPS) then
+            removed_chips_next(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0)))) <= '0';
+            bus2_control_write_ack_in_next <= '1';
+            bus2_control_no_more_data_in_next <= '0';
+          end if;
+        end if;
+      --elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_SPEED) then
+        --driver_speed_next <= data_register(15 downto 0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_SPEED) then
+--         data_register_next(31 downto 16) <= (others => '0');
+--         data_register_next(15 downto 0) <= driver_speed;
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_REACTIVATE_SENSOR) then
+--         if(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))<MAX_NUMCHIPS) then
+--           reactivate_sensor_strobe_next(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0)))) <= '1';
+--         end if;
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_DEACTIVATE_SENSOR) then
+--         if(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))<MAX_NUMCHIPS) then
+--           deactivate_sensor_strobe_next(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0)))) <= '1';
+--         end if;
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_NUMCHIPS_CONFIGURED) then
+        data_register_next(31 downto MAX_NUMCHIPS_LD) <= (others => '0');
+        data_register_next(MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(numchips_configured);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_NUMCHIPS_ACTIVE) then
+        data_register_next(31 downto MAX_NUMCHIPS_LD) <= (others => '0');
+        data_register_next(MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(numchips_active);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_TRIGGER_COUNT) then
+        data_register_next <= std_logic_vector(debug_trigger_counter);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_DISABLE_WRITE) then
+--         data_register_next(31 downto 1) <= (others => '0');
+--         data_register_next(0) <= disable_write;
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_DISABLE_WRITE) then
+--         disable_write_next <= data_register(0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_LAST_NOT_REMOVED) then
+        data_register_next(31 downto MAX_NUMCHIPS_LD) <= (others => '0');
+        data_register_next(MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(last_not_removed);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_REMOVED) then
+        data_register_next(31 downto 1) <= (others => '0');
+        data_register_next(0) <=  removed_chips(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_REMOVED32) then
+        data_register_next(31 downto MYMIN(MAX_NUMCHIPS-1, 31)) <= (others => '0');
+        data_register_next(MYMIN(MAX_NUMCHIPS-1, 31) downto 0) <= removed_chips(MYMIN(MAX_NUMCHIPS-1, 31) downto 0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_REACTIVATE_SENSOR32) then
+--         data_register_next(31 downto 0) <= reactivate_sensor(31 downto 0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_DEACTIVATE_SENSOR32) then
+--         data_register_next(31 downto 0) <= deactivate_sensor(31 downto 0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_M26_DEV_ID) then
+--         data_register_next <= JTAG_M26_DEV_ID;
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_NUMCHIPS_CONFIGURED) then
+        numchips_configured_next <= unsigned(data_register(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0));
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_NUMCHIPS) then
+--         data_register_next(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0) <= std_logic_vector(numchips_configured);
+--         data_register_next(31 downto MAX_NUMCHIPS_PLUS_ONE_LD) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_BREAKPOINTS) then
+        breakpoint_active_next <= data_register(9 downto 0);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_BREAKPOINTS) then
+        data_register_next(9 downto 0) <= breakpoint_active;
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH) then
+        jtag_clock_cycle_length_next <=         unsigned(data_register(9 downto 0));
+        jtag_pulses_reset_next <= '1'; -- reset counter (because maximum value of counter could be exceeded)
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_CLOCK_CYCLE_LENGTH) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_clock_cycle_length);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_CLOCK_TIME1) then
+        jtag_clock_time1_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_CLOCK_TIME1) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_clock_time1);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_CLOCK_TIME2) then
+        jtag_clock_time2_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_CLOCK_TIME2) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_clock_time2);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_SAMPLE_TIME1) then
+        jtag_sample_time1_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_SAMPLE_TIME1) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_sample_time1);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_SAMPLE_TIME2) then
+        jtag_sample_time2_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_SAMPLE_TIME2) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_sample_time2);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_SAMPLE_TIME3) then
+        jtag_sample_time3_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_SAMPLE_TIME3) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_sample_time3);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_SET_DATA_TIME) then
+        jtag_set_data_time_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_SET_DATA_TIME) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_set_data_time);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_RUN_COUNT) then
+        data_register_next(31 downto 0) <= std_logic_vector(run_counter);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_TO_STATUS2) then
+        jtag_status2_copy_request_strobe_next <= '1';
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER) then
+        ram1b1c_copy_trigger_strobe_next(3 downto 0) <= data_register(3 downto 0); -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_READ_ERROR) then
+        ram1b1c_copy_trigger_strobe_next(0) <= '1'; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_WRITE_ERROR) then
+        ram1b1c_copy_trigger_strobe_next(1) <= '1'; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_DATA_CHANGED) then
+        ram1b1c_copy_trigger_strobe_next(2) <= '1'; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_NOW) then
+        ram1b1c_copy_trigger_strobe_next(3) <= '1'; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_CSOPTIONS) then
+        m26csoptions_next(0 downto 0) <= data_register(0 downto 0); -- bit 0 => skip bypassreg chaintest
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_CSOPTIONS) then
+        data_register_next(0 downto 0) <= m26csoptions(0 downto 0); -- bit 0 => skip bypassreg chaintest
+       data_register_next(31 downto 0+1) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_DELAY_EXPECTED_VALUES) then
+        jtag_delay_expvalues_next(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0) <= data_register(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_DELAY_EXPECTED_VALUES) then
+         data_register_next(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0) <= jtag_delay_expvalues(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0);
+         data_register_next(31 downto JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD) <=  (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_ACTIVITY) then
+         data_register_next(0) <= jtag_refresh_active;
+         data_register_next(1) <= jtag_check1_active;
+         data_register_next(31 downto 2) <=  (others => '0');
+      else 
+        -- revoke write_ack, which was set preliminary before "if"
+        bus2_control_write_ack_in_next <= '0';
+        bus2_control_unknown_addr_in_next <= '1';
+      end if;
+    elsif(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_RAM_BASEADDR) then
+      ram1a_a1_base_addr_next <= bus2_control_data_out(MAX_NUMCHIPS_LD-1 downto 0);
+      bus2_control_write_ack_in_next <= '1';
+    elsif(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_DATA_REGISTER) then
+      data_register_next <= bus2_control_data_out;
+      bus2_control_write_ack_in_next <= '1';
+    else
+      bus2_control_unknown_addr_in_next <= '1';
+    end if;
+  elsif(bus2_control_read_enable_out='1') then
+    if(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_CMD) then
+      bus2_control_data_in_next <= (others => '0');
+      bus2_control_dataready_in_next <= '1';
+    elsif(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_RAM_BASEADDR) then
+      bus2_control_data_in_next(31 downto RAM_JTAG_REGISTERS_DEPTH-8) <= (others => '0');
+      bus2_control_data_in_next(MAX_NUMCHIPS_LD-1 downto 0) <= ram1a_a1_base_addr;
+      bus2_control_dataready_in_next <= '1';    
+    elsif(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_DATA_REGISTER) then
+      bus2_control_data_in_next <= data_register;
+      bus2_control_dataready_in_next <= '1';    
+    else
+      bus2_control_unknown_addr_in_next <= '1';
+    end if;
+  end if;
+end process;
+
+BUS2_DEBUG_R : process (bus2_debug_addr_out, bus2_debug_read_enable_out, bus2_debug_write_enable_out, bus2_debug_data_in, debug_m26cs_state, debug_trigger_counter, debug_test, ram1b_a2, ram1b_dout2, bus2_debug_data_out, ram1c_a2, ram1c_dout2, ram1c_chain_status, ram1c_run_counter, debugtdo_timeout, debugtdo_underflow, debugtdo_overflow, debugtdo_full, debugtdo_empty, debugtdo_dout, write_once_count)
+begin
+  bus2_debug_data_in_next <= bus2_debug_data_in;
+  bus2_debug_dataready_in_next <= '0';
+  bus2_debug_write_ack_in_next <= '0';
+  bus2_debug_no_more_data_in_next <= '0';
+  bus2_debug_unknown_addr_in_next <= '0';
+  debug_test_next <= debug_test;
+  ram1b_a2_next <= ram1b_a2;
+  ram1c_a2_next <= ram1c_a2;
+  debugtdo_activate_strobe <= '0';
+  debugtdo_timeout_next <= debugtdo_timeout;
+  debugtdo_rd_en <= '0';
+  resetdebugtdo_strobe <= '0';
+  if(bus2_debug_write_enable_out='1') then
+    if(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_TEST) then
+      debug_test_next <= bus2_debug_data_out;
+      bus2_debug_write_ack_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1BADDR) then
+      ram1b_a2_next <= bus2_debug_data_out(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+      bus2_debug_write_ack_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1CADDR) then
+      ram1c_a2_next <= bus2_debug_data_out(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+      bus2_debug_write_ack_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_TIMEOUT) then
+      debugtdo_timeout_next <= bus2_debug_data_out(31 downto 0);
+      bus2_debug_write_ack_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_ACTIVATE) then
+      if( bus2_debug_data_out(0) = '1') then
+        debugtdo_activate_strobe <= '1';
+        bus2_debug_write_ack_in_next <= '1';
+      end if;
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_CONTROLFIFO) then
+      if( bus2_debug_data_out(0) = '1') then
+        debugtdo_rd_en <= '1';
+        bus2_debug_write_ack_in_next <= '1';
+      elsif( bus2_debug_data_out(4) = '1') then
+        resetdebugtdo_strobe <= '1';
+        bus2_debug_write_ack_in_next <= '1';
+      end if;
+    else
+      bus2_debug_unknown_addr_in_next <= '1';
+    end if;  
+  elsif(bus2_debug_read_enable_out='1') then
+    if(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_TEST) then
+      bus2_debug_data_in_next <= debug_test;
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_M26CS_STATE) then
+      bus2_debug_data_in_next(31 downto 8) <= (others => '0');
+      bus2_debug_data_in_next(7 downto 0) <= debug_m26cs_state;
+      bus2_debug_dataready_in_next <= '1';
+--     elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_M26C_READ_STATE) then
+--       bus2_debug_data_in_next(31 downto 8) <= (others => '0');
+--       bus2_debug_data_in_next(7 downto 0) <= read_state_out;
+--       bus2_debug_dataready_in_next <= '1';
+--     elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_M26C_WRITE_STATE) then
+--       bus2_debug_data_in_next(31 downto 8) <= (others => '0');
+--       bus2_debug_data_in_next(7 downto 0) <= write_state_out;
+--       bus2_debug_dataready_in_next <= '1';
+--     elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_JTAG_DRIVER_STATE) then
+--       bus2_debug_data_in_next(31 downto 9) <= (others => '0');
+--       bus2_debug_data_in_next(8 downto 0) <= driver_state_out;
+--       bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_TRIGGER_COUNT) then
+      bus2_debug_data_in_next <= std_logic_vector(debug_trigger_counter);
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_VERSION) then
+      bus2_debug_data_in_next <= std_logic_vector(to_unsigned(VERSION_NUMBER_TIME,32));
+      bus2_debug_dataready_in_next <= '1';
+      bus2_debug_unknown_addr_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1B_DATA) then
+      bus2_debug_data_in_next <= ram1b_dout2;
+      bus2_debug_dataready_in_next <= '1'; -- this isn't safe, but it's for debugging only, would need to wait for RAM after setting the address
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1C_DATA) then
+      bus2_debug_data_in_next <= ram1c_dout2;
+      bus2_debug_dataready_in_next <= '1'; -- this isn't safe, but it's for debugging only, would need to wait for   RAM after setting the address    
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1C_RUN_COUNTER) then
+      bus2_debug_data_in_next <= std_logic_vector(ram1c_run_counter);
+      bus2_debug_dataready_in_next <= '1'; -- this isn't safe, but it's for debugging only, would need to wait for   RAM after setting the address    
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1C_CHAIN_STATUS) then
+      bus2_debug_data_in_next(31 downto 3+MAX_NUMCHIPS_PLUS_ONE_LD) <= (others => '0');
+      bus2_debug_data_in_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0) <= ram1c_chain_status;
+      bus2_debug_dataready_in_next <= '1'; -- this isn't safe, but it's for debugging only, would need to wait for   RAM after setting the address    
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_SAMPLES) then
+      bus2_debug_data_in_next(31 downto 0) <= debugtdo_dout;
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_GETFIFOSTATUS) then
+      bus2_debug_data_in_next(0) <= debugtdo_full;
+      bus2_debug_data_in_next(1) <= debugtdo_empty;
+      bus2_debug_data_in_next(2) <= debugtdo_overflow;
+      bus2_debug_data_in_next(3) <= debugtdo_underflow;
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_TIMEOUT) then
+      bus2_debug_data_in_next(31 downto 0) <= debugtdo_timeout_next;
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_WRONCE_COUNT) then
+      bus2_debug_data_in_next(31 downto COUNTER_WIDTHS) <= (others => '0');
+      bus2_debug_data_in_next(COUNTER_WIDTHS-1 downto 0) <= std_logic_vector(write_once_count);
+      bus2_debug_dataready_in_next <= '1';
+    end if;
+  end if;
+end process;
+
+buf_bus2_status2_read_ram3b_next <= bus2_status2_read_ram3b;
+BUS2_STATUS2_R : process (bus2_status2_addr_out, bus2_status2_data_out, bus2_status2_read_enable_out, bus2_status2_write_enable_out, bus2_status2_data_in, status2_copy_finished, status2_chain_status, status2_run_counter, bus2_status_addr_out, buf_bus2_status2_read_ram3b, jtag_refresh_active, ram3b_dout2, ram3b_a2_rel_addr, ram3b_a2_base_addr)
+variable bus_addr_int : integer range 0 to 31;
+begin
+  bus2_status2_data_in_next <= bus2_status2_data_in;
+  bus2_status2_dataready_in_next <= '0';
+  bus2_status2_write_ack_in_next <= '0';
+  bus2_status2_no_more_data_in_next <= '0';
+  bus2_status2_unknown_addr_in_next <= '0';
+  bus2_status2_read_ram3b_next <= '0';
+  ram3b_a2_base_addr_next <= ram3b_a2_base_addr;
+  ram3b_a2_rel_addr_next <= ram3b_a2_rel_addr;
+  if(buf_bus2_status2_read_ram3b = '1') then
+    bus2_status2_data_in_next <= ram3b_dout2;
+    bus2_status2_dataready_in_next <= '1';
+  end if;
+  if(bus2_status2_read_enable_out='1') then
+    -- STATUS register layout: 8 bits/chip 
+    -- first 32 bits : CRC status
+    -- bits i*32+31 downto i*32: bits 0: JTAG_ERROR, 1: WRITE_ERROR, 2: WRITE_ERROR2, 3: READ_ERROR, 4: READ_ERROR2, 
+    --                                5: DATA_CHANGED, 6: reserved, 7: reserved 
+    if(bus2_status2_addr_out(4) = '1') then -- ram3b
+      ram3b_a2_rel_addr_next <= bus2_status_addr_out(3 downto 0);
+      bus2_status2_read_ram3b_next <= '1';
+      -- dataready delayed
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_TRIGGERCOUNTER_COPY) then
+      bus2_status2_data_in_next <= std_logic_vector(status2_run_counter);
+      bus2_status2_dataready_in_next <= '1';
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_CHAIN_STATUS_COPY) then
+      bus2_status2_data_in_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0) <= status2_chain_status;
+      bus2_status2_data_in_next(31 downto 8) <= (others => '0');
+      bus2_status2_dataready_in_next <= '1';
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_UPDATING) then
+      bus2_status2_data_in_next(0) <= not status2_copy_finished;
+      bus2_status2_data_in_next(31 downto 1) <= (others => '0');
+      bus2_status2_dataready_in_next <= '1';
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_RAM3B_BASEADDR) then
+      bus2_status2_data_in_next(RAM_ERROR_COUNTS_DEPTH-4 -1 downto 0) <= ram3b_a2_base_addr;
+      bus2_status2_data_in_next(31 downto RAM_ERROR_COUNTS_DEPTH-4 ) <= (others => '0');
+      bus2_status2_dataready_in_next <= '1';
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_STARTED) then
+      bus2_status2_data_in_next(0) <= jtag_refresh_active;
+      bus2_status2_data_in_next(31 downto 1) <=  (others => '0');
+      bus2_status2_dataready_in_next <= '1';    
+    else
+      bus2_status2_unknown_addr_in_next <= '1';
+    end if;
+  end if;
+  if(bus2_status2_write_enable_out='1') then
+    if(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_RAM3B_BASEADDR) then
+      ram3b_a2_base_addr_next <= bus2_status2_data_out(RAM_ERROR_COUNTS_DEPTH-4 -1 downto 0);
+      bus2_status2_write_ack_in_next <= '1';
+    else
+      bus2_status2_unknown_addr_in_next <= '1';
+    end if;
+  end if;
+end process;
+
+--trigger_process : process (trigger_counter)
+--begin
+  --trigger_counter_next <=  trigger_counter + 1;
+  --jtag_refresh_start_next <= '0';
+  --if(trigger_counter = "00000000000") then
+  --  jtag_refresh_start_next <= '1';
+  --end if;
+--end process;
+
+-- reactivate_sensor_wait : process (reactivate_sensor, reactivate_sensor_strobe,  removed_chips)
+-- begin
+--   reactivate_sensor_next <= reactivate_sensor;
+--   for i in 0 to MAX_NUMCHIPS-1 loop
+--     if(reactivate_sensor_strobe(i) = '1') then
+--       reactivate_sensor_next(i) <= '1';
+--     elsif(removed_chips(i) = '0') then
+--       reactivate_sensor_next(i) <= '0';
+--     end if;
+--   end loop;
+-- end process;
+-- deactivate_sensor_wait : process (deactivate_sensor, deactivate_sensor_strobe,  removed_chips)
+-- begin
+--   deactivate_sensor_next <= deactivate_sensor;
+--   for i in 0 to MAX_NUMCHIPS-1 loop
+--     if(deactivate_sensor_strobe(i) = '1') then
+--       deactivate_sensor_next(i) <= '1';
+--     elsif(removed_chips(i) = '1') then
+--       deactivate_sensor_next(i) <= '0';
+--     end if;
+--   end loop;
+-- end process;
+-- 
+-- one_remove_wait : process (debug_one_remove_strobe, removed_strobe)
+-- begin
+--   debug_one_remove_next <= debug_one_remove;
+--   if(removed_strobe = '1') then
+--     debug_one_remove_next <= '0';
+--   elsif(debug_one_remove_strobe = '1') then
+--     debug_one_remove_next <= '1';
+--   end if;
+-- end process;
+
+debug_m26cs_state_process : process  (m26cs_state)
+begin
+  case m26cs_state is
+    when M26CSS_WAIT_FOR_TRIGGER =>
+      debug_m26cs_state_next <= x"00";
+    when M26CSS_CHECK_CRC_RAM1A_BEGIN =>
+      debug_m26cs_state_next <= x"20";
+    when M26CSS_CHECK_CRC_RAM1A_WAIT =>
+      debug_m26cs_state_next <= x"21";
+    when M26CSS_INIT_RAM1B_BEGIN =>
+      debug_m26cs_state_next <= x"22";
+    when M26CSS_INIT_RAM1B_WAIT =>
+      debug_m26cs_state_next <= x"23";
+    when M26CSS_DATA_CHANGED_BEGIN =>
+      debug_m26cs_state_next <= x"01";
+    when M26CSS_DATA_CHANGED_WAIT =>
+      debug_m26cs_state_next <= x"02";
+    when M26CSS_BLANK_RAM3A_WAIT =>
+      debug_m26cs_state_next <= x"24";
+    when M26CSS_JUEC_DATA_CHANGED_BEGIN =>
+      debug_m26cs_state_next <= x"03";
+    when M26CSS_JUEC_DATA_CHANGED_WAIT =>
+      debug_m26cs_state_next <= x"04";
+    when M26CSS_COUNT_CHIPS_BEGIN =>
+      debug_m26cs_state_next <= x"05";
+    when M26CSS_COUNT_CHIPS_WAIT =>
+      debug_m26cs_state_next <= x"06";
+    when M26CSS_BYPASSREG_BEGIN =>
+      debug_m26cs_state_next <= x"07";
+    when M26CSS_BYPASSREG_WAIT =>
+      debug_m26cs_state_next <= x"08";
+    when M26CSS_READ1_BEGIN =>
+      debug_m26cs_state_next <= x"09";
+    when M26CSS_READ1_WAIT =>
+      debug_m26cs_state_next <= x"0a";
+    when M26CSS_JUEC_READ_BEGIN =>
+      debug_m26cs_state_next <= x"0b";
+    when M26CSS_JUEC_READ_WAIT =>
+      debug_m26cs_state_next <= x"0c";
+    when M26CSS_WRITE1_BEGIN =>
+      debug_m26cs_state_next <= x"0d";
+    when M26CSS_WRITE1_WAIT =>
+      debug_m26cs_state_next <= x"0e";
+    when M26CSS_WRITE2_BEGIN =>
+      debug_m26cs_state_next <= x"0f";
+    when M26CSS_WRITE2_WAIT =>
+      debug_m26cs_state_next <= x"10";
+    when M26CSS_JUEC_WRITE_BEGIN =>
+      debug_m26cs_state_next <= x"11";
+    when M26CSS_JUEC_WRITE_WAIT =>
+      debug_m26cs_state_next <= x"12";
+    when M26CSS_CHECK1_WAIT_FOR_HAVE_TIME =>
+      debug_m26cs_state_next <= x"13";
+    when M26CSS_STOPPED =>
+      debug_m26cs_state_next <= x"14";
+    when M26CSS_JUEC_RUN_COUNTER_BEGIN =>
+      debug_m26cs_state_next <= x"15";
+    when M26CSS_JUEC_RUN_COUNTER_WAIT =>
+      debug_m26cs_state_next <= x"16";
+    when M26CSS_REQUEST_RESET_BEGIN =>
+      debug_m26cs_state_next <= x"17";
+    when M26CSS_REQUEST_RESET_WAIT =>
+      debug_m26cs_state_next <= x"18";
+    when M26CSS_REQUESTED_RESET_WAIT =>
+      debug_m26cs_state_next <= x"19";
+    when M26CSS_WRITEONCE_CHECK_CRC_RAM1A_BEGIN =>
+      debug_m26cs_state_next <= x"1a";
+        when M26CSS_WRITEONCE_CHECK_CRC_RAM1A_WAIT =>
+      debug_m26cs_state_next <= x"1b";
+        when M26CSS_WRITEONCE_INIT_RAM1B_BEGIN =>
+      debug_m26cs_state_next <= x"1c";
+        when M26CSS_WRITEONCE_INIT_RAM1B_WAIT =>
+      debug_m26cs_state_next <= x"1d";
+        when M26CSS_WRITEONCE_COUNT_CHIPS_BEGIN =>
+      debug_m26cs_state_next <= x"1e";
+        when M26CSS_WRITEONCE_COUNT_CHIPS_WAIT =>
+      debug_m26cs_state_next <= x"1f";
+        when M26CSS_WRITEONCE_WRITE1_BEGIN =>
+      debug_m26cs_state_next <= x"25";
+        when M26CSS_WRITEONCE_WRITE1_WAIT =>   
+      debug_m26cs_state_next <= x"26";
+
+  end case;
+end process;
+      
+
+IDLE_OUT <= idle_out_signal;
+--write_idle_last_next <= write_idle;
+--read_idle_last_next <= read_idle;
+--SEQ_have_time_COUNTER : process(CLK_IN)
+--begin
+--  if(rising_edge(CLK_IN)) then
+--    if(RESET_IN ='1') then
+--      htcounter <= (others => '0');
+--      have_time_for_write <= '0';
+--      debug_trigger_counter <= (others => '0');
+--    else
+--      htcounter <= htcounter_next;
+--      have_time_for_write <= have_time_for_write_next;
+--      debug_trigger_counter <= debug_trigger_counter_next;
+--    end if;
+--  end if;
+--end process;
+
+---- process for counter and to decide when it's still ok to start a jtag write
+--COMB_have_time_COUNTER : process(htcounter, OFF_SPILL_IN, debug_trigger_counter)
+--begin
+--  htcounter_next <= htcounter + 1;
+--  debug_trigger_counter_next <= debug_trigger_counter;
+--  if(OFF_SPILL_IN = '1') then
+--    htcounter_next <= (others => '0');
+--    debug_trigger_counter_next <= debug_trigger_counter + 1;
+--  end if;
+--  if(to_integer(unsigned(htcounter)) >= 8388608) then -- (about 8/100 seconds = 80ms)
+--    have_time_for_write_next <= '0';
+--  else 
+--    have_time_for_write_next <= '1';
+--  end if;
+--end process;
+
+ALL_debugtdo : process( CLK_IN) 
+begin
+  if(rising_edge(CLK_IN)) then
+    debugtdo_timeout <= debugtdo_timeout_next;
+    -- COUNTER
+    debugtdo_counter <= std_logic_vector(unsigned(debugtdo_counter) + 1);
+    -- reset counter in idle/stopped states => counter times the elapsed time since start of m26cs state machine
+    -- also clear debugtdo_active
+    if(m26cs_state = M26CSS_WAIT_FOR_TRIGGER or m26cs_state = M26CSS_STOPPED) then
+      debugtdo_counter <=  (others => '0');
+      if(debugtdo_ran = '1') then
+        debugtdo_active <= '0';
+      end if;
+      debugtdo_ran <= '0';
+    else
+      debugtdo_ran <= '1';
+    end if;
+    if(debugtdo_activate_strobe = '1') then
+      debugtdo_active <= '1';
+    end if;
+
+    -- RESET
+    if(RESET_IN= '1') then
+      debugtdo_counter <= (others => '0');
+      debugtdo_active <= '0';
+      debugtdo_ran <= '0';
+    end if;
+  end if;
+end process;
+end architecture;
diff --git a/vhdl/code/jtag_cmd_m26c.vhd.orig b/vhdl/code/jtag_cmd_m26c.vhd.orig
new file mode 100644 (file)
index 0000000..0a6733b
--- /dev/null
@@ -0,0 +1,3683 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+--USE IEEE.std_logic_ARITH.ALL;
+--USE IEEE.std_logic_UNSIGNED.ALL;
+USE IEEE.numeric_std.ALL;
+
+library work;
+use work.trb_net_std.all;
+use work.trb_net_components.all;
+-- use work.trb_net16_hub_func.all;
+use work.version.all;
+use work.jtag_constants.all;
+use work.jtag_misc.all;
+--use work.minmax.all;
+--use work.monitor_config.all;
+--use debug.fifo32bit;
+
+
+
+
+entity jtag_cmd_m26c is
+  generic(
+ MAX_NUMCHIPS          : integer := 7; -- maximum number of chips in this chain controllers chain (because number of chips can be 0, best chose 2^n-1 as maximum to save logic. if memory should be used completely, choose 2^n.)
+ MAX_NUMCHIPS_PLUS_ONE_LD       : integer := 3;    -- LD of value plus one, rounded up, or ld rounded down + 1, because the next binary digit needs one bit more (i.e, 2 needs second bit)
+ MAX_NUMCHIPS_LD       : integer := 3;   -- LD of value, rounded up
+ MAX_REGISTERS         : integer := 14;  -- number of registers per chip.  Because of ram3 layout, values of 2^n-2 should be chosen.
+ MAX_REGISTERS_LD      : integer := 4;   -- LD of value, rounded up.
+ MAX_REGISTERS_PLUS_ONE_LD      : integer := 4; -- LD of (value plus one)
+ MAX_REGISTERS_PLUS_TWO_LD      : integer := 4; -- LD of (value plus two)
+ MAX_REGLEN_LD                  : integer := 12; -- LD of naximum register length.
+ MAX_REGLEN_PLUS_ONE_LD                  : integer := 12; -- LD of (register length+1)
+
+ WRITE_ERROR_THRESHOLD                     : integer := 3; -- if at least WRITE_ERROR_THRESHOLD bits are different from written value, count as WRITE_ERROR/DATA_CHANGED.
+
+ READ_ERROR_THRESHOLD                     : integer := 4; -- if at least READ_ERROR_THRESHOLD bits are different from 32 bit ID, set 
+
+ JTAG_M26_IRLEN        : integer := 5; -- length of the instruction register of the connected chips
+ JTAG_M26_IRLEN_LD        : integer := 3; -- ld of value, rounded up
+ JTAG_M26_IR_ID_CODE   : std_logic_vector(4 downto 0) := "01110"; -- Code selecting DEV_ID register of Mimosa26
+ JTAG_M26_DEV_ID       : std_logic_vector(31 downto 0) := x"4D323601"; -- Mimosa26 DEV_ID, which the sensor should send.
+
+ RAM_JTAG_REGISTERS_DEPTH   : integer := 11; -- will be split up into MAX_NUMCHIPS_LD bits for chip address, rest is for addressing words in that chip block. word size is 32 bit.
+-- GLOBAL_JTAG_COUNTER_BITS : integer := 10; -- 
+ JTAG_CHAIN_BROKEN_COUNTER_BITS : integer := 10; -- counter width
+ JTAG_TDO_EXPECTED_MAXDELAY : integer := 3; -- set range to 0..value for delay of expected TDO value
+ JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD : integer := 2; -- ceil of ld( value plus one)
+ RESET_WAIT_DURATION : unsigned := "10000000" -- 128 clock cycles at 100 mhz
+);
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+
+    JTAG_TMS_OUT : out std_logic;
+    JTAG_TCK_OUT : out std_logic;
+    JTAG_TDI_OUT : out std_logic;
+    JTAG_TDO_IN  : in  std_logic;
+
+    BUS_DATA_IN  : in std_logic_vector(31 downto 0);
+    BUS_DATA_OUT  : out std_logic_vector(31 downto 0);
+    BUS_ADDR_IN   : in  std_logic_vector(8 downto 0);
+    BUS_READ_IN   : in std_logic;
+    BUS_WRITE_IN  : in std_logic;
+
+    BUS_DATAREADY_OUT    : out  std_logic;
+    BUS_NO_MORE_DATA_OUT : out  std_logic;
+    BUS_WRITE_ACK_OUT    : out  std_logic;
+    BUS_UNKNOWN_ADDR_OUT : out  std_logic;
+
+    --OFF_SPILL_IN : in   std_logic;
+    RUN_REQUEST_IN : in   std_logic;
+    WRITE_ONCE_REQUEST_IN : in   std_logic;
+    MY_STATUS_OUT        : out std_logic_vector(8 downto 0);
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);
+    REQUEST_RESET_OUT    : out std_logic;
+    IDLE_OUT             : out std_logic;
+    PROG_JTAG_FINISHED_OUT:out std_logic;
+    READ_ID_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    WRITE_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    DATA_CHANGED_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    SAMPLING_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    RUN_COUNTER_OUT : out std_logic_vector(31 downto 0);
+    
+    STARTED_OUT : out std_logic;
+    LAST_RUN_SUCCESSFUL_OUT : out std_logic;
+    LAST_DATA_CHANGED_OUT : out std_logic;
+    LAST_WRITE_ERRORS_OUT : out std_logic;
+    LAST_READ_ERRORS_OUT : out std_logic;
+    CRC_ERROR_OUT : out std_logic
+    
+    --BUS_TIMEOUT_IN     : in std_logic;
+    );
+end entity;
+
+
+architecture arch_cmd_m26c of jtag_cmd_m26c is
+
+--     component fifo32bit IS
+--             port (
+--                     clk: IN std_logic;
+--                     din: IN std_logic_VECTOR(31 downto 0);
+--                     rd_en: IN std_logic;
+--                     rst: IN std_logic;
+--                     wr_en: IN std_logic;
+--                     dout: OUT std_logic_VECTOR(31 downto 0);
+--                     empty: OUT std_logic;
+--                     full: OUT std_logic;
+--                     overflow: OUT std_logic;
+--                     underflow: OUT std_logic);
+--     end component;
+
+
+component jtag_pulses is
+  generic (
+    time_bits : integer := 10
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    -- input times
+    JTAG_CLOCK_TIME1_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_CLOCK_TIME2_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME1_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME2_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME3_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SET_DATA_TIME_IN: in std_logic_vector(time_bits -1 downto 0);
+    
+    
+    JTAG_CLOCK_CYCLE_LENGTH_IN: in std_logic_vector(time_bits -1 downto 0);
+    
+    -- output pulses
+    BEGIN_JTAGBITCALC_OUT : out std_logic;
+    JTAG_CLOCK_PULSE1_OUT : out std_logic;
+    JTAG_CLOCK_PULSE2_OUT : out std_logic;
+    JTAG_SAMPLE_PULSE1_OUT : out std_logic;    
+    JTAG_SAMPLE_PULSE2_OUT : out std_logic;    
+    JTAG_SAMPLE_PULSE3_OUT : out std_logic;    
+    JTAG_SET_DATA_PULSE_OUT : out std_logic
+    
+  );
+end component;
+
+component jtag_tck_out_component is
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+       
+    JTAG_CLOCK_PULSE1_IN : in std_logic;    
+    JTAG_CLOCK_PULSE2_IN : in std_logic;    
+    ENABLE_JTAG_TCK_IN     : in std_logic;
+    
+    TCK_OUT : out std_logic
+  );
+end component;
+
+component jtag_write_m10 is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer;
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+    MAX_REGISTERS_LD : integer;
+    MAX_REGISTERS_PLUS_ONE_LD : integer;
+    MAX_REGLEN_LD : integer;
+    MAX_REGLEN_PLUS_ONE_LD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    RAM_JTAG_REGISTERS_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM_JTAG_REGISTERS_D_IN : in std_logic_vector(31 downto 0);
+
+    -- number of next chip which is not removed from the jtag chain. for chip i ( in range 0...N) this next chip is
+    -- encoded by the bits NEXT_NOT_REMOVED((i+1)*MAX_NUMCHIPS_LD + MAX_NUMCHIPS_LD-1 downto (i+1)*MAX_NUMCHIPS_LD) 
+    -- which should be interpreted as unsigned
+    -- the zero'th entry points to the first not removed chip
+    -- a value of (others => '1') means that no more non-removed chips follow
+    NEXT_NOT_REMOVED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD*(MAX_NUMCHIPS+1)-1 downto 0);
+    
+    BEGIN_JTAGBITCALC_IN   : in std_logic;
+    TRIGGER_BEGIN_WRITE_IN : in std_logic;
+    IDLE_OUT : out std_logic;
+    
+    IS_DR_BIT_OUT : out std_logic;
+    IS_FIRSTBIT_OUT : out std_logic;
+    IS_LASTBIT_OUT : out std_logic;
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    EXPECTED_TDO_OUT : out std_logic;
+    
+    -- from (i+1)*MAX_REGISTERS_PLUS_ONE_LD-1 downto (i)*MAX_REGISTERS_PLUS_ONE_LD: numregs configured of chip i=(0, 1, 2, ...)
+    NUMREGS_CONFIGURED_OUT : out std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);
+    
+    LAST_ERROR_CODE_OUT : out std_logic_vector(2 downto 0)
+    
+    
+  );
+end component;
+
+component jtag_tdo_sample is
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    -- pulse always comes in same interval (at fixed distance to begin_jtag_bitcalc)
+    -- the first sample is taken directly after this pulse
+    SAMPLE_PULSE1_IN   : in std_logic;
+    SAMPLE_PULSE2_IN   : in std_logic;
+    SAMPLE_PULSE3_IN   : in std_logic;
+    
+    -- TDO signal, which is to be sampled 
+    TDO_IN             : in std_logic;
+    -- sampled value of TDO
+    TDO_SAMPLED_OUT    : out std_logic;
+    -- sampling error
+    SAMPLING_ERROR_OUT : out std_logic
+  );
+end component;
+
+component jtag_mux_buffer_tms_tdi_out_and_metainfo is
+  generic (
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_LD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+       
+    -- pulse when READ/WRITE/... entity's data should be taken and update 
+    -- the output values for TMS,TDI
+    JTAG_SET_DATA_IN : in std_logic;    
+    
+    -- read DEV_ID inputs
+    RD_TMS_IN : in std_logic;
+    RD_TDI_IN : in std_logic;
+    RD_IS_DR_BIT_IN: in std_logic;
+    RD_IS_FIRSTBIT_IN : in std_logic;
+    RD_IS_LASTBIT_IN : in std_logic;
+    RD_CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    RD_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    RD_LAST_TCK_CYCLE_IN : in std_logic;
+    RD_EXPECTED_TDO_OUT : in std_logic;    
+
+    -- write registers inputs
+    WR_TMS_IN : in std_logic;
+    WR_TDI_IN : in std_logic;
+    WR_IS_DR_BIT_IN: in std_logic;
+    WR_IS_FIRSTBIT_IN : in std_logic;
+    WR_IS_LASTBIT_IN : in std_logic;
+    WR_CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    WR_REGNUM_IN : in std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    WR_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    WR_LAST_TCK_CYCLE_IN : in std_logic;
+    WR_EXPECTED_TDO_OUT : in std_logic;    
+
+    -- test chain inputs
+    TC_TMS_IN : in std_logic;
+    TC_TDI_IN : in std_logic;
+    TC_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    TC_LAST_TCK_CYCLE_IN : in std_logic;
+    
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    IS_DR_BIT_OUT: out std_logic;
+    IS_FIRSTBIT_OUT : out std_logic;
+    IS_LASTBIT_OUT : out std_logic;
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    EXPECTED_TDO_OUT : out std_logic 
+  );
+end component;
+
+component jtag_delay_expected_values is
+   generic (
+--     delay : integer := 0 -- number of whole jtag clock cycles to delay the expected values
+--                           --   because of total distance of the tck-line to the last chip and
+--                           --   the length of tdo of this chip back to the fpga
+     ld_maxdelay : integer := 2;
+     MAX_NUMCHIPS_LD : integer;
+     MAX_REGISTERS_PLUS_ONE_LD : integer
+   );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    SAMPLE_PULSE1_IN : in std_logic;
+    
+      -- chipcount as unsigned
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);
+      -- active register as unsigned, =register 1,2,... of jtag_write_m10 or 0 for jtag_read_m10
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+    
+    IS_DR_BIT_IN : in std_logic;
+      -- firstbit signal: reset counters before sampling this bit
+    IS_FIRSTBIT_IN  : in std_logic;
+      -- finish signal:  dataout => RAM1b, compareout => RAM2
+    IS_LASTBIT_IN   : in std_logic;
+    
+    TDO_EXPECTED_IN : in std_logic;
+    
+    
+      -- chipcount as unsigned
+    OUT_CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);
+      -- active register as unsigned, =register 1,2,... of jtag_write_m10 or 0 for jtag_read_m10
+    OUT_REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+    
+    OUT_IS_DR_BIT_OUT : out std_logic;
+      -- firstbit signal: reset counters before sampling this bit
+    OUT_IS_FIRSTBIT_OUT  : out std_logic;
+      -- finish signal:  dataout => RAM1b, compareout => RAM2
+    OUT_IS_LASTBIT_OUT   : out std_logic;
+    
+    OUT_TDO_EXPECTED_OUT : out std_logic;
+    DELAY_IN : in std_logic_vector(ld_maxdelay -1 downto 0)
+    
+  );
+end component;
+
+component jtag_tdo_compare_count_m10
+  generic (
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_PLUS_ONE_LD : integer;
+    RAM_MATCH_DIFF_COUNT_DEPTH : integer;
+    MAX_REGLEN_LD : integer
+  );
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    SAMPLE_PULSE3_D1_IN : in std_logic;    
+      -- active chip as unsigned
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);
+      -- active register as unsigned, 0=read dev_id, 1,2,...=register 0,1,... of jtag_write_m10 
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_LD -1 downto 0);
+    
+    ENABLE_COUNTERS_IN : in std_logic;
+    IS_FIRSTBIT_IN  : in std_logic;
+    IS_LASTBIT_IN   : in std_logic;
+    
+    TDO_EXPECTED_IN : in std_logic;
+    TDO_SAMPLED_IN  : in std_logic;
+    TDO_SAMPLING_ERROR_IN : in std_logic;
+    
+
+    -- RAM2
+    RAM_MATCH_DIFF_COUNT_A_OUT : out std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+    --RAM_MATCH_DIFF_COUNT_D_IN : in std_logic_vector(31 downto 0);
+    RAM_MATCH_DIFF_COUNT_WE_OUT : out std_logic;
+    RAM_MATCH_DIFF_COUNT_D_OUT : out std_logic_vector(31 downto 0)
+
+    ---- internal error out: signals that read/write sampling has been mixed
+    --INTERNAL_ERROR_OUT : out std_logic
+    
+    -- Monitoring: 16 bit usable per FIFO, depth=512 = 8192 bits, this is enough for a 7 Mi26 chain (registers 1152 bits each)
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);  
+ );
+end component;
+
+component jtag_tdo_compare_counttotal_noram_m10 
+  generic (
+    numcounts : integer := 3;
+    se_counter_width : integer := 32; -- sampling error counter width
+    diff_counter_width : integer := 16  --  counter width for number of runs in which there were differences 
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    -- pulse always comes in same interval (at fixed distance to begin_jtag_bitcalc)
+    -- sample_pulse3 delayed by one clock cycle
+    SAMPLE_PULSE3_D1_IN : in std_logic;
+    -- should this bit be counted as error if not matching expected value? (e.g. is this a dr bit while writing register or reading device id?)
+    ENABLE_COUNTERS_IN : in std_logic;
+
+    TDO_EXPECTED_IN : in std_logic;
+    TDO_SAMPLED_IN  : in std_logic;
+    TDO_SAMPLING_ERROR_IN : in std_logic;
+    BEGIN_COUNT_I_IN : in std_logic_vector(numcounts-1 downto 0);
+    END_COUNT_I_IN : in std_logic_vector(numcounts-1 downto 0);
+    
+    -- should be zero if timing is good
+    SAMPLING_ERRORS_COUNT_OUT : out std_logic_vector(diff_counter_width-1 downto 0);
+    COUNTS_OUT : out std_logic_vector(numcounts*diff_counter_width-1 downto 0);
+    LAST_VALUES_OUT : out std_logic_vector(numcounts-1 downto 0)
+
+
+  );
+end component;
+
+
+component jtag_tdo_data_to_ram_m10
+  generic (
+    enable_ram1b : std_logic := '1';
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_PLUS_ONE_LD : integer;
+    MAX_REGLEN_LD : integer;
+    RAM_JTAG_REGISTERS_DEPTH : integer
+  );
+  port(
+   CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    SAMPLE_PULSE3_D1_IN : in std_logic;
+      -- active chip as unsigned
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);
+      -- active register as unsigned, 0=read dev_id, 1,2,...=register 0,1,... of jtag_write_m10 
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+
+    --                dataout => RAM1b
+    ENABLE_DATAOUT_IN : in std_logic;
+    IS_FIRSTBIT_IN  : in std_logic;
+    IS_LASTBIT_IN   : in std_logic;    
+    TDO_SAMPLED_IN  : in std_logic;
+    -- RAM1b
+    RAM_JTAG_REGISTERS_READOUT_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM_JTAG_REGISTERS_READOUT_D_IN : in std_logic_vector(31 downto 0);
+    RAM_JTAG_REGISTERS_READOUT_WE_OUT : out std_logic;
+    RAM_JTAG_REGISTERS_READOUT_D_OUT : out std_logic_vector(31 downto 0)
+    
+    -- Monitoring: 16 bit usable per FIFO, depth=512 = 8192 bits, this is enough for a 7 Mi26 chain (registers 1152 bits each)
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);  
+  );
+end component;
+
+component jtag_read_m26devid_m10 is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer
+  );
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    RAM_JTAG_REGISTERS_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM_JTAG_REGISTERS_D_IN : in std_logic_vector(31 downto 0);
+
+    -- number of next chip which is not removed from the jtag chain. for chip i ( in range 0...N) this next chip is
+    -- encoded by the bits NEXT_NOT_REMOVED((i+1)*MAX_NUMCHIPS_LD + MAX_NUMCHIPS_LD-1 downto (i+1)*MAX_NUMCHIPS_LD) 
+    -- which should be interpreted as unsigned
+    -- the zero'th entry points to the first not removed chip
+    -- a value of (others => '1') means that no more non-removed chips follow
+    NEXT_NOT_REMOVED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD*(MAX_NUMCHIPS+1)-1 downto 0);
+    
+    BEGIN_JTAGBITCALC_IN   : in std_logic;
+    TRIGGER_BEGIN_READ_IN : in std_logic;
+    
+
+    
+    IS_DR_BIT_OUT : out std_logic;
+    IS_FIRSTBIT_OUT : out std_logic;
+    IS_LASTBIT_OUT : out std_logic;
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    EXPECTED_TDO_OUT : out std_logic;
+    IDLE_OUT : out std_logic
+    );
+end component;
+
+
+component jtag_bypassreg_testchain_m10 is
+  generic (
+--    delay : integer := 0; -- this is the same value as in jtag_delay_expected_values
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer;
+    JTAG_M26_IRLEN : integer;
+    
+    max_bitcounter_ld : integer;-- set to: MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD + 7-- bitcounter counts to ir_fill_ones_length, to zerofill_length aswell as from begin of sending pattern to end of receiving pattern (zerofill_length). should write something like: max(MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD, 7)+1.
+
+    ld_maxdelay : integer := 2; -- floor of ld maxdelay
+    pattern_length : integer := 4;
+    pattern : std_logic_vector(4-1 downto 0) := "1001";
+    zerofill_numzeros_required : integer := 5 -- minimum number of zeros appearing at tdo while first zero filling phase
+  );
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    
+    BEGIN_JTAGBITCALC_IN   : in std_logic;
+    TRIGGER_BEGIN_TESTCHAIN_IN : in std_logic;
+    IDLE_OUT : out std_logic;
+    
+    -- length in chips of the chain -- corresponds to the number of bits the
+    -- output is shifted compared to the input, because the BYPASS registers
+    -- are selected, which are only one bit long
+    CHAIN_LENGTH_OUT : out std_logic_vector(max_bitcounter_ld-1 downto 0);
+    -- if after feeding in a sufficiently long sequence 
+    -- the expected output pattern doesnt occur
+    CHAIN_BROKEN_OUT : out std_logic;
+    
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    TDO_IN  : in  std_logic;
+    DELAY_IN : in std_logic_vector(ld_maxdelay-1 downto 0)
+    );
+end component;
+
+component jtag_update_error_counts_ram3a is
+  generic (
+     MAX_NUMCHIPS : integer;
+     MAX_NUMCHIPS_LD : integer;
+     MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+     MAX_REGISTERS_LD : integer;
+     MAX_REGISTERS_PLUS_ONE_LD : integer;
+     MAX_REGISTERS_PLUS_TWO_LD : integer;
+     RAM_MATCH_DIFF_COUNT_DEPTH : integer;
+     RAM_ERROR_COUNTS_DEPTH : integer;
+     WRITE_ERROR_THRESHOLD : integer;
+     READ_ERROR_THRESHOLD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    TRIGGER_UPDATE_DATA_CHANGED_IN : in std_logic;
+    TRIGGER_UPDATE_READ_ERRORS_IN : in std_logic;
+    TRIGGER_UPDATE_WRITE_ERRORS_IN : in std_logic;
+    TRIGGER_UPDATE_RUN_COUNTER_IN : in std_logic;
+    RUN_COUNTER_IN : in std_logic_vector(31 downto 0);
+    -- RAM2
+    RAM2_A_OUT : out std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+    RAM2_D_IN : in std_logic_vector(31 downto 0);
+    -- RAM3a
+    RAM3A_A_OUT : out std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+    RAM3A_D_IN : in std_logic_vector(31 downto 0);
+    RAM3A_D_OUT : out std_logic_vector(31 downto 0);
+    RAM3A_WR_OUT :out std_logic;
+    
+    REMOVED_CHIPS_IN : in std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+    NUMCHIPS_CONFIGURED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+    -- from (i+1)*MAX_REGISTERS_PLUS_ONE_LD-1 downto (i)*MAX_REGISTERS_PLUS_ONE_LD: numregs configured of chip i=(0, 1, 2, ...)
+    NUMREGS_CONFIGURED_IN : in std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);    
+    
+    -- if true, there were read errors in last dev_id read 
+    READ_ERRORS_OUT : out std_logic;
+    -- if true, there were read errors the last double write to registers (value read the second time didn't equal programmed value)
+    WRITE_ERRORS_OUT : out std_logic;    
+    -- if true, the data read from the registers wasn't equal to the data programmed a period before (for example in the last spill break)
+    DATA_CHANGED_OUT : out std_logic;    
+    
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+component jtag_init_ram1b is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_LD : integer
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_INIT_IN : std_logic;
+    -- RAM1a
+    RAM1A_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM1A_D_IN : in std_logic_vector(31 downto 0);
+    -- RAM1b
+    RAM1B_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM1B_D_IN : in std_logic_vector(31 downto 0);
+    RAM1B_WE_OUT : out std_logic;
+    RAM1B_D_OUT : out std_logic_vector(31 downto 0);
+    
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+
+component copy_ram is
+  generic (
+    ram_depth : integer;
+    ram_width : integer := 32
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_COPY_IN : std_logic;
+    -- RAM3a
+    RAMA_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAMA_D_IN : in std_logic_vector(ram_width-1 downto 0);
+    -- RAM3b
+    RAMB_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAMB_D_OUT : out std_logic_vector(ram_width-1 downto 0);
+    RAMB_WR_OUT :out std_logic;
+    
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+component blank_ram is
+  generic (
+    ram_depth : integer;
+    ram_width : integer := 32
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_BLANK_IN : std_logic;
+    -- RAM
+    RAM_A_OUT : out std_logic_vector(ram_depth-1 downto 0);
+    RAM_D_OUT : out std_logic_vector(ram_width-1 downto 0);
+    RAM_WR_OUT :out std_logic;
+    
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+
+component jtag_check_crc_ram1a is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer;
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+    MAX_REGLEN_PLUS_ONE_LD : integer;
+    MAX_REGISTERS_LD : integer
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    TRIGGER_CHECK_IN : std_logic;
+    -- RAM1a
+    RAM1A_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM1A_D_IN : in std_logic_vector(31 downto 0);
+    
+    NUMCHIPS_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+    CRC_OK_OUT : out std_logic_vector(MAX_NUMCHIPS-1 downto 0);
+    IDLE_OUT : out std_logic
+  );
+end component;
+
+
+component ram_dp is
+  generic(
+    depth : integer := 9;
+    width : integer := 32
+    );
+  port(
+    CLK   : in  std_logic;
+    wr1   : in  std_logic;
+    a1    : in  std_logic_vector(depth-1 downto 0);
+    dout1 : out std_logic_vector(width-1 downto 0);
+    din1  : in  std_logic_vector(width-1 downto 0);
+    a2    : in  std_logic_vector(depth-1 downto 0);
+    dout2 : out std_logic_vector(width-1 downto 0)
+    );
+end component;
+
+component ram_mux2to1_readport is
+  generic (
+    depth : integer;
+    width : integer := 32
+  );
+  port (
+    SELECT_IN : std_logic;
+    A0_IN : in std_logic_vector(depth-1 downto 0);
+    D0_OUT : out std_logic_vector(width-1 downto 0);
+    A1_IN : in std_logic_vector(depth-1 downto 0);
+    D1_OUT : out std_logic_vector(width-1 downto 0);
+    
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0)
+  );
+end component;
+
+component ram_mux4to1_readport is
+  generic (
+    depth : integer;
+    width : integer := 32
+  );
+  port (
+    SELECT_IN : in std_logic_vector(1 downto 0); -- two bit select input
+    A0_IN : in std_logic_vector(depth-1 downto 0);
+    D0_OUT : out std_logic_vector(width-1 downto 0);
+    A1_IN : in std_logic_vector(depth-1 downto 0);
+    D1_OUT : out std_logic_vector(width-1 downto 0);
+    A2_IN : in std_logic_vector(depth-1 downto 0);
+    D2_OUT : out std_logic_vector(width-1 downto 0);
+    A3_IN : in std_logic_vector(depth-1 downto 0);
+    D3_OUT : out std_logic_vector(width-1 downto 0);
+    
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0)
+  );
+end component;
+
+component ram_mux2to1_writeport is
+  generic (
+    depth : integer;
+    width : integer := 32
+  );
+  port (
+    SELECT_IN : in std_logic;
+    A0_IN    : in std_logic_vector(depth-1 downto 0);
+    D0_OUT   : out std_logic_vector(width-1 downto 0);
+    WR0_IN   : in  std_logic;
+    DIN0_IN  : in  std_logic_vector(width-1 downto 0);
+    
+    A1_IN : in std_logic_vector(depth-1 downto 0);
+    D1_OUT : out std_logic_vector(width-1 downto 0);
+    WR1_IN   : in  std_logic;
+    DIN1_IN  : in  std_logic_vector(width-1 downto 0);
+    
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0);
+    RAM_WR_OUT   : out  std_logic;
+    RAM_DIN_OUT  : out  std_logic_vector(width-1 downto 0)
+  );
+end component;
+
+
+
+-- component priorityencoder_seq is
+    -- generic ( n : positive;
+                  -- ldn:positive  -- rounded up ld(n + 1)
+        -- );
+    -- Port ( CLK_IN        : in STD_LOGIC;
+               -- RESET_IN      : in STD_LOGIC;
+               -- input_vect_IN : in  STD_LOGIC_VECTOR (n - 1 downto 0);
+          -- enc_pos_OUT : out  STD_LOGIC_VECTOR (ldn - 1 downto 0);
+                           -- start_IN : in STD_LOGIC;
+                           -- enc_pos_valid_OUT : out STD_LOGIC );
+-- end component;
+
+-- function ld(m:positive) return natural is
+-- variable n : positive;
+-- begin
+--    n = 0;
+--    a: loop
+--       if (2**n >= m) then
+--          return n;
+--       end if;
+--       n = n + 1;
+--    end loop a;
+-- end;
+
+component trb_net16_regio_bus_handler is
+  generic(
+    PORT_NUMBER : integer range 1 to c_BUS_HANDLER_MAX_PORTS := 3;
+    PORT_ADDRESSES : c_BUS_HANDLER_ADDR_t := (others => (others => '0'));
+    PORT_ADDR_MASK : c_BUS_HANDLER_WIDTH_t := (others => 0)
+    );
+  port(
+    CLK                   : in  std_logic;
+    RESET                 : in  std_logic;
+    DAT_ADDR_IN           : in  std_logic_vector(15 downto 0); -- address bus
+    DAT_DATA_IN           : in  std_logic_vector(31 downto 0); -- data from TRB endpoint
+    DAT_DATA_OUT          : out std_logic_vector(31 downto 0); -- data to TRB endpoint
+    DAT_READ_ENABLE_IN    : in  std_logic; -- read pulse
+    DAT_WRITE_ENABLE_IN   : in  std_logic; -- write pulse
+    DAT_TIMEOUT_IN        : in  std_logic; -- access timed out
+    DAT_DATAREADY_OUT     : out std_logic; -- your data, master, as requested
+    DAT_WRITE_ACK_OUT     : out std_logic; -- data accepted
+    DAT_NO_MORE_DATA_OUT  : out std_logic; -- don't disturb me now
+    DAT_UNKNOWN_ADDR_OUT  : out std_logic; -- noone here to answer your request
+
+    BUS_ADDR_OUT          : out std_logic_vector(PORT_NUMBER*16-1 downto 0);
+    BUS_DATA_OUT          : out std_logic_vector(PORT_NUMBER*32-1 downto 0);
+    BUS_READ_ENABLE_OUT   : out std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_WRITE_ENABLE_OUT  : out std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_TIMEOUT_OUT       : out std_logic_vector(PORT_NUMBER-1 downto 0);
+
+    BUS_DATA_IN           : in  std_logic_vector(32*PORT_NUMBER-1 downto 0);
+    BUS_DATAREADY_IN      : in  std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_WRITE_ACK_IN      : in  std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_NO_MORE_DATA_IN   : in  std_logic_vector(PORT_NUMBER-1 downto 0);
+    BUS_UNKNOWN_ADDR_IN   : in  std_logic_vector(PORT_NUMBER-1 downto 0);
+
+    STAT_DEBUG            : out std_logic_vector(31 downto 0)
+    );
+end component;
+
+constant STATUS_JTAG_ERROR     : integer := 0; -- length MAX_NUMCHIPS
+constant STATUS_WRITE_ERROR    : integer := MAX_NUMCHIPS;
+constant STATUS_WRITE_ERROR2   : integer := 2*MAX_NUMCHIPS;
+constant STATUS_READ_ERROR     : integer := 3*MAX_NUMCHIPS;
+constant STATUS_READ_ERROR2    : integer := 4*MAX_NUMCHIPS;
+constant STATUS_DATA_CHANGED   : integer := 5*MAX_NUMCHIPS;
+
+constant WRITE_STATUS_JTAG_ERROR     : integer := 0; -- length MAX_NUMCHIPS
+constant WRITE_STATUS_DATA_CHANGED     : integer := MAX_NUMCHIPS; -- length MAX_NUMCHIPS
+constant WRITE_STATUS_DATA_CHANGED_OVER_THRESHOLD     : integer := 2*MAX_NUMCHIPS; -- length MAX_NUMCHIPS
+constant READ_STATUS_JTAG_ERROR                   : integer := 0; -- length MAX_NUMCHIPS
+constant READ_STATUS_BIT_ERROR                    : integer := MAX_NUMCHIPS; -- length MAX_NUMCHIPS
+constant READ_STATUS_BIT_ERROR_OVER_THRESHOLD     : integer := 2*MAX_NUMCHIPS; -- length MAX_NUMCHIPS
+
+constant RAM_MATCH_DIFF_COUNT_DEPTH   : integer := MAX_NUMCHIPS_LD + MAX_REGISTERS_PLUS_ONE_LD + 1;--9; -- maximum 32 counts / chip (one for read DEV_ID register, rest for read/write data registers), maximum 16 chips, each count 32 bits
+constant RAM_ERROR_COUNTS_DEPTH : integer := MAX_REGISTERS_PLUS_TWO_LD+2+MAX_NUMCHIPS_LD; --10; -- ld(8+4*MAX_REGISTERS)+MAX_NUMCHIPS_LD= MAX_REGISTERS_PLUS_TWO_LD+2+MAX_NUMCHIPS_LD
+
+
+
+
+--type BUS_RW_STATE_TYPE is (BUS_RW_STATE_IDLE, BUS_RW_STATE_READ_RAM_WAIT, BUS_RW_STATE_READ_RAM, BUS_RW_STATE_WRITE_RAM, BUS_RW_STATE_RETURN_READ, BUS_RW_STATE_RETURN_WRITE);
+
+--signal bus_rw_state, bus_rw_state_next : BUS_RW_STATE_TYPE;
+--signal dev_state, dev_state_next : DEVICE_STATE_TYPE;
+signal data_register, data_register_next : std_logic_vector(31 downto 0);
+--signal cmd_register, cmd_register_next : std_logic_vector(31 downto 0);
+--signal length_register, length_register_next : std_logic_vector(31 downto 0);
+signal jtag_refresh_active, jtag_refresh_active_next : std_logic;
+signal jtag_check1_active, jtag_check1_active_next : std_logic;
+signal jtag_refresh_active_last, jtag_refresh_active_last_next : std_logic;
+-- has to fit number of 32 bit words needed to represent the status register
+--signal status_register_pos, status_register_pos_next : std_logic_vector(MAX_NUMCHIPS_LD+2+MAX_REGISTERS_LD-5 downto 0);
+--signal status_register_read_running, status_register_read_running_next : std_logic;
+
+-- mostly for debug purposes: status bits
+--signal my_status, my_status_next : std_logic_vector(8 downto 0);
+
+-- status register layout:
+--                         bits   MAX_NUMCHIPS -1 downto              0  : JTAG ERROR
+--                         bits 2*MAX_NUMCHIPS -1 downto   MAX_NUMCHIPS  : WRITE ERROR
+--                         bits 3*MAX_NUMCHIPS -1 downto 2*MAX_NUMCHIPS  : WRITE ERROR2
+--                         bits 4*MAX_NUMCHIPS -1 downto 3*MAX_NUMCHIPS  : READ ERROR
+--                         bits 5*MAX_NUMCHIPS -1 downto 4*MAX_NUMCHIPS  : READ ERROR2
+--                         bits 6*MAX_NUMCHIPS -1 downto 5*MAX_NUMCHIPS  : DATA CHANGED
+
+--signal status_register, status_register_next : std_logic_vector(6*MAX_NUMCHIPS-1 downto 0);
+signal crc_status_register, crc_status_register_next : std_logic_vector(MAX_NUMCHIPS-1 downto 0);
+
+--signal status_register_read_error2, status_register_read_error2_next : std_logic;
+
+--signal already_written, already_written_next : std_logic;
+-- contains a "1" at the positions of deactivated sensors
+signal removed_chips, removed_chips_next : std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+signal last_not_removed, last_not_removed_next : unsigned(MAX_NUMCHIPS_LD - 1 downto 0);
+signal first_not_removed, first_not_removed_next : unsigned(MAX_NUMCHIPS_LD - 1 downto 0);
+--signal reactivate_sensor, reactivate_sensor_next :  std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+--signal reactivate_sensor_strobe , reactivate_sensor_strobe_next :   std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+--signal deactivate_sensor, deactivate_sensor_next :  std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+--signal deactivate_sensor_strobe , deactivate_sensor_strobe_next :   std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+
+--signal disable_write, disable_write_next       : std_logic;
+--signal disable_writeerror_for_remove, disable_writeerror_for_remove_next : std_logic;
+--signal disable_remove, disable_remove_next : std_logic;
+--signal debug_one_remove, debug_one_remove_next : std_logic;
+--signal debug_one_remove_strobe, debug_one_remove_strobe_next : std_logic;
+--signal removed_strobe, removed_strobe_next : std_logic;
+--signal m26c_sensor_cand, m26c_sensor_cand_next : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+
+signal cc_chip_i, cc_chip_i_next       : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal cc_nextnotremoved_i, cc_nextnotremoved_i_next       : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal chip_counter_start, chip_counter_start_next    : std_logic;
+type   CC_STATE_TYPE is (CC_IDLE, CC_COUNT_SENSOR, CC_SETNUMCHIPS);
+signal cc_state, cc_state_next : CC_STATE_TYPE;
+
+
+--type REGISTER_POINTER_TYPE is range MAX_REGISTERS-1 downto 0;
+-- signal status_register_reg_sel, status_register_reg_sel_next : std_logic_vector(MAX_REGISTERS_LD -1 downto 0);
+-- signal status_register_reg_sel_pos, status_register_reg_sel_pos_next : std_logic_vector( (MAX_NUMCHIPS_LD +2 -5)-1 downto 0);
+--signal mux_sel, mux_sel_next : std_logic;
+--signal driver_data_out : std_logic;
+--signal driver_ready_for_cmd : std_logic;
+--signal driver_state_out : std_logic_vector(8 downto 0);
+--signal driver_data_arrived : std_logic;
+--signal driver_data_in : std_logic;
+--signal driver_cmd_in : std_logic_vector(3 downto 0);
+--signal driver_speed , driver_speed_next : std_logic_vector(15 downto 0);
+
+--signal bus_data_out_buffer, bus_data_out_buffer_next : std_logic_vector(31 downto 0);
+--signal bus_dataready, bus_dataready_next    : std_logic;
+--signal bus_no_more_data, bus_no_more_data_next : std_logic;
+--signal bus_write_ack, bus_write_ack_next    : std_logic;
+--signal bus_unknown_addr, bus_unknown_addr_next : std_logic;
+
+signal ram1a_a2      : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1a_dout2                  : std_logic_vector(31 downto 0);
+
+signal ram1a_a1_base_addr, ram1a_a1_base_addr_next : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal ram1a_a1_rel_addr, ram1a_a1_rel_addr_next : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);
+signal ram1a_a1                               : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1a_din1, ram1a_din1_next  : std_logic_vector(31 downto 0);
+signal ram1a_wr1, ram1a_wr1_next    : std_logic;
+signal ram1a_dout1                  : std_logic_vector(31 downto 0);
+
+signal ram1b_a2, ram1b_a2_next      : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1b_dout2                  : std_logic_vector(31 downto 0);
+
+signal ram1a_select, ram1a_select_next : std_logic_vector(1 downto 0);
+
+signal ram1b_a1 : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1b_din1  : std_logic_vector(31 downto 0);
+signal ram1b_wr1    : std_logic;
+signal ram1b_dout1                  : std_logic_vector(31 downto 0);
+signal ram1b_select, ram1b_select_next : std_logic;
+
+signal init_ram1b_ram1a_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal init_ram1b_ram1a_d : std_logic_vector(31 downto 0);
+signal init_ram1b_ram1b_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal init_ram1b_ram1b_dout : std_logic_vector(31 downto 0);
+signal init_ram1b_ram1b_din : std_logic_vector(31 downto 0);
+signal init_ram1b_ram1b_wr : std_logic;
+
+signal jtag_data_to_ram_ram1b_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal jtag_data_to_ram_ram1b_dout : std_logic_vector(31 downto 0);
+signal jtag_data_to_ram_ram1b_din : std_logic_vector(31 downto 0);
+signal jtag_data_to_ram_ram1b_wr : std_logic;
+
+signal jtag_check_crc_ram1a_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal jtag_check_crc_ram1a_d : std_logic_vector(31 downto 0);
+
+
+-- ram2 port 2: local flipflops
+--signal ram2_a2, ram2_a2_next      : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+--signal ram2_dout2                  : std_logic_vector(31 downto 0);
+-- ram2 port 1: non local flipflops, all connected to components
+signal ram2_a1 : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+signal ram2_din1  : std_logic_vector(31 downto 0);
+signal ram2_wr1    : std_logic;
+signal ram2_dout1                  : std_logic_vector(31 downto 0);
+signal ram2_select, ram2_select_next : std_logic;
+
+-- ram3a port 2: local flipflops
+signal ram3a_a2      : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal ram3a_dout2                 : std_logic_vector(31 downto 0);
+
+-- ram3a port 1: non local flipflops, all connected to components
+signal ram3a_a1      : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal ram3a_din1  : std_logic_vector(31 downto 0);
+signal ram3a_wr1    : std_logic;
+signal ram3a_dout1                 : std_logic_vector(31 downto 0);
+
+-- ram3b port 1: non local flipflops, all connected to components
+  -- see jtag_copy_ram3* signals
+-- ram3b port 2: local flipflops
+signal ram3b_a2_base_addr, ram3b_a2_base_addr_next : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-4-1 downto 0);
+signal ram3b_a2_rel_addr, ram3b_a2_rel_addr_next      : std_logic_vector(3 downto 0);
+signal ram3b_a2                               : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal ram3b_dout2                 : std_logic_vector(31 downto 0);
+
+signal ram3a_select, ram3a_select_next : std_logic;
+signal ram3a_rd_select, ram3a_rd_select_next : std_logic;
+
+signal jtag_tdo_compare_count_ram_a : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+signal jtag_tdo_compare_count_ram_dout : std_logic_vector(31 downto 0);
+signal jtag_tdo_compare_count_ram_din : std_logic_vector(31 downto 0);
+signal jtag_tdo_compare_count_ram_wr : std_logic;
+
+--signal jtag_update_error_counts_ram_a : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+--signal jtag_update_error_counts_ram_d : std_logic_vector(31 downto 0);
+
+
+
+
+
+--signal trigger_counter, trigger_counter_next : std_logic_vector(27 downto 0);
+--signal trigger_counter, trigger_counter_next : std_logic_vector(10 downto 0);
+
+
+
+signal idle_out_signal, idle_out_signal_next : std_logic;
+
+--signal write_status_register     : std_logic_vector((3*MAX_NUMCHIPS) * MAX_REGISTERS -1 downto 0);
+--signal write_status_register_or, write_status_register_or_next  : std_logic_vector((3*MAX_NUMCHIPS) -1 downto 0);
+--signal write_crc_status_register : std_logic_vector(MAX_REGISTERS - 1 downto 0);
+--signal write_cmd_out : std_logic_vector(3 downto 0);
+--signal write_data_out : std_logic;
+--signal write_idle : std_logic;
+--signal write_trigger, write_trigger_next : std_logic;
+--signal write_idle_last, write_idle_last_next : std_logic;
+--signal write_state_out : std_logic_vector(7 downto 0);
+--type ERROR_COUNTER_TYPE is array (MAX_NUMCHIPS -1 downto 0) of std_logic_vector(9 downto 0);
+--signal write_error_counter, write_error_counter_next : ERROR_COUNTER_TYPE;
+--signal write_error_over_threshold_counter, write_error_over_threshold_counter_next : ERROR_COUNTER_TYPE;
+--signal write_data_changed_counter, write_data_changed_counter_next : ERROR_COUNTER_TYPE;
+--constant MAX_ERROR_COUNT : std_logic_vector(9 downto 0) := "1111111111";
+
+--signal read_cmd_out : std_logic_vector(3 downto 0);
+--signal read_data_out : std_logic;
+--signal read_trigger, read_trigger_next : std_logic;
+--signal read_status_register : std_logic_vector(3*MAX_NUMCHIPS -1 downto 0);
+--signal read_idle : std_logic;
+--signal read_idle_last, read_idle_last_next : std_logic;
+--signal read_state_out : std_logic_vector(7 downto 0);
+--signal read_error_counter, read_error_counter_next : ERROR_COUNTER_TYPE;
+--signal read_error_over_threshold_counter, read_error_over_threshold_counter_next : ERROR_COUNTER_TYPE;
+
+signal numchips_configured, numchips_configured_next : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal numchips_active, numchips_active_next         : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal numchips_active_acc, numchips_active_acc_next : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+
+signal debug_m26cs_state, debug_m26cs_state_next : std_logic_vector(7 downto 0);
+signal debug_test, debug_test_next : std_logic_vector(31 downto 0);
+
+signal debug_trigger_counter, debug_trigger_counter_next : unsigned(31 downto 0);
+
+--signal bus2_ram_addr_out : std_logic_vector(7 downto 0);
+signal bus2_ram_addr_out : std_logic_vector(15 downto 0);
+signal bus2_ram_data_out : std_logic_vector(31 downto 0);
+signal bus2_ram_read_enable_out : std_logic;
+signal bus2_ram_write_enable_out : std_logic;
+signal bus2_ram_timeout_out : std_logic;
+
+signal bus2_ram_data_in, bus2_ram_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_ram_dataready_in, bus2_ram_dataready_in_next : std_logic;
+signal bus2_ram_write_ack_in, bus2_ram_write_ack_in_next : std_logic;
+signal bus2_ram_no_more_data_in, bus2_ram_no_more_data_in_next : std_logic;
+signal bus2_ram_unknown_addr_in, bus2_ram_unknown_addr_in_next : std_logic;
+
+--signal bus2_status_addr_out : std_logic_vector(4 downto 0);
+signal bus2_status_addr_out : std_logic_vector(15 downto 0);
+signal bus2_status_data_out : std_logic_vector(31 downto 0);
+signal bus2_status_read_enable_out : std_logic;
+signal bus2_status_write_enable_out : std_logic;
+signal bus2_status_timeout_out : std_logic;
+
+signal bus2_status_data_in, bus2_status_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_status_dataready_in, bus2_status_dataready_in_next : std_logic;
+signal bus2_status_write_ack_in, bus2_status_write_ack_in_next : std_logic;
+signal bus2_status_no_more_data_in, bus2_status_no_more_data_in_next : std_logic;
+signal bus2_status_unknown_addr_in, bus2_status_unknown_addr_in_next : std_logic;
+
+--signal bus2_status2_addr_out : std_logic_vector(4 downto 0);
+signal bus2_status2_addr_out : std_logic_vector(15 downto 0);
+signal bus2_status2_data_out : std_logic_vector(31 downto 0);
+signal bus2_status2_read_enable_out : std_logic;
+signal bus2_status2_write_enable_out : std_logic;
+signal bus2_status2_timeout_out : std_logic;
+
+signal bus2_status2_data_in, bus2_status2_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_status2_dataready_in, bus2_status2_dataready_in_next : std_logic;
+signal bus2_status2_write_ack_in, bus2_status2_write_ack_in_next : std_logic;
+signal bus2_status2_no_more_data_in, bus2_status2_no_more_data_in_next : std_logic;
+signal bus2_status2_unknown_addr_in, bus2_status2_unknown_addr_in_next : std_logic;
+
+signal bus2_status2_read_ram3b, bus2_status2_read_ram3b_next : std_logic;
+signal buf_bus2_status2_read_ram3b, buf_bus2_status2_read_ram3b_next : std_logic;
+
+signal status2_run_counter, status2_run_counter_next : unsigned(31 downto 0);
+
+signal status2_chain_status, status2_chain_status_next : std_logic_vector(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+signal status2_copy_finished: std_logic;
+
+
+--signal bus2_control_addr_out : std_logic_vector(4 downto 0);
+signal bus2_control_addr_out : std_logic_vector(15 downto 0);
+signal bus2_control_data_out : std_logic_vector(31 downto 0);
+signal bus2_control_read_enable_out : std_logic;
+signal bus2_control_write_enable_out : std_logic;
+signal bus2_control_timeout_out : std_logic;
+
+signal bus2_control_data_in, bus2_control_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_control_dataready_in, bus2_control_dataready_in_next : std_logic;
+signal bus2_control_write_ack_in, bus2_control_write_ack_in_next : std_logic;
+signal bus2_control_no_more_data_in, bus2_control_no_more_data_in_next : std_logic;
+signal bus2_control_unknown_addr_in, bus2_control_unknown_addr_in_next : std_logic;
+
+--signal bus2_debug_addr_out : std_logic_vector(4 downto 0);
+signal bus2_debug_addr_out : std_logic_vector(15 downto 0);
+signal bus2_debug_data_out : std_logic_vector(31 downto 0);
+signal bus2_debug_read_enable_out : std_logic;
+signal bus2_debug_write_enable_out : std_logic;
+signal bus2_debug_timeout_out : std_logic;
+
+signal bus2_debug_data_in, bus2_debug_data_in_next : std_logic_vector(31 downto 0);
+signal bus2_debug_dataready_in, bus2_debug_dataready_in_next : std_logic;
+signal bus2_debug_write_ack_in, bus2_debug_write_ack_in_next : std_logic;
+signal bus2_debug_no_more_data_in, bus2_debug_no_more_data_in_next : std_logic;
+signal bus2_debug_unknown_addr_in, bus2_debug_unknown_addr_in_next : std_logic;
+
+signal buf_bus2_ram_read_enable_out, buf_bus2_ram_read_enable_out_next : std_logic;
+signal buf_buf_bus2_ram_read_enable_out, buf_buf_bus2_ram_read_enable_out_next : std_logic;
+-- monitoring
+--signal read_mon_write_out : std_logic;
+-- off_spill timer (htcounter)
+--signal htcounter_next, htcounter : unsigned(26 downto 0); -- 27 bit = approx 1.34 seconds
+--signal have_time_for_write, have_time_for_write_next : std_logic;
+signal prog_jtag_finished, prog_jtag_finished_next : std_logic;
+--signal last_write_successful,  last_write_successful_next : std_logic;
+
+-- BEGIN NEW SIGNALS
+signal jtag_next_not_removed, jtag_next_not_removed_next :  std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD*(MAX_NUMCHIPS+1)-1 downto 0);
+signal jtag_write_ram1a_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal jtag_write_ram1a_d : std_logic_vector(31 downto 0);
+signal trigger_jtag_write, trigger_jtag_write_next : std_logic;
+signal jtag_write_is_dr_bit : std_logic;
+signal jtag_write_is_firstbit : std_logic;
+signal jtag_write_is_lastbit : std_logic;
+signal jtag_write_chipnum : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal jtag_write_regnum : std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+signal jtag_write_enable_jtag_clock : std_logic;
+signal jtag_write_last_tck_cycle : std_logic;
+signal jtag_write_tms : std_logic;
+signal jtag_write_tdi : std_logic;
+signal jtag_write_expected_tdo : std_logic;
+signal jtag_write_idle : std_logic;
+signal jtag_write_last_error_code: std_logic_vector(2 downto 0);
+signal jtag_write_numregs_configured : std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);
+
+signal jtag_read_ram1a_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal jtag_read_ram1a_d : std_logic_vector(31 downto 0);
+signal trigger_jtag_read, trigger_jtag_read_next : std_logic;
+signal jtag_read_is_dr_bit : std_logic;
+signal jtag_read_is_firstbit : std_logic;
+signal jtag_read_is_lastbit : std_logic;
+signal jtag_read_chipnum : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal jtag_read_enable_jtag_clock : std_logic;
+signal jtag_read_last_tck_cycle : std_logic;
+signal jtag_read_tms : std_logic;
+signal jtag_read_tdi : std_logic;
+signal jtag_read_expected_tdo : std_logic;
+signal jtag_read_idle : std_logic;
+
+--signal trigger_bypassreg, trigger_bypassreg_next : std_logic;
+signal jtag_bypassreg_idle : std_logic;
+signal jtag_bypassreg_length : std_logic_vector(MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD + 7-1 downto 0);
+signal jtag_bypassreg_chain_broken : std_logic;
+signal jtag_bypassreg_enable_jtag_clock : std_logic;
+signal jtag_bypassreg_last_tck_cycle : std_logic;
+signal jtag_bypassreg_tms : std_logic;
+signal jtag_bypassreg_tdi : std_logic;
+-- begin: global_jtag_counter settings
+signal jtag_clock_cycle_length, jtag_clock_cycle_length_next : unsigned(9 downto 0); -- 10 bit linear adjustment of tck cycle length (10ns-10us)
+signal jtag_clock_time1, jtag_clock_time1_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_clock_time2, jtag_clock_time2_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_sample_time1, jtag_sample_time1_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_sample_time2, jtag_sample_time2_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_sample_time3, jtag_sample_time3_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+signal jtag_set_data_time, jtag_set_data_time_next : unsigned(9 downto 0); -- 10 bit linear adjustment within tck cycle with system clock resolution
+-- begin: periodic pulses, periodic with global_jtag_counter
+signal begin_jtag_bitcalc : std_logic;
+signal jtag_sample_pulse1 : std_logic;
+signal jtag_sample_pulse2 : std_logic;
+signal jtag_sample_pulse3 : std_logic;
+signal jtag_sample_pulse3_d1, jtag_sample_pulse3_d1_next : std_logic;
+signal jtag_set_data_pulse : std_logic;
+-- end: periodic pulses
+
+signal jtag_tdo_sampled : std_logic;
+signal jtag_tdo_sampling_error : std_logic;
+
+signal jtag_tms : std_logic;
+signal jtag_tdi : std_logic;
+signal jtag_enable_clock : std_logic;
+
+signal jtag_meta_is_dr_bit : std_logic;
+signal jtag_meta_is_firstbit : std_logic;
+signal jtag_meta_is_lastbit : std_logic;
+signal jtag_meta_chipnum : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal jtag_meta_regnum : std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+signal jtag_meta_last_tck_cycle : std_logic;
+signal jtag_meta_expected_tdo : std_logic;
+
+signal jtag_delayed_is_dr_bit : std_logic;
+signal jtag_delayed_is_firstbit : std_logic;
+signal jtag_delayed_is_lastbit : std_logic;
+signal jtag_delayed_chipnum : std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+signal jtag_delayed_regnum : std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+signal jtag_delayed_tdo_expected : std_logic;
+
+-- jtag_update_error_counts
+signal trigger_juec_update_d_ch, trigger_juec_update_d_ch_next : std_logic;
+signal trigger_juec_update_rd_err, trigger_juec_update_rd_err_next : std_logic;
+signal trigger_juec_update_wr_err, trigger_juec_update_wr_err_next : std_logic;
+signal trigger_juec_update_run_counter, trigger_juec_update_run_counter_next : std_logic;
+signal juec_ram2_a : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+signal juec_ram2_dout : std_logic_vector(31 downto 0);
+signal juec_ram3a_a : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal juec_ram3a_dout : std_logic_vector(31 downto 0);
+signal juec_ram3a_din : std_logic_vector(31 downto 0);
+signal juec_ram3a_wr : std_logic;
+signal juec_idle : std_logic;
+signal juec_data_changed : std_logic;
+signal juec_read_errors : std_logic;
+signal juec_write_errors : std_logic;
+
+signal jtag_copy_ram3_ram3a_a : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal jtag_copy_ram3_ram3a_dout : std_logic_vector(31 downto 0);
+signal jtag_copy_ram3_ram3b_a : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal jtag_copy_ram3_ram3b_din : std_logic_vector(31 downto 0);
+signal jtag_copy_ram3_ram3b_wr : std_logic;
+signal jtag_copy_ram3_idle : std_logic;
+
+
+signal trigger_blank_ram3a, trigger_blank_ram3a_next : std_logic;
+signal jtag_blank_ram3a_ram3a_a : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal jtag_blank_ram3a_ram3a_din : std_logic_vector(31 downto 0);
+signal jtag_blank_ram3a_ram3a_wr : std_logic;
+signal jtag_blank_ram3a_idle : std_logic;
+
+
+type M26CS_STATE_TYPE is (M26CSS_STOPPED, M26CSS_CHECK1_WAIT_FOR_HAVE_TIME, M26CSS_WAIT_FOR_TRIGGER, M26CSS_CHECK_CRC_RAM1A_BEGIN, M26CSS_CHECK_CRC_RAM1A_WAIT, M26CSS_INIT_RAM1B_BEGIN, M26CSS_INIT_RAM1B_WAIT, M26CSS_DATA_CHANGED_BEGIN, M26CSS_DATA_CHANGED_WAIT, M26CSS_BLANK_RAM3A_WAIT, M26CSS_JUEC_DATA_CHANGED_BEGIN, M26CSS_JUEC_DATA_CHANGED_WAIT, M26CSS_COUNT_CHIPS_BEGIN, M26CSS_COUNT_CHIPS_WAIT, M26CSS_BYPASSREG_BEGIN, M26CSS_BYPASSREG_WAIT, M26CSS_READ1_BEGIN, M26CSS_READ1_WAIT, M26CSS_JUEC_READ_BEGIN, M26CSS_JUEC_READ_WAIT, M26CSS_REQUEST_RESET_BEGIN, M26CSS_REQUEST_RESET_WAIT, M26CSS_REQUESTED_RESET_WAIT, M26CSS_WRITE1_BEGIN, M26CSS_WRITE1_WAIT, M26CSS_WRITE2_BEGIN, M26CSS_WRITE2_WAIT, M26CSS_JUEC_WRITE_BEGIN, M26CSS_JUEC_WRITE_WAIT, M26CSS_JUEC_RUN_COUNTER_BEGIN, M26CSS_JUEC_RUN_COUNTER_WAIT,
+M26CSS_WRITEONCE_CHECK_CRC_RAM1A_BEGIN, M26CSS_WRITEONCE_CHECK_CRC_RAM1A_WAIT, M26CSS_WRITEONCE_INIT_RAM1B_BEGIN, M26CSS_WRITEONCE_INIT_RAM1B_WAIT, M26CSS_WRITEONCE_COUNT_CHIPS_BEGIN, M26CSS_WRITEONCE_COUNT_CHIPS_WAIT, M26CSS_WRITEONCE_WRITE1_BEGIN, M26CSS_WRITEONCE_WRITE1_WAIT );
+signal m26cs_state, m26cs_state_next : M26CS_STATE_TYPE;
+--signal write_count, write_count_next : std_logic_vector(31 downto 0);
+signal m26cs_stopped : std_logic;
+signal m26cs_firstrun, m26cs_firstrun_next : std_logic;
+signal breakpoint_active, breakpoint_active_next : std_logic_vector(9 downto 0);
+-- chain_status:
+-- bit 0:           chain broken
+-- bit 1:           CRC_error(s)
+-- bit 2:           programmed 
+-- bits 3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 3: chain length
+signal chain_status, chain_status_next : std_logic_vector(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+
+signal trigger_begin_bypassreg, trigger_begin_bypassreg_next : std_logic;
+signal trigger_copy_ram3, trigger_copy_ram3_next : std_logic;
+--signal jtag_tdo_compare_count_internal_error : std_logic;
+signal run_counter, run_counter_next : unsigned(31 downto 0);
+signal jtag_status2_copy_requested, jtag_status2_copy_requested_next : std_logic;
+
+signal jtag_status2_copy_request_strobe, jtag_status2_copy_request_strobe_next : std_logic;
+type CPS2_STATE_TYPE is (CPS2_IDLE, CPS2_COPY_BEGIN, CPS2_COPY_WAIT);
+signal cps2_state, cps2_state_next : CPS2_STATE_TYPE;
+signal jtag_clock_pulse1 : std_logic;
+signal jtag_clock_pulse2 : std_logic;
+signal jtag_tck : std_logic;
+
+signal jtag_pulses_reset, jtag_pulses_reset_next : std_logic;
+signal jtag_pulses_reset_complete : std_logic;
+
+signal jtag_chain_broken_counter, jtag_chain_broken_counter_next : unsigned(JTAG_CHAIN_BROKEN_COUNTER_BITS-1 downto 0);
+
+signal jtag_check_crc_ram1a_crc_ok : std_logic_vector(MAX_NUMCHIPS-1 downto 0);
+signal jtag_check_crc_ram1a_idle : std_logic;
+signal trigger_check_crc_ram1a, trigger_check_crc_ram1a_next : std_logic;
+signal trigger_init_ram1b, trigger_init_ram1b_next : std_logic;
+signal jtag_init_ram1b_idle : std_logic;
+
+signal ram1b1c_copy_trigger_strobe, ram1b1c_copy_trigger_strobe_next : std_logic_vector(3 downto 0);
+signal trigger_copy_ram1b1c, trigger_copy_ram1b1c_next : std_logic;
+signal copy_ram1b1c_ram1b_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal copy_ram1b1c_ram1b_dout : std_logic_vector(31 downto 0);
+signal copy_ram1b1c_ram1c_a : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal copy_ram1b1c_ram1c_din : std_logic_vector(31 downto 0);
+signal copy_ram1b1c_ram1c_wr : std_logic;
+signal copy_ram1b1c_idle : std_logic;
+
+signal ram1c_a2, ram1c_a2_next : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram1c_dout2 : std_logic_vector(31 downto 0);
+
+signal ram1b1c_copy_trigger_active, ram1b1c_copy_trigger_active_next : std_logic_vector(3 downto 0);
+signal ram1b_copy_requested, ram1b_copy_requested_next : std_logic;
+signal ram1c_run_counter, ram1c_run_counter_next : unsigned(31 downto 0);
+signal ram1c_chain_status, ram1c_chain_status_next :  std_logic_vector(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+
+type CPR1BC_STATE_TYPE is (CPR1BC_IDLE, CPR1BC_COPY_BEGIN, CPR1BC_COPY_WAIT);
+signal cpr1bc_state, cpr1bc_state_next : CPR1BC_STATE_TYPE;
+
+-- DEBUGTDO fifo and control signals
+signal  tdodebugsamples : std_logic_vector(31 downto 0);
+signal debugtdo_rd_en : std_logic;
+signal debugtdo_wr_en : std_logic;
+signal debugtdo_dout : std_logic_vector(31 downto 0);
+signal debugtdo_empty : std_logic;
+signal debugtdo_full : std_logic;
+signal debugtdo_overflow : std_logic;
+signal debugtdo_underflow : std_logic;
+signal resetdebugtdo_toffifo : std_logic;
+signal resetdebugtdo_strobe : std_logic;
+signal debugtdo_activate_strobe : std_logic;
+signal debugtdo_active : std_logic;
+signal debugtdo_timeout, debugtdo_timeout_next : std_logic_vector(31 downto 0);
+signal debugtdo_counter : std_logic_vector(31 downto 0);
+signal debugtdo_ran : std_logic;
+
+signal crc_error_on_last_check, crc_error_on_last_check_next : std_logic;
+signal last_run_successful, last_run_successful_next : std_logic;
+signal last_run_successful_tmp, last_run_successful_tmp_next : std_logic;
+signal begin_count_read_errors :std_logic;
+signal begin_count_write_errors :std_logic;
+signal begin_count_data_changed :std_logic;
+signal end_count_read_errors :std_logic;
+signal end_count_write_errors :std_logic;
+signal end_count_data_changed :std_logic;
+signal last_read_error : std_logic;
+signal last_write_error : std_logic;
+signal last_data_changed : std_logic;
+
+signal sREAD_ID_ERRORS_COUNT_OUT : std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+signal sWRITE_ERRORS_COUNT_OUT : std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+signal sDATA_CHANGED_COUNT_OUT : std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+
+-- INSERTLABEL:  signals
+
+signal m26csoptions, m26csoptions_next : std_logic_vector(0 downto 0);
+signal jtag_delay_expvalues, jtag_delay_expvalues_next :  std_logic_vector(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0);
+
+signal request_reset, request_reset_next : std_logic;
+signal reset_wait, reset_wait_next : unsigned(7 downto 0);
+constant reset_wait_zero : unsigned(7 downto 0) := "00000000";
+
+signal run_requested, run_requested_next : std_logic;
+signal write_once_requested, write_once_requested_next : std_logic;
+signal write_once_count, write_once_count_next : unsigned(COUNTER_WIDTHS-1 downto 0);
+
+
+
+begin
+
+--fifo32bit_debugtdo : fifo32bit
+--port map(
+--        clk => CLK_IN,
+--        din => tdodebugsamples(31 downto 0),
+--        rd_en => debugtdo_rd_en,
+--        rst => resetdebugtdo_toffifo,
+--        wr_en => debugtdo_wr_en,
+--        dout => debugtdo_dout(31 downto 0),
+--        empty => debugtdo_empty,
+--        full => debugtdo_full,
+--     overflow => debugtdo_overflow,
+--        underflow => debugtdo_underflow);
+
+
+
+jtag_bypassreg_enable_jtag_clock  <=  '0';
+
+
+resetdebugtdo_toffifo <= resetdebugtdo_strobe OR RESET_IN;
+debugtdo_wr_en <= '1' when debugtdo_active = '1' and debugtdo_timeout <= debugtdo_counter else '0';
+
+tdodebugsamples(31) <= begin_jtag_bitcalc;
+tdodebugsamples(30) <= jtag_clock_pulse1;
+tdodebugsamples(29) <= jtag_clock_pulse2;
+tdodebugsamples(28) <= jtag_sample_pulse1;
+tdodebugsamples(27) <= jtag_sample_pulse2;
+tdodebugsamples(26) <= jtag_sample_pulse3;
+tdodebugsamples(25) <= jtag_set_data_pulse;
+tdodebugsamples(1) <= JTAG_TDO_IN;
+
+RUN_COUNTER_OUT <= std_logic_vector(run_counter);
+STARTED_OUT  <= jtag_refresh_active;
+CRC_ERROR_OUT <= crc_error_on_last_check;
+LAST_RUN_SUCCESSFUL_OUT <= last_run_successful;
+LAST_DATA_CHANGED_OUT <= last_data_changed;
+LAST_WRITE_ERRORS_OUT <= last_write_error;
+LAST_READ_ERRORS_OUT <= last_read_error;
+
+REQUEST_RESET_OUT <= request_reset;
+
+the_bus_handler : trb_net16_regio_bus_handler
+  generic map(
+    PORT_NUMBER => 5,
+    PORT_ADDRESSES => (0 => x"0000", 1 => x"0100", 2 => x"0120", 3 => x"0140", 4 => x"0160", others => (others => '0')),
+    PORT_ADDR_MASK => (0 => 8,       1 => 5,       2 => 5,       3 => 5,       4 => 5,       others => 0)
+    )
+  port map(
+    CLK                    => CLK_IN,
+    RESET                  => RESET_IN,
+    DAT_ADDR_IN(15 downto 9) => "0000000", 
+    DAT_ADDR_IN(8 downto 0)=> BUS_ADDR_IN, -- address bus
+    DAT_DATA_IN            => BUS_DATA_IN, -- data from TRB endpoint
+    DAT_DATA_OUT           => BUS_DATA_OUT, -- data to TRB endpoint
+    DAT_READ_ENABLE_IN     => BUS_READ_IN, -- read pulse
+    DAT_WRITE_ENABLE_IN    => BUS_WRITE_IN, -- write pulse
+    DAT_TIMEOUT_IN         => '0', -- access timed out
+    DAT_DATAREADY_OUT      => BUS_DATAREADY_OUT, -- your data, master, as requested
+    DAT_WRITE_ACK_OUT      => BUS_WRITE_ACK_OUT, -- data accepted
+    DAT_NO_MORE_DATA_OUT   => BUS_NO_MORE_DATA_OUT, -- don't disturb me now
+    DAT_UNKNOWN_ADDR_OUT   => BUS_UNKNOWN_ADDR_OUT, -- noone here to answer your request
+
+   --BUS_ADDR_OUT(0*16+15 downto 0*16+8) => open,
+    BUS_ADDR_OUT(0*16+15 downto 0*16) => bus2_ram_addr_out,
+   --BUS_ADDR_OUT(1*16+15 downto 1*16+5) => open,
+    BUS_ADDR_OUT(1*16+15 downto 1*16) => bus2_status_addr_out,
+   --BUS_ADDR_OUT(2*16+15 downto 2*16+5) => open,
+    BUS_ADDR_OUT(2*16+15 downto 2*16) => bus2_control_addr_out,
+   --BUS_ADDR_OUT(3*16+15 downto 3*16+5) => open,
+    BUS_ADDR_OUT(3*16+15 downto 3*16) => bus2_debug_addr_out,
+    BUS_ADDR_OUT(4*16+15 downto 4*16) => bus2_status2_addr_out,
+    BUS_DATA_OUT(0*32+31 downto 0*32) => bus2_ram_data_out,
+    BUS_DATA_OUT(1*32+31 downto 1*32) => bus2_status_data_out,
+    BUS_DATA_OUT(2*32+31 downto 2*32) => bus2_control_data_out,
+    BUS_DATA_OUT(3*32+31 downto 3*32) => bus2_debug_data_out,
+    BUS_DATA_OUT(4*32+31 downto 4*32) => bus2_status2_data_out,
+    BUS_READ_ENABLE_OUT(0)            => bus2_ram_read_enable_out,
+    BUS_READ_ENABLE_OUT(1)            => bus2_status_read_enable_out,
+    BUS_READ_ENABLE_OUT(2)            => bus2_control_read_enable_out,
+    BUS_READ_ENABLE_OUT(3)            => bus2_debug_read_enable_out,
+    BUS_READ_ENABLE_OUT(4)            => bus2_status2_read_enable_out,
+    BUS_WRITE_ENABLE_OUT(0)              => bus2_ram_write_enable_out,
+    BUS_WRITE_ENABLE_OUT(1)              => bus2_status_write_enable_out,
+    BUS_WRITE_ENABLE_OUT(2)              => bus2_control_write_enable_out,
+    BUS_WRITE_ENABLE_OUT(3)              => bus2_debug_write_enable_out,
+    BUS_WRITE_ENABLE_OUT(4)              => bus2_status2_write_enable_out,
+    BUS_TIMEOUT_OUT(0)                   => bus2_ram_timeout_out,
+    BUS_TIMEOUT_OUT(1)                   => bus2_status_timeout_out,
+    BUS_TIMEOUT_OUT(2)                   => bus2_control_timeout_out,
+    BUS_TIMEOUT_OUT(3)                   => bus2_debug_timeout_out,
+    BUS_TIMEOUT_OUT(4)                   => bus2_status2_timeout_out,
+
+    BUS_DATA_IN(0*32+31 downto 0*32)  => bus2_ram_data_in,
+    BUS_DATA_IN(1*32+31 downto 1*32)  => bus2_status_data_in,
+    BUS_DATA_IN(2*32+31 downto 2*32)  => bus2_control_data_in,
+    BUS_DATA_IN(3*32+31 downto 3*32)  => bus2_debug_data_in,
+    BUS_DATA_IN(4*32+31 downto 4*32)  => bus2_status2_data_in,
+    BUS_DATAREADY_IN(0)               => bus2_ram_dataready_in,
+    BUS_DATAREADY_IN(1)               => bus2_status_dataready_in,
+    BUS_DATAREADY_IN(2)               => bus2_control_dataready_in,
+    BUS_DATAREADY_IN(3)               => bus2_debug_dataready_in,
+    BUS_DATAREADY_IN(4)               => bus2_status2_dataready_in,
+    BUS_WRITE_ACK_IN(0)               => bus2_ram_write_ack_in,
+    BUS_WRITE_ACK_IN(1)               => bus2_status_write_ack_in,
+    BUS_WRITE_ACK_IN(2)               => bus2_control_write_ack_in,
+    BUS_WRITE_ACK_IN(3)               => bus2_debug_write_ack_in,
+    BUS_WRITE_ACK_IN(4)               => bus2_status2_write_ack_in,
+    BUS_NO_MORE_DATA_IN(0)            => bus2_ram_no_more_data_in,
+    BUS_NO_MORE_DATA_IN(1)            => bus2_status_no_more_data_in,
+    BUS_NO_MORE_DATA_IN(2)            => bus2_control_no_more_data_in,
+    BUS_NO_MORE_DATA_IN(3)            => bus2_debug_no_more_data_in,
+    BUS_NO_MORE_DATA_IN(4)            => bus2_status2_no_more_data_in,
+    BUS_UNKNOWN_ADDR_IN(0)               => bus2_ram_unknown_addr_in,
+    BUS_UNKNOWN_ADDR_IN(1)               => bus2_status_unknown_addr_in,
+    BUS_UNKNOWN_ADDR_IN(2)               => bus2_control_unknown_addr_in,    
+    BUS_UNKNOWN_ADDR_IN(3)               => bus2_debug_unknown_addr_in,
+    BUS_UNKNOWN_ADDR_IN(4)               => bus2_status2_unknown_addr_in,
+    
+
+
+
+
+
+    STAT_DEBUG                        => open
+    );
+
+
+
+-- RAM1a holds JTAG registers, written via trbnet
+ram_jtag_registers : ram_dp         generic map(
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => ram1a_wr1,
+                                     a1    => ram1a_a1,
+                                     dout1 => ram1a_dout1,
+                                     din1  => ram1a_din1,
+                                     a2    => ram1a_a2,
+                                     dout2 => ram1a_dout2
+                                     );
+ram1a_readport_mux: ram_mux4to1_readport generic map( 
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map (   
+                                     SELECT_IN => ram1a_select,
+                                     A0_IN => jtag_read_ram1a_a,
+                                     D0_OUT => jtag_read_ram1a_d,
+                                     A1_IN => jtag_write_ram1a_a,
+                                     D1_OUT => jtag_write_ram1a_d,
+                                     A2_IN  => init_ram1b_ram1a_a,
+                                     D2_OUT  => init_ram1b_ram1a_d,
+                                     A3_IN => jtag_check_crc_ram1a_a,
+                                     D3_OUT => jtag_check_crc_ram1a_d,
+    
+                                     RAM_A_OUT   => ram1a_a2,
+                                     RAM_DOUT_IN => ram1a_dout2
+                                     );
+  
+-- RAM1b holds JTAG registers, read from JTAG chain
+ram_jtag_registers_read : ram_dp         generic map(
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => ram1b_wr1,
+                                     a1    => ram1b_a1,
+                                     dout1 => ram1b_dout1,
+                                     din1  => ram1b_din1,
+                                     a2    => copy_ram1b1c_ram1b_a,--ram1b_a2,
+                                     dout2 => copy_ram1b1c_ram1b_dout--ram1b_dout2
+                                     );
+
+-- RAM1b holds JTAG registers, read from JTAG chain
+ram_jtag_registers_copy_read : ram_dp         generic map(
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => copy_ram1b1c_ram1c_wr,
+                                     a1    => copy_ram1b1c_ram1c_a,
+                                     dout1 => open,
+                                     din1  => copy_ram1b1c_ram1c_din,
+                                     a2    => ram1c_a2,
+                                     dout2 => ram1c_dout2
+                                     );
+
+
+ram1b_mux2to1_writeport : ram_mux2to1_writeport generic map (
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( SELECT_IN => ram1b_select,
+                                     A0_IN  =>    init_ram1b_ram1b_a,
+                                     D0_OUT  =>   init_ram1b_ram1b_dout,
+                                     WR0_IN  =>   init_ram1b_ram1b_wr,
+                                     DIN0_IN =>   init_ram1b_ram1b_din,
+   
+                                     A1_IN   =>   jtag_data_to_ram_ram1b_a,
+                                     D1_OUT  =>   jtag_data_to_ram_ram1b_dout,
+                                     WR1_IN  =>   jtag_data_to_ram_ram1b_wr,
+                                     DIN1_IN =>   jtag_data_to_ram_ram1b_din,
+                                     
+                                     RAM_A_OUT    => ram1b_a1,
+                                     RAM_DOUT_IN  => ram1b_dout1,
+                                     RAM_WR_OUT   => ram1b_wr1,
+                                     RAM_DIN_OUT  => ram1b_din1
+                                     );
+
+                                     
+-- RAM2 holds counts of matching/not matching bits of each register of each chip
+ram_match_diff_count : ram_dp         generic map(
+                                     depth => RAM_MATCH_DIFF_COUNT_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => ram2_wr1,
+                                     a1    => ram2_a1,
+                                     dout1 => ram2_dout1,
+                                     din1  => ram2_din1,
+                                     a2    => "00000000",--ram2_a2,
+                                     dout2 => open --ram2_dout2
+                                     );
+ram2_mux2to1_writeport : ram_mux2to1_writeport generic map (
+                                     depth => RAM_MATCH_DIFF_COUNT_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( SELECT_IN => ram2_select,
+                                     A0_IN  =>    jtag_tdo_compare_count_ram_a,
+                                     D0_OUT  =>   jtag_tdo_compare_count_ram_dout,
+                                     WR0_IN  =>   jtag_tdo_compare_count_ram_wr,
+                                     DIN0_IN =>   jtag_tdo_compare_count_ram_din,
+   
+                                     A1_IN   =>   juec_ram2_a,
+                                     D1_OUT  =>   juec_ram2_dout,
+                                     WR1_IN  =>   '0',
+                                     DIN1_IN =>   x"0000_0000",
+                                     
+                                     RAM_A_OUT    => ram2_a1,
+                                     RAM_DOUT_IN  => ram2_dout1,
+                                     RAM_WR_OUT   => ram2_wr1,
+                                     RAM_DIN_OUT  => ram2_din1
+                                     );
+
+-- RAM3 holds counts of errors and 'error over threshold's of each register of each chip
+ram_error_counts_A : ram_dp         generic map(
+                                     depth => RAM_ERROR_COUNTS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => ram3a_wr1,
+                                     a1    => ram3a_a1,
+                                     dout1 => ram3a_dout1,
+                                     din1  => ram3a_din1,
+                                     a2    => ram3a_a2,
+                                     dout2 => ram3a_dout2
+                                     );
+-- ram_error_counts_A : ram_dp         generic map(
+--                                      depth => RAM_ERROR_COUNTS_DEPTH,
+--                                      width => 32
+--                                      )
+--                           port map ( CLK => CLK_IN,
+--                                      wr1   => juec_ram3a_wr,
+--                                      a1    => juec_ram3a_a,
+--                                      dout1 => juec_ram3a_dout,
+--                                      din1  => juec_ram3a_din,
+--                                      a2    => jtag_copy_ram3_ram3a_a,
+--                                      dout2 => jtag_copy_ram3_ram3a_dout
+--                                      );
+-- RAM3B is an on demand copy of RAM3A     
+ram_error_counts_B : ram_dp         generic map(
+                                     depth => RAM_ERROR_COUNTS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( CLK => CLK_IN,
+                                     wr1   => jtag_copy_ram3_ram3b_wr,
+                                     a1    => jtag_copy_ram3_ram3b_a,
+                                     dout1 => open,
+                                     din1  =>  jtag_copy_ram3_ram3b_din,
+                                     a2    => ram3b_a2,
+                                     dout2 => ram3b_dout2
+                                     );
+                                     
+ram3a_mux2to1_writeport : ram_mux2to1_writeport generic map (
+                                     depth => RAM_ERROR_COUNTS_DEPTH,
+                                     width => 32
+                                     )
+                          port map ( SELECT_IN => ram3a_select,
+                                     A0_IN  =>    juec_ram3a_a,
+                                     D0_OUT  =>   juec_ram3a_dout,
+                                     WR0_IN  =>   juec_ram3a_wr,
+                                     DIN0_IN =>   juec_ram3a_din,
+   
+                                     A1_IN   => jtag_blank_ram3a_ram3a_a,
+                                     D1_OUT  =>   open,
+                                     WR1_IN  =>   jtag_blank_ram3a_ram3a_wr,
+                                     DIN1_IN =>   jtag_blank_ram3a_ram3a_din,
+                                     
+                                     RAM_A_OUT    => ram3a_a1,
+                                     RAM_DOUT_IN  => ram3a_dout1,
+                                     RAM_WR_OUT   => ram3a_wr1,
+                                     RAM_DIN_OUT  => ram3a_din1
+                                     );                                     
+
+ram3a_readport_mux: ram_mux2to1_readport generic map( 
+                                     depth => RAM_ERROR_COUNTS_DEPTH,
+                                     width => 32
+                                     )
+                          port map (   
+                                     SELECT_IN => ram3a_rd_select,
+                                     A0_IN => jtag_copy_ram3_ram3a_a,
+                                     D0_OUT => jtag_copy_ram3_ram3a_dout,
+                                     A1_IN => "000000000",
+                                     D1_OUT => open,
+    
+                                     RAM_A_OUT   => ram3a_a2,
+                                     RAM_DOUT_IN => ram3a_dout2
+                                     );
+
+
+
+the_jtag_init_ram1b: jtag_init_ram1b generic map(
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_LD => MAX_REGISTERS_LD
+)
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_INIT_IN => trigger_init_ram1b,
+    -- RAM1a
+    RAM1A_A_OUT => init_ram1b_ram1a_a,
+    RAM1A_D_IN => init_ram1b_ram1a_d,
+    -- RAM1b
+    RAM1B_A_OUT => init_ram1b_ram1b_a,
+    RAM1B_D_IN => init_ram1b_ram1b_dout,
+    RAM1B_WE_OUT => init_ram1b_ram1b_wr,
+    RAM1B_D_OUT => init_ram1b_ram1b_din,
+    
+    IDLE_OUT => jtag_init_ram1b_idle
+  );
+
+the_jtag_copy_ram1b1c : copy_ram
+  generic map (
+    ram_depth => RAM_JTAG_REGISTERS_DEPTH,
+    ram_width => 32
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_COPY_IN => trigger_copy_ram1b1c,
+    -- RAM3a
+    RAMA_A_OUT => copy_ram1b1c_ram1b_a,
+    RAMA_D_IN => copy_ram1b1c_ram1b_dout,
+    -- RAM3b
+    RAMB_A_OUT => copy_ram1b1c_ram1c_a,
+    RAMB_D_OUT => copy_ram1b1c_ram1c_din,
+    RAMB_WR_OUT => copy_ram1b1c_ram1c_wr,
+    
+    IDLE_OUT => copy_ram1b1c_idle
+  );
+
+
+
+the_jtag_copy_ram3 : copy_ram
+  generic map (
+    ram_depth => RAM_ERROR_COUNTS_DEPTH,
+    ram_width => 32
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_COPY_IN => trigger_copy_ram3,
+    -- RAM3a
+    RAMA_A_OUT => jtag_copy_ram3_ram3a_a,
+    RAMA_D_IN => jtag_copy_ram3_ram3a_dout,
+    -- RAM3b
+    RAMB_A_OUT => jtag_copy_ram3_ram3b_a,
+    RAMB_D_OUT => jtag_copy_ram3_ram3b_din,
+    RAMB_WR_OUT => jtag_copy_ram3_ram3b_wr,
+    
+    IDLE_OUT => jtag_copy_ram3_idle
+  );
+
+the_jtag_blank_ram3a : blank_ram
+  generic map (
+    ram_depth => RAM_ERROR_COUNTS_DEPTH,
+    ram_width => 32
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_BLANK_IN => trigger_blank_ram3a,
+    -- RAM
+--    RAM_A_OUT => jtag_blank_ram3a_ram3a_a,
+    RAM_A_OUT => open,
+--    RAM_D_OUT => jtag_blank_ram3a_ram3a_din,
+    RAM_D_OUT => open,
+--    RAM_WR_OUT => jtag_blank_ram3a_ram3a_wr,  -- disabling blanking ram 29.10.2012
+    RAM_WR_OUT => open,
+    
+    IDLE_OUT => jtag_blank_ram3a_idle
+  );
+jtag_blank_ram3a_ram3a_a <= (others => '0');
+jtag_blank_ram3a_ram3a_din <= (others => '0');
+jtag_blank_ram3a_ram3a_wr <= '0';
+  
+  
+the_jtag_update_error_counts_ram3a : jtag_update_error_counts_ram3a 
+  generic map (
+     MAX_NUMCHIPS => MAX_NUMCHIPS,
+     MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+     MAX_NUMCHIPS_PLUS_ONE_LD => MAX_NUMCHIPS_PLUS_ONE_LD,
+     MAX_REGISTERS_LD => MAX_REGISTERS_LD,
+     MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD,
+     MAX_REGISTERS_PLUS_TWO_LD => MAX_REGISTERS_PLUS_TWO_LD,
+     RAM_MATCH_DIFF_COUNT_DEPTH => RAM_MATCH_DIFF_COUNT_DEPTH,
+     RAM_ERROR_COUNTS_DEPTH => RAM_ERROR_COUNTS_DEPTH,
+     WRITE_ERROR_THRESHOLD => WRITE_ERROR_THRESHOLD,
+     READ_ERROR_THRESHOLD => READ_ERROR_THRESHOLD
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_UPDATE_DATA_CHANGED_IN => trigger_juec_update_d_ch,
+    TRIGGER_UPDATE_READ_ERRORS_IN => trigger_juec_update_rd_err,
+    TRIGGER_UPDATE_WRITE_ERRORS_IN => trigger_juec_update_wr_err,
+    TRIGGER_UPDATE_RUN_COUNTER_IN => trigger_juec_update_run_counter,
+    RUN_COUNTER_IN => std_logic_vector(run_counter),
+    -- RAM2
+    RAM2_A_OUT => juec_ram2_a,
+    RAM2_D_IN =>  juec_ram2_dout,
+    -- RAM3a
+    RAM3A_A_OUT => juec_ram3a_a,
+    RAM3A_D_IN => juec_ram3a_dout,
+    RAM3A_D_OUT => juec_ram3a_din,
+    RAM3A_WR_OUT => juec_ram3a_wr,
+    
+    REMOVED_CHIPS_IN => removed_chips,
+    NUMCHIPS_CONFIGURED_IN => std_logic_vector(numchips_configured),
+    NUMREGS_CONFIGURED_IN => jtag_write_numregs_configured,
+    
+    DATA_CHANGED_OUT => juec_data_changed,
+    READ_ERRORS_OUT => juec_read_errors,
+    WRITE_ERRORS_OUT => juec_write_errors,
+    
+    IDLE_OUT => juec_idle
+  );
+
+-- the_jtag_bypassreg_testchain_m10: jtag_bypassreg_testchain_m10  
+--   generic map (
+--     ld_maxdelay => JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD,
+--     MAX_NUMCHIPS => MAX_NUMCHIPS,
+--     MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+--     JTAG_M26_IRLEN => JTAG_M26_IRLEN,
+--     max_bitcounter_ld => MAX_NUMCHIPS_LD+JTAG_M26_IRLEN_LD + 7
+--   )
+--   port map(
+--     CLK_IN => CLK_IN,
+--     RESET_IN => RESET_IN,
+--     BEGIN_JTAGBITCALC_IN => begin_jtag_bitcalc,
+--     TRIGGER_BEGIN_TESTCHAIN_IN => trigger_begin_bypassreg,
+--     IDLE_OUT => jtag_bypassreg_idle,
+--     CHAIN_LENGTH_OUT => jtag_bypassreg_length,
+--     CHAIN_BROKEN_OUT => jtag_bypassreg_chain_broken,
+--     ENABLE_JTAG_CLOCK_OUT => jtag_bypassreg_enable_jtag_clock,
+--     LAST_TCK_CYCLE_OUT => jtag_bypassreg_last_tck_cycle,
+--     TMS_OUT => jtag_bypassreg_tms,
+--     TDI_OUT => jtag_bypassreg_tdi,
+--     TDO_IN  => jtag_tdo_sampled,
+--     DELAY_IN => jtag_delay_expvalues
+--     );
+                                     
+the_jtag_read_m26devid_m10: jtag_read_m26devid_m10 
+  generic map (
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH,
+    MAX_NUMCHIPS_PLUS_ONE_LD => MAX_NUMCHIPS_PLUS_ONE_LD,
+    MAX_NUMCHIPS => MAX_NUMCHIPS,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    RAM_JTAG_REGISTERS_A_OUT => jtag_read_ram1a_a,
+    RAM_JTAG_REGISTERS_D_IN => jtag_read_ram1a_d,
+    NEXT_NOT_REMOVED_IN => jtag_next_not_removed,
+    BEGIN_JTAGBITCALC_IN => begin_jtag_bitcalc,
+    TRIGGER_BEGIN_READ_IN => trigger_jtag_read, 
+    IS_DR_BIT_OUT => jtag_read_is_dr_bit,
+    IS_FIRSTBIT_OUT => jtag_read_is_firstbit,
+    IS_LASTBIT_OUT => jtag_read_is_lastbit,
+    CHIPNUM_OUT => jtag_read_chipnum,
+    ENABLE_JTAG_CLOCK_OUT => jtag_read_enable_jtag_clock,
+    LAST_TCK_CYCLE_OUT => jtag_read_last_tck_cycle,
+    TMS_OUT => jtag_read_tms,
+    TDI_OUT => jtag_read_tdi,
+    EXPECTED_TDO_OUT => jtag_read_expected_tdo,
+    IDLE_OUT => jtag_read_idle
+  );
+                                     
+the_jtag_tdo_data_to_ram_m10 : jtag_tdo_data_to_ram_m10
+  generic map (
+    enable_ram1b => '1',
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD,
+    MAX_REGLEN_LD => MAX_REGLEN_LD,
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE3_D1_IN => jtag_sample_pulse3_d1,
+    CHIPNUM_IN => jtag_delayed_chipnum,
+    REGNUM_IN => jtag_delayed_regnum,
+    ENABLE_DATAOUT_IN => jtag_delayed_is_dr_bit,
+    IS_FIRSTBIT_IN  => jtag_delayed_is_firstbit,
+    IS_LASTBIT_IN   => jtag_delayed_is_lastbit,
+    TDO_SAMPLED_IN  => jtag_tdo_sampled,
+    -- RAM1b
+    RAM_JTAG_REGISTERS_READOUT_A_OUT => jtag_data_to_ram_ram1b_a,
+    RAM_JTAG_REGISTERS_READOUT_D_IN => jtag_data_to_ram_ram1b_dout,
+    RAM_JTAG_REGISTERS_READOUT_WE_OUT => jtag_data_to_ram_ram1b_wr,
+    RAM_JTAG_REGISTERS_READOUT_D_OUT => jtag_data_to_ram_ram1b_din
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);  
+  );
+                                     
+the_jtag_tdo_compare_count_m10 : jtag_tdo_compare_count_m10
+  generic map (
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD,
+    RAM_MATCH_DIFF_COUNT_DEPTH => RAM_MATCH_DIFF_COUNT_DEPTH,
+    MAX_REGLEN_LD => MAX_REGLEN_LD 
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE3_D1_IN => jtag_sample_pulse3_d1,
+    CHIPNUM_IN => jtag_delayed_chipnum,
+    REGNUM_IN => jtag_delayed_regnum,
+    ENABLE_COUNTERS_IN => jtag_delayed_is_dr_bit,
+    IS_FIRSTBIT_IN => jtag_delayed_is_firstbit,
+    IS_LASTBIT_IN  => jtag_delayed_is_lastbit,
+    TDO_EXPECTED_IN => jtag_delayed_tdo_expected,
+    TDO_SAMPLED_IN  => jtag_tdo_sampled,
+    TDO_SAMPLING_ERROR_IN => jtag_tdo_sampling_error,
+    RAM_MATCH_DIFF_COUNT_A_OUT => jtag_tdo_compare_count_ram_a,
+    RAM_MATCH_DIFF_COUNT_WE_OUT => jtag_tdo_compare_count_ram_wr,
+    RAM_MATCH_DIFF_COUNT_D_OUT => jtag_tdo_compare_count_ram_din
+    --INTERNAL_ERROR_OUT => jtag_tdo_compare_count_internal_error
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);  
+ );       
+the_jtag_tdo_compare_counttotal_noram_m10 : jtag_tdo_compare_counttotal_noram_m10 
+  generic map (
+    numcounts => 3,
+    se_counter_width => COUNTER_WIDTHS, -- sampling error counter width
+    diff_counter_width => COUNTER_WIDTHS  --  counter width for number of runs in which there were differences 
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE3_D1_IN => jtag_sample_pulse3_d1,
+    ENABLE_COUNTERS_IN =>  jtag_delayed_is_dr_bit,
+    TDO_EXPECTED_IN => jtag_delayed_tdo_expected,
+    TDO_SAMPLED_IN  => jtag_tdo_sampled,
+    TDO_SAMPLING_ERROR_IN => jtag_tdo_sampling_error,
+    BEGIN_COUNT_I_IN(2) => begin_count_read_errors,
+    BEGIN_COUNT_I_IN(1) => begin_count_write_errors,
+    BEGIN_COUNT_I_IN(0) => begin_count_data_changed,
+    
+    END_COUNT_I_IN(2) =>  end_count_read_errors,
+    END_COUNT_I_IN(1) =>  end_count_write_errors,
+    END_COUNT_I_IN(0) =>  end_count_data_changed,
+    
+    SAMPLING_ERRORS_COUNT_OUT => SAMPLING_ERRORS_COUNT_OUT,
+    COUNTS_OUT(0*COUNTER_WIDTHS+COUNTER_WIDTHS-1 downto 0*COUNTER_WIDTHS) => sDATA_CHANGED_COUNT_OUT,
+    COUNTS_OUT(1*COUNTER_WIDTHS+COUNTER_WIDTHS-1 downto 1*COUNTER_WIDTHS) => sWRITE_ERRORS_COUNT_OUT,
+    COUNTS_OUT(2*COUNTER_WIDTHS+COUNTER_WIDTHS-1 downto 2*COUNTER_WIDTHS) => sREAD_ID_ERRORS_COUNT_OUT,
+    LAST_VALUES_OUT(2) => last_read_error,
+    LAST_VALUES_OUT(1) => last_write_error,
+    LAST_VALUES_OUT(0) => last_data_changed
+  ); 
+
+the_jtag_delay_expected_values: jtag_delay_expected_values
+  generic map (
+    ld_maxdelay => JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD
+  )
+  port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE1_IN => jtag_sample_pulse1,
+    CHIPNUM_IN => jtag_meta_chipnum,
+    REGNUM_IN => jtag_meta_regnum,
+    IS_DR_BIT_IN => jtag_meta_is_dr_bit,
+    IS_FIRSTBIT_IN => jtag_meta_is_firstbit, 
+    IS_LASTBIT_IN  => jtag_meta_is_lastbit,
+    TDO_EXPECTED_IN => jtag_meta_expected_tdo,
+    OUT_CHIPNUM_OUT => jtag_delayed_chipnum,
+    OUT_REGNUM_OUT => jtag_delayed_regnum,
+    OUT_IS_DR_BIT_OUT => jtag_delayed_is_dr_bit,
+    OUT_IS_FIRSTBIT_OUT  => jtag_delayed_is_firstbit,
+    OUT_IS_LASTBIT_OUT => jtag_delayed_is_lastbit,
+    OUT_TDO_EXPECTED_OUT => jtag_delayed_tdo_expected,
+    DELAY_IN => jtag_delay_expvalues
+);                                     
+                                     
+the_jtag_mux_buffer_tms_tdi_out_and_metainfo : jtag_mux_buffer_tms_tdi_out_and_metainfo 
+  generic map (
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_REGISTERS_LD => MAX_REGISTERS_LD
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    JTAG_SET_DATA_IN => jtag_set_data_pulse,    
+    -- read DEV_ID inputs
+    RD_TMS_IN => jtag_read_tms,
+    RD_TDI_IN => jtag_read_tdi,
+    RD_IS_DR_BIT_IN => jtag_read_is_dr_bit,
+    RD_IS_FIRSTBIT_IN => jtag_read_is_firstbit,
+    RD_IS_LASTBIT_IN => jtag_read_is_lastbit,
+    RD_CHIPNUM_IN => jtag_read_chipnum,
+    RD_ENABLE_JTAG_CLOCK_IN => jtag_read_enable_jtag_clock,
+    RD_LAST_TCK_CYCLE_IN => jtag_read_last_tck_cycle,
+    RD_EXPECTED_TDO_OUT => jtag_read_expected_tdo,
+    -- write registers inputs
+    WR_TMS_IN => jtag_write_tms,
+    WR_TDI_IN => jtag_write_tdi,
+    WR_IS_DR_BIT_IN => jtag_write_is_dr_bit,
+    WR_IS_FIRSTBIT_IN => jtag_write_is_firstbit,
+    WR_IS_LASTBIT_IN => jtag_write_is_lastbit,
+    WR_CHIPNUM_IN => jtag_write_chipnum,
+    WR_REGNUM_IN => jtag_write_regnum,
+    WR_ENABLE_JTAG_CLOCK_IN => jtag_write_enable_jtag_clock,
+    WR_LAST_TCK_CYCLE_IN => jtag_write_last_tck_cycle,
+    WR_EXPECTED_TDO_OUT => jtag_write_expected_tdo,
+    -- test chain inputs
+    TC_TMS_IN => jtag_bypassreg_tms,
+    TC_TDI_IN => jtag_bypassreg_tdi,
+    TC_ENABLE_JTAG_CLOCK_IN => jtag_bypassreg_enable_jtag_clock,
+    TC_LAST_TCK_CYCLE_IN => jtag_bypassreg_last_tck_cycle,
+   
+    TMS_OUT => jtag_tms,
+    TDI_OUT => jtag_tdi,
+    IS_DR_BIT_OUT => jtag_meta_is_dr_bit,
+    IS_FIRSTBIT_OUT => jtag_meta_is_firstbit,
+    IS_LASTBIT_OUT => jtag_meta_is_lastbit,
+    CHIPNUM_OUT => jtag_meta_chipnum,
+    REGNUM_OUT => jtag_meta_regnum,
+    ENABLE_JTAG_CLOCK_OUT => jtag_enable_clock,
+    LAST_TCK_CYCLE_OUT => jtag_meta_last_tck_cycle,
+    EXPECTED_TDO_OUT => jtag_meta_expected_tdo
+  );
+                                     
+the_jtag_tdo_sampler : jtag_tdo_sample port map(
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    SAMPLE_PULSE1_IN  => jtag_sample_pulse1,
+    SAMPLE_PULSE2_IN  => jtag_sample_pulse2,
+    SAMPLE_PULSE3_IN  => jtag_sample_pulse3,
+    -- TDO signal, which is to be sampled 
+    TDO_IN => JTAG_TDO_IN,
+    -- sampled value of TDO
+    TDO_SAMPLED_OUT => jtag_tdo_sampled,
+    -- sampling error
+    SAMPLING_ERROR_OUT => jtag_tdo_sampling_error
+  );
+
+the_jtag_write_m10: jtag_write_m10 generic map (
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH,
+    MAX_NUMCHIPS => MAX_NUMCHIPS,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_NUMCHIPS_PLUS_ONE_LD => MAX_NUMCHIPS_PLUS_ONE_LD,
+    MAX_REGISTERS_LD => MAX_REGISTERS_LD,
+    MAX_REGISTERS_PLUS_ONE_LD => MAX_REGISTERS_PLUS_ONE_LD,
+    MAX_REGLEN_LD => MAX_REGLEN_LD,
+    MAX_REGLEN_PLUS_ONE_LD => MAX_REGLEN_PLUS_ONE_LD
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    RAM_JTAG_REGISTERS_A_OUT => jtag_write_ram1a_a,
+    RAM_JTAG_REGISTERS_D_IN => jtag_write_ram1a_d,
+    NEXT_NOT_REMOVED_IN => jtag_next_not_removed,
+    BEGIN_JTAGBITCALC_IN => begin_jtag_bitcalc,
+    TRIGGER_BEGIN_WRITE_IN => trigger_jtag_write,
+    IS_DR_BIT_OUT => jtag_write_is_dr_bit,
+    IS_FIRSTBIT_OUT => jtag_write_is_firstbit,
+    IS_LASTBIT_OUT => jtag_write_is_lastbit,
+    CHIPNUM_OUT => jtag_write_chipnum,
+    REGNUM_OUT => jtag_write_regnum,
+    ENABLE_JTAG_CLOCK_OUT => jtag_write_enable_jtag_clock,
+    LAST_TCK_CYCLE_OUT => jtag_write_last_tck_cycle,
+    TMS_OUT => jtag_write_tms,
+    TDI_OUT => jtag_write_tdi,
+    EXPECTED_TDO_OUT => jtag_write_expected_tdo,
+    IDLE_OUT => jtag_write_idle,
+    NUMREGS_CONFIGURED_OUT => jtag_write_numregs_configured,
+    LAST_ERROR_CODE_OUT => jtag_write_last_error_code
+    );
+    
+the_jtag_tck_out:    jtag_tck_out_component port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+       
+    JTAG_CLOCK_PULSE1_IN => jtag_clock_pulse1,
+    JTAG_CLOCK_PULSE2_IN => jtag_clock_pulse2,
+    ENABLE_JTAG_TCK_IN   => jtag_enable_clock,
+    
+    TCK_OUT => jtag_tck
+  );
+
+the_jtag_pulses : jtag_pulses  generic map (
+    time_bits => 10
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => jtag_pulses_reset_complete,
+    -- input times
+    JTAG_CLOCK_TIME1_IN => std_logic_vector(jtag_clock_time1),
+    JTAG_CLOCK_TIME2_IN => std_logic_vector(jtag_clock_time2),
+    JTAG_SAMPLE_TIME1_IN => std_logic_vector(jtag_sample_time1),
+    JTAG_SAMPLE_TIME2_IN => std_logic_vector(jtag_sample_time2),
+    JTAG_SAMPLE_TIME3_IN => std_logic_vector(jtag_sample_time3),
+    JTAG_SET_DATA_TIME_IN => std_logic_vector(jtag_set_data_time),
+    
+    JTAG_CLOCK_CYCLE_LENGTH_IN => std_logic_vector(jtag_clock_cycle_length),
+    
+    -- output pulses
+    BEGIN_JTAGBITCALC_OUT => begin_jtag_bitcalc,
+    JTAG_CLOCK_PULSE1_OUT => jtag_clock_pulse1,
+    JTAG_CLOCK_PULSE2_OUT => jtag_clock_pulse2,
+    JTAG_SAMPLE_PULSE1_OUT => jtag_sample_pulse1,
+    JTAG_SAMPLE_PULSE2_OUT => jtag_sample_pulse2,
+    JTAG_SAMPLE_PULSE3_OUT => jtag_sample_pulse3,
+    JTAG_SET_DATA_PULSE_OUT => jtag_set_data_pulse
+  );
+  
+the_jtag_check_crc_ram1a: jtag_check_crc_ram1a  
+  generic map (
+    RAM_JTAG_REGISTERS_DEPTH => RAM_JTAG_REGISTERS_DEPTH,
+    MAX_NUMCHIPS => MAX_NUMCHIPS,
+    MAX_NUMCHIPS_LD => MAX_NUMCHIPS_LD,
+    MAX_NUMCHIPS_PLUS_ONE_LD => MAX_NUMCHIPS_PLUS_ONE_LD,
+    MAX_REGLEN_PLUS_ONE_LD => MAX_REGLEN_PLUS_ONE_LD,
+    MAX_REGISTERS_LD => MAX_REGISTERS_LD
+  )
+  port map (
+    CLK_IN => CLK_IN,
+    RESET_IN => RESET_IN,
+    TRIGGER_CHECK_IN => trigger_check_crc_ram1a,
+    -- RAM1a
+    RAM1A_A_OUT => jtag_check_crc_ram1a_a,
+    RAM1A_D_IN => jtag_check_crc_ram1a_d,
+    NUMCHIPS_IN => std_logic_vector(numchips_configured),
+    CRC_OK_OUT => jtag_check_crc_ram1a_crc_ok,
+    IDLE_OUT => jtag_check_crc_ram1a_idle
+  );
+  
+
+--BUS_DATA_OUT <= bus_data_out_buffer;
+--BUS_DATAREADY_OUT    <= bus_dataready;
+--BUS_NO_MORE_DATA_OUT <= bus_no_more_data;
+--BUS_WRITE_ACK_OUT    <= bus_write_ack;
+--BUS_UNKNOWN_ADDR_OUT <= bus_unknown_addr;
+MY_STATUS_OUT        <= (others => '0'); --my_status;
+JTAG_TCK_OUT <= jtag_tck;
+JTAG_TMS_OUT <= jtag_tms;
+JTAG_TDI_OUT <= jtag_tdi;
+PROG_JTAG_FINISHED_OUT <= prog_jtag_finished;
+READ_ID_ERRORS_COUNT_OUT <= sREAD_ID_ERRORS_COUNT_OUT;
+WRITE_ERRORS_COUNT_OUT <= sWRITE_ERRORS_COUNT_OUT;
+DATA_CHANGED_COUNT_OUT <= sDATA_CHANGED_COUNT_OUT;
+
+
+jtag_pulses_reset_complete <= jtag_pulses_reset or RESET_IN;
+
+m26cs_stopped <= '1' when m26cs_state = M26CSS_STOPPED else '0';
+
+jtag_sample_pulse3_d1_next <= jtag_sample_pulse3;
+
+ram3b_a2 <= ram3b_a2_base_addr & ram3b_a2_rel_addr; -- hope this is the right order (base_addr should be the MSBs)
+
+SEQUENTIAL : process (CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      --bus_rw_state <= BUS_RW_STATE_IDLE;
+      --status_register <= (others => '0');
+      --status_register_read_error2 <= '0';
+      data_register <= x"00000000";
+      --cmd_register  <= x"00000000";
+      --bus_data_out_buffer <= x"00000000";
+      --bus_dataready <= '0';
+      --bus_no_more_data <= '0';
+      --bus_write_ack <= '0';
+      --bus_unknown_addr <= '0';
+      --length_register <= x"00000001";
+      jtag_refresh_active <= '0';
+      jtag_check1_active <= '0';
+      jtag_refresh_active_last <= '0';
+      --trigger_counter <= (others => '0');
+      idle_out_signal <= '0';
+      --status_register_pos <= (others => '0');
+      --status_register_read_running <= '0';
+      --ram_base_addr <= (others => '0');
+      crc_status_register <= (others => '0');
+      --write_trigger <= '0';
+      --write_idle_last <= '0';
+      --write_status_register_or <= (others => '0');
+      removed_chips <= (others => '0');
+      --reactivate_sensor <= (others => '0');
+      --reactivate_sensor_strobe <= (others => '0');
+      --deactivate_sensor <= (others => '0');
+      --deactivate_sensor_strobe <= (others => '0');
+      --disable_write <= '0';
+      --disable_writeerror_for_remove <= '0';
+      --disable_remove <= '0';
+      --debug_one_remove <= '0';
+      --debug_one_remove_strobe <= '0';
+      --removed_strobe <= '0';
+      --read_trigger <= '0';
+      numchips_configured <= (others => '0');
+      --my_status <= (others => '0');
+      --m26c_sensor_cand <= (others => '0');
+      chip_counter_start <= '0';
+      --m26c_firstrun <= '0';
+      --m26c_secondrun <= '0';
+      --mux_sel <= '0';
+      --driver_speed <= x"0005";
+      --already_written <= '0';
+      --read_idle_last <= '0';
+      --write_error_counter <= (others => (others => '0'));
+      --write_error_over_threshold_counter <= (others => (others => '0'));
+      --write_data_changed_counter <= (others => (others => '0'));
+      --read_error_counter <= (others => (others => '0'));
+      --read_error_over_threshold_counter <= (others => (others => '0'));
+      debug_test <= (others =>'0');
+      debug_m26cs_state <= (others => '0');
+      bus2_ram_data_in <=  (others => '0');
+      bus2_ram_dataready_in <= '0';
+      bus2_ram_write_ack_in <= '0';
+      bus2_ram_no_more_data_in <= '0';
+      bus2_ram_unknown_addr_in <= '0';
+      buf_bus2_ram_read_enable_out <= '0';
+      buf_buf_bus2_ram_read_enable_out <= '0';
+      bus2_status_data_in <= (others =>'0');
+      bus2_status_dataready_in <= '0';
+      bus2_status_write_ack_in <= '0';
+      bus2_status_no_more_data_in <= '0';
+      bus2_status_unknown_addr_in <= '0';
+      bus2_control_data_in <= (others =>'0');
+      bus2_control_dataready_in <= '0';
+      bus2_control_write_ack_in <= '0';
+      bus2_control_no_more_data_in <= '0';
+      bus2_control_unknown_addr_in <= '0';
+      bus2_debug_data_in <= (others =>'0');
+      bus2_debug_dataready_in <= '0';
+      bus2_debug_write_ack_in <= '0';
+      bus2_debug_no_more_data_in <= '0';
+      bus2_debug_unknown_addr_in <= '0';
+      bus2_status2_data_in <= (others =>'0');
+      bus2_status2_dataready_in <= '0';
+      bus2_status2_write_ack_in <= '0';
+      bus2_status2_no_more_data_in <= '0';
+      bus2_status2_unknown_addr_in <= '0';
+      bus2_status2_read_ram3b <= '0';
+      buf_bus2_status2_read_ram3b <= '0';
+      prog_jtag_finished <= '0';
+      --last_write_successful <= '0';    
+      -- NEW SIGNALS
+      ram1a_a1_base_addr <=  (others =>'0');
+      ram1a_a1_rel_addr <=  (others =>'0');
+      ram1a_din1 <=  (others =>'0');
+      ram1a_wr1 <=  '0';
+      jtag_status2_copy_requested <= '0';
+      jtag_status2_copy_request_strobe <= '0';
+      cps2_state <= CPS2_IDLE;
+      status2_run_counter <= (others =>'0');
+      status2_chain_status <= (others =>'0');
+      jtag_clock_cycle_length <= (others =>'0');
+      jtag_clock_time1 <= (others =>'0');
+      jtag_clock_time2 <= (others =>'0');
+      jtag_sample_time1 <= (others =>'0');
+      jtag_sample_time2 <= (others =>'0');
+      jtag_sample_time3 <= (others =>'0');
+      jtag_set_data_time <= (others => '0');
+      jtag_pulses_reset <= '0';
+      jtag_sample_pulse3_d1 <= '0';
+      breakpoint_active <= (others => '0');
+      ram1b_a2 <=  (others => '0');
+      ram3b_a2_rel_addr <= (others => '0');
+      ram3b_a2_base_addr <= (others => '0');
+      
+      ram1b_copy_requested <= '0';
+      ram1c_run_counter <= (others => '0');
+      ram1c_chain_status <= (others => '0');
+      cpr1bc_state <= CPR1BC_IDLE;
+      trigger_copy_ram1b1c <= '0';
+      ram1b1c_copy_trigger_active <= (others => '0');
+      ram1c_a2 <= (others => '0');
+      ram1b1c_copy_trigger_strobe <= (others => '0');
+
+      m26csoptions <= (others => '0');
+      jtag_delay_expvalues <=  (others => '0');
+      
+      crc_error_on_last_check <= '0';
+      last_run_successful <= '0';
+      last_run_successful_tmp <= '0';
+    else
+      --bus_rw_state <= bus_rw_state_next;
+      --status_register <= status_register_next;
+      --status_register_read_error2 <= status_register_read_error2_next;
+      data_register <= data_register_next;
+      --cmd_register  <= cmd_register_next;
+      --bus_data_out_buffer <= bus_data_out_buffer_next;
+      --bus_dataready <= bus_dataready_next;
+      --bus_no_more_data <= bus_no_more_data_next;
+      --bus_write_ack <= bus_write_ack_next;
+      --bus_unknown_addr <= bus_unknown_addr_next;
+      --length_register <= length_register_next;
+      jtag_refresh_active <= jtag_refresh_active_next;
+      jtag_check1_active <= jtag_check1_active_next;
+      jtag_refresh_active_last <= jtag_refresh_active_last_next;
+      --trigger_counter <= trigger_counter_next;
+      idle_out_signal <= idle_out_signal_next;
+      --status_register_pos <= status_register_pos_next;
+      --status_register_read_running <= status_register_read_running_next;
+      --ram_base_addr <= ram_base_addr_next;
+      crc_status_register <= crc_status_register_next;
+      --write_trigger <= write_trigger_next;
+      --write_idle_last <=  write_idle_last_next;
+      --write_status_register_or <= write_status_register_or_next;
+      removed_chips <= removed_chips_next;
+      --reactivate_sensor <= reactivate_sensor_next;
+      --reactivate_sensor_strobe <= reactivate_sensor_strobe_next;
+      --deactivate_sensor <= deactivate_sensor_next;
+      --deactivate_sensor_strobe <= deactivate_sensor_strobe_next;
+      --disable_write <= disable_write_next;
+      --disable_writeerror_for_remove <= disable_writeerror_for_remove_next;
+      --disable_remove <=  disable_remove_next;
+      --debug_one_remove <= debug_one_remove_next;
+      --debug_one_remove_strobe <= debug_one_remove_strobe_next;
+      --removed_strobe <= removed_strobe_next;
+      --read_trigger <= read_trigger_next;
+      numchips_configured <= numchips_configured_next;
+      --my_status <= my_status_next;
+      --m26c_sensor_cand <= m26c_sensor_cand_next;
+      chip_counter_start <= chip_counter_start_next;
+      --m26c_firstrun <= m26c_firstrun_next;
+      --m26c_secondrun <= m26c_secondrun_next;
+      --mux_sel <= mux_sel_next;
+      --driver_speed <= driver_speed_next;
+      --already_written <= already_written_next;
+      --read_idle_last <= read_idle_last_next;
+      --write_error_counter <= write_error_counter_next;
+      --write_error_over_threshold_counter <= write_error_over_threshold_counter_next;
+      --write_data_changed_counter <= write_data_changed_counter_next;
+      --read_error_counter <= read_error_counter_next;
+      --read_error_over_threshold_counter <= read_error_over_threshold_counter_next;
+      --m26c_state <= m26c_state_next;
+      debug_test <= debug_test_next;
+      debug_m26cs_state <= debug_m26cs_state_next;
+      bus2_ram_data_in <=  bus2_ram_data_in_next;
+      bus2_ram_dataready_in <= bus2_ram_dataready_in_next;
+      bus2_ram_write_ack_in <= bus2_ram_write_ack_in_next;
+      bus2_ram_no_more_data_in <= bus2_ram_no_more_data_in_next;
+      bus2_ram_unknown_addr_in <= bus2_ram_unknown_addr_in_next;
+      buf_bus2_ram_read_enable_out <= buf_bus2_ram_read_enable_out_next;
+      buf_buf_bus2_ram_read_enable_out <= buf_buf_bus2_ram_read_enable_out_next;
+      bus2_status_data_in <=  bus2_status_data_in_next;
+      bus2_status_dataready_in <= bus2_status_dataready_in_next;
+      bus2_status_write_ack_in <= bus2_status_write_ack_in_next;
+      bus2_status_no_more_data_in <= bus2_status_no_more_data_in_next;
+      bus2_status_unknown_addr_in <= bus2_status_unknown_addr_in_next;
+      bus2_control_data_in <=  bus2_control_data_in_next;
+      bus2_control_dataready_in <= bus2_control_dataready_in_next;
+      bus2_control_write_ack_in <= bus2_control_write_ack_in_next;
+      bus2_control_no_more_data_in <= bus2_control_no_more_data_in_next;
+      bus2_control_unknown_addr_in <= bus2_control_unknown_addr_in_next;
+      bus2_debug_data_in <=  bus2_debug_data_in_next;
+      bus2_debug_dataready_in <= bus2_debug_dataready_in_next;
+      bus2_debug_write_ack_in <= bus2_debug_write_ack_in_next;
+      bus2_debug_no_more_data_in <= bus2_debug_no_more_data_in_next;
+      bus2_debug_unknown_addr_in <= bus2_debug_unknown_addr_in_next;            
+      bus2_status2_data_in <= bus2_status2_data_in_next;
+      bus2_status2_dataready_in <= bus2_status2_dataready_in_next;
+      bus2_status2_write_ack_in <= bus2_status2_write_ack_in_next;
+      bus2_status2_no_more_data_in <= bus2_status2_no_more_data_in_next;
+      bus2_status2_unknown_addr_in <= bus2_status2_unknown_addr_in_next;
+      bus2_status2_read_ram3b <= bus2_status2_read_ram3b_next;
+      buf_bus2_status2_read_ram3b <= buf_bus2_status2_read_ram3b_next;
+      prog_jtag_finished <= prog_jtag_finished_next;
+      --last_write_successful <=  last_write_successful_next;      
+      -- NEW SIGNALS
+      ram1a_a1_base_addr <= ram1a_a1_base_addr_next;
+      ram1a_a1_rel_addr <= ram1a_a1_rel_addr_next;
+      ram1a_din1 <=  ram1a_din1_next;
+      ram1a_wr1 <= ram1a_wr1_next;
+      jtag_status2_copy_requested <=  jtag_status2_copy_requested_next;
+      jtag_status2_copy_request_strobe <= jtag_status2_copy_request_strobe_next;
+      cps2_state <= cps2_state_next;
+      status2_run_counter <= status2_run_counter_next;
+      status2_chain_status <= status2_chain_status_next;
+      jtag_clock_cycle_length <= jtag_clock_cycle_length_next;
+      jtag_clock_time1 <= jtag_clock_time1_next;
+      jtag_clock_time2 <= jtag_clock_time2_next ;
+      jtag_sample_time1 <= jtag_sample_time1_next;
+      jtag_sample_time2 <= jtag_sample_time2_next;
+      jtag_sample_time3 <= jtag_sample_time3_next;
+      jtag_set_data_time <= jtag_set_data_time_next;
+      jtag_pulses_reset <= jtag_pulses_reset_next;
+      jtag_sample_pulse3_d1 <= jtag_sample_pulse3_d1_next;
+      breakpoint_active <= breakpoint_active_next;
+      ram1b_a2 <= ram1b_a2_next;
+      ram3b_a2_rel_addr <= ram3b_a2_rel_addr_next;
+      ram3b_a2_base_addr <= ram3b_a2_base_addr_next;
+
+      ram1b_copy_requested <= ram1b_copy_requested_next;
+      ram1c_run_counter <= ram1c_run_counter_next;
+      ram1c_chain_status <= ram1c_chain_status_next;
+      cpr1bc_state <= cpr1bc_state_next;
+      trigger_copy_ram1b1c <= trigger_copy_ram1b1c_next;
+      ram1b1c_copy_trigger_active <= ram1b1c_copy_trigger_active_next;
+      ram1c_a2 <= ram1c_a2_next;
+      ram1b1c_copy_trigger_strobe <= ram1b1c_copy_trigger_strobe_next;
+
+      m26csoptions <= m26csoptions_next;
+      jtag_delay_expvalues <=  jtag_delay_expvalues_next;
+      crc_error_on_last_check <= crc_error_on_last_check_next;
+      last_run_successful <= last_run_successful_next;
+      last_run_successful_tmp <= last_run_successful_tmp_next;
+    end if;
+  end if;
+end process;
+
+
+SYNCHRONOUS_CHIP_COUNTER : process (CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      cc_state <= CC_IDLE;
+      numchips_active <= (others =>'0');
+      numchips_active_acc <= (others =>'0');
+      cc_chip_i <= (others =>'0');
+      cc_nextnotremoved_i <= (others =>'0');
+      last_not_removed <= (others =>'0');
+      first_not_removed <= (others =>'0');
+      jtag_next_not_removed <= (others =>'0');
+    else
+      cc_state <= cc_state_next;
+      numchips_active <= numchips_active_next;
+      numchips_active_acc <= numchips_active_acc_next;
+      cc_chip_i <= cc_chip_i_next;
+      cc_nextnotremoved_i <= cc_nextnotremoved_i_next;
+      last_not_removed <= last_not_removed_next;
+      first_not_removed <= first_not_removed_next;
+      jtag_next_not_removed <= jtag_next_not_removed_next;      
+    end if;
+  end if;
+end process;
+
+COMB_CHIP_COUNTER : process (cc_state, removed_chips, chip_counter_start, numchips_configured, cc_chip_i, cc_nextnotremoved_i, numchips_active, numchips_active_acc, last_not_removed, first_not_removed, jtag_next_not_removed)
+begin
+  cc_state_next <= cc_state;
+  numchips_active_next <= numchips_active;
+  numchips_active_acc_next <= numchips_active_acc;
+  -- index, running through chips 
+  cc_chip_i_next <= cc_chip_i;
+  -- index, last not removed sensor 
+  cc_nextnotremoved_i_next <= cc_nextnotremoved_i;
+  last_not_removed_next <= last_not_removed;
+  first_not_removed_next <= first_not_removed;
+  
+  jtag_next_not_removed_next <= jtag_next_not_removed;
+  case cc_state is
+    when CC_IDLE =>
+      if(chip_counter_start = '1') then
+          -- determine number of chips connected in serial to jtag chain
+        cc_chip_i_next <= (others => '0');
+        cc_nextnotremoved_i_next <= (others => '0');
+        -- with the following initialization no chip will be unremoved, because
+        -- last_not_removed < first_not_removed
+        -- and numchips_active will be set to 0 if really all chips are removed
+        first_not_removed_next <= (others => '1');
+        last_not_removed_next <= (others =>'0');
+        jtag_next_not_removed_next <= (others =>'0'); 
+        numchips_active_acc_next <= (others => '0');
+        cc_state_next <= CC_COUNT_SENSOR;
+      end if;
+    when CC_COUNT_SENSOR =>
+      if(removed_chips(to_integer(cc_chip_i)) = '0') then
+        numchips_active_acc_next <= numchips_active_acc + 1;
+        last_not_removed_next <= cc_chip_i;
+        -- if first_not_removed unset
+        if(std_logic_vector_all_components_equal_scalar(std_logic_vector(first_not_removed), '1') = '1') then
+          first_not_removed_next <= cc_chip_i;
+        end if;
+        cc_nextnotremoved_i_next <= cc_chip_i + 1; -- next not removed chip after chip i is stored at location (i+1) in jtag_next_not_removed
+        jtag_next_not_removed_next(to_integer(cc_nextnotremoved_i)*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_LD-1 downto to_integer(cc_nextnotremoved_i)*MAX_NUMCHIPS_LD) <=
+            std_logic_vector(cc_chip_i);
+      end if;
+      if(cc_chip_i = numchips_configured - 1) then
+        jtag_next_not_removed_next((to_integer(cc_chip_i)+1)*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_LD-1 downto (to_integer(cc_chip_i)+1)*MAX_NUMCHIPS_LD) <= (others => '1'); -- set next chip for last chip to invalid
+        cc_state_next <= CC_SETNUMCHIPS; -- finished counting active chips
+      else
+        cc_chip_i_next <= cc_chip_i + 1;
+      end if;
+    when CC_SETNUMCHIPS =>
+      numchips_active_next <= numchips_active_acc;
+      cc_state_next <= CC_IDLE;
+  end case;
+end process;
+
+
+-- delay one clock cycle
+jtag_refresh_active_last_next <= jtag_refresh_active;
+
+
+-- monitoring
+--MON_FIFO_WRITE_OUT(0) <= read_mon_write_out;
+--MON_FIFO_WRITE_OUT(1) <= read_mon_write_out;
+--MON_FIFO_WRITE_OUT(2) <= read_mon_write_out;
+-- monitoring debug test
+--MON_FIFO_DATA_OUT(79 downto 64) <= JTAG_M26_DEV_ID(15 downto 0);
+--MON_FIFO_DATA_OUT(111 downto 96) <= JTAG_M26_DEV_ID(31 downto 16);
+--MON_FIFO_WRITE_OUT(2) <= '1';
+--MON_FIFO_WRITE_OUT(3) <= '1';
+
+SYNCHRONOUS_M26_CONTROLLER_SIMPLE : process (CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      m26cs_state <= M26CSS_STOPPED;
+      trigger_begin_bypassreg <= '0';
+      trigger_jtag_read <=  '0';
+      trigger_jtag_write <=  '0';
+      trigger_copy_ram3 <= '0';
+      trigger_juec_update_d_ch <= '0';
+      trigger_juec_update_rd_err <= '0';
+      trigger_juec_update_wr_err <= '0';
+      trigger_juec_update_run_counter <= '0';
+      trigger_check_crc_ram1a <= '0';
+      trigger_init_ram1b <= '0';
+      trigger_blank_ram3a <= '0';
+      run_counter <=  (others =>'0');
+      m26cs_firstrun <= '0';
+      jtag_chain_broken_counter <= (others =>'0');
+      ram1a_select <=  (others =>'0');
+      ram1b_select <=  '0';
+      ram2_select <=   '0';
+      ram3a_select <= '0';
+      ram3a_rd_select <= '0';
+      chain_status <= (others =>'0');
+      request_reset <= '0';
+      reset_wait <= (others =>'0');
+      run_requested <= '0';
+      write_once_requested <= '0';
+      write_once_count <= (others =>'0');
+      -- INSERTLABEL: SYNCHRONOUS reset
+    else
+      m26cs_state <= m26cs_state_next;
+      trigger_begin_bypassreg <= trigger_begin_bypassreg_next;
+      trigger_jtag_read <= trigger_jtag_read_next;
+      trigger_jtag_write <= trigger_jtag_write_next;
+      trigger_copy_ram3 <= trigger_copy_ram3_next;
+      trigger_juec_update_d_ch <= trigger_juec_update_d_ch_next;
+      trigger_juec_update_rd_err <= trigger_juec_update_rd_err_next;
+      trigger_juec_update_wr_err <= trigger_juec_update_wr_err_next;
+      trigger_juec_update_run_counter <= trigger_juec_update_run_counter_next;
+      trigger_check_crc_ram1a <= trigger_check_crc_ram1a_next;
+      trigger_init_ram1b <= trigger_init_ram1b_next;
+      trigger_blank_ram3a <= trigger_blank_ram3a_next;
+      run_counter <= run_counter_next;
+      m26cs_firstrun <= m26cs_firstrun_next;
+      jtag_chain_broken_counter <= jtag_chain_broken_counter_next;
+      ram1a_select <= ram1a_select_next;
+      ram1b_select <= ram1b_select_next;
+      ram2_select <= ram2_select_next;
+      ram3a_select <= ram3a_select_next;
+      ram3a_rd_select <= ram3a_rd_select_next;
+      chain_status <= chain_status_next;
+      request_reset <= request_reset_next;
+      reset_wait <= reset_wait_next;
+      run_requested <= run_requested_next;
+      write_once_requested <= write_once_requested_next;
+      write_once_count <= write_once_count_next;
+      -- INSERTLABEL:  SYNCHRONOUS update      
+    end if;
+  end if;
+end process;
+
+COMB_M26_CONTROLLER_SIMPLE : process (RUN_REQUEST_IN, WRITE_ONCE_REQUEST_IN, m26cs_state, jtag_bypassreg_last_tck_cycle, jtag_bypassreg_idle, jtag_read_idle, jtag_write_last_tck_cycle, jtag_write_idle, juec_idle, cc_state, breakpoint_active, run_counter, m26cs_firstrun, jtag_status2_copy_requested, jtag_check1_active, jtag_refresh_active, jtag_chain_broken_counter, prog_jtag_finished, ram1a_select, jtag_check_crc_ram1a_idle, jtag_check_crc_ram1a_crc_ok, numchips_configured, ram1a_select, ram1b_select, ram2_select, ram3a_select, ram3a_rd_select, chain_status, jtag_init_ram1b_idle, jtag_bypassreg_chain_broken, jtag_bypassreg_length, crc_status_register, jtag_blank_ram3a_idle, ram1b_copy_requested, jtag_refresh_active_last, m26csoptions, crc_error_on_last_check, last_run_successful, last_run_successful_tmp, last_read_error, last_write_error, request_reset, reset_wait, run_requested, write_once_requested, write_once_count) -- INSERTLABEL:  sensitivity list --jtag_read_last_tck_cycle, 
+variable output : std_logic;
+variable i : integer;
+begin
+  m26cs_state_next <= m26cs_state;
+  trigger_begin_bypassreg_next <= '0';
+  trigger_jtag_read_next <= '0';
+  trigger_jtag_write_next <= '0';
+  trigger_juec_update_d_ch_next <= '0';
+  trigger_juec_update_rd_err_next <= '0';
+  trigger_juec_update_wr_err_next <= '0';
+  trigger_juec_update_run_counter_next <= '0';
+  trigger_check_crc_ram1a_next <= '0';
+  trigger_init_ram1b_next <= '0';
+  trigger_blank_ram3a_next <= '0';
+  run_counter_next <= run_counter;
+  m26cs_firstrun_next <= m26cs_firstrun;
+  idle_out_signal_next <= '0';
+  jtag_chain_broken_counter_next <= jtag_chain_broken_counter;
+  chip_counter_start_next <= '0';
+  prog_jtag_finished_next <= prog_jtag_finished;
+  chain_status_next <= chain_status;
+  crc_status_register_next <= crc_status_register;
+  
+  -- ram multiplexers
+  ram1a_select_next <= ram1a_select;
+  ram1b_select_next <= ram1b_select;
+  ram2_select_next <= ram2_select;
+  ram3a_select_next <= ram3a_select;
+  ram3a_rd_select_next <= ram3a_rd_select;
+  
+  crc_error_on_last_check_next <= crc_error_on_last_check;
+  last_run_successful_next <= last_run_successful;
+  last_run_successful_tmp_next <= last_run_successful_tmp;  
+  begin_count_read_errors <= '0'; -- added 201210
+  begin_count_write_errors <= '0'; -- added 201210
+  begin_count_data_changed <= '0'; -- added 201210
+  end_count_read_errors <= '0'; -- added 201210
+  end_count_write_errors <= '0'; -- added 201210
+  end_count_data_changed <= '0'; -- added 201210
+  request_reset_next <= request_reset;
+  reset_wait_next <= reset_wait;
+  run_requested_next <= run_requested;
+  write_once_requested_next <= write_once_requested;
+  write_once_count_next <= write_once_count;
+  -- INSERTLABEL:  COMB defaults 
+
+  
+
+  case m26cs_state is
+    when M26CSS_STOPPED =>
+      -- if stopped, start again if jtag_refresh_active is set
+      if(jtag_check1_active = '1' and  jtag_status2_copy_requested = '0' and ram1b_copy_requested = '0') then
+        m26cs_state_next <= M26CSS_CHECK1_WAIT_FOR_HAVE_TIME;
+      elsif(jtag_refresh_active = '1' and  jtag_status2_copy_requested = '0' and ram1b_copy_requested = '0') then
+        m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+        -- if just started, reset all counters
+        if(jtag_refresh_active_last = '0') then
+          m26cs_firstrun_next <= '1';
+        end if;
+      end if;
+    when M26CSS_CHECK1_WAIT_FOR_HAVE_TIME =>
+      --if(have_time_for_check) then
+        m26cs_state_next <= M26CSS_COUNT_CHIPS_BEGIN;
+      --end if;
+      
+    when M26CSS_WAIT_FOR_TRIGGER =>
+      idle_out_signal_next <= '1';
+      last_run_successful_next <= last_run_successful_tmp;
+      -- if not stopped, test if we should stop
+      if(jtag_refresh_active = '0' or jtag_status2_copy_requested = '1' or ram1b_copy_requested = '1') then
+        ram3a_rd_select_next <= '0'; -- select jtag_copy_ram3_ram3a
+        m26cs_state_next <= M26CSS_STOPPED;
+      else
+        -- if we should not stop, check for off_spill and if we have time for writing
+        if(run_requested = '1') then
+          -- increment run counter (exclusively done here)
+          run_counter_next <= run_counter + 1;
+          prog_jtag_finished_next <= '0';
+          trigger_check_crc_ram1a_next <= '1';
+          ram1a_select_next <= "11"; -- select check_crc_ram1a
+          if(m26cs_firstrun = '1') then
+            trigger_blank_ram3a_next <= '1';
+            ram3a_select_next <= '1'; -- blank_ram3a (at same time)
+          end if;
+          last_run_successful_tmp_next <= '0';
+          m26cs_state_next <= M26CSS_CHECK_CRC_RAM1A_BEGIN;
+        elsif(write_once_requested = '1') then
+          trigger_check_crc_ram1a_next <= '1';
+          ram1a_select_next <= "11"; -- select check_crc_ram1a
+          m26cs_state_next <= M26CSS_WRITEONCE_CHECK_CRC_RAM1A_BEGIN;
+        end if;
+      end if;
+    when M26CSS_CHECK_CRC_RAM1A_BEGIN =>
+      m26cs_state_next <= M26CSS_CHECK_CRC_RAM1A_WAIT;
+    when M26CSS_CHECK_CRC_RAM1A_WAIT =>
+      if(jtag_check_crc_ram1a_idle = '1') then
+        crc_status_register_next <= jtag_check_crc_ram1a_crc_ok;
+        output := '1';
+        for i in MAX_NUMCHIPS-1 downto 0 loop
+          if(jtag_check_crc_ram1a_crc_ok(i) /= '1' and i < to_integer(numchips_configured)) then
+            output := '0';
+          end if;
+        end loop;        
+        --if(std_logic_vector_all_components_equal_scalar(jtag_check_crc_ram1a_crc_ok(to_integer(numchips_configured)-1 downto 0), '1') = '1') then
+        if(output = '1') then
+          -- if no crc errors for configured chips (consider changing this to checking the whole vector, and also let zeros be ok for crc check)
+            crc_error_on_last_check_next <= '0';
+            trigger_init_ram1b_next <= '1';
+            ram1b_select_next <= '0'; -- select init ram1b
+            ram1a_select_next <= "10"; -- select init ram1b
+            m26cs_state_next <= M26CSS_INIT_RAM1B_BEGIN;          
+        else
+          -- crc error in configured chips, don't continue
+          crc_error_on_last_check_next <= '1';
+          -- clear requests
+          run_requested_next <= '0';
+          write_once_requested_next <= '0';          
+          m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+        end if;
+      end if;
+    when M26CSS_INIT_RAM1B_BEGIN =>
+      m26cs_state_next <= M26CSS_INIT_RAM1B_WAIT;
+    when M26CSS_INIT_RAM1B_WAIT =>
+      if(jtag_init_ram1b_idle = '1') then
+        if(m26cs_firstrun = '1') then
+          -- skip data changed
+          chip_counter_start_next <= '1';
+          m26cs_state_next <= M26CSS_COUNT_CHIPS_BEGIN;
+        else
+          trigger_jtag_write_next <= '1';
+          ram1a_select_next <= "01"; -- select jtag_write_ram1a_a
+          ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+          ram2_select_next <= '0'; -- tdo_compare_count
+          begin_count_data_changed <= '1';-- added 201210
+          m26cs_state_next <= M26CSS_DATA_CHANGED_BEGIN;
+        end if;
+      end if;
+    when M26CSS_DATA_CHANGED_BEGIN =>
+      m26cs_state_next <= M26CSS_DATA_CHANGED_WAIT;
+    when M26CSS_DATA_CHANGED_WAIT =>
+      if(jtag_write_last_tck_cycle = '1' or jtag_write_idle = '1') then
+        end_count_data_changed <= '1'; -- added 201210
+        m26cs_state_next <= M26CSS_BLANK_RAM3A_WAIT;
+      end if;    
+    when M26CSS_BLANK_RAM3A_WAIT =>
+      if(jtag_blank_ram3a_idle = '1') then
+        if(breakpoint_active(0) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          trigger_juec_update_d_ch_next <= '1';
+          ram2_select_next <= '1'; -- juec
+          ram3a_select_next <= '0'; -- juec
+          m26cs_state_next <= M26CSS_JUEC_DATA_CHANGED_BEGIN;
+        end if;
+      end if;
+    when M26CSS_JUEC_DATA_CHANGED_BEGIN =>
+      m26cs_state_next <= M26CSS_JUEC_DATA_CHANGED_WAIT;
+    when M26CSS_JUEC_DATA_CHANGED_WAIT =>
+      if(juec_idle = '1') then
+        if(breakpoint_active(1) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          chip_counter_start_next <= '1';
+          m26cs_state_next <= M26CSS_COUNT_CHIPS_BEGIN;
+        end if;
+      end if;
+    
+    when M26CSS_COUNT_CHIPS_BEGIN =>
+      m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+    when M26CSS_COUNT_CHIPS_WAIT =>
+      if(cc_state = CC_IDLE) then
+        if(breakpoint_active(2) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+--       if(m26csoptions(0) = '1') then        
+            -- skip BYPASSREG CHAIN TEST
+           -- and set CHAIN status to BROKEN
+           chain_status_next(0) <= '1';
+           chain_status_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 3) <= (others => '0');
+             -- next state:
+            ram2_select_next <= '0'; -- tdo_compare_count
+            ram1a_select_next <= "00"; -- select jtag_read_ram1a_a
+            ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+            trigger_jtag_read_next <= '1';-- temporarily go on (for testing without mimosa26 emulator)
+            begin_count_read_errors <= '1'; -- added 201210
+            m26cs_state_next <= M26CSS_READ1_BEGIN; -- temporarily go on (for testing without mimosa26 emulator)
+--           else
+--             trigger_begin_bypassreg_next <= '1';
+--             m26cs_state_next <= M26CSS_BYPASSREG_BEGIN;
+--       end if;
+        end if;
+      end if;
+    when M26CSS_BYPASSREG_BEGIN =>      
+      m26cs_state_next <= M26CSS_BYPASSREG_WAIT;
+    when M26CSS_BYPASSREG_WAIT =>
+      if(jtag_bypassreg_last_tck_cycle = '1' or jtag_bypassreg_idle = '1') then
+        if(breakpoint_active(3) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          chain_status_next(0) <= jtag_bypassreg_chain_broken; -- chain broken
+          if(unsigned(jtag_bypassreg_length) < 2**MAX_NUMCHIPS_PLUS_ONE_LD) then
+            chain_status_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 3) <= jtag_bypassreg_length(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0); -- chain length
+          else
+            chain_status_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 3) <= (others => '0'); -- chain length: set to zero because to long chain found
+          end if;
+          if(jtag_bypassreg_chain_broken = '1') then
+            jtag_chain_broken_counter_next <= jtag_chain_broken_counter + 1;
+            
+            --m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+            ram2_select_next <= '0'; -- tdo_compare_count
+            ram1a_select_next <= "00"; -- select jtag_read_ram1a_a
+            ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+            trigger_jtag_read_next <= '1';-- temporarily go on (for testing without mimosa26 emulator)
+            begin_count_read_errors <= '1'; -- added 201210
+            m26cs_state_next <= M26CSS_READ1_BEGIN; -- temporarily go on (for testing without mimosa26 emulator)
+          else
+            ram2_select_next <= '0'; -- tdo_compare_count
+            ram1a_select_next <= "00"; -- select jtag_read_ram1a_a
+            ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+            trigger_jtag_read_next <= '1';
+            begin_count_read_errors <= '1'; -- added 201210
+            m26cs_state_next <= M26CSS_READ1_BEGIN;
+          end if;
+        end if;
+      end if;
+    when M26CSS_READ1_BEGIN =>
+      m26cs_state_next <= M26CSS_READ1_WAIT;
+    when M26CSS_READ1_WAIT =>
+      if(jtag_read_idle = '1') then -- removed (jtag_read_last_tck_cycle = '1' or ) because writing to RAM needs time
+        end_count_read_errors <= '1'; -- added 201210
+        if(breakpoint_active(4) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          trigger_juec_update_rd_err_next <= '1';
+          ram2_select_next <= '1'; -- juec
+          ram3a_select_next <= '0'; -- juec
+          m26cs_state_next <= M26CSS_JUEC_READ_BEGIN;
+        end if;
+      end if;
+    when M26CSS_JUEC_READ_BEGIN =>
+      m26cs_state_next <= M26CSS_JUEC_READ_WAIT;
+    when M26CSS_JUEC_READ_WAIT =>
+      if(juec_idle = '1') then
+        if(breakpoint_active(5) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        elsif(jtag_check1_active = '1') then
+          -- in case of check1 set, don't write registers
+          -- in order to save time
+          -- clear requests
+          run_requested_next <= '0';
+          write_once_requested_next <= '0';          
+          m26cs_state_next <= M26CSS_STOPPED;
+        else
+          -- do the following later!
+          --trigger_jtag_write_next <= '1';
+          --ram1a_select_next <= "01"; -- select jtag_write_ram1a_a
+          --ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+          --ram2_select_next <= '0'; -- tdo_compare_count
+          m26cs_state_next <= M26CSS_REQUEST_RESET_BEGIN;
+        end if;
+      end if;
+    when M26CSS_REQUEST_RESET_BEGIN =>
+      request_reset_next <= '1';
+      m26cs_state_next <= M26CSS_REQUEST_RESET_WAIT;
+    when M26CSS_REQUEST_RESET_WAIT =>
+      reset_wait_next <= RESET_WAIT_DURATION;
+      m26cs_state_next <= M26CSS_REQUESTED_RESET_WAIT;
+    when M26CSS_REQUESTED_RESET_WAIT =>
+      reset_wait_next <= reset_wait - 1;
+      request_reset_next <= '0';
+      if(reset_wait = reset_wait_zero) then
+        trigger_jtag_write_next <= '1';
+        ram1a_select_next <= "01"; -- select jtag_write_ram1a_a
+        if(ram1b_copy_requested = '0') then -- this is a hack, to only change ram1b if not yet data changed triggered copy request
+          ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+        else
+          ram1b_select_next <= '0';
+        end if;
+        ram2_select_next <= '0'; -- tdo_compare_count      
+        m26cs_state_next <= M26CSS_WRITE1_BEGIN;
+      end if;
+    when M26CSS_WRITE1_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITE1_WAIT;
+    when M26CSS_WRITE1_WAIT =>
+      if(jtag_write_idle = '1') then
+        if(breakpoint_active(6) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          trigger_jtag_write_next <= '1';
+          begin_count_write_errors <= '1'; -- added 201210
+          m26cs_state_next <= M26CSS_WRITE2_BEGIN;
+        end if;
+      end if;
+    when M26CSS_WRITE2_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITE2_WAIT;
+    when M26CSS_WRITE2_WAIT =>
+      if(jtag_write_idle = '1') then
+        end_count_write_errors <= '1'; -- added 201210
+        if(breakpoint_active(7) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          prog_jtag_finished_next <= '1';
+          trigger_juec_update_wr_err_next <= '1';
+          ram2_select_next <= '1'; -- juec
+          ram3a_select_next <= '0'; -- juec
+          m26cs_state_next <= M26CSS_JUEC_WRITE_BEGIN;
+        end if;
+      end if;
+    when M26CSS_JUEC_WRITE_BEGIN =>
+      m26cs_state_next <= M26CSS_JUEC_WRITE_WAIT;
+    when M26CSS_JUEC_WRITE_WAIT =>
+      if(juec_idle = '1') then
+        if(breakpoint_active(8) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          trigger_juec_update_run_counter_next <= '1';
+          m26cs_state_next <= M26CSS_JUEC_RUN_COUNTER_BEGIN;
+        end if;
+      end if;
+    when M26CSS_JUEC_RUN_COUNTER_BEGIN =>
+      m26cs_state_next <= M26CSS_JUEC_RUN_COUNTER_WAIT;
+    when M26CSS_JUEC_RUN_COUNTER_WAIT =>
+      if(juec_idle = '1') then
+        if(breakpoint_active(9) = '1') then
+          --stay in state
+          --m26cs_state_next <= M26CSS_COUNT_CHIPS_WAIT;
+        else
+          m26cs_firstrun_next <= '0';
+          last_run_successful_tmp_next <= not (last_read_error or last_write_error); -- added 201210
+          -- clear requests
+          run_requested_next <= '0';
+          write_once_requested_next <= '0';          
+          m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+        end if;
+      end if;
+      
+      
+    -- WRITE_ONCE states
+    when M26CSS_WRITEONCE_CHECK_CRC_RAM1A_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITEONCE_CHECK_CRC_RAM1A_WAIT;
+    when M26CSS_WRITEONCE_CHECK_CRC_RAM1A_WAIT =>
+      if(jtag_check_crc_ram1a_idle = '1') then
+        crc_status_register_next <= jtag_check_crc_ram1a_crc_ok;
+        output := '1';
+        for i in MAX_NUMCHIPS-1 downto 0 loop
+          if(jtag_check_crc_ram1a_crc_ok(i) /= '1' and i < to_integer(numchips_configured)) then
+            output := '0';
+          end if;
+        end loop;        
+        --if(std_logic_vector_all_components_equal_scalar(jtag_check_crc_ram1a_crc_ok(to_integer(numchips_configured)-1 downto 0), '1') = '1') then
+        if(output = '1') then
+          -- if no crc errors for configured chips (consider changing this to checking the whole vector, and also let zeros be ok for crc check)
+            crc_error_on_last_check_next <= '0';
+            trigger_init_ram1b_next <= '1';
+            ram1b_select_next <= '0'; -- select init ram1b
+            ram1a_select_next <= "10"; -- select init ram1b
+            m26cs_state_next <= M26CSS_WRITEONCE_INIT_RAM1B_BEGIN;          
+        else
+          -- crc error in configured chips, don't continue
+          crc_error_on_last_check_next <= '1';
+          run_requested_next <= '0';
+          write_once_requested_next <= '0';          
+          m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+        end if;
+      end if;    
+    when M26CSS_WRITEONCE_INIT_RAM1B_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITEONCE_INIT_RAM1B_WAIT;
+    when M26CSS_WRITEONCE_INIT_RAM1B_WAIT =>
+      if(jtag_init_ram1b_idle = '1') then
+          chip_counter_start_next <= '1';
+          m26cs_state_next <= M26CSS_WRITEONCE_COUNT_CHIPS_BEGIN;
+      end if;
+    when M26CSS_WRITEONCE_COUNT_CHIPS_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITEONCE_COUNT_CHIPS_WAIT;
+    when M26CSS_WRITEONCE_COUNT_CHIPS_WAIT => 
+        trigger_jtag_write_next <= '1';
+        ram1a_select_next <= "01"; -- select jtag_write_ram1a_a
+        ram1b_select_next <= '1'; -- select jtag_data_to_ram_ram1b
+        ram2_select_next <= '0'; -- tdo_compare_count      
+        m26cs_state_next <= M26CSS_WRITEONCE_WRITE1_BEGIN;
+    when M26CSS_WRITEONCE_WRITE1_BEGIN =>
+      m26cs_state_next <= M26CSS_WRITEONCE_WRITE1_WAIT;
+    when M26CSS_WRITEONCE_WRITE1_WAIT =>
+      if(jtag_write_idle = '1') then
+        -- clear requests
+        run_requested_next <= '0';
+        write_once_requested_next <= '0';
+        write_once_count_next <= write_once_count + 1;
+        m26cs_state_next <= M26CSS_WAIT_FOR_TRIGGER;
+      end if;      
+  end case;
+  if(RUN_REQUEST_IN = '1') then
+    run_requested_next <= '1';
+  end if;
+  if(WRITE_ONCE_REQUEST_IN = '1') then
+    write_once_requested_next <= '1';
+  end if;
+  
+end process;
+
+
+status2_copy_finished   <= not jtag_status2_copy_requested and not jtag_status2_copy_request_strobe;
+CP_STATUS2 : process(jtag_status2_copy_requested, jtag_status2_copy_request_strobe, status2_chain_status, status2_run_counter, cps2_state, m26cs_state, jtag_copy_ram3_idle, run_counter, chain_status)
+begin
+  jtag_status2_copy_requested_next <= jtag_status2_copy_requested;
+  -- these are all copies of the registers changed in M26CS
+  status2_run_counter_next <= status2_run_counter;
+  status2_chain_status_next <= status2_chain_status;
+  cps2_state_next <= cps2_state;
+  trigger_copy_ram3_next <= '0';
+  case cps2_state is
+    when CPS2_IDLE =>
+      if(jtag_status2_copy_requested = '1' and m26cs_state = M26CSS_STOPPED) then
+        trigger_copy_ram3_next <= '1';
+        cps2_state_next <= CPS2_COPY_BEGIN;
+      end if;
+    when CPS2_COPY_BEGIN =>
+      status2_run_counter_next <= run_counter;
+      status2_chain_status_next <= chain_status;
+      cps2_state_next <= CPS2_COPY_WAIT;
+    when CPS2_COPY_WAIT =>
+      if(jtag_copy_ram3_idle = '1') then
+        jtag_status2_copy_requested_next <= '0';
+        cps2_state_next <= CPS2_IDLE;
+      end if;
+  end case; --finishing needs 2 clock cycles, after 2 clock cycles the next jtag_status2_copy_request_strobe will be accepted. the copying itself needs much longer, so if the querying agent waits till after the copy has finished until the next is requested, the new request not be missed due to this delay
+  if(jtag_status2_copy_request_strobe = '1') then 
+    jtag_status2_copy_requested_next <= '1';
+  end if;
+end process;
+
+TRIGGER_CP_RAM1B1C : process(ram1b_copy_requested, ram1c_run_counter, ram1c_chain_status, ram1b1c_copy_trigger_active, ram1b1c_copy_trigger_strobe, copy_ram1b1c_idle, cpr1bc_state, m26cs_state, run_counter, chain_status, juec_read_errors, juec_write_errors, juec_data_changed)
+begin
+  ram1b_copy_requested_next <= ram1b_copy_requested;
+  -- these are all copies of the registers changed in M26CS
+  ram1c_run_counter_next <= ram1c_run_counter;
+  ram1c_chain_status_next <= ram1c_chain_status;
+  cpr1bc_state_next <= cpr1bc_state;
+  trigger_copy_ram1b1c_next <= '0';
+  ram1b1c_copy_trigger_active_next <= ram1b1c_copy_trigger_active or ram1b1c_copy_trigger_strobe;
+  case cpr1bc_state is
+    when CPR1BC_IDLE =>
+      if(ram1b_copy_requested = '1' and m26cs_state = M26CSS_STOPPED) then
+        trigger_copy_ram1b1c_next <= '1';
+        cpr1bc_state_next <= CPR1BC_COPY_BEGIN;
+      end if;
+    when CPR1BC_COPY_BEGIN =>
+      ram1c_run_counter_next <= run_counter;
+      ram1c_chain_status_next <= chain_status;
+      cpr1bc_state_next <= CPR1BC_COPY_WAIT;
+    when CPR1BC_COPY_WAIT =>
+      if(copy_ram1b1c_idle = '1') then
+        ram1b_copy_requested_next <= '0';
+        cpr1bc_state_next <= CPR1BC_IDLE;
+      end if;
+  end case; --finishing needs 2 clock cycles, after 2 clock cycles the next jtag_status2_copy_request_strobe will be accepted. the copying itself needs much longer, so if the querying agent waits till after the copy has finished until the next is requested, the new request not be missed due to this delay
+  if(juec_read_errors = '1' and ram1b1c_copy_trigger_active(0) = '1') or 
+    (juec_write_errors = '1' and ram1b1c_copy_trigger_active(1) = '1') or
+    (juec_data_changed = '1' and ram1b1c_copy_trigger_active(2) = '1') or
+     (ram1b1c_copy_trigger_active(3) = '1') then 
+      ram1b_copy_requested_next <= '1';
+      -- deactivate triggers (copy is requested)
+      ram1b1c_copy_trigger_active_next <= (others => '0');
+  end if;
+end process;
+
+
+
+-- -- OR the status bits of all registers separately for each sensor and (JTAG_ERROR, DATA_CHANGED, DATA CHANGED OVER THRESHOLD)
+-- WRITE_STATUS_REG_OR : process(write_status_register)
+-- variable write_status_reg_acc : std_logic_vector(3*MAX_NUMCHIPS-1 downto 0);
+-- begin
+--   write_status_reg_acc := (others => '0');
+--   for i in 0 to MAX_REGISTERS - 1 loop
+--       write_status_reg_acc := write_status_reg_acc or
+--                 write_status_register( i*3*MAX_NUMCHIPS + 3*MAX_NUMCHIPS - 1 downto
+--                                        i*3*MAX_NUMCHIPS);
+--   end loop;
+--   write_status_register_or_next <= write_status_reg_acc;
+-- end process;
+
+
+-- READ_STATUS_REG_OR : process(status_register)
+-- variable read_error2_acc : std_logic;
+-- begin
+--   read_error2_acc := '0';
+--   for i in 0 to MAX_NUMCHIPS-1 loop
+--     read_error2_acc := read_error2_acc or status_register(STATUS_READ_ERROR2 + i);
+--   end loop;
+--   status_register_read_error2_next <= read_error2_acc;
+-- end process;
+
+--numchips_configured_next <= std_logic_vector(to_unsigned(3,MAX_NUMCHIPS_LD+1));
+--ram_m26c_a1_next(M26C_RAM_DEPTH-1 downto 8) <= ram_base_addr;
+-- put together ram1a address
+ram1a_a1 <= ram1a_a1_base_addr & ram1a_a1_rel_addr;
+buf_bus2_ram_read_enable_out_next <= bus2_ram_read_enable_out;
+buf_buf_bus2_ram_read_enable_out_next <= buf_bus2_ram_read_enable_out;
+BUS2_RAM_RW : process (bus2_ram_addr_out, bus2_ram_data_out, bus2_ram_read_enable_out, bus2_ram_write_enable_out, buf_buf_bus2_ram_read_enable_out, ram1a_dout1, ram1a_din1, ram1a_a1_rel_addr, bus2_ram_data_in, m26cs_stopped)
+begin
+  ram1a_wr1_next <= '0';
+  ram1a_din1_next <= ram1a_din1;
+  ram1a_a1_rel_addr_next   <= ram1a_a1_rel_addr;
+  bus2_ram_data_in_next <= bus2_ram_data_in;
+  bus2_ram_dataready_in_next <= '0';
+  bus2_ram_write_ack_in_next <= '0';
+  bus2_ram_no_more_data_in_next <= '0';
+  bus2_ram_unknown_addr_in_next <= '0';
+  if(bus2_ram_write_enable_out='1') then
+    ram1a_din1_next <= bus2_ram_data_out;
+    ram1a_a1_rel_addr_next   <= bus2_ram_addr_out(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);
+    -- only allow ram1a to be changed if stopped!
+    if(m26cs_stopped = '1') then
+      ram1a_wr1_next <= '1';
+      bus2_ram_write_ack_in_next <= '1';
+    else
+      bus2_ram_unknown_addr_in_next <= '1';
+    end if;
+  elsif(bus2_ram_read_enable_out='1') then
+    ram1a_a1_rel_addr_next <= bus2_ram_addr_out(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);
+    
+  elsif(buf_buf_bus2_ram_read_enable_out='1') then
+    bus2_ram_data_in_next <= ram1a_dout1;
+    bus2_ram_dataready_in_next <= '1';
+  end if;
+end process;
+
+BUS2_STATUS_R : process (bus2_status_addr_out, crc_status_register, bus2_status_read_enable_out, bus2_status_write_enable_out, bus2_status_data_in)
+variable bus_addr_int : integer range 0 to 31;
+begin
+  bus2_status_data_in_next <= bus2_status_data_in;
+  bus2_status_dataready_in_next <= '0';
+  bus2_status_write_ack_in_next <= '0';
+  bus2_status_no_more_data_in_next <= '0';
+  bus2_status_unknown_addr_in_next <= '0';
+  if(bus2_status_read_enable_out='1') then
+    -- STATUS register layout: 8 bits/chip 
+    -- first 32 bits : CRC status
+    -- bits i*32+31 downto i*32: bits 0: JTAG_ERROR, 1: WRITE_ERROR, 2: WRITE_ERROR2, 3: READ_ERROR, 4: READ_ERROR2, 
+    --                                5: DATA_CHANGED, 6: reserved, 7: reserved 
+    bus_addr_int := to_integer(unsigned(bus2_status_addr_out(4 downto 0)));
+    if(bus_addr_int = 0) then
+      bus2_status_data_in_next(31 downto MAX_REGISTERS) <= (others => '0');
+      bus2_status_data_in_next(MAX_NUMCHIPS - 1 downto 0) <= crc_status_register(MAX_NUMCHIPS - 1 downto 0);
+      bus2_status_dataready_in_next <= '1';
+--     elsif(4*(bus_addr_int-1) < MAX_NUMCHIPS) then
+-- --       for i in 0 to MIN(MAX_NUMCHIPS-4*(bus_addr_int - 1)-1,3) loop
+-- --         bus2_status_data_in_next(8*i+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+i);
+-- --         bus2_status_data_in_next(8*i+7 downto 8*i+6) <= (others => '0');
+-- --       end loop;
+-- --      bus2_status_data_in_next(31 downto 8*(MIN(MAX_NUMCHIPS-4*(bus_addr_int - 1)-1,3)+1)) <= (others => '0');
+-- 
+--       bus2_status_data_in_next <= (others => '0');
+--       bus2_status_data_in_next(8*0+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+6) <= removed_chips(4*(bus_addr_int-1)+0);
+--       bus2_status_data_in_next(8*0+7 downto 8*0+7) <= (others => '0');
+--       if(4*(bus_addr_int-1)+1 < MAX_NUMCHIPS) then
+--         bus2_status_data_in_next(8*1+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+6) <= removed_chips(4*(bus_addr_int-1)+1);
+--         bus2_status_data_in_next(8*1+7 downto 8*1+7) <= (others => '0');
+--       end if;
+--       if(4*(bus_addr_int-1)+2 < MAX_NUMCHIPS) then
+--         bus2_status_data_in_next(8*2+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+6) <= removed_chips(4*(bus_addr_int-1)+2);
+--         bus2_status_data_in_next(8*2+7 downto 8*2+7) <= (others => '0');
+--       end if;
+--       if(4*(bus_addr_int-1)+3 < MAX_NUMCHIPS) then
+--         bus2_status_data_in_next(8*3+0) <= status_register(STATUS_JTAG_ERROR + 4*(bus_addr_int-1)+3);        bus2_status_data_in_next(8*3+1) <= status_register(STATUS_WRITE_ERROR + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+2) <= status_register(STATUS_WRITE_ERROR2 + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+3) <= status_register(STATUS_READ_ERROR + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+4) <= status_register(STATUS_READ_ERROR2 + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+5) <= status_register(STATUS_DATA_CHANGED + 4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+6) <= removed_chips(4*(bus_addr_int-1)+3);
+--         bus2_status_data_in_next(8*3+7 downto 8*3+7) <= (others => '0');
+--       end if;
+--       bus2_status_dataready_in_next <= '1';
+    else
+      bus2_status_unknown_addr_in_next <= '1';
+    end if;
+  end if;
+  if(bus2_status_write_enable_out='1') then
+    bus2_status_unknown_addr_in_next <= '1';
+  end if;
+end process;
+
+BUS2_CONTROL_RW : process (bus2_control_addr_out, bus2_control_data_out, bus2_control_read_enable_out, bus2_control_write_enable_out, bus2_control_data_in, jtag_refresh_active, ram1a_a1_base_addr, data_register, jtag_check1_active, numchips_configured, removed_chips, jtag_clock_cycle_length, jtag_clock_time1, jtag_clock_time2, 
+jtag_sample_time1, jtag_sample_time2, jtag_sample_time3, jtag_set_data_time, breakpoint_active, run_counter, debug_trigger_counter, last_not_removed, m26cs_stopped, numchips_active, m26csoptions, jtag_delay_expvalues
+)
+begin
+  bus2_control_data_in_next <= bus2_control_data_in;
+  bus2_control_dataready_in_next <= '0';
+  bus2_control_write_ack_in_next <= '0';
+  bus2_control_no_more_data_in_next <= '0';
+  bus2_control_unknown_addr_in_next <= '0';
+  jtag_refresh_active_next <= jtag_refresh_active;
+  ram1a_a1_base_addr_next  <= ram1a_a1_base_addr;
+  data_register_next <= data_register;
+  jtag_status2_copy_request_strobe_next <= '0';
+  jtag_check1_active_next <= jtag_check1_active;
+  numchips_configured_next <= numchips_configured;
+  removed_chips_next <= removed_chips;
+  jtag_clock_cycle_length_next <= jtag_clock_cycle_length;
+  jtag_clock_time1_next <= jtag_clock_time1;
+  jtag_clock_time2_next <= jtag_clock_time2;
+  jtag_sample_time1_next <= jtag_sample_time1;
+  jtag_sample_time2_next <= jtag_sample_time2;
+  jtag_sample_time3_next <= jtag_sample_time3;
+  jtag_set_data_time_next <= jtag_set_data_time;
+  jtag_pulses_reset_next <= '0';
+  breakpoint_active_next <= breakpoint_active;
+  ram1b1c_copy_trigger_strobe_next <= (others => '0');
+  m26csoptions_next <= m26csoptions;
+  jtag_delay_expvalues_next <= jtag_delay_expvalues;
+  
+  --driver_speed_next <= driver_speed;
+  --deactivate_sensor_strobe_next <= (others => '0');
+  --reactivate_sensor_strobe_next <= (others => '0');
+  --disable_write_next <= disable_write;
+  --disable_writeerror_for_remove_next <= disable_writeerror_for_remove;
+  --disable_remove_next <= disable_remove;
+  --debug_one_remove_strobe_next <= '0';
+  if(bus2_control_write_enable_out='1') then
+    -- CONTROL registers layout:  
+    -- ADDR_CONTROL_CMD
+    -- ADDR_CONTROL_RAM_BASEADDR
+    -- bits i*32+31 downto i*32: bits 0: JTAG_ERROR, 1: WRITE_ERROR, 2: WRITE_ERROR2, 3: READ_ERROR, 4: READ_ERROR2, 
+    --                                5: DATA_CHANGED, 6: reserved, 7: reserved 
+    if(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_CMD) then
+      bus2_control_write_ack_in_next <= '1';
+      if(bus2_control_data_out(7 downto 0) = M26C_CMD_START) then
+        jtag_refresh_active_next <= '1';
+      elsif(bus2_control_data_out(7 downto 0) =M26C_CMD_START_CHECK1) then
+        jtag_check1_active_next <= '1';
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_STOP) then
+        jtag_refresh_active_next <= '0';
+        jtag_check1_active_next <= '0';
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_REMOVE_SENSOR ) then
+        -- only signal ack if really written
+        bus2_control_write_ack_in_next <= '0';
+        bus2_control_no_more_data_in_next <= '1';
+        -- only allowed to change removed chips when not writing to JTAG interface!
+        if(m26cs_stopped = '1') then
+          if(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))<MAX_NUMCHIPS) then
+            removed_chips_next(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0)))) <= '1';
+            bus2_control_write_ack_in_next <= '1';
+            bus2_control_no_more_data_in_next <= '0';
+          end if;
+        end if;
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_INSERT_SENSOR ) then
+        -- only signal ack if really written
+        bus2_control_write_ack_in_next <= '0';
+        bus2_control_no_more_data_in_next <= '1';
+        -- only allowed to change removed chips when not writing to JTAG interface!
+        if(jtag_refresh_active = '0' and jtag_check1_active = '0') then
+          if(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))<MAX_NUMCHIPS) then
+            removed_chips_next(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0)))) <= '0';
+            bus2_control_write_ack_in_next <= '1';
+            bus2_control_no_more_data_in_next <= '0';
+          end if;
+        end if;
+      --elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_SPEED) then
+        --driver_speed_next <= data_register(15 downto 0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_SPEED) then
+--         data_register_next(31 downto 16) <= (others => '0');
+--         data_register_next(15 downto 0) <= driver_speed;
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_REACTIVATE_SENSOR) then
+--         if(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))<MAX_NUMCHIPS) then
+--           reactivate_sensor_strobe_next(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0)))) <= '1';
+--         end if;
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_DEACTIVATE_SENSOR) then
+--         if(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))<MAX_NUMCHIPS) then
+--           deactivate_sensor_strobe_next(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0)))) <= '1';
+--         end if;
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_NUMCHIPS_CONFIGURED) then
+        data_register_next(31 downto MAX_NUMCHIPS_LD) <= (others => '0');
+        data_register_next(MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(numchips_configured);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_NUMCHIPS_ACTIVE) then
+        data_register_next(31 downto MAX_NUMCHIPS_LD) <= (others => '0');
+        data_register_next(MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(numchips_active);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_TRIGGER_COUNT) then
+        data_register_next <= std_logic_vector(debug_trigger_counter);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_DISABLE_WRITE) then
+--         data_register_next(31 downto 1) <= (others => '0');
+--         data_register_next(0) <= disable_write;
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_DISABLE_WRITE) then
+--         disable_write_next <= data_register(0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_LAST_NOT_REMOVED) then
+        data_register_next(31 downto MAX_NUMCHIPS_LD) <= (others => '0');
+        data_register_next(MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(last_not_removed);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_REMOVED) then
+        data_register_next(31 downto 1) <= (others => '0');
+        data_register_next(0) <=  removed_chips(to_integer(unsigned(data_register(MAX_NUMCHIPS_LD-1 downto 0))));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_REMOVED32) then
+        data_register_next(31 downto MYMIN(MAX_NUMCHIPS-1, 31)) <= (others => '0');
+        data_register_next(MYMIN(MAX_NUMCHIPS-1, 31) downto 0) <= removed_chips(MYMIN(MAX_NUMCHIPS-1, 31) downto 0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_REACTIVATE_SENSOR32) then
+--         data_register_next(31 downto 0) <= reactivate_sensor(31 downto 0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_DEACTIVATE_SENSOR32) then
+--         data_register_next(31 downto 0) <= deactivate_sensor(31 downto 0);
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_M26_DEV_ID) then
+--         data_register_next <= JTAG_M26_DEV_ID;
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_NUMCHIPS_CONFIGURED) then
+        numchips_configured_next <= unsigned(data_register(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0));
+--       elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_NUMCHIPS) then
+--         data_register_next(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0) <= std_logic_vector(numchips_configured);
+--         data_register_next(31 downto MAX_NUMCHIPS_PLUS_ONE_LD) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_BREAKPOINTS) then
+        breakpoint_active_next <= data_register(9 downto 0);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_BREAKPOINTS) then
+        data_register_next(9 downto 0) <= breakpoint_active;
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH) then
+        jtag_clock_cycle_length_next <=         unsigned(data_register(9 downto 0));
+        jtag_pulses_reset_next <= '1'; -- reset counter (because maximum value of counter could be exceeded)
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_CLOCK_CYCLE_LENGTH) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_clock_cycle_length);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_CLOCK_TIME1) then
+        jtag_clock_time1_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_CLOCK_TIME1) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_clock_time1);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_CLOCK_TIME2) then
+        jtag_clock_time2_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_CLOCK_TIME2) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_clock_time2);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_SAMPLE_TIME1) then
+        jtag_sample_time1_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_SAMPLE_TIME1) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_sample_time1);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_SAMPLE_TIME2) then
+        jtag_sample_time2_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_SAMPLE_TIME2) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_sample_time2);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_SAMPLE_TIME3) then
+        jtag_sample_time3_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_SAMPLE_TIME3) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_sample_time3);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_JTAG_SET_DATA_TIME) then
+        jtag_set_data_time_next <=         unsigned(data_register(9 downto 0));
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_JTAG_SET_DATA_TIME) then
+        data_register_next(9 downto 0) <= std_logic_vector(jtag_set_data_time);
+        data_register_next(31 downto 10) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_RUN_COUNT) then
+        data_register_next(31 downto 0) <= std_logic_vector(run_counter);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_TO_STATUS2) then
+        jtag_status2_copy_request_strobe_next <= '1';
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER) then
+        ram1b1c_copy_trigger_strobe_next(3 downto 0) <= data_register(3 downto 0); -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_READ_ERROR) then
+        ram1b1c_copy_trigger_strobe_next(0) <= '1'; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_WRITE_ERROR) then
+        ram1b1c_copy_trigger_strobe_next(1) <= '1'; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_DATA_CHANGED) then
+        ram1b1c_copy_trigger_strobe_next(2) <= '1'; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_NOW) then
+        ram1b1c_copy_trigger_strobe_next(3) <= '1'; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_CSOPTIONS) then
+        m26csoptions_next(0 downto 0) <= data_register(0 downto 0); -- bit 0 => skip bypassreg chaintest
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_CSOPTIONS) then
+        data_register_next(0 downto 0) <= m26csoptions(0 downto 0); -- bit 0 => skip bypassreg chaintest
+       data_register_next(31 downto 0+1) <= (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_SET_DELAY_EXPECTED_VALUES) then
+        jtag_delay_expvalues_next(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0) <= data_register(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0);
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_DELAY_EXPECTED_VALUES) then
+         data_register_next(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0) <= jtag_delay_expvalues(JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD-1 downto 0);
+         data_register_next(31 downto JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD) <=  (others => '0');
+      elsif(bus2_control_data_out(7 downto 0) = M26C_CMD_GET_ACTIVITY) then
+         data_register_next(0) <= jtag_refresh_active;
+         data_register_next(1) <= jtag_check1_active;
+         data_register_next(31 downto 2) <=  (others => '0');
+      else 
+        -- revoke write_ack, which was set preliminary before "if"
+        bus2_control_write_ack_in_next <= '0';
+        bus2_control_unknown_addr_in_next <= '1';
+      end if;
+    elsif(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_RAM_BASEADDR) then
+      ram1a_a1_base_addr_next <= bus2_control_data_out(MAX_NUMCHIPS_LD-1 downto 0);
+      bus2_control_write_ack_in_next <= '1';
+    elsif(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_DATA_REGISTER) then
+      data_register_next <= bus2_control_data_out;
+      bus2_control_write_ack_in_next <= '1';
+    else
+      bus2_control_unknown_addr_in_next <= '1';
+    end if;
+  elsif(bus2_control_read_enable_out='1') then
+    if(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_CMD) then
+      bus2_control_data_in_next <= (others => '0');
+      bus2_control_dataready_in_next <= '1';
+    elsif(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_RAM_BASEADDR) then
+      bus2_control_data_in_next(31 downto RAM_JTAG_REGISTERS_DEPTH-8) <= (others => '0');
+      bus2_control_data_in_next(MAX_NUMCHIPS_LD-1 downto 0) <= ram1a_a1_base_addr;
+      bus2_control_dataready_in_next <= '1';    
+    elsif(bus2_control_addr_out(4 downto 0) = ADDR_CONTROL_DATA_REGISTER) then
+      bus2_control_data_in_next <= data_register;
+      bus2_control_dataready_in_next <= '1';    
+    else
+      bus2_control_unknown_addr_in_next <= '1';
+    end if;
+  end if;
+end process;
+
+BUS2_DEBUG_R : process (bus2_debug_addr_out, bus2_debug_read_enable_out, bus2_debug_write_enable_out, bus2_debug_data_in, debug_m26cs_state, debug_trigger_counter, debug_test, ram1b_a2, ram1b_dout2, bus2_debug_data_out, ram1c_a2, ram1c_dout2, ram1c_chain_status, ram1c_run_counter, debugtdo_timeout, debugtdo_underflow, debugtdo_overflow, debugtdo_full, debugtdo_empty, debugtdo_dout, write_once_count)
+begin
+  bus2_debug_data_in_next <= bus2_debug_data_in;
+  bus2_debug_dataready_in_next <= '0';
+  bus2_debug_write_ack_in_next <= '0';
+  bus2_debug_no_more_data_in_next <= '0';
+  bus2_debug_unknown_addr_in_next <= '0';
+  debug_test_next <= debug_test;
+  ram1b_a2_next <= ram1b_a2;
+  ram1c_a2_next <= ram1c_a2;
+  debugtdo_activate_strobe <= '0';
+  debugtdo_timeout_next <= debugtdo_timeout;
+  debugtdo_rd_en <= '0';
+  resetdebugtdo_strobe <= '0';
+  if(bus2_debug_write_enable_out='1') then
+    if(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_TEST) then
+      debug_test_next <= bus2_debug_data_out;
+      bus2_debug_write_ack_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1BADDR) then
+      ram1b_a2_next <= bus2_debug_data_out(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+      bus2_debug_write_ack_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1CADDR) then
+      ram1c_a2_next <= bus2_debug_data_out(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+      bus2_debug_write_ack_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_TIMEOUT) then
+      debugtdo_timeout_next <= bus2_debug_data_out(31 downto 0);
+      bus2_debug_write_ack_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_ACTIVATE) then
+      if( bus2_debug_data_out(0) = '1') then
+        debugtdo_activate_strobe <= '1';
+        bus2_debug_write_ack_in_next <= '1';
+      end if;
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_CONTROLFIFO) then
+      if( bus2_debug_data_out(0) = '1') then
+        debugtdo_rd_en <= '1';
+        bus2_debug_write_ack_in_next <= '1';
+      elsif( bus2_debug_data_out(4) = '1') then
+        resetdebugtdo_strobe <= '1';
+        bus2_debug_write_ack_in_next <= '1';
+      end if;
+    else
+      bus2_debug_unknown_addr_in_next <= '1';
+    end if;  
+  elsif(bus2_debug_read_enable_out='1') then
+    if(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_TEST) then
+      bus2_debug_data_in_next <= debug_test;
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_M26CS_STATE) then
+      bus2_debug_data_in_next(31 downto 8) <= (others => '0');
+      bus2_debug_data_in_next(7 downto 0) <= debug_m26cs_state;
+      bus2_debug_dataready_in_next <= '1';
+--     elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_M26C_READ_STATE) then
+--       bus2_debug_data_in_next(31 downto 8) <= (others => '0');
+--       bus2_debug_data_in_next(7 downto 0) <= read_state_out;
+--       bus2_debug_dataready_in_next <= '1';
+--     elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_M26C_WRITE_STATE) then
+--       bus2_debug_data_in_next(31 downto 8) <= (others => '0');
+--       bus2_debug_data_in_next(7 downto 0) <= write_state_out;
+--       bus2_debug_dataready_in_next <= '1';
+--     elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_JTAG_DRIVER_STATE) then
+--       bus2_debug_data_in_next(31 downto 9) <= (others => '0');
+--       bus2_debug_data_in_next(8 downto 0) <= driver_state_out;
+--       bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_TRIGGER_COUNT) then
+      bus2_debug_data_in_next <= std_logic_vector(debug_trigger_counter);
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_VERSION) then
+      bus2_debug_data_in_next <= std_logic_vector(to_unsigned(VERSION_NUMBER_TIME,32));
+      bus2_debug_dataready_in_next <= '1';
+      bus2_debug_unknown_addr_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1B_DATA) then
+      bus2_debug_data_in_next <= ram1b_dout2;
+      bus2_debug_dataready_in_next <= '1'; -- this isn't safe, but it's for debugging only, would need to wait for RAM after setting the address
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1C_DATA) then
+      bus2_debug_data_in_next <= ram1c_dout2;
+      bus2_debug_dataready_in_next <= '1'; -- this isn't safe, but it's for debugging only, would need to wait for   RAM after setting the address    
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1C_RUN_COUNTER) then
+      bus2_debug_data_in_next <= std_logic_vector(ram1c_run_counter);
+      bus2_debug_dataready_in_next <= '1'; -- this isn't safe, but it's for debugging only, would need to wait for   RAM after setting the address    
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_RAM1C_CHAIN_STATUS) then
+      bus2_debug_data_in_next(31 downto 3+MAX_NUMCHIPS_PLUS_ONE_LD) <= (others => '0');
+      bus2_debug_data_in_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0) <= ram1c_chain_status;
+      bus2_debug_dataready_in_next <= '1'; -- this isn't safe, but it's for debugging only, would need to wait for   RAM after setting the address    
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_SAMPLES) then
+      bus2_debug_data_in_next(31 downto 0) <= debugtdo_dout;
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_GETFIFOSTATUS) then
+      bus2_debug_data_in_next(0) <= debugtdo_full;
+      bus2_debug_data_in_next(1) <= debugtdo_empty;
+      bus2_debug_data_in_next(2) <= debugtdo_overflow;
+      bus2_debug_data_in_next(3) <= debugtdo_underflow;
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_DEBUGTDO_TIMEOUT) then
+      bus2_debug_data_in_next(31 downto 0) <= debugtdo_timeout_next;
+      bus2_debug_dataready_in_next <= '1';
+    elsif(bus2_debug_addr_out(4 downto 0) = ADDR_DEBUG_WRONCE_COUNT) then
+      bus2_debug_data_in_next(31 downto COUNTER_WIDTHS) <= (others => '0');
+      bus2_debug_data_in_next(COUNTER_WIDTHS-1 downto 0) <= std_logic_vector(write_once_count);
+      bus2_debug_dataready_in_next <= '1';
+    end if;
+  end if;
+end process;
+
+buf_bus2_status2_read_ram3b_next <= bus2_status2_read_ram3b;
+BUS2_STATUS2_R : process (bus2_status2_addr_out, bus2_status2_data_out, bus2_status2_read_enable_out, bus2_status2_write_enable_out, bus2_status2_data_in, status2_copy_finished, status2_chain_status, status2_run_counter, bus2_status_addr_out, buf_bus2_status2_read_ram3b, jtag_refresh_active, ram3b_dout2, ram3b_a2_rel_addr, ram3b_a2_base_addr)
+variable bus_addr_int : integer range 0 to 31;
+begin
+  bus2_status2_data_in_next <= bus2_status2_data_in;
+  bus2_status2_dataready_in_next <= '0';
+  bus2_status2_write_ack_in_next <= '0';
+  bus2_status2_no_more_data_in_next <= '0';
+  bus2_status2_unknown_addr_in_next <= '0';
+  bus2_status2_read_ram3b_next <= '0';
+  ram3b_a2_base_addr_next <= ram3b_a2_base_addr;
+  ram3b_a2_rel_addr_next <= ram3b_a2_rel_addr;
+  if(buf_bus2_status2_read_ram3b = '1') then
+    bus2_status2_data_in_next <= ram3b_dout2;
+    bus2_status2_dataready_in_next <= '1';
+  end if;
+  if(bus2_status2_read_enable_out='1') then
+    -- STATUS register layout: 8 bits/chip 
+    -- first 32 bits : CRC status
+    -- bits i*32+31 downto i*32: bits 0: JTAG_ERROR, 1: WRITE_ERROR, 2: WRITE_ERROR2, 3: READ_ERROR, 4: READ_ERROR2, 
+    --                                5: DATA_CHANGED, 6: reserved, 7: reserved 
+    if(bus2_status2_addr_out(4) = '1') then -- ram3b
+      ram3b_a2_rel_addr_next <= bus2_status_addr_out(3 downto 0);
+      bus2_status2_read_ram3b_next <= '1';
+      -- dataready delayed
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_TRIGGERCOUNTER_COPY) then
+      bus2_status2_data_in_next <= std_logic_vector(status2_run_counter);
+      bus2_status2_dataready_in_next <= '1';
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_CHAIN_STATUS_COPY) then
+      bus2_status2_data_in_next(3+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0) <= status2_chain_status;
+      bus2_status2_data_in_next(31 downto 8) <= (others => '0');
+      bus2_status2_dataready_in_next <= '1';
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_UPDATING) then
+      bus2_status2_data_in_next(0) <= not status2_copy_finished;
+      bus2_status2_data_in_next(31 downto 1) <= (others => '0');
+      bus2_status2_dataready_in_next <= '1';
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_RAM3B_BASEADDR) then
+      bus2_status2_data_in_next(RAM_ERROR_COUNTS_DEPTH-4 -1 downto 0) <= ram3b_a2_base_addr;
+      bus2_status2_data_in_next(31 downto RAM_ERROR_COUNTS_DEPTH-4 ) <= (others => '0');
+      bus2_status2_dataready_in_next <= '1';
+    elsif(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_STARTED) then
+      bus2_status2_data_in_next(0) <= jtag_refresh_active;
+      bus2_status2_data_in_next(31 downto 1) <=  (others => '0');
+      bus2_status2_dataready_in_next <= '1';    
+    else
+      bus2_status2_unknown_addr_in_next <= '1';
+    end if;
+  end if;
+  if(bus2_status2_write_enable_out='1') then
+    if(bus2_status2_addr_out(4 downto 0) = ADDR_STATUS2_RAM3B_BASEADDR) then
+      ram3b_a2_base_addr_next <= bus2_status2_data_out(RAM_ERROR_COUNTS_DEPTH-4 -1 downto 0);
+      bus2_status2_write_ack_in_next <= '1';
+    else
+      bus2_status2_unknown_addr_in_next <= '1';
+    end if;
+  end if;
+end process;
+
+--trigger_process : process (trigger_counter)
+--begin
+  --trigger_counter_next <=  trigger_counter + 1;
+  --jtag_refresh_start_next <= '0';
+  --if(trigger_counter = "00000000000") then
+  --  jtag_refresh_start_next <= '1';
+  --end if;
+--end process;
+
+-- reactivate_sensor_wait : process (reactivate_sensor, reactivate_sensor_strobe,  removed_chips)
+-- begin
+--   reactivate_sensor_next <= reactivate_sensor;
+--   for i in 0 to MAX_NUMCHIPS-1 loop
+--     if(reactivate_sensor_strobe(i) = '1') then
+--       reactivate_sensor_next(i) <= '1';
+--     elsif(removed_chips(i) = '0') then
+--       reactivate_sensor_next(i) <= '0';
+--     end if;
+--   end loop;
+-- end process;
+-- deactivate_sensor_wait : process (deactivate_sensor, deactivate_sensor_strobe,  removed_chips)
+-- begin
+--   deactivate_sensor_next <= deactivate_sensor;
+--   for i in 0 to MAX_NUMCHIPS-1 loop
+--     if(deactivate_sensor_strobe(i) = '1') then
+--       deactivate_sensor_next(i) <= '1';
+--     elsif(removed_chips(i) = '1') then
+--       deactivate_sensor_next(i) <= '0';
+--     end if;
+--   end loop;
+-- end process;
+-- 
+-- one_remove_wait : process (debug_one_remove_strobe, removed_strobe)
+-- begin
+--   debug_one_remove_next <= debug_one_remove;
+--   if(removed_strobe = '1') then
+--     debug_one_remove_next <= '0';
+--   elsif(debug_one_remove_strobe = '1') then
+--     debug_one_remove_next <= '1';
+--   end if;
+-- end process;
+
+debug_m26cs_state_process : process  (m26cs_state)
+begin
+  case m26cs_state is
+    when M26CSS_WAIT_FOR_TRIGGER =>
+      debug_m26cs_state_next <= x"00";
+    when M26CSS_CHECK_CRC_RAM1A_BEGIN =>
+      debug_m26cs_state_next <= x"20";
+    when M26CSS_CHECK_CRC_RAM1A_WAIT =>
+      debug_m26cs_state_next <= x"21";
+    when M26CSS_INIT_RAM1B_BEGIN =>
+      debug_m26cs_state_next <= x"22";
+    when M26CSS_INIT_RAM1B_WAIT =>
+      debug_m26cs_state_next <= x"23";
+    when M26CSS_DATA_CHANGED_BEGIN =>
+      debug_m26cs_state_next <= x"01";
+    when M26CSS_DATA_CHANGED_WAIT =>
+      debug_m26cs_state_next <= x"02";
+    when M26CSS_BLANK_RAM3A_WAIT =>
+      debug_m26cs_state_next <= x"24";
+    when M26CSS_JUEC_DATA_CHANGED_BEGIN =>
+      debug_m26cs_state_next <= x"03";
+    when M26CSS_JUEC_DATA_CHANGED_WAIT =>
+      debug_m26cs_state_next <= x"04";
+    when M26CSS_COUNT_CHIPS_BEGIN =>
+      debug_m26cs_state_next <= x"05";
+    when M26CSS_COUNT_CHIPS_WAIT =>
+      debug_m26cs_state_next <= x"06";
+    when M26CSS_BYPASSREG_BEGIN =>
+      debug_m26cs_state_next <= x"07";
+    when M26CSS_BYPASSREG_WAIT =>
+      debug_m26cs_state_next <= x"08";
+    when M26CSS_READ1_BEGIN =>
+      debug_m26cs_state_next <= x"09";
+    when M26CSS_READ1_WAIT =>
+      debug_m26cs_state_next <= x"0a";
+    when M26CSS_JUEC_READ_BEGIN =>
+      debug_m26cs_state_next <= x"0b";
+    when M26CSS_JUEC_READ_WAIT =>
+      debug_m26cs_state_next <= x"0c";
+    when M26CSS_WRITE1_BEGIN =>
+      debug_m26cs_state_next <= x"0d";
+    when M26CSS_WRITE1_WAIT =>
+      debug_m26cs_state_next <= x"0e";
+    when M26CSS_WRITE2_BEGIN =>
+      debug_m26cs_state_next <= x"0f";
+    when M26CSS_WRITE2_WAIT =>
+      debug_m26cs_state_next <= x"10";
+    when M26CSS_JUEC_WRITE_BEGIN =>
+      debug_m26cs_state_next <= x"11";
+    when M26CSS_JUEC_WRITE_WAIT =>
+      debug_m26cs_state_next <= x"12";
+    when M26CSS_CHECK1_WAIT_FOR_HAVE_TIME =>
+      debug_m26cs_state_next <= x"13";
+    when M26CSS_STOPPED =>
+      debug_m26cs_state_next <= x"14";
+    when M26CSS_JUEC_RUN_COUNTER_BEGIN =>
+      debug_m26cs_state_next <= x"15";
+    when M26CSS_JUEC_RUN_COUNTER_WAIT =>
+      debug_m26cs_state_next <= x"16";
+    when M26CSS_REQUEST_RESET_BEGIN =>
+      debug_m26cs_state_next <= x"17";
+    when M26CSS_REQUEST_RESET_WAIT =>
+      debug_m26cs_state_next <= x"18";
+    when M26CSS_REQUESTED_RESET_WAIT =>
+      debug_m26cs_state_next <= x"19";
+    when M26CSS_WRITEONCE_CHECK_CRC_RAM1A_BEGIN =>
+      debug_m26cs_state_next <= x"1a";
+        when M26CSS_WRITEONCE_CHECK_CRC_RAM1A_WAIT =>
+      debug_m26cs_state_next <= x"1b";
+        when M26CSS_WRITEONCE_INIT_RAM1B_BEGIN =>
+      debug_m26cs_state_next <= x"1c";
+        when M26CSS_WRITEONCE_INIT_RAM1B_WAIT =>
+      debug_m26cs_state_next <= x"1d";
+        when M26CSS_WRITEONCE_COUNT_CHIPS_BEGIN =>
+      debug_m26cs_state_next <= x"1e";
+        when M26CSS_WRITEONCE_COUNT_CHIPS_WAIT =>
+      debug_m26cs_state_next <= x"1f";
+        when M26CSS_WRITEONCE_WRITE1_BEGIN =>
+      debug_m26cs_state_next <= x"25";
+        when M26CSS_WRITEONCE_WRITE1_WAIT =>   
+      debug_m26cs_state_next <= x"26";
+
+  end case;
+end process;
+      
+
+IDLE_OUT <= idle_out_signal;
+--write_idle_last_next <= write_idle;
+--read_idle_last_next <= read_idle;
+--SEQ_have_time_COUNTER : process(CLK_IN)
+--begin
+--  if(rising_edge(CLK_IN)) then
+--    if(RESET_IN ='1') then
+--      htcounter <= (others => '0');
+--      have_time_for_write <= '0';
+--      debug_trigger_counter <= (others => '0');
+--    else
+--      htcounter <= htcounter_next;
+--      have_time_for_write <= have_time_for_write_next;
+--      debug_trigger_counter <= debug_trigger_counter_next;
+--    end if;
+--  end if;
+--end process;
+
+---- process for counter and to decide when it's still ok to start a jtag write
+--COMB_have_time_COUNTER : process(htcounter, OFF_SPILL_IN, debug_trigger_counter)
+--begin
+--  htcounter_next <= htcounter + 1;
+--  debug_trigger_counter_next <= debug_trigger_counter;
+--  if(OFF_SPILL_IN = '1') then
+--    htcounter_next <= (others => '0');
+--    debug_trigger_counter_next <= debug_trigger_counter + 1;
+--  end if;
+--  if(to_integer(unsigned(htcounter)) >= 8388608) then -- (about 8/100 seconds = 80ms)
+--    have_time_for_write_next <= '0';
+--  else 
+--    have_time_for_write_next <= '1';
+--  end if;
+--end process;
+
+ALL_debugtdo : process( CLK_IN) 
+begin
+  if(rising_edge(CLK_IN)) then
+    debugtdo_timeout <= debugtdo_timeout_next;
+    -- COUNTER
+    debugtdo_counter <= std_logic_vector(unsigned(debugtdo_counter) + 1);
+    -- reset counter in idle/stopped states => counter times the elapsed time since start of m26cs state machine
+    -- also clear debugtdo_active
+    if(m26cs_state = M26CSS_WAIT_FOR_TRIGGER or m26cs_state = M26CSS_STOPPED) then
+      debugtdo_counter <=  (others => '0');
+      if(debugtdo_ran = '1') then
+        debugtdo_active <= '0';
+      end if;
+      debugtdo_ran <= '0';
+    else
+      debugtdo_ran <= '1';
+    end if;
+    if(debugtdo_activate_strobe = '1') then
+      debugtdo_active <= '1';
+    end if;
+
+    -- RESET
+    if(RESET_IN= '1') then
+      debugtdo_counter <= (others => '0');
+      debugtdo_active <= '0';
+      debugtdo_ran <= '0';
+    end if;
+  end if;
+end process;
+end architecture;
diff --git a/vhdl/code/jtag_constants.vhd b/vhdl/code/jtag_constants.vhd
new file mode 100644 (file)
index 0000000..6dff623
--- /dev/null
@@ -0,0 +1,138 @@
+library ieee;
+USE IEEE.std_logic_1164.ALL;
+use ieee.numeric_std.all;
+
+package jtag_constants is
+
+constant CMD_NONE : std_logic_vector (3 downto 0) := x"0";
+constant CMD_SELECT_DR : std_logic_vector (3 downto 0) := x"1";
+constant CMD_SELECT_IR : std_logic_vector (3 downto 0) := x"2";
+constant CMD_SHIFT_DR : std_logic_vector (3 downto 0) := x"3";
+constant CMD_SHIFT_IR : std_logic_vector (3 downto 0) := x"4";
+constant CMD_UPDATE_IR : std_logic_vector (3 downto 0) := x"5";
+constant CMD_UPDATE_DR : std_logic_vector (3 downto 0) := x"6";
+constant CMD_RESET_JTAG : std_logic_vector (3 downto 0) := x"7";
+constant CMD_READ_TDO   : std_logic_vector (3 downto 0) := x"8";
+constant M26C_CMD_NONE                  : std_logic_vector (7 downto 0) := x"00";
+constant M26C_CMD_START                 : std_logic_vector (7 downto 0) := x"09";
+constant M26C_CMD_STOP                  : std_logic_vector (7 downto 0) := x"0A";
+constant M26C_CMD_REMOVE_SENSOR         : std_logic_vector (7 downto 0) := x"10";
+constant M26C_CMD_INSERT_SENSOR         : std_logic_vector (7 downto 0) := x"11";
+--constant M26C_CMD_REACTIVATE_SENSOR     : std_logic_vector (7 downto 0) := x"10";
+--constant M26C_CMD_DEACTIVATE_SENSOR     : std_logic_vector (7 downto 0) := x"11";
+constant M26C_CMD_GET_NUMCHIPS_CONFIGURED:std_logic_vector (7 downto 0) := x"12";
+constant M26C_CMD_GET_NUMCHIPS_ACTIVE   : std_logic_vector (7 downto 0) := x"13";
+constant M26C_CMD_GET_TRIGGER_COUNT     : std_logic_vector (7 downto 0) := x"14";
+--constant M26C_CMD_GET_DISABLE_WRITE         : std_logic_vector (7 downto 0) := x"15";
+--constant M26C_CMD_SET_DISABLE_WRITE         : std_logic_vector (7 downto 0) := x"16";
+--constant M26C_CMD_GET_DISABLE_WRITEERROR_FOR_REMOVE : std_logic_vector (7 downto 0) := x"17";
+--constant M26C_CMD_SET_DISABLE_WRITEERROR_FOR_REMOVE : std_logic_vector (7 downto 0) := x"18";
+--constant M26C_CMD_GET_DISABLE_REMOVE : std_logic_vector (7 downto 0) := x"19";
+--constant M26C_CMD_SET_DISABLE_REMOVE : std_logic_vector (7 downto 0) := x"1a";
+--constant M26C_CMD_DEBUG_ONE_REMOVE : std_logic_vector (7 downto 0) := x"1b";
+-- constant M26C_CMD_GET_LAST_NOT_REMOVED : std_logic_vector (7 downto 0) := x"1c";
+--constant M26C_CMD_GET_REACTIVATE_SENSOR32     : std_logic_vector (7 downto 0) := x"1d";
+--constant M26C_CMD_GET_DEACTIVATE_SENSOR32      : std_logic_vector (7 downto 0) := x"1e";
+constant M26C_CMD_GET_REMOVED     : std_logic_vector (7 downto 0) := x"1d";
+constant M26C_CMD_GET_REMOVED32     : std_logic_vector (7 downto 0) := x"1e";
+constant M26C_CMD_GET_WRITE_ERROR_COUNTER :std_logic_vector (7 downto 0) := x"20";
+constant M26C_CMD_GET_WRITE_ERROR_OVER_THRESHOLD_COUNTER :std_logic_vector (7 downto 0) := x"21";
+constant M26C_CMD_GET_WRITE_DATA_CHANGED_COUNTER :std_logic_vector (7 downto 0) := x"22";
+constant M26C_CMD_GET_READ_ERROR_COUNTER :std_logic_vector (7 downto 0) := x"23";
+constant M26C_CMD_GET_READ_ERROR_OVER_THRESHOLD_COUNTER :std_logic_vector (7 downto 0) := x"24";
+constant M26C_CMD_GET_JTAG_M26_DEV_ID :std_logic_vector (7 downto 0) := x"30";
+--constant M26C_CMD_GET_NUMCHIPS : std_logic_vector (7 downto 0) := x"32";
+constant M26C_CMD_SET_NUMCHIPS_CONFIGURED : std_logic_vector (7 downto 0) := x"33";
+constant M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH             : std_logic_vector (7 downto 0) := x"40";
+constant M26C_CMD_GET_JTAG_CLOCK_CYCLE_LENGTH             : std_logic_vector (7 downto 0) := x"41";
+constant M26C_CMD_SET_JTAG_CLOCK_TIME1             : std_logic_vector (7 downto 0) := x"42";
+constant M26C_CMD_GET_JTAG_CLOCK_TIME1             : std_logic_vector (7 downto 0) := x"43";
+constant M26C_CMD_SET_JTAG_CLOCK_TIME2             : std_logic_vector (7 downto 0) := x"44";
+constant M26C_CMD_GET_JTAG_CLOCK_TIME2             : std_logic_vector (7 downto 0) := x"45";
+constant M26C_CMD_SET_JTAG_SAMPLE_TIME1             : std_logic_vector (7 downto 0) := x"46";
+constant M26C_CMD_GET_JTAG_SAMPLE_TIME1             : std_logic_vector (7 downto 0) := x"47";
+constant M26C_CMD_SET_JTAG_SAMPLE_TIME2             : std_logic_vector (7 downto 0) := x"48";
+constant M26C_CMD_GET_JTAG_SAMPLE_TIME2             : std_logic_vector (7 downto 0) := x"49";
+constant M26C_CMD_SET_JTAG_SAMPLE_TIME3             : std_logic_vector (7 downto 0) := x"4a";
+constant M26C_CMD_GET_JTAG_SAMPLE_TIME3             : std_logic_vector (7 downto 0) := x"4b";
+constant M26C_CMD_SET_JTAG_SET_DATA_TIME             : std_logic_vector (7 downto 0) := x"4c";
+constant M26C_CMD_GET_JTAG_SET_DATA_TIME             : std_logic_vector (7 downto 0) := x"4d";
+constant M26C_CMD_GET_RUN_COUNT : std_logic_vector(7 downto 0) := x"50";
+constant M26C_CMD_GET_BREAKPOINTS : std_logic_vector(7 downto 0) := x"52";
+constant M26C_CMD_SET_BREAKPOINTS : std_logic_vector(7 downto 0) := x"53";
+constant M26C_CMD_START_CHECK1                 : std_logic_vector (7 downto 0) := x"60";
+constant M26C_CMD_COPY_TO_STATUS2       : std_logic_vector (7 downto 0) := x"63";
+constant M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER : std_logic_vector (7 downto 0) := x"64"; -- trigger on: bit 0 => read error, 1 => write error, 2 => data changed
+constant M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_READ_ERROR : std_logic_vector (7 downto 0) := x"6a"; -- 
+constant M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_WRITE_ERROR : std_logic_vector (7 downto 0) := x"6b"; -- 
+constant M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_DATA_CHANGED : std_logic_vector (7 downto 0) := x"6c"; -- 
+constant M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER_NOW : std_logic_vector (7 downto 0) := x"6d"; -- 
+constant M26C_CMD_SET_CSOPTIONS : std_logic_vector (7 downto 0) := x"65"; -- bit 0 => skip BYPASS CHAINTEST
+constant M26C_CMD_GET_CSOPTIONS : std_logic_vector (7 downto 0) := x"66"; -- bit 0 => skip BYPASS CHAINTEST
+constant M26C_CMD_SET_DELAY_EXPECTED_VALUES : std_logic_vector (7 downto 0) := x"67"; -- bits 1 downto 0 as unsigned number of TCK clocks expected values are delayed
+constant M26C_CMD_GET_DELAY_EXPECTED_VALUES : std_logic_vector (7 downto 0) := x"68"; 
+constant M26C_CMD_GET_ACTIVITY : std_logic_vector (7 downto 0) := x"69"; -- bit 0 => jtag_refresh_active, bit 1 => jtag_check1_active.
+--constant M26C_CMD_REG_GET_STATUS        : std_logic_vector (3 downto 0) := x"B";
+--constant M26C_CMD_CRC_GET_STATUS        : std_logic_vector (3 downto 0) := x"C";
+--constant M26C_CMD_SET_RAM_BASE_ADDR     : std_logic_vector (3 downto 0) := x"D";
+
+-- 0xb100 - 0xb2ff
+-- RAM:               0xb000 - 0xb0ff
+-- Status registers:  0xb100 - 0xb11f
+-- Control registers: 0xb120 - 0xb13f
+-- Debug   registers: 0xb140 - 0xb15f
+constant ADDR_RAM       : std_logic_vector (15 downto 0) := x"b000";
+constant ADDR_STATUS       : std_logic_vector (15 downto 0) := x"b100";
+constant ADDR_CONTROL      : std_logic_vector (15 downto 0) := x"b120";
+constant ADDR_DEBUG        : std_logic_vector (15 downto 0) := x"b140";
+constant ADDR_STATUS2       : std_logic_vector (15 downto 0) := x"b160";
+
+constant ADDR_CONTROL_CMD  : std_logic_vector (4 downto 0) := "00000";
+constant ADDR_CONTROL_RAM_BASEADDR  : std_logic_vector (4 downto 0) := "00001";
+constant ADDR_CONTROL_DATA_REGISTER : std_logic_vector (4 downto 0) := "00010";
+
+constant ADDR_DEBUG_TEST   : std_logic_vector(4 downto 0) := "00000";
+constant ADDR_DEBUG_M26CS_STATE   : std_logic_vector(4 downto 0) := "00001";
+constant ADDR_DEBUG_M26C_READ_STATE   : std_logic_vector(4 downto 0) := "00010";
+constant ADDR_DEBUG_M26C_WRITE_STATE   : std_logic_vector(4 downto 0) := "00011";
+constant ADDR_DEBUG_JTAG_DRIVER_STATE   : std_logic_vector(4 downto 0) := "00100";
+constant ADDR_DEBUG_TRIGGER_COUNT   : std_logic_vector(4 downto 0) := "00101";
+constant ADDR_DEBUG_VERSION   : std_logic_vector(4 downto 0) := "00110";
+constant ADDR_DEBUG_RAM1BADDR : std_logic_vector(4 downto 0) := "00111";
+constant ADDR_DEBUG_RAM1B_DATA : std_logic_vector(4 downto 0) := "01000";
+constant ADDR_DEBUG_RAM1CADDR : std_logic_vector(4 downto 0) := "01001";
+constant ADDR_DEBUG_RAM1C_DATA : std_logic_vector(4 downto 0) := "01010";
+constant ADDR_DEBUG_RAM1C_RUN_COUNTER : std_logic_vector(4 downto 0) := "01011";
+constant ADDR_DEBUG_RAM1C_CHAIN_STATUS : std_logic_vector(4 downto 0) := "01100";
+constant ADDR_DEBUG_DEBUGTDO_SAMPLES : std_logic_vector(4 downto 0) := "01101";
+constant ADDR_DEBUG_DEBUGTDO_GETFIFOSTATUS : std_logic_vector(4 downto 0) := "01110";
+constant ADDR_DEBUG_DEBUGTDO_TIMEOUT : std_logic_vector(4 downto 0) := "01111";
+constant ADDR_DEBUG_DEBUGTDO_ACTIVATE : std_logic_vector(4 downto 0) := "10000";
+constant ADDR_DEBUG_DEBUGTDO_CONTROLFIFO : std_logic_vector(4 downto 0) := "10001";
+constant ADDR_DEBUG_WRONCE_COUNT : std_logic_vector(4 downto 0) := "10010";
+
+
+constant ADDR_STATUS_VERSION   : std_logic_vector(4 downto 0) := "00110";
+
+constant ADDR_STATUS2_TRIGGERCOUNTER_COPY   : std_logic_vector(4 downto 0) := "00000";
+constant ADDR_STATUS2_CHAIN_STATUS_COPY   : std_logic_vector(4 downto 0) := "00001";
+constant ADDR_STATUS2_UPDATING   : std_logic_vector(4 downto 0) := "00010";
+constant ADDR_STATUS2_RAM3B_BASEADDR   : std_logic_vector(4 downto 0) := "00011";
+constant ADDR_STATUS2_STARTED   : std_logic_vector(4 downto 0) := "00100";
+constant ADDR_STATUS2_RAM3B_BEGIN   : std_logic_vector(4 downto 0) := "10000"; -- lower 4 bits used as address into ram3b from baseaddr
+
+
+
+--constant ADDR_DATA      : std_logic_vector (8 downto 0) := "000000001";
+--constant ADDR_LENGTH    : std_logic_vector (8 downto 0) := "000000010";
+
+
+constant STATUS_OK      : std_logic_vector (15 downto 0) := x"0000";
+constant STATUS_INVALID_COMMAND      : std_logic_vector (15 downto 0) := x"FFFF";
+
+-- constraint: MAX_NUMCHIPS can be at most 2**MAX_NUMCHIPS_LD
+--             if MAX_NUMCHIPS is 2^n-1 then the number of chips can be stored in n bits, thats the reason to choose this odd max. number
+
+constant COUNTER_WIDTHS : integer := 16; -- width of counters for jtag_cmd_m26c entity port, must be static.
+
+end package jtag_constants;
diff --git a/vhdl/code/jtag_delay_expected_values.vhd b/vhdl/code/jtag_delay_expected_values.vhd
new file mode 100755 (executable)
index 0000000..b818647
--- /dev/null
@@ -0,0 +1,121 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+use work.jtag_constants.all;\r
+\r
+entity jtag_delay_expected_values is\r
+   generic (\r
+--     delay : integer := 0 -- number of whole jtag clock cycles to delay the expected values\r
+--                           --   because of total distance of the tck-line to the last chip and\r
+--                           --   the length of tdo of this chip back to the fpga\r
+      ld_maxdelay : integer := 2;  -- floor of ld maxdelay\r
+      MAX_NUMCHIPS_LD : integer;\r
+      MAX_REGISTERS_PLUS_ONE_LD : integer\r
+   );\r
+  port (\r
+    CLK_IN : in std_logic;\r
+    RESET_IN : in std_logic;\r
+    SAMPLE_PULSE1_IN : in std_logic;\r
+    \r
+      -- chipcount as unsigned\r
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);\r
+      -- active register as unsigned, =register 1,2,... of jtag_write_m10 or 0 for jtag_read_m10\r
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);\r
+    \r
+    IS_DR_BIT_IN : in std_logic;\r
+      -- firstbit signal: reset counters before sampling this bit\r
+    IS_FIRSTBIT_IN  : in std_logic;\r
+      -- finish signal:  dataout => RAM1b, compareout => RAM2\r
+    IS_LASTBIT_IN   : in std_logic;\r
+    \r
+    TDO_EXPECTED_IN : in std_logic;\r
+    \r
+    \r
+      -- chipcount as unsigned\r
+    OUT_CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);\r
+      -- active register as unsigned, =register 1,2,... of jtag_write_m10 or 0 for jtag_read_m10\r
+    OUT_REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);\r
+    \r
+    OUT_IS_DR_BIT_OUT : out std_logic;\r
+      -- firstbit signal: reset counters before sampling this bit\r
+    OUT_IS_FIRSTBIT_OUT  : out std_logic;\r
+      -- finish signal:  dataout => RAM1b, compareout => RAM2\r
+    OUT_IS_LASTBIT_OUT   : out std_logic;\r
+    \r
+    OUT_TDO_EXPECTED_OUT : out std_logic;\r
+\r
+    DELAY_IN : in std_logic_vector(ld_maxdelay-1 downto 0)\r
+\r
+\r
+    \r
+  );\r
+end entity;\r
+architecture jtag_delay_expected_values_arch of jtag_delay_expected_values is\r
+type REGNUM_BUF_TYPE is array (2**ld_maxdelay-1 downto 0) of std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);\r
+  signal regnum_buf, regnum_buf_next : REGNUM_BUF_TYPE;\r
+type CHIPNUM_BUF_TYPE is array (2**ld_maxdelay-1 downto 0) of std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);\r
+  signal chipnum_buf, chipnum_buf_next : CHIPNUM_BUF_TYPE;\r
+type STD_LOGIC_BUF_TYPE is array (2**ld_maxdelay-1 downto 0) of std_logic;\r
+  signal is_dr_bit_buf, is_dr_bit_buf_next : STD_LOGIC_BUF_TYPE;\r
+  signal is_firstbit_buf, is_firstbit_buf_next : STD_LOGIC_BUF_TYPE;\r
+  signal is_lastbit_buf, is_lastbit_buf_next : STD_LOGIC_BUF_TYPE;\r
+  signal tdo_expected_buf, tdo_expected_buf_next : STD_LOGIC_BUF_TYPE;\r
+begin\r
+OUT_CHIPNUM_OUT <= chipnum_buf(to_integer(unsigned(DELAY_IN)));\r
+OUT_REGNUM_OUT <= regnum_buf(to_integer(unsigned(DELAY_IN)));\r
+OUT_IS_DR_BIT_OUT <= is_dr_bit_buf(to_integer(unsigned(DELAY_IN)));\r
+OUT_IS_FIRSTBIT_OUT <= is_firstbit_buf(to_integer(unsigned(DELAY_IN)));\r
+OUT_IS_LASTBIT_OUT <= is_lastbit_buf(to_integer(unsigned(DELAY_IN)));\r
+OUT_TDO_EXPECTED_OUT <= tdo_expected_buf(to_integer(unsigned(DELAY_IN)));\r
+\r
+SYNCHRONOUS_MAIN : process (CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      is_dr_bit_buf      <= (others => '0');\r
+      is_firstbit_buf    <= (others => '0');\r
+      is_lastbit_buf <= (others => '0');\r
+      tdo_expected_buf <= (others => '0'); \r
+      regnum_buf       <= (others => (others => '0'));\r
+      chipnum_buf      <= (others => (others => '0')); \r
+    else\r
+      is_dr_bit_buf      <= is_dr_bit_buf_next;\r
+      is_firstbit_buf    <= is_firstbit_buf_next;\r
+      is_lastbit_buf <= is_lastbit_buf_next;\r
+      tdo_expected_buf <= tdo_expected_buf_next; \r
+      regnum_buf       <= regnum_buf_next;\r
+      chipnum_buf      <= chipnum_buf_next;\r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB_MAIN: process(SAMPLE_PULSE1_IN, IS_LASTBIT_IN, IS_DR_BIT_IN, IS_FIRSTBIT_IN, TDO_EXPECTED_IN, REGNUM_IN, CHIPNUM_IN, is_lastbit_buf, is_dr_bit_buf, is_firstbit_buf, tdo_expected_buf, regnum_buf, chipnum_buf)\r
+begin\r
+  is_lastbit_buf_next <= is_lastbit_buf;\r
+  is_dr_bit_buf_next <= is_dr_bit_buf;\r
+  is_firstbit_buf_next    <= is_firstbit_buf;\r
+  tdo_expected_buf_next <= tdo_expected_buf;\r
+  regnum_buf_next <= regnum_buf;\r
+  chipnum_buf_next <= chipnum_buf;\r
+  -- shift registers\r
+  if(SAMPLE_PULSE1_IN = '1') then\r
+    if(2**ld_maxdelay-1 >= 1) then\r
+      is_lastbit_buf_next(2**ld_maxdelay-1 downto 1) <= is_lastbit_buf(2**ld_maxdelay-1 -1 downto 0);\r
+      is_dr_bit_buf_next(2**ld_maxdelay-1  downto 1) <= is_dr_bit_buf(2**ld_maxdelay-1 -1 downto 0);\r
+      is_firstbit_buf_next(2**ld_maxdelay-1  downto 1) <= is_firstbit_buf(2**ld_maxdelay-1 -1 downto 0);\r
+      tdo_expected_buf_next(2**ld_maxdelay-1  downto 1) <= tdo_expected_buf(2**ld_maxdelay-1 -1 downto 0);\r
+      regnum_buf_next(2**ld_maxdelay-1  downto 1) <= regnum_buf(2**ld_maxdelay-1 -1 downto 0);\r
+      chipnum_buf_next(2**ld_maxdelay-1  downto 1) <= chipnum_buf(2**ld_maxdelay-1 -1 downto 0);\r
+    end if;\r
+    is_lastbit_buf_next(0) <= IS_LASTBIT_IN;\r
+    is_dr_bit_buf_next(0)  <= IS_DR_BIT_IN;\r
+    is_firstbit_buf_next(0)  <= IS_FIRSTBIT_IN;\r
+    tdo_expected_buf_next(0)  <= TDO_EXPECTED_IN;\r
+    regnum_buf_next(0)  <= REGNUM_IN;\r
+    chipnum_buf_next(0)  <= CHIPNUM_IN;\r
+  end if;\r
+end process;\r
+\r
+end architecture;\r
diff --git a/vhdl/code/jtag_init_ram1b.vhd b/vhdl/code/jtag_init_ram1b.vhd
new file mode 100755 (executable)
index 0000000..599e7e6
--- /dev/null
@@ -0,0 +1,142 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+\r
+use work.jtag_constants.all;\r
+use work.jtag_misc.all;\r
+\r
+entity jtag_init_ram1b is\r
+  generic (\r
+    RAM_JTAG_REGISTERS_DEPTH : integer;\r
+    MAX_NUMCHIPS_LD : integer;\r
+    MAX_REGISTERS_LD : integer\r
+  );\r
+  port (\r
+    CLK_IN : std_logic;\r
+    RESET_IN : std_logic;\r
+    TRIGGER_INIT_IN : std_logic;\r
+    -- RAM1a\r
+    RAM1A_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);\r
+    RAM1A_D_IN : in std_logic_vector(31 downto 0);\r
+    -- RAM1b\r
+    RAM1B_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);\r
+    RAM1B_D_IN : in std_logic_vector(31 downto 0);\r
+    RAM1B_WE_OUT : out std_logic;\r
+    RAM1B_D_OUT : out std_logic_vector(31 downto 0);\r
+    \r
+    IDLE_OUT : out std_logic\r
+  );\r
+end entity;\r
+\r
+architecture jtag_init_ram1b_arch of jtag_init_ram1b is\r
+type state_type is (idle, read_numregs0, read_numregs1, write_i, nextchip);\r
+signal state, state_next : state_type;\r
+signal wordcounter, wordcounter_next : unsigned(RAM_JTAG_REGISTERS_DEPTH-1-MAX_NUMCHIPS_LD downto 0);\r
+signal chipcounter, chipcounter_next : unsigned(MAX_NUMCHIPS_LD-1 downto 0);\r
+constant chipcounter_end : unsigned(MAX_NUMCHIPS_LD-1 downto 0) := (others => '1');\r
+signal ram1a_a, ram1a_a_next :  std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1-MAX_NUMCHIPS_LD downto 0);\r
+signal ram1b_a, ram1b_a_next :  std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1-MAX_NUMCHIPS_LD downto 0);\r
+signal ram1b_data, ram1b_data_next :  std_logic_vector(31 downto 0);\r
+signal ram1b_we, ram1b_we_next :  std_logic;\r
+signal numregs, numregs_next : unsigned(MAX_REGISTERS_LD-1 downto 0);\r
+constant wordcounter_end : unsigned(RAM_JTAG_REGISTERS_DEPTH-1 downto 0) := (others => '1'); -- this should be a constant\r
+begin\r
+--wordcounter_end <= (others => '1'); -- maximum RAM address\r
+IDLE_OUT <= '1' when state = idle else '0';\r
+RAM1A_A_OUT(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-1-MAX_NUMCHIPS_LD+1) <= std_logic_vector(chipcounter);\r
+RAM1A_A_OUT(RAM_JTAG_REGISTERS_DEPTH-1-MAX_NUMCHIPS_LD downto 0) <= ram1a_a;\r
+RAM1B_A_OUT(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-1-MAX_NUMCHIPS_LD+1) <= std_logic_vector(chipcounter);\r
+RAM1B_A_OUT(RAM_JTAG_REGISTERS_DEPTH-1-MAX_NUMCHIPS_LD downto 0) <= ram1b_a;\r
+RAM1B_WE_OUT <= ram1b_we;\r
+RAM1B_D_OUT <= ram1b_data;\r
+SYNCHRONOUS: process(CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      state <= idle;\r
+      ram1a_a <= (others => '0');\r
+      ram1b_a <= (others => '0');\r
+      ram1b_data <= (others => '0');\r
+      ram1b_we <= '0';\r
+      wordcounter <= (others => '0');\r
+      chipcounter <= (others => '0');\r
+      numregs <= (others => '0');\r
+    else\r
+      state <= state_next;\r
+      ram1a_a <= ram1a_a_next;\r
+      ram1b_a <= ram1b_a_next;\r
+      ram1b_data <= ram1b_data_next;  \r
+      ram1b_we <= ram1b_we_next;  \r
+      wordcounter <= wordcounter_next;\r
+      chipcounter <= chipcounter_next;\r
+      numregs <= numregs_next;\r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB: process (state, TRIGGER_INIT_IN, RAM1A_D_IN, numregs, ram1a_a, ram1b_a, ram1b_data, wordcounter, chipcounter )\r
+begin\r
+  ram1a_a_next <= ram1a_a;\r
+  ram1b_a_next <= ram1b_a;\r
+  ram1b_data_next <= ram1b_data;\r
+  state_next <= state;\r
+  wordcounter_next <= wordcounter;\r
+  chipcounter_next <= chipcounter;\r
+  ram1b_we_next <= '0';\r
+  numregs_next <= numregs;\r
+  \r
+  case state is\r
+    when IDLE =>\r
+      if(TRIGGER_INIT_IN = '1') then\r
+        chipcounter_next <= (others => '0');\r
+        ram1a_a_next <= (others => '0'); -- numregs\r
+        state_next <= READ_NUMREGS0;\r
+      end if;\r
+    when READ_NUMREGS0 =>\r
+      ram1a_a_next <= std_logic_vector(to_unsigned(1,RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD)); -- word 1\r
+      state_next <= READ_NUMREGS1;\r
+    when READ_NUMREGS1 =>\r
+      ram1a_a_next <= std_logic_vector(to_unsigned(2,RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD)); -- word 2\r
+      numregs_next <= unsigned(RAM1A_D_IN(MAX_REGISTERS_LD-1 downto 0));\r
+      wordcounter_next <= to_unsigned(1,RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD); -- which word to write in next step\r
+      -- write word to RAM1b\r
+      ram1b_a_next <= (others => '0'); -- numregs\r
+      ram1b_data_next <= RAM1A_D_IN;\r
+      ram1b_we_next <= '1';\r
+      state_next <= WRITE_I;\r
+    when WRITE_I =>\r
+      wordcounter_next <= wordcounter + 1;\r
+      ram1b_a_next <= std_logic_vector(wordcounter);\r
+      ram1b_we_next <= '1';\r
+      -- the following block guarantees that the DEV_ID at wordcounter=1 in ram1a is not copied to ram1b \r
+      if(wordcounter < 2*numregs+2) then      \r
+        ram1a_a_next <= std_logic_vector(to_unsigned(to_integer(wordcounter)+2,RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD)); -- might need next word\r
+        if(to_integer(wordcounter) = 1) then\r
+          -- write zeros to reserved (for DEV_ID)\r
+          ram1b_data_next <= (others => '0');\r
+        else\r
+          -- write Ptr/Length fields to RAM1b\r
+          ram1b_data_next <= RAM1A_D_IN;\r
+        end if;\r
+      else\r
+        -- blank rest of RAM\r
+        ram1b_data_next <= (others => '0'); \r
+      end if;\r
+      if(std_logic_vector_all_components_equal_scalar(std_logic_vector(wordcounter), '1') = '1') then\r
+        state_next <= NEXTCHIP;\r
+      end if;\r
+    when NEXTCHIP =>\r
+      if(chipcounter /= chipcounter_end) then\r
+        chipcounter_next <= chipcounter + 1;\r
+        ram1a_a_next <= (others => '0'); -- numregs        \r
+        state_next <= READ_NUMREGS0;\r
+      else\r
+        state_next <= IDLE;\r
+      end if;\r
+  end case;\r
+end process;\r
+\r
+\r
+end architecture;\r
diff --git a/vhdl/code/jtag_misc.vhd b/vhdl/code/jtag_misc.vhd
new file mode 100644 (file)
index 0000000..5a5daa6
--- /dev/null
@@ -0,0 +1,50 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+library work;
+
+package jtag_misc is  
+  function MYMIN(x : integer; y : integer) return integer;
+  function std_logic_vector_scalar_compare(vect: std_logic_vector; scalar : std_logic) return std_logic_vector;
+  function std_logic_vector_all_components_equal_scalar(vect: std_logic_vector; scalar : std_logic) return std_logic;
+end package jtag_misc;
+
+package body jtag_misc is
+
+function MYMIN(x : integer; y : integer)
+    return integer is
+    begin
+      if x > y then
+        return y;
+      else
+        return x;
+      end if;
+    end MYMIN;
+    
+function std_logic_vector_scalar_compare(vect: std_logic_vector; scalar : std_logic) return std_logic_vector is
+variable output : std_logic_vector(vect'range);
+variable i : integer;
+begin
+  for i in vect'range loop
+    if(vect(i) = scalar) then
+      output(i) := '1';
+    else
+      output(i) := '0';
+    end if;
+  end loop;
+  return output;
+end std_logic_vector_scalar_compare;    
+
+function std_logic_vector_all_components_equal_scalar(vect: std_logic_vector; scalar : std_logic) return std_logic is
+variable output : std_logic;
+variable i : integer;
+begin
+  output := '1';
+  for i in vect'range loop
+    if(vect(i) /= scalar) then
+      output := '0';
+    end if;
+  end loop;
+  return output;
+end std_logic_vector_all_components_equal_scalar;   
+end package body jtag_misc;
diff --git a/vhdl/code/jtag_mux_buffer_tms_tdi_out_and_metainfo.vhd b/vhdl/code/jtag_mux_buffer_tms_tdi_out_and_metainfo.vhd
new file mode 100755 (executable)
index 0000000..cc12b49
--- /dev/null
@@ -0,0 +1,188 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+--USE IEEE.std_logic_ARITH.ALL;
+--USE IEEE.std_logic_UNSIGNED.ALL;
+USE IEEE.numeric_std.ALL;
+
+library work;
+--use work.trb_net_std.all;
+--use work.trb_net_components.all;
+-- use work.trb_net16_hub_func.all;
+--use work.version.all;
+use work.jtag_constants.all;
+-- this entity is a multiplexer, based on which *_ENABLE_JTAG_CLOCK_IN signal is '1' on a pulse on JTAG_SET_DATA_IN, it loads the corresponding input values for TMS, TDI, IS_DR_BIT, ... into the buffers
+entity jtag_mux_buffer_tms_tdi_out_and_metainfo is
+  generic (
+    MAX_NUMCHIPS_LD : integer;
+    MAX_REGISTERS_LD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+       
+    -- pulse when READ/WRITE/... entity's data should be taken and update 
+    -- the output values for TMS,TDI
+    JTAG_SET_DATA_IN : in std_logic;    
+    
+    -- read DEV_ID inputs
+    RD_TMS_IN : in std_logic;
+    RD_TDI_IN : in std_logic;
+    RD_IS_DR_BIT_IN: in std_logic;
+    RD_IS_FIRSTBIT_IN : in std_logic;
+    RD_IS_LASTBIT_IN : in std_logic;
+    RD_CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    RD_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    RD_LAST_TCK_CYCLE_IN : in std_logic;
+    RD_EXPECTED_TDO_OUT : in std_logic;    
+
+    -- write registers inputs
+    WR_TMS_IN : in std_logic;
+    WR_TDI_IN : in std_logic;
+    WR_IS_DR_BIT_IN: in std_logic;
+    WR_IS_FIRSTBIT_IN : in std_logic;
+    WR_IS_LASTBIT_IN : in std_logic;
+    WR_CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    WR_REGNUM_IN : in std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    WR_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    WR_LAST_TCK_CYCLE_IN : in std_logic;
+    WR_EXPECTED_TDO_OUT : in std_logic;    
+
+    -- test chain inputs
+    TC_TMS_IN : in std_logic;
+    TC_TDI_IN : in std_logic;
+    TC_ENABLE_JTAG_CLOCK_IN : in std_logic;
+    TC_LAST_TCK_CYCLE_IN : in std_logic;
+    
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    IS_DR_BIT_OUT: out std_logic;
+    IS_FIRSTBIT_OUT : out std_logic;
+    IS_LASTBIT_OUT : out std_logic;
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    EXPECTED_TDO_OUT : out std_logic   
+  );
+end entity;
+
+architecture jtag_mux_buffer_tms_tdi_out_and_metainfo_arch of jtag_mux_buffer_tms_tdi_out_and_metainfo is
+-- buffers
+signal tms, tms_next : std_logic;
+signal tdi, tdi_next : std_logic;
+signal is_dr_bit, is_dr_bit_next : std_logic;
+signal is_firstbit, is_firstbit_next : std_logic;
+signal is_lastbit, is_lastbit_next : std_logic;
+signal chipnum, chipnum_next : unsigned (MAX_NUMCHIPS_LD-1 downto 0);
+signal regnum, regnum_next : unsigned (MAX_REGISTERS_LD-1 downto 0); 
+
+signal enable_jtag_clock, enable_jtag_clock_next : std_logic;
+signal last_tck_cycle, last_tck_cycle_next : std_logic;
+signal expected_tdo, expected_tdo_next : std_logic; 
+-- INSERTLABEL:  signals
+begin
+TMS_OUT <= tms;
+TDI_OUT <= tdi;
+IS_DR_BIT_OUT <= is_dr_bit;
+IS_FIRSTBIT_OUT <= is_firstbit;
+IS_LASTBIT_OUT <= is_lastbit;
+CHIPNUM_OUT <= std_logic_vector(chipnum);
+REGNUM_OUT <= std_logic_vector(regnum);
+ENABLE_JTAG_CLOCK_OUT <= enable_jtag_clock;
+LAST_TCK_CYCLE_OUT <= last_tck_cycle;
+EXPECTED_TDO_OUT <= expected_tdo;
+SYNCHRONOUS_MAIN: process(CLK_IN)
+begin
+  if(rising_edge(CLK_IN)) then
+    if(RESET_IN='1') then
+      tms <= '1';
+      tdi <= '0';
+      is_dr_bit <= '0';
+      is_firstbit <= '0';
+      is_lastbit <= '0';
+      chipnum <= (others => '0');
+      regnum <= (others => '0');
+      enable_jtag_clock <= '0';
+      last_tck_cycle <= '0';
+      expected_tdo <= '0';
+      -- INSERTLABEL: SYNCHRONOUS reset      
+    else
+      tms <= tms_next;
+      tdi <= tdi_next;
+      is_dr_bit <= is_dr_bit_next;
+      is_firstbit <= is_firstbit_next;
+      is_lastbit <= is_lastbit_next;
+      chipnum <= chipnum_next;
+      regnum <= regnum_next;
+      enable_jtag_clock <= enable_jtag_clock_next;
+      last_tck_cycle <= last_tck_cycle_next;
+      expected_tdo <= expected_tdo_next;
+      -- INSERTLABEL:  SYNCHRONOUS update      
+    end if;
+  end if;
+end process;
+
+COMB_MAIN: process(JTAG_SET_DATA_IN, RD_ENABLE_JTAG_CLOCK_IN, WR_ENABLE_JTAG_CLOCK_IN, TC_ENABLE_JTAG_CLOCK_IN, RD_TMS_IN, RD_TDI_IN, RD_IS_DR_BIT_IN, RD_IS_FIRSTBIT_IN, RD_IS_LASTBIT_IN, RD_CHIPNUM_IN, RD_LAST_TCK_CYCLE_IN, RD_EXPECTED_TDO_OUT, WR_TMS_IN, WR_TDI_IN, WR_IS_DR_BIT_IN, WR_IS_FIRSTBIT_IN, WR_IS_LASTBIT_IN, WR_CHIPNUM_IN, WR_REGNUM_IN, WR_LAST_TCK_CYCLE_IN, WR_EXPECTED_TDO_OUT, TC_TMS_IN, TC_TDI_IN, TC_LAST_TCK_CYCLE_IN, tdi, tms,is_dr_bit,is_firstbit,is_lastbit,chipnum,regnum,enable_jtag_clock,last_tck_cycle,expected_tdo) -- INSERTLABEL:  sensitivity list 
+begin
+  tms_next <= tms;
+  tdi_next <= tdi;
+  is_dr_bit_next <= is_dr_bit;
+  is_firstbit_next <= is_firstbit;
+  is_lastbit_next <= is_lastbit;
+  chipnum_next <= chipnum;
+  regnum_next <= regnum;
+  enable_jtag_clock_next <= enable_jtag_clock;
+  last_tck_cycle_next <= last_tck_cycle;
+  expected_tdo_next <= expected_tdo;
+  -- INSERTLABEL:  COMB defaults 
+  if(JTAG_SET_DATA_IN = '1') then
+    if(RD_ENABLE_JTAG_CLOCK_IN = '1') then
+      tms_next <= RD_TMS_IN;
+      tdi_next <= RD_TDI_IN;
+      is_dr_bit_next <= RD_IS_DR_BIT_IN;
+      is_firstbit_next <= RD_IS_FIRSTBIT_IN;
+      is_lastbit_next <= RD_IS_LASTBIT_IN;
+      chipnum_next <= unsigned(RD_CHIPNUM_IN);
+      -- read dev_id is treated as register 0
+      regnum_next  <= (others => '0');
+      enable_jtag_clock_next <= RD_ENABLE_JTAG_CLOCK_IN;
+      last_tck_cycle_next <= RD_LAST_TCK_CYCLE_IN;
+      expected_tdo_next <= RD_EXPECTED_TDO_OUT;      
+    elsif(WR_ENABLE_JTAG_CLOCK_IN = '1') then
+      tms_next <= WR_TMS_IN;
+      tdi_next <= WR_TDI_IN;
+      is_dr_bit_next <= WR_IS_DR_BIT_IN;
+      is_firstbit_next <= WR_IS_FIRSTBIT_IN;
+      is_lastbit_next <= WR_IS_LASTBIT_IN;
+      chipnum_next <= unsigned(WR_CHIPNUM_IN);
+      -- read dev_id is stored as register 0, the write registers are stored as WR_REGNUM+1
+      regnum_next <= unsigned(WR_REGNUM_IN) + 1;
+      enable_jtag_clock_next <= WR_ENABLE_JTAG_CLOCK_IN;
+      last_tck_cycle_next <= WR_LAST_TCK_CYCLE_IN;
+      expected_tdo_next <= WR_EXPECTED_TDO_OUT;
+    elsif(TC_ENABLE_JTAG_CLOCK_IN = '1') then
+      tms_next <= TC_TMS_IN;
+      tdi_next <= TC_TDI_IN;
+      is_dr_bit_next <= '0';
+      is_firstbit_next <= '0';
+      is_lastbit_next <= '0';
+      chipnum_next <= (others =>'0');
+      regnum_next <= (others =>'0');
+      enable_jtag_clock_next <= TC_ENABLE_JTAG_CLOCK_IN;
+      last_tck_cycle_next <= TC_LAST_TCK_CYCLE_IN;
+      expected_tdo_next <= '0';    
+    else
+      tms_next <= '1';
+      tdi_next <= '0';
+      is_dr_bit_next <= '0';
+      is_firstbit_next <= '0';
+      is_lastbit_next <= '0';
+      chipnum_next <= (others =>'0');
+      regnum_next <= (others =>'0');
+      enable_jtag_clock_next <= '0';
+      last_tck_cycle_next <= '0';
+      expected_tdo_next <= '0';    
+    end if;
+  end if;
+end process;
+end architecture;
\ No newline at end of file
diff --git a/vhdl/code/jtag_pulses.vhd b/vhdl/code/jtag_pulses.vhd
new file mode 100644 (file)
index 0000000..1f91388
--- /dev/null
@@ -0,0 +1,120 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+library work;
+
+use work.jtag_constants.all;
+use work.jtag_misc.all;
+
+entity jtag_pulses is
+  generic (
+    time_bits : integer := 10
+  );
+  port (
+    CLK_IN : std_logic;
+    RESET_IN : std_logic;
+    -- input times
+    JTAG_CLOCK_TIME1_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_CLOCK_TIME2_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME1_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME2_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SAMPLE_TIME3_IN: in std_logic_vector(time_bits -1 downto 0);
+    JTAG_SET_DATA_TIME_IN: in std_logic_vector(time_bits -1 downto 0);
+    
+    JTAG_CLOCK_CYCLE_LENGTH_IN: in std_logic_vector(time_bits -1 downto 0);
+    
+    -- output pulses
+    BEGIN_JTAGBITCALC_OUT : out std_logic;
+    JTAG_CLOCK_PULSE1_OUT : out std_logic;
+    JTAG_CLOCK_PULSE2_OUT : out std_logic;
+    JTAG_SAMPLE_PULSE1_OUT : out std_logic;    
+    JTAG_SAMPLE_PULSE2_OUT : out std_logic;    
+    JTAG_SAMPLE_PULSE3_OUT : out std_logic;    
+    JTAG_SET_DATA_PULSE_OUT : out std_logic
+    
+  );
+end entity;
+
+architecture jtag_pulses_arch of jtag_pulses is
+signal jtag_counter, jtag_counter_next : unsigned(time_bits-1 downto 0);
+signal begin_jtagbitcalc, begin_jtagbitcalc_next : std_logic;
+signal jtag_clock_pulse1, jtag_clock_pulse1_next : std_logic;
+signal jtag_clock_pulse2, jtag_clock_pulse2_next : std_logic;
+signal jtag_sample_pulse1, jtag_sample_pulse1_next : std_logic;
+signal jtag_sample_pulse2, jtag_sample_pulse2_next : std_logic;
+signal jtag_sample_pulse3, jtag_sample_pulse3_next : std_logic;
+signal jtag_set_data_pulse, jtag_set_data_pulse_next : std_logic;
+begin
+--wordcounter_end <= (others => '1'); -- maximum RAM address
+    BEGIN_JTAGBITCALC_OUT <= begin_jtagbitcalc;
+    JTAG_CLOCK_PULSE1_OUT <= jtag_clock_pulse1;
+    JTAG_CLOCK_PULSE2_OUT <= jtag_clock_pulse2;
+    JTAG_SAMPLE_PULSE1_OUT <= jtag_sample_pulse1;
+    JTAG_SAMPLE_PULSE2_OUT <= jtag_sample_pulse2;
+    JTAG_SAMPLE_PULSE3_OUT <= jtag_sample_pulse3;
+    JTAG_SET_DATA_PULSE_OUT <= jtag_set_data_pulse;  
+SYNCHRONOUS: process(CLK_IN, RESET_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      begin_jtagbitcalc <= '0';
+      jtag_clock_pulse1 <= '0';
+      jtag_clock_pulse2 <= '0';
+      jtag_sample_pulse1 <= '0';
+      jtag_sample_pulse2 <= '0';
+      jtag_sample_pulse3 <= '0';
+      jtag_set_data_pulse <= '0';
+      jtag_counter <= (others => '0');
+    else
+      begin_jtagbitcalc <= begin_jtagbitcalc_next;
+      jtag_clock_pulse1 <= jtag_clock_pulse1_next;
+      jtag_clock_pulse2 <= jtag_clock_pulse2_next;
+      jtag_sample_pulse1 <= jtag_sample_pulse1_next;
+      jtag_sample_pulse2 <= jtag_sample_pulse2_next;
+      jtag_sample_pulse3 <= jtag_sample_pulse3_next;
+      jtag_set_data_pulse <= jtag_set_data_pulse_next;
+      jtag_counter <= jtag_counter_next;
+    end if;
+  end if;
+end process;
+
+
+
+COMB: process (jtag_counter, JTAG_CLOCK_CYCLE_LENGTH_IN, JTAG_CLOCK_TIME1_IN, JTAG_CLOCK_TIME2_IN, JTAG_SAMPLE_TIME1_IN, JTAG_SAMPLE_TIME2_IN, JTAG_SAMPLE_TIME3_IN, JTAG_SET_DATA_TIME_IN )
+begin
+jtag_counter_next <= jtag_counter + 1;  
+begin_jtagbitcalc_next <= '0';
+jtag_clock_pulse1_next <= '0';
+jtag_clock_pulse2_next <= '0';
+jtag_sample_pulse1_next <= '0';
+jtag_sample_pulse2_next <= '0';
+jtag_sample_pulse3_next <= '0';
+jtag_set_data_pulse_next <= '0';
+  if(jtag_counter = unsigned(JTAG_CLOCK_CYCLE_LENGTH_IN)-1) then
+    begin_jtagbitcalc_next <= '1';
+    jtag_counter_next <= (others => '0'); -- reset counter
+  end if;
+
+  if(jtag_counter = unsigned(JTAG_CLOCK_TIME1_IN)) then
+    jtag_clock_pulse1_next <= '1';
+  end if;
+  if(jtag_counter = unsigned(JTAG_CLOCK_TIME2_IN)) then
+    jtag_clock_pulse2_next <= '1';
+  end if;
+  if(jtag_counter = unsigned(JTAG_SAMPLE_TIME1_IN)) then
+    jtag_sample_pulse1_next <= '1';
+  end if;
+  if(jtag_counter = unsigned(JTAG_SAMPLE_TIME2_IN)) then
+    jtag_sample_pulse2_next <= '1';
+  end if;
+  if(jtag_counter = unsigned(JTAG_SAMPLE_TIME3_IN)) then
+    jtag_sample_pulse3_next <= '1';
+  end if;
+  if(jtag_counter = unsigned(JTAG_SET_DATA_TIME_IN)) then
+    jtag_set_data_pulse_next <= '1';
+  end if;
+end process;
+
+
+end architecture;
diff --git a/vhdl/code/jtag_read_m26devid_m10.vhd b/vhdl/code/jtag_read_m26devid_m10.vhd
new file mode 100644 (file)
index 0000000..d79d0f2
--- /dev/null
@@ -0,0 +1,288 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+--use work.version.all;\r
+use work.jtag_constants.all;\r
+use work.jtag_misc.all;\r
+\r
+entity jtag_read_m26devid_m10 is\r
+  generic (\r
+    RAM_JTAG_REGISTERS_DEPTH : integer;\r
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;\r
+    MAX_NUMCHIPS : integer;\r
+    MAX_NUMCHIPS_LD : integer\r
+  );\r
+  port(\r
+    CLK_IN : in std_logic;\r
+    RESET_IN : in std_logic;\r
+    RAM_JTAG_REGISTERS_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);\r
+    RAM_JTAG_REGISTERS_D_IN : in std_logic_vector(31 downto 0);\r
+\r
+    -- number of next chip which is not removed from the jtag chain. for chip i ( in range 0...N) this next chip is\r
+    -- encoded by the bits NEXT_NOT_REMOVED((i+1)*MAX_NUMCHIPS_LD + MAX_NUMCHIPS_LD-1 downto (i+1)*MAX_NUMCHIPS_LD) \r
+    -- which should be interpreted as unsigned\r
+    -- the zero'th entry points to the first not removed chip\r
+    -- a value of (others => '1') means that no more non-removed chips follow\r
+    NEXT_NOT_REMOVED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD*(MAX_NUMCHIPS+1)-1 downto 0);\r
+    \r
+    BEGIN_JTAGBITCALC_IN   : in std_logic;\r
+    TRIGGER_BEGIN_READ_IN : in std_logic;\r
+    \r
+\r
+    \r
+    IS_DR_BIT_OUT : out std_logic;\r
+    IS_FIRSTBIT_OUT : out std_logic;\r
+    IS_LASTBIT_OUT : out std_logic;\r
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);\r
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;\r
+    LAST_TCK_CYCLE_OUT : out std_logic;\r
+    TMS_OUT : out std_logic;\r
+    TDI_OUT : out std_logic;\r
+    EXPECTED_TDO_OUT : out std_logic;\r
+    IDLE_OUT : out std_logic\r
+    );\r
+end entity;\r
+\r
+\r
+architecture jtag_read_m26devid_m10_arch of jtag_read_m26devid_m10 is\r
+-- 32 bit dev_id\r
+signal bitcounter, bitcounter_next : unsigned(5-1 downto 0);\r
+\r
+-- COPIED FROM jtag_write_m10:\r
+-- this state controls the global behaviour. on reset state idle is entered,\r
+--                                           on trigger  wait_begin_jtagbitcalc is entered\r
+--                                              when begin_jtagbitcalc is set, state becomes either idle or \r
+--                                              processing and after finished wait_begin_jtagbitcalc is entered again\r
+type state_type is (idle, wait_begin_jtagbitcalc, processing);\r
+signal state, state_next : state_type;\r
+-- the substate represents the processing state we are in, the name suffix _pi tells how many clock cycles have been spent up to the current state, processing. i must be smaller than 10 so that with 100MHz system clock the JTAG clock can be operated at 10 MHz.\r
+type substate_type is (none_p1, dr_read_p1 ,dr_read_p2, dr_read_p3, dr_read_p4);\r
+signal substate, substate_next : substate_type;\r
+-- COPIED FROM jtag_write_m10:\r
+-- operation = "00": JTAG_RESET, operation = "01" : WRITE_IR, operation = "10": SCAN_DR, operation = "11": none\r
+-- the operation is set on entering processing state, in setup operation is set to none\r
+signal operation, operation_next : unsigned(1 downto 0);\r
+-- COPIED FROM jtag_write_m10, modified\r
+--   JTAG_RESET: operation_phase = 0000-0101 : set TMS=1 for JTAG reset\r
+--               operation_phase = 0110 : set TMS=0 => Run-Test/Idle\r
+--   WRITE_IR:   this state should never be reached\r
+--   SCAN_DR:   operation_phase = 0000      : set TMS=1 => Select-DR-Scan\r
+--               operation_phase = 0001      : set TMS=0 => Capture-DR\r
+--               operation_phase = 0010      : set TMS=0 => Shift-DR\r
+--               operation_phase = 0011      : set TMS=0 => Shift-DR, HERE SHIFTING OF DATA HAPPENS, \r
+--               operation_phase = 0100      : set TMS=1 => Exit1-DR, HERE LAST BIT OF IR IS SHIFTED\r
+--               operation_phase = 0101      : set TMS=1 => Update-DR\r
+--               operation_phase = 0110      : set TMS=0 => Run-Test/Idle\r
+-- warning: operation phase may change during processing (because length of register is retrieved from RAM)\r
+--          but will settle from setOutputs_p8 on\r
+signal operation_phase, operation_phase_next : unsigned(3 downto 0);\r
+\r
+\r
+-- other signals\r
+signal last_tck_cycle, last_tck_cycle_next : std_logic;\r
+signal chipcounter, chipcounter_next : unsigned (MAX_NUMCHIPS_LD-1 downto 0);\r
+-- should a JTAG clock pulse be generated this global_jtag_counter cycle?\r
+signal enable_jtag_clock, enable_jtag_clock_next : std_logic; \r
+-- JTAG output signal: TDI\r
+signal tdi, tdi_next : std_logic;\r
+\r
+-- JTAG output signal: TMS\r
+signal tms, tms_next : std_logic;\r
+\r
+signal is_dr_bit, is_dr_bit_next : std_logic;\r
+signal is_firstbit, is_firstbit_next : std_logic;\r
+signal is_lastbit, is_lastbit_next : std_logic;\r
+signal expected_tdo, expected_tdo_next : std_logic;\r
+\r
+signal ram_jtag_registers_a, ram_jtag_registers_a_next : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);\r
+-- the correct slice from  NEXT_NOT_REMOVED_IN, depending on the current value of chipcounter\r
+signal nxt_not_removed_chip : unsigned(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0); \r
+signal first_not_removed_chip : unsigned(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);\r
+constant invalid_chip : unsigned(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0) := (others => '1');\r
+signal dev_id, dev_id_next : std_logic_vector(31 downto 0);\r
+-- INSERTLABEL:  signals\r
+begin\r
+-- helper signals\r
+--tmp_input_vect <= (others => input_bit); -- doesn't work\r
+IDLE_OUT <= '1' when state = idle else '0';\r
+ENABLE_JTAG_CLOCK_OUT <= enable_jtag_clock;\r
+LAST_TCK_CYCLE_OUT  <= last_tck_cycle;\r
+TMS_OUT <= tms;\r
+TDI_OUT <= tdi;\r
+IS_DR_BIT_OUT <= '1' when operation = "10" and (operation_phase = "0011" or operation_phase = "0100") else '0';\r
+IS_FIRSTBIT_OUT <= '1' when to_integer(bitcounter) = 0 else '0';\r
+IS_LASTBIT_OUT <= '1' when to_integer(bitcounter)+1 = 32 else '0';\r
+CHIPNUM_OUT <= std_logic_vector(chipcounter);\r
+EXPECTED_TDO_OUT <= expected_tdo;\r
+RAM_JTAG_REGISTERS_A_OUT <= ram_jtag_registers_a;\r
+nxt_not_removed_chip <= unsigned(NEXT_NOT_REMOVED_IN((to_integer(chipcounter)+1)*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto (to_integer(chipcounter)+1)*MAX_NUMCHIPS_PLUS_ONE_LD)); -- first entry points to first not removed chip\r
+first_not_removed_chip <= unsigned(NEXT_NOT_REMOVED_IN(MAX_NUMCHIPS_PLUS_ONE_LD - 1 downto 0));\r
+\r
+SYNCHRONOUS_MAIN : process (CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      bitcounter <= (others =>'0');\r
+      chipcounter <= (others =>'0');\r
+      last_tck_cycle <= '0';\r
+      state <= idle;\r
+      substate <= none_p1;      \r
+      enable_jtag_clock <= '0';\r
+      tdi <= '0';\r
+      tms <= '0';      \r
+      operation <= "11";\r
+      operation_phase <= "0000";\r
+      is_dr_bit <= '0';\r
+      is_firstbit <= '0';\r
+      is_lastbit <= '0';\r
+      expected_tdo <= '0';\r
+      ram_jtag_registers_a <= (others => '0');\r
+      dev_id <= (others => '0');\r
+      -- INSERTLABEL: SYNCHRONOUS reset\r
+    else\r
+      bitcounter <= bitcounter_next;\r
+      chipcounter <= chipcounter_next;\r
+      last_tck_cycle <= last_tck_cycle_next;\r
+      state <= state_next;\r
+      substate <= substate_next;      \r
+      enable_jtag_clock <= enable_jtag_clock_next;\r
+      tdi <= tdi_next;\r
+      tms <= tms_next;\r
+      operation <= operation_next;\r
+      operation_phase <= operation_phase_next;\r
+      is_dr_bit <= is_dr_bit_next;\r
+      is_firstbit <= is_firstbit_next;\r
+      is_lastbit <= is_lastbit_next;\r
+      expected_tdo <= expected_tdo_next;\r
+      ram_jtag_registers_a <= ram_jtag_registers_a_next;\r
+      dev_id <= dev_id_next;\r
+      -- INSERTLABEL:  SYNCHRONOUS update\r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB_MAIN: process(bitcounter, chipcounter, dev_id, last_tck_cycle, state, TRIGGER_BEGIN_READ_IN, BEGIN_JTAGBITCALC_IN, operation, operation_phase, substate, enable_jtag_clock, tdi, tms, RAM_JTAG_REGISTERS_D_IN, expected_tdo, first_not_removed_chip, nxt_not_removed_chip, ram_jtag_registers_a, is_lastbit, is_firstbit, is_dr_bit) -- INSERTLABEL:  sensitivity list\r
+begin\r
+  bitcounter_next <= bitcounter;\r
+  last_tck_cycle_next <= last_tck_cycle;\r
+  state_next <= state;\r
+  substate_next <= substate;\r
+  operation_next <= operation;\r
+  operation_phase_next <= operation_phase;\r
+  enable_jtag_clock_next <= enable_jtag_clock;\r
+  tdi_next <= tdi;\r
+  tms_next <= tms;\r
+  chipcounter_next <= chipcounter;\r
+  dev_id_next <= dev_id;\r
+  expected_tdo_next <= expected_tdo;\r
+  is_dr_bit_next <= is_dr_bit;\r
+  is_firstbit_next <= is_firstbit;\r
+  is_lastbit_next <= is_lastbit;\r
+  ram_jtag_registers_a_next <= ram_jtag_registers_a;\r
+  \r
+  -- INSERTLABEL:  COMB defaults\r
+  case state is\r
+  when idle =>\r
+    if(TRIGGER_BEGIN_READ_IN = '1') then\r
+      state_next <= wait_begin_jtagbitcalc;\r
+      operation_next <= "11"; -- none\r
+      \r
+    end if;  \r
+  when wait_begin_jtagbitcalc =>\r
+    if(BEGIN_JTAGBITCALC_IN='1') then\r
+      state_next <= processing;\r
+      operation_phase_next <= operation_phase + 1;\r
+      substate_next <= none_p1; -- do nothing other than output tms=1\r
+      if(operation = "11") then\r
+        -- last operation was none\r
+        operation_next <= "00"; -- JTAG_RESET\r
+        operation_phase_next <= "0000"; -- Bit Nr. 0\r
+        enable_jtag_clock_next <= '1';  -- enable JTAG clock for WRITE operation\r
+      elsif(operation = "00") then\r
+        -- last operation was: JTAG_RESET\r
+        if(operation_phase = "0110") then\r
+          operation_next <= "10"; -- skip WRITE_IR, because after JTAG_RESET, DEV_ID register is selected automatically\r
+          operation_phase_next <= "0000";\r
+          bitcounter_next <= (others => '0');\r
+          chipcounter_next <= first_not_removed_chip;\r
+        end if;\r
+      elsif(operation = "01") then\r
+        -- this state should never be reached\r
+        state_next <= idle;\r
+      elsif(operation = "10") then\r
+        --last operation was: WRITE_DR\r
+        if(operation_phase = "0010") then -- Shift-DR\r
+          substate_next <= dr_read_p1; \r
+        elsif(operation_phase = "0011") then -- Shift-DR\r
+          -- stay in this phase until the dr of all chips is read out\r
+          bitcounter_next <= bitcounter + 1;\r
+          operation_phase_next <= operation_phase;\r
+          substate_next <= dr_read_p1;  -- fill dr with zeros\r
+          -- assume 32-bit DEV_ID per chip\r
+          if(nxt_not_removed_chip /= invalid_chip) then\r
+            if(to_integer(bitcounter)  >= 31) then\r
+              chipcounter_next <= nxt_not_removed_chip;\r
+              bitcounter_next <= (others => '0');\r
+              substate_next <= dr_read_p1;\r
+            end if;\r
+          else\r
+            if (to_integer(bitcounter)  >= 30) then\r
+              -- if the current chip is the last chip and we finish the register with the next bit\r
+              operation_phase_next <= operation_phase + 1;\r
+              -- bitcounter_next <= bitcounter + 1;\r
+            end if;\r
+          end if;\r
+        elsif(operation_phase = "0101") then -- Update DR\r
+          last_tck_cycle_next <= '1';\r
+        elsif(operation_phase = "0110") then -- Run-Test-Idle\r
+          enable_jtag_clock_next <= '0'; -- disable JTAG clock for WRITE operation\r
+          last_tck_cycle_next <= '0';\r
+        elsif(operation_phase = "0111") then -- Wait for Data to be written to RAM\r
+          state_next <= idle;          \r
+        end if;\r
+      end if;\r
+    end if;\r
+  when processing =>\r
+    -- set TMS, copied from jtag_write_m10, modified\r
+    tms_next <= '1'; -- JTAG_RESET if operation = "00"\r
+    if(operation = "00") then \r
+      if(operation_phase = "0110") then -- go into Run-Test/Idle\r
+        tms_next <= '0';\r
+      end if;\r
+    elsif(operation = "10") then -- Scan DR\r
+      if(operation_phase = "0000") then\r
+        tms_next <= '1';\r
+      elsif(operation_phase = "0100") then -- enter Exit1-DR\r
+        tms_next <= '1';\r
+      elsif(operation_phase = "0101") then -- enter Update-DR\r
+        tms_next <= '1';\r
+      else\r
+        tms_next <= '0';\r
+      end if;\r
+    end if;      \r
+    tdi_next <= '0';\r
+    case substate is\r
+      when none_p1 =>\r
+        state_next <= wait_begin_jtagbitcalc;\r
+      when dr_read_p1 =>\r
+        ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address\r
+        ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(to_unsigned(1, RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD)); -- DEV_ID\r
+        tdi_next <= '0';\r
+        substate_next <= dr_read_p2;\r
+      when dr_read_p2 =>\r
+        -- wait one clock cycle \r
+        substate_next <= dr_read_p3;\r
+      when dr_read_p3 =>\r
+        dev_id_next <= RAM_JTAG_REGISTERS_D_IN;\r
+        substate_next <= dr_read_p4;\r
+      when dr_read_p4 =>\r
+        expected_tdo_next <= dev_id(to_integer(bitcounter));\r
+        state_next <= wait_begin_jtagbitcalc;\r
+    end case;\r
+  end case;\r
+end process;\r
+\r
+end architecture;\r
+\r
diff --git a/vhdl/code/jtag_tck_out_component.vhd b/vhdl/code/jtag_tck_out_component.vhd
new file mode 100644 (file)
index 0000000..be6c01a
--- /dev/null
@@ -0,0 +1,52 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+--USE IEEE.std_logic_ARITH.ALL;
+--USE IEEE.std_logic_UNSIGNED.ALL;
+USE IEEE.numeric_std.ALL;
+
+library work;
+--use work.trb_net_std.all;
+--use work.trb_net_components.all;
+-- use work.trb_net16_hub_func.all;
+--use work.version.all;
+use work.jtag_constants.all;
+
+entity jtag_tck_out_component is
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+       
+    JTAG_CLOCK_PULSE1_IN : in std_logic;    
+    JTAG_CLOCK_PULSE2_IN : in std_logic;    
+    ENABLE_JTAG_TCK_IN     : in std_logic;
+    
+    TCK_OUT : out std_logic
+  );
+end entity;
+
+architecture jtag_tck_out_component_arch of jtag_tck_out_component is
+signal tck, tck_next : std_logic;
+begin
+TCK_OUT <= tck;
+
+process(CLK_IN)
+begin
+  if(rising_edge(CLK_IN)) then
+    if(RESET_IN='1') then
+      tck <= '0';
+    else
+      tck <= tck_next;
+    end if;
+  end if;
+end process;
+
+COMB_MAIN: process(ENABLE_JTAG_TCK_IN, JTAG_CLOCK_PULSE1_IN, JTAG_CLOCK_PULSE2_IN, tck) 
+begin
+  tck_next <= tck;
+  if((JTAG_CLOCK_PULSE1_IN = '1') and (ENABLE_JTAG_TCK_IN = '1')) then
+    tck_next <= '1';
+  elsif(JTAG_CLOCK_PULSE2_IN = '1') then
+    tck_next <= '0';
+  end if;
+end process;
+end architecture;
\ No newline at end of file
diff --git a/vhdl/code/jtag_tdo_compare_count_m10.vhd b/vhdl/code/jtag_tdo_compare_count_m10.vhd
new file mode 100644 (file)
index 0000000..b86ada6
--- /dev/null
@@ -0,0 +1,224 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+--use work.trb_net_std.all;\r
+--use work.trb_net_components.all;\r
+-- use work.trb_net16_hub_func.all;\r
+--use work.version.all;\r
+use work.jtag_constants.all;\r
+\r
+-- counts for one register of one chip:\r
+--   sampling errors : those cases in which not all sampled values are equal.\r
+--   matches : sampled value = expected value\r
+--   differences : sampled value /= expected value\r
+--\r
+--   the following equation should hold:\r
+--     matches+differences = register size\r
+-- RAM2: stores for each register \r
+--         MCOUNT = number of bits for which the sampled value \r
+--                   matches the expected value\r
+--         DCOUNT (16 lower bits of DSECOUNT)= number of bits for which the sampled value \r
+--                   does not match the expected value\r
+--         SECOUNT (16 higher bits of DSECOUNT) = number of bits which had an unstable value \r
+--                   (not all sampled values equal)\r
+--                   this should of course be 0\r
+--       \r
+\r
+\r
+entity jtag_tdo_compare_count_m10 is\r
+  generic (\r
+    MAX_NUMCHIPS_LD : integer;\r
+    MAX_REGISTERS_PLUS_ONE_LD : integer;\r
+    RAM_MATCH_DIFF_COUNT_DEPTH : integer;\r
+    MAX_REGLEN_LD : integer\r
+  );\r
+  port (\r
+    CLK_IN : in std_logic;\r
+    RESET_IN : in std_logic;\r
+    -- pulse always comes in same interval (at fixed distance to begin_jtag_bitcalc)\r
+    -- sample_pulse3 delayed by one clock cycle\r
+    SAMPLE_PULSE3_D1_IN : in std_logic;\r
+    -- inputs from jtag_write_m10/jtag_read_m26devid\r
+      -- chipcount as unsigned\r
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);\r
+      -- active register as unsigned, 0=read dev_id, 1,2,...=register 0,1,... of jtag_write_m10 \r
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);\r
+    \r
+    ENABLE_COUNTERS_IN : in std_logic;\r
+      -- firstbit signal: reset counters before sampling this bit\r
+    IS_FIRSTBIT_IN  : in std_logic;\r
+      -- finish signal:  dataout => RAM1b, compareout => RAM2\r
+    IS_LASTBIT_IN   : in std_logic;\r
+    \r
+    TDO_EXPECTED_IN : in std_logic;\r
+    TDO_SAMPLED_IN  : in std_logic;\r
+    TDO_SAMPLING_ERROR_IN : in std_logic;\r
+    \r
+    -- RAM2\r
+    RAM_MATCH_DIFF_COUNT_A_OUT : out std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);\r
+    --RAM_MATCH_DIFF_COUNT_D_IN : in std_logic_vector(31 downto 0);\r
+    RAM_MATCH_DIFF_COUNT_WE_OUT : out std_logic;\r
+    RAM_MATCH_DIFF_COUNT_D_OUT : out std_logic_vector(31 downto 0)\r
+\r
+    ---- internal error out: signals that read/write sampling has been mixed\r
+    --INTERNAL_ERROR_OUT : out std_logic\r
+    \r
+    -- Monitoring: 16 bit usable per FIFO, depth=512 = 8192 bits, this is enough for a 7 Mi26 chain (registers 1152 bits each)\r
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);\r
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);   \r
+  );\r
+end entity;\r
+\r
+architecture jtag_tdo_compare_count_m10_arch of jtag_tdo_compare_count_m10 is\r
+\r
+-- state machine for main controlling state machine for TDO sampling:\r
+  type state_type is (WAIT_END_SAMPLING, COUNT_AND_TRIGGER_WRITE_RAM);\r
+  signal state, state_next : state_type;\r
+\r
+  -- counters for SAMPLING_ERROR: value changed in between sampling points\r
+  --              COMPARE_NEQ:    sampled value is not equal expected value\r
+  --              COMPARE_EQUAL:  sampled value is equal expected value\r
+  -- need at maximum to count to one register length which is 1152 for Mimosa26\r
+  signal sampling_error_count,  sampling_error_count_next : unsigned(MAX_REGLEN_LD-1 downto 0);\r
+  signal compare_neq_count,  compare_neq_count_next : unsigned(MAX_REGLEN_LD-1 downto 0);\r
+  signal compare_equal_count,  compare_equal_count_next : unsigned(MAX_REGLEN_LD-1 downto 0);\r
+  \r
+  -- write reg_counts, pulse to start state machine with state ram2_write_state\r
+  signal write_reg_counts : std_logic; \r
+  \r
+-- state machine for write to RAM2:\r
+  type ram2_write_state_type is (RWC_IDLE, WRITE_MCOUNT, WRITE_DSECOUNT -- first line : writing counter values to RAM2\r
+                                        -- write_dr_mcount: write compare_equal_count\r
+                                        -- write_dr_dsecount: write compare_neq_count (low 16 bit of RAM word, DCOUNT) and compare_sampling_error (high 16 bit of RAM word, SECOUNT)\r
+                                 );\r
+  signal ram2_write_state, ram2_write_state_next :  ram2_write_state_type;         \r
+  --signal ram2_regnum, ram2_regnum_next: unsigned(MAX_REGISTERS_LD -1 downto 0);\r
+  -- RAM2 driving signals\r
+  signal ram_match_diff_count_a, ram_match_diff_count_a_next : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);\r
+  signal ram_match_diff_count_data, ram_match_diff_count_data_next : std_logic_vector(31 downto 0);\r
+  signal ram_match_diff_count_we, ram_match_diff_count_we_next : std_logic;\r
+\r
+begin\r
+RAM_MATCH_DIFF_COUNT_A_OUT <= ram_match_diff_count_a;\r
+RAM_MATCH_DIFF_COUNT_D_OUT <= ram_match_diff_count_data;\r
+RAM_MATCH_DIFF_COUNT_WE_OUT <= ram_match_diff_count_we;\r
+\r
+\r
+\r
+SYNCHRONOUS_MAIN : process (CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      state <= WAIT_END_SAMPLING;\r
+      sampling_error_count <= (others =>'0');\r
+      compare_neq_count <= (others =>'0');\r
+      compare_equal_count <= (others =>'0');\r
+    else\r
+      state <= state_next;\r
+      sampling_error_count <= sampling_error_count_next;\r
+      compare_neq_count <= compare_neq_count_next;\r
+      compare_equal_count <= compare_equal_count_next;\r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB_MAIN: process(state, SAMPLE_PULSE3_D1_IN, ENABLE_COUNTERS_IN, TDO_SAMPLED_IN, TDO_SAMPLING_ERROR_IN,\r
+TDO_EXPECTED_IN, IS_FIRSTBIT_IN, IS_LASTBIT_IN, sampling_error_count, compare_neq_count, compare_equal_count)\r
+begin\r
+  write_reg_counts <= '0';\r
+  sampling_error_count_next <= sampling_error_count;\r
+  compare_neq_count_next <= compare_neq_count;\r
+  compare_equal_count_next <= compare_equal_count;\r
+  state_next <= state;\r
+  case state is\r
+    when WAIT_END_SAMPLING =>\r
+      -- this is the idle state, on SAMPLE_PULSE3 check the ENABLE_COUNTERS signal\r
+      -- first sample taken leaving this state\r
+      if (SAMPLE_PULSE3_D1_IN ='1') then\r
+        -- if the bit should be counted\r
+        if(ENABLE_COUNTERS_IN = '1') then\r
+          if(IS_FIRSTBIT_IN = '1') then\r
+            sampling_error_count_next <= (others =>'0');\r
+            compare_neq_count_next <= (others =>'0');\r
+            compare_equal_count_next <= (others =>'0');\r
+          end if;\r
+          state_next <= count_and_trigger_write_ram;\r
+        end if;\r
+      end if;\r
+    -- trigger RAM writes, increment counts \r
+    when COUNT_AND_TRIGGER_WRITE_RAM =>\r
+      if(IS_LASTBIT_IN = '1') then\r
+        write_reg_counts <= '1';\r
+      end if;\r
+      -- increment counts: sampling errors, equal / not equal counts\r
+      if(TDO_SAMPLING_ERROR_IN = '1') then\r
+        sampling_error_count_next <= sampling_error_count + 1;\r
+      end if;\r
+      if(TDO_SAMPLED_IN = TDO_EXPECTED_IN) then\r
+        compare_equal_count_next <= compare_equal_count + 1;\r
+      else\r
+        compare_neq_count_next <= compare_neq_count + 1;\r
+      end if;\r
+      state_next <= wait_end_sampling;\r
+  end case;\r
+end process;\r
+\r
+SYNCHRONOUS_RAM2_WRITE : process (CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      ram2_write_state <= RWC_IDLE;\r
+      ram_match_diff_count_we <= '0';\r
+      ram_match_diff_count_a <= (others => '0');\r
+      ram_match_diff_count_data <= (others => '0');\r
+--      ram2_regnum <= (others => '0');      \r
+    else\r
+      ram2_write_state <= ram2_write_state_next;\r
+      ram_match_diff_count_we <= ram_match_diff_count_we_next;\r
+      ram_match_diff_count_a <= ram_match_diff_count_a_next;\r
+      ram_match_diff_count_data <= ram_match_diff_count_data_next;\r
+--      ram2_regnum <= ram2_regnum_next;      \r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB_RAM2_WRITE: process(ram2_write_state, ram_match_diff_count_a, ram_match_diff_count_data, write_reg_counts, REGNUM_IN, CHIPNUM_IN,  compare_equal_count, compare_neq_count, sampling_error_count)\r
+begin\r
+  ram2_write_state_next <= ram2_write_state;\r
+  ram_match_diff_count_we_next <= '0';\r
+  ram_match_diff_count_a_next <= ram_match_diff_count_a;\r
+  ram_match_diff_count_data_next <= ram_match_diff_count_data;\r
+\r
+  case ram2_write_state is\r
+    when RWC_IDLE =>\r
+      if(write_reg_counts = '1') then\r
+--        ram2_regnum_next <= REGNUM_IN;\r
+          ram2_write_state_next <= write_mcount;\r
+      end if;\r
+    when WRITE_MCOUNT =>\r
+      ram_match_diff_count_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD) <= CHIPNUM_IN; -- chip address\r
+      --ram_match_diff_count_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD-1 downto MAX_REGISTERS_PLUS_ONE_LD+1) <= (others => '0'); -- this could possibly be 0 bits, does this work, then? (gives a warning in modelsim)\r
+      --ram_match_diff_count_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD downto 0) <= std_logic_vector(2*unsigned(REGNUM_IN));\r
+      ram_match_diff_count_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD-1 downto 1) <= REGNUM_IN;\r
+      ram_match_diff_count_a_next(0) <= '0';\r
+      ram_match_diff_count_data_next(31 downto MAX_REGLEN_LD) <= (others => '0');\r
+      ram_match_diff_count_data_next(MAX_REGLEN_LD-1 downto 0) <= std_logic_vector(compare_equal_count);\r
+      ram_match_diff_count_we_next <= '1';\r
+      ram2_write_state_next <= WRITE_DSECOUNT;\r
+    when WRITE_DSECOUNT =>\r
+      ram_match_diff_count_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD) <= CHIPNUM_IN; -- chip address\r
+      --ram_match_diff_count_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <= std_logic_vector(2*unsigned(REGNUM_IN)+1);\r
+      ram_match_diff_count_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD-1 downto 1) <= REGNUM_IN;\r
+      ram_match_diff_count_a_next(0) <= '1';\r
+      ram_match_diff_count_data_next(31 downto MAX_REGLEN_LD+16) <= (others => '0');\r
+      ram_match_diff_count_data_next(MAX_REGLEN_LD-1+16 downto 16) <= std_logic_vector(sampling_error_count);\r
+      ram_match_diff_count_data_next(15 downto MAX_REGLEN_LD) <= (others => '0');\r
+      ram_match_diff_count_data_next(MAX_REGLEN_LD-1 downto 0) <= std_logic_vector(compare_neq_count);\r
+      ram_match_diff_count_we_next <= '1';\r
+      ram2_write_state_next <= rwc_idle;\r
+  end case;\r
+end process;\r
+\r
+end architecture;\r
diff --git a/vhdl/code/jtag_tdo_compare_counttotal_noram_m10.vhd b/vhdl/code/jtag_tdo_compare_counttotal_noram_m10.vhd
new file mode 100644 (file)
index 0000000..4926bc1
--- /dev/null
@@ -0,0 +1,130 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+--use work.trb_net_std.all;\r
+--use work.trb_net_components.all;\r
+-- use work.trb_net16_hub_func.all;\r
+--use work.version.all;\r
+use work.jtag_constants.all;\r
+\r
+-- counts for one register of one chip:\r
+--   sampling errors : those cases in which not all sampled values are equal.\r
+--   matches : sampled value = expected value\r
+--   differences : sampled value /= expected value\r
+--\r
+--   the following equation should hold:\r
+--     matches+differences = register size\r
+-- RAM2: stores for each register \r
+--         MCOUNT = number of bits for which the sampled value \r
+--                   matches the expected value\r
+--         DCOUNT (16 lower bits of DSECOUNT)= number of bits for which the sampled value \r
+--                   does not match the expected value\r
+--         SECOUNT (16 higher bits of DSECOUNT) = number of bits which had an unstable value \r
+--                   (not all sampled values equal)\r
+--                   this should of course be 0\r
+--       \r
+\r
+\r
+entity jtag_tdo_compare_counttotal_noram_m10 is\r
+  generic (\r
+    numcounts : integer := 3;\r
+    se_counter_width : integer := 32; -- sampling error counter width\r
+    diff_counter_width : integer := 16  --  counter width for number of runs in which there were differences \r
+  );\r
+  port (\r
+    CLK_IN : in std_logic;\r
+    RESET_IN : in std_logic;\r
+    -- pulse always comes in same interval (at fixed distance to begin_jtag_bitcalc)\r
+    -- sample_pulse3 delayed by one clock cycle\r
+    SAMPLE_PULSE3_D1_IN : in std_logic;\r
+    -- should this bit be counted as error if not matching expected value? (e.g. is this a dr bit while writing register or reading device id?)\r
+    ENABLE_COUNTERS_IN : in std_logic;\r
+\r
+    TDO_EXPECTED_IN : in std_logic;\r
+    TDO_SAMPLED_IN  : in std_logic;\r
+    TDO_SAMPLING_ERROR_IN : in std_logic;\r
+    BEGIN_COUNT_I_IN : in std_logic_vector(numcounts-1 downto 0);\r
+    END_COUNT_I_IN : in std_logic_vector(numcounts-1 downto 0);\r
+    \r
+    -- should be zero if timing is good\r
+    SAMPLING_ERRORS_COUNT_OUT : out std_logic_vector(diff_counter_width-1 downto 0);\r
+    COUNTS_OUT : out std_logic_vector(numcounts*diff_counter_width-1 downto 0);\r
+    LAST_VALUES_OUT : out std_logic_vector(numcounts-1 downto 0)\r
+\r
+  );\r
+end entity;\r
+\r
+architecture jtag_tdo_compare_counttotal_noram_m10_arch of jtag_tdo_compare_counttotal_noram_m10 is\r
+\r
+-- state machine for main controlling state machine for TDO sampling:\r
+  signal count_i_errors_occured : std_logic_vector(numcounts-1 downto 0);\r
+  --signal count_i_lookingforerrors : std_logic_vector(numcounts-1 downto 0);\r
+\r
+  signal sampling_error_count : unsigned(se_counter_width-1 downto 0);\r
+  \r
+  signal counts : unsigned(numcounts*diff_counter_width-1 downto 0);\r
+  signal SAMPLE_PULSE3_D2 : std_logic;\r
+begin\r
+COUNTS_OUT <= std_logic_vector(counts);\r
+SAMPLING_ERRORS_COUNT_OUT <= std_logic_vector(sampling_error_count);\r
+LAST_VALUES_OUT <= count_i_errors_occured;\r
+\r
+ALL_PROC : process (CLK_IN)\r
+variable i : integer;\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    for i in 0 to numcounts-1 loop\r
+      if(ENABLE_COUNTERS_IN = '1') then\r
+        if(SAMPLE_PULSE3_D2 = '1') then -- when this pulse arrives, the tdo-input from the last chip has been sampled\r
+          if(not(TDO_SAMPLED_IN = TDO_EXPECTED_IN)) then  \r
+            --if(count_i_lookingforerrors(i) = '1') then\r
+              -- remember that an error has occured since begin signal\r
+              count_i_errors_occured(i) <= '1';\r
+            --end if;\r
+          end if;\r
+        end if;\r
+      end if;\r
+    \r
+      if(BEGIN_COUNT_I_IN(i) = '1') then\r
+        -- reset states if begin signal received\r
+        --count_i_lookingforerrors(i) <= '1';\r
+        count_i_errors_occured(i) <= '0'; \r
+      end if;\r
+      if(END_COUNT_I_IN(i) = '1') then\r
+        -- on end signal update counter\r
+        if(count_i_errors_occured(i) = '1') then\r
+          -- increment count\r
+          counts(i*diff_counter_width+diff_counter_width-1 downto i*diff_counter_width) <= counts(i*diff_counter_width+diff_counter_width-1 downto i*diff_counter_width) + 1;\r
+        end if;\r
+      end if;\r
+    end loop;\r
+    if(RESET_IN = '1') then\r
+      count_i_errors_occured <= (others => '0');\r
+      --count_i_lookingforerrors <= (others => '0');\r
+      counts <= (others => '0');\r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+SAMPLING_ERRORS : process (CLK_IN)\r
+variable i : integer;\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(SAMPLE_PULSE3_D2 = '1') then\r
+      if(TDO_SAMPLING_ERROR_IN = '1') then\r
+          sampling_error_count <= sampling_error_count + 1;\r
+      end if;\r
+    end if;\r
+    -- delayed pulse\r
+    SAMPLE_PULSE3_D2 <= SAMPLE_PULSE3_D1_IN;\r
+    if(RESET_IN = '1') then\r
+      sampling_error_count <=  (others => '0');\r
+    end if;\r
+  end if;\r
+  \r
+end process;\r
+\r
+\r
+end architecture;\r
diff --git a/vhdl/code/jtag_tdo_data_to_ram_m10.vhd b/vhdl/code/jtag_tdo_data_to_ram_m10.vhd
new file mode 100644 (file)
index 0000000..ae64bdc
--- /dev/null
@@ -0,0 +1,209 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+--use work.trb_net_std.all;\r
+--use work.trb_net_components.all;\r
+-- use work.trb_net16_hub_func.all;\r
+--use work.version.all;\r
+use work.jtag_constants.all;\r
+\r
+-- RAM1b: stores the data register values\r
+--   read out while writing (so the old values this is) to a RAM with the\r
+--   same layout as the RAM with the remotely configurable register contents.\r
+--   NOTE: the inputs don't need to be buffered again, as they change directly after SAMPLE_PULSE3 and this entity needs the inputs (chipnum_in for example) at maximum ~ 4 clock cycles after SAMPLE_PULSE3_D1 to operate\r
+--   NOTE: this RAM is purely for debugging purposes, and can be removed by\r
+--       by setting the generic enable_ram1b := 0\r
+--       then the compiler should optimize away the constantly idle state machine\r
+--       for writing to the ram, but i'm not sure if this works\r
+\r
+\r
+\r
+entity jtag_tdo_data_to_ram_m10 is\r
+  generic (\r
+    enable_ram1b : std_logic := '1';\r
+    MAX_NUMCHIPS_LD : integer;\r
+    MAX_REGISTERS_PLUS_ONE_LD : integer;\r
+    MAX_REGLEN_LD : integer;\r
+    RAM_JTAG_REGISTERS_DEPTH : integer\r
+  );\r
+  port(\r
+    CLK_IN : in std_logic;\r
+    RESET_IN : in std_logic;\r
+    SAMPLE_PULSE3_D1_IN : in std_logic;\r
+      -- active chip as unsigned\r
+    CHIPNUM_IN : in std_logic_vector(MAX_NUMCHIPS_LD -1 downto 0);\r
+      -- active register as unsigned, 0=read dev_id, 1,2,...=register 0,1,... of jtag_write_m10 \r
+    REGNUM_IN : in std_logic_vector(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);\r
+\r
+    --                dataout => RAM1b\r
+    ENABLE_DATAOUT_IN : in std_logic;\r
+    IS_FIRSTBIT_IN  : in std_logic;\r
+    IS_LASTBIT_IN   : in std_logic;    \r
+    TDO_SAMPLED_IN  : in std_logic;\r
+    -- RAM1b\r
+    RAM_JTAG_REGISTERS_READOUT_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);\r
+    RAM_JTAG_REGISTERS_READOUT_D_IN : in std_logic_vector(31 downto 0);\r
+    RAM_JTAG_REGISTERS_READOUT_WE_OUT : out std_logic;\r
+    RAM_JTAG_REGISTERS_READOUT_D_OUT : out std_logic_vector(31 downto 0)\r
+    \r
+    -- Monitoring: 16 bit usable per FIFO, depth=512 = 8192 bits, this is enough for a 7 Mi26 chain (registers 1152 bits each)\r
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);\r
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);   \r
+  );\r
+end entity;\r
+\r
+architecture jtag_tdo_data_to_ram_m10_arch of jtag_tdo_data_to_ram_m10 is\r
+\r
+-- state machine for main controlling state machine for TDO sampling:\r
+  type state_type is (S_WAIT_BEGIN_SAMPLE, S_TRIGGER_RAM_WRITE);\r
+  signal state, state_next : state_type;\r
+\r
+  -- store one 32bit word to write to RAM1b\r
+  signal data, data_next: std_logic_vector(31 downto 0);\r
+\r
+  -- the bit we are at in the current chip register. used to address memory, and to write to the right bit of the "data" word. \r
+  signal dataout_bitcount, dataout_bitcount_next : unsigned(MAX_REGLEN_LD-1 downto 0);\r
+  \r
+-- write data register or device id to RAM, pulses to start state machine with state ram1b_write_state\r
+  signal write_dr, write_dev_id : std_logic; \r
+--  -- write reg_counts, pulse to start state machine with state ram2_write_state\r
+--  signal write_reg_counts : std_logic; \r
+\r
+  \r
+-- state machine for read/write to RAM1b:\r
+  type ram1b_write_state_type is (RW_IDLE, RW_READ_DR_ADDR, RW_WAIT_READ_DR_ADDR, RW_WRITE_DR_DATA, -- first line : writing to data register in RAM1b\r
+                             RW_WRITE_DEV_ID);                                   -- second line: writing dev id to fixed address in memory area of chip in RAM1b\r
+  signal ram1b_write_state, ram1b_write_state_next :  ram1b_write_state_type;         \r
+\r
+  -- dr pointer, used to address register in RAM1b\r
+  signal dr_pointer, dr_pointer_next : unsigned(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);\r
+\r
+  -- RAM1b driving signals\r
+  signal ram_jtag_registers_readout_a, ram_jtag_registers_readout_a_next : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);\r
+  signal ram_jtag_registers_readout_data, ram_jtag_registers_readout_data_next : std_logic_vector(31 downto 0);\r
+  signal ram_jtag_registers_readout_wr, ram_jtag_registers_readout_wr_next : std_logic;\r
+  signal ram_jtag_registers_readout_data_in_signal : std_logic_vector(31 downto 0);\r
+\r
+begin\r
+RAM_JTAG_REGISTERS_READOUT_A_OUT <= ram_jtag_registers_readout_a when enable_ram1b = '1' else (others => '0');\r
+RAM_JTAG_REGISTERS_READOUT_D_OUT <= ram_jtag_registers_readout_data when enable_ram1b = '1' else (others => '0');\r
+RAM_JTAG_REGISTERS_READOUT_WE_OUT <= ram_jtag_registers_readout_wr when enable_ram1b = '1' else '0';\r
+ram_jtag_registers_readout_data_in_signal <= RAM_JTAG_REGISTERS_READOUT_D_IN when enable_ram1b = '1' else (others => '0');\r
+\r
+SYNCHRONOUS_MAIN : process (CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      state <= S_WAIT_BEGIN_SAMPLE;\r
+      data <= (others => '0');\r
+      dataout_bitcount <= (others => '0');   \r
+    else\r
+      state <= state_next;\r
+      data <= data_next;\r
+      dataout_bitcount <= dataout_bitcount_next;         \r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB_MAIN: process(state, SAMPLE_PULSE3_D1_IN, REGNUM_IN, IS_FIRSTBIT_IN, IS_LASTBIT_IN, TDO_SAMPLED_IN, data, dataout_bitcount, ENABLE_DATAOUT_IN)\r
+begin\r
+  write_dr <= '0';\r
+  write_dev_id <= '0';\r
+  data_next <= data;\r
+  dataout_bitcount_next <= dataout_bitcount;\r
+  state_next <= state;\r
+  \r
+  case state is\r
+    when S_WAIT_BEGIN_SAMPLE =>\r
+      -- this is the idle state, on SAMPLE_PULSE3_D1_IN check the ENABLE_DATAOUT signal\r
+      -- first sample taken leaving this state\r
+      if (SAMPLE_PULSE3_D1_IN ='1') then\r
+        -- if the bit should be counted\r
+        if(ENABLE_DATAOUT_IN = '1') then\r
+          if(IS_FIRSTBIT_IN = '1') then\r
+            data_next <= (others =>'0');\r
+            dataout_bitcount_next <= (others =>'0');\r
+          else\r
+            -- if next word starts, clear old data\r
+            if(to_integer(dataout_bitcount(4 downto 0))=31) then\r
+              data_next <= (others => '0');\r
+           end if;\r
+            dataout_bitcount_next <= dataout_bitcount + 1;\r
+          end if;\r
+          state_next <= S_TRIGGER_RAM_WRITE;\r
+        end if;\r
+      end if;\r
+    -- set data, trigger RAM writes \r
+    when S_TRIGGER_RAM_WRITE =>\r
+      data_next(to_integer(dataout_bitcount(4 downto 0))) <= TDO_SAMPLED_IN;\r
+      if((to_integer(dataout_bitcount(4 downto 0)) = 31) or IS_LASTBIT_IN = '1') then \r
+        if(to_integer(unsigned(REGNUM_IN)) = 0) then\r
+          write_dev_id <= '1';\r
+        else\r
+          write_dr <= '1';\r
+        end if;\r
+      end if;\r
+      state_next <= S_WAIT_BEGIN_SAMPLE;\r
+  end case;\r
+end process;\r
+\r
+\r
+SYNCHRONOUS_RAM1B_WRITE : process (CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      ram1b_write_state <= RW_IDLE;\r
+      ram_jtag_registers_readout_a <= (others => '0');\r
+      ram_jtag_registers_readout_data <= (others => '0');\r
+      ram_jtag_registers_readout_wr <= '0';\r
+      dr_pointer <= (others => '0');      \r
+    else\r
+      ram1b_write_state <= ram1b_write_state_next;\r
+      ram_jtag_registers_readout_a <= ram_jtag_registers_readout_a_next;\r
+      ram_jtag_registers_readout_data <= ram_jtag_registers_readout_data_next;\r
+      ram_jtag_registers_readout_wr <= ram_jtag_registers_readout_wr_next;\r
+      dr_pointer <= dr_pointer_next;      \r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB_RAM1B_WRITE: process(ram1b_write_state, ram_jtag_registers_readout_a, ram_jtag_registers_readout_data, dr_pointer,  write_dr, write_dev_id, CHIPNUM_IN, REGNUM_IN, data, ram_jtag_registers_readout_data_in_signal, dataout_bitcount )\r
+begin\r
+  ram1b_write_state_next <= ram1b_write_state;\r
+  ram_jtag_registers_readout_a_next <= ram_jtag_registers_readout_a;\r
+  ram_jtag_registers_readout_data_next <= ram_jtag_registers_readout_data;\r
+  ram_jtag_registers_readout_wr_next <= '0';\r
+  dr_pointer_next <= dr_pointer;\r
+  case ram1b_write_state is\r
+    when RW_IDLE =>\r
+      if(write_dr = '1') then\r
+        ram_jtag_registers_readout_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(CHIPNUM_IN); -- chip address\r
+        ram_jtag_registers_readout_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto MAX_REGISTERS_PLUS_ONE_LD+1) <=  (others => '0');\r
+        ram_jtag_registers_readout_a_next(MAX_REGISTERS_PLUS_ONE_LD downto 1) <= REGNUM_IN; -- DR Pointer (REGNUM_IN is write_register+1), multiply that by two\r
+        ram_jtag_registers_readout_a_next(0) <= '0'; -- DR Pointer (REGNUM_IN is write_register+1), multiply that by two\r
+        ram1b_write_state_next <= RW_READ_DR_ADDR;\r
+      elsif(write_dev_id = '1') then\r
+        ram1b_write_state_next <= RW_WRITE_DEV_ID;\r
+      end if;\r
+    when RW_READ_DR_ADDR =>\r
+      ram1b_write_state_next <= RW_WAIT_READ_DR_ADDR;\r
+    when RW_WAIT_READ_DR_ADDR =>\r
+      dr_pointer_next <= unsigned(ram_jtag_registers_readout_data_in_signal(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0));\r
+      ram1b_write_state_next <= RW_WRITE_DR_DATA;\r
+    when RW_WRITE_DR_DATA =>\r
+      ram_jtag_registers_readout_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(CHIPNUM_IN); -- chip address\r
+      ram_jtag_registers_readout_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(dr_pointer+dataout_bitcount(MAX_REGLEN_LD-1 downto 5)); -- DR word address\r
+      ram_jtag_registers_readout_data_next <= data;\r
+      ram_jtag_registers_readout_wr_next <= '1';\r
+      ram1b_write_state_next <= RW_IDLE;\r
+    when RW_WRITE_DEV_ID =>  \r
+      ram_jtag_registers_readout_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(CHIPNUM_IN); -- chip address\r
+      ram_jtag_registers_readout_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(to_unsigned(1,RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD)); -- reserved: DEV_ID\r
+      ram_jtag_registers_readout_data_next <= data;\r
+      ram_jtag_registers_readout_wr_next <= '1';\r
+      ram1b_write_state_next <= RW_IDLE;\r
+  end case;\r
+end process;\r
+end architecture;\r
diff --git a/vhdl/code/jtag_tdo_sample.vhd b/vhdl/code/jtag_tdo_sample.vhd
new file mode 100644 (file)
index 0000000..e4fc70c
--- /dev/null
@@ -0,0 +1,110 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+--use work.trb_net_std.all;\r
+--use work.trb_net_components.all;\r
+-- use work.trb_net16_hub_func.all;\r
+--use work.version.all;\r
+use work.jtag_constants.all;\r
+\r
+-- this entity samples TDO at three time points\r
+-- given by pulses SAMPLE_PULSE1_IN, SAMPLE_PULSE2_IN, SAMPLE_PULSE3_IN\r
+-- it always takes the value of the middle point (at SAMPLE_PULSE2_IN), \r
+-- but signals a sampling error if not all sampled values are equal\r
+-- output is updated two clock cycles after SAMPLE_PULSE3_IN is 1\r
+\r
+\r
+\r
+\r
+entity jtag_tdo_sample is\r
+  port(\r
+    CLK_IN : in std_logic;\r
+    RESET_IN : in std_logic;\r
+    -- pulse always comes in same interval (at fixed distance to begin_jtag_bitcalc)\r
+    -- the first sample is taken directly after this pulse\r
+    SAMPLE_PULSE1_IN   : in std_logic;\r
+    SAMPLE_PULSE2_IN   : in std_logic;\r
+    SAMPLE_PULSE3_IN   : in std_logic;\r
+    \r
+    -- TDO signal, which is to be sampled \r
+    TDO_IN             : in std_logic;\r
+    -- sampled value of TDO\r
+    TDO_SAMPLED_OUT    : out std_logic;\r
+    -- sampling error\r
+    SAMPLING_ERROR_OUT : out std_logic\r
+    --SAMPLING_FINISHED_PULSE_OUT : out std_logic;\r
+  );\r
+end entity;\r
+\r
+architecture jtag_tdo_sample_arch of jtag_tdo_sample is\r
+\r
+-- state machine for main controlling state machine for TDO sampling:\r
+  type state_type is (WAIT_SAMPLE_PULSES, FINISH_SAMPLING);\r
+  signal state, state_next : state_type;\r
+\r
+  -- the sampled TDO line at times sample_pulse1 + 1, sample_pulse2 + 1, sample_pulse3 + 1\r
+  signal sampled, sampled_next : std_logic_vector(2 downto 0);\r
+  -- updated 2 clocks after sample_pulse3 occurs\r
+  signal sampling_error, sampling_error_next : std_logic; \r
+  signal tdo_sampled, tdo_sampled_next : std_logic;\r
+\r
+begin\r
+--SAMPLING_FINISHED_PULSE_OUT <= sampling_finished_pulse;\r
+SAMPLING_ERROR_OUT <= sampling_error;\r
+TDO_SAMPLED_OUT <= tdo_sampled;\r
+\r
+SYNCHRONOUS_MAIN : process (CLK_IN)\r
+begin\r
+  if (rising_edge(CLK_IN)) then\r
+    if(RESET_IN = '1') then\r
+      state <= WAIT_SAMPLE_PULSES;\r
+      sampled <= (others => '0');\r
+--      sampling_finished_pulse <= '0';\r
+      tdo_sampled <= '0';\r
+      sampling_error <= '0';\r
+    else\r
+      state <= state_next;\r
+      sampled <= sampled_next;\r
+--      sampling_finished_pulse <= sampling_finished_pulse_next;\r
+      tdo_sampled <= tdo_sampled_next;\r
+      sampling_error <= sampling_error_next;\r
+    end if;\r
+  end if;\r
+end process;\r
+\r
+COMB_MAIN: process(state, SAMPLE_PULSE1_IN, SAMPLE_PULSE2_IN, SAMPLE_PULSE3_IN, TDO_IN, sampled, tdo_sampled, sampling_error)\r
+begin\r
+  state_next <= state;\r
+  sampled_next <= sampled;\r
+  sampling_error_next <= sampling_error;\r
+  tdo_sampled_next <= tdo_sampled;\r
+--  sampling_finished_pulse_next <= '0';\r
+  case state is\r
+    when WAIT_SAMPLE_PULSES =>\r
+      -- this is the idle state, on BEGIN_SAMPLE_IN check the ENABLE_* signals\r
+      -- first sample taken leaving this state\r
+      if (SAMPLE_PULSE1_IN ='1') then\r
+          sampled_next(0) <= TDO_IN;\r
+      end if;\r
+      if (SAMPLE_PULSE2_IN ='1') then\r
+          sampled_next(1) <= TDO_IN;\r
+      end if;\r
+      if (SAMPLE_PULSE3_IN ='1') then\r
+          sampled_next(2) <= TDO_IN;\r
+          state_next <= FINISH_SAMPLING;\r
+      end if;\r
+    -- set sampling_error \r
+    when FINISH_SAMPLING =>\r
+      if(sampled(2) = sampled(1) and sampled(1) = sampled(0) ) then\r
+        sampling_error_next <= '0';\r
+      else\r
+        sampling_error_next <= '1';\r
+      end if;\r
+      tdo_sampled_next <= sampled(1);\r
+--      sampling_finished_pulse_next <= '1';\r
+      state_next <= WAIT_SAMPLE_PULSES;\r
+  end case;\r
+end process;\r
+end architecture;\r
diff --git a/vhdl/code/jtag_update_error_counts_ram3a.vhd b/vhdl/code/jtag_update_error_counts_ram3a.vhd
new file mode 100644 (file)
index 0000000..5cd826a
--- /dev/null
@@ -0,0 +1,516 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+USE IEEE.numeric_std.ALL;
+
+library work;
+use work.jtag_constants.all;
+use work.jtag_misc.all;
+--use work.monitor_config.all;
+
+-- this entity adds 1 to the error counts in RAM3a, for those registers in which errors occured.
+-- it is a simple implementation, not looking at the number of chips configured,
+-- simply processing the entire memory, thereby going to the maximum number of chips (2**MAX_NUMCHIPS_LD) and the maximum number of registers ( MAX_REGISTERS)
+-- the read_error, data_changed and write_error counting is done separately. always going through the whole memory would take a bit longer, actually this only takes 512 times 7 clock cycles, so 35us.-- we need 7 clock cycles per register because two 32bit integers have to be read from ram3a (4), changed (1) and written back to ram3a (2). the minimum would be some constant + 2 clock cycles/register, because 2 words have to be read from ram (and 2 words have to be written to ram).
+
+entity jtag_update_error_counts_ram3a is
+  generic (
+     MAX_NUMCHIPS : integer;
+     MAX_NUMCHIPS_LD : integer;
+     MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+     MAX_REGISTERS_LD : integer;
+     MAX_REGISTERS_PLUS_ONE_LD : integer;
+     MAX_REGISTERS_PLUS_TWO_LD : integer;
+     RAM_MATCH_DIFF_COUNT_DEPTH : integer;
+     RAM_ERROR_COUNTS_DEPTH : integer;
+     WRITE_ERROR_THRESHOLD : integer;
+     READ_ERROR_THRESHOLD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    TRIGGER_UPDATE_DATA_CHANGED_IN : in std_logic;
+    TRIGGER_UPDATE_READ_ERRORS_IN : in std_logic;
+    TRIGGER_UPDATE_WRITE_ERRORS_IN : in std_logic;
+    TRIGGER_UPDATE_RUN_COUNTER_IN : in  std_logic;
+    RUN_COUNTER_IN : in std_logic_vector(31 downto 0);
+    -- RAM2
+    RAM2_A_OUT : out std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+    RAM2_D_IN : in std_logic_vector(31 downto 0);
+    -- RAM3a
+    RAM3A_A_OUT : out std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+    RAM3A_D_IN : in std_logic_vector(31 downto 0);
+    RAM3A_D_OUT : out std_logic_vector(31 downto 0);
+    RAM3A_WR_OUT :out std_logic;
+    
+   
+    -- * need this because only for not-removed chips errors should be counted
+    REMOVED_CHIPS_IN : in std_logic_vector(MAX_NUMCHIPS -1 downto 0);
+    -- * only go up to the number of chips configured
+    NUMCHIPS_CONFIGURED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+    -- from (i+1)*MAX_REGISTERS_PLUS_ONE_LD-1 downto (i)*MAX_REGISTERS_PLUS_ONE_LD: numregs configured of chip i=(0, 1, 2, ...)
+    NUMREGS_CONFIGURED_IN : in std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);        
+    
+    -- if true, there were read errors in last dev_id read 
+    READ_ERRORS_OUT : out std_logic;
+    -- if true, there were read errors the last double write to registers (value read the second time didn't equal programmed value)
+    WRITE_ERRORS_OUT : out std_logic;    
+    -- if true, the data read from the registers wasn't equal to the data programmed a period before (for example in the last spill break)
+    DATA_CHANGED_OUT : out std_logic;
+    IDLE_OUT : out std_logic
+  );
+end entity;
+
+architecture jtag_update_error_counts_ram3a_arch of jtag_update_error_counts_ram3a is
+type upd_state_type is (UPD_IDLE,
+-- upd1s*: update DATA_CHANGED counts
+UPD1S_START_REG, UPD1S_SETUP_READ_DATA_CH, UPD1S_SETUP_READ_DATA_CH_OV_TH, UPD1S_READ_DATA_CH_OV_TH, UPD1S_WRITE_CALC_NEW_DATA_CHANGED, UPD1S_WRITE_DR_DATA_CHANGED, UPD1S_WRITE_DR_DATA_CHANGED_OV_TH, UPD1S_START_FINISH, UPD1S_FINISH_SETUP_READ_DATA_CH, UPD1S_FINISH_SETUP_READ_WAIT, UPD1S_FINISH_READ_DATA_CH_OV_TH, UPD1S_FINISH_CALC_NEW_DATA_CHANGED, UPD1S_FINISH_WRITE_DATA_CHANGED, UPD1S_FINISH_WRITE_DATA_CHANGED_OV_TH,
+
+UPD3S_START_REG, UPD3S_SETUP_READ_DATA_CH, UPD3S_SETUP_READ_DATA_CH_OV_TH, UPD3S_READ_DATA_CH_OV_TH, UPD3S_WRITE_CALC_NEW_DATA_CHANGED, UPD3S_WRITE_DR_DATA_CHANGED, UPD3S_WRITE_DR_DATA_CHANGED_OV_TH, UPD3S_START_FINISH, UPD3S_FINISH_SETUP_READ_DATA_CH, UPD3S_FINISH_SETUP_READ_WAIT, UPD3S_FINISH_READ_DATA_CH_OV_TH, UPD3S_FINISH_CALC_NEW_DATA_CHANGED, UPD3S_FINISH_WRITE_DATA_CHANGED, UPD3S_FINISH_WRITE_DATA_CHANGED_OV_TH,
+
+
+UPD2S_START_REG, UPD2S_SETUP_READ_DATA_CH, UPD2S_SETUP_READ_DATA_CH_OV_TH, UPD2S_READ_DATA_CH_OV_TH, UPD2S_WRITE_CALC_NEW_DATA_CHANGED, UPD2S_WRITE_DR_DATA_CHANGED, UPD2S_WRITE_DR_DATA_CHANGED_OV_TH,
+-- upd2s*: update READ_ERROR counts
+--,UPD2S_SETUP,UPD2S_READ_MCOUNT, UPD2S_READ_DCOUNT,
+-- upd3s*: update WRITE_ERROR counts
+--UPD3S_SETUP, UPD3S_READ_MCOUNT, UPD3S_READ_DCOUNT,UPD3S_WRITE_WRITE_ERRORS, UPD3S_WRITE_WRITE_ERRORS_OV_TH
+
+-- following states unneeded because ram has one clock cycle delay for reading, not two
+--, UPD1S_SETUP_READ_DATA_CH2, UPD3S_SETUP_READ_DATA_CH2, UPD2S_SETUP_READ_DATA_CH2
+-- , UPD1S_FINISH_SETUP_READ_DATA_CH_OV_TH, UPD3S_FINISH_SETUP_READ_DATA_CH_OV_TH
+UPD4S_WRITE_RUN_COUNTER
+);
+signal state, state_next : upd_state_type;
+
+signal chipnum, chipnum_next : unsigned(MAX_NUMCHIPS_LD-1 downto 0);
+signal regnum, regnum_next   : unsigned(MAX_REGISTERS_LD -1 downto 0);
+signal any_data_changed, any_data_changed_next : std_logic;
+signal any_data_changed_ov_th, any_data_changed_ov_th_next : std_logic;
+signal ram2_a, ram2_a_next : std_logic_vector(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto 0);
+signal ram3a_a, ram3a_a_next : std_logic_vector(RAM_ERROR_COUNTS_DEPTH-1 downto 0);
+signal ram3a_d, ram3a_d_next : std_logic_vector(31 downto 0);
+signal ram3a_wr, ram3a_wr_next : std_logic;
+signal changed_count, changed_count_next : unsigned(31 downto 0);
+signal changed_ov_th_count, changed_ov_th_count_next : unsigned(31 downto 0);
+signal mcount, mcount_next : std_logic_vector(31 downto 0);
+signal dcount, dcount_next : std_logic_vector(31 downto 0);
+signal removed_chips : std_logic_vector(2**MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0);
+-- global data_changed/read_errors/write_errors
+signal gdata_changed, gdata_changed_next : std_logic;
+signal gread_errors, gread_errors_next : std_logic;
+signal gwrite_errors, gwrite_errors_next : std_logic;
+signal numregs : unsigned(MAX_REGISTERS_PLUS_ONE_LD - 1 downto 0);
+signal numregs_vect : std_logic_vector((2**MAX_NUMCHIPS_LD)*MAX_REGISTERS_PLUS_ONE_LD-1 downto 0);
+
+
+begin
+
+IDLE_OUT <= '1' when state = UPD_IDLE else '0';
+RAM2_A_OUT <= ram2_a;
+RAM3A_A_OUT <= ram3a_a;
+RAM3A_D_OUT <= ram3a_d;
+RAM3A_WR_OUT <= ram3a_wr;
+-- only maximum of MAX_NUMCHIPS is allowed, so don't need external signals for these chips,
+-- but internally the integer can go up to 2**MAX_NUMCHIPS_PLUS_ONE_LD-1
+removed_chips(2**MAX_NUMCHIPS_PLUS_ONE_LD-1 downto MAX_NUMCHIPS) <= (others => '1');
+removed_chips(MAX_NUMCHIPS-1 downto 0) <= REMOVED_CHIPS_IN;
+numregs_vect((2**MAX_NUMCHIPS_LD)*MAX_REGISTERS_PLUS_ONE_LD-1 downto MAX_NUMCHIPS*MAX_REGISTERS_PLUS_ONE_LD) <= (others => '0'); -- fill unavailable bits with zeros (to make slices computable)
+numregs_vect(MAX_NUMCHIPS*MAX_REGISTERS_PLUS_ONE_LD-1 downto 0) <= NUMREGS_CONFIGURED_IN;
+numregs <= unsigned(NUMREGS_CONFIGURED_IN((to_integer(chipnum)+1)*MAX_REGISTERS_PLUS_ONE_LD - 1 downto to_integer(chipnum)*MAX_REGISTERS_PLUS_ONE_LD));
+
+READ_ERRORS_OUT <= gread_errors;
+WRITE_ERRORS_OUT <= gwrite_errors;
+DATA_CHANGED_OUT <= gdata_changed;
+
+SEQUENTIAL: process(CLK_IN)
+begin
+  if (rising_edge(CLK_IN)) then
+    if(RESET_IN = '1') then
+      state <= UPD_IDLE;
+      ram2_a <= (others => '0');
+      ram3a_a <= (others => '0');
+      ram3a_wr <= '0';
+      ram3a_d <= (others => '0');
+      changed_count <= (others => '0');
+      changed_ov_th_count <= (others => '0');
+      mcount <= (others => '0');
+      dcount <= (others => '0');
+      chipnum <= (others => '0');
+      any_data_changed <= '0';
+      any_data_changed_ov_th <= '0';
+      regnum <= (others => '0');
+      gdata_changed <= '0';
+      gread_errors <= '0';
+      gwrite_errors <= '0';
+    else
+      state <= state_next;
+      ram2_a <= ram2_a_next;
+      ram3a_a <= ram3a_a_next;
+      ram3a_wr <= ram3a_wr_next;
+      ram3a_d <= ram3a_d_next;
+      changed_count <= changed_count_next;
+      changed_ov_th_count <= changed_ov_th_count_next;
+      mcount <= mcount_next;
+      dcount <= dcount_next;
+      chipnum <= chipnum_next;
+      any_data_changed <= any_data_changed_next;
+      any_data_changed_ov_th <= any_data_changed_ov_th_next;
+      regnum <= regnum_next;
+      gdata_changed <= gdata_changed_next;
+      gread_errors <= gread_errors_next;
+      gwrite_errors <= gwrite_errors_next;
+    end if;
+  end if;
+end process;
+
+COMB: process(state, TRIGGER_UPDATE_DATA_CHANGED_IN, TRIGGER_UPDATE_READ_ERRORS_IN, TRIGGER_UPDATE_WRITE_ERRORS_IN, TRIGGER_UPDATE_RUN_COUNTER_IN, RUN_COUNTER_IN, numregs, removed_chips, NUMCHIPS_CONFIGURED_IN, ram3a_d, RAM3A_D_IN, ram3a_a, ram2_a, RAM2_D_IN, chipnum, regnum, any_data_changed, any_data_changed_ov_th, changed_count, changed_ov_th_count, dcount, mcount, gdata_changed, gwrite_errors, gread_errors)
+begin
+  state_next <= state;
+  ram2_a_next <= ram2_a;
+  ram3a_a_next <= ram3a_a;
+  ram3a_d_next <= ram3a_d;
+  ram3a_wr_next <= '0';
+  chipnum_next <= chipnum;
+  regnum_next <= regnum;
+  any_data_changed_next <= any_data_changed;
+  any_data_changed_ov_th_next <= any_data_changed_ov_th;
+  changed_count_next <= changed_count;
+  changed_ov_th_count_next <= changed_ov_th_count;
+  dcount_next <= dcount;
+  mcount_next <= mcount;
+  
+  gdata_changed_next <= gdata_changed;
+  gwrite_errors_next <= gwrite_errors;
+  gread_errors_next <= gread_errors;
+  
+  case state is
+    when UPD_IDLE =>
+      if(TRIGGER_UPDATE_DATA_CHANGED_IN = '1') then
+        chipnum_next <= (others => '0');
+        regnum_next <= (others => '0');
+        any_data_changed_next <= '0';
+        any_data_changed_ov_th_next <= '0';
+        gdata_changed_next <= '0';
+        state_next <= UPD1S_START_REG;
+      elsif(TRIGGER_UPDATE_READ_ERRORS_IN = '1') then
+        chipnum_next <= (others => '0');
+        regnum_next <= (others => '0');
+        gread_errors_next <= '0';
+        state_next <= UPD2S_START_REG;
+      elsif(TRIGGER_UPDATE_WRITE_ERRORS_IN = '1') then
+        chipnum_next <= (others => '0');
+        regnum_next <= (others => '0');
+        any_data_changed_next <= '0';
+        any_data_changed_ov_th_next <= '0';
+        gwrite_errors_next <= '0';
+        state_next <= UPD3S_START_REG;  
+      elsif(TRIGGER_UPDATE_RUN_COUNTER_IN = '1') then
+        chipnum_next <= (others => '0');
+        state_next <= UPD4S_WRITE_RUN_COUNTER;
+      end if;    
+    when UPD1S_START_REG =>
+      ram2_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD ) <= std_logic_vector(chipnum);
+      ram2_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD-1 downto 1 ) <= std_logic_vector(to_unsigned(to_integer(regnum) + 1, MAX_REGISTERS_PLUS_TWO_LD)); -- dr counts start after two read counts, and for each register there are two words.
+      ram2_a_next(0 ) <= '0';
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-1 downto RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD ) <= std_logic_vector(chipnum);
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD -1) <= '1'; -- data changed
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 1) <= std_logic_vector(to_unsigned(to_integer(regnum)+2, MAX_REGISTERS_PLUS_TWO_LD));      -- dr1
+      ram3a_a_next(0) <= '0'; --d_ch
+      state_next <= UPD1S_SETUP_READ_DATA_CH;
+    when UPD1S_SETUP_READ_DATA_CH =>
+      -- only need to increment the lower address part which corresponds to the register number, chipnumber doesn't change
+      ram2_a_next(0) <= '1';
+      ram3a_a_next(0) <= '1';
+    --  state_next <= UPD1S_SETUP_READ_DATA_CH2;
+    --when UPD1S_SETUP_READ_DATA_CH2 => 
+       state_next <= UPD1S_SETUP_READ_DATA_CH_OV_TH;
+    when UPD1S_SETUP_READ_DATA_CH_OV_TH =>
+      changed_count_next <= unsigned(RAM3A_D_IN);
+      mcount_next <= RAM2_D_IN;
+      state_next <= UPD1S_READ_DATA_CH_OV_TH;
+      
+    when UPD1S_READ_DATA_CH_OV_TH =>
+      changed_ov_th_count_next <= unsigned(RAM3A_D_IN);
+      dcount_next <= RAM2_D_IN;
+      state_next <= UPD1S_WRITE_CALC_NEW_DATA_CHANGED;
+      
+    when UPD1S_WRITE_CALC_NEW_DATA_CHANGED =>
+      -- if 0 bits match, or at least one error, add one to data changed count
+      if((std_logic_vector_all_components_equal_scalar(mcount, '0')='1') or ( std_logic_vector_all_components_equal_scalar(dcount, '0') = '0')) then
+        -- increment error counter
+        changed_count_next <= changed_count + 1; -- 32 bit so overflow will occur with enough time to detect
+        if(removed_chips(to_integer(chipnum)) = '0') then
+          any_data_changed_next <= '1';
+          gdata_changed_next <= '1';
+        end if;
+      end if;
+    
+      if(unsigned(mcount) = 0 or not unsigned(dcount)< WRITE_ERROR_THRESHOLD) then
+        -- increment error counter
+        changed_ov_th_count_next <= changed_ov_th_count + 1; -- 32 bit so overflow will occur with enough time to detect
+        if(removed_chips(to_integer(chipnum)) = '0') then
+          any_data_changed_ov_th_next <= '1';
+          gdata_changed_next <= '1';
+        end if;
+      end if;
+      state_next <= UPD1S_WRITE_DR_DATA_CHANGED;
+      
+    when UPD1S_WRITE_DR_DATA_CHANGED =>
+      ram3a_a_next(0) <= '0';
+      ram3a_d_next <= std_logic_vector(changed_count);
+      ram3a_wr_next <= '1';
+      state_next <= UPD1S_WRITE_DR_DATA_CHANGED_OV_TH;
+    when UPD1S_WRITE_DR_DATA_CHANGED_OV_TH =>
+      ram3a_a_next(0) <= '1';
+      ram3a_d_next <= std_logic_vector(changed_ov_th_count);
+      ram3a_wr_next <= '1';
+      if((to_integer(regnum) + 1 = numregs) or (numregs = 0) ) then
+          -- finished
+          state_next <= UPD1S_START_FINISH;
+        else
+          regnum_next <= regnum + 1;
+          state_next <= UPD1S_START_REG;
+      end if;
+      
+    when UPD1S_START_FINISH =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 0) <= std_logic_vector(to_unsigned(2,MAX_REGISTERS_PLUS_TWO_LD+1));      -- DATA_CHANGED (total)
+      state_next <= UPD1S_FINISH_SETUP_READ_DATA_CH;      
+    when UPD1S_FINISH_SETUP_READ_DATA_CH =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 0) <= std_logic_vector(to_unsigned(3,MAX_REGISTERS_PLUS_TWO_LD+1));      -- DATA_CHANGED_OVER_TH (total)
+    --  state_next <= UPD1S_FINISH_SETUP_READ_DATA_CH_OV_TH;      
+    --when UPD1S_FINISH_SETUP_READ_DATA_CH_OV_TH =>
+      state_next <= UPD1S_FINISH_SETUP_READ_WAIT;      
+    when UPD1S_FINISH_SETUP_READ_WAIT =>
+      changed_count_next <= unsigned(RAM3A_D_IN);
+      state_next <= UPD1S_FINISH_READ_DATA_CH_OV_TH;      
+    when UPD1S_FINISH_READ_DATA_CH_OV_TH =>
+      changed_ov_th_count_next <= unsigned(RAM3A_D_IN);
+      state_next <= UPD1S_FINISH_CALC_NEW_DATA_CHANGED;      
+    when UPD1S_FINISH_CALC_NEW_DATA_CHANGED =>
+      if(any_data_changed = '1') then
+        changed_count_next <= changed_count + 1; -- 32 bit so overflow will occur with enough time to detect
+      end if;
+      if(any_data_changed_ov_th = '1') then
+        changed_ov_th_count_next <= changed_ov_th_count + 1; -- 32 bit so overflow will occur with enough time to detect
+      end if;
+      state_next <= UPD1S_FINISH_WRITE_DATA_CHANGED;
+      
+    when UPD1S_FINISH_WRITE_DATA_CHANGED =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 0) <= std_logic_vector(to_unsigned(2,MAX_REGISTERS_PLUS_TWO_LD+1));      -- DATA_CHANGED (total)
+      ram3a_d_next <= std_logic_vector(changed_count);
+      ram3a_wr_next <= '1';
+      state_next <= UPD1S_FINISH_WRITE_DATA_CHANGED_OV_TH;      
+    when UPD1S_FINISH_WRITE_DATA_CHANGED_OV_TH =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 0) <= std_logic_vector(to_unsigned(3,MAX_REGISTERS_PLUS_TWO_LD+1));      -- DATA_CHANGED_OVER_TH (total)
+      ram3a_d_next <= std_logic_vector(changed_ov_th_count);
+      ram3a_wr_next <= '1';
+      if(to_integer(chipnum) + 1 /= unsigned(NUMCHIPS_CONFIGURED_IN)) then
+        -- process next chip
+        chipnum_next <= chipnum + 1;
+        regnum_next <= (others => '0');
+        any_data_changed_next <= '0';
+        any_data_changed_ov_th_next <= '0';
+        state_next <= UPD1S_START_REG;
+      else
+        -- finally really finished
+        state_next <= UPD_IDLE;      
+      end if;
+      
+  -- UPDATE WRITE ERROR COUNTS
+    when UPD3S_START_REG =>
+      ram2_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD ) <= std_logic_vector(chipnum);
+      ram2_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD-1 downto 1 ) <= std_logic_vector(to_unsigned(to_integer(regnum) + 1, MAX_REGISTERS_PLUS_TWO_LD)); -- dr counts start after two read counts, and for each register there are two words.
+      ram2_a_next(0 ) <= '0';
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-1 downto RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD ) <= std_logic_vector(chipnum);
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD -1) <= '0'; -- write errors
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 1) <= std_logic_vector(to_unsigned(to_integer(regnum)+2, MAX_REGISTERS_PLUS_TWO_LD));      -- dr1
+      ram3a_a_next(0) <= '0'; -- normal count
+      state_next <= UPD3S_SETUP_READ_DATA_CH;
+    when UPD3S_SETUP_READ_DATA_CH =>
+      -- only need to increment the lower address part which corresponds to the register number, chipnumber doesn't change
+      ram2_a_next(0) <= '1';
+      ram3a_a_next(0) <= '1'; -- count over th
+    --  state_next <= UPD3S_SETUP_READ_DATA_CH2;
+    --when UPD3S_SETUP_READ_DATA_CH2 => 
+       state_next <= UPD3S_SETUP_READ_DATA_CH_OV_TH;
+    when UPD3S_SETUP_READ_DATA_CH_OV_TH =>
+      changed_count_next <= unsigned(RAM3A_D_IN); -- changed_count now is write error count
+      mcount_next <= RAM2_D_IN;
+      state_next <= UPD3S_READ_DATA_CH_OV_TH;
+      
+    when UPD3S_READ_DATA_CH_OV_TH =>
+      changed_ov_th_count_next <= unsigned(RAM3A_D_IN); -- changed_ov_th_count now is write errors over threshold count
+      dcount_next <= RAM2_D_IN;
+      state_next <= UPD3S_WRITE_CALC_NEW_DATA_CHANGED;
+      
+    when UPD3S_WRITE_CALC_NEW_DATA_CHANGED =>
+      -- if 0 bits match, or at least one error, add one to data changed count
+      if((std_logic_vector_all_components_equal_scalar(mcount, '0')='1') or ( std_logic_vector_all_components_equal_scalar(dcount, '0') = '0')) then
+        -- increment error counter
+        changed_count_next <= changed_count + 1; -- 32 bit so overflow will occur with enough time to detect
+        -- onlly add chip errors of not removed chips to global error counter
+        if(removed_chips(to_integer(chipnum)) = '0') then
+          any_data_changed_next <= '1';
+          gwrite_errors_next <= '1';
+        end if;
+      end if;
+    
+      if(unsigned(mcount) = 0 or not unsigned(dcount)< WRITE_ERROR_THRESHOLD) then
+        -- increment error counter
+        changed_ov_th_count_next <= changed_ov_th_count + 1; -- 32 bit so overflow will occur with enough time to detect
+        -- onlly add chip errors of not removed chips to global error counter
+        if(removed_chips(to_integer(chipnum)) = '0') then
+          any_data_changed_ov_th_next <= '1';
+          gwrite_errors_next <= '1';
+
+        end if;
+      end if;
+      state_next <= UPD3S_WRITE_DR_DATA_CHANGED;
+      
+    when UPD3S_WRITE_DR_DATA_CHANGED =>
+      ram3a_a_next(0) <= '0';
+      ram3a_d_next <= std_logic_vector(changed_count);
+      ram3a_wr_next <= '1';
+      state_next <= UPD3S_WRITE_DR_DATA_CHANGED_OV_TH;
+    when UPD3S_WRITE_DR_DATA_CHANGED_OV_TH =>
+      ram3a_a_next(0) <= '1';
+      ram3a_d_next <= std_logic_vector(changed_ov_th_count);
+      ram3a_wr_next <= '1';
+      if((to_integer(regnum) + 1 = numregs) or (numregs = 0) ) then
+          -- finished
+          state_next <= UPD3S_START_FINISH;
+        else
+          regnum_next <= regnum + 1;
+          state_next <= UPD3S_START_REG;
+      end if;
+      
+    when UPD3S_START_FINISH =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 0) <= std_logic_vector(to_unsigned(2,MAX_REGISTERS_PLUS_TWO_LD+1));      -- DATA_CHANGED (total)
+      state_next <= UPD3S_FINISH_SETUP_READ_DATA_CH;      
+    when UPD3S_FINISH_SETUP_READ_DATA_CH =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 0) <= std_logic_vector(to_unsigned(3,MAX_REGISTERS_PLUS_TWO_LD+1));      -- DATA_CHANGED_OVER_TH (total)
+--      state_next <= UPD3S_FINISH_SETUP_READ_DATA_CH_OV_TH;      
+--    when UPD3S_FINISH_SETUP_READ_DATA_CH_OV_TH =>
+      state_next <= UPD3S_FINISH_SETUP_READ_WAIT;      
+    when UPD3S_FINISH_SETUP_READ_WAIT =>
+      changed_count_next <= unsigned(RAM3A_D_IN);
+      state_next <= UPD3S_FINISH_READ_DATA_CH_OV_TH;      
+    when UPD3S_FINISH_READ_DATA_CH_OV_TH =>
+      changed_ov_th_count_next <= unsigned(RAM3A_D_IN);
+      state_next <= UPD3S_FINISH_CALC_NEW_DATA_CHANGED;      
+    when UPD3S_FINISH_CALC_NEW_DATA_CHANGED =>
+      if(any_data_changed = '1') then
+        changed_count_next <= changed_count + 1; -- 32 bit so overflow will occur with enough time to detect
+      end if;
+      if(any_data_changed_ov_th = '1') then
+        changed_ov_th_count_next <= changed_ov_th_count + 1; -- 32 bit so overflow will occur with enough time to detect
+      end if;
+      state_next <= UPD3S_FINISH_WRITE_DATA_CHANGED;
+      
+    when UPD3S_FINISH_WRITE_DATA_CHANGED =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 0) <= std_logic_vector(to_unsigned(2,MAX_REGISTERS_PLUS_TWO_LD+1));      -- DATA_CHANGED (total)
+      ram3a_d_next <= std_logic_vector(changed_count);
+      ram3a_wr_next <= '1';
+      state_next <= UPD3S_FINISH_WRITE_DATA_CHANGED_OV_TH;      
+    when UPD3S_FINISH_WRITE_DATA_CHANGED_OV_TH =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 0) <= std_logic_vector(to_unsigned(3,MAX_REGISTERS_PLUS_TWO_LD+1));      -- DATA_CHANGED_OVER_TH (total)
+      ram3a_d_next <= std_logic_vector(changed_ov_th_count);
+      ram3a_wr_next <= '1';
+      if(to_integer(chipnum)+1 /= unsigned(NUMCHIPS_CONFIGURED_IN)) then
+        -- process next chip
+        chipnum_next <= chipnum + 1;
+        regnum_next <= (others => '0');
+        any_data_changed_next <= '0';
+        any_data_changed_ov_th_next <= '0';
+        state_next <= UPD3S_START_REG;
+      else
+        -- finally really finished
+        state_next <= UPD_IDLE;      
+      end if;      
+  
+
+  -- UPDATE READ ERROR COUNTS
+    when UPD2S_START_REG =>
+      ram2_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-1 downto RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD ) <= std_logic_vector(chipnum);
+      ram2_a_next(RAM_MATCH_DIFF_COUNT_DEPTH-MAX_NUMCHIPS_LD-1 downto 1 ) <= (others => '0'); -- the two read counts are the first two words.
+      ram2_a_next(0 ) <= '0';
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-1 downto RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD ) <= std_logic_vector(chipnum);
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD -1) <= '0'; -- read errors
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD-2 downto 1) <= (others => '0');      -- read errors
+      ram3a_a_next(0) <= '0'; -- normal count
+      state_next <= UPD2S_SETUP_READ_DATA_CH;
+    when UPD2S_SETUP_READ_DATA_CH =>
+      -- only need to increment the lower address part which corresponds to the register number, chipnumber doesn't change
+      ram2_a_next(0) <= '1';
+      ram3a_a_next(0) <= '1'; -- count over th
+    --  state_next <= UPD2S_SETUP_READ_DATA_CH2;
+    --when UPD2S_SETUP_READ_DATA_CH2 => 
+       state_next <= UPD2S_SETUP_READ_DATA_CH_OV_TH;
+    when UPD2S_SETUP_READ_DATA_CH_OV_TH =>
+      changed_count_next <= unsigned(RAM3A_D_IN); -- changed_count now is write error count
+      mcount_next <= RAM2_D_IN;
+      state_next <= UPD2S_READ_DATA_CH_OV_TH;
+      
+    when UPD2S_READ_DATA_CH_OV_TH =>
+      changed_ov_th_count_next <= unsigned(RAM3A_D_IN); -- changed_ov_th_count now is write errors over threshold count
+      dcount_next <= RAM2_D_IN;
+      state_next <= UPD2S_WRITE_CALC_NEW_DATA_CHANGED;
+      
+    when UPD2S_WRITE_CALC_NEW_DATA_CHANGED =>
+      -- if 0 bits match, or at least one error, add one to data changed count
+      if((std_logic_vector_all_components_equal_scalar(mcount, '0')='1') or ( std_logic_vector_all_components_equal_scalar(dcount, '0') = '0')) then
+        -- onlly add chip errors of not removed chips to global error counter
+        if(removed_chips(to_integer(chipnum)) = '0') then
+          -- increment error counter
+          changed_count_next <= changed_count + 1; -- 32 bit so overflow will occur with enough time to detect
+          gread_errors_next <= '1';
+        end if;
+        --any_data_changed_next <= '1';
+      end if;
+    
+      if(unsigned(mcount) = 0 or not unsigned(dcount)< READ_ERROR_THRESHOLD) then
+        -- onlly add chip errors of not removed chips to global error counter
+        if(removed_chips(to_integer(chipnum)) = '0') then
+          -- increment error counter
+          changed_ov_th_count_next <= changed_ov_th_count + 1; -- 32 bit so overflow will occur with enough time to detect
+          gread_errors_next <= '1';
+        end if;
+        --any_data_changed_ov_th_next <= '1';
+      end if;
+      state_next <= UPD2S_WRITE_DR_DATA_CHANGED;
+      
+    when UPD2S_WRITE_DR_DATA_CHANGED =>
+      ram3a_a_next(0) <= '0';
+      ram3a_d_next <= std_logic_vector(changed_count);
+      ram3a_wr_next <= '1';
+      state_next <= UPD2S_WRITE_DR_DATA_CHANGED_OV_TH;
+    when UPD2S_WRITE_DR_DATA_CHANGED_OV_TH =>
+      ram3a_a_next(0) <= '1';
+      ram3a_d_next <= std_logic_vector(changed_ov_th_count);
+      ram3a_wr_next <= '1';
+      if(to_integer(chipnum)+1 /= unsigned(NUMCHIPS_CONFIGURED_IN)) then
+        -- process next chip
+        chipnum_next <= chipnum + 1;
+        --any_data_changed_next <= '0';
+        --any_data_changed_ov_th_next <= '0';
+        state_next <= UPD2S_START_REG;
+      else      
+        -- finished
+        state_next <= UPD_IDLE;
+      end if;
+
+    -- UPDATE RUN COUNTER part
+    when UPD4S_WRITE_RUN_COUNTER =>
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-1 downto RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD ) <= std_logic_vector(chipnum);
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD -1) <= '1'; -- data_changed/run_counter
+      ram3a_a_next(RAM_ERROR_COUNTS_DEPTH-MAX_NUMCHIPS_LD -2 downto 0) <= (others => '0'); -- data_changed/run_counter
+      ram3a_d_next <= RUN_COUNTER_IN;
+      ram3a_wr_next <= '1';
+      if(to_integer(chipnum)+1 /= unsigned(NUMCHIPS_CONFIGURED_IN)) then
+        chipnum_next <= chipnum + 1;
+      else
+        state_next <= UPD_IDLE;
+      end if;
+end case;
+end process;
+
+end architecture;
diff --git a/vhdl/code/jtag_write_m10.vhd b/vhdl/code/jtag_write_m10.vhd
new file mode 100644 (file)
index 0000000..df17fb6
--- /dev/null
@@ -0,0 +1,586 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+--USE IEEE.std_logic_ARITH.ALL;
+--USE IEEE.std_logic_UNSIGNED.ALL;
+USE IEEE.numeric_std.ALL;
+
+library work;
+--use work.trb_net_std.all;
+--use work.trb_net_components.all;
+-- use work.trb_net16_hub_func.all;
+--use work.version.all;
+use work.jtag_constants.all;
+
+entity jtag_write_m10 is
+  generic (
+    RAM_JTAG_REGISTERS_DEPTH : integer;
+    MAX_NUMCHIPS : integer;
+    MAX_NUMCHIPS_LD : integer;
+    MAX_NUMCHIPS_PLUS_ONE_LD : integer;
+    MAX_REGISTERS_LD : integer;
+    MAX_REGISTERS_PLUS_ONE_LD : integer;
+    MAX_REGLEN_LD : integer;
+    MAX_REGLEN_PLUS_ONE_LD : integer
+  );
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    RAM_JTAG_REGISTERS_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM_JTAG_REGISTERS_D_IN : in std_logic_vector(31 downto 0);
+    
+    --RAM_JTAG_REGISTERS_READ_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_READ_DEPTH-1 downto 0);
+    --RAM_JTAG_REGISTERS_READ_D_OUT : out std_logic_vector(31 downto 0);
+    -- number of next chip which is not removed from the jtag chain. for chip i ( in range 0...N) this next chip is
+    -- encoded by the bits NEXT_NOT_REMOVED((i+1)*MAX_NUMCHIPS_LD + MAX_NUMCHIPS_LD-1 downto (i+1)*MAX_NUMCHIPS_LD) 
+    -- which should be interpreted as unsigned
+    -- the zero'th entry points to the first not removed chip
+    -- a value of (others => '1') means that no more non-removed chips follow
+    NEXT_NOT_REMOVED_IN : in std_logic_vector(MAX_NUMCHIPS_PLUS_ONE_LD*(MAX_NUMCHIPS+1)-1 downto 0);
+    
+    BEGIN_JTAGBITCALC_IN   : in std_logic;
+    TRIGGER_BEGIN_WRITE_IN : in std_logic;
+    IDLE_OUT : out std_logic;
+    
+    
+    IS_DR_BIT_OUT : out std_logic;
+    IS_FIRSTBIT_OUT : out std_logic;
+    IS_LASTBIT_OUT : out std_logic;
+    CHIPNUM_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    REGNUM_OUT : out std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    
+    LAST_TCK_CYCLE_OUT : out std_logic;
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    EXPECTED_TDO_OUT : out std_logic;
+    
+-- from (i+1)*MAX_REGISTERS_PLUS_ONE_LD-1 downto (i)*MAX_REGISTERS_PLUS_ONE_LD: numregs configured of chip i=(0, 1, 2, ...)
+    NUMREGS_CONFIGURED_OUT : out std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);
+        
+    LAST_ERROR_CODE_OUT : out std_logic_vector(2 downto 0)
+    
+    
+  );
+end entity;
+
+architecture jtag_write_m10_arch of jtag_write_m10 is
+
+-- this state controls the global behaviour. on reset state idle is entered,
+--                                           on trigger  wait_begin_jtagbitcalc is entered
+--                                              when begin_jtagbitcalc is set, state becomes either idle or 
+--                                              processing and after finished wait_begin_jtagbitcalc is entered again
+type state_type is (idle, wait_begin_jtagbitcalc, processing);
+signal state, state_next : state_type;
+-- the substate represents the processing state we are in, the name suffix _pi tells how many clock cycles have been spent up to the current state, processing. i must be smaller than 10 so that with 100MHz system clock the JTAG clock can be operated at 10 MHz.
+type substate_type is (newchip_p1, newchip_IR_wait_p2, newchip_IR_wait_p3, newchip_IR_p4, newchip_DR_p2, newchip_DR_p3, newchip_DR_wait_p4, newchip_DR_p5, samechip_newword_DR_p1, newword_wait_p6, newword_p7, setOutputs_p8);
+signal substate, substate_next : substate_type;
+
+-- operation = "00": JTAG_RESET, operation = "01" : WRITE_IR, operation = "10": WRITE_DR, operation = "11": none
+-- the operation is set on entering processing state, in setup operation is set to none
+signal operation, operation_next : unsigned(1 downto 0);
+--  
+--   JTAG_RESET: operation_phase = 0000-0101 : set TMS=1 for JTAG reset
+--   WRITE_IR:   operation_phase = 0000      : set TMS=0 => Run-Test/Idle
+--               operation_phase = 0001      : set TMS=1 => Select-DR-Scan
+--               operation_phase = 0010      : set TMS=1 => Select-IR-Scan
+--               operation_phase = 0011      : set TMS=0 => Capture-IR
+--               operation_phase = 0100      : set TMS=0 => Shift-IR
+--               operation_phase = 0101      : set TMS=0 => Shift-IR, HERE SHIFTING OF DATA HAPPENS
+--               operation_phase = 0110      : set TMS=1 => Exit1-IR, HERE LAST BIT OF IR IS SHIFTED
+--               operation_phase = 0111      : set TMS=1 => Update-IR
+--               operation_phase = 1000      : set TMS=0 => Run-Test/Idle
+--   WRITE_DR:   operation_phase = 0000      : set TMS=1 => Select-DR-Scan
+--               operation_phase = 0001      : set TMS=0 => Capture-DR
+--               operation_phase = 0010      : set TMS=0 => Shift-DR
+--               operation_phase = 0011      : set TMS=0 => Shift-DR, HERE SHIFTING OF DATA HAPPENS
+--               operation_phase = 0100      : set TMS=1 => Exit1-DR, HERE LAST BIT OF IR IS SHIFTED
+--               operation_phase = 0101      : set TMS=1 => Update-DR
+--               operation_phase = 0110      : set TMS=0 => Run-Test/Idle
+-- warning: operation phase may change during processing (because length of register is retrieved from RAM)
+--          but will settle from setOutputs_p8 on
+signal operation_phase, operation_phase_next : unsigned(3 downto 0);
+
+-- In processing state: the register that is currently being written. if regcounter >= numregs of the current chip, 
+-- the bypass register is selected (IR=FFFF...F, opcode all ones, see http://en.wikipedia.org/wiki/Joint_Test_Action_Group).
+  -- set to 0 in setup, valid when entering processing, incremented on first JTAG clock cycle belonging to next register
+  -- this means it is incremented on entering processing with JTAG_RESET operation
+signal regcounter, regcounter_next : unsigned(MAX_REGISTERS_LD -1 downto 0);
+
+-- number of registers for current chip,
+--   warning: set while processing
+signal numregs, numregs_next : unsigned(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+
+-- after the first run through WRITE_IR, maxnumregs equals the maximum value of numregs entry in RAM_JTAG_REGISTERS structure
+signal maxnumregs, maxnumregs_next : unsigned(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+
+-- chipcounter: in processing state: chip-nr. to which the requested bit belongs
+--                      set to value for next processing run when leaving state wait_begin_jtagbitcalc
+signal chipcounter, chipcounter_next : unsigned(MAX_NUMCHIPS_LD -1 downto 0);
+
+-- bitcounter: in processing state: bit-nr. inside current chip
+--                      set to value for next processing run when leaving state wait_begin_jtagbitcalc, 
+--                      reset to 0 when chipcounter is changed
+signal bitcounter, bitcounter_next : unsigned(MAX_REGLEN_LD-1 downto 0);
+
+
+-- length: this is the length of the DR/IR respectively of the currently active chip, 
+--   warning: this becomes valid only after some processing steps of the first bit for each chip, 
+--            but will be valid 10 clock cycles after begin_jtagbitcalc
+-- length = 0 is not allowed
+signal length, length_next         : unsigned(MAX_REGLEN_PLUS_ONE_LD-1 downto 0);
+
+-- data_word: value of 32 bit DR/IR word
+signal data_word, data_word_next : std_logic_vector(31 downto 0);
+
+-- dr_pointer: Pointer to DR inside memory area of chip, 
+--   so only the lower bits of the address are stored, the rest is stored as chipcounter
+signal dr_pointer, dr_pointer_next : unsigned(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0);
+
+-- JTAG output signal: TDI
+signal tdi, tdi_next : std_logic;
+
+-- JTAG output signal: TMS
+signal tms, tms_next : std_logic;
+
+-- indicates this is the last TCK clock cycle for this write operation
+signal last_tck_cycle, last_tck_cycle_next : std_logic;
+
+-- RAM address
+signal ram_jtag_registers_a, ram_jtag_registers_a_next : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+
+-- debugging register
+-- "001": length 0 register found, this is not allowed
+signal last_error_code, last_error_code_next : std_logic_vector(2 downto 0);
+
+-- next_not_removed_chip:
+-- the correct slice from  NEXT_NOT_REMOVED_IN, depending on the current value of chipcounter
+signal nxt_not_removed_chip : unsigned(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0); 
+
+signal first_not_removed_chip : unsigned(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0); 
+
+constant invalid_chip : unsigned(MAX_NUMCHIPS_PLUS_ONE_LD-1 downto 0) := (others => '1');
+
+-- should a JTAG clock pulse be generated this global_jtag_counter cycle?
+signal enable_jtag_clock, enable_jtag_clock_next : std_logic; 
+
+signal numregs_configured, numregs_configured_next : std_logic_vector(MAX_NUMCHIPS*(MAX_REGISTERS_PLUS_ONE_LD)-1 downto 0);
+    
+-- INSERTLABEL:  signals
+begin
+
+NUMREGS_CONFIGURED_OUT <= numregs_configured;
+
+process(CLK_IN)
+begin
+  if(rising_edge(CLK_IN)) then
+    if(RESET_IN='1') then
+      state <= idle;
+      substate <= newchip_p1;
+      operation <= "11";
+      operation_phase <= "0000";
+      regcounter <= (others => '0');
+      numregs <= (others => '0');
+      maxnumregs <= (others => '0');
+      chipcounter <= (others => '0');
+      bitcounter <= (others => '0');
+      length <= (others => '0');
+      data_word <= (others => '0');
+      dr_pointer <=  (others => '0');
+      last_error_code <=  (others => '0');
+      tdi <= '0';
+      tms <= '0';
+      last_tck_cycle <= '0';
+      ram_jtag_registers_a <= (others => '0');
+      enable_jtag_clock <= '0';
+      numregs_configured <= (others => '0');
+      -- INSERTLABEL: SYNCHRONOUS reset      
+    else
+      state <= state_next;
+      substate <= substate_next;
+      operation <= operation_next;
+      operation_phase <= operation_phase_next;
+      regcounter <= regcounter_next;
+      numregs <= numregs_next;
+      maxnumregs <= maxnumregs_next;
+      chipcounter <= chipcounter_next;
+      bitcounter <= bitcounter_next;
+      length <= length_next;
+      data_word <= data_word_next;
+      dr_pointer <=  dr_pointer_next;
+      last_error_code <=  last_error_code_next;      
+      tdi <= tdi_next;
+      tms <= tms_next;
+      last_tck_cycle <= last_tck_cycle_next;
+      ram_jtag_registers_a <= ram_jtag_registers_a_next;
+      enable_jtag_clock <= enable_jtag_clock_next;      
+      numregs_configured <= numregs_configured_next;
+      
+      -- INSERTLABEL: SYNCHRONOUS update
+    end if;
+  end if;
+end process;
+
+RAM_JTAG_REGISTERS_A_OUT <= ram_jtag_registers_a;
+LAST_TCK_CYCLE_OUT <= last_tck_cycle;
+ENABLE_JTAG_CLOCK_OUT <= enable_jtag_clock;
+TDI_OUT <= tdi;
+TMS_OUT <= tms;
+IS_DR_BIT_OUT <= '1' when operation = "10" and (operation_phase = "0011" or operation_phase = "0100") else '0';
+IS_FIRSTBIT_OUT <= '1' when to_integer(bitcounter) = 0 else '0';
+IS_LASTBIT_OUT <= '1' when to_integer(bitcounter)+1 = to_integer(length) else '0';
+CHIPNUM_OUT <= std_logic_vector(chipcounter);
+REGNUM_OUT <= std_logic_vector(regcounter);
+EXPECTED_TDO_OUT <= tdi;
+IDLE_OUT <= '1' when state = idle else '0';
+-- for this assignment to be valid, 0 <= chipcounter< MAX_NUMCHIPS has to be true
+nxt_not_removed_chip <= unsigned(NEXT_NOT_REMOVED_IN((to_integer(chipcounter)+1)*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto (to_integer(chipcounter)+1)*MAX_NUMCHIPS_PLUS_ONE_LD)); -- first entry points to first not removed chip
+first_not_removed_chip <= unsigned(NEXT_NOT_REMOVED_IN(MAX_NUMCHIPS_PLUS_ONE_LD - 1 downto 0));
+
+LAST_ERROR_CODE_OUT <= last_error_code;
+
+process(regcounter, maxnumregs, chipcounter, bitcounter, TRIGGER_BEGIN_WRITE_IN, BEGIN_JTAGBITCALC_IN, state, substate, operation, operation_phase, length, data_word, numregs, tdi, tms, dr_pointer, last_error_code, ram_jtag_registers_a, RAM_JTAG_REGISTERS_D_IN,enable_jtag_clock, first_not_removed_chip, nxt_not_removed_chip, last_tck_cycle, numregs_configured) -- INSERTLABEL:  sensitivity list 
+begin
+  bitcounter_next <= bitcounter;
+  chipcounter_next <= chipcounter;
+  regcounter_next <= regcounter;
+  maxnumregs_next <= maxnumregs;
+  operation_next <= operation;
+  operation_phase_next <= operation_phase;
+  state_next <= state;
+  substate_next <= substate;
+  length_next <= length;
+  data_word_next <= data_word;
+  numregs_next <= numregs;
+  tdi_next <= tdi;
+  tms_next <= tms;
+  dr_pointer_next <= dr_pointer;
+  last_error_code_next <= last_error_code;
+  ram_jtag_registers_a_next <= ram_jtag_registers_a;
+  last_tck_cycle_next <= last_tck_cycle;
+  enable_jtag_clock_next <= enable_jtag_clock;
+  numregs_configured_next <= numregs_configured;
+  -- INSERTLABEL:  COMB defaults   
+  case state is
+    when idle =>
+      last_tck_cycle_next <= '0';
+      if(TRIGGER_BEGIN_WRITE_IN = '1') then
+        state_next <= wait_begin_jtagbitcalc;
+        operation_next <= "11"; -- none
+      end if;
+    when wait_begin_jtagbitcalc =>
+      if(BEGIN_JTAGBITCALC_IN='1') then
+        state_next <= processing;
+        operation_phase_next <= operation_phase + 1;
+        -- last operation was: none => first JTAG clock cycle, reset
+        if(operation = "11") then
+          regcounter_next <= (others => '0');
+          maxnumregs_next <= (others => '0');
+          operation_next <= "00"; -- JTAG_RESET
+          operation_phase_next <= "0000"; -- Bit Nr. 0
+          enable_jtag_clock_next <= '1';  -- enable JTAG clock for WRITE operation
+          substate_next <= setOutputs_p8; -- only output for JTAG_RESET
+          
+          
+        -- last operation was: JTAG_RESET
+        elsif(operation = "00") then
+          if(operation_phase = "0101") then
+            if(first_not_removed_chip /= invalid_chip) then
+              chipcounter_next <= first_not_removed_chip;
+              operation_next <= "01"; -- WRITE_IR
+              operation_phase_next <= "0000";
+              bitcounter_next <= (others => '0');
+            else
+              -- ERROR: no not removed chips
+              state_next <= idle;
+            end if;
+          end if;
+          
+        -- last operation was: WRITE_IR
+        elsif(operation = "01") then
+          substate_next <= setOutputs_p8; -- output has to be done in all cases, only sometimes need to do more
+          if(operation_phase = "0100") then -- Shift-IR entered in last operation
+            substate_next <= newchip_p1;
+          elsif(operation_phase = "0101") then -- Shift-IR
+            -- stay in this phase until the instruction registers (of all chips) have been shifted
+            operation_phase_next <= operation_phase;
+            -- -- we do not need to get a new word, because IR is at most 32 bits.
+            --if(bitcounter(4 downto 0) = "11111" ) then
+            --  substate_next <= getIRword_p3;
+            --end if;
+            
+            -- do we need to change to the next not removed chip or finish the register?
+            if(bitcounter >= length -1) then
+              bitcounter_next <= (others => '0');
+              -- set the next not removed chip as the chip the following data is for
+              chipcounter_next <= nxt_not_removed_chip;
+              -- treat as new chip (get numregs, length, IRWord..)
+              substate_next <= newchip_p1;
+            else
+              bitcounter_next <= bitcounter + 1;
+            end if;
+            if (bitcounter = length -2) then
+              -- if next chip is 0, this means the current chip is the last chip and we finish the register with the next bit
+              if(nxt_not_removed_chip = invalid_chip) then
+                -- finish register
+                operation_phase_next <= operation_phase + 1;
+              end if;
+            end if;
+            -- length is set, because first operation already finished, here, so we can test it
+            if(to_integer(length) > 32) then
+              state_next <= idle;
+              last_error_code_next <= "011"; -- IR larger than 32 bit
+            end if;
+          elsif(operation_phase = "1000") then -- Run-Test-Idle
+            operation_next <= "10"; -- WRITE_DR
+            operation_phase_next <= "0000"; -- Select-DR-Scan
+            chipcounter_next <= first_not_removed_chip;  -- reset chipcounter -- bug fixed (was set to 0)
+            bitcounter_next <=  (others => '0');  -- reset bitcounter
+          end if;
+          
+        --last operation was: WRITE_DR
+        elsif(operation = "10") then
+          substate_next <= setOutputs_p8; -- output has to be done in all cases, only sometimes need to do more
+          if(operation_phase = "0010") then -- Shift-DR entered in last operation, but nothing shifted yet
+            substate_next <= newchip_p1; 
+          elsif(operation_phase = "0011") then -- Shift-DR
+            -- stay in this phase until the data registers (of all chips) have been shifted
+            operation_phase_next <= operation_phase;
+            -- do we need to get a new word
+            if(bitcounter(4 downto 0) = "11111") then
+              substate_next <= samechip_newword_DR_p1;
+            end if;
+            -- do we need to change to the next not removed chip or finish the register?
+            if(bitcounter >= length -1) then
+              -- last bit of chip chipcounter has been sent as last operation
+              -- and we know, that it's not the last chip, otherwise we would be in the next phase 
+              -- (this is changed in the processing state, if the last bit of the last chip is reached!)
+              bitcounter_next <= (others => '0');
+              substate_next <= newchip_p1;
+              -- set this as the chip the following data is for
+              chipcounter_next <= nxt_not_removed_chip;
+            else
+              bitcounter_next <= bitcounter + 1;
+            end if;
+            if (bitcounter = length -2) then
+              -- if next chip is 0, this means the current chip is the last chip and we finish the register with the next bit
+              if(nxt_not_removed_chip = invalid_chip) then
+                -- finish register
+                operation_phase_next <= operation_phase + 1;
+              end if;
+            end if;
+          elsif(operation_phase = "0101") then -- Update DR
+            if(regcounter + 1 >= maxnumregs) then --this is the last JTAG clock cycle needed (going back to Run-Test-Idle)
+              last_tck_cycle_next <= '1';
+            end if;
+          elsif(operation_phase = "0110") then -- Run-Test-Idle
+            if(regcounter + 1 < maxnumregs) then
+              regcounter_next <= regcounter + 1; -- start with next register
+              operation_next <= "00"; -- JTAG_RESET
+              operation_phase_next <= "0000";  -- Bit Nr. 0
+            else
+              --operation_next <= "11"; -- none (finished)
+              --operation_phase_next <= "0000";
+              -- the following will deactivate the jtag clock for one cycle, if another write follows, 
+              enable_jtag_clock_next <= '0'; -- disable JTAG clock for WRITE operation
+              last_tck_cycle_next <= '0';
+              state_next <= idle;
+            end if;
+          end if;
+        end if;
+        
+      end if;
+    when processing =>
+      case substate is
+        when newchip_p1 => -- RAM_ADDR_NEXT: Numregs
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  (others => '0'); -- length&numregs
+          if(operation = "01") then
+            substate_next <= newchip_IR_wait_p2;
+          elsif(operation = "10") then
+            substate_next <= newchip_DR_p2;
+          else
+            state_next <= idle;
+            last_error_code_next <= "010"; -- unallowed operation for newchip_p1
+          end if;
+        when newchip_IR_wait_p2 => -- WAIT - need numregs to get IR word
+          substate_next <= newchip_IR_wait_p3;
+        when newchip_IR_wait_p3 => -- WAIT
+          numregs_next <= unsigned(RAM_JTAG_REGISTERS_D_IN(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0)); -- numregs
+          numregs_configured_next((to_integer(chipcounter)+1)*MAX_REGISTERS_PLUS_ONE_LD-1 downto to_integer(chipcounter)*MAX_REGISTERS_PLUS_ONE_LD) <= RAM_JTAG_REGISTERS_D_IN(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0);
+          length_next <= unsigned(RAM_JTAG_REGISTERS_D_IN(MAX_REGLEN_PLUS_ONE_LD -1+16 downto 16)); -- IRLen
+          substate_next <= newchip_IR_p4;
+        when newchip_IR_p4 => -- RAM_ADDR_NEXT: IR Word
+          -- Update maxnumregs
+          if(maxnumregs < numregs) then
+            maxnumregs_next <= numregs;
+          end if;
+          -- *** RAM address for next next step *** -- WARNING: copy and pasted this block to samechip_newword_IR_p0
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+          -- no more registers for this chip?
+          if(regcounter >= numregs) then
+            ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(to_unsigned(2*(to_integer(numregs)+1)+1 + to_integer(numregs), RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD)); -- BYPASS IR word
+          else
+            ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(to_unsigned(2*(to_integer(numregs)+1)+1 + to_integer(regcounter), RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD)); -- IR word
+          end if;
+          -- *** RAM address for next next step ***
+          substate_next <= newword_wait_p6;          
+        
+        when newchip_DR_p2 => -- RAM_ADDR_NEXT: DR Pointer
+          -- WRITE_DR
+          -- *** RAM address for next next step ***
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(2*regcounter + 2); -- DR Pointer
+          -- *** RAM address for next next step ***
+          substate_next <= newchip_DR_p3;
+        when newchip_DR_p3  =>  -- RAM_ADDR_NEXT: DRLength
+          numregs_next <= unsigned(RAM_JTAG_REGISTERS_D_IN(MAX_REGISTERS_PLUS_ONE_LD -1 downto 0));
+          -- *** RAM address for next next step ***
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(2*regcounter + 3); 
+          -- *** RAM address for next next step ***
+          substate_next <= newchip_DR_wait_p4;
+        when newchip_DR_wait_p4 =>
+          -- Check if bypass register is loaded
+          if(to_integer(regcounter) >= to_integer(numregs)) then
+            -- BYPASS register loaded
+            length_next <= to_unsigned(1,MAX_REGLEN_PLUS_ONE_LD);
+            data_word_next <= (others => '0');
+            if(to_integer(nxt_not_removed_chip ) = 0) then
+              operation_phase_next <= operation_phase + 1;
+            end if;
+            substate_next <= setOutputs_p8;
+          else -- normal operation
+            dr_pointer_next <= unsigned(RAM_JTAG_REGISTERS_D_IN(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0));
+            substate_next <= newchip_DR_p5;          
+          end if;          
+        when newchip_DR_p5 =>  -- RAM_ADDR_NEXT: DR data word
+          length_next <= unsigned(RAM_JTAG_REGISTERS_D_IN(MAX_REGLEN_PLUS_ONE_LD-1 downto 0));
+          -- *** RAM address for next next step *** -- WARNING: copy and pasted this block to samechip_newword_DR_p1
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+            --ram_jtag_registers_a(7 downto 0) <=  std_logic_vector(to_unsigned(2*to_integer(regcounter), 8) + 3);
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(dr_pointer + bitcounter(MAX_REGLEN_LD-1 downto 5)); -- DR Word
+          -- *** RAM address for next next step ***
+          substate_next <= newword_wait_p6;
+        when newword_wait_p6 =>
+          if(to_integer(length) = 0) then
+            state_next <= idle;
+            last_error_code_next <= "001";
+          else
+            -- if only one bit in ir/dr, and this is the last chip, then we have to go to Exit1-IR/DR in this operation, this is why the decision can't be taken before processing in all cases
+            if((length = 1) and (nxt_not_removed_chip = invalid_chip)) then
+              operation_phase_next <= operation_phase + 1;
+            end if;
+            substate_next <= newword_p7;
+          end if;
+        when newword_p7 => -- get data word
+          data_word_next <= RAM_JTAG_REGISTERS_D_IN;
+          substate_next <= setOutputs_p8;
+          
+-- IR only has maximum of 32 bit, so there is no state samechip_newword_IR_p1
+        when samechip_newword_DR_p1 =>
+          -- *** RAM address for next next step *** -- WARNING: copy and pasted this block from newchip_DR_p5
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+            --ram_jtag_registers_a(7 downto 0) <=  std_logic_vector(to_unsigned(2*to_integer(regcounter), 8) + 3);
+          ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(dr_pointer + bitcounter(MAX_REGLEN_LD-1 downto 5)); -- DR Word
+          -- *** RAM address for next next step ***
+          substate_next <= newword_wait_p6;
+-- 
+-- when getDRptr_p2 =>
+--           -- *** do stuff with data from last step
+--           if(maxnumregs < numregs) then
+--             maxnumregs_next <= numregs;
+--           end if;
+--           -- *** end stuff with data from last step
+--           
+--           dr_pointer_next <= unsigned(RAM_JTAG_REGISTERS_D_IN(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0));
+--           -- *** RAM address for next step ***
+--           ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+--           -- no more registers for this chip?
+--           if(regcounter >= numregs) then
+--             length_next <= to_unsigned(1, length'length); -- Loaded BYPASS register (length=1)
+--             substate_next <= setOutputs_p5;
+--           else
+--             --ram_jtag_registers_a(7 downto 0) <=  std_logic_vector(to_unsigned(2*to_integer(regcounter), 8) + 3);
+--             ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(2*regcounter + 3); 
+--             substate_next <= getDRlength_p3;
+--           end if;          
+--           -- *** RAM address for next step ***
+--         when getDRlength_p3 =>
+--           length_next <= unsigned(RAM_JTAG_REGISTERS_D_IN(MAX_REGLEN_PLUS_ONE_LD-1 downto 0));
+--           -- *** RAM address for next step: getDRword ***
+--           ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+--             --ram_jtag_registers_a(7 downto 0) <=  std_logic_vector(to_unsigned(2*to_integer(regcounter), 8) + 3);
+--           ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(dr_pointer + bitcounter(MAX_REGLEN_LD-1 downto 5)); -- DR Word
+--           -- *** RAM address for next step ***
+--           substate_next <= getDRword_p4;
+--         when getDRword_p4 =>
+--           if(to_integer(length) = 0) then
+--             state_next <= idle;
+--             last_error_code_next <= "001";
+--           else
+--             -- if only one bit in dr, then we have to go to Exit1-DR in this operation
+--             if(to_integer(length) = 1) then
+--               operation_phase_next <= operation_phase + 1;
+--             end if;
+--             data_word_next <= RAM_JTAG_REGISTERS_D_IN;
+--             substate_next <= setOutputs_p5;
+--           end if;
+--         when getIRlength_p2 =>
+--           length_next <= unsigned(RAM_JTAG_REGISTERS_D_IN(MAX_REGLEN_PLUS_ONE_LD-1 downto 0));
+--           -- *** RAM address for next step: getIRword ***
+--           ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-1 downto RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD) <= std_logic_vector(chipcounter); -- chip address
+--           -- no more registers for this chip?
+--           if(regcounter >= numregs) then
+--             ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(2*(numregs+1)+1 + numregs); -- BYPASS IR word
+--           else
+--             ram_jtag_registers_a_next(RAM_JTAG_REGISTERS_DEPTH-MAX_NUMCHIPS_LD-1 downto 0) <=  std_logic_vector(2*(numregs+1)+1 + regcounter); -- IR word
+--           end if;          
+--           -- *** RAM address for next step ***
+--           substate_next <= getIRword_p3;
+--         when getIRword_p3 =>
+--           if(to_integer(length) = 0) then
+--             state_next <= idle;
+--             last_error_code_next <= "001";
+--           else
+--             -- if only one bit in ir, then we have to go to Exit1-IR in this operation
+--             if(to_integer(length) = 1) then
+--               operation_phase_next <= operation_phase + 1;
+--             end if;
+--             data_word_next <= RAM_JTAG_REGISTERS_D_IN;
+--             substate_next <= setOutputs_p5;
+--           end if;
+        when setOutputs_p8 =>
+          tdi_next <= data_word(to_integer(bitcounter(4 downto 0)));
+          if(operation = "00") then -- JTAG_RESET
+            tms_next <= '1';
+          elsif(operation = "01") then -- WRITE_IR
+            if(operation_phase = "0001") then
+              tms_next <= '1';
+            elsif(operation_phase = "0010") then
+              tms_next <= '1';
+            elsif(operation_phase = "0110") then
+              tms_next <= '1';
+            elsif(operation_phase = "0111") then
+              tms_next <= '1';
+            else
+              tms_next <= '0';
+            end if;
+          elsif(operation = "10") then -- WRITE_DR
+            if(operation_phase = "0000") then
+              tms_next <= '1';
+            elsif(operation_phase = "0100") then
+              tms_next <= '1';
+            elsif(operation_phase = "0101") then
+              tms_next <= '1';
+            else
+              tms_next <= '0';
+            end if;
+          end if;
+          -- finished processing
+          state_next <= wait_begin_jtagbitcalc;
+      end case;
+  end case;
+end process;
+
+
+end architecture;
diff --git a/vhdl/code/ram_dp.vhd b/vhdl/code/ram_dp.vhd
new file mode 100755 (executable)
index 0000000..8dcce95
--- /dev/null
@@ -0,0 +1,44 @@
+LIBRARY IEEE;
+USE IEEE.std_logic_1164.ALL;
+USE IEEE.std_logic_ARITH.ALL;
+USE IEEE.std_logic_UNSIGNED.ALL;
+
+library work;
+--use work.trb_net_std.all;
+
+entity ram_dp is
+  generic(
+    depth : integer := 3;
+    width : integer := 16
+    );
+  port(
+    CLK   : in  std_logic;
+    wr1   : in  std_logic;
+    a1    : in  std_logic_vector(depth-1 downto 0);
+    dout1 : out std_logic_vector(width-1 downto 0);
+    din1  : in  std_logic_vector(width-1 downto 0);
+    a2    : in  std_logic_vector(depth-1 downto 0);
+    dout2 : out std_logic_vector(width-1 downto 0)
+    );
+end entity;
+
+architecture ram_dp_arch of ram_dp is
+  type ram_t is array(0 to 2**depth-1) of std_logic_vector(width-1 downto 0);
+  SIGNAL ram : ram_t ; -- := (others => (others => '0'));
+begin
+
+
+  process(CLK)
+    begin
+      if rising_edge(CLK) then
+        if wr1 = '1' then
+          ram((conv_integer(a1))) <= din1;
+          dout1 <= din1;
+        else
+          dout1 <= ram(conv_integer(a1));
+        end if;
+        dout2 <= ram(conv_integer(a2));
+      end if;
+    end process;
+
+end architecture;
diff --git a/vhdl/code/ram_mux2to1_readport.vhd b/vhdl/code/ram_mux2to1_readport.vhd
new file mode 100755 (executable)
index 0000000..0c06535
--- /dev/null
@@ -0,0 +1,34 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+\r
+entity ram_mux2to1_readport is\r
+  generic (\r
+    depth : integer;\r
+    width : integer := 32\r
+  );\r
+  port (\r
+    SELECT_IN : std_logic;\r
+    A0_IN : in std_logic_vector(depth-1 downto 0);\r
+    D0_OUT : out std_logic_vector(width-1 downto 0);\r
+    A1_IN : in std_logic_vector(depth-1 downto 0);\r
+    D1_OUT : out std_logic_vector(width-1 downto 0);\r
+    \r
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);\r
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0)\r
+  );\r
+end entity;\r
+\r
+architecture ram_mux2to1_readport_arch of ram_mux2to1_readport is\r
+signal addr : std_logic_vector(depth-1 downto 0);\r
+begin\r
+\r
+addr <= A0_IN when SELECT_IN = '0' else A1_IN;\r
+RAM_A_OUT <= addr;\r
+\r
+D0_OUT <= RAM_DOUT_IN;\r
+D1_OUT <= RAM_DOUT_IN;\r
+\r
+end architecture;\r
diff --git a/vhdl/code/ram_mux2to1_writeport.vhd b/vhdl/code/ram_mux2to1_writeport.vhd
new file mode 100755 (executable)
index 0000000..1d2430f
--- /dev/null
@@ -0,0 +1,48 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+\r
+entity ram_mux2to1_writeport is\r
+  generic (\r
+    depth : integer;\r
+    width : integer := 32\r
+  );\r
+  port (\r
+    SELECT_IN : in std_logic;\r
+    A0_IN    : in std_logic_vector(depth-1 downto 0);\r
+    D0_OUT   : out std_logic_vector(width-1 downto 0);\r
+    WR0_IN   : in  std_logic;\r
+    DIN0_IN  : in  std_logic_vector(width-1 downto 0);\r
+    \r
+    A1_IN : in std_logic_vector(depth-1 downto 0);\r
+    D1_OUT : out std_logic_vector(width-1 downto 0);\r
+    WR1_IN   : in  std_logic;\r
+    DIN1_IN  : in  std_logic_vector(width-1 downto 0);\r
+    \r
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);\r
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0);\r
+    RAM_WR_OUT   : out  std_logic;\r
+    RAM_DIN_OUT  : out  std_logic_vector(width-1 downto 0)\r
+  );\r
+end entity;\r
+\r
+architecture ram_mux2to1_writeport_arch of ram_mux2to1_writeport is\r
+signal addr : std_logic_vector(depth-1 downto 0);\r
+signal wr   : std_logic;\r
+signal din  : std_logic_vector(width-1 downto 0);\r
+begin\r
+\r
+addr <= A0_IN when SELECT_IN = '0' else A1_IN;\r
+RAM_A_OUT <= addr;\r
+\r
+wr <= WR0_IN when SELECT_IN = '0' else WR1_IN;\r
+RAM_WR_OUT <= wr;\r
+\r
+din <= DIN0_IN when SELECT_IN = '0' else DIN1_IN;\r
+RAM_DIN_OUT <= din;\r
+D0_OUT <= RAM_DOUT_IN;\r
+D1_OUT <= RAM_DOUT_IN;\r
+\r
+end architecture;\r
diff --git a/vhdl/code/ram_mux4to1_readport.vhd b/vhdl/code/ram_mux4to1_readport.vhd
new file mode 100755 (executable)
index 0000000..b43173b
--- /dev/null
@@ -0,0 +1,47 @@
+LIBRARY ieee;\r
+use ieee.std_logic_1164.all;\r
+USE IEEE.numeric_std.ALL;\r
+\r
+library work;\r
+\r
+entity ram_mux4to1_readport is\r
+  generic (\r
+    depth : integer;\r
+    width : integer := 32\r
+  );\r
+  port (\r
+    SELECT_IN : in std_logic_vector(1 downto 0); -- two bit select input\r
+    A0_IN : in std_logic_vector(depth-1 downto 0);\r
+    D0_OUT : out std_logic_vector(width-1 downto 0);\r
+    A1_IN : in std_logic_vector(depth-1 downto 0);\r
+    D1_OUT : out std_logic_vector(width-1 downto 0);\r
+    A2_IN : in std_logic_vector(depth-1 downto 0);\r
+    D2_OUT : out std_logic_vector(width-1 downto 0);\r
+    A3_IN : in std_logic_vector(depth-1 downto 0);\r
+    D3_OUT : out std_logic_vector(width-1 downto 0);\r
+    \r
+    RAM_A_OUT    : out std_logic_vector(depth-1 downto 0);\r
+    RAM_DOUT_IN  : in  std_logic_vector(width-1 downto 0)\r
+  );\r
+end entity;\r
+\r
+architecture ram_mux4to1_readport_arch of ram_mux4to1_readport is\r
+--signal addr : std_logic_vector(depth-1 downto 0);\r
+begin\r
+\r
+--addr <= A0_IN when SELECT_IN = "00" else A1_IN when SELECT_IN = "01" else\r
+--        A2_IN when SELECT_IN = "10" else A3_IN;\r
+        \r
+--process (addr, SELECT_IN, A0_IN, A1_IN, A2_IN, A3_IN)\r
+--begin\r
+--  RAM_A_OUT <= addr;\r
+--end process;\r
+RAM_A_OUT <= A0_IN when SELECT_IN = "00" else A1_IN when SELECT_IN = "01" else\r
+        A2_IN when SELECT_IN = "10" else A3_IN;\r
+\r
+D0_OUT <= RAM_DOUT_IN;\r
+D1_OUT <= RAM_DOUT_IN;\r
+D2_OUT <= RAM_DOUT_IN;\r
+D3_OUT <= RAM_DOUT_IN;\r
+\r
+end architecture;\r
diff --git a/vhdl/code/remove_sensor_bugfix0_20121218.diff b/vhdl/code/remove_sensor_bugfix0_20121218.diff
new file mode 100644 (file)
index 0000000..c05035b
--- /dev/null
@@ -0,0 +1,45 @@
+Index: jtag_write_m10.vhd
+===================================================================
+--- jtag_write_m10.vhd (revision 160)
++++ jtag_write_m10.vhd (working copy)
+@@ -333,7 +333,7 @@
+           elsif(operation_phase = "1000") then -- Run-Test-Idle
+             operation_next <= "10"; -- WRITE_DR
+             operation_phase_next <= "0000"; -- Select-DR-Scan
+-            chipcounter_next <= (others => '0');  -- reset chipcounter
++            chipcounter_next <= first_not_removed_chip;  -- reset chipcounter -- bug fixed (was set to 0)
+             bitcounter_next <=  (others => '0');  -- reset bitcounter
+           end if;
+           
+Index: jtag_cmd_m26c.vhd
+===================================================================
+--- jtag_cmd_m26c.vhd  (revision 166)
++++ jtag_cmd_m26c.vhd  (working copy)
+@@ -2357,7 +2357,7 @@
+       if(chip_counter_start = '1') then
+           -- determine number of chips connected in serial to jtag chain
+         cc_chip_i_next <= (others => '0');
+-        cc_nextnotremoved_i_next <= (others => '0');
++        cc_nextnotremoved_i_next <= (others => '0'); --position in jtag_next_not_removed, 
+         -- with the following initialization no chip will be unremoved, because
+         -- last_not_removed < first_not_removed
+         -- and numchips_active will be set to 0 if really all chips are removed
+@@ -2376,16 +2376,16 @@
+           first_not_removed_next <= cc_chip_i;
+         end if;
+         cc_nextnotremoved_i_next <= cc_chip_i + 1; -- next not removed chip after chip i is stored at location (i+1) in jtag_next_not_removed
+-        jtag_next_not_removed_next(to_integer(cc_nextnotremoved_i)*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_LD-1 downto to_integer(cc_nextnotremoved_i)*MAX_NUMCHIPS_LD) <=
++        jtag_next_not_removed_next(to_integer(cc_nextnotremoved_i)*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto to_integer(cc_nextnotremoved_i)*MAX_NUMCHIPS_PLUS_ONE_LD) <=
+             std_logic_vector(cc_chip_i);
+       end if;
+       if(cc_chip_i = numchips_configured - 1) then
+-        jtag_next_not_removed_next((to_integer(cc_chip_i)+1)*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_LD-1 downto (to_integer(cc_chip_i)+1)*MAX_NUMCHIPS_LD) <= (others => '1'); -- set next chip for last chip to invalid
+         cc_state_next <= CC_SETNUMCHIPS; -- finished counting active chips
+       else
+         cc_chip_i_next <= cc_chip_i + 1;
+       end if;
+     when CC_SETNUMCHIPS =>
++      jtag_next_not_removed_next((to_integer(cc_nextnotremoved_i))*MAX_NUMCHIPS_PLUS_ONE_LD+MAX_NUMCHIPS_PLUS_ONE_LD-1 downto (to_integer(cc_nextnotremoved_i))*MAX_NUMCHIPS_PLUS_ONE_LD) <= (others => '1'); -- set next chip for last chip to invalid    
+       numchips_active_next <= numchips_active_acc;
+       cc_state_next <= CC_IDLE;
+   end case;
diff --git a/vhdl/code/tb/jtag_cmd_m26c_test.vhd b/vhdl/code/tb/jtag_cmd_m26c_test.vhd
new file mode 100644 (file)
index 0000000..9ff2811
--- /dev/null
@@ -0,0 +1,3399 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+--USE IEEE.std_logic_ARITH.ALL;
+--USE IEEE.std_logic_UNSIGNED.ALL;
+USE IEEE.numeric_std.ALL;
+library work;
+--use work.trb_net_std.all;
+--use work.trb_net_components.all;
+-- use work.trb_net16_hub_func.all;
+--use work.version.all;
+use work.jtag_constants.all;
+
+
+
+entity jtag_cmd_m26c_test is
+end entity;
+
+
+architecture arch of jtag_cmd_m26c_test is
+component CRC_32 is
+  port(
+    CLK     : in  std_logic;
+    RESET   : in std_logic;
+    CLK_EN  : in std_logic;
+    DATA_IN : in  std_logic_vector(31 downto 0);
+    CRC_OUT : out std_logic_vector(31 downto 0);
+    CRC_match : out std_logic
+    );
+end component;
+--
+component jtag_cmd_m26c is
+  generic(
+ MAX_NUMCHIPS          : integer := 7; -- maximum number of chips in this chain controllers chain (because number of chips can be 0, best chose 2^n-1 as maximum to save logic. if memory should be used completely, choose 2^n.)
+ MAX_NUMCHIPS_PLUS_ONE_LD       : integer := 3;    -- LD of value plus one, rounded up, or ld rounded down + 1, because the next binary digit needs one bit more (i.e, 2 needs second bit)
+ MAX_NUMCHIPS_LD       : integer := 3;   -- LD of value, rounded up
+ MAX_REGISTERS         : integer := 14;  -- number of registers per chip.  Because of ram3 layout, values of 2^n-2 should be chosen.
+ MAX_REGISTERS_LD      : integer := 4;   -- LD of value, rounded up.
+ MAX_REGISTERS_PLUS_ONE_LD      : integer := 4; -- LD of (value plus one)
+ MAX_REGISTERS_PLUS_TWO_LD      : integer := 4; -- LD of (value plus two)
+ MAX_REGLEN_LD                  : integer := 12; -- LD of naximum register length.
+ MAX_REGLEN_PLUS_ONE_LD                  : integer := 12; -- LD of (register length+1)
+
+ WRITE_ERROR_THRESHOLD                     : integer := 3; -- if at least WRITE_ERROR_THRESHOLD bits are different from written value, count as WRITE_ERROR/DATA_CHANGED.
+
+ READ_ERROR_THRESHOLD                     : integer := 4; -- if at least READ_ERROR_THRESHOLD bits are different from 32 bit ID, set 
+
+ JTAG_M26_IRLEN        : integer := 5; -- length of the instruction register of the connected chips
+ JTAG_M26_IRLEN_LD        : integer := 3; -- ld of value, rounded up
+ JTAG_M26_IR_ID_CODE   : std_logic_vector(4 downto 0) := "01110"; -- Code selecting DEV_ID register of Mimosa26
+ JTAG_M26_DEV_ID       : std_logic_vector(31 downto 0) := x"4D323601"; -- Mimosa26 DEV_ID, which the sensor should send.
+
+ RAM_JTAG_REGISTERS_DEPTH   : integer := 11; -- will be split up into MAX_NUMCHIPS_LD bits for chip address, rest is for addressing words in that chip block. word size is 32 bit.
+-- GLOBAL_JTAG_COUNTER_BITS : integer := 10; -- 
+ JTAG_CHAIN_BROKEN_COUNTER_BITS : integer := 10; -- counter width
+ JTAG_TDO_EXPECTED_MAXDELAY : integer := 3; -- set range to 0..value for delay of expected TDO value
+ JTAG_TDO_EXPECTED_MAXDELAY_PLUS_ONE_LD : integer := 2 -- ceil of ld( value plus one)
+);
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+
+    JTAG_TMS_OUT : out std_logic;
+    JTAG_TCK_OUT : out std_logic;
+    JTAG_TDI_OUT : out std_logic;
+    JTAG_TDO_IN  : in  std_logic;
+
+    BUS_DATA_IN  : in std_logic_vector(31 downto 0);
+    BUS_DATA_OUT  : out std_logic_vector(31 downto 0);
+    BUS_ADDR_IN   : in  std_logic_vector(8 downto 0);
+    BUS_READ_IN   : in std_logic;
+    BUS_WRITE_IN  : in std_logic;
+
+    BUS_DATAREADY_OUT    : out  std_logic;
+    BUS_NO_MORE_DATA_OUT : out  std_logic;
+    BUS_WRITE_ACK_OUT    : out  std_logic;
+    BUS_UNKNOWN_ADDR_OUT : out  std_logic;
+
+    OFF_SPILL_IN : in   std_logic;
+    MY_STATUS_OUT        : out std_logic_vector(8 downto 0);
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);
+    IDLE_OUT             : out std_logic;
+    PROG_JTAG_FINISHED_OUT:out std_logic;
+    READ_ID_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    WRITE_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    DATA_CHANGED_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    SAMPLING_ERRORS_COUNT_OUT : out std_logic_vector(COUNTER_WIDTHS-1 downto 0);
+    RUN_COUNTER_OUT : out std_logic_vector(31 downto 0);
+    
+    STARTED_OUT : out std_logic;
+    LAST_RUN_SUCCESSFUL_OUT : out std_logic;
+    LAST_DATA_CHANGED_OUT : out std_logic;
+    LAST_WRITE_ERRORS_OUT : out std_logic;
+    LAST_READ_ERRORS_OUT : out std_logic;
+    CRC_ERROR_OUT : out std_logic
+    
+    --BUS_TIMEOUT_IN     : in std_logic;
+    );
+end component;
+--component jtag_cmd_m26c is
+--  port(
+--    CLK_IN : in std_logic;
+--    RESET_IN : in std_logic;
+--    
+--    JTAG_TMS_OUT : out std_logic;
+--    JTAG_TCK_OUT : out std_logic;
+--    JTAG_TDI_OUT : out std_logic;
+--    JTAG_TDO_IN  : in  std_logic;
+--    
+--    BUS_DATA_IN  : in std_logic_vector(31 downto 0);
+--    BUS_DATA_OUT  : out std_logic_vector(31 downto 0);
+--    BUS_ADDR_IN   : in  std_logic_vector(8 downto 0);
+--    BUS_READ_IN   : in std_logic;
+--    BUS_WRITE_IN  : in std_logic;
+--    BUS_DATAREADY_OUT    : out  std_logic;
+--    BUS_NO_MORE_DATA_OUT : out  std_logic;
+--    BUS_WRITE_ACK_OUT    : out  std_logic;
+--    BUS_UNKNOWN_ADDR_OUT : out  std_logic;
+--    OFF_SPILL_IN : in   std_logic;
+--    MY_STATUS_OUT        : out std_logic_vector(8 downto 0);
+--    --MON_FIFO_DATA_OUT    : out std_logic_vector(511 downto 0);
+--    --MON_FIFO_WRITE_OUT   : out std_logic_vector(15 downto 0);
+--
+--    IDLE_OUT             : out std_logic;
+--    PROG_JTAG_FINISHED_OUT:out std_logic
+--    );
+--end component;
+component top is
+port( 
+    TCK_EMU:                                    in std_logic;                                                           
+    TMS_EMU:                                    in std_logic;                         
+    TDI_EMU:                                    in std_logic; 
+    TDO_EMU:                                    out std_logic; 
+    TRSTB_EMU:                                  in std_logic   
+  );
+
+end component;
+signal clk_in, reset_in : std_logic;
+signal jtag_tms_out, jtag_tck_out, jtag_tdi_out, jtag_tdo_in, trstb : std_logic;
+signal bus_data_in : std_logic_vector(31 downto 0);
+signal bus_data_out : std_logic_vector(31 downto 0);
+signal bus_addr_in : std_logic_vector(15 downto 0);
+signal bus_read_in : std_logic;
+signal bus_write_in : std_logic;
+signal bus_dataready_out : std_logic;
+signal bus_no_more_data_out : std_logic;
+signal bus_write_ack_out : std_logic;
+signal bus_unknown_addr_out : std_logic;
+signal trigger_jtag_write : std_logic;
+signal prog_jtag_finished_out : std_logic;
+signal idle_out : std_logic;
+constant RAM_JTAG_REGISTERS_DEPTH : integer := 11;
+
+signal ramcounter : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal statuscounter : std_logic_vector(4 downto 0);
+signal crc32_1_clk_en : std_logic;
+signal crc32_reset_in : std_logic;
+signal crc32_1_data_in : std_logic_vector(31 downto 0);
+signal crc32_1_crc_out : std_logic_vector(31 downto 0);
+signal a,b : std_logic_vector(3 downto 0);
+signal ergebnis : std_logic_vector(7 downto 0);
+signal jtag1_out : std_logic;
+signal jtag2_out : std_logic;
+signal jtag3_in : std_logic;
+signal broken : std_logic;
+
+--signal data_in, ready_for_cmd_out, data_out, data_arrived_out : std_logic;
+begin 
+crc32_1: CRC_32 port map(
+    CLK      => clk_in,
+    RESET    => crc32_reset_in,
+    CLK_EN   => crc32_1_clk_en,
+    DATA_IN  => crc32_1_data_in,
+    CRC_OUT  => crc32_1_crc_out,
+    CRC_match => open
+    );
+jtag_test1 : jtag_cmd_m26c port map( CLK_IN => clk_in,
+                                     RESET_IN => reset_in,
+                                     JTAG_TMS_OUT => jtag_tms_out,
+                                     JTAG_TCK_OUT => jtag_tck_out,
+                                     JTAG_TDI_OUT => jtag_tdi_out,
+                                     JTAG_TDO_IN => jtag_tdo_in,
+                                     BUS_DATA_IN      => bus_data_in,
+                                     BUS_DATA_OUT       => bus_data_out,
+                                     BUS_ADDR_IN       => bus_addr_in(8 downto 0),
+                                     BUS_READ_IN       => bus_read_in,
+                                     BUS_WRITE_IN       => bus_write_in,
+                                     BUS_DATAREADY_OUT  => bus_dataready_out,
+                                     BUS_NO_MORE_DATA_OUT => bus_no_more_data_out,
+                                     BUS_WRITE_ACK_OUT  => bus_write_ack_out,
+                                     BUS_UNKNOWN_ADDR_OUT => bus_unknown_addr_out,
+                                     OFF_SPILL_IN => trigger_jtag_write,
+                                     IDLE_OUT => idle_out,
+                                     PROG_JTAG_FINISHED_OUT => prog_jtag_finished_out
+);
+--top1 : top port map(                 TCK_EMU => jtag_tck_out,
+--                                      TMS_EMU => jtag_tms_out,
+--                                      TDI_EMU => jtag_tdi_out,
+--                                      TDO_EMU => jtag1_out,
+--                                      TRSTB_EMU => trstb
+--);
+--top2 : top port map(                 TCK_EMU => jtag_tck_out,
+--                                      TMS_EMU => jtag_tms_out,
+--                                      TDI_EMU => jtag1_out,
+--                                      TDO_EMU => jtag2_out,
+--                                      TRSTB_EMU => trstb
+--);
+--top3 : top port map(                 TCK_EMU => jtag_tck_out,
+--                                      TMS_EMU => jtag_tms_out,
+--                                      TDI_EMU => jtag3_in,
+--                                      TDO_EMU => jtag_tdo_in,
+--                                      TRSTB_EMU => trstb
+--);
+
+jtag3_in <= jtag2_out when broken = '0' else '0';
+testtest_commands : process
+begin
+  --jtag_tdo_in <= '0';
+  broken <= '0';
+  bus_addr_in(15 downto 0) <= x"0000";
+  bus_data_in(31 downto 8) <= x"000000";
+  bus_data_in(7 downto 0) <= M26C_CMD_NONE;
+  bus_write_in <= '0';
+  bus_read_in <= '0'; 
+  trigger_jtag_write <= '0';
+  ramcounter <= (others => '0');
+  statuscounter <= (others => '0');
+  crc32_1_data_in <=  x"00000000";   
+  crc32_1_clk_en <= '0';
+  trstb <= '1';
+  reset_in <= '1';
+  crc32_reset_in <= '1';
+  wait for 200 ns;
+  trstb <= '0';
+  reset_in <= '0';
+  crc32_reset_in <= '0';
+  wait for 200 ns;
+  trstb <= '1';
+  wait for 100 ns;
+  
+  
+  
+  CHIPLOOP: for i in 2 downto 0 loop
+    crc32_reset_in <= '1';
+    wait for 200 ns;
+    crc32_reset_in <= '0';
+    wait for 200 ns;
+    ramcounter <= (others => '0');
+  
+    bus_data_in(31 downto 0) <= std_logic_vector(to_unsigned(i,32));
+    bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+    bus_addr_in(4 downto 0) <= ADDR_CONTROL_RAM_BASEADDR;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    wait until rising_edge(bus_write_ack_out);
+  
+   
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0005000B"; -- line 1
+    crc32_1_data_in <=  x"0005000B";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"4D323601"; -- line 2
+    crc32_1_data_in <=  x"4D323601";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000025"; -- line 3
+    crc32_1_data_in <=  x"00000025";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000098"; -- line 4
+    crc32_1_data_in <=  x"00000098";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000002A"; -- line 5
+    crc32_1_data_in <=  x"0000002A";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000008"; -- line 6
+    crc32_1_data_in <=  x"00000008";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000002B"; -- line 7
+    crc32_1_data_in <=  x"0000002B";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000008"; -- line 8
+    crc32_1_data_in <=  x"00000008";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000002C"; -- line 9
+    crc32_1_data_in <=  x"0000002C";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000028"; -- line 10
+    crc32_1_data_in <=  x"00000028";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000002E"; -- line 11
+    crc32_1_data_in <=  x"0000002E";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000080"; -- line 12
+    crc32_1_data_in <=  x"00000080";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000032"; -- line 13
+    crc32_1_data_in <=  x"00000032";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000040"; -- line 14
+    crc32_1_data_in <=  x"00000040";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000034"; -- line 15
+    crc32_1_data_in <=  x"00000034";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000030"; -- line 16
+    crc32_1_data_in <=  x"00000030";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000036"; -- line 17
+    crc32_1_data_in <=  x"00000036";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"000000A0"; -- line 18
+    crc32_1_data_in <=  x"000000A0";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000003B"; -- line 19
+    crc32_1_data_in <=  x"0000003B";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000480"; -- line 20
+    crc32_1_data_in <=  x"00000480";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000005F"; -- line 21
+    crc32_1_data_in <=  x"0000005F";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000480"; -- line 22
+    crc32_1_data_in <=  x"00000480";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000083"; -- line 23
+    crc32_1_data_in <=  x"00000083";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000480"; -- line 24
+    crc32_1_data_in <=  x"00000480";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"51ED658E"; -- line 25
+    crc32_1_data_in <=  x"51ED658E";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000000F"; -- line 26
+    crc32_1_data_in <=  x"0000000F";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000001E"; -- line 27
+    crc32_1_data_in <=  x"0000001E";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000001D"; -- line 28
+    crc32_1_data_in <=  x"0000001D";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000013"; -- line 29
+    crc32_1_data_in <=  x"00000013";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000012"; -- line 30
+    crc32_1_data_in <=  x"00000012";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000016"; -- line 31
+    crc32_1_data_in <=  x"00000016";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000017"; -- line 32
+    crc32_1_data_in <=  x"00000017";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000015"; -- line 33
+    crc32_1_data_in <=  x"00000015";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000011"; -- line 34
+    crc32_1_data_in <=  x"00000011";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000010"; -- line 35
+    crc32_1_data_in <=  x"00000010";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000014"; -- line 36
+    crc32_1_data_in <=  x"00000014";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0000001F"; -- line 37
+    crc32_1_data_in <=  x"0000001F";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"0A0A0A64"; -- line 38
+    crc32_1_data_in <=  x"0A0A0A64";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"8020280A"; -- line 39
+    crc32_1_data_in <=  x"8020280A";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"FFFF3276"; -- line 40
+    crc32_1_data_in <=  x"FFFF3276";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"2076FFAA"; -- line 41
+    crc32_1_data_in <=  x"2076FFAA";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00643220"; -- line 42
+    crc32_1_data_in <=  x"00643220";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000002"; -- line 43
+    crc32_1_data_in <=  x"00000002";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 44
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"23F00000"; -- line 45
+    crc32_1_data_in <=  x"23F00000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 46
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"7FFFFFFF"; -- line 47
+    crc32_1_data_in <=  x"7FFFFFFF";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"001C6000"; -- line 48
+    crc32_1_data_in <=  x"001C6000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"01C03C00"; -- line 49
+    crc32_1_data_in <=  x"01C03C00";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"7FFF0040"; -- line 50
+    crc32_1_data_in <=  x"7FFF0040";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"FFFFFFFF"; -- line 51
+    crc32_1_data_in <=  x"FFFFFFFF";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"AAAAAAAA"; -- line 52
+    crc32_1_data_in <=  x"AAAAAAAA";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"FC00E000"; -- line 53
+    crc32_1_data_in <=  x"FC00E000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000008"; -- line 54
+    crc32_1_data_in <=  x"00000008";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"05552000"; -- line 55
+    crc32_1_data_in <=  x"05552000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"E0016000"; -- line 56
+    crc32_1_data_in <=  x"E0016000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"82AA0555"; -- line 57
+    crc32_1_data_in <=  x"82AA0555";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"10000555"; -- line 58
+    crc32_1_data_in <=  x"10000555";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"05553000"; -- line 59
+    crc32_1_data_in <=  x"05553000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 60
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 61
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 62
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 63
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 64
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 65
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 66
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 67
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 68
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 69
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 70
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 71
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 72
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 73
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 74
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 75
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 76
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 77
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 78
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 79
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 80
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 81
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 82
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 83
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 84
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 85
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 86
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 87
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 88
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 89
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 90
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 91
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 92
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 93
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"50000000"; -- line 94
+    crc32_1_data_in <=  x"50000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"05555555"; -- line 95
+    crc32_1_data_in <=  x"05555555";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"33310000"; -- line 96
+    crc32_1_data_in <=  x"33310000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 97
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 98
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 99
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 100
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 101
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 102
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 103
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 104
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 105
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 106
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 107
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 108
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 109
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 110
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 111
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 112
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 113
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 114
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 115
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 116
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 117
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 118
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 119
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 120
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 121
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 122
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 123
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 124
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 125
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 126
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 127
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 128
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000000"; -- line 129
+    crc32_1_data_in <=  x"00000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"30000000"; -- line 130
+    crc32_1_data_in <=  x"30000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00000333"; -- line 131
+    crc32_1_data_in <=  x"00000333";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"F6F6FFF1"; -- line 132
+    crc32_1_data_in <=  x"F6F6FFF1";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111116"; -- line 133
+    crc32_1_data_in <=  x"11111116";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 134
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 135
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 136
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 137
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 138
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 139
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 140
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 141
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 142
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 143
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 144
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 145
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 146
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 147
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 148
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 149
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 150
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 151
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 152
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 153
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 154
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 155
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 156
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 157
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 158
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 159
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 160
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 161
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 162
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 163
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"11111111"; -- line 164
+    crc32_1_data_in <=  x"11111111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"00011111"; -- line 165
+    crc32_1_data_in <=  x"00011111";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"40000000"; -- line 166
+    crc32_1_data_in <=  x"40000000";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"16464646"; -- line 167
+    crc32_1_data_in <=  x"16464646";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+
+    wait for 100 ns;
+    bus_data_in(31 downto 0) <= x"1CC3851D"; -- line 168
+    crc32_1_data_in <=  x"1CC3851D";
+    bus_addr_in(15 downto 8) <= ADDR_RAM(15 downto 8);
+    bus_addr_in(7 downto 0) <= ramcounter(7 downto 0);
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_write_in <= '1';
+    crc32_1_clk_en <= '1';
+    wait for 30 ns;
+    bus_write_in <= '0';
+    crc32_1_clk_en <= '0';
+    wait until rising_edge(bus_write_ack_out);
+    ramcounter <= std_logic_vector(unsigned(ramcounter) + 1);
+
+  end loop;
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= std_logic_vector(to_unsigned(3,8));
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER ;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_SET_NUMCHIPS_CONFIGURED;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= std_logic_vector(to_unsigned(10,8));
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER ;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_SET_JTAG_CLOCK_CYCLE_LENGTH;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= std_logic_vector(to_unsigned(5,8));
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_SET_JTAG_CLOCK_TIME1;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= std_logic_vector(to_unsigned(0,8));
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER ;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_SET_JTAG_CLOCK_TIME2;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= std_logic_vector(to_unsigned(5,8));
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER ;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_SET_JTAG_SAMPLE_TIME1;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= std_logic_vector(to_unsigned(6,8));
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER ;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_SET_JTAG_SAMPLE_TIME2;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= std_logic_vector(to_unsigned(7,8));
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER ;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_SET_JTAG_SAMPLE_TIME3;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= std_logic_vector(to_unsigned(9,8));
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER ;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_SET_JTAG_SET_DATA_TIME;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+  
+  
+  wait for 500*8 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_START;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+--   wait until jtag_tck_out = '1';
+--   wait until jtag_tck_out = '0';
+--   --jtag_tdo_in <= '1';  
+--   wait until jtag_tck_out = '1';
+--   wait until jtag_tck_out = '0';
+--   --jtag_tdo_in <= '0';  
+
+
+
+trigger_jtag_write <= '1';
+wait until idle_out = '0';
+  trigger_jtag_write <= '0';
+
+wait until idle_out <= '1';
+trigger_jtag_write <= '1';
+wait until idle_out = '0';
+  trigger_jtag_write <= '0';
+
+
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= x"07"; -- trigger copy ram1b to ram1c on next read-/write-error/datachanged
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_DATA_REGISTER ;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';  
+
+  wait for 100 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_COPY_RAM1B1C_SINGLE_TRIGGER;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  broken <= '1';
+  
+wait until idle_out <= '1';
+trigger_jtag_write <= '1';
+wait until idle_out = '0';
+  trigger_jtag_write <= '0';  
+
+
+wait until idle_out <= '1';
+trigger_jtag_write <= '1';
+wait until idle_out = '0';
+  trigger_jtag_write <= '0';
+broken <= '0';
+    
+  wait until idle_out <= '1';
+trigger_jtag_write <= '1';
+wait until idle_out = '0';
+  trigger_jtag_write <= '0';
+  
+  wait until idle_out <= '1';
+trigger_jtag_write <= '1';
+wait until idle_out = '0';
+  trigger_jtag_write <= '0';
+  
+  wait until idle_out <= '1';
+trigger_jtag_write <= '1';
+wait until idle_out = '0';
+  trigger_jtag_write <= '0';
+
+wait until idle_out = '1';
+
+
+  wait for 500*8 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= M26C_CMD_COPY_TO_STATUS2;
+  bus_addr_in(15 downto 5) <= ADDR_CONTROL(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_CONTROL_CMD;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+
+  wait for 500*8 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= (others => '0');
+  bus_addr_in(15 downto 5) <= ADDR_STATUS2(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_STATUS2_UPDATING;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+  
+  wait for 500*8 ns;
+  bus_data_in(31 downto 8) <= (others => '0');
+  bus_data_in(7 downto 0) <= (others => '0'); -- set baseaddr to 0
+  bus_addr_in(15 downto 5) <= ADDR_STATUS2(15 downto 5);
+  bus_addr_in(4 downto 0) <= ADDR_STATUS2_RAM3B_BASEADDR;
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_write_in <= '1';
+  wait for 30 ns;
+  bus_write_in <= '0';
+
+-- read status2 ram (error counters etc...)
+  STATUS2LOOP: for i in 0 to 15 loop  
+    wait for 500*8 ns;
+    bus_data_in(31 downto 8) <= (others => '0');
+    bus_data_in(7 downto 0) <= (others => '0'); 
+    bus_addr_in(15 downto 5) <= ADDR_STATUS2(15 downto 5);
+    bus_addr_in(4 downto 0) <= std_logic_vector(unsigned(ADDR_STATUS2_RAM3B_BEGIN) + to_unsigned(i,4));
+    wait for 20 ns;
+    wait until CLK_IN = '1';
+    bus_read_in <= '1';
+    wait for 30 ns;
+    bus_read_in <= '0';
+  end loop;
+
+wait for 500*8 ns;
+  bus_addr_in(15 downto 5) <= ADDR_STATUS(15 downto 5);
+  bus_addr_in(4 downto 0) <= statuscounter;
+  statuscounter <=   std_logic_vector(unsigned(statuscounter)+1); 
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_read_in <= '1';
+  wait for 30 ns;
+  bus_read_in <= '0';
+wait for 500*8 ns;
+  bus_addr_in(15 downto 5) <= ADDR_STATUS(15 downto 5);
+  bus_addr_in(4 downto 0) <= statuscounter;
+  statuscounter <=   std_logic_vector(unsigned(statuscounter)+1); 
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_read_in <= '1';
+  wait for 30 ns;
+  bus_read_in <= '0';
+wait for 500*8 ns;
+  bus_addr_in(15 downto 5) <= ADDR_STATUS(15 downto 5);
+  bus_addr_in(4 downto 0) <= statuscounter;
+  statuscounter <=   std_logic_vector(unsigned(statuscounter)+1); 
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_read_in <= '1';
+  wait for 30 ns;
+  bus_read_in <= '0';
+wait for 500*8 ns;
+  bus_addr_in(15 downto 5) <= ADDR_STATUS(15 downto 5);
+  bus_addr_in(4 downto 0) <= statuscounter;
+  statuscounter <=   std_logic_vector(unsigned(statuscounter)+1); 
+  wait for 20 ns;
+  wait until CLK_IN = '1';
+  bus_read_in <= '1';
+  wait for 30 ns;
+  bus_read_in <= '0';
+--   
+-- wait for 500*8 ns;
+--   bus_data_in(31 downto 0) <= x"80FFFF01";
+--   bus_addr_in(3 downto 0) <= ADDR_DATA;
+--   wait for 20 ns;
+--   wait until CLK_IN = '1';
+--   bus_write_in <= '1';
+--   wait for 20 ns;
+--   bus_write_in <= '0';
+--   
+--   wait for 500*8 ns;
+--   bus_data_in(31 downto 0) <= x"00000020";
+--   bus_addr_in(3 downto 0) <= ADDR_LENGTH;
+--   wait for 20 ns;
+--   wait until CLK_IN = '1';
+--   bus_write_in <= '1';
+--   wait for 20 ns;
+--   bus_write_in <= '0';
+--   
+--   wait for 500*8 ns;
+--   bus_data_in(3 downto 0) <= CMD_SHIFT_DR;
+--   bus_addr_in(3 downto 0) <= ADDR_CMD;
+--   wait for 20 ns;
+--   wait until CLK_IN = '1';
+--   bus_write_in <= '1';
+--   wait for 20 ns;
+--   bus_write_in <= '0';
+--   wait until jtag_tck_out = '1';
+--   wait until jtag_tck_out = '0';
+--   --jtag_tdo_in <= '1';  
+--   wait until jtag_tck_out = '1';
+--   wait until jtag_tck_out = '0';
+--   --jtag_tdo_in <= '0';  
+-- 
+-- wait for 60*8 us;
+--   wait for 500*8 ns;
+--   bus_data_in(3 downto 0) <= "0000";
+--   bus_addr_in(3 downto 0) <= ADDR_DATA;
+--   wait for 20 ns;
+--   wait until CLK_IN = '1';
+--   bus_write_in <= '1';
+--   wait for 20 ns;
+--   bus_write_in <= '0';
+-- 
+--   wait for 500*8 ns;
+--   bus_data_in(3 downto 0) <= CMD_UPDATE_DR;
+--   bus_addr_in(3 downto 0) <= ADDR_CMD;
+--   wait for 20 ns;
+--   wait until CLK_IN = '1';
+--   bus_write_in <= '1';
+--   wait for 20 ns;
+--   bus_write_in <= '0';
+--   
+-- wait for 30*8 us;
+--   bus_data_in(3 downto 0) <= "0000";
+--   bus_addr_in(3 downto 0) <= ADDR_DATA;
+--   wait for 20 ns;
+--   wait until CLK_IN = '1';
+--   bus_read_in <= '1';
+--   wait for 20 ns;
+--   bus_read_in <= '0';
+-- 
+-- wait for 30*8 us;
+--   jtag_tdo_in <= '1';  
+--   bus_data_in(3 downto 0) <= CMD_RESET_JTAG;
+--   bus_addr_in(3 downto 0) <= ADDR_CMD;
+--   wait for 20 ns;
+--   wait until CLK_IN = '1';
+--   bus_write_in <= '1';
+--   wait for 20 ns;
+--   bus_write_in <= '0';
+
+  
+--   cmd_in <= CMD_NONE;  
+--   wait until READY_FOR_CMD_OUT = '1';
+--   data_in <= '1';
+--   cmd_in <= CMD_SHIFT_DR;
+--   wait for 30 ns;
+--   cmd_in <= CMD_NONE;
+--   wait until jtag_tck_out = '1';
+--   wait until jtag_tck_out = '0';
+--   jtag_tdo_in <= '1';
+--   wait until READY_FOR_CMD_OUT = '1';
+--   data_in <= '1';
+--   cmd_in <= CMD_SHIFT_DR;
+--   wait for 30 ns;
+--   cmd_in <= CMD_NONE;  
+--   wait until jtag_tck_out = '1';
+--   wait until jtag_tck_out = '0';
+--   jtag_tdo_in <= '0';
+--   wait until READY_FOR_CMD_OUT = '1';
+--   cmd_in <= CMD_UPDATE_DR;
+--   wait for 30 ns;
+--   cmd_in <= CMD_NONE;  
+--   wait until READY_FOR_CMD_OUT = '1';
+--   wait for 30 ns;
+--   cmd_in <= CMD_NONE;
+   wait;
+end process;
+testdriver_clk : process
+begin
+  clk_in <= '0';
+  wait for 5 ns;
+  clk_in <= '1';
+  wait for 5 ns;
+end process;
+
+
+end architecture; 
diff --git a/vhdl/code/tb/jtag_write_m10_test.vhd b/vhdl/code/tb/jtag_write_m10_test.vhd
new file mode 100644 (file)
index 0000000..26cbe14
--- /dev/null
@@ -0,0 +1,363 @@
+LIBRARY ieee;
+use ieee.std_logic_1164.all;
+USE IEEE.std_logic_ARITH.ALL;
+USE IEEE.std_logic_UNSIGNED.ALL;
+--USE IEEE.numeric_std.ALL;
+
+library work;
+--use work.trb_net_std.all;
+--use work.trb_net_components.all;
+-- use work.trb_net16_hub_func.all;
+--use work.version.all;
+use work.jtag_constants.all;
+
+entity jtag_write_m10_test is
+end entity;
+
+architecture jtag_write_m10_test_arch of jtag_write_m10_test is
+component jtag_write_m10 is
+  port (
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+    RAM_JTAG_REGISTERS_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+    RAM_JTAG_REGISTERS_D_IN : in std_logic_vector(31 downto 0);
+    
+    --RAM_JTAG_REGISTERS_READ_A_OUT : out std_logic_vector(RAM_JTAG_REGISTERS_READ_DEPTH-1 downto 0);
+    --RAM_JTAG_REGISTERS_READ_D_OUT : out std_logic_vector(31 downto 0);
+    -- number of next chip which is not removed from the jtag chain. for chip i ( in range 0...N) this next chip is
+    -- encoded by the bits NEXT_NOT_REMOVED(i*MAX_NUMCHIPS_LD + MAX_NUMCHIPS_LD-1 downto i*MAX_NUMCHIPS_LD) 
+    -- which should be interpreted as unsigned
+    NEXT_NOT_REMOVED_IN : in std_logic_vector(MAX_NUMCHIPS_LD*MAX_NUMCHIPS-1 downto 0);
+    
+    BEGIN_JTAGBITCALC_IN   : in std_logic;
+    TRIGGER_BEGIN_WRITE_IN : in std_logic;
+    
+    ENABLE_COMPARE_OUT : out std_logic;
+    FINISH_COMPARE_OUT : out std_logic;
+    CHIP_COUNTER_OUT : out std_logic_vector(MAX_NUMCHIPS_LD-1 downto 0);
+    REG_COUNTER_OUT : out std_logic_vector(MAX_REGISTERS_LD-1 downto 0);
+    ENABLE_JTAG_CLOCK_OUT : out std_logic;
+    TMS_OUT : out std_logic;
+    TDI_OUT : out std_logic;
+    
+    LAST_ERROR_CODE_OUT : out std_logic_vector(2 downto 0)
+    
+    
+  );
+end component;
+
+
+component CRC_32 is
+  port(
+    CLK     : in  std_logic;
+    RESET   : in std_logic;
+    CLK_EN  : in std_logic;
+    DATA_IN : in  std_logic_vector(31 downto 0);
+    CRC_OUT : out std_logic_vector(31 downto 0);
+    CRC_match : out std_logic
+    );
+end component;
+component ram_dp is
+  generic(
+    depth : integer := RAM_JTAG_REGISTERS_DEPTH;
+    width : integer := 32
+    );
+  port(
+    CLK   : in  std_logic;
+    wr1   : in  std_logic;
+    a1    : in  std_logic_vector(depth-1 downto 0);
+    dout1 : out std_logic_vector(width-1 downto 0);
+    din1  : in  std_logic_vector(width-1 downto 0);
+    a2    : in  std_logic_vector(depth-1 downto 0);
+    dout2 : out std_logic_vector(width-1 downto 0)
+    );
+end component;
+
+signal chip : std_logic_vector(3 downto 0);
+signal CLK, RESET : std_logic;
+signal ram_read_addr, ram_write_addr : std_logic_vector(RAM_JTAG_REGISTERS_DEPTH-1 downto 0);
+signal ram_read_data, ram_write_datain, ram_write_dataout : std_logic_vector(31 downto 0);
+signal ram_write_wr : std_logic;
+signal ramcounter : std_logic_vector(7 downto 0);
+signal next_not_removed : std_logic_vector(MAX_NUMCHIPS_LD*MAX_NUMCHIPS-1 downto 0);
+signal begin_jtagbitcalc, trigger_begin_write: std_logic;
+begin
+
+the_jtag_write_m10 : jtag_write_m10 port map (CLK_IN => CLK, RESET_IN => RESET,RAM_JTAG_REGISTERS_A_OUT=> ram_read_addr, RAM_JTAG_REGISTERS_D_IN => ram_read_data, NEXT_NOT_REMOVED_IN => next_not_removed, BEGIN_JTAGBITCALC_IN => begin_jtagbitcalc, TRIGGER_BEGIN_WRITE_IN => trigger_begin_write, ENABLE_COMPARE_OUT => open, FINISH_COMPARE_OUT => open, CHIP_COUNTER_OUT => open, REG_COUNTER_OUT => open, ENABLE_JTAG_CLOCK_OUT => open, TMS_OUT => open, TDI_OUT => open, LAST_ERROR_CODE_OUT => open);
+
+the_ram : ram_dp generic map(
+                                     depth => RAM_JTAG_REGISTERS_DEPTH,
+                                     width => 32
+                                     )
+                 port map ( CLK=> CLK, wr1=>ram_write_wr, a1 =>ram_write_addr, dout1=>ram_write_dataout,  din1=>ram_write_datain, a2=>ram_read_addr, dout2=>ram_read_data);
+
+test_process : process
+begin
+  trigger_begin_write <= '0';
+  begin_jtagbitcalc <= '0';
+  ram_write_wr <= '0';
+  chip <=  (others =>'0');
+  ramcounter <=  (others =>'0');
+  next_not_removed <=  (others =>'0');
+
+  
+  RESET <= '1';
+  wait for 40 ns;
+  RESET <= '0';
+  wait for 20 ns;
+
+  ramcounter <= ramcounter + 1;
+  
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00050002"; -- numregs, IRLen
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00000000"; -- reserved
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000000a"; -- Ptr1
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00000029"; -- Length1 = 41 bit
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000000c"; -- Ptr2
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00000040"; -- Length1 = 64 bit
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00000029"; -- CRC-32
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000001E"; -- IR1
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000000E"; -- IR2
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000001F"; -- IR3 (BYPASS)
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0F0F0F0F"; -- DR1
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0F0F0F0F"; -- DR1
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"11111111"; -- DR2
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"11111111"; -- DR2
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000000E"; -- CRC-32
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  
+
+
+
+
+
+
+
+
+  ramcounter <= (others => '0');
+  ram_write_wr <= '0';
+  chip <= "0001";
+  
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00050001"; -- numregs, IRLen
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00000000"; -- reserved
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000000a"; -- Ptr1
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00000029"; -- Length1 = 41 bit
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000000c"; -- Ptr2
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00000040"; -- Length1 = 64 bit
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00000029"; -- CRC-32
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000001E"; -- IR1
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000000E"; -- IR2
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000001F"; -- IR3 (BYPASS)
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"AAAAAAAA"; -- DR1
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"AAAAAAAA"; -- DR1
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00FF00FF"; -- DR2
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"00FF00FF"; -- DR2
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ramcounter <= ramcounter + 1;
+  
+  ram_write_addr(11 downto 8) <= chip;
+  ram_write_addr(7 downto 0) <= ramcounter;
+  ram_write_datain <= x"0000000E"; -- CRC-32
+  ram_write_wr <= '1';
+  wait for 20 ns;
+  ram_write_wr <= '0';  
+  
+  
+  next_not_removed(MAX_NUMCHIPS_LD-1 downto 0) <= "0001";
+  next_not_removed(MAX_NUMCHIPS_LD+MAX_NUMCHIPS_LD-1 downto MAX_NUMCHIPS_LD) <= "0000";
+  
+    
+  trigger_begin_write <= '1';
+  wait for 20 ns;
+  while(true) loop
+    begin_jtagbitcalc <= '1';
+    wait for 20 ns;
+    begin_jtagbitcalc <= '0';
+    wait for 200 ns;
+  end loop;
+
+
+  
+end process;
+
+testdriver_clk : process
+begin
+  CLK <= '0';
+  wait for 10 ns;
+  CLK <= '1';
+  wait for 10 ns;
+end process;
+end architecture;
\ No newline at end of file
diff --git a/vhdl/jcb_trb.ucf b/vhdl/jcb_trb.ucf
new file mode 100644 (file)
index 0000000..26f3a93
--- /dev/null
@@ -0,0 +1,227 @@
+
+  NET  RESET_VIRT        LOC = AF16;
+  NET  TLK_CLK   LOC = AG16;
+  NET  TLK_ENABLE        LOC = R24 | IOSTANDARD = "LVTTL";
+  NET  TLK_LCKREFN       LOC = L28 | IOSTANDARD = "LVTTL";
+  NET  TLK_LOOPEN        LOC = R19 | IOSTANDARD = "LVTTL";
+  NET  TLK_PRBSEN        LOC = H32 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<0>        LOC = G30 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<1>        LOC = G31 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<2>        LOC = J29 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<3>        LOC = J30 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<4>        LOC = E32 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<5>        LOC = E33 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<6>        LOC = N25 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<7>        LOC = P26 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<8>        LOC = P22 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<9>        LOC = R21 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<10>       LOC = F33 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<11>       LOC = F34 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<12>       LOC = K28 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<13>       LOC = K29 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<14>       LOC = G32 | IOSTANDARD = "LVTTL";
+  NET  TLK_RXD<15>       LOC = G33 | IOSTANDARD = "LVTTL";
+  NET  TLK_RX_CLK        LOC = AF18;
+  NET  TLK_RX_DV         LOC = M30 | IOSTANDARD = "LVTTL";
+  NET  TLK_RX_ER         LOC = P20 | IOSTANDARD = "LVTTL";
+  NET  TLK_TXD<0>        LOC = H27 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<1>        LOC = H28 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<2>        LOC = C32 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<3>        LOC = D32 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<4>        LOC = J27 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<5>        LOC = K27 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<6>        LOC = M25 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<7>        LOC = M26 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<8>        LOC = N22 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<9>        LOC = N23 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<10>     LOC = H29 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<11>     LOC = H30 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<12>     LOC = C33 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<13>     LOC = C34 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<14>     LOC = D34 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TXD<15>     LOC = E34 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TX_EN         LOC = L29 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  TLK_TX_ER         LOC = P24 | IOSTANDARD = "LVTTL" | SLEW=FAST | DRIVE = 12;
+  NET  VIRT_CLK          LOC = H19 | IOSTANDARD = "LVDS_25" | DIFF_TERM = TRUE;
+  NET  VIRT_CLKb  LOC = H18 | IOSTANDARD = "LVDS_25" | DIFF_TERM = TRUE;
+  NET  SFP_TX_DIS LOC = N27 | IOSTANDARD = "LVTTL";
+  NET  SFP_LOS    LOC = M27 | IOSTANDARD = "LVTTL";
+#
+  NET  ETRAX_IRQ   LOC ="AK12"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<0>    LOC ="AL5"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<1>    LOC ="AL4"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<2>    LOC ="AK4"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<3>    LOC ="AJ4"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<4>    LOC ="AP4"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<5>    LOC ="AN4"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<6>    LOC ="AD10"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<7>    LOC ="AD9"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<8>    LOC ="AN14"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<9>    LOC ="AP14"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<10>   LOC ="AJ6"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<11>   LOC ="AJ5"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<12>   LOC ="AK7"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<13>   LOC ="AJ7"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<14>   LOC ="AN3"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<15>   LOC ="AN2"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<16>   LOC ="AK13"| IOSTANDARD = "LVTTL";
+  NET  FS_PB<17>   LOC ="AL13"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<0>    LOC ="AL6"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<1>    LOC ="AK6"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<2>    LOC ="AL8"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<3>    LOC ="AK8"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<4>    LOC ="AH8"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<5>    LOC ="AH7"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<6>    LOC ="AM13"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<7>    LOC ="AN13"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<8>    LOC ="AM6"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<9>    LOC ="AM5"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<10>   LOC ="AJ10"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<11>   LOC ="AJ9"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<12>   LOC ="AP5"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<13>   LOC ="AN5"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<14>   LOC ="AP6"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<15>   LOC ="AP7"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<16>   LOC ="AM8"| IOSTANDARD = "LVTTL";
+  NET  FS_PC<17>   LOC ="AN8"| IOSTANDARD = "LVTTL";
+
+   NET  ONEWIRE       LOC ="AK17"| IOSTANDARD = "LVCMOS25";
+   NET  ADO_TTL<0>       LOC ="AL11"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<1>       LOC ="AL10"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<2>       LOC ="AE11"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<3>       LOC ="AF11"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<4>       LOC ="AM12"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<5>       LOC ="AM11"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<6>       LOC ="AL9"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<7>       LOC ="AK9"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<8>       LOC ="AP11"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<9>       LOC ="AP10"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<10>      LOC ="AH10"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<11>      LOC ="AG10"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<12>      LOC ="AN12"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<13>      LOC ="AP12"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<14>      LOC ="AP9"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<15>      LOC ="AN9"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<16>      LOC ="AH12"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<17>      LOC ="AG11"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<18>      LOC ="AN7"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<19>      LOC ="AM7"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<20>      LOC ="AN10"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<21>      LOC ="AM10"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<22>      LOC ="AF10"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<23>      LOC ="AE9"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<24>      LOC ="AJ12"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<25>      LOC ="L33"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<26>      LOC ="L34"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<27>      LOC ="M32"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<28>      LOC ="M33"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<29>      LOC ="D5"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<30>      LOC ="G7"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<31>      LOC ="G6"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<32>      LOC ="E14"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<33>      LOC ="D14"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<34>      LOC ="AL20"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<35>      LOC ="AJ15"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<36>      LOC ="AJ14"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<37>      LOC ="AG20"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<38>      LOC ="AH20"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<39>      LOC ="AG15"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<40>      LOC ="AH14"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<41>      LOC ="AL16"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<42>      LOC ="AK16"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<43>      LOC ="C28"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<44>      LOC ="L26"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<45>      LOC ="B32"| IOSTANDARD = "LVTTL";
+   NET  ADO_TTL<46>      LOC ="B33"| IOSTANDARD = "LVTTL";
+   NET  DBAD    LOC ="M28"| IOSTANDARD = "LVTTL";
+   NET  DGOOD   LOC ="H34"| IOSTANDARD = "LVTTL";
+   NET  DINT    LOC ="L31"| IOSTANDARD = "LVTTL";
+   NET  DWAIT    LOC ="H33"| IOSTANDARD = "LVTTL";
+   NET  ADO_LV<0>   LOC ="AC9" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<1>   LOC ="AC8" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<2>   LOC ="AG3" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<3>   LOC ="AF3" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<4>   LOC ="AF6" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<5>   LOC ="AE6" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<6>   LOC ="AF5" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<7>   LOC ="AF4" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<8>   LOC ="AL1" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<9>   LOC ="AK1" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<10>    LOC ="AJ2" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<11>    LOC ="AJ1" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<12>    LOC ="AB6" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<13>    LOC ="AB5" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<14>    LOC ="AC3" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<15>    LOC ="AC2" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<16>    LOC ="Y11" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<17>    LOC ="AA11" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<18>    LOC ="AD2" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<19>    LOC ="AD1" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<20>    LOC ="Y14" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<21>    LOC ="AA13" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<22>    LOC ="AC5" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<23>    LOC ="AC4" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<24>    LOC ="AF1" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<25>    LOC ="AE1" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<26>    LOC ="AE3" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<27>    LOC ="AE2" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<28>    LOC ="AD6" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<29>    LOC ="AD5" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<30>    LOC ="AC7" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<31>    LOC ="AB8" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<32>    LOC ="Y16" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<33>    LOC ="AA15" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<34>    LOC ="AE4" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<35>    LOC ="AD4" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<36>    LOC ="AH3" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<37>    LOC ="AH2" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<38>    LOC ="AG2" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<39>    LOC ="AG1" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<40>    LOC ="AK3" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<41>    LOC ="AK2" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<42>    LOC ="AF8" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<43>    LOC ="AE8" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<44>    LOC ="AH5" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<45>    LOC ="AH4" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<46>    LOC ="AB13" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<47>    LOC ="AB12" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<48>    LOC ="AM2" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<49>    LOC ="AM1" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<50>    LOC ="AG8" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<51>    LOC ="AG7" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<52>   LOC ="AM3" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<53>   LOC ="AL3" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<54>   LOC ="AK22" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<55>   LOC ="AK23" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<56>   LOC ="AL28" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+   NET  ADO_LV<57>   LOC ="AL29" | IOSTANDARD = "LVDS_25" | SLEW = "FAST";
+#    NET  ADO_LV<58>   LOC ="AP25";
+#    NET  ADO_LV<59>   LOC ="AP26";
+#    NET  ADO_LV<60>   LOC ="AJ27";
+#    NET  ADO_LV<61>   LOC ="AH27";
+
+#
+
+
+NET "VIRT_CLK" TNM_NET = "VIRT_CLK";
+TIMESPEC "TS_CLK" = PERIOD "VIRT_CLK" 10 ns HIGH 50 %;
+ NET "TLK_CLK" TNM_NET = "TLK_CLK";
+ TIMESPEC "TS_TLK_CLK" = PERIOD "TLK_CLK" 10 ns HIGH 50 %;
+ NET "TLK_RX_CLK" TNM_NET = "TLK_RX_CLK";
+ TIMESPEC "TS_TLK_RX_CLK" = PERIOD "TLK_RX_CLK" 10 ns HIGH 50 %;
+
+
+ INST "TLK_TXD<*>" TNM = "TLK_TX";
+ INST "TLK_TX_EN" TNM = "TLK_TX";
+ INST "TLK_RXD<*>" TNM = "TLK_RX";
+ INST "TLK_RX_DV" TNM = "TLK_RX";
+ INST "TLK_RX_ER" TNM = "TLK_RX";
+
+ TIMEGRP "TLK_TX" OFFSET = OUT 7 ns AFTER "TLK_CLK" HIGH;
+ TIMEGRP "TLK_RX" OFFSET = IN 3.2 ns VALID 6 ns BEFORE "TLK_RX_CLK";
+
+
+#INST "ADO_LV<*>" TNM = "VIRT_CLK_IN";
+#INST "ADO_LV<*>" TNM = "VIRT_CLK_OUT";
+#TIMEGRP "VIRT_CLK_OUT" OFFSET = OUT 9 ns AFTER "VIRT_CLK" HIGH;
+#TIMEGRP "VIRT_CLK_IN" OFFSET = IN 3.2 ns VALID 6 ns BEFORE "VIRT_CLK";
diff --git a/vhdl/jcb_trb.vhd b/vhdl/jcb_trb.vhd
new file mode 100644 (file)
index 0000000..cd5558a
--- /dev/null
@@ -0,0 +1,1531 @@
+       -- ***************************************************************************
+       --                                                                           *
+       --      MAPS Addon to TRB communication                                          *
+       -----------------------------------------------------------------------------*
+       --  Version 5.0                                                              *
+       -----------------------------------------------------------------------------*
+       --                                                                           *
+       --              The addon should communicate over the LVDS lines with the TRB2 FPGA  *
+       --      The lines are not LVDS, but TTL - LVCMOS25                           *
+       --                                                                           *
+       --                                                                           *
+       --     R1 - R4      32 bit internal registers                                *
+       --   reg1 - reg4    16 bit internal registers                                *
+       --     ra - rd      1  bit internal registers                                *
+       --    ------------------------------------------------------------------     *
+       --                                                                           *
+       --                                                                           *
+       --                                                                           *
+       --     IN/OUT ports use 19 bits each (med_IC)                                *
+       --                                                                           *
+       --     0   ..  15     16     17     18                                       *
+       --       DATA        RDY    CTRL   CLK                                       *
+       --                                                                           *
+       --                                                                           *
+       --                                                                           *
+       -- xxxxxxxxxxxxxxxxxxxxxx specific xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx*
+       --                                                                           *
+       --     use a reset handler                                                   *
+       --                                                                           *
+       -- ***************************************************************************
+
+
+
+       LIBRARY ieee;
+       use ieee.std_logic_1164.all;
+       USE IEEE.numeric_std.ALL;
+
+       --USE IEEE.std_logic_UNSIGNED.ALL;
+
+       Library UNISIM;
+       use UNISIM.vcomponents.all;
+
+       library work;
+       use work.trb_net_std.all;
+       use work.mvd_net.all;
+       use work.trb_net_components.all;
+       use work.monitor_config.all;
+
+
+       entity jcb_trb is
+               generic(
+                       external_trigger : std_logic := '0'
+               );
+               port(
+
+                   VIRT_CLK       :  in std_logic;
+                   VIRT_CLKb      :  in std_logic;
+
+                   RESET_VIRT     :  in std_logic;
+                   
+                   ADO_LV      :  out    std_logic_vector(57 downto 0);
+
+                   ONEWIRE        :  inout std_logic;
+
+                   TLK_CLK     : in  std_logic;
+                   TLK_ENABLE  : out std_logic;
+                   TLK_LCKREFN : out std_logic;
+                   TLK_LOOPEN  : out std_logic;
+                   TLK_PRBSEN  : out std_logic;
+                   TLK_RXD     : in  std_logic_vector(15 downto 0);
+                   TLK_RX_CLK  : in  std_logic;
+                   TLK_RX_DV   : in  std_logic;
+                   TLK_RX_ER   : in  std_logic;
+                   TLK_TXD     : out std_logic_vector(15 downto 0);
+                   TLK_TX_EN   : out std_logic;
+                   TLK_TX_ER   : out std_logic;
+                   SFP_LOS     : in  std_logic;
+                   SFP_TX_DIS  : out std_logic;
+
+                   DGOOD   : out std_logic;
+                   DINT    : out std_logic;
+                   DBAD    : out std_logic;
+                   DWAIT   : out std_logic;
+                   
+                   --unused
+                   FS_PB          : out   std_logic_vector(17 downto 0);
+                   FS_PC          : inout std_logic_vector(17 downto 0);
+                   ETRAX_IRQ      : out   std_logic;
+                   ADO_TTL        : in    std_logic_vector(46 downto 0)
+
+       --          JTAG1_TMS_OUT : out std_logic;
+       --          JTAG1_TCK_OUT : out std_logic;
+       --          JTAG1_TDI_OUT : out std_logic;
+       --          JTAG1_TDO_IN  : in  std_logic;
+       --          JTAG2_TMS_OUT : out std_logic;
+       --          JTAG2_TCK_OUT : out std_logic;
+       --          JTAG2_TDI_OUT : out std_logic;
+       --          JTAG2_TDO_IN  : in  std_logic;
+       --
+       --
+       --          JTAG3_TMS_OUT : out std_logic;
+       --          JTAG3_TCK_OUT : out std_logic;
+       --          JTAG3_TDI_OUT : out std_logic;
+       --          JTAG3_TDO_IN  : in  std_logic;
+
+       --          event_trigger : in std_logic;
+
+                   -- MAPS
+       --          MAPS_CLK_out : out std_logic;
+       --          MAPS_start_out : out std_logic;
+       --          MAPS_reset_out : out std_logic
+               );
+       end entity;
+
+
+
+
+
+
+
+
+
+       architecture basic of jcb_trb is
+
+                   -- JTAG inputs/outputs
+       signal      JTAG1_TMS_OUT : std_logic;
+       signal      JTAG1_TCK_OUT : std_logic;
+       signal      JTAG1_TDI_OUT : std_logic;
+       signal      JTAG1_TDO_IN  : std_logic;
+       signal      JTAG2_TMS_OUT : std_logic;
+       signal      JTAG2_TCK_OUT : std_logic;
+       signal      JTAG2_TDI_OUT : std_logic;
+       signal      JTAG2_TDO_IN  : std_logic;
+
+       signal      JTAG3_TMS_OUT : std_logic;
+       signal      JTAG3_TCK_OUT : std_logic;
+       signal      JTAG3_TDI_OUT : std_logic;
+       signal      JTAG3_TDO_IN  : std_logic;
+
+       signal      event_trigger : std_logic;
+        -- MAPS outputs
+signal     MAPS_CLK1_out : std_logic;
+signal     MAPS_CLK2_out : std_logic;
+signal     MAPS_CLK3_out : std_logic;
+signal     MAPS_CLK1_out_int : std_logic; -- internal signal for ODDR
+signal     MAPS_CLK1_out_int2 : std_logic; -- internal signal for ODDR
+signal     MAPS_CLK2_out_int : std_logic; -- internal signal for ODDR
+signal     MAPS_CLK2_out_int2 : std_logic; -- internal signal for ODDR
+signal     MAPS_CLK3_out_int : std_logic; -- internal signal for ODDR
+signal     MAPS_CLK3_out_int2 : std_logic; -- internal signal for ODDR
+signal     MAPS_start1_out : std_logic;
+signal     MAPS_start2_out : std_logic;
+signal     MAPS_start3_out : std_logic;
+signal     MAPS_reset1_out : std_logic;
+signal     MAPS_reset2_out : std_logic;
+signal     MAPS_reset3_out : std_logic;
+
+
+
+
+       -- the ENDPOINT signals
+       signal ep_MED_DATAREADY_OUT            :  std_logic;
+       signal ep_MED_DATA_OUT                 :  std_logic_vector (c_DATA_WIDTH-1 downto 0);
+       signal ep_MED_PACKET_NUM_OUT           :  std_logic_vector (c_NUM_WIDTH-1 downto 0);
+       signal ep_MED_READ_IN                  :  std_logic;
+       signal ep_MED_DATAREADY_IN             :  std_logic;
+       signal ep_MED_DATA_IN                  :  std_logic_vector (c_DATA_WIDTH-1 downto 0);
+       signal ep_MED_PACKET_NUM_IN            :  std_logic_vector (c_NUM_WIDTH-1 downto 0);
+       signal ep_MED_READ_OUT                 :  std_logic;
+       signal ep_MED_STAT_OP_IN               :  std_logic_vector(15 downto 0);
+       signal ep_MED_CTRL_OP_OUT              :  std_logic_vector(15 downto 0);
+       signal ep_TRG_TIMING_TRG_RECEIVED_IN   :  std_logic;
+       signal ep_LVL1_TRG_DATA_VALID_OUT      :  std_logic;    --trigger type, number, code, information are valid
+       signal ep_LVL1_VALID_TIMING_TRG_OUT    :  std_logic;    --valid timing trigger has been received
+       signal ep_LVL1_VALID_NOTIMING_TRG_OUT  :  std_logic;    --valid trigger without timing trigger has been received
+       signal ep_LVL1_INVALID_TRG_OUT         :  std_logic;    --the current trigger is invalid (e.g. no timing trigger, no LVL1...)
+       signal ep_LVL1_TRG_TYPE_OUT            :  std_logic_vector(3 downto 0);
+       signal ep_LVL1_TRG_NUMBER_OUT          :  std_logic_vector(15 downto 0);
+       signal ep_LVL1_TRG_CODE_OUT            :  std_logic_vector(7 downto 0);
+       signal ep_LVL1_TRG_INFORMATION_OUT     :  std_logic_vector(23 downto 0);
+       signal ep_LVL1_INT_TRG_NUMBER_OUT      :  std_logic_vector(15 downto 0);  --internally generated trigger number, for informational uses only
+       signal ep_FEE_TRG_RELEASE_IN           :  std_logic_vector(c_DATA_INTERFACE_NUMBER-1 downto 0);
+       signal ep_FEE_TRG_STATUSBITS_IN        :  std_logic_vector(c_DATA_INTERFACE_NUMBER*32-1 downto 0);
+       signal ep_FEE_DATA_IN                  :  std_logic_vector(c_DATA_INTERFACE_NUMBER*32-1 downto 0);
+       signal ep_FEE_DATA_WRITE_IN            :  std_logic_vector(c_DATA_INTERFACE_NUMBER-1 downto 0);
+       signal ep_FEE_DATA_FINISHED_IN         :  std_logic_vector(c_DATA_INTERFACE_NUMBER-1 downto 0);
+       signal ep_FEE_DATA_ALMOST_FULL_OUT     :  std_logic_vector(c_DATA_INTERFACE_NUMBER-1 downto 0);
+       signal ep_REGIO_COMMON_STAT_REG_IN     :  std_logic_vector(std_COMSTATREG*32-1 downto 0) := (others => '0');
+       signal ep_REGIO_COMMON_CTRL_REG_OUT    :  std_logic_vector(std_COMCTRLREG*32-1 downto 0);
+       signal ep_REGIO_COMMON_STAT_STROBE_OUT :  std_logic_vector(std_COMSTATREG-1 downto 0);
+       signal ep_REGIO_COMMON_CTRL_STROBE_OUT :  std_logic_vector(std_COMCTRLREG-1 downto 0);
+       signal ep_REGIO_STAT_REG_IN            :  std_logic_vector(2**(c_REGIO_NUM_STAT_REGS)*32-1 downto 0) := (others => '0');
+       signal ep_REGIO_CTRL_REG_OUT           :  std_logic_vector(2**(c_REGIO_NUM_CTRL_REGS)*32-1 downto 0);
+       signal ep_REGIO_STAT_STROBE_OUT        :  std_logic_vector(2**(c_REGIO_NUM_STAT_REGS)-1 downto 0);
+       signal ep_REGIO_CTRL_STROBE_OUT        :  std_logic_vector(2**(c_REGIO_NUM_CTRL_REGS)-1 downto 0);
+       signal ep_BUS_ADDR_OUT                 :  std_logic_vector(16-1 downto 0);
+       signal ep_BUS_DATA_OUT                 :  std_logic_vector(32-1 downto 0);
+       signal ep_BUS_READ_ENABLE_OUT          :  std_logic;
+       signal ep_BUS_WRITE_ENABLE_OUT         :  std_logic;
+       signal ep_BUS_TIMEOUT_OUT              :  std_logic;
+       signal ep_BUS_DATA_IN                  :  std_logic_vector(32-1 downto 0) := (others => '0');
+       signal ep_BUS_DATAREADY_IN             :  std_logic                       := '0';
+       signal ep_BUS_WRITE_ACK_IN             :  std_logic                       := '0';
+       signal ep_BUS_NO_MORE_DATA_IN          :  std_logic                       := '0';
+       signal ep_BUS_UNKNOWN_ADDR_IN          :  std_logic                       := '0';
+       signal ep_ONEWIRE_INOUT                :  std_logic;  --temperature sensor
+       signal ep_ONEWIRE_MONITOR_IN           :  std_logic := '0';
+       signal ep_ONEWIRE_MONITOR_OUT          :  std_logic;
+       signal ep_REGIO_VAR_ENDPOINT_ID        :  std_logic_vector (15 downto 0) := (others => '0');
+       signal ep_TIME_GLOBAL_OUT              :  std_logic_vector (31 downto 0); --global time, microseconds
+       signal ep_TIME_LOCAL_OUT               :  std_logic_vector ( 7 downto 0); --local time running with chip frequency
+       signal ep_TIME_SINCE_LAST_TRG_OUT      :  std_logic_vector (31 downto 0); --local time, resetted with each trigger
+       signal ep_TIME_TICKS_OUT               :  std_logic_vector ( 1 downto 0); --bit 1 ms-tick, 0 us-tick
+       signal ep_STAT_DEBUG_IPU               :  std_logic_vector (31 downto 0);
+       signal ep_STAT_DEBUG_1                 :  std_logic_vector (31 downto 0);
+       signal ep_STAT_DEBUG_2                 :  std_logic_vector (31 downto 0);
+       signal ep_STAT_DEBUG_DATA_HANDLER_OUT  :  std_logic_vector (31 downto 0);
+       signal ep_STAT_DEBUG_IPU_HANDLER_OUT   :  std_logic_vector (31 downto 0);
+       signal ep_CTRL_MPLEX                   :  std_logic_vector (31 downto 0) := (others => '0');
+       signal ep_IOBUF_CTRL_GEN               :  std_logic_vector (4*32-1 downto 0) := (others => '0');
+       signal ep_STAT_ONEWIRE                 :  std_logic_vector (31 downto 0);
+       signal ep_STAT_ADDR_DEBUG              :  std_logic_vector (15 downto 0);
+       signal ep_DEBUG_LVL1_HANDLER_OUT       :  std_logic_vector (15 downto 0);
+
+
+       -- the med IC communicator signals
+       signal ic_MED_DATA_IN        : std_logic_vector(c_DATA_WIDTH-1 downto 0) := (others => '0');
+       signal ic_MED_PACKET_NUM_IN  : std_logic_vector(c_NUM_WIDTH-1 downto 0) := (others => '0');
+       signal ic_MED_DATAREADY_IN   : std_logic := '0';
+       signal ic_MED_READ_OUT       : std_logic := '0';
+       signal ic_MED_DATA_OUT       : std_logic_vector(c_DATA_WIDTH-1 downto 0) := (others => '0');
+       signal ic_MED_PACKET_NUM_OUT : std_logic_vector(c_NUM_WIDTH-1 downto 0) := (others => '0');
+       signal ic_MED_DATAREADY_OUT  : std_logic := '0';
+       signal ic_MED_READ_IN        : std_logic := '0';
+       signal ic_DATA_OUT           : std_logic_vector(15 downto 0) := (others => '0');
+       signal ic_DATA_VALID_OUT     : std_logic := '0';
+       signal ic_DATA_CTRL_OUT      : std_logic := '0';
+       signal ic_DATA_CLK_OUT       : std_logic := '0';
+       signal ic_DATA_IN            : std_logic_vector(15 downto 0) := (others => '0');
+       signal ic_DATA_VALID_IN      : std_logic := '0';
+       signal ic_DATA_CTRL_IN       : std_logic := '0';
+       signal ic_DATA_CLK_IN        : std_logic := '0';
+       signal ic_STAT_OP            : std_logic_vector(15 downto 0) := (others => '0');
+       signal ic_CTRL_OP            : std_logic_vector(15 downto 0) := (others => '0');
+       signal ic_STAT_DEBUG         : std_logic_vector(63 downto 0) := (others => '0');
+
+
+       --MU
+       signal mu_REGIO_READ_ENABLE_IN, next_mu_REGIO_READ_ENABLE_IN   :  std_logic := '0';
+       signal mu_REGIO_WRITE_ENABLE_IN  :  std_logic := '0';
+       signal mu_REGIO_ADDR_IN, next_mu_REGIO_ADDR_IN :  std_logic_vector(15 downto 0) := (others => '0');
+       signal mu_REGIO_DATA_IN :  std_logic_vector(31 downto 0);
+       signal mu_REGIO_DATA_OUT : std_logic_vector(31 downto 0) := x"0000_0000";
+       signal mu_REGIO_DATAREADY_OUT :  std_logic := '0';
+       signal mu_REGIO_NO_MORE_DATA_OUT :  std_logic := '0';
+       signal mu_REGIO_WRITE_ACK_OUT :  std_logic := '0';
+       signal mu_REGIO_UNKNOWN_ADDR_OUT   :   std_logic := '0';
+       signal mu_REGIO_TIMEOUT_IN         :  std_logic := '0';
+       signal mu_FIFO_DATA_IN, next_mu_FIFO_DATA_IN    :  std_logic_vector( (FIFO_BUS*FIFO_NUM)-1 downto 0 ) := (others => '0');
+       signal mu_REG_DATA_IN, next_mu_REG_DATA_IN      :  std_logic_vector( (REG_BUS*REG_NUM)-1 downto 0 ) := (others => '0');
+       signal mu_HW_TRIGGER_IN, next_mu_HW_TRIGGER_IN   :  std_logic_vector(FIFO_NUM-1 downto 0) := (others => '0');
+       signal mu_GLOBAL_TIME_IN  :  std_logic_vector(31 downto 0) := (others => '0');
+       signal mu_LOCAL_TIME_IN   :  std_logic_vector(7 downto 0) := (others => '0');
+       signal mu_TRIGGER_TIME_IN :  std_logic_vector(31 downto 0) := (others => '0');
+       signal mu_EVENT_NUMBER_IN :  std_logic_vector(7 downto 0) := (others => '0');
+
+
+       
+
+       -- Main signals
+       signal CLK                                              : std_logic := '0';
+       signal RESET                                    : std_logic := '1';
+--     signal soft_reset, next_soft_reset  : std_logic := '0';
+       
+
+
+
+       --attribute syn_keep : boolean;
+       --attribute syn_keep of next_testsignal : signal is true;
+
+-- COM_SETTINGS signals: for settings in this entity
+signal com_settings_addr_in : std_logic_vector(7 downto 0);
+signal com_settings_data_in : std_logic_vector(31 downto 0);
+signal com_settings_read_enable_in  : std_logic;
+signal com_settings_write_enable_in  : std_logic;
+signal com_settings_data_out : std_logic_vector(31 downto 0);
+signal com_settings_dataready_out  : std_logic;
+signal com_settings_write_ack_out  : std_logic;
+signal com_settings_no_more_data_out  : std_logic;
+signal com_settings_unknown_addr_out  : std_logic;
+signal signals_invert : std_logic_vector(13 downto 0);
+signal signals_invert2 : std_logic_vector(13 downto 0);
+signal signals_invert3 : std_logic_vector(13 downto 0);
+signal waitbeforestart : std_logic_vector(31 downto 0);
+signal beforestartcounter, beforestartcounter_next : std_logic_vector(31 downto 0);
+constant beforestartcounter_zero : std_logic_vector(31 downto 0) := (others => '0');
+signal beforestartcounter_finished, beforestartcounter_finished_next : std_logic;
+signal beforestartcounter_finished_last, beforestartcounter_finished_last_next : std_logic;
+
+signal fet_counter_limit : std_logic_vector(31 downto 0);
+signal jcounter_initvalue : std_logic_vector(28 downto 0); --29 bit
+signal trbnet_fet : std_logic;
+-- JTAG_CMD_M26C connection signals
+signal jtag_cmd_m26c_addr_in : std_logic_vector(8 downto 0);
+signal jtag_cmd_m26c_data_in : std_logic_vector(31 downto 0);
+signal jtag_cmd_m26c_read_enable_in  : std_logic;
+signal jtag_cmd_m26c_write_enable_in  : std_logic;
+signal jtag_cmd_m26c_data_out : std_logic_vector(31 downto 0);
+signal jtag_cmd_m26c_dataready_out  : std_logic;
+signal jtag_cmd_m26c_write_ack_out  : std_logic;
+signal jtag_cmd_m26c_no_more_data_out  : std_logic;
+signal jtag_cmd_m26c_unknown_addr_out  : std_logic;
+signal jtag_tck : std_logic;
+signal jtag_tms : std_logic;
+signal jtag_tdi : std_logic;
+signal jtag_tdo_evtlinv : std_logic;
+-- second JTAG entity
+signal jtag_cmd_m26c_addr_in2 : std_logic_vector(8 downto 0);
+signal jtag_cmd_m26c_data_in2 : std_logic_vector(31 downto 0);
+signal jtag_cmd_m26c_read_enable_in2  : std_logic;
+signal jtag_cmd_m26c_write_enable_in2  : std_logic;
+signal jtag_cmd_m26c_data_out2 : std_logic_vector(31 downto 0);
+signal jtag_cmd_m26c_dataready_out2  : std_logic;
+signal jtag_cmd_m26c_write_ack_out2  : std_logic;
+signal jtag_cmd_m26c_no_more_data_out2 : std_logic;
+signal jtag_cmd_m26c_unknown_addr_out2  : std_logic;
+signal jtag_tck2 : std_logic;
+signal jtag_tms2 : std_logic;
+signal jtag_tdi2 : std_logic;
+signal jtag_tdo_evtlinv2 : std_logic;
+-- third JTAG entity
+signal jtag_cmd_m26c_addr_in3 : std_logic_vector(8 downto 0);
+signal jtag_cmd_m26c_data_in3 : std_logic_vector(31 downto 0);
+signal jtag_cmd_m26c_read_enable_in3  : std_logic;
+signal jtag_cmd_m26c_write_enable_in3  : std_logic;
+signal jtag_cmd_m26c_data_out3 : std_logic_vector(31 downto 0);
+signal jtag_cmd_m26c_dataready_out3  : std_logic;
+signal jtag_cmd_m26c_write_ack_out3  : std_logic;
+signal jtag_cmd_m26c_no_more_data_out3 : std_logic;
+signal jtag_cmd_m26c_unknown_addr_out3  : std_logic;
+signal jtag_tck3 : std_logic;
+signal jtag_tms3 : std_logic;
+signal jtag_tdi3 : std_logic;
+signal jtag_tdo_evtlinv3 : std_logic;
+
+
+-- JTAG stuff
+signal jcounter, jcounter_next : std_logic_vector(28 downto 0); --29 bit
+signal off_spill, off_spill_next : std_logic;
+signal fake_event_trigger, fake_event_trigger_next : std_logic;
+signal fet_counter, fet_counter_next : std_logic_vector (31 downto 0); -- 32 bit
+signal my_status : std_logic_vector(8 downto 0);
+signal idle_out : std_logic;
+signal idle_out2 : std_logic;
+signal idle_out3 : std_logic;
+
+signal prog_jtag_finished : std_logic;
+
+signal prog_jtag_finished2 : std_logic;
+
+signal prog_jtag_finished3 : std_logic;
+
+-- spill trigger rising edge detection
+signal event_trigger_ff, event_trigger_ff_next : std_logic;
+signal event_trigger_ff_last, event_trigger_ff_last_next : std_logic;
+signal spillbreak_trigger : std_logic;
+-- spill trigger rising edge detection (MAPS_CLK)
+signal event_trigger_ff_MAPS_CLK, event_trigger_ff_MAPS_CLK_next : std_logic;
+signal event_trigger_ff_last_MAPS_CLK, event_trigger_ff_last_MAPS_CLK_next : std_logic;
+signal spillbreak_trigger_MAPS_CLK : std_logic;
+-- JTAG finished edge detection
+signal prog_jtag_finished_ff_MAPS_CLK, prog_jtag_finished_ff_MAPS_CLK_next : std_logic;
+signal prog_jtag_finished_ff_last_MAPS_CLK, prog_jtag_finished_ff_last_MAPS_CLK_next : std_logic;
+signal prog_jtag_finished_pulse_MAPS_CLK, prog_jtag_finished_pulse_MAPS_CLK_next : std_logic;
+-- MAPS outputs (reset, start)
+signal MAPS_CLK : std_logic;
+signal MAPS_reset, MAPS_reset_next : std_logic;
+signal MAPS_reset_count, MAPS_reset_count_next : std_logic_vector(6 downto 0);
+signal MAPS_start, MAPS_start_next : std_logic;
+signal MAPS_start_count, MAPS_start_count_next : std_logic_vector(6 downto 0);
+
+  -- TrbNet Reset Handler
+  signal reset_CLEAR_IN        :     std_logic := '0'; -- reset input (high active, async)
+  signal reset_CLEAR_N_IN      :     std_logic := '0'; -- reset input (low active, async)
+  signal reset_CLK_IN          :     std_logic := '0'; -- raw master clock, NOT from PLL/DLL!
+  signal reset_SYSCLK_IN       :     std_logic := '0'; -- PLL/DLL remastered clock
+  signal reset_PLL_LOCKED_IN   :     std_logic := '0'; -- master PLL lock signal (async)
+  signal reset_RESET_IN        :     std_logic := '0'; -- general reset signal (SYSCLK)
+  signal reset_TRB_RESET_IN    :     std_logic := '0'; -- TRBnet reset signal (SYSCLK)
+  signal reset_CLEAR_OUT       :     std_logic := '0'; -- async reset out, USE WITH CARE!
+  signal reset_RESET_OUT       :     std_logic := '0'; -- synchronous reset out (SYSCLK)
+  signal reset_DEBUG_OUT       :     std_logic_vector(15 downto 0) := x"0000";
+
+
+component jtag_cmd_m26c is
+  port(
+    CLK_IN : in std_logic;
+    RESET_IN : in std_logic;
+
+    JTAG_TMS_OUT : out std_logic;
+    JTAG_TCK_OUT : out std_logic;
+    JTAG_TDI_OUT : out std_logic;
+    JTAG_TDO_IN  : in  std_logic;
+
+    BUS_DATA_IN  : in std_logic_vector(31 downto 0);
+    BUS_DATA_OUT  : out std_logic_vector(31 downto 0);
+    BUS_ADDR_IN   : in  std_logic_vector(8 downto 0);
+    BUS_READ_IN   : in std_logic;
+    BUS_WRITE_IN  : in std_logic;
+
+    BUS_DATAREADY_OUT    : out  std_logic;
+    BUS_NO_MORE_DATA_OUT : out  std_logic;
+    BUS_WRITE_ACK_OUT    : out  std_logic;
+    BUS_UNKNOWN_ADDR_OUT : out  std_logic;
+
+    OFF_SPILL_IN : in   std_logic;
+    MY_STATUS_OUT        : out std_logic_vector(8 downto 0);
+    --MON_FIFO_DATA_OUT    : out std_logic_vector((FIFO_BUS*FIFO_NUM)-1 downto 0);
+    --MON_FIFO_WRITE_OUT   : out std_logic_vector(FIFO_NUM-1 downto 0);
+    IDLE_OUT             : out std_logic;
+    PROG_JTAG_FINISHED_OUT:out std_logic
+    --BUS_TIMEOUT_IN     : in std_logic;
+    );
+end component;
+
+       COMPONENT dcm3
+       PORT(
+               CLKIN_IN : IN std_logic;
+               RST_IN : IN std_logic;          
+               CLKFX_OUT : OUT std_logic;
+               CLK0_OUT : OUT std_logic;
+               LOCKED_OUT : OUT std_logic
+               );
+       END COMPONENT;
+       
+       
+
+begin
+ETRAX_IRQ <= '1';
+
+--inputs/outputs
+MAPS_reset_OBUFDS1 : OBUFDS
+port map (
+  I => MAPS_reset1_out,
+  O => ADO_LV(2),
+  OB=> ADO_LV(3)
+);
+MAPS_start_OBUFDS1 : OBUFDS
+port map (
+  I => MAPS_start1_out,
+  O => ADO_LV(4),
+  OB=> ADO_LV(5)
+);
+MAPS_CLK_OBUFDS1 : OBUFDS
+port map (
+  I => MAPS_CLK1_out,
+  O => ADO_LV(6),
+  OB=> ADO_LV(7)
+);
+
+jtag1_tck_OBUFDS : OBUFDS
+port map (
+  I => JTAG1_TCK_OUT,
+  O => ADO_LV(8),
+  OB=> ADO_LV(9)
+);
+jtag1_tdi_OBUFDS : OBUFDS
+port map (
+  I => JTAG1_TDI_OUT,
+  O => ADO_LV(10),
+  OB=> ADO_LV(11)
+);
+jtag1_tms_OBUFDS : OBUFDS
+port map (
+  I => JTAG1_TMS_OUT,
+  O => ADO_LV(12),
+  OB=> ADO_LV(13)
+);
+
+
+MAPS_reset_OBUFDS2 : OBUFDS
+port map (
+  I => MAPS_reset2_out,
+  O => ADO_LV(18),
+  OB=> ADO_LV(19)
+);
+MAPS_start_OBUFDS2 : OBUFDS
+port map (
+  I => MAPS_start2_out,
+  O => ADO_LV(20),
+  OB=> ADO_LV(21)
+);
+MAPS_CLK_OBUFDS2 : OBUFDS
+port map (
+  I => MAPS_CLK2_out,
+  O => ADO_LV(22),
+  OB=> ADO_LV(23)
+);
+
+jtag2_tms_OBUFDS : OBUFDS
+port map (
+  I => JTAG2_TMS_OUT,
+  O => ADO_LV(24),
+  OB=> ADO_LV(25)
+);
+jtag2_tck_OBUFDS : OBUFDS
+port map (
+  I => JTAG2_TCK_OUT,
+  O => ADO_LV(26),
+  OB=> ADO_LV(27)
+);
+jtag2_tdi_OBUFDS : OBUFDS
+port map (
+  I => JTAG2_TDI_OUT,
+  O => ADO_LV(28),
+  OB=> ADO_LV(29)
+);
+
+MAPS_reset_OBUFDS3 : OBUFDS
+port map (
+  I => MAPS_reset3_out,
+  O => ADO_LV(34),
+  OB=> ADO_LV(35)
+);
+MAPS_start_OBUFDS3 : OBUFDS
+port map (
+  I => MAPS_start3_out,
+  O => ADO_LV(36),
+  OB=> ADO_LV(37)
+);
+MAPS_CLK_OBUFDS3 : OBUFDS
+port map (
+  I => MAPS_CLK3_out,
+  O => ADO_LV(38),
+  OB=> ADO_LV(39)
+);
+
+jtag3_tms_OBUFDS : OBUFDS
+port map (
+  I => JTAG2_TMS_OUT,
+  O => ADO_LV(40),
+  OB=> ADO_LV(41)
+);
+jtag3_tck_OBUFDS : OBUFDS
+port map (
+  I => JTAG2_TCK_OUT,
+  O => ADO_LV(42),
+  OB=> ADO_LV(43)
+);
+jtag3_tdi_OBUFDS : OBUFDS
+port map (
+  I => JTAG2_TDI_OUT,
+  O => ADO_LV(44),
+  OB=> ADO_LV(45)
+);
+
+--ADO_LV(1 downto 0) <= (others => '0');
+--ADO_LV(17 downto 14) <= (others => '0');
+--ADO_LV(33 downto 30) <= (others => '0');
+--ADO_LV(57 downto 46) <= (others => '0');
+
+unused1 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(0),
+  OB=> ADO_LV(1)
+);
+
+unused2 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(14),
+  OB=> ADO_LV(15)
+);
+unused3 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(16),
+  OB=> ADO_LV(17)
+);
+unused4 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(30),
+  OB=> ADO_LV(31)
+);
+unused5 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(32),
+  OB=> ADO_LV(33)
+);
+unused6 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(46),
+  OB=> ADO_LV(47)
+);
+unused7 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(48),
+  OB=> ADO_LV(49)
+);
+unused8 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(50),
+  OB=> ADO_LV(51)
+);
+unused9 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(52),
+  OB=> ADO_LV(53)
+);
+unused10 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(54),
+  OB=> ADO_LV(55)
+);
+unused11 : OBUFDS
+port map (
+  I => '0',
+  O => ADO_LV(56),
+  OB=> ADO_LV(57)
+);
+
+
+
+JTAG1_TDO_IN <= ADO_TTL(16);
+JTAG2_TDO_IN <= ADO_TTL(17);
+JTAG3_TDO_IN <= ADO_TTL(18);
+
+event_trigger <= ADO_TTL(19);
+
+
+
+       ---------------------------------------------------------------------
+       -- CLK generator
+       ---------------------------------------------------------------------
+  the_IBUFGDS : IBUFGDS
+  generic map (
+    DIFF_TERM => TRUE,
+    IOSTANDARD => "LVDS_25"
+  )
+  port map (
+    O  => CLK,
+    I  => VIRT_CLK,
+    IB => VIRT_CLKb
+  );
+
+
+
+
+
+
+--     ---------------------------------------------------------------------
+--     -- FIFO 
+--     ---------------------------------------------------------------------
+--     the_xilinx_BRAM_FIFO_16x1024_1: xilinx_BRAM_FIFO_16x1024
+--     port map(
+--             clk        => CLK,
+--             din        => fifo_din1,
+--             rd_en      => fifo_rd_en1,
+--             rst        => RESET,
+--             wr_en      => fifo_wr_en1,
+--             data_count => fifo_data_count1,
+--             dout       => fifo_dout1,
+--             empty      => fifo_empty1,
+--             full       => fifo_full1,
+--             valid      => fifo_valid1
+--     );
+-- 
+-- 
+--     ---------------------------------------------------------------------
+--     -- FIFO 
+--     ---------------------------------------------------------------------
+--     the_xilinx_BRAM_FIFO_16x1024_2: xilinx_BRAM_FIFO_16x1024
+--     port map(
+--             clk        => CLK,
+--             din        => fifo_din2,
+--             rd_en      => fifo_rd_en2,
+--             rst        => RESET,
+--             wr_en      => fifo_wr_en2,
+--             data_count => fifo_data_count2,
+--             dout       => fifo_dout2,
+--             empty      => fifo_empty2,
+--             full       => fifo_full2,
+--             valid      => fifo_valid2
+--     );
+-- 
+
+--     ---------------------------------------------------------------------
+--     -- RESET Handler
+--     ---------------------------------------------------------------------
+--     the_reset_handler: reset_handler_b
+--     generic map(
+--             RESET_DELAY     => x"000f"
+--     )
+--     port map(
+--             CLK                => CLK,
+--             RESET_IN           => soft_reset,
+--             TRB_RESET_IN       => not RESET_VIRT,
+--             EXTERNAL_RESET_IN  => '0',
+--             RESET_COUNTER_IN   => x"00000000",
+--             RESET_OUT          => RESET
+--     );
+-- --  next_soft_reset <= ic_STAT_OP(13);
+-- --  next_ttl_obuf(16) <= soft_reset;
+  ----------------------------------------------------------------------------------------------------------------------------------------
+  -- Reset Handler
+  ----------------------------------------------------------------------------------------------------------------------------------------
+  the_trb_net_reset_handler: trb_net_reset_handler
+  generic map(
+    RESET_DELAY     => x"000f"
+  )
+  port map(
+    CLEAR_IN            =>  reset_CLEAR_IN,     -- reset input (high active, async)
+    CLEAR_N_IN          =>  reset_CLEAR_N_IN,   -- reset input (low active, async)
+    CLK_IN              =>  reset_CLK_IN,       -- raw master clock, NOT from PLL/DLL!
+    SYSCLK_IN           =>  reset_SYSCLK_IN,    -- PLL/DLL remastered clock
+    PLL_LOCKED_IN       =>  reset_PLL_LOCKED_IN,-- master PLL lock signal (async)
+    RESET_IN            =>  reset_RESET_IN,     -- general reset signal (SYSCLK)
+    TRB_RESET_IN        =>  reset_TRB_RESET_IN, -- TRBnet reset signal (SYSCLK)
+    CLEAR_OUT           =>  reset_CLEAR_OUT,    -- async reset out, USE WITH CARE!
+    RESET_OUT           =>  RESET,              -- synchronous reset out (SYSCLK)
+    DEBUG_OUT           =>  reset_DEBUG_OUT
+  );
+  reset_CLK_IN        <= CLK;
+  reset_SYSCLK_IN     <= CLK;
+  reset_CLEAR_IN      <= '0';
+  reset_CLEAR_N_IN    <= '1';
+  reset_PLL_LOCKED_IN <= '1';
+  reset_RESET_IN  <= ep_MED_STAT_OP_IN(13);
+
+
+  the_med_tlk: trb_net16_med_tlk
+  port map(
+    RESET => RESET, -- which reset should be used?
+    CLK   => CLK,
+    TLK_CLK => TLK_CLK,
+    TLK_ENABLE => TLK_ENABLE,
+    TLK_LCKREFN => TLK_LCKREFN,
+    TLK_LOOPEN => TLK_LOOPEN,
+    TLK_PRBSEN => TLK_PRBSEN,
+    TLK_RXD   => TLK_RXD,
+    TLK_RX_CLK => TLK_RX_CLK,
+    TLK_RX_DV =>TLK_RX_DV,
+    TLK_RX_ER => TLK_RX_ER,
+    TLK_TXD  => TLK_TXD,
+    TLK_TX_EN => TLK_TX_EN,
+    TLK_TX_ER => TLK_TX_ER,
+    SFP_LOS  => SFP_LOS,
+    SFP_TX_DIS => SFP_TX_DIS,
+    MED_DATAREADY_IN => ep_MED_DATAREADY_OUT,
+    MED_READ_IN      => ep_MED_READ_OUT,
+    MED_DATA_IN       => ep_MED_DATA_OUT, 
+    MED_PACKET_NUM_IN => ep_MED_PACKET_NUM_OUT, 
+    MED_DATAREADY_OUT => ep_MED_DATAREADY_IN,
+    MED_READ_OUT      => ep_MED_READ_IN,
+    MED_DATA_OUT      => ep_MED_DATA_IN,
+    MED_PACKET_NUM_OUT=> ep_MED_PACKET_NUM_IN,
+    STAT              => open,
+    STAT_MONITOR      => open,
+    STAT_OP            => ep_MED_STAT_OP_IN, 
+    CTRL_OP            => ep_MED_CTRL_OP_OUT 
+                        --connect STAT(0) to LED
+    );
+
+
+       
+--  the_reg_sync : reg_sync
+--  port map(
+--
+--    CLK              => CLK,
+--    RESET            => '0',
+--
+--    CLK_SLOW                 => sync_clk_in,
+--    CLK_OUT                  => sync_ddr_out,
+--    
+--    DATA_IN_SLOW                     => sync_data_in2,
+--    VALID_IN_SLOW                    => sync_valid_in2,
+--     PACKET_NUM_IN_SLOW      => sync_packet_num_in2,
+--     READ_IN_SLOW                    => sync_read_in2,
+--
+--    DATA_IN_FAST                     => sync_data_in1,
+--    VALID_IN_FAST                    => sync_valid_in1,
+--     PACKET_NUM_IN_FAST      => sync_packet_num_in1,
+--     READ_IN_FAST                    => sync_read_in1,
+--
+--    DATA_OUT_SLOW            => sync_data_out2,
+--    VALID_OUT_SLOW           => sync_valid_out2,
+--     PACKET_NUM_OUT_SLOW     => sync_packet_num_out2,
+--     READ_OUT_SLOW                   => sync_read_out2,
+--
+--    DATA_OUT_FAST            => sync_data_out1,
+--    VALID_OUT_FAST           => sync_valid_out1,
+--     PACKET_NUM_OUT_FAST     => sync_packet_num_out1,
+--     READ_OUT_FAST                   => sync_read_out1
+--
+--  );
+--     ep_MED_READ_IN       <= sync_read_out2;
+--     ep_MED_DATA_IN       <= sync_data_out2;
+--     ep_MED_DATAREADY_IN  <= sync_valid_out2;
+--     ep_MED_PACKET_NUM_IN <= sync_packet_num_out2;
+--     
+--     sync_data_in1           <= ep_MED_DATA_OUT;
+--     sync_valid_in1          <= ep_MED_DATAREADY_OUT;
+--     sync_packet_num_in1     <= ep_MED_PACKET_NUM_OUT;
+--     sync_read_in1           <= ep_MED_READ_OUT;
+----   sync_data_in1           <= ep_testdata;
+----   sync_valid_in1          <= ep_testvalid;
+----   sync_packet_num_in1     <= ep_testpacket;
+----   sync_read_in1           <= ep_testread;
+----   sync_data_in1           <= testsignal(15 downto 0);
+----   sync_valid_in1          <= testsignal(16);
+----   sync_packet_num_in1     <= testsignal(19 downto 17);
+----   sync_read_in1           <= testsignal(20);
+
+
+
+       -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+       -- The Endpoint
+       -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+       the_ENDPOINT: trb_net16_endpoint_hades_full_handler
+       generic map(
+               IBUF_DEPTH                   => (6,6,6,6),
+               FIFO_TO_INT_DEPTH            => (6,6,6,6),
+               FIFO_TO_APL_DEPTH            => (6,6,6,6),
+               APL_WRITE_ALL_WORDS          => (c_NO,c_NO,c_NO,c_NO),
+               ADDRESS_MASK                 => x"FFFF",
+               BROADCAST_BITMASK            => x"FF",
+               BROADCAST_SPECIAL_ADDR       => x"FF",
+               REGIO_NUM_STAT_REGS          => c_REGIO_NUM_STAT_REGS,
+               REGIO_NUM_CTRL_REGS          => c_REGIO_NUM_CTRL_REGS,
+               REGIO_INIT_CTRL_REGS         => (others => '0'),
+               REGIO_INIT_ADDRESS           => x"F013",
+               REGIO_INIT_BOARD_INFO        => x"1234_5678",
+               REGIO_INIT_ENDPOINT_ID       => x"1234",
+               REGIO_COMPILE_TIME           => x"00000000",
+               REGIO_COMPILE_VERSION        => x"0005",
+               REGIO_HARDWARE_VERSION       => x"12345678",
+               REGIO_USE_1WIRE_INTERFACE    => c_YES,
+               REGIO_USE_VAR_ENDPOINT_ID    => c_NO,
+               CLOCK_FREQUENCY              => 100,
+               TIMING_TRIGGER_RAW           => c_YES,
+               --Configure data handler
+               DATA_INTERFACE_NUMBER        => c_DATA_INTERFACE_NUMBER,
+               DATA_BUFFER_DEPTH            => 9,
+               DATA_BUFFER_WIDTH            => 32,
+               DATA_BUFFER_FULL_THRESH      => 2**8,
+               TRG_RELEASE_AFTER_DATA       => c_YES,
+               HEADER_BUFFER_DEPTH          => 9,
+               HEADER_BUFFER_FULL_THRESH    => 2**8
+    )
+       port map(
+               --  Misc
+               CLK                          => CLK,
+               RESET                        => RESET,
+               CLK_EN                       => '1',
+
+               --  Media direction port
+               MED_DATAREADY_OUT            => ep_MED_DATAREADY_OUT,
+               MED_DATA_OUT                 => ep_MED_DATA_OUT,
+               MED_PACKET_NUM_OUT           => ep_MED_PACKET_NUM_OUT,
+               MED_READ_IN                  => ep_MED_READ_IN,
+               MED_DATAREADY_IN             => ep_MED_DATAREADY_IN,
+               MED_DATA_IN                  => ep_MED_DATA_IN,
+               MED_PACKET_NUM_IN            => ep_MED_PACKET_NUM_IN,
+               MED_READ_OUT                 => ep_MED_READ_OUT,
+               MED_STAT_OP_IN               => ep_MED_STAT_OP_IN,
+               MED_CTRL_OP_OUT              => ep_MED_CTRL_OP_OUT,
+
+               --Timing trigger in
+               TRG_TIMING_TRG_RECEIVED_IN   => ep_TRG_TIMING_TRG_RECEIVED_IN,
+               --LVL1 trigger to FEE
+               LVL1_TRG_DATA_VALID_OUT      => ep_LVL1_TRG_DATA_VALID_OUT,    --trigger type, number, code, information are valid
+               LVL1_VALID_TIMING_TRG_OUT    => ep_LVL1_VALID_TIMING_TRG_OUT,    --valid timing trigger has been received
+               LVL1_VALID_NOTIMING_TRG_OUT  => ep_LVL1_VALID_NOTIMING_TRG_OUT,    --valid trigger without timing trigger has been received
+               LVL1_INVALID_TRG_OUT         => ep_LVL1_INVALID_TRG_OUT,    --the current trigger is invalid (e.g. no timing trigger, no LVL1...)
+
+               LVL1_TRG_TYPE_OUT            => ep_LVL1_TRG_TYPE_OUT,
+               LVL1_TRG_NUMBER_OUT          => ep_LVL1_TRG_NUMBER_OUT,
+               LVL1_TRG_CODE_OUT            => ep_LVL1_TRG_CODE_OUT,
+               LVL1_TRG_INFORMATION_OUT     => ep_LVL1_TRG_INFORMATION_OUT,
+               LVL1_INT_TRG_NUMBER_OUT      => ep_LVL1_INT_TRG_NUMBER_OUT,  --internally generated trigger number, for informational uses only
+
+               --Response from FEE
+               FEE_TRG_RELEASE_IN           => ep_FEE_TRG_RELEASE_IN,
+               FEE_TRG_STATUSBITS_IN        => ep_FEE_TRG_STATUSBITS_IN,
+               FEE_DATA_IN                  => ep_FEE_DATA_IN,
+               FEE_DATA_WRITE_IN            => ep_FEE_DATA_WRITE_IN,
+               FEE_DATA_FINISHED_IN         => ep_FEE_DATA_FINISHED_IN,
+               FEE_DATA_ALMOST_FULL_OUT     => ep_FEE_DATA_ALMOST_FULL_OUT,
+
+               --Slow Control Port
+               --common registers
+               REGIO_COMMON_STAT_REG_IN     => ep_REGIO_COMMON_STAT_REG_IN,
+               REGIO_COMMON_CTRL_REG_OUT    => ep_REGIO_COMMON_CTRL_REG_OUT,
+               REGIO_COMMON_STAT_STROBE_OUT => ep_REGIO_COMMON_STAT_STROBE_OUT,
+               REGIO_COMMON_CTRL_STROBE_OUT => ep_REGIO_COMMON_CTRL_STROBE_OUT,
+               --user defined registers
+               REGIO_STAT_REG_IN            => ep_REGIO_STAT_REG_IN,
+               REGIO_CTRL_REG_OUT           => ep_REGIO_CTRL_REG_OUT,
+               REGIO_STAT_STROBE_OUT        => ep_REGIO_STAT_STROBE_OUT,
+               REGIO_CTRL_STROBE_OUT        => ep_REGIO_CTRL_STROBE_OUT,
+               --internal data port
+               BUS_ADDR_OUT                 => ep_BUS_ADDR_OUT,
+               BUS_DATA_OUT                 => ep_BUS_DATA_OUT,
+               BUS_READ_ENABLE_OUT          => ep_BUS_READ_ENABLE_OUT,
+               BUS_WRITE_ENABLE_OUT         => ep_BUS_WRITE_ENABLE_OUT,
+               BUS_TIMEOUT_OUT              => ep_BUS_TIMEOUT_OUT,
+               BUS_DATA_IN                  => ep_BUS_DATA_IN,
+               BUS_DATAREADY_IN             => ep_BUS_DATAREADY_IN,
+               BUS_WRITE_ACK_IN             => ep_BUS_WRITE_ACK_IN,
+               BUS_NO_MORE_DATA_IN          => ep_BUS_NO_MORE_DATA_IN,
+               BUS_UNKNOWN_ADDR_IN          => ep_BUS_UNKNOWN_ADDR_IN,
+               --Onewire
+               ONEWIRE_INOUT                => ONEWIRE,  --temperature sensor
+               ONEWIRE_MONITOR_IN           => ep_ONEWIRE_MONITOR_IN,
+               ONEWIRE_MONITOR_OUT          => ep_ONEWIRE_MONITOR_OUT,
+               --Config endpoint id, if not statically assigned
+               REGIO_VAR_ENDPOINT_ID        => ep_REGIO_VAR_ENDPOINT_ID,
+
+               --Timing registers
+               TIME_GLOBAL_OUT              => ep_TIME_GLOBAL_OUT, --global time, microseconds
+               TIME_LOCAL_OUT               => ep_TIME_LOCAL_OUT, --local time running with chip frequency
+               TIME_SINCE_LAST_TRG_OUT      => ep_TIME_SINCE_LAST_TRG_OUT, --local time, resetted with each trigger
+               TIME_TICKS_OUT               => ep_TIME_TICKS_OUT, --bit 1 ms-tick, 0 us-tick
+
+               --Debugging & Status information
+               STAT_DEBUG_IPU               => ep_STAT_DEBUG_IPU,
+               STAT_DEBUG_1                 => ep_STAT_DEBUG_1,
+               STAT_DEBUG_2                 => ep_STAT_DEBUG_2,
+               STAT_DEBUG_DATA_HANDLER_OUT  => ep_STAT_DEBUG_DATA_HANDLER_OUT,
+               STAT_DEBUG_IPU_HANDLER_OUT   => ep_STAT_DEBUG_IPU_HANDLER_OUT,
+               CTRL_MPLEX                   => ep_CTRL_MPLEX,
+               IOBUF_CTRL_GEN               => ep_IOBUF_CTRL_GEN,
+               STAT_ONEWIRE                 => ep_STAT_ONEWIRE,
+               STAT_ADDR_DEBUG              => ep_STAT_ADDR_DEBUG,
+               DEBUG_LVL1_HANDLER_OUT       => ep_DEBUG_LVL1_HANDLER_OUT
+       );
+
+
+
+the_bus_handler : trb_net16_regio_bus_handler
+  generic map(
+    PORT_NUMBER => 5,
+    PORT_ADDRESSES => (0 => x"b000", 1 => x"8000", 2 => x"c000", 3 => x"d000", 4 => x"e000", others => (others => '0')),
+    PORT_ADDR_MASK => (0 => 9,       1 => 10, 2 => 8, 3 => 9, 4 => 9,  others => 0)
+    )
+  port map(
+    CLK                    => CLK,
+    RESET                  => RESET,
+    DAT_ADDR_IN            => ep_BUS_ADDR_OUT, 
+    DAT_DATA_IN            => ep_BUS_DATA_OUT, -- data from TRB endpoint
+    DAT_DATA_OUT           => ep_BUS_DATA_IN, -- data to TRB endpoint
+    DAT_READ_ENABLE_IN     => ep_BUS_READ_ENABLE_OUT, -- read pulse
+    DAT_WRITE_ENABLE_IN    => ep_BUS_WRITE_ENABLE_OUT, -- write pulse
+    DAT_TIMEOUT_IN         => ep_BUS_TIMEOUT_OUT, -- access timed out
+    DAT_DATAREADY_OUT      => ep_BUS_DATAREADY_IN, -- your data, master, as requested
+    DAT_WRITE_ACK_OUT      => ep_BUS_WRITE_ACK_IN, -- data accepted
+    DAT_NO_MORE_DATA_OUT   => ep_BUS_NO_MORE_DATA_IN, -- don't disturb me now
+    DAT_UNKNOWN_ADDR_OUT   => ep_BUS_UNKNOWN_ADDR_IN, -- noone here to answer your request
+
+   --BUS_ADDR_OUT(0*16+15 downto 0*16+8) => open,
+    BUS_ADDR_OUT(0*16+8 downto 0*16) => jtag_cmd_m26c_addr_in,
+    BUS_ADDR_OUT(0*16+15 downto 0*16+9) => open,
+    BUS_ADDR_OUT(1*16+9 downto 1*16) => open,
+    BUS_ADDR_OUT(1*16+15 downto 1*16+10) => open,
+    BUS_ADDR_OUT(2*16+7 downto 2*16) => com_settings_addr_in,
+    BUS_ADDR_OUT(2*16+15 downto 2*16+8) => open,
+    BUS_ADDR_OUT(3*16+8 downto 3*16) => jtag_cmd_m26c_addr_in2,
+    BUS_ADDR_OUT(3*16+15 downto 3*16+9) => open,
+    BUS_ADDR_OUT(4*16+8 downto 4*16) => jtag_cmd_m26c_addr_in3,
+    BUS_ADDR_OUT(4*16+15 downto 4*16+9) => open,
+   --BUS_ADDR_OUT(1*16+15 downto 1*16+5) => open,
+    BUS_DATA_OUT(0*32+31 downto 0*32) => jtag_cmd_m26c_data_in,
+    BUS_DATA_OUT(1*32+7 downto 1*32) => open,
+    BUS_DATA_OUT(1*32+31 downto 1*32+8) => open,
+    BUS_DATA_OUT(2*32+31 downto 2*32) => com_settings_data_in,
+    BUS_DATA_OUT(3*32+31 downto 3*32) => jtag_cmd_m26c_data_in2,
+    BUS_DATA_OUT(4*32+31 downto 4*32) => jtag_cmd_m26c_data_in3,
+    BUS_READ_ENABLE_OUT(0)            => jtag_cmd_m26c_read_enable_in,
+    BUS_READ_ENABLE_OUT(1)            => open,
+    BUS_READ_ENABLE_OUT(2)            => com_settings_read_enable_in,
+    BUS_READ_ENABLE_OUT(3)            => jtag_cmd_m26c_read_enable_in2,
+    BUS_READ_ENABLE_OUT(4)            => jtag_cmd_m26c_read_enable_in3,
+    BUS_WRITE_ENABLE_OUT(0)              => jtag_cmd_m26c_write_enable_in,
+    BUS_WRITE_ENABLE_OUT(1)              => open,
+    BUS_WRITE_ENABLE_OUT(2)              => com_settings_write_enable_in,
+    BUS_WRITE_ENABLE_OUT(3)              => jtag_cmd_m26c_write_enable_in2,
+    BUS_WRITE_ENABLE_OUT(4)              => jtag_cmd_m26c_write_enable_in3,
+    BUS_TIMEOUT_OUT(0)                   => open,
+    BUS_TIMEOUT_OUT(1)                   => open,
+    BUS_TIMEOUT_OUT(2)                   => open,
+    BUS_TIMEOUT_OUT(3)                   => open,
+    BUS_TIMEOUT_OUT(4)                   => open,
+    BUS_DATA_IN(0*32+31 downto 0*32)  => jtag_cmd_m26c_data_out,
+    BUS_DATA_IN(1*32+31 downto 1*32)  => (others => '0'),
+    BUS_DATA_IN(2*32+31 downto 2*32)  => com_settings_data_out,
+    BUS_DATA_IN(3*32+31 downto 3*32)  => jtag_cmd_m26c_data_out2,
+    BUS_DATA_IN(4*32+31 downto 4*32)  => jtag_cmd_m26c_data_out3,
+    BUS_DATAREADY_IN(0)               => jtag_cmd_m26c_dataready_out,
+    BUS_DATAREADY_IN(1)               => '0',
+    BUS_DATAREADY_IN(2)               => com_settings_dataready_out,
+    BUS_DATAREADY_IN(3)               => jtag_cmd_m26c_dataready_out2,
+    BUS_DATAREADY_IN(4)               => jtag_cmd_m26c_dataready_out3,
+    BUS_WRITE_ACK_IN(0)               => jtag_cmd_m26c_write_ack_out,
+    BUS_WRITE_ACK_IN(1)               => '0',
+    BUS_WRITE_ACK_IN(2)               => com_settings_write_ack_out,
+    BUS_WRITE_ACK_IN(3)               => jtag_cmd_m26c_write_ack_out2,
+    BUS_WRITE_ACK_IN(4)               => jtag_cmd_m26c_write_ack_out3,
+    BUS_NO_MORE_DATA_IN(0)            => jtag_cmd_m26c_no_more_data_out,
+    BUS_NO_MORE_DATA_IN(1)            => '0',
+    BUS_NO_MORE_DATA_IN(2)            => com_settings_no_more_data_out,
+    BUS_NO_MORE_DATA_IN(3)            => jtag_cmd_m26c_no_more_data_out2,
+    BUS_NO_MORE_DATA_IN(4)            => jtag_cmd_m26c_no_more_data_out3,
+    BUS_UNKNOWN_ADDR_IN(0)               => jtag_cmd_m26c_unknown_addr_out,
+    BUS_UNKNOWN_ADDR_IN(1)               => '0',
+    BUS_UNKNOWN_ADDR_IN(2)               => com_settings_unknown_addr_out,
+    BUS_UNKNOWN_ADDR_IN(3)               => jtag_cmd_m26c_unknown_addr_out2,
+    BUS_UNKNOWN_ADDR_IN(4)               => jtag_cmd_m26c_unknown_addr_out3,
+
+
+
+
+
+    STAT_DEBUG                        => open
+    );
+
+
+the_jtag3_cmd_m26c : jtag_cmd_m26c 
+  port map(
+    CLK_IN => CLK,
+    RESET_IN => RESET,
+
+    JTAG_TMS_OUT => jtag_tms3,
+    JTAG_TCK_OUT => jtag_tck3,
+    JTAG_TDI_OUT => jtag_tdi3,
+    JTAG_TDO_IN  => jtag_tdo_evtlinv3,
+
+    BUS_DATA_IN  => jtag_cmd_m26c_data_in3,
+    BUS_DATA_OUT  => jtag_cmd_m26c_data_out3,
+    BUS_ADDR_IN   => jtag_cmd_m26c_addr_in3(8 downto 0),
+    BUS_READ_IN   => jtag_cmd_m26c_read_enable_in3,
+    BUS_WRITE_IN  => jtag_cmd_m26c_write_enable_in3,
+
+    BUS_DATAREADY_OUT    => jtag_cmd_m26c_dataready_out3,
+    BUS_NO_MORE_DATA_OUT => jtag_cmd_m26c_no_more_data_out3,
+    BUS_WRITE_ACK_OUT    => jtag_cmd_m26c_write_ack_out3,
+    BUS_UNKNOWN_ADDR_OUT => jtag_cmd_m26c_unknown_addr_out3,
+
+    OFF_SPILL_IN => off_spill,
+    MY_STATUS_OUT        => open,
+    IDLE_OUT             => idle_out3,
+    --BUS_TIMEOUT_IN     : in std_logic;
+    PROG_JTAG_FINISHED_OUT => prog_jtag_finished3
+    );
+the_jtag2_cmd_m26c : jtag_cmd_m26c 
+  port map(
+    CLK_IN => CLK,
+    RESET_IN => RESET,
+
+    JTAG_TMS_OUT => jtag_tms2,
+    JTAG_TCK_OUT => jtag_tck2,
+    JTAG_TDI_OUT => jtag_tdi2,
+    JTAG_TDO_IN  => jtag_tdo_evtlinv2,
+
+    BUS_DATA_IN  => jtag_cmd_m26c_data_in2,
+    BUS_DATA_OUT  => jtag_cmd_m26c_data_out2,
+    BUS_ADDR_IN   => jtag_cmd_m26c_addr_in2(8 downto 0),
+    BUS_READ_IN   => jtag_cmd_m26c_read_enable_in2,
+    BUS_WRITE_IN  => jtag_cmd_m26c_write_enable_in2,
+
+    BUS_DATAREADY_OUT    => jtag_cmd_m26c_dataready_out2,
+    BUS_NO_MORE_DATA_OUT => jtag_cmd_m26c_no_more_data_out2,
+    BUS_WRITE_ACK_OUT    => jtag_cmd_m26c_write_ack_out2,
+    BUS_UNKNOWN_ADDR_OUT => jtag_cmd_m26c_unknown_addr_out2,
+
+    OFF_SPILL_IN => off_spill,
+    MY_STATUS_OUT        => open,
+    IDLE_OUT             => idle_out2,
+    --BUS_TIMEOUT_IN     : in std_logic;
+    PROG_JTAG_FINISHED_OUT => prog_jtag_finished2
+    );
+
+the_jtag_cmd_m26c : jtag_cmd_m26c 
+  port map(
+    CLK_IN => CLK,
+    RESET_IN => RESET,
+
+    JTAG_TMS_OUT => jtag_tms,
+    JTAG_TCK_OUT => jtag_tck,
+    JTAG_TDI_OUT => jtag_tdi,
+    JTAG_TDO_IN  => jtag_tdo_evtlinv,
+
+    BUS_DATA_IN  => jtag_cmd_m26c_data_in,
+    BUS_DATA_OUT  => jtag_cmd_m26c_data_out,
+    BUS_ADDR_IN   => jtag_cmd_m26c_addr_in(8 downto 0),
+    BUS_READ_IN   => jtag_cmd_m26c_read_enable_in,
+    BUS_WRITE_IN  => jtag_cmd_m26c_write_enable_in,
+
+    BUS_DATAREADY_OUT    => jtag_cmd_m26c_dataready_out,
+    BUS_NO_MORE_DATA_OUT => jtag_cmd_m26c_no_more_data_out,
+    BUS_WRITE_ACK_OUT    => jtag_cmd_m26c_write_ack_out,
+    BUS_UNKNOWN_ADDR_OUT => jtag_cmd_m26c_unknown_addr_out,
+
+    OFF_SPILL_IN => off_spill,
+    MY_STATUS_OUT        => my_status,
+    IDLE_OUT             => idle_out,
+    --BUS_TIMEOUT_IN     : in std_logic;
+    PROG_JTAG_FINISHED_OUT => prog_jtag_finished
+    );
+
+--JTAG_TDO_TEST_OUT <= JTAG_TDO_IN;
+
+SEQ_COUNTER : process(CLK, RESET)
+begin
+  if(rising_edge(CLK)) then
+    if(RESET='1') then
+      jcounter <= (others => '0');
+      off_spill <= '0';
+    else
+      jcounter <= jcounter_next;
+      off_spill <= off_spill_next;
+    end if;
+  end if;
+end process;
+
+COMB_COUNTER : process(jcounter, off_spill, spillbreak_trigger, jcounter_initvalue)
+begin
+  jcounter_next <= std_logic_vector(unsigned(jcounter) - 1);
+  off_spill_next <= off_spill;
+  if(spillbreak_trigger = '1') then
+    off_spill_next <= '1';
+    jcounter_next <= jcounter_initvalue;
+  elsif(to_integer(unsigned(jcounter)) = 0) then
+    off_spill_next <= '0';
+  end if;
+end process;
+
+
+
+--    the_IODELAY : IODELAY
+--    generic map (
+--       DELAY_SRC => "I", -- Specify which input port to be used
+--                         -- "I"=IDATAIN, "O"=ODATAIN, "DATAIN"=DATAIN, "IO"=Bi-directional
+--       HIGH_PERFORMANCE_MODE => TRUE, -- TRUE specifies lower jitter
+--                                      -- at expense of more power
+--       IDELAY_TYPE => "DEFAULT",  -- "DEFAULT", "FIXED" or "VARIABLE" 
+--       IDELAY_VALUE => 0,   -- 0 to 63 tap values
+--       ODELAY_VALUE => 0,   -- 0 to 63 tap values
+--       REFCLK_FREQUENCY => 200.0,   -- Frequency used for IDELAYCTRL
+--                                     -- 175.0 to 225.0
+--       SIGNAL_PATTERN => "DATA")    -- Input signal type, "CLOCK" or "DATA" 
+--    port map (
+--       DATAOUT => DATAOUT,  -- 1-bit delayed data output
+--       C => C,     -- 1-bit clock input
+--       CE => CE,   -- 1-bit clock enable input
+--       DATAIN => DATAIN, -- 1-bit internal data input
+--       IDATAIN => IDATAIN,  -- 1-bit input data input (connect to port)
+--       INC => INC, -- 1-bit increment/decrement input
+--       ODATAIN => ODATAIN,  -- 1-bit output data input
+--       RST => RST,  -- 1-bit active high, synch reset input
+--       T => T  -- 1-bit 3-state control input
+--    );
+
+
+
+--*************************************************************************************************************************
+-- The LOGIC **************************************************************************************************************
+--*************************************************************************************************************************
+
+
+
+       -- LEDs
+       DGOOD <= not ep_MED_STAT_OP_IN(9);
+       DINT  <= not (ep_MED_STAT_OP_IN(10) or ep_MED_STAT_OP_IN(11));
+       DBAD  <= not '0';
+       DWAIT <= not '0';
+--
+
+
+
+
+-- MAPS CLK output
+       Inst_dcm3: dcm3 PORT MAP(
+               CLKIN_IN => CLK,
+               RST_IN => '0',
+               CLKFX_OUT => MAPS_CLK,
+               CLK0_OUT => open,
+               LOCKED_OUT => open
+       );
+
+--TEST_out <= jtag_tck;
+--TEST_out <= prog_jtag_finished;
+--TEST_out <= '0';
+JTAG1_TCK_OUT <= (jtag_tck xor signals_invert(6)) when signals_invert(7) = '1' else signals_invert(6);
+JTAG1_TMS_OUT <= (jtag_tms xor signals_invert(4)) when signals_invert(5) = '1' else signals_invert(4);
+JTAG1_TDI_OUT <= (jtag_tdi xor signals_invert(2)) when signals_invert(3) = '1' else signals_invert(2);
+JTAG2_TCK_OUT <= (jtag_tck2 xor signals_invert2(6)) when signals_invert2(7) = '1' else signals_invert2(6);
+JTAG2_TMS_OUT <= (jtag_tms2 xor signals_invert2(4)) when signals_invert2(5) = '1' else signals_invert2(4);
+JTAG2_TDI_OUT <= (jtag_tdi2 xor signals_invert2(2)) when signals_invert2(3) = '1' else signals_invert2(2);
+JTAG3_TCK_OUT <= (jtag_tck3 xor signals_invert3(6)) when signals_invert3(7) = '1' else signals_invert3(6);
+JTAG3_TMS_OUT <= (jtag_tms3 xor signals_invert3(4)) when signals_invert3(5) = '1' else signals_invert3(4);
+JTAG3_TDI_OUT <= (jtag_tdi3 xor signals_invert3(2)) when signals_invert3(3) = '1' else signals_invert3(2);
+-- x1_saddr(3) <= (jtag_tck xor signals_invert(6)) when signals_invert(7) = '1' else signals_invert(6);
+-- x1_saddr(2) <= (jtag_tms xor signals_invert(4)) when signals_invert(5) = '1' else signals_invert(4);
+-- x1_saddr(1) <= (jtag_tdi xor signals_invert(2)) when signals_invert(3) = '1' else signals_invert(2);
+-- x1_saddr(0) <= JTAG_TDO_IN;
+
+jtag_tdo_evtlinv <= (JTAG1_TDO_IN xor signals_invert(0)) when signals_invert(1) = '1' else signals_invert(0);
+jtag_tdo_evtlinv2 <= (JTAG2_TDO_IN xor signals_invert2(0)) when signals_invert2(1) = '1' else signals_invert2(0);
+jtag_tdo_evtlinv3 <= (JTAG3_TDO_IN xor signals_invert3(0)) when signals_invert3(1) = '1' else signals_invert3(0);
+
+MAPS_CLK1_out_int <= signals_invert(12) when signals_invert(13) = '1' else signals_invert(12);
+MAPS_CLK1_out_int2 <= (not signals_invert(12)) when signals_invert(13) = '1' else signals_invert(12);
+MAPS_CLK2_out_int <= signals_invert(12) when signals_invert(13) = '1' else signals_invert(12);
+MAPS_CLK2_out_int2 <= (not signals_invert(12)) when signals_invert(13) = '1' else signals_invert(12);
+MAPS_CLK3_out_int <= signals_invert(12) when signals_invert(13) = '1' else signals_invert(12);
+MAPS_CLK3_out_int2 <= (not signals_invert(12)) when signals_invert(13) = '1' else signals_invert(12);
+
+   ODDR_MAPS_CLK1_out : ODDR
+   generic map(
+      DDR_CLK_EDGE => "SAME_EDGE", -- "OPPOSITE_EDGE" or "SAME_EDGE" 
+      INIT => '0',   -- Initial value for Q port ('1' or '0')
+      SRTYPE => "SYNC") -- Reset Type ("ASYNC" or "SYNC")
+   port map (
+      Q => MAPS_CLK1_out,   -- 1-bit DDR output
+      C => MAPS_CLK,    -- 1-bit clock input
+      CE => '1',  -- 1-bit clock enable input
+      D1 => MAPS_CLK1_out_int,  -- 1-bit data input (positive edge) -- inverted output
+      D2 => MAPS_CLK1_out_int2,  -- 1-bit data input (negative edge) -- inverted output
+      R => '0',    -- 1-bit reset input
+      S => '0'     -- 1-bit set input
+   );  
+
+   ODDR_MAPS_CLK2_out : ODDR
+   generic map(
+      DDR_CLK_EDGE => "SAME_EDGE", -- "OPPOSITE_EDGE" or "SAME_EDGE" 
+      INIT => '0',   -- Initial value for Q port ('1' or '0')
+      SRTYPE => "SYNC") -- Reset Type ("ASYNC" or "SYNC")
+   port map (
+      Q => MAPS_CLK2_out,   -- 1-bit DDR output
+      C => MAPS_CLK,    -- 1-bit clock input
+      CE => '1',  -- 1-bit clock enable input
+      D1 => MAPS_CLK2_out_int,  -- 1-bit data input (positive edge) -- inverted output
+      D2 => MAPS_CLK2_out_int2,  -- 1-bit data input (negative edge) -- inverted output
+      R => '0',    -- 1-bit reset input
+      S => '0'     -- 1-bit set input
+   );  
+
+   ODDR_MAPS_CLK3_out : ODDR
+   generic map(
+      DDR_CLK_EDGE => "SAME_EDGE", -- "OPPOSITE_EDGE" or "SAME_EDGE" 
+      INIT => '0',   -- Initial value for Q port ('1' or '0')
+      SRTYPE => "SYNC") -- Reset Type ("ASYNC" or "SYNC")
+   port map (
+      Q => MAPS_CLK3_out,   -- 1-bit DDR output
+      C => MAPS_CLK,    -- 1-bit clock input
+      CE => '1',  -- 1-bit clock enable input
+      D1 => MAPS_CLK3_out_int,  -- 1-bit data input (positive edge) -- inverted output
+      D2 => MAPS_CLK3_out_int2,  -- 1-bit data input (negative edge) -- inverted output
+      R => '0',    -- 1-bit reset input
+      S => '0'     -- 1-bit set input
+   );  
+
+
+-- MAPS_start_out
+--   ODDR_MAPS_start_out : ODDR
+--   generic map(
+--      DDR_CLK_EDGE => "SAME_EDGE", -- "OPPOSITE_EDGE" or "SAME_EDGE" 
+--      INIT => '0',   -- Initial value for Q port ('1' or '0')
+--      SRTYPE => "SYNC") -- Reset Type ("ASYNC" or "SYNC")
+--   port map (
+--      Q => MAPS_start_out,   -- 1-bit DDR output
+--      C => MAPS_CLK,    -- 1-bit clock input
+--      CE => '1',  -- 1-bit clock enable input
+--      D1 => not MAPS_start,  -- 1-bit data input (positive edge) -- inverted output
+--      D2 => not MAPS_start,  -- 1-bit data input (negative edge) -- inverted output
+--      R => '0',    -- 1-bit reset input
+--      S => '0'     -- 1-bit set input
+--   );        
+MAPS_start1_out <= (MAPS_start xor signals_invert(8)) when signals_invert(9) = '1' else signals_invert(8); -- activated/deactivated and inverted/non-inverted
+MAPS_start2_out <= (MAPS_start xor signals_invert2(8)) when signals_invert2(9) = '1' else signals_invert2(8); -- activated/deactivated and inverted/non-inverted
+MAPS_start3_out <= (MAPS_start xor signals_invert3(8)) when signals_invert3(9) = '1' else signals_invert3(8); -- activated/deactivated and inverted/non-inverted
+
+
+       -- MAPS_reset_out
+--   ODDR_MAPS_reset_out : ODDR
+--   generic map(
+--      DDR_CLK_EDGE => "SAME_EDGE", -- "OPPOSITE_EDGE" or "SAME_EDGE" 
+--      INIT => '0',   -- Initial value for Q port ('1' or '0')
+--      SRTYPE => "SYNC") -- Reset Type ("ASYNC" or "SYNC")
+--   port map (
+--      Q => MAPS_reset_out,   -- 1-bit DDR output
+--      C => MAPS_CLK,    -- 1-bit clock input
+--      CE => '1',  -- 1-bit clock enable input
+--      D1 => not MAPS_reset,  -- 1-bit data input (positive edge) -- inverted output
+--      D2 => not MAPS_reset,  -- 1-bit data input (negative edge) -- inverted output
+--      R => '0',    -- 1-bit reset input
+--      S => '0'     -- 1-bit set input
+--   );        
+--MAPS_reset_out <= not MAPS_reset;
+MAPS_reset1_out <= (MAPS_reset xor signals_invert(10)) when signals_invert(11) = '1' else signals_invert(10);
+MAPS_reset2_out <= (MAPS_reset xor signals_invert2(10)) when signals_invert2(11) = '1' else signals_invert2(10);
+MAPS_reset3_out <= (MAPS_reset xor signals_invert3(10)) when signals_invert3(11) = '1' else signals_invert3(10);
+
+COMB_MAPS_START : process(prog_jtag_finished_pulse_MAPS_CLK, MAPS_start, MAPS_start_count, beforestartcounter, beforestartcounter_finished, beforestartcounter_finished_last, waitbeforestart)
+begin
+  MAPS_start_count_next <= std_logic_vector(unsigned(MAPS_start_count) - 1);
+  if(beforestartcounter /= beforestartcounter_zero) then
+         beforestartcounter_next <= std_logic_vector(unsigned(beforestartcounter) - 1);
+  end if;
+  MAPS_start_next <= MAPS_start;
+  if(MAPS_start = '1') then
+    if(to_integer(unsigned(MAPS_start_count)) = 0) then
+      MAPS_start_next <= '0';
+    end if;
+  end if;  
+  if(prog_jtag_finished_pulse_MAPS_CLK = '1') then
+    beforestartcounter_next <= waitbeforestart;
+  end if;
+  if(beforestartcounter_finished = '1' and beforestartcounter_finished_last='0') then
+    MAPS_start_next <= '1';
+    MAPS_start_count_next <= "1000000"; -- 65 clock cycles start (on for 64,...,4,3,2,1,0)
+  end if;
+end process;
+
+beforestartcounter_finished_next <= '1' when beforestartcounter = beforestartcounter_zero else '0';
+beforestartcounter_finished_last_next <= beforestartcounter_finished;
+
+SEQ_MAPS_START : process(MAPS_CLK, RESET)
+begin
+  if(rising_edge(MAPS_CLK)) then
+    if(RESET='1') then
+      MAPS_start <= '0';
+      MAPS_start_count <= (others => '0');
+      beforestartcounter <= (others => '0');
+      beforestartcounter_finished <= '1';
+      beforestartcounter_finished_last <= '1';
+    else
+      MAPS_start <= MAPS_start_next;
+      MAPS_start_count <= MAPS_start_count_next;
+      beforestartcounter <= beforestartcounter_next;
+      beforestartcounter_finished <= beforestartcounter_finished_next;
+      beforestartcounter_finished_last <= beforestartcounter_finished_last_next;
+    end if;
+  end if;
+end process;
+
+
+
+COMB_MAPS_RESET : process(spillbreak_trigger_MAPS_CLK, MAPS_reset, MAPS_reset_count)
+begin
+  MAPS_reset_count_next <= std_logic_vector(unsigned(MAPS_reset_count) - 1);
+  MAPS_reset_next <= MAPS_reset;
+  if(MAPS_reset = '1') then
+    if(to_integer(unsigned(MAPS_reset_count)) = 0) then
+      MAPS_reset_next <= '0';
+    end if;
+  end if;  
+  if(spillbreak_trigger_MAPS_CLK = '1') then
+    MAPS_reset_next <= '1';
+    MAPS_reset_count_next <= "1100100"; -- 3 clock cycles reset (on for 2,1,0)
+  end if;
+end process;
+
+-- reset signal
+SEQ_MAPS_RESET : process(MAPS_CLK, RESET)
+begin
+  if(rising_edge(MAPS_CLK)) then
+    if(RESET='1') then
+      MAPS_reset <= '0';
+      MAPS_reset_count <= (others => '0');
+    else
+      MAPS_reset <= MAPS_reset_next;
+      MAPS_reset_count <= MAPS_reset_count_next;
+    end if;
+  end if;
+end process;
+
+
+-- spill trigger (MAPS_CLK)
+spillbreak_trigger_MAPS_CLK <= '1' when (event_trigger_ff_MAPS_CLK = '1' and event_trigger_ff_last_MAPS_CLK = '0') else '0';
+event_trigger_ff_MAPS_CLK_next <= event_trigger   when external_trigger = '1' else
+                                  fake_event_trigger;
+event_trigger_ff_last_MAPS_CLK_next <= event_trigger_ff_MAPS_CLK;
+SEQ_SPILLTRIGGER_MAPS_CLK : process(MAPS_CLK, RESET)
+begin
+  if(rising_edge(MAPS_CLK)) then
+    if(RESET='1') then
+      event_trigger_ff_last_MAPS_CLK <= '0';
+      event_trigger_ff_MAPS_CLK <= '0';
+    else
+      event_trigger_ff_MAPS_CLK <= event_trigger_ff_MAPS_CLK_next;
+      event_trigger_ff_last_MAPS_CLK <= event_trigger_ff_last_MAPS_CLK_next;
+    end if;
+  end if;
+end process;
+
+
+-- spill trigger
+spillbreak_trigger <= '1' when (event_trigger_ff = '1' and event_trigger_ff_last = '0') else '0';
+event_trigger_ff_next <= event_trigger  when external_trigger = '1' else
+                         fake_event_trigger;
+event_trigger_ff_last_next <= event_trigger_ff;
+SEQ_SPILLTRIGGER : process(CLK, RESET)
+begin
+  if(rising_edge(CLK)) then
+    if(RESET='1') then
+      event_trigger_ff_last <= '0';
+      event_trigger_ff <= '0';
+    else
+      event_trigger_ff <= event_trigger_ff_next;
+      event_trigger_ff_last <= event_trigger_ff_last_next;
+    end if;
+  end if;
+end process;
+
+
+-- spill trigger (MAPS_CLK)
+prog_jtag_finished_pulse_MAPS_CLK <= '1' when (prog_jtag_finished_ff_MAPS_CLK = '1' and prog_jtag_finished_ff_last_MAPS_CLK = '0') else '0';
+prog_jtag_finished_ff_MAPS_CLK_next <= prog_jtag_finished and prog_jtag_finished2 and prog_jtag_finished3;
+prog_jtag_finished_ff_last_MAPS_CLK_next <= prog_jtag_finished_ff_MAPS_CLK;
+SEQ_PROG_JTAG_FINISHED_MAPS_CLK : process(MAPS_CLK, RESET)
+begin
+  if(rising_edge(MAPS_CLK)) then
+    if(RESET='1') then
+      prog_jtag_finished_ff_MAPS_CLK <= '0';
+      prog_jtag_finished_ff_last_MAPS_CLK <= '0';
+    else
+      prog_jtag_finished_ff_MAPS_CLK <= prog_jtag_finished_ff_MAPS_CLK_next;
+      prog_jtag_finished_ff_last_MAPS_CLK <= prog_jtag_finished_ff_last_MAPS_CLK_next;
+    end if;
+  end if;
+end process;
+
+fet_counter_next <= (others => '0') when trbnet_fet = '1' else std_logic_vector(unsigned(fet_counter) +1) and fet_counter_limit;
+fake_event_trigger_next <= '1' when (fet_counter = x"00000000" or fet_counter = x"00000001") else
+                          '0';
+
+fet_c_sync: process(CLK, RESET)
+begin
+  if(rising_edge(CLK)) then
+    if(RESET='1') then
+      fet_counter <= (others => '0');
+      fake_event_trigger <= '0';
+    else
+      fet_counter <= fet_counter_next;
+      fake_event_trigger <= fake_event_trigger_next;
+    end if;
+  end if;
+end process;
+
+com_settings_all : process
+begin
+  wait until (CLK'event and CLK='1');
+  com_settings_write_ack_out <= '0';
+  com_settings_dataready_out <= '0';
+  trbnet_fet <= '0';
+  if(com_settings_write_enable_in = '1') then
+    if(com_settings_addr_in = x"01") then
+      fet_counter_limit <= com_settings_data_in;
+      com_settings_write_ack_out <= '1';
+    elsif(com_settings_addr_in = x"02") then
+      jcounter_initvalue <= com_settings_data_in(28 downto 0);
+      com_settings_write_ack_out <= '1';
+    elsif(com_settings_addr_in = x"03") then
+      trbnet_fet <= '1';
+      com_settings_write_ack_out <= '1';
+    elsif(com_settings_addr_in = x"06") then
+      signals_invert <= com_settings_data_in(13 downto 0); -- 13-12: MAPS_CLK, 11-10: RESET, 9-8: START, 7-6: TCK, 5-4: TMS, 3-2: TDI, 1-0: TDO
+      com_settings_write_ack_out <= '1';
+    elsif(com_settings_addr_in = x"07") then
+      waitbeforestart <= com_settings_data_in(31 downto 0);
+      com_settings_write_ack_out <= '1';
+    elsif(com_settings_addr_in = x"08") then
+      signals_invert2 <= com_settings_data_in(13 downto 0); -- (13-12: MAPS_CLK), 11-10: RESET, 9-8: START, 7-6: TCK, 5-4: TMS, 3-2: TDI, 1-0: TDO
+      com_settings_write_ack_out <= '1';
+    elsif(com_settings_addr_in = x"09") then
+      signals_invert3 <= com_settings_data_in(13 downto 0); -- (13-12: MAPS_CLK), 11-10: RESET, 9-8: START, 7-6: TCK, 5-4: TMS, 3-2: TDI, 1-0: TDO
+      com_settings_write_ack_out <= '1';
+    end if;
+  elsif(com_settings_read_enable_in = '1') then
+    if(com_settings_addr_in = x"01") then
+      com_settings_data_out <= fet_counter_limit;
+      com_settings_dataready_out <= '1';
+    elsif(com_settings_addr_in = x"02") then
+      com_settings_data_out(28 downto 0) <= jcounter_initvalue;
+      com_settings_data_out(31 downto 29) <= (others => '0');
+      com_settings_dataready_out <= '1';
+    elsif(com_settings_addr_in = x"04") then
+      com_settings_data_out <= fet_counter;
+      com_settings_dataready_out <= '1';
+    elsif(com_settings_addr_in = x"05") then
+      com_settings_data_out(28 downto 0) <= jcounter;
+      com_settings_data_out(31 downto 29) <= (others => '0');
+      com_settings_dataready_out <= '1';
+    elsif(com_settings_addr_in = x"06") then
+      com_settings_data_out(13 downto 0) <= signals_invert;
+      com_settings_data_out(31 downto 14) <= (others => '0');
+      com_settings_dataready_out <= '1';
+    elsif(com_settings_addr_in = x"07") then
+      com_settings_data_out <= waitbeforestart;
+      com_settings_dataready_out <= '1';
+    elsif(com_settings_addr_in = x"08") then
+      com_settings_data_out(13 downto 0) <= signals_invert2;
+      com_settings_data_out(31 downto 14) <= (others => '0');
+      com_settings_dataready_out <= '1';
+    elsif(com_settings_addr_in = x"09") then
+      com_settings_data_out(13 downto 0) <= signals_invert3;
+      com_settings_data_out(31 downto 14) <= (others => '0');
+      com_settings_dataready_out <= '1';
+    end if;    
+  end if;  
+  if(RESET = '1') then
+    fet_counter_limit <= x"7FFFFFFF";
+    jcounter_initvalue <= (others => '1');
+    trbnet_fet <= '0';
+  end if;  
+end process;
+
+
+
+
+
+end architecture basic;
diff --git a/vhdl/sim/sim_jtag_cmd_m26c.prj.mpf b/vhdl/sim/sim_jtag_cmd_m26c.prj.mpf
new file mode 100644 (file)
index 0000000..7f5daec
--- /dev/null
@@ -0,0 +1,1746 @@
+; Copyright 1991-2011 Mentor Graphics Corporation
+;
+; All Rights Reserved.
+;
+; THIS WORK CONTAINS TRADE SECRET AND PROPRIETARY INFORMATION WHICH IS THE PROPERTY OF 
+; MENTOR GRAPHICS CORPORATION OR ITS LICENSORS AND IS SUBJECT TO LICENSE TERMS.
+;   
+
+[Library]
+std = $MODEL_TECH/../std
+ieee = $MODEL_TECH/../ieee
+vital2000 = $MODEL_TECH/../vital2000
+;
+; VITAL concerns:
+;
+; The library ieee contains (among other packages) the packages of the
+; VITAL 2000 standard.  When a design uses VITAL 2000 exclusively, it should use
+; the physical library ieee (recommended), or use the physical library
+; vital2000, but not both.  The design can use logical library ieee and/or
+; vital2000 as long as each of these maps to the same physical library, either
+; ieee or vital2000.
+;
+; A design using the 1995 version of the VITAL packages, whether or not
+; it also uses the 2000 version of the VITAL packages, must have logical library
+; name ieee mapped to physical library vital1995.  (A design cannot use library
+; vital1995 directly because some packages in this library use logical name ieee
+; when referring to the other packages in the library.)  The design source
+; should use logical name ieee when referring to any packages there except the
+; VITAL 2000 packages.  Any VITAL 2000 present in the design must use logical
+; name vital2000 (mapped to physical library vital2000) to refer to those
+; packages.
+; ieee = $MODEL_TECH/../vital1995
+;
+; For compatiblity with previous releases, logical library name vital2000 maps
+; to library vital2000 (a different library than library ieee, containing the
+; same packages).
+; A design should not reference VITAL from both the ieee library and the
+; vital2000 library because the vital packages are effectively different.
+; A design that references both the ieee and vital2000 libraries must have
+; both logical names ieee and vital2000 mapped to the same library, either of
+; these:
+;   $MODEL_TECH/../ieee
+;   $MODEL_TECH/../vital2000
+;
+verilog = $MODEL_TECH/../verilog
+std_developerskit = $MODEL_TECH/../std_developerskit
+synopsys = $MODEL_TECH/../synopsys
+modelsim_lib = $MODEL_TECH/../modelsim_lib
+sv_std = $MODEL_TECH/../sv_std
+mtiAvm = $MODEL_TECH/../avm
+mtiOvm = $MODEL_TECH/../ovm-2.1.2
+mtiUvm = $MODEL_TECH/../uvm-1.1
+mtiUPF = $MODEL_TECH/../upf_lib
+mtiPA  = $MODEL_TECH/../pa_lib
+floatfixlib = $MODEL_TECH/../floatfixlib
+mc2_lib = $MODEL_TECH/../mc2_lib
+;vhdl_psl_checkers = $MODEL_TECH/../vhdl_psl_checkers       // Source files only for this release
+;verilog_psl_checkers = $MODEL_TECH/../verilog_psl_checkers // Source files only for this release
+;mvc_lib = $MODEL_TECH/../mvc_lib
+
+work = work
+[vcom]
+; VHDL93 variable selects language version as the default. 
+; Default is VHDL-2002.
+; Value of 0 or 1987 for VHDL-1987.
+; Value of 1 or 1993 for VHDL-1993.
+; Default or value of 2 or 2002 for VHDL-2002.
+; Value of 3 or 2008 for VHDL-2008
+VHDL93 = 2002
+
+; Ignore VHDL-2008 declaration of REAL_VECTOR in package STANDARD. Default is off.
+; ignoreStandardRealVector = 1
+
+; Show source line containing error. Default is off.
+; Show_source = 1
+
+; Turn off unbound-component warnings. Default is on.
+; Show_Warning1 = 0
+
+; Turn off process-without-a-wait-statement warnings. Default is on.
+; Show_Warning2 = 0
+
+; Turn off null-range warnings. Default is on.
+; Show_Warning3 = 0
+
+; Turn off no-space-in-time-literal warnings. Default is on.
+; Show_Warning4 = 0
+
+; Turn off multiple-drivers-on-unresolved-signal warnings. Default is on.
+; Show_Warning5 = 0
+
+; Turn off optimization for IEEE std_logic_1164 package. Default is on.
+; Optimize_1164 = 0
+
+; Turn on resolving of ambiguous function overloading in favor of the
+; "explicit" function declaration (not the one automatically created by
+; the compiler for each type declaration). Default is off.
+; The .ini file has Explicit enabled so that std_logic_signed/unsigned
+; will match the behavior of synthesis tools.
+Explicit = 1
+
+; Turn off acceleration of the VITAL packages. Default is to accelerate.
+; NoVital = 1
+
+; Turn off VITAL compliance checking. Default is checking on.
+; NoVitalCheck = 1
+
+; Ignore VITAL compliance checking errors. Default is to not ignore.
+; IgnoreVitalErrors = 1
+
+; Turn off VITAL compliance checking warnings. Default is to show warnings.
+; Show_VitalChecksWarnings = 0
+
+; Turn off PSL assertion warning messages. Default is to show warnings.
+; Show_PslChecksWarnings = 0
+
+; Enable parsing of embedded PSL assertions. Default is enabled.
+; EmbeddedPsl = 0
+
+; Keep silent about case statement static warnings.
+; Default is to give a warning.
+; NoCaseStaticError = 1
+
+; Keep silent about warnings caused by aggregates that are not locally static.
+; Default is to give a warning.
+; NoOthersStaticError = 1
+
+; Treat as errors:
+;   case statement static warnings
+;   warnings caused by aggregates that are not locally static
+; Overrides NoCaseStaticError, NoOthersStaticError settings.
+; PedanticErrors = 1
+
+; Turn off inclusion of debugging info within design units.
+; Default is to include debugging info.
+; NoDebug = 1
+
+; Turn off "Loading..." messages. Default is messages on.
+; Quiet = 1
+
+; Turn on some limited synthesis rule compliance checking. Checks only:
+;    -- signals used (read) by a process must be in the sensitivity list
+; CheckSynthesis = 1
+
+; Activate optimizations on expressions that do not involve signals,
+; waits, or function/procedure/task invocations. Default is off.
+; ScalarOpts = 1
+
+; Turns on lint-style checking.
+; Show_Lint = 1
+
+; Require the user to specify a configuration for all bindings,
+; and do not generate a compile time default binding for the
+; component. This will result in an elaboration error of
+; 'component not bound' if the user fails to do so. Avoids the rare
+; issue of a false dependency upon the unused default binding.
+; RequireConfigForAllDefaultBinding = 1
+
+; Perform default binding at compile time.
+; Default is to do default binding at load time.
+; BindAtCompile = 1;
+
+; Inhibit range checking on subscripts of arrays. Range checking on
+; scalars defined with subtypes is inhibited by default.
+; NoIndexCheck = 1
+
+; Inhibit range checks on all (implicit and explicit) assignments to
+; scalar objects defined with subtypes.
+; NoRangeCheck = 1
+
+; Run the 0-in compiler on the VHDL source files
+; Default is off.
+; ZeroIn = 1
+
+; Set the options to be passed to the 0-in compiler.
+; Default is "".
+; ZeroInOptions = ""
+
+; Set the synthesis prefix to be honored for synthesis pragma recognition.
+; Default is "".
+; SynthPrefix = ""
+
+; Turn on code coverage in VHDL design units. Default is off.
+; Coverage = sbceft
+
+; Turn off code coverage in VHDL subprograms. Default is on.
+; CoverageSub = 0
+
+; Automatically exclude VHDL case statement OTHERS choice branches.
+; This includes OTHERS choices in selected signal assigment statements.
+; Default is to not exclude.
+; CoverExcludeDefault = 1
+
+; Control compiler and VOPT optimizations that are allowed when
+; code coverage is on.  Refer to the comment for this in the [vlog] area. 
+; CoverOpt = 3
+
+; Turn on or off clkOpt optimization for code coverage. Default is on.
+; CoverClkOpt = 1
+
+; Turn on or off clkOpt optimization builtins for code coverage. Default is on.
+; CoverClkOptBuiltins = 0
+
+; Inform code coverage optimizations to respect VHDL 'H' and 'L'
+; values on signals in conditions and expressions, and to not automatically
+; convert them to '1' and '0'. Default is to not convert.
+; CoverRespectHandL = 0
+
+; Increase or decrease the maximum number of rows allowed in a UDP table
+; implementing a VHDL condition coverage or expression coverage expression.
+; More rows leads to a longer compile time, but more expressions covered.
+; CoverMaxUDPRows = 192
+
+; Increase or decrease the maximum number of input patterns that are present
+; in FEC table. This leads to a longer compile time with more expressions
+; covered with FEC metric.
+; CoverMaxFECRows = 192
+
+; Enable or disable Focused Expression Coverage analysis for conditions and
+; expressions. Focused Expression Coverage data is provided by default when
+; expression and/or condition coverage is active.
+; CoverFEC = 0
+
+; Enable or disable UDP Coverage analysis for conditions and expressions.
+; UDP Coverage data is provided by default when expression and/or condition
+; coverage is active.
+; CoverUDP = 0
+
+; Enable or disable short circuit evaluation of conditions and expressions when
+; condition or expression coverage is active. Short circuit evaluation is enabled
+; by default.
+; CoverShortCircuit = 0
+
+; Enable code coverage reporting of code that has been optimized away.
+; The default is not to report.
+; CoverReportCancelled = 1
+
+; Use this directory for compiler temporary files instead of "work/_temp"
+; CompilerTempDir = /tmp
+
+; Set this to cause the compilers to force data to be committed to disk
+; when the files are closed.
+; SyncCompilerFiles = 1
+
+; Add VHDL-AMS declarations to package STANDARD
+; Default is not to add
+; AmsStandard = 1
+
+; Range and length checking will be performed on array indices and discrete
+; ranges, and when violations are found within subprograms, errors will be
+; reported. Default is to issue warnings for violations, because subprograms
+; may not be invoked.
+; NoDeferSubpgmCheck = 0
+
+; Turn ON detection of FSMs having single bit current state variable.
+; FsmSingle = 1
+
+; Turn off reset state transitions in FSM.
+; FsmResetTrans = 0
+
+; Turn ON detection of FSM Implicit Transitions.
+; FsmImplicitTrans = 1
+
+; Controls whether or not to show immediate assertions with constant expressions
+; in GUI/report/UCDB etc. By default, immediate assertions with constant
+; expressions are shown in GUI/report/UCDB etc. This does not affect
+; evaluation of immediate assertions.
+; ShowConstantImmediateAsserts = 0
+
+; Controls how VHDL basic identifiers are stored with the design unit.
+; Does not make the language case-sensitive, effects only how declarations
+; declared with basic identifiers have their names stored and printed
+; (examine, etc.).
+; Default is to preserve the case as originally depicted in the VHDL source.
+; Value of 0 indicates to change basic identifiers to lower case.
+; PreserveCase = 0
+
+; For Configuration Declarations, controls the effect that USE clauses have
+; on visibility inside the configuration items being configured.  If 1
+; (the default), then use pre-10.0 behavior. If 0, then for stricter LRM-compliance
+; extend the visibility of objects made visible through USE clauses into nested
+; component configurations.
+; OldVHDLConfigurationVisibility = 0
+
+; Allows VHDL configuration declarations to be in a different library from
+; the corresponding configured entity. Default is to not allow this for
+; stricter LRM-compliance
+; SeparateConfigLibrary = 1;
+
+; Change how subprogram out parameter of type array and record are treated.
+; If 1, always initial the out parameter to its default value.
+; If 2, do not initialize the out parameter. 
+; The value 0 indicates use the default for the langauge version being compiled.
+; Prior to 10.1 all langauge version did not initialize out composite parameters.
+; 10.1 and later files compile with -2008 initialize by default
+; InitOutCompositeParam = 0
+
+[vlog]
+; Turn off inclusion of debugging info within design units.
+; Default is to include debugging info.
+; NoDebug = 1
+
+; Turn on `protect compiler directive processing.
+; Default is to ignore `protect directives.
+; Protect = 1
+
+; Turn off "Loading..." messages. Default is messages on.
+; Quiet = 1
+
+; Turn on Verilog hazard checking (order-dependent accessing of global vars).
+; Default is off.
+; Hazard = 1
+
+; Turn on converting regular Verilog identifiers to uppercase. Allows case
+; insensitivity for module names. Default is no conversion.
+; UpCase = 1
+
+; Activate optimizations on expressions that do not involve signals,
+; waits, or function/procedure/task invocations. Default is off.
+; ScalarOpts = 1
+
+; Turns on lint-style checking.
+; Show_Lint = 1
+
+; Show source line containing error. Default is off.
+; Show_source = 1
+
+; Turn on bad option warning. Default is off.
+; Show_BadOptionWarning = 1
+
+; Revert back to IEEE 1364-1995 syntax, default is 0 (off).
+; vlog95compat = 1
+
+; Turn off PSL warning messages. Default is to show warnings.
+; Show_PslChecksWarnings = 0
+
+; Enable parsing of embedded PSL assertions. Default is enabled.
+; EmbeddedPsl = 0
+
+; Set the threshold for automatically identifying sparse Verilog memories.
+; A memory with depth equal to or more than the sparse memory threshold gets
+; marked as sparse automatically, unless specified otherwise in source code
+; or by +nosparse commandline option of vlog or vopt.
+; The default is 1M.  (i.e. memories with depth equal
+; to or greater than 1M are marked as sparse)
+; SparseMemThreshold = 1048576 
+
+; Run the 0-in compiler on the Verilog source files
+; Default is off.
+; ZeroIn = 1
+
+; Set the options to be passed to the 0-in compiler.
+; Default is "".
+; ZeroInOptions = ""
+
+; Set the synthesis prefix to be honored for synthesis pragma recognition.
+; Default is "".
+; SynthPrefix = ""
+
+; Set the option to treat all files specified in a vlog invocation as a
+; single compilation unit. The default value is set to 0 which will treat
+; each file as a separate compilation unit as specified in the P1800 draft standard.
+; MultiFileCompilationUnit = 1
+
+; Turn on code coverage in Verilog design units. Default is off.
+; Coverage = sbceft
+
+; Automatically exclude Verilog case statement default branches. 
+; Default is to not automatically exclude defaults.
+; CoverExcludeDefault = 1
+
+; Increase or decrease the maximum number of rows allowed in a UDP table
+; implementing a Verilog condition coverage or expression coverage expression.
+; More rows leads to a longer compile time, but more expressions covered.
+; CoverMaxUDPRows = 192
+
+; Increase or decrease the maximum number of input patterns that are present
+; in FEC table. This leads to a longer compile time with more expressions
+; covered with FEC metric.
+; CoverMaxFECRows = 192
+
+; Enable or disable Focused Expression Coverage analysis for conditions and
+; expressions. Focused Expression Coverage data is provided by default when
+; expression and/or condition coverage is active.
+; CoverFEC = 0
+
+; Enable or disable UDP Coverage analysis for conditions and expressions.
+; UDP Coverage data is provided by default when expression and/or condition
+; coverage is active.
+; CoverUDP = 0
+
+; Enable or disable short circuit evaluation of conditions and expressions when
+; condition or expression coverage is active. Short circuit evaluation is enabled
+; by default.
+; CoverShortCircuit = 0
+
+
+; Turn on code coverage in VLOG `celldefine modules and modules included
+; using vlog -v and -y. Default is off.
+; CoverCells = 1
+
+; Enable code coverage reporting of code that has been optimized away.
+; The default is not to report.
+; CoverReportCancelled = 1
+
+; Control compiler and VOPT optimizations that are allowed when
+; code coverage is on. This is a number from 1 to 4, with the following
+; meanings (the default is 3):
+;    1 -- Turn off all optimizations that affect coverage reports.
+;    2 -- Allow optimizations that allow large performance improvements 
+;         by invoking sequential processes only when the data changes. 
+;         This may make major reductions in coverage counts.
+;    3 -- In addition, allow optimizations that may change expressions or 
+;         remove some statements. Allow constant propagation. Allow VHDL
+;         subprogram inlining and VHDL FF recognition. 
+;    4 -- In addition, allow optimizations that may remove major regions of 
+;         code by changing assignments to built-ins or removing unused
+;         signals. Change Verilog gates to continuous assignments.
+; CoverOpt = 3
+
+; Specify the override for the default value of "cross_num_print_missing"
+; option for the Cross in Covergroups. If not specified then LRM default
+; value of 0 (zero) is used. This is a compile time option.
+; SVCrossNumPrintMissingDefault = 0
+
+; Setting following to 1 would cause creation of variables which
+; would represent the value of Coverpoint expressions. This is used
+; in conjunction with "SVCoverpointExprVariablePrefix" option
+; in the modelsim.ini
+; EnableSVCoverpointExprVariable = 0
+
+; Specify the override for the prefix used in forming the variable names
+; which represent the Coverpoint expressions. This is used in conjunction with 
+; "EnableSVCoverpointExprVariable" option of the modelsim.ini
+; The default prefix is "expr".
+; The variable name is
+;    variable name => <prefix>_<coverpoint name>
+; SVCoverpointExprVariablePrefix = expr
+
+; Override for the default value of the SystemVerilog covergroup,
+; coverpoint, and cross option.goal (defined to be 100 in the LRM).
+; NOTE: It does not override specific assignments in SystemVerilog
+; source code. NOTE: The modelsim.ini variable "SVCovergroupGoal"
+; in the [vsim] section can override this value.
+; SVCovergroupGoalDefault = 100
+
+; Override for the default value of the SystemVerilog covergroup,
+; coverpoint, and cross type_option.goal (defined to be 100 in the LRM)
+; NOTE: It does not override specific assignments in SystemVerilog
+; source code. NOTE: The modelsim.ini variable "SVCovergroupTypeGoal"
+; in the [vsim] section can override this value.
+; SVCovergroupTypeGoalDefault = 100
+
+; Specify the override for the default value of "strobe" option for the
+; Covergroup Type. This is a compile time option which forces "strobe" to
+; a user specified default value and supersedes SystemVerilog specified
+; default value of '0'(zero). NOTE: This can be overriden by a runtime
+; modelsim.ini variable "SVCovergroupStrobe" in the [vsim] section.
+; SVCovergroupStrobeDefault = 0
+
+; Specify the override for the default value of "merge_instances" option for
+; the Covergroup Type. This is a compile time option which forces 
+; "merge_instances" to a user specified default value and supersedes 
+; SystemVerilog specified default value of '0'(zero).
+; SVCovergroupMergeInstancesDefault = 0
+
+; Specify the override for the default value of "per_instance" option for the
+; Covergroup variables. This is a compile time option which forces "per_instance"
+; to a user specified default value and supersedes SystemVerilog specified
+; default value of '0'(zero).
+; SVCovergroupPerInstanceDefault = 0
+
+; Specify the override for the default value of "get_inst_coverage" option for the
+; Covergroup variables. This is a compile time option which forces 
+; "get_inst_coverage" to a user specified default value and supersedes 
+; SystemVerilog specified default value of '0'(zero).
+; SVCovergroupGetInstCoverageDefault = 0
+
+;
+; A space separated list of resource libraries that contain precompiled
+; packages.  The behavior is identical to using the "-L" switch.
+; 
+; LibrarySearchPath = <path/lib> [<path/lib> ...]
+LibrarySearchPath = mtiAvm mtiOvm mtiUvm mtiUPF
+
+; The behavior is identical to the "-mixedansiports" switch.  Default is off.
+; MixedAnsiPorts = 1
+
+; Enable SystemVerilog 3.1a $typeof() function. Default is off.
+; EnableTypeOf = 1
+
+; Only allow lower case pragmas. Default is disabled.
+; AcceptLowerCasePragmaOnly = 1
+
+; Set the maximum depth permitted for a recursive include file nesting.
+; IncludeRecursionDepthMax = 5
+
+; Turn ON detection of FSMs having single bit current state variable.
+; FsmSingle = 1
+
+; Turn off reset state transitions in FSM.
+; FsmResetTrans = 0
+
+; Turn off detections of FSMs having x-assignment.
+; FsmXAssign = 0
+
+; Turn ON detection of FSM Implicit Transitions.
+; FsmImplicitTrans = 1
+
+; List of file suffixes which will be read as SystemVerilog.  White space
+; in extensions can be specified with a back-slash: "\ ".  Back-slashes
+; can be specified with two consecutive back-slashes: "\\";
+; SVFileExtensions = sv svp svh
+
+; This setting is the same as the vlog -sv command line switch.
+; Enables SystemVerilog features and keywords when true (1).
+; When false (0), the rules of IEEE Std 1364-2001 are followed and 
+; SystemVerilog keywords are ignored. 
+; Svlog = 0
+
+; Prints attribute placed upon SV packages during package import
+; when true (1).  The attribute will be ignored when this
+; entry is false (0). The attribute name is "package_load_message".
+; The value of this attribute is a string literal.
+; Default is true (1).
+; PrintSVPackageLoadingAttribute = 1
+
+; Do not show immediate assertions with constant expressions in 
+; GUI/reports/UCDB etc. By default immediate assertions with constant 
+; expressions are shown in GUI/reports/UCDB etc. This does not affect 
+; evaluation of immediate assertions.
+; ShowConstantImmediateAsserts = 0
+
+; Controls if untyped parameters that are initialized with values greater
+; than 2147483647 are mapped to generics of type INTEGER or ignored.
+; If mapped to VHDL Integers, values greater than 2147483647
+; are mapped to negative values.
+; Default is to map these parameter to generic of type INTEGER
+; ForceUnsignedToVHDLInteger = 1
+
+; Enable AMS wreal (wired real) extensions.  Default is 0.
+; WrealType = 1
+
+[sccom]
+; Enable use of SCV include files and library.  Default is off.
+; UseScv = 1
+
+; Add C++ compiler options to the sccom command line by using this variable.
+; CppOptions = -g
+
+; Use custom C++ compiler located at this path rather than the default path.
+; The path should point directly at a compiler executable.
+; CppPath = /usr/bin/g++
+
+; Enable verbose messages from sccom.  Default is off.
+; SccomVerbose = 1
+
+; sccom logfile.  Default is no logfile.
+; SccomLogfile = sccom.log
+
+; Enable use of SC_MS include files and library.  Default is off.
+; UseScMs = 1
+
+[vopt]
+; Turn on code coverage in vopt.  Default is off. 
+; Coverage = sbceft
+
+; Control compiler optimizations that are allowed when
+; code coverage is on.  Refer to the comment for this in the [vlog] area. 
+; CoverOpt = 3
+
+; Increase or decrease the maximum number of rows allowed in a UDP table
+; implementing a vopt condition coverage or expression coverage expression.
+; More rows leads to a longer compile time, but more expressions covered.
+; CoverMaxUDPRows = 192
+
+; Increase or decrease the maximum number of input patterns that are present
+; in FEC table. This leads to a longer compile time with more expressions
+; covered with FEC metric.
+; CoverMaxFECRows = 192
+
+; Enable code coverage reporting of code that has been optimized away.
+; The default is not to report.
+; CoverReportCancelled = 1
+
+; Do not show immediate assertions with constant expressions in 
+; GUI/reports/UCDB etc. By default immediate assertions with constant 
+; expressions are shown in GUI/reports/UCDB etc. This does not affect 
+; evaluation of immediate assertions.
+; ShowConstantImmediateAsserts = 0
+
+; Set the maximum number of iterations permitted for a generate loop.
+; Restricting this permits the implementation to recognize infinite
+; generate loops.
+; GenerateLoopIterationMax = 100000
+
+; Set the maximum depth permitted for a recursive generate instantiation.
+; Restricting this permits the implementation to recognize infinite
+; recursions.
+; GenerateRecursionDepthMax = 200
+
+
+[vsim]
+; vopt flow
+; Set to turn on automatic optimization of a design.
+; Default is on
+VoptFlow = 1
+
+; Simulator resolution
+; Set to fs, ps, ns, us, ms, or sec with optional prefix of 1, 10, or 100.
+Resolution = ns
+
+; Disable certain code coverage exclusions automatically. 
+; Assertions and FSM are exluded from the code coverage by default
+; Set AutoExclusionsDisable = fsm to enable code coverage for fsm
+; Set AutoExclusionsDisable = assertions to enable code coverage for assertions
+; Set AutoExclusionsDisable = all to enable code coverage for all the automatic exclusions
+; Or specify comma or space separated list
+;AutoExclusionsDisable = fsm,assertions
+
+; User time unit for run commands
+; Set to default, fs, ps, ns, us, ms, or sec. The default is to use the
+; unit specified for Resolution. For example, if Resolution is 100ps,
+; then UserTimeUnit defaults to ps.
+; Should generally be set to default.
+UserTimeUnit = default
+
+; Default run length
+RunLength = 10 ms
+
+; Maximum iterations that can be run without advancing simulation time
+IterationLimit = 5000
+
+; Control PSL and Verilog Assume directives during simulation
+; Set SimulateAssumeDirectives = 0 to disable assume being simulated as asserts
+; Set SimulateAssumeDirectives = 1 to enable assume simulation as asserts
+; SimulateAssumeDirectives = 1 
+
+; Control the simulation of PSL and SVA
+; These switches can be overridden by the vsim command line switches:
+;    -psl, -nopsl, -sva, -nosva.
+; Set SimulatePSL = 0 to disable PSL simulation
+; Set SimulatePSL = 1 to enable PSL simulation (default)
+; SimulatePSL = 1 
+; Set SimulateSVA = 0 to disable SVA simulation
+; Set SimulateSVA = 1 to enable concurrent SVA simulation (default)
+; SimulateSVA = 1 
+
+; Directives to license manager can be set either as single value or as
+; space separated multi-values:
+; vhdl          Immediately reserve a VHDL license
+; vlog          Immediately reserve a Verilog license
+; plus          Immediately reserve a VHDL and Verilog license
+; noqueue       Do not wait in the license queue when a license is not available
+; viewsim       Try for viewer license but accept simulator license(s) instead
+;               of queuing for viewer license (PE ONLY)
+; noviewer     Disable checkout of msimviewer and vsim-viewer license 
+;              features (PE ONLY)
+; noslvhdl     Disable checkout of qhsimvh and vsim license features
+; noslvlog     Disable checkout of qhsimvl and vsimvlog license features
+; nomix                Disable checkout of msimhdlmix and hdlmix license features
+; nolnl                Disable checkout of msimhdlsim and hdlsim license features
+; mixedonly    Disable checkout of qhsimvh,qhsimvl,vsim,vsimvlog license 
+;              features
+; lnlonly      Disable checkout of qhsimvh,qhsimvl,vsim,vsimvlog,msimhdlmix,
+;              hdlmix license features
+; Single value:
+; License = plus
+; Multi-value:
+; License = noqueue plus
+
+; Severity level of a VHDL assertion message or of a SystemVerilog immediate assertion
+; which will cause a running simulation to stop.
+; VHDL assertions and SystemVerilog immediate assertions that occur with the
+; given severity or higher will cause a running simulation to stop.
+; This value is ignored during elaboration.
+; 0 = Note  1 = Warning  2 = Error  3 = Failure  4 = Fatal
+BreakOnAssertion = 3
+
+; Message Format conversion specifications:
+; %S - Severity Level of message/assertion
+; %R - Text of message
+; %T - Time of message
+; %D - Delta value (iteration number) of Time
+; %K - Kind of path: Instance/Region/Signal/Process/Foreign Process/Unknown/Protected
+; %i - Instance/Region/Signal pathname with Process name (if available)
+; %I - shorthand for one of these:
+;      "  %K: %i"
+;      "  %K: %i File: %F" (when path is not Process or Signal)
+;      except that the %i in this case does not report the Process name
+; %O - Process name
+; %P - Instance/Region path without leaf process
+; %F - File name
+; %L - Line number; if assertion message, then line number of assertion or, if
+;      assertion is in a subprogram, line from which the call is made
+; %u - Design unit name in form library.primary
+; %U - Design unit name in form library.primary(secondary)
+; %% - The '%' character itself
+;
+; If specific format for Severity Level is defined, use that format.
+; Else, for a message that occurs during elaboration:
+;   -- Failure/Fatal message in VHDL region that is not a Process, and in
+;      certain non-VHDL regions, uses MessageFormatBreakLine;
+;   -- Failure/Fatal message otherwise uses MessageFormatBreak;
+;   -- Note/Warning/Error message uses MessageFormat.
+; Else, for a message that occurs during runtime and triggers a breakpoint because
+; of the BreakOnAssertion setting:
+;   -- if in a VHDL region that is not a Process, uses MessageFormatBreakLine;
+;   -- otherwise uses MessageFormatBreak.
+; Else (a runtime message that does not trigger a breakpoint) uses MessageFormat.
+;
+; MessageFormatNote      = "** %S: %R\n   Time: %T  Iteration: %D%I\n"
+; MessageFormatWarning   = "** %S: %R\n   Time: %T  Iteration: %D%I\n"
+; MessageFormatError     = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F\n"
+; MessageFormatFail      = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F\n"
+; MessageFormatFatal     = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F\n"
+; MessageFormatBreakLine = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F Line: %L\n"
+; MessageFormatBreak     = "** %S: %R\n   Time: %T  Iteration: %D  %K: %i File: %F\n"
+; MessageFormat          = "** %S: %R\n   Time: %T  Iteration: %D%I\n"
+
+; Error File - alternate file for storing error messages
+; ErrorFile = error.log
+
+; Simulation Breakpoint messages
+; This flag controls the display of function names when reporting the location
+; where the simulator stops because of a breakpoint or fatal error.
+; Example with function name:    # Break in Process ctr at counter.vhd line 44
+; Example without function name: # Break at counter.vhd line 44
+; Default value is 1.
+ShowFunctions = 1
+
+; Default radix for all windows and commands.
+; Set to symbolic, ascii, binary, octal, decimal, hex, unsigned
+DefaultRadix = symbolic
+
+; VSIM Startup command
+; Startup = do startup.do
+
+; VSIM Shutdown file
+; Filename to save u/i formats and configurations.
+; ShutdownFile = restart.do
+; To explicitly disable auto save:
+; ShutdownFile = --disable-auto-save
+
+; File for saving command transcript
+TranscriptFile = transcript
+
+; File for saving command history
+; CommandHistory = cmdhist.log
+
+; Specify whether paths in simulator commands should be described
+; in VHDL or Verilog format.
+; For VHDL, PathSeparator = /
+; For Verilog, PathSeparator = .
+; Must not be the same character as DatasetSeparator.
+PathSeparator = /
+
+; Specify the dataset separator for fully rooted contexts.
+; The default is ':'. For example: sim:/top
+; Must not be the same character as PathSeparator.
+DatasetSeparator = :
+
+; Specify a unique path separator for the Signal Spy set of functions. 
+; The default will be to use the PathSeparator variable.
+; Must not be the same character as DatasetSeparator.
+; SignalSpyPathSeparator = /
+
+; Used to control parsing of HDL identifiers input to the tool.
+; This includes CLI commands, vsim/vopt/vlog/vcom options,
+; string arguments to FLI/VPI/DPI calls, etc.
+; If set to 1, accept either Verilog escaped Id syntax or
+; VHDL extended id syntax, regardless of source language.
+; If set to 0, the syntax of the source language must be used.
+; Each identifier in a hierarchical name may need different syntax,
+; e.g. "/top/\vhdl*ext*id\/middle/\vlog*ext*id /bottom" or
+;       "top.\vhdl*ext*id\.middle.\vlog*ext*id .bottom"
+; GenerousIdentifierParsing = 1
+
+; Disable VHDL assertion messages
+; IgnoreNote = 1
+; IgnoreWarning = 1
+; IgnoreError = 1
+; IgnoreFailure = 1
+
+; Disable SystemVerilog assertion messages
+; IgnoreSVAInfo = 1 
+; IgnoreSVAWarning = 1
+; IgnoreSVAError = 1
+; IgnoreSVAFatal = 1
+
+; Do not print any additional information from Severity System tasks.
+; Only the message provided by the user is printed along with severity
+; information.
+; SVAPrintOnlyUserMessage = 1;
+
+; Default force kind. May be freeze, drive, deposit, or default
+; or in other terms, fixed, wired, or charged.
+; A value of "default" will use the signal kind to determine the
+; force kind, drive for resolved signals, freeze for unresolved signals
+; DefaultForceKind = freeze
+
+; Control the iteration of events when a VHDL signal is forced to a value
+; This flag can be set to honour the signal update event in next iteration,
+; the default is to update and propagate in the same iteration.
+; ForceSigNextIter = 1
+
+
+; If zero, open files when elaborated; otherwise, open files on
+; first read or write.  Default is 0.
+; DelayFileOpen = 1
+
+; Control VHDL files opened for write.
+;   0 = Buffered, 1 = Unbuffered
+UnbufferedOutput = 0
+
+; Control the number of VHDL files open concurrently.
+; This number should always be less than the current ulimit
+; setting for max file descriptors.
+;   0 = unlimited
+ConcurrentFileLimit = 40
+
+; Control the number of hierarchical regions displayed as
+; part of a signal name shown in the Wave window.
+; A value of zero tells VSIM to display the full name.
+; The default is 0.
+; WaveSignalNameWidth = 0
+
+; Turn off warnings when changing VHDL constants and generics
+; Default is 1 to generate warning messages
+; WarnConstantChange = 0
+
+; Turn off warnings from accelerated versions of the std_logic_arith,
+; std_logic_unsigned, and std_logic_signed packages.
+; StdArithNoWarnings = 1
+
+; Turn off warnings from accelerated versions of the IEEE numeric_std
+; and numeric_bit packages.
+; NumericStdNoWarnings = 1
+
+; Use old-style (pre-6.6) VHDL FOR generate statement iteration names
+; in the design hierarchy.
+; This style is controlled by the value of the GenerateFormat
+; value described next.  Default is to use new-style names, which
+; comprise the generate statement label, '(', the value of the generate
+; parameter, and a closing ')'.
+; Uncomment this to use old-style names.
+; OldVhdlForGenNames = 1
+
+; Enable changes in VHDL elaboration to allow for Variable Logging
+; This trades off simulation performance for the ability to log variables
+; efficiently.  By default this is disable for maximum simulation performance
+; VhdlVariableLogging = 1
+
+; Control the format of the old-style VHDL FOR generate statement region
+; name for each iteration.  Do not quote it.
+; The format string here must contain the conversion codes %s and %d,
+; in that order, and no other conversion codes.  The %s represents
+; the generate statement label; the %d represents the generate parameter value
+; at a particular iteration (this is the position number if the generate parameter
+; is of an enumeration type).  Embedded whitespace is allowed (but discouraged);
+; leading and trailing whitespace is ignored.
+; Application of the format must result in a unique region name over all
+; loop iterations for a particular immediately enclosing scope so that name
+; lookup can function properly.  The default is %s__%d.
+; GenerateFormat = %s__%d
+
+; Specify whether checkpoint files should be compressed.
+; The default is 1 (compressed).
+; CheckpointCompressMode = 0
+
+; Specify gcc compiler used in the compilation of automatically generated DPI exportwrapper.
+; Use custom gcc compiler located at this path rather than the default path.
+; The path should point directly at a compiler executable.
+; DpiCppPath = <your-gcc-installation>/bin/gcc
+
+; Specify whether to enable SystemVerilog DPI "out-of-the-blue" calls.
+; The term "out-of-the-blue" refers to SystemVerilog export function calls
+; made from C functions that don't have the proper context setup
+; (as is the case when running under "DPI-C" import functions).
+; When this is enabled, one can call a DPI export function
+; (but not task) from any C code.
+; the setting of this variable can be one of the following values:
+; 0 : dpioutoftheblue call is disabled (default)
+; 1 : dpioutoftheblue call is enabled, but export call debug support is not available.
+; 2 : dpioutoftheblue call is enabled, and limited export call debug support is available.
+; DpiOutOfTheBlue = 1
+
+; Specify whether continuous assignments are run before other normal priority
+; processes scheduled in the same iteration. This event ordering minimizes race
+; differences between optimized and non-optimized designs, and is the default
+; behavior beginning with the 6.5 release. For pre-6.5 event ordering, set
+; ImmediateContinuousAssign to 0.
+; The default is 1 (enabled).
+; ImmediateContinuousAssign = 0
+
+; List of dynamically loaded objects for Verilog PLI applications
+; Veriuser = veriuser.sl
+
+; Which default VPI object model should the tool conform to?
+; The 1364 modes are Verilog-only, for backwards compatibility with older
+; libraries, and SystemVerilog objects are not available in these modes.
+; 
+; In the absence of a user-specified default, the tool default is the
+; latest available LRM behavior.
+; Options for PliCompatDefault are:
+;  VPI_COMPATIBILITY_VERSION_1364v1995
+;  VPI_COMPATIBILITY_VERSION_1364v2001
+;  VPI_COMPATIBILITY_VERSION_1364v2005
+;  VPI_COMPATIBILITY_VERSION_1800v2005
+;  VPI_COMPATIBILITY_VERSION_1800v2008
+;
+; Synonyms for each string are also recognized:
+;  VPI_COMPATIBILITY_VERSION_1364v1995 (1995, 95, 1364v1995, 1364V1995, VL1995)
+;  VPI_COMPATIBILITY_VERSION_1364v2001 (2001, 01, 1364v2001, 1364V2001, VL2001)
+;  VPI_COMPATIBILITY_VERSION_1364v2005 (1364v2005, 1364V2005, VL2005)
+;  VPI_COMPATIBILITY_VERSION_1800v2005 (2005, 05, 1800v2005, 1800V2005, SV2005)
+;  VPI_COMPATIBILITY_VERSION_1800v2008 (2008, 08, 1800v2008, 1800V2008, SV2008)
+
+
+; PliCompatDefault = VPI_COMPATIBILITY_VERSION_1800v2005
+
+; Specify default options for the restart command. Options can be one
+; or more of: -force -nobreakpoint -nolist -nolog -nowave -noassertions
+; DefaultRestartOptions = -force
+
+; Turn on (1) or off (0) WLF file compression.
+; The default is 1 (compress WLF file).
+; WLFCompress = 0
+
+; Specify whether to save all design hierarchy (1) in the WLF file
+; or only regions containing logged signals (0).
+; The default is 0 (save only regions with logged signals).
+; WLFSaveAllRegions = 1
+
+; WLF file time limit.  Limit WLF file by time, as closely as possible,
+; to the specified amount of simulation time.  When the limit is exceeded
+; the earliest times get truncated from the file.
+; If both time and size limits are specified the most restrictive is used.
+; UserTimeUnits are used if time units are not specified.
+; The default is 0 (no limit).  Example: WLFTimeLimit = {100 ms}
+; WLFTimeLimit = 0
+
+; WLF file size limit.  Limit WLF file size, as closely as possible,
+; to the specified number of megabytes.  If both time and size limits
+; are specified then the most restrictive is used.
+; The default is 0 (no limit).
+; WLFSizeLimit = 1000
+
+; Specify whether or not a WLF file should be deleted when the
+; simulation ends.  A value of 1 will cause the WLF file to be deleted.
+; The default is 0 (do not delete WLF file when simulation ends).
+; WLFDeleteOnQuit = 1
+
+; Specify whether or not a WLF file should be optimized during 
+; simulation.  If set to 0, the WLF file will not be optimized.
+; The default is 1, optimize the WLF file.
+; WLFOptimize = 0
+
+; Specify the name of the WLF file.
+; The default is vsim.wlf
+; WLFFilename = vsim.wlf
+
+; Specify whether to lock the WLF file.
+; Locking the file prevents other invocations of ModelSim/Questa tools from
+; inadvertently overwriting the WLF file.
+; The default is 1, lock the WLF file.
+; WLFFileLock = 0
+
+; Specify the WLF reader cache size limit for each open WLF file.  
+; The size is giving in megabytes.  A value of 0 turns off the
+; WLF cache. 
+; WLFSimCacheSize allows a different cache size to be set for 
+; simulation WLF file independent of post-simulation WLF file 
+; viewing.  If WLFSimCacheSize is not set it defaults to the
+; WLFCacheSize setting.
+; The default WLFCacheSize setting is enabled to 256M per open WLF file.
+; WLFCacheSize = 2000
+; WLFSimCacheSize = 500
+
+; Specify the WLF file event collapse mode.
+; 0 = Preserve all events and event order. (same as -wlfnocollapse)
+; 1 = Only record values of logged objects at the end of a simulator iteration. 
+;     (same as -wlfcollapsedelta)
+; 2 = Only record values of logged objects at the end of a simulator time step. 
+;     (same as -wlfcollapsetime)
+; The default is 1.
+; WLFCollapseMode = 0
+
+; Specify whether WLF file logging can use threads on multi-processor machines
+; if 0, no threads will be used, if 1, threads will be used if the system has
+; more than one processor
+; WLFUseThreads = 1
+
+; Turn on/off undebuggable SystemC type warnings. Default is on.
+; ShowUndebuggableScTypeWarning = 0
+
+; Turn on/off unassociated SystemC name warnings. Default is off.
+; ShowUnassociatedScNameWarning = 1
+
+; Turn on/off SystemC IEEE 1666 deprecation warnings. Default is off.
+; ScShowIeeeDeprecationWarnings = 1
+
+; Turn on/off the check for multiple drivers on a SystemC sc_signal. Default is off.
+; ScEnableScSignalWriteCheck = 1
+
+; Set SystemC default time unit.
+; Set to fs, ps, ns, us, ms, or sec with optional 
+; prefix of 1, 10, or 100.  The default is 1 ns.
+; The ScTimeUnit value is honored if it is coarser than Resolution.
+; If ScTimeUnit is finer than Resolution, it is set to the value
+; of Resolution. For example, if Resolution is 100ps and ScTimeUnit is ns,
+; then the default time unit will be 1 ns.  However if Resolution 
+; is 10 ns and ScTimeUnit is ns, then the default time unit will be 10 ns.
+ScTimeUnit = ns
+
+; Set SystemC sc_main stack size. The stack size is set as an integer
+; number followed by the unit which can be Kb(Kilo-byte), Mb(Mega-byte) or
+; Gb(Giga-byte). Default is 10 Mb. The stack size for sc_main depends
+; on the amount of data on the sc_main() stack and the memory required
+; to succesfully execute the longest function call chain of sc_main().
+ScMainStackSize = 10 Mb
+
+; Turn on/off execution of remainder of sc_main upon quitting the current
+; simulation session. If the cumulative length of sc_main() in terms of 
+; simulation time units is less than the length of the current simulation
+; run upon quit or restart, sc_main() will be in the middle of execution.
+; This switch gives the option to execute the remainder of sc_main upon
+; quitting simulation. The drawback of not running sc_main till the end
+; is memory leaks for objects created by sc_main. If on, the remainder of
+; sc_main will be executed ignoring all delays. This may cause the simulator
+; to crash if the code in sc_main is dependent on some simulation state.
+; Default is on.
+ScMainFinishOnQuit = 1
+
+; Set the SCV relationship name that will be used to identify phase
+; relations.  If the name given to a transactor relation matches this
+; name, the transactions involved will be treated as phase transactions
+ScvPhaseRelationName = mti_phase
+
+; Customize the vsim kernel shutdown behavior at the end of the simulation.
+; Some common causes of the end of simulation are $finish (implicit or explicit), 
+; sc_stop(), tf_dofinish(), and assertion failures. 
+; This should be set to "ask", "exit", or "stop". The default is "ask".
+; "ask"   -- In batch mode, the vsim kernel will abruptly exit.  
+;            In GUI mode, a dialog box will pop up and ask for user confirmation 
+;            whether or not to quit the simulation.
+; "stop"  -- Cause the simulation to stay loaded in memory. This can make some 
+;            post-simulation tasks easier.
+; "exit"  -- The simulation will abruptly exit without asking for any confirmation.
+; "final" -- Run SystemVerilog final blocks then behave as "stop".
+; Note: This variable can be overridden with the vsim "-onfinish" command line switch.
+OnFinish = ask
+
+; Print pending deferred assertion messages. 
+; Deferred assertion messages may be scheduled after the $finish in the same 
+; time step. Deferred assertions scheduled to print after the $finish are 
+; printed before exiting with severity level NOTE since it's not known whether
+; the assertion is still valid due to being printed in the active region
+; instead of the reactive region where they are normally printed.
+; OnFinishPendingAssert = 1;
+
+; Print "simstats" result
+; 0 == do not print simstats
+; 1 == print at end of simulation
+; 2 == print at end of run
+; 3 == print at end of run and end of simulation
+; default == 0
+; PrintSimStats = 1
+
+
+; Assertion File - alternate file for storing VHDL/PSL/Verilog assertion messages
+; AssertFile = assert.log
+
+; Enable assertion counts. Default is off.
+; AssertionCover = 1
+
+; Run simulator in assertion debug mode. Default is off.
+; AssertionDebug = 1
+
+; Turn on/off PSL/SVA/VHDL assertion enable. Default is on.
+; AssertionEnable = 0
+
+; Set PSL/SVA/VHDL concurrent assertion fail limit. Default is -1.
+; Any positive integer, -1 for infinity.
+; AssertionLimit = 1
+
+; Turn on/off concurrent assertion pass log. Default is off. 
+; Assertion pass logging is only enabled when assertion is browseable 
+; and assertion debug is enabled.
+; AssertionPassLog = 1
+
+; Turn on/off PSL concurrent assertion fail log. Default is on.
+; The flag does not affect SVA
+; AssertionFailLog = 0
+
+; Turn on/off SVA concurrent assertion local var printing in -assertdebug mode.  Default is on.
+; AssertionFailLocalVarLog = 0
+
+; Set action type for PSL/SVA concurrent assertion fail action. Default is continue.
+; 0 = Continue  1 = Break  2 = Exit
+; AssertionFailAction = 1
+
+; Enable the active thread monitor in the waveform display when assertion debug is enabled.
+; AssertionActiveThreadMonitor = 1
+
+; Control how many waveform rows will be used for displaying the active threads.  Default is 5.
+; AssertionActiveThreadMonitorLimit = 5
+
+; Assertion thread limit after which assertion would be killed/switched off. 
+; The default is -1 (unlimited). If the number of threads for an assertion go 
+; beyond this limit, the assertion would be either switched off or killed. This
+; limit applies to only assert directives.
+;AssertionThreadLimit = -1
+
+; Action to be taken once the assertion thread limit is reached. Default 
+; is kill. It can have a value of off or kill. In case of kill, all the existing
+; threads are terminated and no new attempts are started. In case of off, the 
+; existing attempts keep on evaluating but no new attempts are started. This 
+; variable applies to only assert directives.
+;AssertionThreadLimitAction = kill
+
+; Cover thread limit after which cover would be killed/switched off. 
+; The default is -1 (unlimited). If the number of threads for a cover go 
+; beyond this limit, the cover would be either switched off or killed. This
+; limit applies to only cover directives.
+;CoverThreadLimit = -1
+
+; Action to be taken once the cover thread limit is reached. Default 
+; is kill. It can have a value of off or kill. In case of kill, all the existing
+; threads are terminated and no new attempts are started. In case of off, the 
+; existing attempts keep on evaluating but no new attempts are started. This 
+; variable applies to only cover directives.
+;CoverThreadLimitAction = kill
+
+
+; By default immediate assertions do not participate in Assertion Coverage calculations
+; unless they are executed.  This switch causes all immediate assertions in the design
+; to participate in Assertion Coverage calculations, whether attempted or not.
+; UnattemptedImmediateAssertions = 0
+
+; By default immediate covers participate in Coverage calculations 
+; whether they are attempted or not. This switch causes all unattempted 
+; immediate covers in the design to stop participating in Coverage 
+; calculations.
+; UnattemptedImmediateCovers = 0
+
+; By default pass action block is not executed for assertions on vacuous 
+; success. The following variable is provided to enable execution of 
+; pass action block on vacuous success. The following variable is only effective
+; if the user does not disable pass action block execution by using either 
+; system tasks or CLI. Also there is a performance penalty for enabling 
+; the following variable. 
+;AssertionEnableVacuousPassActionBlock = 1
+
+; As per strict 1850-2005 PSL LRM, an always property can either pass
+; or fail. However, by default, Questa reports multiple passes and
+; multiple fails on top always/never property (always/never operator
+; is the top operator under Verification Directive). The reason
+; being that Questa reports passes and fails on per attempt of the
+; top always/never property. Use the following flag to instruct
+; Questa to strictly follow LRM. With this flag, all assert/never
+; directives will start an attempt once at start of simulation.
+; The attempt can either fail, match or match vacuously.
+; For e.g. if always is the top operator under assert, the always will
+; keep on checking the property at every clock. If the property under
+; always fails, the directive will be considered failed and no more 
+; checking will be done for that directive. A top always property,
+; if it does not fail, will show a pass at end of simulation.
+; The default value is '0' (i.e. zero is off). For example:
+; PslOneAttempt = 1
+
+; Specify the number of clock ticks to represent infinite clock ticks.
+; This affects eventually!, until! and until_!. If at End of Simulation
+; (EOS) an active strong-property has not clocked this number of
+; clock ticks then neither pass or fail (vacuous match) is returned
+; else respective fail/pass is returned. The default value is '0' (zero)
+; which effectively does not check for clock tick condition. For example:
+; PslInfinityThreshold = 5000
+
+; Control how many thread start times will be preserved for ATV viewing for a given assertion
+; instance.  Default is -1 (ALL).
+; ATVStartTimeKeepCount = -1
+
+; Turn on/off code coverage
+; CodeCoverage = 0
+
+; Count all code coverage condition and expression truth table rows that match.
+; CoverCountAll = 1
+
+; Turn off automatic inclusion of VHDL integers in toggle coverage. Default
+; is to include them.
+; ToggleNoIntegers = 1
+
+; Set the maximum number of values that are collected for toggle coverage of
+; VHDL integers. Default is 100;
+; ToggleMaxIntValues = 100
+
+; Set the maximum number of values that are collected for toggle coverage of
+; Verilog real. Default is 100;
+; ToggleMaxRealValues = 100
+
+; Turn on automatic inclusion of Verilog integers in toggle coverage, except
+; for enumeration types. Default is to include them.
+; ToggleVlogIntegers = 0
+
+; Turn on automatic inclusion of Verilog real type in toggle coverage, except
+; for shortreal types. Default is to not include them.
+; ToggleVlogReal = 1
+
+; Turn on automatic inclusion of Verilog fixed-size unpacked arrays, VHDL multi-d arrays
+; and VHDL arrays-of-arrays in toggle coverage.
+; Default is to not include them.
+; ToggleFixedSizeArray = 1
+
+; Increase or decrease the maximum size of Verilog unpacked fixed-size arrays,
+; VHDL multi-d arrays and VHDL arrays-of-arrays that are included for toggle coverage.
+; This leads to a longer simulation time with bigger arrays covered with toggle coverage.
+; Default is 1024.
+; ToggleMaxFixedSizeArray = 1024
+
+; Treat Verilog multi-dimensional packed vectors and packed structures as equivalently sized
+; one-dimensional packed vectors for toggle coverage. Default is 0.
+; TogglePackedAsVec = 0
+
+; Treat Verilog enumerated types as equivalently sized one-dimensional packed vectors for
+; toggle coverage. Default is 0.
+; ToggleVlogEnumBits = 0
+
+; Limit the widths of registers automatically tracked for toggle coverage. Default is 128.
+; For unlimited width, set to 0.
+; ToggleWidthLimit = 128
+
+; Limit the counts that are tracked for toggle coverage. When all edges for a bit have
+; reached this count, further activity on the bit is ignored. Default is 1.
+; For unlimited counts, set to 0.
+; ToggleCountLimit = 1
+
+; Change the mode of extended toggle coverage. Default is 3. Valid modes are 1, 2 and 3.
+; Following is the toggle coverage calculation criteria based on extended toggle mode:
+; Mode 1: 0L->1H & 1H->0L & any one 'Z' transition (to/from 'Z').
+; Mode 2: 0L->1H & 1H->0L & one transition to 'Z' & one transition from 'Z'.
+; Mode 3: 0L->1H & 1H->0L & all 'Z' transitions.
+; ExtendedToggleMode = 3
+
+; Enable toggle statistics collection only for ports. Default is 0.
+; TogglePortsOnly = 1
+
+; Turn on/off all PSL/SVA cover directive enables.  Default is on.
+; CoverEnable = 0
+
+; Turn on/off PSL/SVA cover log.  Default is off "0".
+; CoverLog = 1
+
+; Set "at_least" value for all PSL/SVA cover directives.  Default is 1.
+; CoverAtLeast = 2
+
+; Set "limit" value for all PSL/SVA cover directives.  Default is -1.
+; Any positive integer, -1 for infinity.
+; CoverLimit = 1
+
+; Specify the coverage database filename.
+; Default is "" (i.e. database is NOT automatically saved on close). 
+; UCDBFilename = vsim.ucdb
+
+; Specify the maximum limit for the number of Cross (bin) products reported
+; in XML and UCDB report against a Cross. A warning is issued if the limit
+; is crossed. Default is zero. vsim switch -cvgmaxrptrhscross can override this
+; setting.
+; MaxReportRhsSVCrossProducts = 1000
+
+; Specify the override for the "auto_bin_max" option for the Covergroups.
+; If not specified then value from Covergroup "option" is used.
+; SVCoverpointAutoBinMax = 64
+
+; Specify the override for the value of "cross_num_print_missing"
+; option for the Cross in Covergroups. If not specified then value
+; specified in the "option.cross_num_print_missing" is used. This
+; is a runtime option. NOTE: This overrides any "cross_num_print_missing"
+; value specified by user in source file and any SVCrossNumPrintMissingDefault
+; specified in modelsim.ini.
+; SVCrossNumPrintMissing = 0
+
+; Specify whether to use the value of "cross_num_print_missing"
+; option in report and GUI for the Cross in Covergroups. If not specified then 
+; cross_num_print_missing is ignored for creating reports and displaying 
+; covergroups in GUI. Default is 0, which means ignore "cross_num_print_missing".
+; UseSVCrossNumPrintMissing = 0
+
+; Specify the threshold of Coverpoint wildcard bin value range size, above which 
+; a warning will be triggered. The default is 4K -- 12 wildcard bits.
+; SVCoverpointWildCardBinValueSizeWarn = 4096
+
+; Specify the override for the value of "strobe" option for the
+; Covergroup Type. If not specified then value in "type_option.strobe"
+; will be used. This is runtime option which forces "strobe" to
+; user specified value and supersedes user specified values in the
+; SystemVerilog Code. NOTE: This also overrides the compile time
+; default value override specified using "SVCovergroupStrobeDefault"
+; SVCovergroupStrobe = 0
+
+; Override for explicit assignments in source code to "option.goal" of
+; SystemVerilog covergroup, coverpoint, and cross. It also overrides the
+; default value of "option.goal" (defined to be 100 in the SystemVerilog
+; LRM) and the value of modelsim.ini variable "SVCovergroupGoalDefault".
+; SVCovergroupGoal = 100
+
+; Override for explicit assignments in source code to "type_option.goal" of
+; SystemVerilog covergroup, coverpoint, and cross. It also overrides the
+; default value of "type_option.goal" (defined to be 100 in the SystemVerilog
+; LRM) and the value of modelsim.ini variable "SVCovergroupTypeGoalDefault".
+; SVCovergroupTypeGoal = 100
+
+; Enforce the 6.3 behavior of covergroup get_coverage() and get_inst_coverage()
+; builtin functions, and report. This setting changes the default values of
+; option.get_inst_coverage and type_option.merge_instances to ensure the 6.3
+; behavior if explicit assignments are not made on option.get_inst_coverage and
+; type_option.merge_instances by the user. There are two vsim command line
+; options, -cvg63 and -nocvg63 to override this setting from vsim command line.
+; The default value of this variable from release 6.6 onwards is 0. This default
+; drives compliance with the clarified behavior in the IEEE 1800-2009 standard.
+; SVCovergroup63Compatibility = 0
+
+; Enforce the 6.5 default behavior of covergroup get_coverage() builtin 
+; functions, GUI, and report. This setting changes the default values of
+; type_option.merge_instances to ensure the 6.5 default behavior if explicit
+; assignments are not made on type_option.merge_instances by the user.
+; There are two vsim command line options, -cvgmergeinstances and 
+; -nocvgmergeinstances to override this setting from vsim command line.
+; The default value of this variable from release 6.6 onwards is 0. This default
+; drives compliance with the clarified behavior in the IEEE 1800-2009 standard.
+; SvCovergroupMergeInstancesDefault = 1
+
+; Enable or disable generation of more detailed information about the sampling
+; of covergroup, cross, and coverpoints. It provides the details of the number
+; of times the covergroup instance and type were sampled, as well as details
+; about why covergroup, cross and coverpoint were not covered. A non-zero value
+; is to enable this feature. 0 is to disable this feature. Default is 0
+; SVCovergroupSampleInfo = 0
+
+; Specify the maximum number of Coverpoint bins in whole design for
+; all Covergroups.
+; MaxSVCoverpointBinsDesign = 2147483648 
+
+; Specify maximum number of Coverpoint bins in any instance of a Covergroup
+; MaxSVCoverpointBinsInst = 2147483648
+
+; Specify the maximum number of Cross bins in whole design for
+; all Covergroups.
+; MaxSVCrossBinsDesign = 2147483648 
+
+; Specify maximum number of Cross bins in any instance of a Covergroup
+; MaxSVCrossBinsInst = 2147483648
+
+; Specify a space delimited list of double quoted TCL style
+; regular expressions which will be matched against the text of all messages.
+; If any regular expression is found to be contained within any message, the 
+; status for that message will not be propagated to the UCDB TESTSTATUS. 
+; If no match is detected, then the status will be propagated to the
+; UCDB TESTSTATUS. More than one such regular expression text is allowed, 
+; and each message text is compared for each regular expression in the list.
+; UCDBTestStatusMessageFilter = "Done with Test Bench" "Ignore .* message" 
+
+; Set weight for all PSL/SVA cover directives.  Default is 1.
+; CoverWeight = 2
+
+; Check vsim plusargs.  Default is 0 (off).
+; 0 = Don't check plusargs
+; 1 = Warning on unrecognized plusarg
+; 2 = Error and exit on unrecognized plusarg
+; CheckPlusargs = 1
+
+; Load the specified shared objects with the RTLD_GLOBAL flag.
+; This gives global visibility to all symbols in the shared objects,
+; meaning that subsequently loaded shared objects can bind to symbols
+; in the global shared objects.  The list of shared objects should
+; be whitespace delimited.  This option is not supported on the
+; Windows or AIX platforms.
+; GlobalSharedObjectList = example1.so example2.so example3.so
+
+; Run the 0in tools from within the simulator. 
+; Default is off.
+; ZeroIn = 1
+
+; Set the options to be passed to the 0in runtime tool.
+; Default value set to "".
+; ZeroInOptions = ""
+
+; Initial seed for the random number generator of the root thread (SystemVerilog).
+; NOTE: This variable can be overridden with the vsim "-sv_seed" command line switch.
+; The default value is 0.
+; Sv_Seed = 0
+
+; Specify the solver "engine" that vsim will select for constrained random
+; generation.
+; Valid values are:
+;    "auto" - automatically select the best engine for the current
+;             constraint scenario
+;    "bdd"  - evaluate all constraint scenarios using the BDD solver engine
+;    "act"  - evaluate all constraint scenarios using the ACT solver engine
+; While the BDD solver engine is generally efficient with constraint scenarios
+; involving bitwise logical relationships, the ACT solver engine can exhibit
+; superior performance with constraint scenarios involving large numbers of
+; random variables related via arithmetic operators (+, *, etc).
+; NOTE: This variable can be overridden with the vsim "-solveengine" command
+; line switch.
+; The default value is "auto".
+; SolveEngine = auto
+
+; Specify if the solver should attempt to ignore overflow/underflow semantics
+; for arithmetic constraints (multiply, addition, subtraction) in order to
+; improve performance. The "solveignoreoverflow" attribute can be specified on
+; a per-call basis to randomize() to override this setting.
+; The default value is 0 (overflow/underflow is not ignored). Set to 1 to
+; ignore overflow/underflow.
+; SolveIgnoreOverflow = 0
+
+; Specifies the maximum size that a dynamic array may be resized to by the
+; solver. If the solver attempts to resize a dynamic array to a size greater
+; than the specified limit, the solver will abort with an error.
+; The default value is 2000. A value of 0 indicates no limit.
+; SolveArrayResizeMax = 2000
+
+; Error message severity when randomize() failure is detected (SystemVerilog).
+; 0 = No error  1 = Warning  2 = Error  3 = Failure  4 = Fatal
+; The default is 0 (no error).
+; SolveFailSeverity = 0
+
+; Enable/disable debug information for randomize() failures.
+; NOTE: This variable can be overridden with the vsim "-solvefaildbug" command
+; line switch.
+; The default is 0 (disabled). Set to 1 to enable.
+; SolveFailDebug = 0
+
+; Specify the maximum size of the solution graph generated by the BDD solver.
+; This value can be used to force the BDD solver to abort the evaluation of a
+; complex constraint scenario that cannot be evaluated with finite memory.
+; This value is specified in 1000s of nodes.
+; The default value is 10000. A value of 0 indicates no limit.
+; SolveGraphMaxSize = 10000
+
+; Specify the maximum number of evaluations that may be performed on the
+; solution graph by the BDD solver. This value can be used to force the BDD
+; solver to abort the evaluation of a complex constraint scenario that cannot
+; be evaluated in finite time. This value is specified in 10000s of evaluations.
+; The default value is 10000. A value of 0 indicates no limit.
+; SolveGraphMaxEval = 10000
+
+; Specify the maximum number of tests that the ACT solver may evaluate before
+; abandoning an attempt to solve a particular constraint scenario.
+; The default value is 20000000.  A value of 0 indicates no limit.
+; SolveACTMaxTests = 20000000
+
+; Specify the maximum number of operations that the ACT solver may perform 
+; before abandoning an attempt to solve a particular constraint scenario.  The 
+; value is specified in 1000000s of operations.  The default value is 1000.  A 
+; value of 0 indicates no limit.
+; SolveACTMaxOps = 1000
+
+; Specify the number of times the ACT solver will retry to evaluate a constraint
+; scenario that fails due to the SolveACTMaxTests threshold.
+; The default value is 0 (no retry).
+; SolveACTRetryCount = 0
+
+; SolveSpeculateLevel controls whether or not the solver performs speculation
+; during the evaluation of a constraint scenario.
+; Speculation is an attempt to partition complex constraint scenarios by
+; choosing a 'speculation' subset of the variables and constraints.  This 
+; 'speculation' set is solved independently of the remaining constraints. 
+; The solver then attempts to solve the remaining variables and constraints
+; (the 'dependent' set).  If this attempt fails, the solver backs up and
+; re-solves the 'speculation' set, then retries the 'dependent' set.
+; Valid values are:
+;    0 - no speculation
+;    1 - enable speculation that maintains LRM specified distribution
+;    2 - enable other speculation - may yield non-LRM distribution 
+; Currently, distribution constraints and solve-before constraints are 
+; used in selecting the 'speculation' sets for speculation level 1. Non-LRM 
+; compliant speculation includes random variables in condition expressions.
+; The default value is 0.
+; SolveSpeculateLevel = 0
+
+; By default, when speculation is enabled, the solver first tries to solve a
+; constraint scenario *without* speculation. If the solver fails to evaluate
+; the constraint scenario (due to time/memory limits) then the solver will
+; re-evaluate the constraint scenario with speculation. If SolveSpeculateFirst
+; is set to 1, the solver will skip the initial non-speculative attempt to
+; evaluate the constraint scenario. (Only applies when SolveSpeculateLevel is
+; non-zero)
+; The default value is 0.
+; SolveSpeculateFirst = 0
+
+; Specify the maximum bit width of a variable in a conditional expression that
+; may be considered as the basis for "conditional" speculation. (Only applies
+; when SolveSpeculateLevel=2)
+; The default value is 6.
+; SolveSpeculateMaxCondWidth = 6
+
+; Specify the maximum number of attempts to solve a speculative set of random
+; variables and constraints. Exceeding this limit will cause the solver to
+; abandon the current speculative set. (Only applies when SolveSpeculateLevel
+; is non-zero)
+; The default value is 100. 
+; SolveSpeculateMaxIterations = 100
+
+; Specifies whether to attempt speculation on solve-before constraints or
+; distribution constraints first. A value of 0 specifies that solve-before
+; constraints are attempted first as the basis for speculative randomization.
+; A value of 1 specifies that distribution constraints are attempted first
+; as the basis for speculative randomization.
+; The default value is 0.
+; SolveSpeculateDistFirst = 0
+
+; If the non-speculative BDD solver fails to evaluate a constraint scenario
+; (due to time/memory limits) then the solver can be instructed to automatically
+; re-evaluate the constraint scenario with the ACT solver engine. Set
+; SolveACTbeforeSpeculate to 1 to enable this feature.
+; The default value is 0 (do not re-evaluate with the ACT solver).
+; SolveACTbeforeSpeculate = 0
+
+; Use SolveFlags to specify options that will guide the behavior of the
+; constraint solver. These options may improve the performance of the
+; constraint solver for some testcases, and decrease the performance of the
+; constraint solver for others.
+; Valid flags are:
+;    i = disable bit interleaving for >, >=, <, <= constraints (BDD engine)
+;    n = disable bit interleaving for all constraints (BDD engine)
+;    r = reverse bit interleaving (BDD engine)
+; The default value is "" (no options).
+; SolveFlags =
+
+; Specify random sequence compatiblity with a prior letter release. This 
+; option is used to get the same random sequences during simulation as
+; as a prior letter release. Only prior letter releases (of the current
+; number release) are allowed.
+; NOTE: Only those random sequence changes due to solver optimizations are
+; reverted by this variable. Random sequence changes due to solver bugfixes
+; cannot be un-done.
+; NOTE: This variable can be overridden with the vsim "-solverev" command
+; line switch.
+; Default value set to "" (no compatibility).
+; SolveRev =
+
+; Environment variable expansion of command line arguments has been depricated 
+; in favor shell level expansion.  Universal environment variable expansion 
+; inside -f files is support and continued support for MGC Location Maps provide
+; alternative methods for handling flexible pathnames.
+; The following line may be uncommented and the value set to 1 to re-enable this 
+; deprecated behavior.  The default value is 0.
+; DeprecatedEnvironmentVariableExpansion = 0
+
+; Turn on/off collapsing of bus ports in VCD dumpports output
+DumpportsCollapse = 1
+
+; Location of Multi-Level Verification Component (MVC) installation. 
+; The default location is the product installation directory.
+; MvcHome = $MODEL_TECH/...
+
+; Initialize SystemVerilog enums using the base type's default value
+; instead of the leftmost value.
+; EnumBaseInit = 1
+
+[lmc]
+; The simulator's interface to Logic Modeling's SmartModel SWIFT software
+libsm = $MODEL_TECH/libsm.sl
+; The simulator's interface to Logic Modeling's SmartModel SWIFT software (Windows NT)
+; libsm = $MODEL_TECH/libsm.dll
+;  Logic Modeling's SmartModel SWIFT software (HP 9000 Series 700)
+; libswift = $LMC_HOME/lib/hp700.lib/libswift.sl
+;  Logic Modeling's SmartModel SWIFT software (IBM RISC System/6000)
+; libswift = $LMC_HOME/lib/ibmrs.lib/swift.o
+;  Logic Modeling's SmartModel SWIFT software (Sun4 Solaris)
+; libswift = $LMC_HOME/lib/sun4Solaris.lib/libswift.so
+;  Logic Modeling's SmartModel SWIFT software (Windows NT)
+; libswift = $LMC_HOME/lib/pcnt.lib/libswift.dll
+;  Logic Modeling's SmartModel SWIFT software (non-Enterprise versions of Linux)
+; libswift = $LMC_HOME/lib/x86_linux.lib/libswift.so
+;  Logic Modeling's SmartModel SWIFT software (Enterprise versions of Linux)
+; libswift = $LMC_HOME/lib/linux.lib/libswift.so
+
+; The simulator's interface to Logic Modeling's hardware modeler SFI software
+libhm = $MODEL_TECH/libhm.sl
+; The simulator's interface to Logic Modeling's hardware modeler SFI software (Windows NT)
+; libhm = $MODEL_TECH/libhm.dll
+;  Logic Modeling's hardware modeler SFI software (HP 9000 Series 700)
+; libsfi = <sfi_dir>/lib/hp700/libsfi.sl
+;  Logic Modeling's hardware modeler SFI software (IBM RISC System/6000)
+; libsfi = <sfi_dir>/lib/rs6000/libsfi.a
+;  Logic Modeling's hardware modeler SFI software (Sun4 Solaris)
+; libsfi = <sfi_dir>/lib/sun4.solaris/libsfi.so
+;  Logic Modeling's hardware modeler SFI software (Windows NT)
+; libsfi = <sfi_dir>/lib/pcnt/lm_sfi.dll
+;  Logic Modeling's hardware modeler SFI software (Linux)
+; libsfi = <sfi_dir>/lib/linux/libsfi.so
+
+[msg_system]
+; Change a message severity or suppress a message.
+; The format is: <msg directive> = <msg number>[,<msg number>...]
+; suppress can be used to achieve +nowarn<CODE> functionality
+; The format is: suppress = <CODE>,<msg number>,[<CODE>,<msg number>,...]
+; Examples:
+suppress = 8780
+;   note = 3009
+;   warning = 3033
+;   error = 3010,3016
+;   fatal = 3016,3033
+;   suppress = 3009,3016,3043
+;   suppress = 3009,CNNODP,3043,TFMPC
+;   suppress = 8683,8684
+; The command verror <msg number> can be used to get the complete
+; description of a message.
+
+; Control transcripting of Verilog display system task messages and
+; PLI/FLI print function call messages.  The system tasks include
+; $display[bho], $strobe[bho], $monitor[bho], and $write[bho].  They
+; also include the analogous file I/O tasks that write to STDOUT 
+; (i.e. $fwrite or $fdisplay).  The PLI/FLI calls include io_printf,
+; vpi_printf, mti_PrintMessage, and mti_PrintFormatted.  The default
+; is to have messages appear only in the transcript.  The other 
+; settings are to send messages to the wlf file only (messages that
+; are recorded in the wlf file can be viewed in the MsgViewer) or 
+; to both the transcript and the wlf file.  The valid values are
+;    tran  {transcript only (default)}
+;    wlf   {wlf file only}
+;    both  {transcript and wlf file}
+; displaymsgmode = tran
+
+; Control transcripting of elaboration/runtime messages not
+; addressed by the displaymsgmode setting.  The default is to 
+; have messages appear in the transcript and recorded in the wlf
+; file (messages that are recorded in the wlf file can be viewed
+; in the MsgViewer).  The other settings are to send messages 
+; only to the transcript or only to the wlf file.  The valid 
+; values are
+;    both  {default}
+;    tran  {transcript only}
+;    wlf   {wlf file only}
+; msgmode = both
+[Project]
+; Warning -- Do not edit the project properties directly.
+;            Property names are dynamic in nature and property
+;            values have special syntax.  Changing property data directly
+;            can result in a corrupt MPF file.  All project properties
+;            can be modified through project window dialogs.
+Project_Version = 6
+Project_DefaultLib = work
+Project_SortMethod = unused
+Project_Files_Count = 29
+Project_File_0 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/ram_dp.vhd
+Project_File_P_0 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 21 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_1 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_tdo_data_to_ram_m10.vhd
+Project_File_P_1 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349356029 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 17 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_2 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_bypassreg_testchain_m10.vhd
+Project_File_P_2 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349358604 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 3 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_3 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_delay_expected_values.vhd
+Project_File_P_3 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349355704 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 8 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_4 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_write_m10.vhd
+Project_File_P_4 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349356604 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 20 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_5 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/ram_mux2to1_writeport.vhd
+Project_File_P_5 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 23 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_6 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_read_m26devid_m10.vhd
+Project_File_P_6 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349355852 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 13 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_7 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_mux_buffer_tms_tdi_out_and_metainfo.vhd
+Project_File_P_7 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349355799 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 11 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_8 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/ram_mux2to1_readport.vhd
+Project_File_P_8 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 22 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_9 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_update_error_counts_ram3a.vhd
+Project_File_P_9 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349358039 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 19 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_10 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/blank_ram.vhd
+Project_File_P_10 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 0 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_11 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_cmd_m26c_test.vhd
+Project_File_P_11 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1350916161 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 6 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_12 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/trb_net16_regio_bus_handler.vhd
+Project_File_P_12 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 25 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_13 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_cmd_m26c.vhd
+Project_File_P_13 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1350907441 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 5 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_14 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/ram_mux4to1_readport.vhd
+Project_File_P_14 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 24 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_15 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_misc.vhd
+Project_File_P_15 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1350907477 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 10 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_16 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/copy_ram.vhd
+Project_File_P_16 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 1 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_17 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/trb_net_components.vhd
+Project_File_P_17 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 26 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_18 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_check_crc_ram1a.vhd
+Project_File_P_18 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349356551 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 4 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_19 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_init_ram1b.vhd
+Project_File_P_19 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349355717 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 9 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_20 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/crc_32.vhd
+Project_File_P_20 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 2 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_21 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_tdo_sample.vhd
+Project_File_P_21 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 18 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_22 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/version.vhd
+Project_File_P_22 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 28 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_23 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_tdo_compare_counttotal_noram_m10.vhd
+Project_File_P_23 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1350915625 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 16 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_24 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_tdo_compare_count_m10.vhd
+Project_File_P_24 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349356574 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 15 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_25 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/trb_net_std.vhd
+Project_File_P_25 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 27 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_File_26 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_tck_out_component.vhd
+Project_File_P_26 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 14 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_27 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_pulses.vhd
+Project_File_P_27 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1349351254 vhdl_disableopt 0 vhdl_vital 0 cover_excludedefault 0 vhdl_warn1 1 vhdl_warn2 1 vhdl_explicit 1 vhdl_showsource 0 vhdl_warn3 1 cover_covercells 0 vhdl_0InOptions {} vhdl_warn4 1 voptflow 1 cover_optlevel 3 vhdl_options {} vhdl_warn5 1 toggle - ood 0 cover_noshort 0 compile_to work compile_order 12 cover_nosub 0 dont_compile 0 vhdl_use93 2002
+Project_File_28 = /d/jspc29/bneumann/vhdl/jtag_proj/trb_jtag3_threecontrollers_vardelay012_generics/jtag_m26c/jtag_constants.vhd
+Project_File_P_28 = vhdl_novitalcheck 0 file_type vhdl group_id 0 cover_nofec 0 vhdl_nodebug 0 vhdl_1164 1 vhdl_noload 0 vhdl_synth 0 vhdl_enable0In 0 folder {Top Level} last_compile 1350907278 vhdl_disableopt 0 cover_excludedefault 0 vhdl_vital 0 vhdl_warn1 1 vhdl_showsource 0 vhdl_explicit 1 vhdl_warn2 1 vhdl_0InOptions {} cover_covercells 0 vhdl_warn3 1 vhdl_options {} cover_optlevel 3 voptflow 1 vhdl_warn4 1 ood 0 toggle - vhdl_warn5 1 compile_to work cover_noshort 0 compile_order 7 dont_compile 0 cover_nosub 0 vhdl_use93 2002
+Project_Sim_Count = 0
+Project_Folder_Count = 0
+Echo_Compile_Output = 0
+Save_Compile_Report = 1
+Project_Opt_Count = 0
+ForceSoftPaths = 0
+ProjectStatusDelay = 5000
+VERILOG_DoubleClick = Edit
+VERILOG_CustomDoubleClick = 
+SYSTEMVERILOG_DoubleClick = Edit
+SYSTEMVERILOG_CustomDoubleClick = 
+VHDL_DoubleClick = Edit
+VHDL_CustomDoubleClick = 
+PSL_DoubleClick = Edit
+PSL_CustomDoubleClick = 
+TEXT_DoubleClick = Edit
+TEXT_CustomDoubleClick = 
+SYSTEMC_DoubleClick = Edit
+SYSTEMC_CustomDoubleClick = 
+TCL_DoubleClick = Edit
+TCL_CustomDoubleClick = 
+MACRO_DoubleClick = Edit
+MACRO_CustomDoubleClick = 
+VCD_DoubleClick = Edit
+VCD_CustomDoubleClick = 
+SDF_DoubleClick = Edit
+SDF_CustomDoubleClick = 
+XML_DoubleClick = Edit
+XML_CustomDoubleClick = 
+LOGFILE_DoubleClick = Edit
+LOGFILE_CustomDoubleClick = 
+UCDB_DoubleClick = Edit
+UCDB_CustomDoubleClick = 
+UPF_DoubleClick = Edit
+UPF_CustomDoubleClick = 
+PCF_DoubleClick = Edit
+PCF_CustomDoubleClick = 
+PROJECT_DoubleClick = Edit
+PROJECT_CustomDoubleClick = 
+Project_Major_Version = 10
+Project_Minor_Version = 0