diff --git a/ip_cores/saftlib b/ip_cores/saftlib index 6aab4018c5..795fcb2ad5 160000 --- a/ip_cores/saftlib +++ b/ip_cores/saftlib @@ -1 +1 @@ -Subproject commit 6aab4018c59e072042d288c7bfc912572f3a4c0e +Subproject commit 795fcb2ad5f31d0ec927db8ecc6ecf2f1fa49c6b diff --git a/modules/dm_diag/dm_diag.vhd b/modules/dm_diag/dm_diag.vhd index ef72347f01..01e94b7e38 100644 --- a/modules/dm_diag/dm_diag.vhd +++ b/modules/dm_diag/dm_diag.vhd @@ -260,7 +260,7 @@ begin begin if rising_edge(clk_ref_i) then if(rst_ref_n_i = '0' OR s_ctrl_reset_o(0) = '1' OR s_deadtime_stop = '1') then - r_deadtime <= "0" & to_unsigned(-1, r_deadtime'length-1); + r_deadtime <= ('0', others => '1');--"0" & to_unsigned(-1, r_deadtime'length-1); r_deadtime_run <= "0"; else r_deadtime_run(0) <= (r_deadtime_run(0) OR s_deadtime_start); diff --git a/modules/function_generators/serdes_clk_gen/wb_serdes_clk_gen.vhd b/modules/function_generators/serdes_clk_gen/wb_serdes_clk_gen.vhd index 2bb962fcf0..575559d40d 100644 --- a/modules/function_generators/serdes_clk_gen/wb_serdes_clk_gen.vhd +++ b/modules/function_generators/serdes_clk_gen/wb_serdes_clk_gen.vhd @@ -627,9 +627,10 @@ gen_clock_sync_yes : if (g_with_sync = true) generate ld_hi_p0(channel_count) <= '1'; else ld_lo_p0(channel_count) <= '1'; - channel_count <= channel_count + 1; if (channel_count = g_num_outputs-1) then channel_count <= 0; + else + channel_count <= channel_count + 1; end if; end if; set_lo_count <= set_lo_count xor '1'; diff --git a/modules/monster/monster.vhd b/modules/monster/monster.vhd index 4df9a0b2e7..fb74729994 100644 --- a/modules/monster/monster.vhd +++ b/modules/monster/monster.vhd @@ -77,6 +77,7 @@ entity monster is g_family : string; -- "Arria II", "Arria V", or "Arria 10" g_project : string; g_flash_bits : natural; + g_simulation : boolean; -- false for synthesis, true for simulation g_psram_bits : natural; g_ram_size : natural; g_gpio_inout : natural; @@ -977,8 +978,8 @@ begin generic map( g_plls => 4, g_clocks => 4, - g_areset => f_pick(c_is_arria5, 100, 1)*1024, - g_stable => f_pick(c_is_arria5, 100, 1)*1024) + g_areset => f_pick(g_simulation, 16, f_pick(c_is_arria5, 100, 1)*1024), + g_stable => f_pick(g_simulation, 16, f_pick(c_is_arria5, 100, 1)*1024)) port map( clk_free_i => clk_free, rstn_i => core_rstn_i, @@ -1577,7 +1578,8 @@ end generate; usb_fd_io <= s_usb_fd_o when s_usb_fd_oen='1' else (others => 'Z'); usb : ez_usb generic map( - g_sdb_address => c_top_sdb_address) + g_sdb_address => c_top_sdb_address, + g_sys_freq => f_pick(g_simulation, 10, 65000)) -- this is 65000 kHz for g_simulation=false, and 10 kHz for g_simulation=true port map( clk_sys_i => clk_sys, rstn_i => rstn_sys, diff --git a/modules/monster/monster_pkg.vhd b/modules/monster/monster_pkg.vhd index 5cbc2e8fcd..e3644665b9 100644 --- a/modules/monster/monster_pkg.vhd +++ b/modules/monster/monster_pkg.vhd @@ -80,6 +80,7 @@ package monster_pkg is component monster is generic( + g_simulation : boolean := false; g_family : string; -- "Arria II" or "Arria V" g_project : string; g_flash_bits : natural; diff --git a/testbench/tr_simulation/gsi_pexarria5/Manifest.py b/testbench/tr_simulation/gsi_pexarria5/Manifest.py new file mode 100644 index 0000000000..da3aa478a6 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/Manifest.py @@ -0,0 +1,23 @@ +target = "altera" +action = "synthesis" + +fetchto = "../../../ip_cores" +syn_tool = "quartus" +syn_device = "5agxma3d4f" +syn_grade = "i3" +syn_package = "27" +syn_top = "pci_control" +syn_project = "pci_control" + +quartus_preflow = "pci_control.tcl" + +files = [ + "testbench.vhd", +] + +modules = { + "local" : [ + "../../../top/gsi_pexarria5/control", + ] +} + diff --git a/testbench/tr_simulation/gsi_pexarria5/build_id.mif b/testbench/tr_simulation/gsi_pexarria5/build_id.mif new file mode 100644 index 0000000000..9969b6286b --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/build_id.mif @@ -0,0 +1,284 @@ +-- Build ID Memory Initialization File +-- +-- Project : scu_control +-- Platform : scu3 +comexpress +-- FPGA model : Arria II GX (ep2agx125ef29c5) +-- Source info : usb-poll-msi-2549 +-- Build type : developer preview +-- Build date : Tue Apr 28 14:34:31 CEST 2020 +-- Prepared by : Michael Reese +-- Prepared on : belpc121 +-- OS version : Arch Linux, kernel 5.4.8-arch1-1 +-- Quartus : Version 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- +-- 11878658 ez-usb-msi: add usb msi in monster +-- a5272bcb beam_dump: test.sh -> typo +-- eef94812 Merge pull request #198 from GSI-CS-CO/enigma_beam_dump +-- 4546ddea Merge branch 'enigma' of https://github.com/GSI-CS-CO/bel_projects into enigma_beam_dump +-- 6049353b beam_dump: initial + +DEPTH = 256; +WIDTH = 32; +ADDRESS_RADIX = HEX; +DATA_RADIX = HEX; + +CONTENT +BEGIN + +0 : 50726F6A; +1 : 65637420; +2 : 20202020; +3 : 3A207363; +4 : 755F636F; +5 : 6E74726F; +6 : 6C0A506C; +7 : 6174666F; +8 : 726D2020; +9 : 20203A20; +a : 73637533; +b : 202B636F; +c : 6D657870; +d : 72657373; +e : 0A465047; +f : 41206D6F; +10 : 64656C20; +11 : 203A2041; +12 : 72726961; +13 : 20494920; +14 : 47582028; +15 : 65703261; +16 : 67783132; +17 : 35656632; +18 : 39633529; +19 : 0A536F75; +1a : 72636520; +1b : 696E666F; +1c : 203A2075; +1d : 73622D70; +1e : 6F6C6C2D; +1f : 6D73692D; +20 : 32353439; +21 : 0A427569; +22 : 6C642074; +23 : 79706520; +24 : 203A2064; +25 : 6576656C; +26 : 6F706572; +27 : 20707265; +28 : 76696577; +29 : 0A427569; +2a : 6C642064; +2b : 61746520; +2c : 203A2054; +2d : 75652041; +2e : 70722032; +2f : 38203134; +30 : 3A33343A; +31 : 33312043; +32 : 45535420; +33 : 32303230; +34 : 0A507265; +35 : 70617265; +36 : 64206279; +37 : 203A204D; +38 : 69636861; +39 : 656C2052; +3a : 65657365; +3b : 203C6D2E; +3c : 72656573; +3d : 65406773; +3e : 692E6465; +3f : 3E0A5072; +40 : 65706172; +41 : 6564206F; +42 : 6E203A20; +43 : 62656C70; +44 : 63313231; +45 : 0A4F5320; +46 : 76657273; +47 : 696F6E20; +48 : 203A2041; +49 : 72636820; +4a : 4C696E75; +4b : 782C206B; +4c : 65726E65; +4d : 6C20352E; +4e : 342E382D; +4f : 61726368; +50 : 312D310A; +51 : 51756172; +52 : 74757320; +53 : 20202020; +54 : 3A205665; +55 : 7273696F; +56 : 6E203138; +57 : 2E312E30; +58 : 20427569; +59 : 6C642036; +5a : 32352030; +5b : 392F3132; +5c : 2F323031; +5d : 3820534A; +5e : 20537461; +5f : 6E646172; +60 : 64204564; +61 : 6974696F; +62 : 6E0A0A20; +63 : 20313138; +64 : 37383635; +65 : 3820657A; +66 : 2D757362; +67 : 2D6D7369; +68 : 3A206164; +69 : 64207573; +6a : 62206D73; +6b : 6920696E; +6c : 206D6F6E; +6d : 73746572; +6e : 0A202061; +6f : 35323732; +70 : 62636220; +71 : 6265616D; +72 : 5F64756D; +73 : 703A2074; +74 : 6573742E; +75 : 7368202D; +76 : 3E207479; +77 : 706F0A20; +78 : 20656566; +79 : 39343831; +7a : 32204D65; +7b : 72676520; +7c : 70756C6C; +7d : 20726571; +7e : 75657374; +7f : 20233139; +80 : 38206672; +81 : 6F6D2047; +82 : 53492D43; +83 : 532D434F; +84 : 2F656E69; +85 : 676D615F; +86 : 6265616D; +87 : 5F64756D; +88 : 700A2020; +89 : 34353436; +8a : 64646561; +8b : 204D6572; +8c : 67652062; +8d : 72616E63; +8e : 68202765; +8f : 6E69676D; +90 : 6127206F; +91 : 66206874; +92 : 7470733A; +93 : 2F2F6769; +94 : 74687562; +95 : 2E636F6D; +96 : 2F475349; +97 : 2D43532D; +98 : 434F2F62; +99 : 656C5F70; +9a : 726F6A65; +9b : 63747320; +9c : 696E746F; +9d : 20656E69; +9e : 676D615F; +9f : 6265616D; +a0 : 5F64756D; +a1 : 700A2020; +a2 : 36303439; +a3 : 33353362; +a4 : 20626561; +a5 : 6D5F6475; +a6 : 6D703A20; +a7 : 696E6974; +a8 : 69616C0A; +a9 : 00000000; +aa : 00000000; +ab : 00000000; +ac : 00000000; +ad : 00000000; +ae : 00000000; +af : 00000000; +b0 : 00000000; +b1 : 00000000; +b2 : 00000000; +b3 : 00000000; +b4 : 00000000; +b5 : 00000000; +b6 : 00000000; +b7 : 00000000; +b8 : 00000000; +b9 : 00000000; +ba : 00000000; +bb : 00000000; +bc : 00000000; +bd : 00000000; +be : 00000000; +bf : 00000000; +c0 : 00000000; +c1 : 00000000; +c2 : 00000000; +c3 : 00000000; +c4 : 00000000; +c5 : 00000000; +c6 : 00000000; +c7 : 00000000; +c8 : 00000000; +c9 : 00000000; +ca : 00000000; +cb : 00000000; +cc : 00000000; +cd : 00000000; +ce : 00000000; +cf : 00000000; +d0 : 00000000; +d1 : 00000000; +d2 : 00000000; +d3 : 00000000; +d4 : 00000000; +d5 : 00000000; +d6 : 00000000; +d7 : 00000000; +d8 : 00000000; +d9 : 00000000; +da : 00000000; +db : 00000000; +dc : 00000000; +dd : 00000000; +de : 00000000; +df : 00000000; +e0 : 00000000; +e1 : 00000000; +e2 : 00000000; +e3 : 00000000; +e4 : 00000000; +e5 : 00000000; +e6 : 00000000; +e7 : 00000000; +e8 : 00000000; +e9 : 00000000; +ea : 00000000; +eb : 00000000; +ec : 00000000; +ed : 00000000; +ee : 00000000; +ef : 00000000; +f0 : 00000000; +f1 : 00000000; +f2 : 00000000; +f3 : 00000000; +f4 : 00000000; +f5 : 00000000; +f6 : 00000000; +f7 : 00000000; +f8 : 00000000; +f9 : 00000000; +fa : 00000000; +fb : 00000000; +fc : 00000000; +fd : 00000000; +fe : 00000000; +ff : 00000000; +END; diff --git a/testbench/tr_simulation/gsi_pexarria5/dmtd_pll.vhd b/testbench/tr_simulation/gsi_pexarria5/dmtd_pll.vhd new file mode 100644 index 0000000000..185b95a2be --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/dmtd_pll.vhd @@ -0,0 +1,365 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: dmtd_pll.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- ************************************************************ + + +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY dmtd_pll IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END dmtd_pll; + + +ARCHITECTURE SYN OF dmtd_pll IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (6 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire5_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire5 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_fbout : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clk6 : STRING; + port_clk7 : STRING; + port_clk8 : STRING; + port_clk9 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + self_reset_on_loss_lock : STRING; + using_fbmimicbidir_port : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (6 DOWNTO 0); + locked : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire5_bv(0 DOWNTO 0) <= "0"; + sub_wire5 <= To_stdlogicvector(sub_wire5_bv); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + locked <= sub_wire2; + sub_wire3 <= inclk0; + sub_wire4 <= sub_wire5(0 DOWNTO 0) & sub_wire3; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "LOW", + clk0_divide_by => 8, + clk0_duty_cycle => 50, + clk0_multiply_by => 25, + clk0_phase_shift => "0", + inclk0_input_frequency => 50000, + intended_device_family => "Arria II GX", + lpm_hint => "CBX_MODULE_PREFIX=dmtd_pll", + lpm_type => "altpll", + operation_mode => "NO_COMPENSATION", + pll_type => "Left_Right", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_USED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_fbout => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_UNUSED", + port_clk2 => "PORT_UNUSED", + port_clk3 => "PORT_UNUSED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clk6 => "PORT_UNUSED", + port_clk7 => "PORT_UNUSED", + port_clk8 => "PORT_UNUSED", + port_clk9 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + using_fbmimicbidir_port => "OFF", + width_clock => 7 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire4, + clk => sub_wire0, + locked => sub_wire2 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "1" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "1" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "5" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "62.500000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "20.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Arria II GX" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "5" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "62.50000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "dmtd_pll.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "LOW" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "8" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "25" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "50000" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Arria II GX" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NO_COMPENSATION" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "Left_Right" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk6 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk7 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk8 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk9 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: USING_FBMIMICBIDIR_PORT STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "7" +-- Retrieval info: USED_PORT: @clk 0 0 7 0 OUTPUT_CLK_EXT VCC "@clk[6..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL dmtd_pll.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dmtd_pll.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dmtd_pll.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dmtd_pll.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dmtd_pll.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL dmtd_pll_inst.vhd FALSE +-- Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/testbench/tr_simulation/gsi_pexarria5/dmtd_pll_5_10.vhd b/testbench/tr_simulation/gsi_pexarria5/dmtd_pll_5_10.vhd new file mode 100644 index 0000000000..ea71e440b2 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/dmtd_pll_5_10.vhd @@ -0,0 +1,70 @@ +--library ieee; +--use ieee.std_logic_1164.all; +--entity dmtd_pll is +-- port +-- ( +-- areset : in std_logic := '0'; +-- inclk0 : in std_logic := '0'; -- 20 MHz +-- c0 : out std_logic; -- 62.5 MHz +-- locked : out std_logic +-- ); +--end entity; +--architecture simulation of dmtd_pll is +-- signal t_rising, t_falling, half_period : time := 1 ns; +-- signal clk : std_logic := '1'; +-- signal lock : std_logic := '0'; +--begin +-- measure: process +-- begin +-- wait until rising_edge(inclk0); +-- t_rising <= now; +-- wait until falling_edge(inclk0); +-- --report "now = " & time'image(now) & " t_rising = " & time'image(t_rising); +-- half_period <= now - t_rising; +-- end process; + +-- clk <= not clk after half_period * 8 / 25; +-- c0 <= clk; + +-- pll_lock: process +-- begin +-- if areset = '1' then +-- lock <= '0'; +-- wait until falling_edge(areset); +-- else +-- for i in 1 to 10 loop +-- wait until rising_edge(inclk0); +-- end loop; +-- lock <= '1'; +-- end if; +-- end process; +-- locked <= lock; +--end architecture; + +library ieee; +use ieee.std_logic_1164.all; +entity dmtd_pll5 is + port ( + rst : in std_logic := '0'; + refclk : in std_logic := '0'; -- 20 MHz + outclk_0 : out std_logic; -- 62.5 MHz + locked : out std_logic); +end entity; +architecture simulation of dmtd_pll5 is +begin + pll: entity work.dmtd_pll port map (rst, refclk, outclk_0, locked); +end architecture; + +library ieee; +use ieee.std_logic_1164.all; +entity dmtd_pll10 is + port ( + rst : in std_logic := '0'; + refclk : in std_logic := '0'; -- 20 MHz + outclk_0 : out std_logic; -- 62.5 MHz + locked : out std_logic ); +end entity; +architecture simulation of dmtd_pll10 is +begin + pll: entity work.dmtd_pll port map (rst, refclk, outclk_0, locked); +end architecture; diff --git a/testbench/tr_simulation/gsi_pexarria5/eb_commit_fifo.vhd b/testbench/tr_simulation/gsi_pexarria5/eb_commit_fifo.vhd new file mode 100644 index 0000000000..8d8a6839ce --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/eb_commit_fifo.vhd @@ -0,0 +1,127 @@ +------------------------------------------------------------------------------ +-- Title : Etherbone Commit FIFO +-- Project : Etherbone Core +------------------------------------------------------------------------------ +-- File : eb_fifo.vhd +-- Author : Wesley W. Terpstra +-- Company : GSI +-- Created : 2013-04-29 +-- Last update: 2013-04-29 +-- Platform : FPGA-generic +-- Standard : VHDL'93 +------------------------------------------------------------------------------- +-- Description: A FIFO which can commit/abort a sequence of writes +------------------------------------------------------------------------------- +-- Copyright (c) 2013 GSI +------------------------------------------------------------------------------- +-- Revisions : +-- Date Version Author Description +-- 2013-04-08 1.0 terpstra Created +------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.wishbone_pkg.all; +use work.eb_internals_pkg.all; +use work.genram_pkg.all; + +-- r_dat_o is valid when r_empty_o=0 (show ahead) +-- w_dat_i is valid when w_push_i =1 +-- r_pop_i affects r_empty_o on the next cycle +-- w_push_i affects w_full_o on the next cycle +entity eb_commit_fifo is + generic( + g_width : natural; + g_size : natural); + port( + clk_i : in std_logic; + rstn_i : in std_logic; + w_full_o : out std_logic; + w_push_i : in std_logic; + w_dat_i : in std_logic_vector(g_width-1 downto 0); + w_commit_i : in std_logic; + w_abort_i : in std_logic; + r_empty_o : out std_logic; + r_pop_i : in std_logic; + r_dat_o : out std_logic_vector(g_width-1 downto 0)); +end eb_commit_fifo; + +architecture rtl of eb_commit_fifo is + constant c_depth : natural := f_ceil_log2(g_size); + + signal r_idx : unsigned(c_depth downto 0); + signal w_idx : unsigned(c_depth downto 0); + signal e_idx : unsigned(c_depth downto 0); + signal r_idx1 : unsigned(c_depth downto 0); + signal w_idx1 : unsigned(c_depth downto 0); + + constant c_low : unsigned(c_depth-1 downto 0) := (others => '0'); + constant c_high : unsigned(c_depth downto 0) := '1' & c_low; + + signal aa_i : std_logic_vector(c_depth-1 downto 0); + signal ab_i : std_logic_vector(c_depth-1 downto 0); +begin + + aa_i <= std_logic_vector(w_idx(c_depth-1 downto 0)); + ab_i <= std_logic_vector(r_idx1(c_depth-1 downto 0)); + ram : generic_simple_dpram + generic map( + g_data_width => g_width, + g_size => 2**c_depth, + g_dual_clock => false) + port map( + rst_n_i => rstn_i, + clka_i => clk_i, + bwea_i => (others => '1'), + wea_i => w_push_i, + aa_i => aa_i, + da_i => w_dat_i, + clkb_i => clk_i, + ab_i => ab_i, + qb_o => r_dat_o); + + r_idx1 <= (r_idx+1) when r_pop_i ='1' else r_idx; + w_idx1 <= (w_idx+1) when w_push_i='1' else w_idx; + + main : process(rstn_i, clk_i) is + begin + if rstn_i = '0' then + r_idx <= (others => '0'); + e_idx <= (others => '0'); + w_idx <= (others => '0'); + w_full_o <= '0'; + r_empty_o <= '1'; + elsif rising_edge(clk_i) then + r_idx <= r_idx1; + + if w_commit_i = '1' then + e_idx <= w_idx1; + end if; + + if w_abort_i = '1' then + w_idx <= e_idx; + else + w_idx <= w_idx1; + end if; + + -- Compare the newest pointers + if (w_idx1 xor c_high) = r_idx1 then + w_full_o <= '1'; + else + w_full_o <= '0'; + end if; + + -- Use the OLD write pointer to prevent read-during-write + if e_idx = r_idx1 then + r_empty_o <= '1'; + else + r_empty_o <= '0'; + end if; + + end if; + end process; + +end rtl; diff --git a/testbench/tr_simulation/gsi_pexarria5/eb_commit_len_fifo.vhd b/testbench/tr_simulation/gsi_pexarria5/eb_commit_len_fifo.vhd new file mode 100644 index 0000000000..9b5f1f8909 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/eb_commit_len_fifo.vhd @@ -0,0 +1,180 @@ +------------------------------------------------------------------------------ +-- Title : Etherbone Commit FIFO +-- Project : Etherbone Core +------------------------------------------------------------------------------ +-- File : eb_fifo.vhd +-- Author : Wesley W. Terpstra +-- Company : GSI +-- Created : 2013-04-29 +-- Last update: 2013-04-29 +-- Platform : FPGA-generic +-- Standard : VHDL'93 +------------------------------------------------------------------------------- +-- Description: A FIFO which can commit/abort a sequence of writes +------------------------------------------------------------------------------- +-- Copyright (c) 2013 GSI +------------------------------------------------------------------------------- +-- Revisions : +-- Date Version Author Description +-- 2013-04-08 1.0 terpstra Created +------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.wishbone_pkg.all; +use work.eb_internals_pkg.all; +use work.genram_pkg.all; + +-- r_dat_o is valid when r_empty_o=0 (show ahead) +-- w_dat_i is valid when w_push_i =1 +-- r_pop_i affects r_empty_o on the next cycle +-- w_push_i affects w_full_o on the next cycle +entity eb_commit_len_fifo is + generic( + g_width : natural; + g_size : natural + ); + port( + clk_i : in std_logic; + rstn_i : in std_logic; + + r_cnt_o : out unsigned(f_ceil_log2(g_size) downto 0); + w_cnt_o : out unsigned(f_ceil_log2(g_size) downto 0); + w_full_o : out std_logic; + w_push_i : in std_logic; + w_dat_i : in std_logic_vector(g_width-1 downto 0); + w_commit_i : in std_logic; + w_abort_i : in std_logic; + r_empty_o : out std_logic; + r_pop_i : in std_logic; + r_dat_o : out std_logic_vector(g_width-1 downto 0) + ); +end eb_commit_len_fifo; + +architecture rtl of eb_commit_len_fifo is + constant c_depth : natural := f_ceil_log2(g_size); + + signal r_idx : unsigned(c_depth downto 0); + signal w_idx : unsigned(c_depth downto 0); + signal e_idx : unsigned(c_depth downto 0); + signal r_idx1 : unsigned(c_depth downto 0); + signal w_idx1 : unsigned(c_depth downto 0); + + constant c_low : unsigned(c_depth-1 downto 0) := (others => '0'); + constant c_high : unsigned(c_depth downto 0) := '1' & c_low; + + signal s_w_push : std_logic; + signal s_w_adr : unsigned(c_depth downto 0); + signal s_w_dat : std_logic_vector(g_width-1 downto 0); + signal r_len : unsigned(g_width-2 downto 0); + signal r_cnt : unsigned(c_depth downto 0); + + signal aa_i : std_logic_vector(c_depth-1 downto 0); + signal ab_i : std_logic_vector(c_depth-1 downto 0); +begin + + + + aa_i <= std_logic_vector(s_w_adr(c_depth-1 downto 0)); + ab_i <= std_logic_vector(r_idx1(c_depth-1 downto 0)); + ram : generic_simple_dpram + generic map( + g_data_width => g_width, + g_size => 2**c_depth, + g_dual_clock => false) + port map( + rst_n_i => rstn_i, + clka_i => clk_i, + bwea_i => (others => '1'), + wea_i => s_w_push, + aa_i => aa_i, + da_i => s_w_dat, + clkb_i => clk_i, + ab_i => ab_i, + qb_o => r_dat_o); + + s_w_push <= w_push_i or w_commit_i; + + adr: with w_commit_i select + s_w_adr <= w_idx when '0', + e_idx when others; + + + + dat: with w_commit_i select + s_w_dat <= w_dat_i when '0', + w_dat_i(w_dat_i'left) & std_logic_vector(r_len) when others; + + + r_idx1 <= (r_idx+1) when r_pop_i ='1' else r_idx; + w_idx1 <= (w_idx+1) when w_push_i='1' else w_idx; + + r_cnt_o <= r_cnt; + w_cnt_o <= r_len(w_cnt_o'left downto 0); + + main : process(rstn_i, clk_i) is + begin + if rstn_i = '0' then + r_idx <= (others => '0'); + e_idx <= (others => '0'); + w_idx <= to_unsigned(1, w_idx'length); + w_full_o <= '0'; + r_cnt <= (others => '0'); + r_empty_o <= '1'; + r_len <= (others => '0'); + elsif rising_edge(clk_i) then + r_idx <= r_idx1; + + if w_push_i = '1' then + r_len <= r_len + to_unsigned((g_width/8), r_len'length); + end if; + + if r_pop_i = '1' then + r_cnt <= r_cnt + to_unsigned((g_width/8), r_cnt'length); + end if; + + + if w_commit_i = '1' then + + + r_cnt <= (others => '0'); + + + r_len <= (others => '0'); + + + e_idx <= w_idx; + w_idx <= w_idx1; + elsif w_abort_i = '1' then + r_len <= (others => '0'); + r_cnt <= (others => '0'); + w_idx <= e_idx + 1; + else + w_idx <= w_idx1; + end if; + + + + + -- Compare the newest pointers + if (w_idx1 xor c_high) = r_idx1 then + w_full_o <= '1'; + else + w_full_o <= '0'; + end if; + + -- Use the OLD write pointer to prevent read-during-write + if r_idx1 = e_idx then + r_empty_o <= '1'; + else + r_empty_o <= '0'; + end if; + + + end if; + end process; + +end rtl; diff --git a/testbench/tr_simulation/gsi_pexarria5/eb_sim_core/simbridge_pkg_c.cpp b/testbench/tr_simulation/gsi_pexarria5/eb_sim_core/simbridge_pkg_c.cpp new file mode 100644 index 0000000000..f429305474 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/eb_sim_core/simbridge_pkg_c.cpp @@ -0,0 +1,734 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +// std_logic values +typedef enum { + STD_LOGIC_U, + STD_LOGIC_X, + STD_LOGIC_0, + STD_LOGIC_1, + STD_LOGIC_Z, + STD_LOGIC_W, + STD_LOGIC_L, + STD_LOGIC_H, + STD_LOGIC_DASH +} std_logic_t; + + +class EBslave +{ +public: + void init() { + wb_stbs.clear(); + wb_wait_for_acks.clear(); + input_word_buffer.clear(); + input_word_buffer2.clear(); + output_word_buffer.clear(); + + pfds[0].fd = open("/dev/ptmx", O_RDWR );//| O_NONBLOCK); + + // put it in raw mode + struct termios raw; + if (tcgetattr(pfds[0].fd, &raw) == 0) + { + // input modes - clear indicated ones giving: no break, no CR to NL, + // no parity check, no strip char, no start/stop output (sic) control + raw.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON); + + // output modes - clear giving: no post processing such as NL to CR+NL + raw.c_oflag &= ~(OPOST); + + // control modes - set 8 bit chars + raw.c_cflag |= (CS8); + + // local modes - clear giving: echoing off, canonical off (no erase with + // backspace, ^U,...), no extended functions, no signal chars (^Z,^C) + raw.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG); + + // control chars - set return condition: min number of bytes and timer + raw.c_cc[VMIN] = 5; raw.c_cc[VTIME] = 8; // after 5 bytes or .8 seconds + // // after first byte seen + raw.c_cc[VMIN] = 0; raw.c_cc[VTIME] = 0; // immediate - anything + raw.c_cc[VMIN] = 2; raw.c_cc[VTIME] = 0; // after two bytes, no timer + raw.c_cc[VMIN] = 0; raw.c_cc[VTIME] = 8; // after a byte or .8 seconds + + // put terminal in raw mode after flushing + if (tcsetattr(pfds[0].fd,TCSAFLUSH,&raw) < 0) + { + int err = errno; + printf("Error, cant set raw mode: %s\n", strerror(err)); + return; + } + } + word_count = 0; + grantpt(pfds[0].fd); + unlockpt(pfds[0].fd); + state = EB_SLAVE_STATE_IDLE; + std::ofstream tmpfile("/tmp/simbridge-eb-device"); + tmpfile << pts_name().substr(1) << std::endl; + std::cerr << "eb-device: " << pts_name() << std::endl; + if (_stop_until_connected) { + std::cerr << "waiting for client, simulation stopped ... "; + } else { + std::cerr << "device is ready, simulation is running" << std::endl; + } + if (_stop_until_connected) + { + pfds[0].events = POLLIN; + poll(pfds,1,-1); + std::cerr << " connected, simulation continues" << std::endl; + _stop_until_connected = false; + } + error_shift_reg = 0; + + } + + + EBslave(bool stop_until_connected, bool polled, uint32_t sdb_adr, uint32_t msi_addr_first, uint32_t msi_addr_last) + { + std::cerr << "EBslave: sdb_adr=0x" << std::hex << std::setw(8) << std::setfill('0') << sdb_adr + << " msi_addr_first=0x" << std::hex << std::setw(8) << std::setfill('0') << msi_addr_first + << " msi_addr_last=0x" << std::hex << std::setw(8) << std::setfill('0') << msi_addr_last + << std::endl; + _stop_until_connected = stop_until_connected; + _polled = polled; + eb_sdb_adr = sdb_adr; + eb_msi_adr_first = msi_addr_first; + eb_msi_adr_last = msi_addr_last; + init(); + } + + std::string pts_name() { + return std::string(ptsname(pfds[0].fd)); + } + + + void fill_input_buffer() { + uint8_t buffer[1024]; + uint8_t *value; + pfds[0].events = POLLIN; + int timeout_ms = 0; + int result = poll(pfds,1,timeout_ms); + if (result != 1) { + return; + } + if (pfds[0].revents == POLLHUP) { + close(pfds[0].fd); + pfds[0].fd = 0; + // exit(1); + init(); + return; + } + result = read(pfds[0].fd, (void*)buffer, sizeof(buffer)); + if (result == -1 && errno == EAGAIN) { + return; + } else if (result == -1) { + std::cerr << "unexpected error " << errno << " " << strerror(errno) << std::endl; + switch(errno) { + case EBADF: std::cerr << "EBADF" << std::endl; break; + case EFAULT: std::cerr << "EFAULT" << std::endl; break; + case EINTR: std::cerr << "EINTR" << std::endl; break; + case EINVAL: std::cerr << "EINVAL" << std::endl; break; + case EIO: std::cerr << "EIO" << std::endl; break; + case EISDIR: std::cerr << "EISDIR" << std::endl; break; + } + close(pfds[0].fd); + pfds[0].fd = 0; + init(); + + } else if (result >= 4) { + value = buffer; + while (result > 0) { + uint32_t value32 = value[0]; value32 <<=8; + value32 |= value[1]; value32 <<=8; + value32 |= value[2]; value32 <<=8; + value32 |= value[3]; + // std::cerr << "<= 0x" << std::hex << std::setw(8) << std::setfill('0') << (uint32_t)value32 << std::endl; + input_word_buffer.push_back(value32); + input_word_buffer2.push_back(value32); + result -= 4; + value += 4; + ++word_count; + } + } + } + // return true if a word is available + // return false if there is nothing + bool next_word(uint32_t &result) { + // try to read from input stream + for (;;) { + if (input_word_buffer.size() > 0) { + result = input_word_buffer.front(); + input_word_buffer.pop_front(); + return true; + } else { + fill_input_buffer(); + if (input_word_buffer.size() > 0) continue; + return false; + } + } + } + + + int master_out(std_logic_t *cyc, std_logic_t *stb, std_logic_t *we, int *adr, int *dat, int *sel) { + // std::cerr << "out " << state << std::endl; + int end_cyc = 0; + + // std::cerr << "control_out" << std::endl; + *cyc = STD_LOGIC_0; + *stb = STD_LOGIC_0; + *we = STD_LOGIC_0; + *adr = 0xaffe1234; + *dat = 0xbabe1234; + *sel = 0xf; + + uint32_t word; + switch(state) { + case EB_SLAVE_STATE_IDLE: + if (next_word(word)) { + if (word == 0x4e6f11ff) { + wb_stbs.push_back(wb_stb(0,0x4e6f1644,false,true)); // not a real strobe, just a pass-through + if (next_word(word)) { + wb_stbs.push_back(wb_stb(0,word,false,true)); // not a real strobe, just a pass-through + state = EB_SLAVE_STATE_EB_HEADER; + } + } + } + break; + case EB_SLAVE_STATE_EB_HEADER: + if (next_word(word)) { // eb record header + eb_flag_bca = word & 0x80000000; + eb_flag_rca = word & 0x40000000; + eb_flag_rff = word & 0x20000000; + eb_flag_cyc = word & 0x08000000; + eb_flag_wca = word & 0x04000000; + eb_flag_wff = word & 0x02000000; + eb_byte_en = (word & 0x00ff0000) >> 16; + eb_wcount = (word & 0x0000ff00) >> 8; + eb_rcount = (word & 0x000000ff) >> 0; + uint32_t response = (word & 0x00ff0000); // echo byte_enable + //response |= (word & 0x0000ff00) >> 8; // wcount becomes rcount (no! wcount becomes zero) + response |= (word & 0x000000ff) << 8; // rcount becomes wcount + response |= (eb_flag_cyc << 27); // response rca <= request bca + response |= (eb_flag_bca << 26); // response rff <= request rff + response |= (eb_flag_rff << 25); // response wca <= request wca; + + + // if we have a write request, the response must be zero and a new header has to be inserted + // in front of the read response (if there was any read request) + if (eb_wcount > 0) { + new_header = response & 0xffffff00; // delete the read count; + response = 0; + } + wb_stbs.push_back(wb_stb(response,response,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().comment = "header"; + wb_stbs.back().end_cyc = eb_flag_cyc; + + // std::cerr << "header " << std::hex << std::setw(8) << std::setfill('0') << word + // << " response " << std::setw(8) << std::setfill('0') << response << std::endl; + if (eb_wcount > 0) { + if (eb_flag_wca) { + state = EB_SLAVE_STATE_EB_CONFIG_FIRST; + } else { + state = EB_SLAVE_STATE_EB_WISHBONE_FIRST; + } + } else { + if (eb_flag_rca) { // access to config space + state = EB_SLAVE_STATE_EB_CONFIG_FIRST; + } else { + state = EB_SLAVE_STATE_EB_WISHBONE_FIRST; + } + } + } + break; + case EB_SLAVE_STATE_EB_CONFIG_FIRST: + if (eb_wcount > 0) { + uint32_t base_write_adr; + if (next_word(base_write_adr)) { + wb_stbs.push_back(wb_stb(0x0,0x0,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + state = EB_SLAVE_STATE_EB_CONFIG_REST; + } + } else if (eb_rcount > 0) { + uint32_t base_ret_adr; + if (next_word(base_ret_adr)) { + wb_stbs.push_back(wb_stb(base_ret_adr,base_ret_adr,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + state = EB_SLAVE_STATE_EB_CONFIG_REST; + } + } else { + state = EB_SLAVE_STATE_EB_HEADER; + } + break; + case EB_SLAVE_STATE_EB_CONFIG_REST: + if (eb_wcount > 0) { + uint32_t write_val; + if (next_word(write_val)) { + --eb_wcount; + if (eb_wcount == 0) { + wb_stbs.push_back(wb_stb(new_header,new_header,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + } else { + wb_stbs.push_back(wb_stb(0x0,0x0,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + } + if (eb_wcount == 0) { + if (eb_rcount == 0) { + state = EB_SLAVE_STATE_EB_HEADER; + } else { + state = EB_SLAVE_STATE_EB_CONFIG_FIRST; // handle the rcount values + } + } + } + } else if (eb_rcount > 0) { + uint32_t read_adr; + if (next_word(read_adr)) { + --eb_rcount; + uint32_t err = 0x0; + switch(read_adr) { + case 0x0: + wb_stbs.push_back(wb_stb(error_shift_reg,error_shift_reg,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + error_shift_reg = 0; // clear the error shift register + break; + case 0xc: + // this should return the sdb address + wb_stbs.push_back(wb_stb(eb_sdb_adr,eb_sdb_adr,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + break; + case 0x2c: + wb_stbs.push_back(wb_stb(0x1,0x1,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + break; + case 0x34: + wb_stbs.push_back(wb_stb(eb_msi_adr_first,eb_msi_adr_first,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + break; + case 0x3c: + wb_stbs.push_back(wb_stb(eb_msi_adr_last,eb_msi_adr_last,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + break; + case 0x40: // msi_adr + if (msi_queue.size() > 0 && _polled) { + msi_adr = msi_queue.front().adr; + msi_dat = msi_queue.front().dat; + msi_cnt = 1; + if (msi_queue.size() > 1) { + msi_cnt = 3; + } + msi_queue.pop_front(); + } else { + msi_cnt = 0; + } + wb_stbs.push_back(wb_stb(msi_adr,msi_adr,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + break; + case 0x44: // msi_dat + wb_stbs.push_back(wb_stb(msi_dat,msi_dat,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + break; + case 0x48: + wb_stbs.push_back(wb_stb(msi_cnt,msi_cnt,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + break; + + // x"00000000" when "01000", -- 0x20 = 0[010 00]00 + // x"00000000" when "01001", -- 0x24 = 0[010 01]00 + // x"00000000" when "01010", -- 0x28 + // x"00000001" when "01011", -- 0x2c + // x"00000000" when "01100", -- 0x30 + // c_ebs_msi.sdb_component.addr_first(31 downto 0) when "01101", -- 0x34 + // x"00000000" when "01110", -- 0x38 + // c_ebs_msi.sdb_component.addr_last(31 downto 0) when "01111", -- 0x3c + // msi_adr when "10000", -- 0x40 = 0[100 00]00 + // msi_dat when "10001", -- 0x44 = 0[100 01]00 + // msi_cnt when "10010", -- 0x48 = 0[100 10]00 + // x"00000000" when others; + default: + wb_stbs.push_back(wb_stb(0x0,0x0,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + wb_stbs.back().err = true; + } + if (eb_rcount == 0) { + state = EB_SLAVE_STATE_EB_HEADER; + } + } + + } + break; + case EB_SLAVE_STATE_EB_WISHBONE_FIRST: + if (eb_wcount > 0) { + if (next_word(base_write_adr)) { + // output_word_buffer.push_back(base_write_adr); + wb_stbs.push_back(wb_stb(0x0,0x0,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + // wb_stbs.back().zero = true; + state = EB_SLAVE_STATE_EB_WISHBONE_REST; + } + } else if (eb_rcount > 0) { + if (next_word(base_ret_adr)) { + // output_word_buffer.push_back(base_ret_adr); + wb_stbs.push_back(wb_stb(base_ret_adr,base_ret_adr,false,true)); // not a real strobe, just a pass-through + wb_stbs.back().end_cyc = eb_flag_cyc; + state = EB_SLAVE_STATE_EB_WISHBONE_REST; + } + } else { + state = EB_SLAVE_STATE_EB_HEADER; + } + break; + case EB_SLAVE_STATE_EB_WISHBONE_REST: + if (eb_wcount > 0) { + uint32_t write_val; + if (next_word(write_val)) { + --eb_wcount; + // put the write strobe into the queue + wb_stbs.push_back(wb_stb(base_write_adr,write_val,true)); + wb_stbs.back().end_cyc = eb_flag_cyc; + if (eb_wcount == 0) { + wb_stbs.back().new_header = true; + wb_stbs.back().new_header_value = new_header; + } else { + wb_stbs.back().zero = true; + } + // increment base_write_adr unless we are writing into a fifo + if (!eb_flag_wff) base_write_adr += 4; + if (eb_wcount == 0) { + if (eb_rcount == 0) { + state = EB_SLAVE_STATE_EB_HEADER; + } else { + if (eb_flag_rca) { // access to config space + state = EB_SLAVE_STATE_EB_CONFIG_FIRST; + } else { + state = EB_SLAVE_STATE_EB_WISHBONE_FIRST; + } + } + } + } + } else if (eb_rcount > 0) { + uint32_t read_adr; + if (next_word(read_adr)) { + // std::cerr << "read_adr " << std::hex << std::setw(8) << std::setfill('0') << read_adr + // << " rcnt " << std::dec << (int)eb_rcount << std::endl; + --eb_rcount; + wb_stbs.push_back(wb_stb(read_adr,0,false)); + wb_stbs.back().end_cyc = eb_flag_cyc; + if (eb_rcount == 0) { + state = EB_SLAVE_STATE_EB_HEADER; + } + } + + } + break; + } + + + if (handle_pass_through()) end_cyc = 1; + send_output_buffer(); + + if (eb_flag_cyc) { + *cyc = STD_LOGIC_0; + } + if (wb_stbs.size() > 0 || wb_wait_for_acks.size() > 0) { + *cyc = STD_LOGIC_1; + } + + strobe = false; + bool write_enable = false; + *we = STD_LOGIC_0; + if (wb_stbs.size() > 0) { + strobe = true; + if (wb_stbs.front().end_cyc) { + end_cyc = 1; + } + if (wb_stbs.front().we) { + *we = STD_LOGIC_1; + write_enable = true; + } else { + *we = STD_LOGIC_0; + } + *adr = wb_stbs.front().adr; + *dat = wb_stbs.front().dat; + *sel = 0xf; + } + *stb = strobe ? STD_LOGIC_1 : STD_LOGIC_0; + *we = write_enable ? STD_LOGIC_1 : STD_LOGIC_0; + return end_cyc; + } + + int handle_pass_through() { + int end_cyc = 0; + // std::cerr << "handle_pass_through " << wb_stbs.size() << std::endl; + while(wb_stbs.size() > 0 && wb_stbs.front().passthrough) { + wb_wait_for_acks.push_back(wb_stbs.front()); + if (wb_stbs.front().end_cyc) end_cyc = 1; + wb_stbs.pop_front(); + } + // std::cerr << "handle_pass_through " << wb_wait_for_acks.size() << std::endl; + // remove all pass-through values + while (wb_wait_for_acks.size() > 0 && wb_wait_for_acks.front().passthrough) { + // std::cerr << "pass-through" << std::endl; + output_word_buffer.push_back(wb_wait_for_acks.front().dat); + int err = wb_wait_for_acks.front().err; + error_shift_reg = (error_shift_reg << 1) | err; + wb_wait_for_acks.pop_front(); + } + // std::cerr << "handle_pass_through " << output_word_buffer.size() << std::endl; + return end_cyc; + } + + void send_output_buffer() + { + bool wrote_something = false; + // std::cerr << "send_output_buffer " << wb_wait_for_acks.size() << " " << output_word_buffer.size() << " " << word_count << std::endl; + if (wb_wait_for_acks.size() == 0 && output_word_buffer.size() >= word_count) { + std::vector write_buffer; + while (output_word_buffer.size() > 0) { + --word_count; + uint32_t word_out = output_word_buffer.front(); + uint32_t word_in = input_word_buffer2.front(); + output_word_buffer.pop_front(); + input_word_buffer2.pop_front(); + std::cerr << std::hex << std::setw(8) << std::setfill('0') << (uint32_t)word_in + << " => 0x" << std::hex << std::setw(8) << std::setfill('0') << (uint32_t)word_out + << std::endl; + wrote_something = true; + for (int i = 0; i < 4; ++i) { + uint8_t val = word_out >> (8*(3-i)); + //std::cerr << " >" << std::hex << std::setw(2) << std::setfill('0') << (uint32_t)val << std::endl; + //write(pfds[0].fd, (void*)&val, sizeof(val)); + write_buffer.push_back(val); + } + } + write(pfds[0].fd, (void*)&write_buffer[0], write_buffer.size()); + if (wrote_something) { + std::cerr << "----------------------" << std::endl; + } + } + if (word_count == 0 && !_polled) { + // std::cerr << "all bytes sent" << std::endl; + for (unsigned i = 0; i < msi_queue.size(); ++i) { + std::vector msi_buffer; + uint32_t adr = msi_queue[i].adr - eb_msi_adr_first; + uint32_t dat = msi_queue[i].dat; + std::cerr << "send msi "; + std::cerr << "adr=0x" << std::hex << std::setw(8) << std::setfill('0') << adr << " "; + std::cerr << "dat=0x" << std::hex << std::setw(8) << std::setfill('0') << dat << " "; + std::cerr << std::dec << std::endl; + + msi_buffer.push_back(0xa8); + msi_buffer.push_back(0x0f); + msi_buffer.push_back(0x01); + msi_buffer.push_back(0x00); + + msi_buffer.push_back(adr>>24); + msi_buffer.push_back(adr>>16); + msi_buffer.push_back(adr>>8); + msi_buffer.push_back(adr>>0); + + msi_buffer.push_back(dat>>24); + msi_buffer.push_back(dat>>16); + msi_buffer.push_back(dat>>8); + msi_buffer.push_back(dat>>0); + + write(pfds[0].fd, (void*)&msi_buffer[0], msi_buffer.size()); + } + msi_queue.clear(); + } + } + + // should be called on falling_edge(clk) + int master_in(std_logic_t ack, std_logic_t err, std_logic_t rty, std_logic_t stall, int dat) { + // std::cerr << "in" << std::endl; + // std::cerr << "control_in wb_stbs.size() = " << std::dec << (int)wb_stbs.size() << std::endl; + int end_cyc = 0; + if (handle_pass_through()) end_cyc = 1; + if (wb_stbs.size() > 0 && (strobe && stall == STD_LOGIC_0)) { + wb_wait_for_acks.push_back(wb_stbs.front()); + if (wb_stbs.front().end_cyc) end_cyc = 1; + wb_stbs.pop_front(); + } + if (wb_wait_for_acks.size() > 0 && (ack == STD_LOGIC_1 || err == STD_LOGIC_1)) { + if (wb_wait_for_acks.front().we) { + if (wb_wait_for_acks.front().zero) { + output_word_buffer.push_back(0x0); + } else if (wb_wait_for_acks.front().new_header) { + output_word_buffer.push_back(wb_wait_for_acks.front().new_header_value); + } else { + output_word_buffer.push_back(wb_wait_for_acks.front().dat); + } + } else { + output_word_buffer.push_back(dat); + } + wb_wait_for_acks.pop_front(); + int err = 0; + if (err == STD_LOGIC_1) { + err = 1; + } + error_shift_reg = (error_shift_reg << 1) | err; + } + send_output_buffer(); + return end_cyc; + } + + + + void msi_slave_out(std_logic_t *ack, std_logic_t *err, std_logic_t *rty, std_logic_t *stall, int *dat) { + *ack = STD_LOGIC_0; + *err = STD_LOGIC_0; + *rty = STD_LOGIC_0; + *stall = STD_LOGIC_0; + if (msi_slave_out_ack) *ack = STD_LOGIC_1; + if (msi_slave_out_err) *err = STD_LOGIC_1; + *dat = 0x0; + } + + void msi_slave_in(std_logic_t cyc, std_logic_t stb, std_logic_t we, int adr, int dat, int sel) { + msi_slave_out_ack = false; + msi_slave_out_err = false; + if (cyc == STD_LOGIC_1 && stb == STD_LOGIC_1) { + if (we == STD_LOGIC_1) { + msi_slave_out_ack = true; + adr = adr&(eb_msi_adr_last-eb_msi_adr_first); + msi_queue.push_back(MSI(adr,dat)); + std::cerr << "got MSI" << std::endl; + // ignore sel + } else { + msi_slave_out_err = true; // msi_slave is write-only! + } + } + } + +private: + struct pollfd pfds[1]; + std::deque input_word_buffer; + std::deque input_word_buffer2; // only used to echo the input next to the output (not used for bridge logic) + std::deque output_word_buffer; + bool eb_flag_bca; + bool eb_flag_rca; + bool eb_flag_rff; + bool eb_flag_cyc; + bool eb_flag_wca; + bool eb_flag_wff; + uint8_t eb_byte_en, eb_wcount, eb_rcount; + + uint32_t base_write_adr; + uint32_t base_ret_adr; + + + uint32_t error_shift_reg; + uint32_t eb_sdb_adr; + uint32_t eb_msi_adr_first; + uint32_t eb_msi_adr_last; + + bool msi_slave_out_ack; + bool msi_slave_out_err; + + struct MSI { + MSI(uint32_t a, uint32_t d) : adr(a), dat(d) {} + uint32_t adr; + uint32_t dat; + }; + std::deque msi_queue; + uint32_t msi_adr; + uint32_t msi_dat; + uint32_t msi_cnt; + + + // state machine of the EB-slave + typedef enum{ + EB_SLAVE_STATE_IDLE, + EB_SLAVE_STATE_EB_HEADER, + EB_SLAVE_STATE_EB_CONFIG_FIRST, + EB_SLAVE_STATE_EB_CONFIG_REST, + EB_SLAVE_STATE_EB_WISHBONE_FIRST, + EB_SLAVE_STATE_EB_WISHBONE_REST, + } state_t; + state_t state; + + uint32_t word_count; + + bool strobe; + + uint32_t new_header; + + struct wb_stb { + uint32_t adr; + uint32_t dat; + bool we; + bool ack; + bool err; + bool passthrough; + bool zero; + bool end_cyc; + bool new_header; + uint32_t new_header_value; + std::string comment; + wb_stb(uint32_t a, uint32_t d, bool w, bool pt = false) + : adr(a), dat(d), we(w), ack(false), err(false), passthrough(pt), zero(false), end_cyc(false), new_header(false) {}; + }; + std::deque wb_stbs; + std::deque wb_wait_for_acks; + + bool _stop_until_connected; + bool _polled; +}; + + + + +EBslave *slave; + +extern "C" +void eb_simbridge_init(int stop_until_connected, int polled, int sdb_adr, int msi_addr_first, int msi_addr_last) { + slave = new EBslave(stop_until_connected, polled, sdb_adr, msi_addr_first, msi_addr_last); +} + + +extern "C" +void eb_simbridge_master_out(char *cyc, char *stb, char *we, int *adr, int *dat, int *sel, int *end_cyc) +{ + std_logic_t _cyc, _stb, _we; + *end_cyc = slave->master_out(&_cyc,&_stb,&_we,adr,dat,sel); + *cyc = (char)_cyc; + *stb = (char)_stb; + *we = (char)_we; +} +extern "C" +void eb_simbridge_master_in(std_logic_t ack, std_logic_t err, std_logic_t rty, std_logic_t stall, int dat, int *end_cyc) +{ + // std::cerr << "in" << std::endl; + *end_cyc = slave->master_in(ack,err,rty,stall,dat); +} + + +extern "C" +void eb_simbridge_msi_slave_in(std_logic_t cyc, std_logic_t stb, std_logic_t we, int adr, int dat, int sel) +{ + slave->msi_slave_in(cyc,stb,we,adr,dat,sel); +} +extern "C" +void eb_simbridge_msi_slave_out(char *ack, char *err, char *rty, char *stall, int *dat) +{ + std_logic_t _ack, _err, _rty, _stall; + slave->msi_slave_out(&_ack,&_err,&_rty,&_stall,dat); + *ack = (char)_ack; + *err = (char)_err; + *rty = (char)_rty; + *stall = (char)_stall; +} diff --git a/testbench/tr_simulation/gsi_pexarria5/ez_usb_chip.vhd b/testbench/tr_simulation/gsi_pexarria5/ez_usb_chip.vhd new file mode 100644 index 0000000000..3be59bc1be --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/ez_usb_chip.vhd @@ -0,0 +1,126 @@ +-- behavioral simulation of the FIFO slave interface +-- of an EZUSB chip. It redirects the signals into +-- a pseudo terminal and allows real host software +-- tools to access the simulation via this pseudo terminal +-- the name of the pseudo terminal (eg. /dev/pts/9) is +-- written to stdout when the simulation starts +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.ez_usb_dev.all; + +entity ez_usb_chip is + generic ( + g_stop_until_client_connects : boolean := true; + g_stop_when_idle_for_too_long: integer := 0 + ); + port ( + rstn_i : in std_logic; + wu2_o : out std_logic := '0'; -- not really a line of ez-usb-chip but this is needed by etherbone slave to work + readyn_o : out std_logic := '0'; + fifoadr_i : in std_logic_vector(1 downto 0); + fulln_o : out std_logic := '1'; + emptyn_o : out std_logic := '0'; + sloen_i : in std_logic; + slrdn_i : in std_logic; + slwrn_i : in std_logic; + pktendn_i : in std_logic; + fd_io : inout std_logic_vector(7 downto 0) := (others => 'Z') + ); +end entity; + +architecture simulation of ez_usb_chip is + signal out_value : std_logic_vector(7 downto 0) := (others => '0'); + signal clk_internal : std_logic := '1'; + signal unlock_stop_mechanism : boolean := false; + + type state_t is (s_init, s_work); + signal state : state_t := s_init; + + signal slrdn_1 : std_logic; + signal slwrn_1 : std_logic; + signal pktendn_1 : std_logic; + signal fifoadr_1 : std_logic_vector(1 downto 0); +begin + + -- this will shutdown the simulation if usb is idle for too long + --abort_mechanism: if g_stop_when_idle_for_too_long > 0 generate + -- clk_internal <= not clk_internal after 10 ns; + -- process + -- variable count : integer := 0; + -- begin + -- wait until rising_edge(clk_internal); + -- if unlock_stop_mechanism then + -- count := count + 1; + -- --report "count = " & integer'image(count); + -- if count = g_stop_when_idle_for_too_long then + -- assert false report "QUIT" severity failure; + -- end if; + -- if sloen_i = '0' or slrdn_i = '0' or slwrn_i = '0' then + -- count := 0; + -- end if; + -- end if; + -- end process; + --end generate; + + clk_internal <= not clk_internal after 5 ns; + + fd_io <= out_value when sloen_i = '0' else (others => 'Z'); + + + fulln_o <= '1'; -- we are never full + readyn_o <= '0'; -- we are always ready + dev: process + variable value_from_file : integer; + variable client_connected : boolean; + variable stop_until_client_connects : boolean := g_stop_until_client_connects; + begin + + wait until rising_edge(clk_internal); + slrdn_1 <= slrdn_i; + slwrn_1 <= slwrn_i; + fifoadr_1 <= fifoadr_i; + pktendn_1 <= pktendn_i; + + emptyn_o <= '0'; + if rstn_i = '1' then + if client_connected then + -- read value from file unless we already have a valid value + if value_from_file < 0 then + value_from_file := ez_usb_dev_read(timeout_value => 0); + end if; + -- change state based on value + if value_from_file = HANGUP then + wu2_o <= '0'; + client_connected := false; + elsif value_from_file >= 0 and fifoadr_i = "00" then -- valid value + wu2_o <= '1'; + emptyn_o <= '1'; -- we are no longer empty and have data to send + end if; + -- communication with connected hardware + if slwrn_1 = '1' and slwrn_i = '0' and fifoadr_i = "10" then -- falling edge on slwrn_i to dev fifo + ez_usb_dev_write(to_integer(unsigned(fd_io))); + elsif slwrn_1 = '1' and slwrn_i = '0' and fifoadr_i = "11" then -- falling edge on slwrn_i to tty fifo + report "tty: " & character'val(to_integer(unsigned(fd_io))); + elsif slrdn_1 = '1' and slrdn_i = '0' then -- falling edge on slrdn_i + out_value <= std_logic_vector(to_signed(value_from_file, 8)); + elsif slrdn_1 = '0' and slrdn_i = '1' then -- falling edge on slrdn_i + value_from_file := -1; + end if; + -- write send written data + if pktendn_1 = '1' and pktendn_i = '0' then + ez_usb_dev_flush; + end if; + else + ez_usb_dev_init(stop_until_client_connects); + stop_until_client_connects := false; + client_connected := true; + unlock_stop_mechanism <= true; + end if; -- client_connected + end if; -- rstn_i = '1' + + end process; + +end architecture; + + diff --git a/testbench/tr_simulation/gsi_pexarria5/ez_usb_dev.vhd b/testbench/tr_simulation/gsi_pexarria5/ez_usb_dev.vhd new file mode 100644 index 0000000000..3b762e0b85 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/ez_usb_dev.vhd @@ -0,0 +1,48 @@ +package ez_usb_dev is + + procedure ez_usb_dev_init(stop_unitl_connected : boolean); + attribute foreign of ez_usb_dev_init : procedure is "VHPIDIRECT ez_usb_dev_init"; + + -- if the function returns a positive integer, it is a valid value + -- if the function returns a negative value it is either + -- TIMEOUT, meaning that nothing was read + -- or HANGUP, meaning that the client disconnected + function ez_usb_dev_read(timeout_value : integer) return integer; + attribute foreign of ez_usb_dev_read : function is "VHPIDIRECT ez_usb_dev_read"; + + procedure ez_usb_dev_write(x : integer); + attribute foreign of ez_usb_dev_write : procedure is "VHPIDIRECT ez_usb_dev_write"; + + procedure ez_usb_dev_flush; + attribute foreign of ez_usb_dev_flush : procedure is "VHPIDIRECT ez_usb_dev_flush"; + + + shared variable my_var : integer := 43; + shared variable TIMEOUT : integer := -1; + shared variable HANGUP : integer := -2; +end package; + +package body ez_usb_dev is + + procedure ez_usb_dev_init(stop_unitl_connected : boolean) is + begin + assert false report "VHPI" severity failure; + end procedure; + + function ez_usb_dev_read(timeout_value : integer) return integer is + begin + assert false report "VHPI" severity failure; + return 0; + end function; + + procedure ez_usb_dev_write(x : integer) is + begin + assert false report "VHPI" severity failure; + end procedure; + + procedure ez_usb_dev_flush is + begin + assert false report "VHPI" severity failure; + end procedure; + +end package body; diff --git a/testbench/tr_simulation/gsi_pexarria5/ez_usb_dev_c.c b/testbench/tr_simulation/gsi_pexarria5/ez_usb_dev_c.c new file mode 100644 index 0000000000..4b68b46e15 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/ez_usb_dev_c.c @@ -0,0 +1,153 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#define VARNAME (work__ez_usb_dev__my_var) +#define TIMEOUT (work__ez_usb_dev__timeout) +#define HANGUP (work__ez_usb_dev__hangup) +extern int VARNAME; +extern int TIMEOUT; +extern int HANGUP; + +struct pollfd pfds[1] = {0,}; +unsigned char write_buffer[32768] = {0,}; +int write_buffer_length = 0; + +int record_read_count = 0; +int record_write_count = 0; + + +void ez_usb_dev_init(int stop_until_connected) { + if (stop_until_connected && pfds[0].fd != 0) { + close(pfds[0].fd); + pfds[0].fd = 0; + } + if (pfds[0].fd == 0) { + int fd = open("/dev/ptmx", O_RDWR | O_NONBLOCK); + // print the name of the pseudo terminal in device tree + char name[256]; + ptsname_r(fd, name, 256); + printf("eb-device : %s\n",name); + + FILE *f = fopen("/tmp/ez-usb-eb-device","w+"); + fprintf(f,"%s\n",&name[1]); + fclose(f); + + // put it in raw mode + struct termios raw; + if (tcgetattr(fd, &raw) == 0) + { + // input modes - clear indicated ones giving: no break, no CR to NL, + // no parity check, no strip char, no start/stop output (sic) control + raw.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON); + + // output modes - clear giving: no post processing such as NL to CR+NL + raw.c_oflag &= ~(OPOST); + + // control modes - set 8 bit chars + raw.c_cflag |= (CS8); + + // local modes - clear giving: echoing off, canonical off (no erase with + // backspace, ^U,...), no extended functions, no signal chars (^Z,^C) + raw.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG); + + // control chars - set return condition: min number of bytes and timer + raw.c_cc[VMIN] = 5; raw.c_cc[VTIME] = 8; // after 5 bytes or .8 seconds + // after first byte seen + raw.c_cc[VMIN] = 0; raw.c_cc[VTIME] = 0; // immediate - anything + raw.c_cc[VMIN] = 2; raw.c_cc[VTIME] = 0; // after two bytes, no timer + raw.c_cc[VMIN] = 0; raw.c_cc[VTIME] = 8; // after a byte or .8 seconds + + // put terminal in raw mode after flushing + if (tcsetattr(fd,TCSAFLUSH,&raw) < 0) + { + int err = errno; + printf("Error, cant set raw mode: %s\n", strerror(err)); + return; + } + } + + if (stop_until_connected) { + printf("waiting for client, simulation stopped ..."); + } else { + printf("device is ready, simulation is running\n"); + } + fflush(stdout); + grantpt(fd); + unlockpt(fd); + pfds[0].fd = fd; + } + if (stop_until_connected) + { + pfds[0].events = POLLIN; + poll(pfds,1,-1); + printf(" connected, simulation continues\n"); + } +} + +int ez_usb_dev_read(int timeout_value) { + record_write_count = 0; + //printf("ez_usb_dev_read "); + static int count = 0; + unsigned char ch = 0; + pfds[0].events = POLLIN | POLLHUP; + if (poll(pfds,1,timeout_value) == 0) { + //printf("timeout\n"); + return TIMEOUT; + } + if (pfds[0].revents == POLLHUP) { // client disconnected + //printf("hangup\n"); + return HANGUP; + } + ssize_t result = read(pfds[0].fd, &ch, 1); + if (result == 1) { // successful read + if ((count%4)==0) { + printf("%6d << ", record_read_count++); + } + printf("%02x", (int)ch); + ++count; + if ((count%4)==0) { + printf("\n"); + } + return ch; + } else if (result == -1) { // error + printf("error while read %d %s\n", errno, strerror(errno)); + } + return TIMEOUT; +} + +void ez_usb_dev_write(int x) { + record_read_count = 0; + static int count = 0; + unsigned char ch = x; + write_buffer[write_buffer_length++] = ch; + //printf(" >> %02x\n", (int)x); + if ((count%4)==0) { + printf("%6d >> ", record_write_count++); + } + printf("%02x", (int)x); + ++count; + if ((count%4)==0) { + printf("\n"); + } +} + +void ez_usb_dev_flush() { + for (int i = 0; i < 79; ++i) printf("-"); + printf("\n"); + pfds[0].events = POLLOUT; + poll(pfds,1,-1); + int result = write(pfds[0].fd, write_buffer, write_buffer_length); + write_buffer_length = 0; + if (result == -1) { + printf("error while write %d %s\n", errno, strerror(errno)); + } + //printf("all written %d\n", result); +} + diff --git a/testbench/tr_simulation/gsi_pexarria5/global_region.vhd b/testbench/tr_simulation/gsi_pexarria5/global_region.vhd new file mode 100644 index 0000000000..65d3b383b7 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/global_region.vhd @@ -0,0 +1,167 @@ +-- megafunction wizard: %ALTCLKCTRL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altclkctrl + +-- ============================================================ +-- File Name: global_region.vhd +-- Megafunction Name(s): +-- altclkctrl +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- ************************************************************ + + +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +--altclkctrl CBX_AUTO_BLACKBOX="ALL" CLOCK_TYPE="Global Clock" DEVICE_FAMILY="Arria V" ENA_REGISTER_MODE="always enabled" USE_GLITCH_FREE_SWITCH_OVER_IMPLEMENTATION="OFF" ena inclk outclk +--VERSION_BEGIN 18.1 cbx_altclkbuf 2018:09:12:13:04:09:SJ cbx_cycloneii 2018:09:12:13:04:09:SJ cbx_lpm_add_sub 2018:09:12:13:04:09:SJ cbx_lpm_compare 2018:09:12:13:04:09:SJ cbx_lpm_decode 2018:09:12:13:04:09:SJ cbx_lpm_mux 2018:09:12:13:04:09:SJ cbx_mgl 2018:09:12:14:15:07:SJ cbx_nadder 2018:09:12:13:04:09:SJ cbx_stratix 2018:09:12:13:04:09:SJ cbx_stratixii 2018:09:12:13:04:09:SJ cbx_stratixiii 2018:09:12:13:04:09:SJ cbx_stratixv 2018:09:12:13:04:09:SJ VERSION_END + + LIBRARY arriav; + USE arriav.all; + +--synthesis_resources = arriav_clkena 1 + LIBRARY ieee; + USE ieee.std_logic_1164.all; + + ENTITY global_region_altclkctrl_bdh IS + PORT + ( + ena : IN STD_LOGIC := '1'; + inclk : IN STD_LOGIC_VECTOR (3 DOWNTO 0) := (OTHERS => '0'); + outclk : OUT STD_LOGIC + ); + END global_region_altclkctrl_bdh; + + ARCHITECTURE RTL OF global_region_altclkctrl_bdh IS + + SIGNAL wire_sd1_outclk : STD_LOGIC; + SIGNAL clkselect : STD_LOGIC_VECTOR (1 DOWNTO 0); + COMPONENT arriav_clkena + GENERIC + ( + clock_type : STRING := "Auto"; + disable_mode : STRING := "low"; + ena_register_mode : STRING := "always enabled"; + ena_register_power_up : STRING := "high"; + test_syn : STRING := "high"; + lpm_type : STRING := "arriav_clkena" + ); + PORT + ( + ena : IN STD_LOGIC := '1'; + enaout : OUT STD_LOGIC; + inclk : IN STD_LOGIC := '1'; + outclk : OUT STD_LOGIC + ); + END COMPONENT; + BEGIN + + clkselect <= (OTHERS => '0'); + outclk <= wire_sd1_outclk; + sd1 : arriav_clkena + GENERIC MAP ( + clock_type => "Global Clock", + ena_register_mode => "always enabled" + ) + PORT MAP ( + ena => ena, + inclk => inclk(0), + outclk => wire_sd1_outclk + ); + + END RTL; --global_region_altclkctrl_bdh +--VALID FILE + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +ENTITY global_region IS + PORT + ( + inclk : IN STD_LOGIC ; + outclk : OUT STD_LOGIC + ); +END global_region; + + +ARCHITECTURE RTL OF global_region IS + + --SIGNAL sub_wire0 : STD_LOGIC ; + --SIGNAL sub_wire1 : STD_LOGIC ; + --SIGNAL sub_wire2 : STD_LOGIC ; + --SIGNAL sub_wire3 : STD_LOGIC_VECTOR (3 DOWNTO 0); + --SIGNAL sub_wire4_bv : BIT_VECTOR (2 DOWNTO 0); + --SIGNAL sub_wire4 : STD_LOGIC_VECTOR (2 DOWNTO 0); + + + + --COMPONENT global_region_altclkctrl_bdh + --PORT ( + -- ena : IN STD_LOGIC ; + -- inclk : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + -- outclk : OUT STD_LOGIC + --); + --END COMPONENT; + +BEGIN + outclk <= inclk; + --sub_wire1 <= '1'; + --sub_wire4_bv(2 DOWNTO 0) <= "000"; + --sub_wire4 <= To_stdlogicvector(sub_wire4_bv); + --outclk <= sub_wire0; + --sub_wire2 <= inclk; + --sub_wire3 <= sub_wire4(2 DOWNTO 0) & sub_wire2; + + --global_region_altclkctrl_bdh_component : global_region_altclkctrl_bdh + --PORT MAP ( + -- ena => sub_wire1, + -- inclk => sub_wire3, + -- outclk => sub_wire0 + --); + + + +END RTL; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Arria V" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: clock_inputs NUMERIC "1" +-- Retrieval info: CONSTANT: ENA_REGISTER_MODE STRING "always enabled" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Arria V" +-- Retrieval info: CONSTANT: USE_GLITCH_FREE_SWITCH_OVER_IMPLEMENTATION STRING "OFF" +-- Retrieval info: CONSTANT: clock_type STRING "Global Clock" +-- Retrieval info: USED_PORT: inclk 0 0 0 0 INPUT NODEFVAL "inclk" +-- Retrieval info: USED_PORT: outclk 0 0 0 0 OUTPUT NODEFVAL "outclk" +-- Retrieval info: CONNECT: @ena 0 0 0 0 VCC 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 3 1 GND 0 0 3 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk 0 0 0 0 +-- Retrieval info: CONNECT: outclk 0 0 0 0 @outclk 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL global_region.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL global_region.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL global_region.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL global_region.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL global_region_inst.vhd FALSE diff --git a/testbench/tr_simulation/gsi_pexarria5/gvi.cpp b/testbench/tr_simulation/gsi_pexarria5/gvi.cpp new file mode 100644 index 0000000000..c5990280ff --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/gvi.cpp @@ -0,0 +1,1129 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +std::string usage = " [-vv ] -v -t { -c } { -I } { -G = } { -o }[-g] [-n]\n -vv Specify the verilator version (default is 5.012)\n -g Extends modulename with a hash of the given generics.\n If not top module and verilator fiel is given, only\n output the hash value and exit.\n -n No trace output (.vcd-file) of the verilated module"; + + +struct Options +{ + template + T get_value(int &i, int argc, char *argv[], const std::string &expected, bool verbose = false) { + if (i+1 < argc) { + ++i; + T value; + if (verbose) { + value = argv[i]; + } else { + std::istringstream value_in(argv[i]); + value_in >> value; + if (!value_in || value[0] == '-') { throw std::runtime_error(std::string("cannot read ") + expected + " from argument " + argv[i-1] + " " + argv[i]);} + } + return value; + } + throw std::runtime_error(std::string("expecting ") + expected + " after " + argv[i]); + return T(); + } + std::string verilator_version; + std::string verilog_source; + std::vector system_verilog_sources; + std::string top_module; + std::vector clk_ports; + std::vector verilog_include_paths; + std::vector verilog_parameter_args; + std::vector verilator_options; + bool add_generics_hash; + std::string generics_hash; + bool no_traces; + bool unittest; + bool help; + Options(int argc, char *argv[]) + : verilog_source(""), top_module(""), add_generics_hash(false), generics_hash(""), no_traces(false), unittest(false), help(false) + { + for (int i = 1; i < argc; ++i) { + std::string argvi = argv[i]; + if (argvi == "-v") verilog_source = get_value(i,argc,argv, ""); + else if (argvi == "-vv")verilator_version = get_value(i,argc,argv, ""); + else if (argvi == "-t") top_module = get_value(i,argc,argv, ""); + else if (argvi == "-c") clk_ports.push_back(get_value(i,argc,argv, "")); + else if (argvi == "-I") verilog_include_paths.push_back(get_value(i,argc,argv,"")); + else if (argvi == "-G") verilog_parameter_args.push_back(get_value(i,argc,argv,"",true)); + else if (argvi == "-o") verilator_options.push_back(get_value(i,argc,argv,"",true)); + else if (argvi == "-n") no_traces = true; + else if (argvi == "-g") add_generics_hash = true; + else if (argvi == "-u") unittest = true; + else if (argvi == "-h") help = true; + else if (argvi[0] != '-') system_verilog_sources.push_back(argvi); + else throw std::runtime_error(std::string("unknown option ") + argv[i]); + } + if (add_generics_hash) { + generics_hash = generate_generics_hash(verilog_parameter_args); + } + if (verilog_source.size()*top_module.size() == 0 && !unittest && !help) { + if (add_generics_hash && generics_hash.size()) { + std::cout << generics_hash << std::endl; + exit(0); + } + throw std::runtime_error(std::string("usage: ")+argv[0]+" "+usage); + } + if (verilator_version.size() == 0) { + verilator_version = "5.012"; + } + } + std::string generate_generics_hash(const std::vector &generics) + { + uint32_t result = 1; + int i = 0; + for (auto &gen: generics) { + for (auto &ch: gen) { + if (i%2) { + result *= (uint32_t)ch; + } else { + result += (uint32_t)ch; + } + ++i; + } + } + std::ostringstream out; + out << "_" << std::hex << std::setw(8) << std::setfill('0') << result << std::dec; + return out.str(); + } +}; + + + +void extract_portname_and_bitsize(const std::string &token, std::string &portname, int &left_bit, int &right_bit, int &bitsize) { + // extract portname + auto begin = token.find('('); ++begin; + auto end = token.find(','); + portname = token.substr(begin,end-begin); + if (portname[0] == '&') portname = portname.substr(1); + std::cerr << "portname " << portname << std::endl; + + // extract bit size of port + begin = end+1; + end = token.find(')'); + std::istringstream bits_in(token.substr(begin,end-begin)); + char comma; + bits_in >> left_bit >> comma >> right_bit; + bitsize = 1+std::max(left_bit,right_bit)-std::min(left_bit,right_bit); +} +void extract_portname_and_bitsize_unittest() { + std::string portname; + int left_bit, right_bit, bitsize; + // test 1 + extract_portname_and_bitsize("VL_IN8(portname,1,0)", portname, left_bit, right_bit, bitsize); + assert(portname=="portname"); + assert(left_bit==1); + assert(right_bit==0); + assert(bitsize==2); + // test 2 + extract_portname_and_bitsize("VL_OUT32(stb_o,31,0)", portname, left_bit, right_bit, bitsize); + assert(portname=="stb_o"); + assert(left_bit==31); + assert(right_bit==0); + assert(bitsize==32); + // test 3 + extract_portname_and_bitsize("VL_OUT32(&stb_o,31,0)", portname, left_bit, right_bit, bitsize); + assert(portname=="stb_o"); + assert(left_bit==31); + assert(right_bit==0); + assert(bitsize==32); + // something like this is not supported (yet) + // extract_portname_and_bitsize("VL_OUT32((&trace)[32],0,0)", portname, left_bit, right_bit, bitsize); +} + +bool in_token(const std::string &token) { + + return token.size() >= 5 && + token.substr(0,5) == "VL_IN" && + token.find("[") == token.npos; // something like VL_IN8((&events)[32],0,0) are not supported +} +void in_token_unittest() { + assert(in_token("VL_IN8") == true); + assert(in_token("VL_IN32") == true); + assert(in_token("VL_OUT8") == false); + assert(in_token("VL_OUT32") == false); + assert(in_token("VL_IN8((&events)[32],0,0)") == false); +} + +bool out_token(const std::string &token) { + return token.size() >= 6 && + token.substr(0,6) == "VL_OUT" && + token.find("[") == token.npos; // something like VL_OUT8((&events)[32],0,0) are not supported +} +void out_token_unittest() { + assert(out_token("VL_IN8") == false); + assert(out_token("VL_IN32") == false); + assert(out_token("VL_OUT8") == true); + assert(out_token("VL_OUT32") == true); + assert(out_token("VL_OUT8((&events)[32],0,0)") == false); +} + +struct Port +{ + Port() {} + Port(const std::string &token) { + extract_portname_and_bitsize(token, name_orig, left_bit, right_bit, bitsize); + if (in_token(token)) direction = "in"; + if (out_token(token)) direction = "out"; + tk = token; + is_array = (bitsize!=1); + int start_ch = 0; + // remove "__SYM__"-prefix that is put by veriltor to avoid collisions with c++ keywords + if (name_orig.find("__SYM__")==0) { + start_ch = 7; + } + for (int i = start_ch; i < name_orig.size(); ++i) { + // remove leading underscores and two consecutive underscores + if (name.size() == 0 && name_orig[i] == '_') continue; + if (name.size() != 0 && name_orig[i] == '_' && name_orig[i-1] == '_') continue; + name.push_back(name_orig[i]); + } + } + Port(const Port &p) + : name_orig(p.name_orig), name(p.name), direction(p.direction), left_bit(p.left_bit), right_bit(p.right_bit), bitsize(p.bitsize), is_array(p.is_array), tk(p.tk) + {} + std::string name_orig; + std::string name; + std::string direction; + int left_bit; + int right_bit; + int bitsize; + bool is_array; + std::string tk; +}; +void port_unittest() { + Port p("VL_OUT32(out1,31,0"); + assert(p.name_orig == "out1"); + assert(p.name == "out1"); + assert(p.direction == "out"); + assert(p.left_bit == 31); + assert(p.right_bit == 0); + assert(p.bitsize == 32); + assert(p.tk == "VL_OUT32(out1,31,0"); + Port p2(p); // test copy constructor + assert(p.name_orig == p2.name_orig); + assert(p.name == p2.name); + assert(p.direction == p2.direction); + assert(p.left_bit == p2.left_bit); + assert(p.right_bit == p2.right_bit); + assert(p.bitsize == p2.bitsize); + assert(p.tk == p2.tk); + Port p3("VL_IN32(__SYS__in1,31,0"); + assert(p3.name_orig == "__SYS__in1"); + assert(p3.name == "SYS_in1"); + assert(p3.direction == "in"); + assert(p3.left_bit == 31); + assert(p3.right_bit == 0); + assert(p3.bitsize == 32); + assert(p3.tk == "VL_IN32(__SYS__in1,31,0"); +} + +std::string function_name_prefix(const std::string modulename) { + return modulename + "_gvi_"; +} + +////////////////////////////////// +// VHDL FILE +////////////////////////////////// + +std::string ghdl_verilator_interface_preface(const std::string &modulename) { + std::string prefix = function_name_prefix(modulename); + std::ostringstream out; + out << "library ieee;" << std::endl; + out << "use ieee.std_logic_1164.all;" << std::endl; + out << "use ieee.numeric_std.all;" << std::endl; + out << std::endl; + out << "package " << modulename << " is" << std::endl; + out << "\tfunction to_integer(logic_value : std_logic) return integer;" << std::endl; + out << "\tfunction to_std_logic(integer_value: integer) return std_logic;" << std::endl; + out << std::endl; + out << "\tfunction " << prefix << "init return integer;" << std::endl; + out << "\tattribute foreign of " << prefix << "init : function is \"VHPIDIRECT " << prefix << "init\";"; + out << std::endl; + out << "\tprocedure " << prefix << "eval(idx : integer);" << std::endl; + out << "\tattribute foreign of " << prefix << "eval : procedure is \"VHPIDIRECT " << prefix << "eval\";"; + out << std::endl; + out << "\tprocedure " << prefix << "dump(idx : integer);" << std::endl; + out << "\tattribute foreign of " << prefix << "dump : procedure is \"VHPIDIRECT " << prefix << "dump\";"; + out << std::endl; + out << "\tprocedure " << prefix << "timestep(idx : integer; t : time);" << std::endl; + out << "\tattribute foreign of " << prefix << "timestep : procedure is \"VHPIDIRECT " << prefix << "timestep\";"; + return out.str(); +} +void ghdl_verilator_interface_preface_unittest() { + assert( ghdl_verilator_interface_preface("simple") == + "library ieee;\n" + "use ieee.std_logic_1164.all;\n" + "use ieee.numeric_std.all;\n" + "\n" + "package simple is\n" + " function to_integer(logic_value : std_logic) return integer;\n" + " function to_std_logic(integer_value: integer) return std_logic;\n" + "\n" + " function simple_gvi_init return integer;\n" + " attribute foreign of simple_gvi_init : function is \"VHPIDIRECT simple_gvi_init\";" + "\n" + " procedure simple_gvi_eval(idx : integer);\n" + " attribute foreign of simple_gvi_eval : procedure is \"VHPIDIRECT simple_gvi_eval\";" + "\n" + " procedure simple_gvi_dump(idx : integer);\n" + " attribute foreign of simple_gvi_dump : procedure is \"VHPIDIRECT simple_gvi_dump\";" + "\n" + " procedure simple_gvi_timestep(idx : integer; t : time);\n" + " attribute foreign of simple_gvi_timestep : procedure is \"VHPIDIRECT simple_gvi_timestep\";" + ); +} + +std::string ghdl_verilator_interface_middle(const std::string &modulename) { + std::string prefix = function_name_prefix(modulename); + std::ostringstream out; + out << "end package;" << std::endl; + out << std::endl; + out << "package body " << modulename << " is" << std::endl; + + out << "\tfunction to_integer(logic_value: std_logic) return integer is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tif logic_value = '1' then " << std::endl; + out << "\t\t\treturn 1;" << std::endl; + out << "\t\telse " << std::endl; + out << "\t\t\treturn 0;" << std::endl; + out << "\t\tend if;" << std::endl; + out << "\tend function;" << std::endl; + out << std::endl; + out << "\tfunction to_std_logic(integer_value: integer) return std_logic is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tif integer_value = 0 then " << std::endl; + out << "\t\t\treturn '0';" << std::endl; + out << "\t\telse " << std::endl; + out << "\t\t\treturn '1';" << std::endl; + out << "\t\tend if;" << std::endl; + out << "\tend function;" << std::endl; + out << std::endl; + out << "\tfunction " << prefix << "init return integer is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend function;" << std::endl; + out << std::endl; + out << "\tprocedure " << prefix << "eval(idx : integer) is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend procedure;" << std::endl; + out << std::endl; + out << "\tprocedure " << prefix << "dump(idx : integer) is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend procedure;" << std::endl; + out << std::endl; + out << "\tprocedure " << prefix << "timestep(idx : integer; t : time) is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend procedure;" << std::endl; + return out.str(); +} + +std::string ghdl_verilator_interface_end(const std::string &modulename) { + std::string prefix = function_name_prefix(modulename); + std::ostringstream out; + out << "end package body;" << std::endl; + return out.str(); +} + +std::string ghdl_verilator_entity_begin(const std::string &modulename) { + std::string prefix = function_name_prefix(modulename); + std::ostringstream out; + out << "library ieee;" << std::endl; + out << "use ieee.std_logic_1164.all;" << std::endl; + out << "use ieee.numeric_std.all; " << std::endl; + out << std::endl; + out << "use work." << modulename << ".all;" << std::endl; + out << std::endl; + // remove the V from the start of the modulename + out << "entity " << modulename.substr(1) << " is" << std::endl; + out << "port(" << std::endl; + return out.str(); +} + +std::string ghdl_verilator_entity_middle(const std::string &modulename, const std::vector &ports) { + std::string prefix = function_name_prefix(modulename); + std::ostringstream out; + out << ");" << std::endl; + out << "end entity;" << std::endl; + out << std::endl; + out << "architecture simulation of " << modulename.substr(1) << " is" << std::endl; + out << "\tsignal " << modulename << "_idx : integer := " << prefix << "init;" << std::endl; + out << "begin" << std::endl; + out << "\tmain: process" << std::endl; + out << "\tbegin" << std::endl; + return out.str(); +} + +std::string ghdl_verilator_entity_end(const std::string &modulename) { + std::string prefix = function_name_prefix(modulename); + std::ostringstream out; + out << "\tend process;" << std::endl; + out << "end architecture;" << std::endl; + out << std::endl; + return out.str(); +} + + + + +std::string ghdl_verilator_interface_function_declaration_in(const std::string &modulename, const Port &port) +{ + std::string prefix = function_name_prefix(modulename); + // only bitsize of <= 32 for now + std::ostringstream out; + if (port.bitsize <= 32) { + out << "\t--" << port.tk << std::endl; + out << "\tprocedure " << prefix << port.name << "(idx : integer; " << port.name << " : integer);" << std::endl; + out << "\tattribute foreign of " << prefix << port.name << " : procedure is \"VHPIDIRECT " << prefix << port.name << "\";"; + } else if (port.bitsize <= 64) { + out << "\t--" << port.tk << std::endl; + out << "\tprocedure " << prefix << port.name << "(idx : integer; " << port.name << "_gvi_lo, " << port.name << "_gvi_hi " << " : integer);" << std::endl; + out << "\tattribute foreign of " << prefix << port.name << " : procedure is \"VHPIDIRECT " << prefix << port.name << "\";"; + } + return out.str(); +} +std::string ghdl_verilator_interface_function_definition_in(const std::string &modulename, const Port &port) +{ + std::string prefix = function_name_prefix(modulename); + // only bitsize of <= 32 for now + std::ostringstream out; + if (port.bitsize <= 32) { + out << "\t--" << port.tk << std::endl; + out << "\tprocedure " << prefix << port.name << "(idx : integer; " << port.name << " : integer) is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend procedure;"; + } else if (port.bitsize <= 64) { + out << "\t--" << port.tk << std::endl; + out << "\tprocedure " << prefix << port.name << "(idx : integer; " << port.name << "_gvi_lo, " << port.name << "_gvi_hi " << " : integer) is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend procedure;"; + } + return out.str(); +} +std::string ghdl_verilator_interface_function_declaration_out(const std::string &modulename, const Port &port) +{ + std::string prefix = function_name_prefix(modulename); + // only bitsize of <= 32 for now + std::ostringstream out; + if (port.bitsize <= 32) { + out << "\t--" << port.tk << std::endl; + out << "\tfunction " << prefix << port.name << "(idx : integer) return integer;" << std::endl; + out << "\tattribute foreign of " << prefix << port.name << " : function is \"VHPIDIRECT " << prefix << port.name << "\";"; + } else if (port.bitsize <= 64) { + out << "\t--" << port.tk << std::endl; + out << "\tfunction " << prefix << port.name << "_gvi_lo(idx : integer) return integer;" << std::endl; + out << "\tattribute foreign of " << prefix << port.name << "_gvi_lo : function is \"VHPIDIRECT " << prefix << port.name << "_gvi_lo\";"; + out << "\tfunction " << prefix << port.name << "_gvi_hi(idx : integer) return integer;" << std::endl; + out << "\tattribute foreign of " << prefix << port.name << "_gvi_hi : function is \"VHPIDIRECT " << prefix << port.name << "_gvi_hi\";"; + } + return out.str(); +} +std::string ghdl_verilator_interface_function_definition_out(const std::string &modulename, const Port &port) +{ + std::string prefix = function_name_prefix(modulename); + // only bitsize of <= 32 for now + std::ostringstream out; + if (port.bitsize <= 32) { + out << "\t--" << port.tk << std::endl; + out << "\tfunction " << prefix << port.name << "(idx : integer) return integer is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend function;"; + } else if (port.bitsize <= 64) { + out << "\t--" << port.tk << std::endl; + out << "\tfunction " << prefix << port.name << "_gvi_lo(idx : integer) return integer is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend function;"; + out << "\tfunction " << prefix << port.name << "_gvi_hi(idx : integer) return integer is" << std::endl; + out << "\tbegin" << std::endl; + out << "\t\tassert false report \"VHPI\" severity failure;" << std::endl; + out << "\tend function;"; + } + return out.str(); +} + +std::string filename_to_modulename(const std::string &filename) +{ + auto begin = filename.find_last_of('/'); + if (begin == filename.npos) begin = 0; + else ++begin; + auto end = filename.find_last_of('.'); + return filename.substr(begin,end-begin); +} +void filename_to_modulename_unittest() { + assert(filename_to_modulename("simple/Vsimple.h") == "Vsimple"); + assert(filename_to_modulename("generated/lm32_wb/Vlm32_wb.h") == "Vlm32_wb"); +} + +std::string ghdl_verilator_interface_set_inputs(const std::vector &ports, const std::string &modulename) { + std::ostringstream out; + for (auto port: ports) { + if (port.bitsize <= 64) { + if (port.direction == "in") { + if (port.bitsize == 1 && !port.is_array) { + out << "\t\t" << function_name_prefix(modulename) << port.name << "(" << modulename << "_idx, to_integer(" << port.name << "));" << std::endl; + } else if (port.bitsize <= 32) { + out << "\t\t" << function_name_prefix(modulename) << port.name << "(" << modulename << "_idx, to_integer(signed(" << port.name << ")));" << std::endl; + } else { + // the case for bitsize > 32 and <= 64 + if (port.left_bit > port.right_bit) { // the 'downto' case + out << "\t\t" << function_name_prefix(modulename) << port.name << "(" << modulename << "_idx, to_integer(signed(" << port.name << "(" << port.right_bit+31 << " downto " << port.right_bit << "))), to_integer(signed(" << port.name << "(" << port.left_bit << " downto " << port.right_bit+32 << "))));" << std::endl; + } else { // the 'to' case + out << "\t\t" << function_name_prefix(modulename) << port.name << "(" << modulename << "_idx, to_integer(signed(" << port.name << "(" << port.right_bit << " to " << port.right_bit+31 << "))), to_integer(signed(" << port.name << "(" << port.right_bit+32 << " downto " << port.left_bit << "))));" << std::endl; + } + } + } + } + } + return out.str(); +} + +std::string ghdl_verilator_interface_get_outputs(const std::vector &ports, const std::string &modulename) { + std::ostringstream out; + for (auto port: ports) { + if (port.bitsize <= 64) { + if (port.direction == "out") { + out << "\t\t" << port.name << " <= "; + if (port.bitsize == 1 && !port.is_array) { + out << "to_std_logic(" << function_name_prefix(modulename) << port.name << "(" << modulename << "_idx));" << std::endl; + } else if (port.bitsize <= 32) { + out << "std_logic_vector(to_signed(" << function_name_prefix(modulename) << port.name << "(" << modulename << "_idx), " << port.bitsize << "));" << std::endl; + } else { + // case for bitsize > 32 and <= 64 + out << "std_logic_vector(to_signed(" << function_name_prefix(modulename) << port.name << "_gvi_hi(" << modulename << "_idx), " << port.bitsize-32 << ")) & std_logic_vector(to_signed(" << function_name_prefix(modulename) << port.name << "_gvi_lo(" << modulename << "_idx), " << 32 << "));" << std::endl; + } + } + } + } + return out.str(); +} + +void write_vhdl_file(std::ofstream &vhd_out, const std::vector &ports, const std::vector &clk_ports, const std::string &modulename) +{ + vhd_out << ghdl_verilator_interface_preface(modulename) << std::endl << std::endl; + for(auto port: ports) { + if (port.direction == "in") vhd_out << ghdl_verilator_interface_function_declaration_in(modulename, port) << std::endl << std::endl; + if (port.direction == "out") vhd_out << ghdl_verilator_interface_function_declaration_out(modulename, port) << std::endl << std::endl; + } + vhd_out << ghdl_verilator_interface_middle(modulename) << std::endl << std::endl; + for(auto port: ports) { + if (port.direction == "in") vhd_out << ghdl_verilator_interface_function_definition_in(modulename, port) << std::endl << std::endl; + if (port.direction == "out") vhd_out << ghdl_verilator_interface_function_definition_out(modulename, port) << std::endl << std::endl; + } + vhd_out << ghdl_verilator_interface_end(modulename) << std::endl; + + vhd_out << ghdl_verilator_entity_begin(modulename); + for (int i = 0; i < ports.size(); ++i) { + if (ports[i].bitsize > 64) continue; + if (i > 0) vhd_out << ";" << std::endl; + vhd_out << "\t" << ports[i].name << " : " << ports[i].direction; + if (ports[i].bitsize == 1 && !ports[i].is_array) vhd_out << " std_logic"; + else { + vhd_out << " std_logic_vector(" << ports[i].left_bit; + if (ports[i].left_bit > ports[i].right_bit) vhd_out << " downto "; + else vhd_out << " to "; + vhd_out << ports[i].right_bit << ")"; + } + // if (i < ports.size()-1) vhd_out << ";"; + // vhd_out << std::endl; + } + vhd_out << ghdl_verilator_entity_middle(modulename, ports); + vhd_out << "\t\twait for 0 ns;" << std::endl; + vhd_out << "\t\twhile true loop" << std::endl; + vhd_out << ghdl_verilator_interface_set_inputs(ports, modulename); + vhd_out << "\t\t" << function_name_prefix(modulename) << "timestep(" << modulename << "_idx, now);" << std::endl; + vhd_out << "\t\t" << function_name_prefix(modulename) << "eval(" << modulename << "_idx);" << std::endl; + vhd_out << "\t\t" << function_name_prefix(modulename) << "dump(" << modulename << "_idx);" << std::endl; + vhd_out << ghdl_verilator_interface_get_outputs(ports, modulename); + vhd_out << "\t\twait until " << clk_ports.front().name << "'event"; + if (clk_ports.size() > 1) { + for (int i = 1; i < clk_ports.size(); ++i) { + vhd_out << " or " << clk_ports[i].name << "'event"; + } + } + vhd_out << ";" << std::endl; + vhd_out << "\t\tend loop;" << std::endl; + + vhd_out << ghdl_verilator_entity_end(modulename); + +} + +//////////////////////////// +//// CPP FILE +//////////////////////////// + +std::string cpp_verilator_interface_preface(const std::string &modulename, bool no_traces) { + std::string prefix = function_name_prefix(modulename); + std::ostringstream out; + + out << "#include // Defines common routines" << std::endl; + out << "#include \"" << modulename << ".h\" // From Verilating \"lm32_top.v\"" << std::endl; + out << "" << std::endl; + if (!no_traces) { + out << "#if VM_TRACE" << std::endl; + out << "# include // Trace file format header" << std::endl; + out << "#endif" << std::endl; + out << "" << std::endl; + } + out << "#include " << std::endl; + out << "#include " << std::endl; + out << "#include " << std::endl; + out << "#include " << std::endl; + out << "#include " << std::endl; + out << "#include " << std::endl; + out << "" << std::endl; + out << "// Container for all lm32 instances that will ever be instantiated" << std::endl; + out << "// Users will work with an index into this container." << std::endl; + out << "std::vector<" << modulename << "*> " << modulename << "_top_instances;" << std::endl; + if (!no_traces) { + out << "std::vector " << modulename << "_tfp_instances;" << std::endl; + } + out << "" << std::endl; + out << "extern double main_time; // Current simulation time" << std::endl; + out << "double sc_time_stamp();" << std::endl; + // out << "double main_time = 0; // Current simulation time" << std::endl; + // out << "// This is a 64-bit integer to reduce wrap over issues and" << std::endl; + // out << "// allow modulus. You can also use a double, if you wish." << std::endl; + // out << "double sc_time_stamp () { // Called by $time in Verilog" << std::endl; + // out << "\treturn main_time; // converts to double, to match" << std::endl; + // out << " // what SystemC does" << std::endl; + // out << "}" << std::endl; + out << "" << std::endl; + out << "// GHDL interface" << std::endl; + out << "extern \"C\" {" << std::endl; + out << "\tint " << function_name_prefix(modulename) << "init(int *pts) {" << std::endl; + out << "\t\tint idx = " << modulename << "_top_instances.size();" << std::endl; + out << "\t\t" << modulename << "_top_instances.push_back(new "<< modulename<< ");" << std::endl; + if (!no_traces) { + out << "\t\tVerilated::traceEverOn(true); // Verilator must compute traced signals" << std::endl; + out << "\t\t" << modulename << "_tfp_instances.push_back(new VerilatedVcdC);" << std::endl; + out << "\t\t" << modulename << "_top_instances[idx]->trace(" << modulename << "_tfp_instances[idx], 99); // Trace 99 levels of hierarchy" << std::endl; + } + out << "\t\tstd::ostringstream filename;" << std::endl; + out << "\t\tfilename << \"" << modulename << "_vlt_dump_\" << std::setw(2) << std::setfill('0') << std::dec << idx << \".vcd\";" << std::endl; + if (!no_traces) { + out << "\t\t" << modulename << "_tfp_instances[idx]->open(filename.str().c_str()); // Open the dump file" << std::endl; + } + out << "\t\t//std::cout << \"interface_lm32_init in C++ called. returing index \" << idx << std::endl;" << std::endl; + out << "\t\treturn idx;" << std::endl; + out << "\t}" << std::endl; + + out << "\tvoid " << function_name_prefix(modulename) << "eval(int idx) {" << std::endl; + out << "\t\t" << modulename << "_top_instances[idx]->eval();" << std::endl; + out << "\t}" << std::endl; + + out << "\tvoid " << function_name_prefix(modulename) << "dump(int idx) {" << std::endl; + if (!no_traces) { + out << "\t\tif (" << modulename << "_tfp_instances[idx]) " << modulename << "_tfp_instances[idx]->dump(main_time); // Create waveform trace for this timestamp" << std::endl; + } + out << "\t}" << std::endl; + + out << "\tvoid " << function_name_prefix(modulename) << "timestep(int idx, uint64_t time) {" << std::endl; + out << "\t\tmain_time = time/1000.0;" << std::endl; + out << "\t}" << std::endl; + + return out.str(); +} + +std::string cpp_verilator_interface_function_definition_in(const std::string &modulename, const Port &port) +{ + std::string prefix = function_name_prefix(modulename); + // only bitsize of <= 32 for now + std::ostringstream out; + if (port.bitsize <= 32) { + out << "\tvoid " << function_name_prefix(modulename) << port.name << "(int idx, int " << port.name_orig << ") {" << std::endl; + out << "\t\t" << modulename << "_top_instances[idx]->" << port.name_orig << " = " << port.name_orig << ";" << std::endl; + out << "\t}" << std::endl; + } else if (port.bitsize <= 64) { + out << "\tvoid " << function_name_prefix(modulename) << port.name << "(int idx, int " << port.name << "_gvi_lo, int " << port.name << "_gvi_hi" << ") {" << std::endl; + out << "\t\t" << modulename << "_top_instances[idx]->" << port.name_orig << " = (unsigned)" << port.name << "_gvi_hi;" << std::endl; + out << "\t\t" << modulename << "_top_instances[idx]->" << port.name_orig << " <<= 32;" << std::endl; + out << "\t\t" << modulename << "_top_instances[idx]->" << port.name_orig << " |= (unsigned)" << port.name << "_gvi_lo;" << std::endl; + out << "\t}" << std::endl; + } + return out.str(); +} +std::string cpp_verilator_interface_function_definition_out(const std::string &modulename, const Port &port) +{ + std::string prefix = function_name_prefix(modulename); + // only bitsize of <= 32 for now + std::ostringstream out; + if (port.bitsize <= 32) { + out << "\tint " << function_name_prefix(modulename) << port.name << "(int idx) {" << std::endl; + out << "\t\treturn " << modulename << "_top_instances[idx]->" << port.name_orig << ";" << std::endl; + out << "\t}" << std::endl; + } else if (port.bitsize <= 64) { + out << "\tint " << function_name_prefix(modulename) << port.name << "_gvi_lo(int idx) {" << std::endl; + out << "\t\treturn " << modulename << "_top_instances[idx]->" << port.name_orig << ";" << std::endl; + out << "\t}" << std::endl; + out << "\tint " << function_name_prefix(modulename) << port.name << "_gvi_hi(int idx) {" << std::endl; + out << "\t\treturn " << modulename << "_top_instances[idx]->" << port.name_orig << " >> 32;" << std::endl; + out << "\t}" << std::endl; + } + return out.str(); +} + +void write_cpp_file(std::ofstream &cpp_out, const std::vector &ports, const std::string &modulename, bool no_traces) +{ + cpp_out << cpp_verilator_interface_preface(modulename, no_traces) << std::endl; + for (auto port: ports) { + if (port.bitsize <= 64) { + if (port.direction == "in") cpp_out << cpp_verilator_interface_function_definition_in(modulename, port) << std::endl; + if (port.direction == "out") cpp_out << cpp_verilator_interface_function_definition_out(modulename, port) << std::endl; + } + } + cpp_out << "}" << std::endl; + +} + +void write_common_cpp_file(std::ofstream &cpp_out) +{ + cpp_out << "double main_time;" << std::endl; + cpp_out << "double sc_time_stamp() { return main_time; }" << std::endl; +} + +void unittest() { + extract_portname_and_bitsize_unittest(); + in_token_unittest(); + out_token_unittest(); + port_unittest(); + ghdl_verilator_interface_preface_unittest(); + filename_to_modulename_unittest(); +} + +std::set extract_module_ports(const Options &options) +{ + std::string result; + std::set array_ports; + std::ifstream vin(options.verilog_source); + std::string token; + for (;;) { + vin >> token; + if (!vin) break; + if (token == "module") { + std::string modulename; + vin >> modulename; + if (!vin) break; + if (modulename == options.top_module) { + char hash; + vin >> hash; + if (!vin) break; + if (hash == '#') { + int nesting = 0; + for (;;) { + char c; + c = vin.get(); + if (!vin) break; + if (c == '(') ++nesting; + if (c == ')') --nesting; + //result.push_back(c); + if (nesting == 0) break; + } + vin >> hash; + if (!vin) break; + } + if (hash == '(') // there was no parameter list + { + result.push_back('('); + int nesting = 1; + bool is_array = false; + for (;;) { + char c; + c = vin.get(); + if (!vin) break; + if (c == '(') ++nesting; + if (c == ')') --nesting; + if (c == '[') is_array = true; + if (c == ',' || (c == ')' && nesting == 0)) { + if (is_array) { + // find the last token before the comma ',' + int i_begin = result.size()-1; + while(i_begin && isspace(result[i_begin])) --i_begin; + int i_end = i_begin+1; + while(i_begin && !isspace(result[i_begin])) --i_begin; + if (isspace(result[i_begin])) ++i_begin; + std::string arrayport = result.substr(i_begin, i_end-i_begin); + // std::cerr << "arrayport " << arrayport << std::endl; + array_ports.insert(arrayport); + } + is_array = false; + } + if (c == '/') { + char c2 = vin.get(); + if (!vin) break; + if (c2 == '/') { // skip the line comment + std::string line; + std::getline(vin,line); + if (!vin) break; + c = '\n'; + } else if (c2 == '*') { // skip the block comment + char c3 = vin.get(); + if (!vin) break; + for (;;) { + char c4 = vin.get(); + if (!vin || (c3 == '*' && c4 == '/')) break; + c3 = c4; + } + continue; + } else { + vin.putback(c2); + } + } + result.push_back(c); + if (nesting == 0) return array_ports; + } + } + } + } + } + return array_ports; +} + +// std::string extract_module_parameters(const Options &options) +// { +// std::string result; +// std::ifstream vin(options.verilog_source); +// std::string token; +// for (;;) { +// vin >> token; +// if (!vin) break; +// if (token == "module") { +// std::string modulename; +// vin >> modulename; +// if (!vin) break; +// if (modulename == options.top_module) { +// char hash; +// vin >> hash; +// if (!vin) break; +// if (hash == '#') { +// for (;;) { +// char c; +// c = vin.get(); +// if (!vin) break; +// result.push_back(c); +// if (c == ')') return result; +// } +// } +// } +// } +// } +// return result; +// } +// std::string parameter_verilog_to_vhdl(const std::string &par) +// { +// return par; +// } +// std::string transform_module_parameters_verilog_to_vhdl(const std::string &in) +// { +// std::istringstream pin(in); +// std::string result; +// std::string token; +// for (;;) { +// char c; +// pin >> c; +// if (!pin) break; +// token.push_back(c); +// if (token == "(") { +// result.append("port map (\n"); +// token.clear(); +// } else if (token == ")") { +// result.append(")"); +// token.clear(); +// break; +// } else if (token == "parameter") { +// for (;;) { +// c = pin.get(); +// if (c == ',' || c == ')') { +// result.append("\t"); +// result.append(parameter_verilog_to_vhdl(token)); +// if (c == ')') { +// result.append("\n"); +// result.append(")"); +// } else { +// result.append(";\n"); +// } +// break; +// } else if (c != '\n' && c != '\r') { +// token.push_back(c); +// } +// } +// token.clear(); +// } +// } +// return result; +// } + +void generate_ghdl_verilator_interface(const Options &options) +{ + + std::string generated_verilator_header(".gvi/"); + generated_verilator_header.append(options.top_module + options.generics_hash); + generated_verilator_header.append("/V"); + generated_verilator_header.append(options.top_module + options.generics_hash); + generated_verilator_header.append(".h"); + std::string basename(generated_verilator_header.c_str()); + basename = basename.substr(0,basename.find_last_of("/")); + basename.append("/"); + basename.append(options.top_module + options.generics_hash); + basename.append("_wrapper"); + + std::set ports_that_are_arrays = extract_module_ports(options); + // call verilator + std::string verilator_call; + verilator_call.append("verilator -Wno-lint --trace --cc "); + if (options.system_verilog_sources.size() > 0) { + verilator_call.append(" -sv "); // enable SystemVerilog parsing + } + for (int i = 0; i < options.system_verilog_sources.size(); ++i) { + verilator_call.append(" "); + verilator_call.append(options.system_verilog_sources[i]); + verilator_call.append(" "); + } + verilator_call.append(options.verilog_source); + verilator_call.append(" --top-module "); + verilator_call.append(options.top_module); + for (int i = 0; i < options.verilator_options.size(); ++i) { + verilator_call.append(" "); + verilator_call.append(options.verilator_options[i]); + } + for (int i = 0; i < options.verilog_parameter_args.size(); ++i) { + verilator_call.append(" \'-G"); + verilator_call.append(options.verilog_parameter_args[i]); + verilator_call.append("\'"); + } + for (int i = 0; i < options.verilog_include_paths.size(); ++i) { + verilator_call.append(" -I"); + verilator_call.append(options.verilog_include_paths[i]); + } + + system("mkdir -p .gvi"); + verilator_call.append(" --Mdir .gvi/"); + verilator_call.append(options.top_module + options.generics_hash); + verilator_call.append(" --prefix V"); + verilator_call.append(options.top_module + options.generics_hash); + verilator_call.append(" --exe "); + verilator_call.append(options.top_module + options.generics_hash); + verilator_call.append("_wrapper_main.cpp"); + + std::cout << "gvi: execute command: " << verilator_call << std::endl; + int verilator_status = system(verilator_call.c_str()); + if (verilator_status < 0) { + throw std::runtime_error("failed to run verilator"); + } else { + // std::cerr << "WEXITSTATUS(verilator_status)=" << WEXITSTATUS(verilator_status) << std::endl; + if (WEXITSTATUS(verilator_status)) { + throw std::runtime_error("verilator returned with error"); + } + } + + + std::cout << "gvi: generating ghdl bindings for verilated model" << std::endl; + + std::ifstream in(generated_verilator_header.c_str()); + if (!in) { + throw std::runtime_error(std::string("cannot open file ") + generated_verilator_header); + } + + + std::string modulename = filename_to_modulename(generated_verilator_header); + + // verilator generated a top module C++ header file + // look at this header file to find the ports (names and bitsizes) + std::vector ports; + for (;;) { + std::string token; + in >> token; + if (!in) { + break; + } + if (in_token(token) || out_token(token)) { + ports.push_back(Port(token)); + // fix the arrays that have only 1 element + if (ports_that_are_arrays.find(ports.back().name)!=ports_that_are_arrays.end()) { + ports.back().is_array = true; + } + } + } + + std::vector clk_ports; + // check if options.clk_ports are present + for (auto &clk_port: options.clk_ports) { + bool clk_port_found = false; + for (auto &port: ports) { + if (port.name == clk_port && port.direction == "in") { + clk_port_found = true; + clk_ports.push_back(port); + } + } + if (!clk_port_found) { + throw std::runtime_error(std::string("clock port \'-c ") + clk_port + "\' was not found among top module ports"); + } + } + // try autodetect clk ports if none are provided by command line arguments + if (options.clk_ports.size()==0) { + Port clk_port; + for (auto port: ports) { + if (port.direction == "in" && ( + port.name.find("clk") != port.name.npos || + port.name.find("clock") != port.name.npos) + ) { + if (port.name.find("_en") == port.name.npos) { + std::cerr << "gvi: autdetected clk port: " << port.name << std::endl; + clk_ports.push_back(port); + } + } + } + } + if (clk_ports.size() == 0) { + throw std::runtime_error("no clk_ports found, specify at least one port name via \"-c \""); + } + + std::ofstream vhd_out(basename+".vhd"); + std::ofstream cpp_out(basename+"_c.cpp"); + std::ofstream main_out(basename+"_main.cpp"); + std::ofstream flags_out(basename+".flags"); + std::ofstream common_cpp_out(".gvi/common.cpp"); + std::ofstream common_flags_out(".gvi/common.flags"); + + + main_out << "int main() {}" << std::endl; + + write_vhdl_file(vhd_out, ports, clk_ports, modulename); + write_cpp_file(cpp_out, ports, modulename, options.no_traces); + write_common_cpp_file(common_cpp_out); + // compile common code + std::string gcc_call_compile_common; + gcc_call_compile_common.append("gcc -c .gvi/common.cpp -o .gvi/common.o"); + int gcc_common_status = system(gcc_call_compile_common.c_str()); + if (gcc_common_status < 0) { + throw std::runtime_error("failed to run gcc to compile common code"); + } else { + if (WEXITSTATUS(gcc_common_status)) { + throw std::runtime_error("gcc returned with error"); + } + } + // all code generation done, call verilator generated makefile + std::string make_call_verilator; + make_call_verilator.append("make -C .gvi/"); + make_call_verilator.append(options.top_module + options.generics_hash); + make_call_verilator.append(" -f V"); + make_call_verilator.append(options.top_module + options.generics_hash); + make_call_verilator.append(".mk"); + std::cout << "gvi: execute command: " << make_call_verilator << std::endl; + int make_status = system(make_call_verilator.c_str()); + if (make_status < 0) { + throw std::runtime_error("failed to run make on the verilator generated makefile"); + } else { + // std::cerr << "WEXITSTATUS(make_status)=" << WEXITSTATUS(make_status) << std::endl; + if (WEXITSTATUS(make_status)) { + throw std::runtime_error("make on the verilator generated makefile returned with error"); + } + } + + // find verilator installation directory + std::cerr << "gvi: find verilator prefix: "; + std::string which_verilator_output; + FILE *fp; + if ((fp = popen("which verilator", "r")) == NULL) { + throw std::runtime_error("cannot determine the location of verilator execuable"); + } + char buffer[1024]; + while (fgets(buffer, 1024, fp) != NULL) { + which_verilator_output.append(buffer); + } + if(pclose(fp)) { + throw std::runtime_error("cannot determine the location of verilator execuable"); + } + std::string verilator_path = which_verilator_output.substr(0,which_verilator_output.find("/bin/verilator")); + std::cerr << verilator_path << std::endl; + + std::string compile_vhdl_wrapper; + compile_vhdl_wrapper.append("g++ -DVM_TRACE -I.gvi/"); + compile_vhdl_wrapper.append(options.top_module + options.generics_hash); + //compile_vhdl_wrapper.append(" -I/usr/share/verilator/include -c "); + compile_vhdl_wrapper.append(" -I"); + compile_vhdl_wrapper.append(verilator_path); + compile_vhdl_wrapper.append("/share/verilator/include/vltstd"); + compile_vhdl_wrapper.append(" -I"); + compile_vhdl_wrapper.append(verilator_path); + compile_vhdl_wrapper.append("/share/verilator/include -c .gvi/"); + compile_vhdl_wrapper.append(options.top_module + options.generics_hash); + compile_vhdl_wrapper.append("/"); + compile_vhdl_wrapper.append(options.top_module + options.generics_hash); + compile_vhdl_wrapper.append("_wrapper_c.cpp"); + compile_vhdl_wrapper.append(" -o .gvi/"); + compile_vhdl_wrapper.append(options.top_module + options.generics_hash); + compile_vhdl_wrapper.append("/"); + compile_vhdl_wrapper.append(options.top_module + options.generics_hash); + compile_vhdl_wrapper.append("_wrapper_c.o"); + std::cout << "gvi: execute command: " << compile_vhdl_wrapper << std::endl; + int gcc_status = system(compile_vhdl_wrapper.c_str()); + // g++ -DVM_TRACE -Ipicorv32_wb -I/usr/share/verilator/include -c picorv32_wb/Vpicorv32_wb_gvi_c.cpp -o picorv32_wb/Vpicorv32_wb_gvi_c.o + if (gcc_status < 0) { + throw std::runtime_error("failed to run gcc for compilation of glue code"); + } else { + // std::cerr << "WEXITSTATUS(gcc_status)=" << WEXITSTATUS(gcc_status) << std::endl; + if (WEXITSTATUS(gcc_status)) { + throw std::runtime_error("gcc returned with error"); + } + } + std::cout << "gvi: generate ghdl flags" << std::endl; + flags_out << "-Wl,.gvi/" << options.top_module + options.generics_hash << "/" << options.top_module + options.generics_hash << "_wrapper_c.o " + << "-Wl,.gvi/" << options.top_module + options.generics_hash << "/V" << options.top_module + options.generics_hash << "__ALL.a " + << std::endl; + common_flags_out << "-Wl,.gvi/common.o " + << "-Wl,.gvi/" << options.top_module + options.generics_hash << "/verilated.o "; + if (options.verilator_version[0] == '5') { + common_flags_out << "-Wl,.gvi/" << options.top_module + options.generics_hash << "/verilated_threads.o "; + } + common_flags_out << "-Wl,.gvi/" << options.top_module + options.generics_hash << "/verilated_vcd_c.o " + << "-Wl,-lm -Wl,-lstdc++ "; + +} + +int main(int argc, char *argv[]) +{ + try { + Options options(argc,argv); + + if (options.help) { + std::cout << "usage: " << argv[0] << usage << std::endl; + return 0; + } + + if (options.add_generics_hash) { + std::cout << "gvi: generics hash " << options.generics_hash << std::endl; + } + + if (options.unittest) { + std::cerr << "gvi: running all unittests" << std::endl; + unittest(); + std::cerr << "gvi: all unittests successful" << std::endl; + return 0; + } + + // do the work + generate_ghdl_verilator_interface(options); + + } catch (std::exception &e) { + std::cerr << "gvi error: " << e.what() << std::endl; + return -1; + } + + return 0; +} diff --git a/testbench/tr_simulation/gsi_pexarria5/inferred_sync_fifo.vhd b/testbench/tr_simulation/gsi_pexarria5/inferred_sync_fifo.vhd new file mode 100644 index 0000000000..1a27f9d655 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/inferred_sync_fifo.vhd @@ -0,0 +1,305 @@ +-------------------------------------------------------------------------------- +-- CERN BE-CO-HT +-- General Cores Library +-- https://www.ohwr.org/projects/general-cores +-------------------------------------------------------------------------------- +-- +-- unit name: inferred_sync_fifo +-- +-- description: Parametrizable synchronous FIFO (Generic version). +-- Single-clock FIFO. +-- - configurable data width and size +-- - configurable full/empty/almost full/almost empty/word count signals +-- +-------------------------------------------------------------------------------- +-- Copyright CERN 2011-2020 +-------------------------------------------------------------------------------- +-- Copyright and related rights are licensed under the Solderpad Hardware +-- License, Version 2.0 (the "License"); you may not use this file except +-- in compliance with the License. You may obtain a copy of the License at +-- http://solderpad.org/licenses/SHL-2.0. +-- Unless required by applicable law or agreed to in writing, software, +-- hardware and materials distributed under this License is distributed on an +-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express +-- or implied. See the License for the specific language governing permissions +-- and limitations under the License. +-------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +use work.genram_pkg.all; + +entity inferred_sync_fifo is + + generic ( + g_data_width : natural; + g_size : natural; + g_show_ahead : boolean := false; + + -- Previously, the full flag was asserted at g_size-1 when using g_show_ahead. + -- The new implementation solves this. However, for backward compatibility, + -- the default is to still use the previous behaviour. Set this to false to + -- switch to the new one. + g_show_ahead_legacy_mode : boolean := true; + + -- Read-side flag selection + g_with_empty : boolean := true; -- with empty flag + g_with_full : boolean := true; -- with full flag + g_with_almost_empty : boolean := false; + g_with_almost_full : boolean := false; + g_with_count : boolean := false; -- with words counter + + g_almost_empty_threshold : integer := 0; -- threshold for almost empty flag + g_almost_full_threshold : integer := 0; -- threshold for almost full flag + + g_register_flag_outputs : boolean := true + ); + + port ( + rst_n_i : in std_logic := '1'; + + clk_i : in std_logic; + d_i : in std_logic_vector(g_data_width-1 downto 0); + we_i : in std_logic; + + q_o : out std_logic_vector(g_data_width-1 downto 0); + rd_i : in std_logic; + + empty_o : out std_logic; + full_o : out std_logic; + almost_empty_o : out std_logic; + almost_full_o : out std_logic; + count_o : out std_logic_vector(f_log2_size(g_size)-1 downto 0) + ); + +end inferred_sync_fifo; + +architecture syn of inferred_sync_fifo is + + constant c_pointer_width : integer := f_log2_size(g_size); + signal rd_ptr, wr_ptr, rd_ptr_muxed : unsigned(c_pointer_width-1 downto 0); + signal usedw : unsigned(c_pointer_width downto 0); + signal full, empty : std_logic; + + signal we_int, rd_int : std_logic; + signal guard_bit : std_logic; + + signal q_comb : std_logic_vector(g_data_width-1 downto 0); + + signal aa_i : std_logic_vector(c_pointer_width-1 downto 0); + signal ab_i : std_logic_vector(c_pointer_width-1 downto 0); + +begin -- syn + + we_int <= we_i and not full; + rd_int <= rd_i and not empty; + + aa_i <= std_logic_vector(wr_ptr(c_pointer_width-1 downto 0)); + ab_i <= std_logic_vector(rd_ptr_muxed(c_pointer_width-1 downto 0)); + + U_FIFO_Ram : generic_dpram + generic map ( + g_data_width => g_data_width, + g_size => g_size, + g_with_byte_enable => false, + g_addr_conflict_resolution => "dont_care", + g_dual_clock => false) + port map ( + rst_n_i => rst_n_i, + clka_i => clk_i, + wea_i => we_int, + aa_i => aa_i, + da_i => d_i, + clkb_i => '0', + ab_i => ab_i, + qb_o => q_comb); + + p_rd_ptr_mux: process(rd_int, rd_ptr) + begin + if(rd_int = '1' and g_show_ahead) then + rd_ptr_muxed <= rd_ptr + 1; + elsif((rd_int = '1' and not g_show_ahead) or (g_show_ahead)) then + rd_ptr_muxed <= rd_ptr; + else + rd_ptr_muxed <= rd_ptr - 1; + end if; + end process p_rd_ptr_mux; + + q_o <= q_comb; + + p_pointers : process(clk_i) + begin + if rising_edge(clk_i) then + if rst_n_i = '0' then + wr_ptr <= (others => '0'); + rd_ptr <= (others => '0'); + else + if(we_int = '1') then + wr_ptr <= wr_ptr + 1; + end if; + + if(rd_int = '1') then + rd_ptr <= rd_ptr + 1; + end if; + end if; + end if; + end process; + + gen_comb_flags_showahead_legacy : if g_show_ahead = true and + g_show_ahead_legacy_mode = true generate + + process(clk_i) + begin + if rising_edge(clk_i) then + if ((rd_ptr + 1 = wr_ptr and rd_int = '1') or (rd_ptr = wr_ptr)) then + empty <= '1'; + else + empty <= '0'; + end if; + end if; + end process; + full <= '1' when (wr_ptr + 1 = rd_ptr) else '0'; + + end generate gen_comb_flags_showahead_legacy; + + gen_comb_flags_showahead : if g_show_ahead = true and + g_show_ahead_legacy_mode = false generate + + process(clk_i) + begin + if rising_edge(clk_i) then + if rst_n_i = '0' then + guard_bit <= '0'; + empty <= '1'; + else + if wr_ptr = rd_ptr_muxed and guard_bit = '0' then + empty <= '1'; + else + empty <= '0'; + end if; + if(wr_ptr + 1 = rd_ptr and we_int = '1') then + guard_bit <= '1'; + elsif(rd_i = '1') then + guard_bit <= '0'; + end if; + end if; + end if; + end process; + + full <= '1' when (wr_ptr = rd_ptr and guard_bit = '1') else '0'; + + end generate gen_comb_flags_showahead; + + gen_comb_flags : if(g_register_flag_outputs = false and g_show_ahead = false) generate + empty <= '1' when (wr_ptr = rd_ptr and guard_bit = '0') else '0'; + full <= '1' when (wr_ptr = rd_ptr and guard_bit = '1') else '0'; + + p_guard_bit : process(clk_i) + begin + if rising_edge(clk_i) then + if rst_n_i = '0' then + guard_bit <= '0'; + elsif(wr_ptr + 1 = rd_ptr and we_int = '1') then + guard_bit <= '1'; + elsif(rd_i = '1') then + guard_bit <= '0'; + end if; + end if; + end process; + end generate gen_comb_flags; + + gen_registered_flags : if(g_register_flag_outputs = true and g_show_ahead = false) generate + p_reg_flags : process(clk_i) + begin + if rising_edge(clk_i) then + + if(rst_n_i = '0') then + full <= '0'; + empty <= '1'; + else + if(usedw = 1 and rd_int = '1' and we_int = '0') then + empty <= '1'; + elsif(we_int = '1' and rd_int = '0') then + empty <= '0'; + end if; + + if(usedw = g_size-2 and we_int = '1' and rd_int = '0') then + full <= '1'; + elsif(usedw = g_size-1 and rd_int = '1' and we_int = '0') then + full <= '0'; + end if; + end if; + + end if; + end process; + end generate gen_registered_flags; + + + gen_with_word_counter : if(g_with_count or g_with_almost_empty or g_with_almost_full or g_register_flag_outputs) generate + p_usedw_counter : process(clk_i) + begin + if rising_edge(clk_i) then + if rst_n_i = '0' then + usedw <= (others => '0'); + else + if(we_int = '1' and rd_int = '0') then + usedw <= usedw + 1; + elsif(we_int = '0' and rd_int = '1') then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + count_o <= std_logic_vector(usedw(c_pointer_width-1 downto 0)); + + end generate gen_with_word_counter; + + gen_with_almost_full : if(g_with_almost_full) generate + process(clk_i) + begin + if rising_edge(clk_i) then + if rst_n_i = '0' then + almost_full_o <= '0'; + else + if(usedw = g_almost_full_threshold-1) and (we_int = '1' and rd_int = '0') then + almost_full_o <= '1'; + elsif (usedw = g_almost_full_threshold) and (rd_int = '1' and we_int = '0') then + almost_full_o <= '0'; + end if; + end if; + end if; + end process; + end generate gen_with_almost_full; + + gen_without_almost_full : if(not g_with_almost_full) generate + almost_full_o <= '0'; + end generate gen_without_almost_full; + + gen_with_almost_empty : if(g_with_almost_empty) generate + process(clk_i) + begin + if rising_edge(clk_i) then + if rst_n_i = '0' then + almost_empty_o <= '1'; + else + if(usedw = g_almost_empty_threshold+1) and (rd_int = '1' and we_int = '0') then + almost_empty_o <= '1'; + elsif (usedw = g_almost_empty_threshold) and (we_int = '1' and rd_int = '0') then + almost_empty_o <= '0'; + end if; + end if; + end if; + end process; + end generate gen_with_almost_empty; + + gen_without_almost_empty : if(not g_with_almost_empty) generate + almost_empty_o <= '0'; + end generate gen_without_almost_empty; + + full_o <= full; + empty_o <= empty; + +end syn; diff --git a/testbench/tr_simulation/gsi_pexarria5/io_control.vhd b/testbench/tr_simulation/gsi_pexarria5/io_control.vhd new file mode 100644 index 0000000000..3c02b48598 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/io_control.vhd @@ -0,0 +1,664 @@ +--! @file io_control.vhd +--! @brief Control unit for bidirectional IO and more +--! @author CSCO-TG +--! +--! Copyright (C) 2015 GSI Helmholtz Centre for Heavy Ion Research GmbH +--! +-------------------------------------------------------------------------------- +--! This library is free software; you can redistribute it and/or +--! modify it under the terms of the GNU Lesser General Public +--! License as published by the Free Software Foundation; either +--! version 3 of the License, or (at your option) any later version. +--! +--! This library is distributed in the hope that it will be useful, +--! but WITHOUT ANY WARRANTY; without even the implied warranty of +--! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +--! Lesser General Public License for more details. +--! +--! You should have received a copy of the GNU Lesser General Public +--! License along with this library. If not, see . +--------------------------------------------------------------------------------- +-- Libraries +use std.textio.all; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.wishbone_pkg.all; +use work.monster_pkg.all; +use work.io_control_pkg.all; +use work.altera_lvds_pkg.all; + +entity io_control is + generic( + g_project : string; + g_syn_target : string := "Simulation"; + g_rom_delay : natural := 1; + g_version : natural := 1; + g_gpio_in : natural := 0; + g_gpio_out : natural := 0; + g_gpio_inout : natural := 0; + g_lvds_in : natural := 0; + g_lvds_out : natural := 0; + g_lvds_inout : natural := 0; + g_fixed : natural := 0; + g_io_table : t_io_mapping_table_arg_array); + port( + clk_i : in std_logic; + rst_n_i : in std_logic; + slave_i : in t_wishbone_slave_in; + slave_o : out t_wishbone_slave_out; + gpio_input_i : in std_logic_vector(f_sub1(g_gpio_in+g_gpio_inout) downto 0); + gpio_output_i : in std_logic_vector(f_sub1(g_gpio_out+g_gpio_inout) downto 0); + gpio_output_o : out std_logic_vector(f_sub1(g_gpio_out+g_gpio_inout) downto 0); + lvds_input_i : in t_lvds_byte_array(f_sub1(g_lvds_in+g_lvds_inout) downto 0); + lvds_output_i : in t_lvds_byte_array(f_sub1(g_lvds_out+g_lvds_inout) downto 0); + lvds_output_o : out t_lvds_byte_array(f_sub1(g_lvds_out+g_lvds_inout) downto 0); + gpio_oe_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_term_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + gpio_spec_out_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_spec_in_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + gpio_mux_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_pps_mux_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_sel_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_out_gate_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_in_gate_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + lvds_oe_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_term_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_spec_out_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_spec_in_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_mux_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_pps_mux_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_sel_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_out_gate_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_in_gate_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0)); +end io_control; + +architecture rtl of io_control is + -- Signals and registers + signal r_legacy_mode : std_logic := '0'; + signal r_ack : std_logic := '0'; + signal r_ack_delay : std_logic := '0'; + signal r_ack_delay_out : std_logic := '0'; + signal r_dat : t_wishbone_data := (others => '0'); + signal r_rom_data : std_logic_vector(31 downto 0) := (others => '0'); + signal r_io_cfg_reg : std_logic_vector(31 downto 0) := (others => '0'); + signal r_version_reg : std_logic_vector(31 downto 0) := (others => '0'); + signal r_fixed_info_reg : std_logic_vector(31 downto 0) := (others => '0'); + signal r_gpio_info_reg : std_logic_vector(31 downto 0) := (others => '0'); + signal r_lvds_info_reg : std_logic_vector(31 downto 0) := (others => '0'); + signal r_gpio_oe_legacy : std_logic_vector(63 downto 0) := (others => '0'); + signal r_lvds_oe_legacy : std_logic_vector(63 downto 0) := (others => '0'); + signal r_gpio_oe : std_logic_vector(63 downto 0) := (others => '0'); + signal r_lvds_oe : std_logic_vector(63 downto 0) := (others => '0'); + signal r_gpio_term : std_logic_vector(63 downto 0) := (others => '1'); + signal r_lvds_term : std_logic_vector(63 downto 0) := (others => '1'); + signal r_gpio_spec_in : std_logic_vector(63 downto 0) := (others => '0'); + signal r_gpio_spec_out : std_logic_vector(63 downto 0) := (others => '0'); + signal r_lvds_spec_in : std_logic_vector(63 downto 0) := (others => '0'); + signal r_lvds_spec_out : std_logic_vector(63 downto 0) := (others => '0'); + signal r_gpio_mux : std_logic_vector(63 downto 0) := (others => '0'); + signal r_lvds_mux : std_logic_vector(63 downto 0) := (others => '0'); + signal r_gpio_pps_mux : std_logic_vector(63 downto 0) := (others => '0'); + signal r_lvds_pps_mux : std_logic_vector(63 downto 0) := (others => '0'); + signal r_gpio_in_gate : std_logic_vector(63 downto 0) := (others => '1'); + signal r_lvds_in_gate : std_logic_vector(63 downto 0) := (others => '1'); + signal r_gpio_out_gate : std_logic_vector(63 downto 0) := (others => '1'); + signal r_lvds_out_gate : std_logic_vector(63 downto 0) := (others => '1'); + signal r_gpio_sel : std_logic_vector(63 downto 0) := (others => '0'); + signal r_lvds_sel : std_logic_vector(63 downto 0) := (others => '0'); + signal r_gpio_drive : std_logic_vector(63 downto 0) := (others => '0'); + signal r_lvds_drive : t_lvds_byte_array(f_sub1(g_lvds_out+g_lvds_inout) downto 0) := (others => (others => '0')); + signal s_delay_counter : natural range 0 to 7; + signal s_bit_selector : natural range 0 to (2**16)-1; + signal s_field_selector : natural range 0 to (2**16)-1; + signal s_entry_selector : natural range 0 to (2**16)-1; + -- Generic constants + constant c_table_pointer : natural := (g_gpio_in+g_gpio_out+g_gpio_inout+g_lvds_in+g_lvds_out+g_lvds_inout)*4; + constant c_gpio_inputs : natural := (g_gpio_inout+g_gpio_in); + constant c_gpio_outputs : natural := (g_gpio_inout+g_gpio_out); + constant c_gpio_total : natural := (g_gpio_inout+g_gpio_in+g_gpio_out); + constant c_lvds_inputs : natural := (g_lvds_inout+g_lvds_in); + constant c_lvds_outputs : natural := (g_lvds_inout+g_lvds_out); + constant c_lvds_total : natural := (g_lvds_inout+g_lvds_in+g_lvds_out); + -- Legacy mode registers + constant c_gpio_oe_legacy_low_reg : std_logic_vector (13 downto 0) := "00000000000000"; -- 0x0000 + constant c_lvds_oe_legacy_low_reg : std_logic_vector (13 downto 0) := "00000000000001"; -- 0x0004 + constant c_gpio_oe_legacy_high_reg : std_logic_vector (13 downto 0) := "00000000000010"; -- 0x0008 + constant c_lvds_oe_legacy_high_reg : std_logic_vector (13 downto 0) := "00000000000011"; -- 0x000c + constant c_io_config_reg : std_logic_vector (13 downto 0) := "00000000000100"; -- 0x0010 + -- Information registers + constant c_version_reg : std_logic_vector (13 downto 0) := "00000001000000"; -- 0x0100 + constant c_gpio_info_reg : std_logic_vector (13 downto 0) := "00000001000001"; -- 0x0104 + constant c_lvds_info_reg : std_logic_vector (13 downto 0) := "00000001000010"; -- 0x0108 + constant c_fixed_info_reg : std_logic_vector (13 downto 0) := "00000001000011"; -- 0x010c + -- GPIO OE registers + constant c_gpio_oe_set_low_reg : std_logic_vector (13 downto 0) := "00000010000000"; -- 0x0200 + constant c_gpio_oe_set_high_reg : std_logic_vector (13 downto 0) := "00000010000001"; -- 0x0204 + constant c_gpio_oe_reset_low_reg : std_logic_vector (13 downto 0) := "00000010000010"; -- 0x0208 + constant c_gpio_oe_reset_high_reg : std_logic_vector (13 downto 0) := "00000010000011"; -- 0x020c + -- LVDS OE registers + constant c_lvds_oe_set_low_reg : std_logic_vector (13 downto 0) := "00000011000000"; -- 0x0300 + constant c_lvds_oe_set_high_reg : std_logic_vector (13 downto 0) := "00000011000001"; -- 0x0304 + constant c_lvds_oe_reset_low_reg : std_logic_vector (13 downto 0) := "00000011000010"; -- 0x0308 + constant c_lvds_oe_reset_high_reg : std_logic_vector (13 downto 0) := "00000011000011"; -- 0x030c + -- GPIO TERM registers + constant c_gpio_term_set_low_reg : std_logic_vector (13 downto 0) := "00000100000000"; -- 0x0400 + constant c_gpio_term_set_high_reg : std_logic_vector (13 downto 0) := "00000100000001"; -- 0x0404 + constant c_gpio_term_reset_low_reg : std_logic_vector (13 downto 0) := "00000100000010"; -- 0x0408 + constant c_gpio_term_reset_high_reg : std_logic_vector (13 downto 0) := "00000100000011"; -- 0x040c + -- LVDS TERM registers + constant c_lvds_term_set_low_reg : std_logic_vector (13 downto 0) := "00000101000000"; -- 0x0500 + constant c_lvds_term_set_high_reg : std_logic_vector (13 downto 0) := "00000101000001"; -- 0x0504 + constant c_lvds_term_reset_low_reg : std_logic_vector (13 downto 0) := "00000101000010"; -- 0x0508 + constant c_lvds_term_reset_high_reg : std_logic_vector (13 downto 0) := "00000101000011"; -- 0x050c + -- GPIO SPECIAL IN registers + constant c_gpio_spec_in_set_low_reg : std_logic_vector (13 downto 0) := "00000110000000"; -- 0x0600 + constant c_gpio_spec_in_set_high_reg : std_logic_vector (13 downto 0) := "00000110000001"; -- 0x0604 + constant c_gpio_spec_in_reset_low_reg : std_logic_vector (13 downto 0) := "00000110000010"; -- 0x0608 + constant c_gpio_spec_in_reset_high_reg : std_logic_vector (13 downto 0) := "00000110000011"; -- 0x060c + -- GPIO SPECIAL OUT registers + constant c_gpio_spec_out_set_low_reg : std_logic_vector (13 downto 0) := "00000111000000"; -- 0x0700 + constant c_gpio_spec_out_set_high_reg : std_logic_vector (13 downto 0) := "00000111000001"; -- 0x0704 + constant c_gpio_spec_out_reset_low_reg : std_logic_vector (13 downto 0) := "00000111000010"; -- 0x0708 + constant c_gpio_spec_out_reset_high_reg : std_logic_vector (13 downto 0) := "00000111000011"; -- 0x070c + -- LVDS SPECIAL IN registers + constant c_lvds_spec_in_set_low_reg : std_logic_vector (13 downto 0) := "00001000000000"; -- 0x0800 + constant c_lvds_spec_in_set_high_reg : std_logic_vector (13 downto 0) := "00001000000001"; -- 0x0804 + constant c_lvds_spec_in_reset_low_reg : std_logic_vector (13 downto 0) := "00001000000010"; -- 0x0808 + constant c_lvds_spec_in_reset_high_reg : std_logic_vector (13 downto 0) := "00001000000011"; -- 0x080c + -- LVDS SPECIAL OUT registers + constant c_lvds_spec_out_set_low_reg : std_logic_vector (13 downto 0) := "00001001000000"; -- 0x0900 + constant c_lvds_spec_out_set_high_reg : std_logic_vector (13 downto 0) := "00001001000001"; -- 0x0904 + constant c_lvds_spec_out_reset_low_reg : std_logic_vector (13 downto 0) := "00001001000010"; -- 0x0908 + constant c_lvds_spec_out_reset_high_reg : std_logic_vector (13 downto 0) := "00001001000011"; -- 0x090c + -- GPIO MUX + constant c_gpio_mux_set_low_reg : std_logic_vector (13 downto 0) := "00001010000000"; -- 0x0a00 + constant c_gpio_mux_set_high_reg : std_logic_vector (13 downto 0) := "00001010000001"; -- 0x0a04 + constant c_gpio_mux_reset_low_reg : std_logic_vector (13 downto 0) := "00001010000010"; -- 0x0a08 + constant c_gpio_mux_reset_high_reg : std_logic_vector (13 downto 0) := "00001010000011"; -- 0x0a0c + -- LVDS MUX + constant c_lvds_mux_set_low_reg : std_logic_vector (13 downto 0) := "00001011000000"; -- 0x0b00 + constant c_lvds_mux_set_high_reg : std_logic_vector (13 downto 0) := "00001011000001"; -- 0x0b04 + constant c_lvds_mux_reset_low_reg : std_logic_vector (13 downto 0) := "00001011000010"; -- 0x0b08 + constant c_lvds_mux_reset_high_reg : std_logic_vector (13 downto 0) := "00001011000011"; -- 0x0b0c + -- GPIO SEL + constant c_gpio_sel_set_low_reg : std_logic_vector (13 downto 0) := "00001100000000"; -- 0x0c00 + constant c_gpio_sel_set_high_reg : std_logic_vector (13 downto 0) := "00001100000001"; -- 0x0c04 + constant c_gpio_sel_reset_low_reg : std_logic_vector (13 downto 0) := "00001100000010"; -- 0x0c08 + constant c_gpio_sel_reset_high_reg : std_logic_vector (13 downto 0) := "00001100000011"; -- 0x0c0c + -- LVDS SEL + constant c_lvds_sel_set_low_reg : std_logic_vector (13 downto 0) := "00001101000000"; -- 0x0d00 + constant c_lvds_sel_set_high_reg : std_logic_vector (13 downto 0) := "00001101000001"; -- 0x0d04 + constant c_lvds_sel_reset_low_reg : std_logic_vector (13 downto 0) := "00001101000010"; -- 0x0d08 + constant c_lvds_sel_reset_high_reg : std_logic_vector (13 downto 0) := "00001101000011"; -- 0x0d0c + -- GPIO PPS MUX + constant c_gpio_pps_mux_set_low_reg : std_logic_vector (13 downto 0) := "00001110000000"; -- 0x0e00 + constant c_gpio_pps_mux_set_high_reg : std_logic_vector (13 downto 0) := "00001110000001"; -- 0x0e04 + constant c_gpio_pps_mux_reset_low_reg : std_logic_vector (13 downto 0) := "00001110000010"; -- 0x0e08 + constant c_gpio_pps_mux_reset_high_reg : std_logic_vector (13 downto 0) := "00001110000011"; -- 0x0e0c + -- LVDS PPS MUX + constant c_lvds_pps_mux_set_low_reg : std_logic_vector (13 downto 0) := "00001111000000"; -- 0x0f00 + constant c_lvds_pps_mux_set_high_reg : std_logic_vector (13 downto 0) := "00001111000001"; -- 0x0f04 + constant c_lvds_pps_mux_reset_low_reg : std_logic_vector (13 downto 0) := "00001111000010"; -- 0x0f08 + constant c_lvds_pps_mux_reset_high_reg : std_logic_vector (13 downto 0) := "00001111000011"; -- 0x0f0c + -- GPIO IN GATE + constant c_gpio_in_gate_set_low_reg : std_logic_vector (13 downto 0) := "00010000000000"; -- 0x1000 + constant c_gpio_in_gate_set_high_reg : std_logic_vector (13 downto 0) := "00010000000001"; -- 0x1004 + constant c_gpio_in_gate_reset_low_reg : std_logic_vector (13 downto 0) := "00010000000010"; -- 0x1008 + constant c_gpio_in_gate_reset_high_reg : std_logic_vector (13 downto 0) := "00010000000011"; -- 0x100c + -- LVDS IN GATE + constant c_lvds_in_gate_set_low_reg : std_logic_vector (13 downto 0) := "00100000000000"; -- 0x2000 + constant c_lvds_in_gate_set_high_reg : std_logic_vector (13 downto 0) := "00100000000001"; -- 0x2004 + constant c_lvds_in_gate_reset_low_reg : std_logic_vector (13 downto 0) := "00100000000010"; -- 0x2008 + constant c_lvds_in_gate_reset_high_reg : std_logic_vector (13 downto 0) := "00100000000011"; -- 0x200c + -- GPIO OUT GATE + constant c_gpio_out_gate_set_low_reg : std_logic_vector (13 downto 0) := "00110000000000"; -- 0x3000 + constant c_gpio_out_gate_set_high_reg : std_logic_vector (13 downto 0) := "00110000000001"; -- 0x3004 + constant c_gpio_out_gate_reset_low_reg : std_logic_vector (13 downto 0) := "00110000000010"; -- 0x3008 + constant c_gpio_out_gate_reset_high_reg : std_logic_vector (13 downto 0) := "00110000000011"; -- 0x300c + -- LVDS OUT GATE + constant c_lvds_out_gate_set_low_reg : std_logic_vector (13 downto 0) := "01000000000000"; -- 0x4000 + constant c_lvds_out_gate_set_high_reg : std_logic_vector (13 downto 0) := "01000000000001"; -- 0x4004 + constant c_lvds_out_gate_reset_low_reg : std_logic_vector (13 downto 0) := "01000000000010"; -- 0x4008 + constant c_lvds_out_gate_reset_high_reg : std_logic_vector (13 downto 0) := "01000000000011"; -- 0x400c + -- GPIO registers addresses for set status/value + constant c_set_gpio_out_begin_reg : std_logic_vector (13 downto 0) := "10100000000000"; -- 0xannn ... + constant c_set_gpio_out_offset_reg : std_logic_vector (13 downto 0) := std_logic_vector(to_unsigned((f_sub1(g_gpio_out+g_gpio_inout)), c_set_gpio_out_begin_reg'length)); + constant c_set_gpio_out_end_reg : std_logic_vector (13 downto 0) := std_logic_vector(unsigned(c_set_gpio_out_begin_reg) + unsigned(c_set_gpio_out_offset_reg)); + -- LVDS registers addresses for set status/value + constant c_set_lvds_out_begin_reg : std_logic_vector (13 downto 0) := "10110000000000"; -- 0xbnnn ... + constant c_set_lvds_out_offset_reg : std_logic_vector (13 downto 0) := std_logic_vector(to_unsigned((f_sub1(g_lvds_out+g_lvds_inout)), c_set_lvds_out_begin_reg'length)); + constant c_set_lvds_out_end_reg : std_logic_vector (13 downto 0) := std_logic_vector(unsigned(c_set_lvds_out_begin_reg) + unsigned(c_set_lvds_out_offset_reg)); + -- GPIO registers addresses for get status/value + constant c_get_gpio_in_begin_reg : std_logic_vector (13 downto 0) := "11000000000000"; -- 0xcnnn ... + constant c_get_gpio_in_offset_reg : std_logic_vector (13 downto 0) := std_logic_vector(to_unsigned((f_sub1(g_gpio_in+g_gpio_inout)), c_get_gpio_in_begin_reg'length)); + constant c_get_gpio_in_end_reg : std_logic_vector (13 downto 0) := std_logic_vector(unsigned(c_get_gpio_in_begin_reg) + unsigned(c_get_gpio_in_offset_reg)); + constant c_get_gpio_out_begin_reg : std_logic_vector (13 downto 0) := std_logic_vector(unsigned(c_get_gpio_in_end_reg) + 1); + constant c_get_gpio_out_offset_reg : std_logic_vector (13 downto 0) := std_logic_vector(to_unsigned((f_sub1(g_gpio_out+g_gpio_inout)), c_get_gpio_out_begin_reg'length)); + constant c_get_gpio_out_end_reg : std_logic_vector (13 downto 0) := std_logic_vector(unsigned(c_get_gpio_out_begin_reg) + unsigned(c_get_gpio_out_offset_reg)); + -- LVDS registers addresses for get status/value + constant c_get_lvds_in_begin_reg : std_logic_vector (13 downto 0) := "11010000000000"; -- 0xdnnn ... + constant c_get_lvds_in_offset_reg : std_logic_vector (13 downto 0) := std_logic_vector(to_unsigned((f_sub1(g_lvds_in+g_lvds_inout)), c_get_lvds_in_begin_reg'length)); + constant c_get_lvds_in_end_reg : std_logic_vector (13 downto 0) := std_logic_vector(unsigned(c_get_lvds_in_begin_reg) + unsigned(c_get_lvds_in_offset_reg)); + constant c_get_lvds_out_begin_reg : std_logic_vector (13 downto 0) := std_logic_vector(unsigned(c_get_lvds_in_end_reg) + 1); + constant c_get_lvds_out_offset_reg : std_logic_vector (13 downto 0) := std_logic_vector(to_unsigned((f_sub1(g_lvds_out+g_lvds_inout)), c_get_lvds_out_begin_reg'length)); + constant c_get_lvds_out_end_reg : std_logic_vector (13 downto 0) := std_logic_vector(unsigned(c_get_lvds_out_begin_reg) + unsigned(c_get_lvds_out_offset_reg)); + -- IO mapping table + constant c_io_map_table_begin_reg : std_logic_vector (13 downto 0) := "11100000000000"; -- 0xennn ... + constant c_io_map_table_end_reg : std_logic_vector (13 downto 0) := "11111111111100"; -- 0xfff0 ... + -- IO mapping table layout + constant c_is_arria5 : boolean := g_syn_target = "Arria V"; + constant c_is_arria2 : boolean := g_syn_target = "Arria II"; + constant c_is_altera : boolean := c_is_arria5 or c_is_arria2; + constant c_is_simulation : boolean := g_syn_target = "Simulation"; + constant c_ios_total : natural := c_gpio_total + c_lvds_total + g_fixed; + constant c_io_table_memory : t_io_mapping_table_array := f_gen_io_table(g_io_table, c_ios_total); + --signal s_io_table_memory : t_io_mapping_table_array; + +begin + + -- Wishbone slave interface + slave_o.dat <= r_dat; + slave_o.ack <= r_ack when (g_rom_delay = 0) else r_ack_delay_out; + + -- Delay data/acknowledge by two cycles (to please slow ROMs) + p_wishbone_delay_handler : process(clk_i, rst_n_i) is + begin + if (rst_n_i = '0') then + r_ack_delay <= '0'; + r_ack_delay_out <= '0'; + elsif (rising_edge(clk_i)) then + r_ack_delay <= r_ack; + r_ack_delay_out <= r_ack_delay; + end if; + end process; + + -- Unused Wishbone slave signals + slave_o.err <= '0'; + slave_o.rty <= '0'; + slave_o.stall <= '0'; + + -- Output improved or legacy behavior + gpio_oe_o <= r_gpio_oe(f_sub1(c_gpio_outputs) downto 0) when r_legacy_mode='0' else r_gpio_oe_legacy(f_sub1(c_gpio_outputs) downto 0); + lvds_oe_o <= r_lvds_oe(f_sub1(c_lvds_outputs) downto 0) when r_legacy_mode='0' else r_lvds_oe_legacy(f_sub1(c_lvds_outputs) downto 0); + gpio_term_io: if (g_gpio_inout>0) generate + gpio_term_o(g_gpio_inout-1 downto 0) <= r_gpio_term(g_gpio_inout-1 downto 0) when r_legacy_mode='0' else not(r_gpio_oe_legacy(g_gpio_inout-1 downto 0)); + end generate; + gpio_term_in: if (g_gpio_in>0) generate + gpio_term_o((g_gpio_inout+g_gpio_in)-1 downto g_gpio_inout) <= r_gpio_term((g_gpio_inout+g_gpio_in)-1 downto g_gpio_inout) when r_legacy_mode='0' else (others => '1'); + end generate; + lvds_term_io: if (g_lvds_inout>0) generate + lvds_term_o(g_lvds_inout-1 downto 0) <= r_lvds_term(g_lvds_inout-1 downto 0) when r_legacy_mode='0' else not(r_lvds_oe_legacy(g_lvds_inout-1 downto 0)); + end generate; + lvds_term_in: if (g_lvds_in>0) generate + lvds_term_o((g_lvds_inout+g_lvds_in)-1 downto g_lvds_inout) <= r_lvds_term((g_lvds_inout+g_lvds_in)-1 downto g_lvds_inout) when r_legacy_mode='0' else (others => '1'); + end generate; + gpio_spec_in_o <= r_gpio_spec_in(f_sub1(c_gpio_inputs) downto 0) when r_legacy_mode='0' else (others => '0'); + gpio_spec_out_o <= r_gpio_spec_out(f_sub1(c_gpio_outputs) downto 0) when r_legacy_mode='0' else (others => '0'); + lvds_spec_in_o <= r_lvds_spec_in(f_sub1(c_lvds_inputs) downto 0) when r_legacy_mode='0' else (others => '0'); + lvds_spec_out_o <= r_lvds_spec_out(f_sub1(c_lvds_outputs) downto 0) when r_legacy_mode='0' else (others => '0'); + gpio_mux_o <= r_gpio_mux(f_sub1(c_gpio_outputs) downto 0) when r_legacy_mode='0' else (others => '0'); + lvds_mux_o <= r_lvds_mux(f_sub1(c_lvds_outputs) downto 0) when r_legacy_mode='0' else (others => '0'); + gpio_pps_mux_o <= r_gpio_pps_mux(f_sub1(c_gpio_outputs) downto 0) when r_legacy_mode='0' else (others => '0'); + lvds_pps_mux_o <= r_lvds_pps_mux(f_sub1(c_lvds_outputs) downto 0) when r_legacy_mode='0' else (others => '0'); + gpio_sel_o <= r_gpio_sel(f_sub1(c_gpio_outputs) downto 0) when r_legacy_mode='0' else (others => '0'); + lvds_sel_o <= r_lvds_sel(f_sub1(c_lvds_outputs) downto 0) when r_legacy_mode='0' else (others => '0'); + gpio_output_o <= r_gpio_drive(gpio_output_o'range) when r_legacy_mode='0' else (others => '0'); + lvds_output_o <= r_lvds_drive(lvds_output_o'range) when r_legacy_mode='0' else (others => (others => '0')); + gpio_in_gate_o <= r_gpio_in_gate(f_sub1(c_gpio_inputs) downto 0) when r_legacy_mode='0' else (others => '1'); + lvds_in_gate_o <= r_lvds_in_gate(f_sub1(c_lvds_inputs) downto 0) when r_legacy_mode='0' else (others => '1'); + gpio_out_gate_o <= r_gpio_out_gate(f_sub1(c_gpio_outputs) downto 0) when r_legacy_mode='0' else (others => '1'); + lvds_out_gate_o <= r_lvds_out_gate(f_sub1(c_lvds_outputs) downto 0) when r_legacy_mode='0' else (others => '1'); + + -- IO configuration register + r_io_cfg_reg <= (0 => r_legacy_mode, others => '0'); + + -- Version register + r_version_reg <= std_logic_vector(to_unsigned(g_version, r_version_reg'length)); + + -- Fixed IOs register + r_fixed_info_reg <= std_logic_vector(to_unsigned(g_fixed, r_version_reg'length)); + + -- GPIO information register + p_gpio_info : process(r_gpio_info_reg) is + begin + r_gpio_info_reg(31 downto 24) <= std_logic_vector(to_unsigned(c_gpio_total, r_gpio_info_reg'length/4)); + r_gpio_info_reg(23 downto 16) <= std_logic_vector(to_unsigned(g_gpio_in, r_gpio_info_reg'length/4)); + r_gpio_info_reg(15 downto 8) <= std_logic_vector(to_unsigned(g_gpio_out, r_gpio_info_reg'length/4)); + r_gpio_info_reg(7 downto 0) <= std_logic_vector(to_unsigned(g_gpio_inout, r_gpio_info_reg'length/4)); + end process; + + -- LVDS information register + p_lvds_info : process(r_lvds_info_reg) is + begin + r_lvds_info_reg(31 downto 24) <= std_logic_vector(to_unsigned(c_lvds_total, r_gpio_info_reg'length/4)); + r_lvds_info_reg(23 downto 16) <= std_logic_vector(to_unsigned(g_lvds_in, r_gpio_info_reg'length/4)); + r_lvds_info_reg(15 downto 8) <= std_logic_vector(to_unsigned(g_lvds_out, r_gpio_info_reg'length/4)); + r_lvds_info_reg(7 downto 0) <= std_logic_vector(to_unsigned(g_lvds_inout, r_gpio_info_reg'length/4)); + end process; + + -- Decode selection from slave input address (use the least significant bits to selected IO number or table entry field) + p_bit_selector : process(slave_i.adr) is + begin + s_bit_selector <= to_integer(unsigned(slave_i.adr(9 downto 2))); + s_field_selector <= to_integer(unsigned(slave_i.adr(3 downto 2))); + s_entry_selector <= to_integer(unsigned(slave_i.adr(11 downto 4))); + end process; + + -- Handle wishbone requests + p_wishbone_handler : process(clk_i, rst_n_i) is + begin + if (rst_n_i = '0') then + -- Reset everything + r_legacy_mode <= '0'; + r_ack <= '0'; + r_gpio_oe_legacy <= (others => '0'); + r_lvds_oe_legacy <= (others => '0'); + r_dat <= (others => '0'); + r_gpio_oe <= (others => '0'); + r_lvds_oe <= (others => '0'); + r_gpio_term <= (others => '1'); + r_lvds_term <= (others => '1'); + r_gpio_spec_in <= (others => '0'); + r_gpio_spec_out <= (others => '0'); + r_lvds_spec_in <= (others => '0'); + r_lvds_spec_out <= (others => '0'); + r_gpio_mux <= (others => '0'); + r_lvds_mux <= (others => '0'); + r_gpio_pps_mux <= (others => '0'); + r_lvds_pps_mux <= (others => '0'); + r_gpio_sel <= (others => '0'); + r_lvds_sel <= (others => '0'); + r_gpio_drive <= (others => '0'); + r_lvds_drive <= (others => (others => '0')); + r_gpio_in_gate <= (others => '1'); + r_lvds_in_gate <= (others => '1'); + r_gpio_out_gate <= (others => '1'); + r_lvds_out_gate <= (others => '1'); + + elsif (rising_edge(clk_i)) then + -- Handle generic wishbone signals + r_ack <= slave_i.cyc and slave_i.stb; + r_dat <= (others => '0'); + + -- Handle write requests + if (slave_i.cyc and slave_i.stb and slave_i.we) = '1' then + case slave_i.adr(15 downto 2) is + -- Known registers + when c_gpio_oe_legacy_low_reg => r_gpio_oe_legacy(31 downto 0) <= slave_i.dat; + when c_lvds_oe_legacy_low_reg => r_lvds_oe_legacy(31 downto 0) <= slave_i.dat; + when c_gpio_oe_legacy_high_reg => r_gpio_oe_legacy(63 downto 32) <= slave_i.dat; + when c_lvds_oe_legacy_high_reg => r_lvds_oe_legacy(63 downto 32) <= slave_i.dat; + when c_io_config_reg => r_legacy_mode <= slave_i.dat(0); + when c_version_reg => null; -- read only + when c_gpio_info_reg => null; -- read only + when c_lvds_info_reg => null; -- read only + when c_fixed_info_reg => null; -- read only + when c_gpio_oe_set_low_reg => r_gpio_oe(31 downto 0) <= r_gpio_oe(31 downto 0) or slave_i.dat; + when c_gpio_oe_set_high_reg => r_gpio_oe(63 downto 32) <= r_gpio_oe(63 downto 32) or slave_i.dat; + when c_gpio_oe_reset_low_reg => r_gpio_oe(31 downto 0) <= r_gpio_oe(31 downto 0) and not(slave_i.dat); + when c_gpio_oe_reset_high_reg => r_gpio_oe(63 downto 32) <= r_gpio_oe(63 downto 32) and not(slave_i.dat); + when c_lvds_oe_set_low_reg => r_lvds_oe(31 downto 0) <= r_lvds_oe(31 downto 0) or slave_i.dat; + when c_lvds_oe_set_high_reg => r_lvds_oe(63 downto 32) <= r_lvds_oe(63 downto 32) or slave_i.dat; + when c_lvds_oe_reset_low_reg => r_lvds_oe(31 downto 0) <= r_lvds_oe(31 downto 0) and not(slave_i.dat); + when c_lvds_oe_reset_high_reg => r_lvds_oe(63 downto 32) <= r_lvds_oe(63 downto 32) and not(slave_i.dat); + when c_gpio_term_set_low_reg => r_gpio_term(31 downto 0) <= r_gpio_term(31 downto 0) or slave_i.dat; + when c_gpio_term_set_high_reg => r_gpio_term(63 downto 32) <= r_gpio_term(63 downto 32) or slave_i.dat; + when c_gpio_term_reset_low_reg => r_gpio_term(31 downto 0) <= r_gpio_term(31 downto 0) and not(slave_i.dat); + when c_gpio_term_reset_high_reg => r_gpio_term(63 downto 32) <= r_gpio_term(63 downto 32) and not(slave_i.dat); + when c_lvds_term_set_low_reg => r_lvds_term(31 downto 0) <= r_lvds_term(31 downto 0) or slave_i.dat; + when c_lvds_term_set_high_reg => r_lvds_term(63 downto 32) <= r_lvds_term(63 downto 32) or slave_i.dat; + when c_lvds_term_reset_low_reg => r_lvds_term(31 downto 0) <= r_lvds_term(31 downto 0) and not(slave_i.dat); + when c_lvds_term_reset_high_reg => r_lvds_term(63 downto 32) <= r_lvds_term(63 downto 32) and not(slave_i.dat); + when c_gpio_spec_in_set_low_reg => r_gpio_spec_in(31 downto 0) <= r_gpio_spec_in(31 downto 0) or slave_i.dat; + when c_gpio_spec_in_set_high_reg => r_gpio_spec_in(63 downto 32) <= r_gpio_spec_in(63 downto 32) or slave_i.dat; + when c_gpio_spec_in_reset_low_reg => r_gpio_spec_in(31 downto 0) <= r_gpio_spec_in(31 downto 0) and not(slave_i.dat); + when c_gpio_spec_in_reset_high_reg => r_gpio_spec_in(63 downto 32) <= r_gpio_spec_in(63 downto 32) and not(slave_i.dat); + when c_gpio_spec_out_set_low_reg => r_gpio_spec_out(31 downto 0) <= r_gpio_spec_out(31 downto 0) or slave_i.dat; + when c_gpio_spec_out_set_high_reg => r_gpio_spec_out(63 downto 32) <= r_gpio_spec_out(63 downto 32) or slave_i.dat; + when c_gpio_spec_out_reset_low_reg => r_gpio_spec_out(31 downto 0) <= r_gpio_spec_out(31 downto 0) and not(slave_i.dat); + when c_gpio_spec_out_reset_high_reg => r_gpio_spec_out(63 downto 32) <= r_gpio_spec_out(63 downto 32) and not(slave_i.dat); + when c_lvds_spec_in_set_low_reg => r_lvds_spec_in(31 downto 0) <= r_lvds_spec_in(31 downto 0) or slave_i.dat; + when c_lvds_spec_in_set_high_reg => r_lvds_spec_in(63 downto 32) <= r_lvds_spec_in(63 downto 32) or slave_i.dat; + when c_lvds_spec_in_reset_low_reg => r_lvds_spec_in(31 downto 0) <= r_lvds_spec_in(31 downto 0) and not(slave_i.dat); + when c_lvds_spec_in_reset_high_reg => r_lvds_spec_in(63 downto 32) <= r_lvds_spec_in(63 downto 32) and not(slave_i.dat); + when c_lvds_spec_out_set_low_reg => r_lvds_spec_out(31 downto 0) <= r_lvds_spec_out(31 downto 0) or slave_i.dat; + when c_lvds_spec_out_set_high_reg => r_lvds_spec_out(63 downto 32) <= r_lvds_spec_out(63 downto 32) or slave_i.dat; + when c_lvds_spec_out_reset_low_reg => r_lvds_spec_out(31 downto 0) <= r_lvds_spec_out(31 downto 0) and not(slave_i.dat); + when c_lvds_spec_out_reset_high_reg => r_lvds_spec_out(63 downto 32) <= r_lvds_spec_out(63 downto 32) and not(slave_i.dat); + when c_gpio_mux_set_low_reg => r_gpio_mux(31 downto 0) <= r_gpio_mux(31 downto 0) or slave_i.dat; + when c_gpio_mux_set_high_reg => r_gpio_mux(63 downto 32) <= r_gpio_mux(63 downto 32) or slave_i.dat; + when c_gpio_mux_reset_low_reg => r_gpio_mux(31 downto 0) <= r_gpio_mux(31 downto 0) and not(slave_i.dat); + when c_gpio_mux_reset_high_reg => r_gpio_mux(63 downto 32) <= r_gpio_mux(63 downto 32) and not(slave_i.dat); + when c_lvds_mux_set_low_reg => r_lvds_mux(31 downto 0) <= r_lvds_mux(31 downto 0) or slave_i.dat; + when c_lvds_mux_set_high_reg => r_lvds_mux(63 downto 32) <= r_lvds_mux(63 downto 32) or slave_i.dat; + when c_lvds_mux_reset_low_reg => r_lvds_mux(31 downto 0) <= r_lvds_mux(31 downto 0) and not(slave_i.dat); + when c_lvds_mux_reset_high_reg => r_lvds_mux(63 downto 32) <= r_lvds_mux(63 downto 32) and not(slave_i.dat); + when c_gpio_sel_set_low_reg => r_gpio_sel(31 downto 0) <= r_gpio_sel(31 downto 0) or slave_i.dat; + when c_gpio_sel_set_high_reg => r_gpio_sel(63 downto 32) <= r_gpio_sel(63 downto 32) or slave_i.dat; + when c_gpio_sel_reset_low_reg => r_gpio_sel(31 downto 0) <= r_gpio_sel(31 downto 0) and not(slave_i.dat); + when c_gpio_sel_reset_high_reg => r_gpio_sel(63 downto 32) <= r_gpio_sel(63 downto 32) and not(slave_i.dat); + when c_lvds_sel_set_low_reg => r_lvds_sel(31 downto 0) <= r_lvds_sel(31 downto 0) or slave_i.dat; + when c_lvds_sel_set_high_reg => r_lvds_sel(63 downto 32) <= r_lvds_sel(63 downto 32) or slave_i.dat; + when c_lvds_sel_reset_low_reg => r_lvds_sel(31 downto 0) <= r_lvds_sel(31 downto 0) and not(slave_i.dat); + when c_lvds_sel_reset_high_reg => r_lvds_sel(63 downto 32) <= r_lvds_sel(63 downto 32) and not(slave_i.dat); + when c_gpio_pps_mux_set_low_reg => r_gpio_pps_mux(31 downto 0) <= r_gpio_pps_mux(31 downto 0) or slave_i.dat; + when c_gpio_pps_mux_set_high_reg => r_gpio_pps_mux(63 downto 32) <= r_gpio_pps_mux(63 downto 32) or slave_i.dat; + when c_gpio_pps_mux_reset_low_reg => r_gpio_pps_mux(31 downto 0) <= r_gpio_pps_mux(31 downto 0) and not(slave_i.dat); + when c_gpio_pps_mux_reset_high_reg => r_gpio_pps_mux(63 downto 32) <= r_gpio_pps_mux(63 downto 32) and not(slave_i.dat); + when c_lvds_pps_mux_set_low_reg => r_lvds_pps_mux(31 downto 0) <= r_lvds_pps_mux(31 downto 0) or slave_i.dat; + when c_lvds_pps_mux_set_high_reg => r_lvds_pps_mux(63 downto 32) <= r_lvds_pps_mux(63 downto 32) or slave_i.dat; + when c_lvds_pps_mux_reset_low_reg => r_lvds_pps_mux(31 downto 0) <= r_lvds_pps_mux(31 downto 0) and not(slave_i.dat); + when c_lvds_pps_mux_reset_high_reg => r_lvds_pps_mux(63 downto 32) <= r_lvds_pps_mux(63 downto 32) and not(slave_i.dat); + when c_gpio_in_gate_set_low_reg => r_gpio_in_gate(31 downto 0) <= r_gpio_in_gate(31 downto 0) or slave_i.dat; + when c_gpio_in_gate_set_high_reg => r_gpio_in_gate(63 downto 32) <= r_gpio_in_gate(63 downto 32) or slave_i.dat; + when c_gpio_in_gate_reset_low_reg => r_gpio_in_gate(31 downto 0) <= r_gpio_in_gate(31 downto 0) and not(slave_i.dat); + when c_gpio_in_gate_reset_high_reg => r_gpio_in_gate(63 downto 32) <= r_gpio_in_gate(63 downto 32) and not(slave_i.dat); + when c_lvds_in_gate_set_low_reg => r_lvds_in_gate(31 downto 0) <= r_lvds_in_gate(31 downto 0) or slave_i.dat; + when c_lvds_in_gate_set_high_reg => r_lvds_in_gate(63 downto 32) <= r_lvds_in_gate(63 downto 32) or slave_i.dat; + when c_lvds_in_gate_reset_low_reg => r_lvds_in_gate(31 downto 0) <= r_lvds_in_gate(31 downto 0) and not(slave_i.dat); + when c_lvds_in_gate_reset_high_reg => r_lvds_in_gate(63 downto 32) <= r_lvds_in_gate(63 downto 32) and not(slave_i.dat); + when c_gpio_out_gate_set_low_reg => r_gpio_out_gate(31 downto 0) <= r_gpio_out_gate(31 downto 0) or slave_i.dat; + when c_gpio_out_gate_set_high_reg => r_gpio_out_gate(63 downto 32) <= r_gpio_out_gate(63 downto 32) or slave_i.dat; + when c_gpio_out_gate_reset_low_reg => r_gpio_out_gate(31 downto 0) <= r_gpio_out_gate(31 downto 0) and not(slave_i.dat); + when c_gpio_out_gate_reset_high_reg => r_gpio_out_gate(63 downto 32) <= r_gpio_out_gate(63 downto 32) and not(slave_i.dat); + when c_lvds_out_gate_set_low_reg => r_lvds_out_gate(31 downto 0) <= r_lvds_out_gate(31 downto 0) or slave_i.dat; + when c_lvds_out_gate_set_high_reg => r_lvds_out_gate(63 downto 32) <= r_lvds_out_gate(63 downto 32) or slave_i.dat; + when c_lvds_out_gate_reset_low_reg => r_lvds_out_gate(31 downto 0) <= r_lvds_out_gate(31 downto 0) and not(slave_i.dat); + when c_lvds_out_gate_reset_high_reg => r_lvds_out_gate(63 downto 32) <= r_lvds_out_gate(63 downto 32) and not(slave_i.dat); + when others => + -- Set driven GPIO OUT values + if (slave_i.adr(15 downto 2) >= c_set_gpio_out_begin_reg and slave_i.adr(15 downto 2) <= c_set_gpio_out_end_reg) then + r_gpio_drive(s_bit_selector) <= slave_i.dat(0); + report "Setting driven GPIO OUT at: " & integer'image(s_bit_selector) severity note; + + -- Set driven LVDS OUT values + elsif (slave_i.adr(15 downto 2) >= c_set_lvds_out_begin_reg and slave_i.adr(15 downto 2) <= c_set_lvds_out_end_reg) then + r_lvds_drive(s_bit_selector) <= slave_i.dat(7 downto 0); + report "Setting driven LVDS OUT at: " & integer'image(s_bit_selector-g_lvds_in-g_lvds_inout) severity note; + + -- Unknown access + else + if ((slave_i.cyc and slave_i.stb) = '1') then + report "Unknown register access (write)!" severity error; + r_dat(31 downto 16) <= x"dead"; + r_dat(15 downto 2) <= slave_i.adr(15 downto 2); + r_dat( 1 downto 0) <= (others => '0'); + else + r_dat <= (others => '0'); + end if; + + end if; + end case; + end if; + + -- Handle read/no-write requests + case slave_i.adr(15 downto 2) is + -- Known registers + when c_gpio_oe_legacy_low_reg => r_dat <= r_gpio_oe_legacy(31 downto 0); + when c_lvds_oe_legacy_low_reg => r_dat <= r_lvds_oe_legacy(31 downto 0); + when c_gpio_oe_legacy_high_reg => r_dat <= r_gpio_oe_legacy(63 downto 32); + when c_lvds_oe_legacy_high_reg => r_dat <= r_lvds_oe_legacy(63 downto 32); + when c_io_config_reg => r_dat <= r_io_cfg_reg; + when c_version_reg => r_dat <= r_version_reg; + when c_gpio_info_reg => r_dat <= r_gpio_info_reg; + when c_lvds_info_reg => r_dat <= r_lvds_info_reg; + when c_fixed_info_reg => r_dat <= r_fixed_info_reg; + when c_gpio_oe_set_low_reg => r_dat <= r_gpio_oe(31 downto 0); + when c_gpio_oe_set_high_reg => r_dat <= r_gpio_oe(63 downto 32); + when c_gpio_oe_reset_low_reg => r_dat <= r_gpio_oe(31 downto 0); + when c_gpio_oe_reset_high_reg => r_dat <= r_gpio_oe(63 downto 32); + when c_lvds_oe_set_low_reg => r_dat <= r_lvds_oe(31 downto 0); + when c_lvds_oe_set_high_reg => r_dat <= r_lvds_oe(63 downto 32); + when c_lvds_oe_reset_low_reg => r_dat <= r_lvds_oe(31 downto 0); + when c_lvds_oe_reset_high_reg => r_dat <= r_lvds_oe(63 downto 32); + when c_gpio_term_set_low_reg => r_dat <= r_gpio_term(31 downto 0); + when c_gpio_term_set_high_reg => r_dat <= r_gpio_term(63 downto 32); + when c_gpio_term_reset_low_reg => r_dat <= r_gpio_term(31 downto 0); + when c_gpio_term_reset_high_reg => r_dat <= r_gpio_term(63 downto 32); + when c_lvds_term_set_low_reg => r_dat <= r_lvds_term(31 downto 0); + when c_lvds_term_set_high_reg => r_dat <= r_lvds_term(63 downto 32); + when c_lvds_term_reset_low_reg => r_dat <= r_lvds_term(31 downto 0); + when c_lvds_term_reset_high_reg => r_dat <= r_lvds_term(63 downto 32); + when c_gpio_spec_in_set_low_reg => r_dat <= r_gpio_spec_in(31 downto 0); + when c_gpio_spec_in_set_high_reg => r_dat <= r_gpio_spec_in(63 downto 32); + when c_gpio_spec_in_reset_low_reg => r_dat <= r_gpio_spec_in(31 downto 0); + when c_gpio_spec_in_reset_high_reg => r_dat <= r_gpio_spec_in(63 downto 32); + when c_gpio_spec_out_set_low_reg => r_dat <= r_gpio_spec_out(31 downto 0); + when c_gpio_spec_out_set_high_reg => r_dat <= r_gpio_spec_out(63 downto 32); + when c_gpio_spec_out_reset_low_reg => r_dat <= r_gpio_spec_out(31 downto 0); + when c_gpio_spec_out_reset_high_reg => r_dat <= r_gpio_spec_out(63 downto 32); + when c_lvds_spec_in_set_low_reg => r_dat <= r_lvds_spec_in(31 downto 0); + when c_lvds_spec_in_set_high_reg => r_dat <= r_lvds_spec_in(63 downto 32); + when c_lvds_spec_in_reset_low_reg => r_dat <= r_lvds_spec_in(31 downto 0); + when c_lvds_spec_in_reset_high_reg => r_dat <= r_lvds_spec_in(63 downto 32); + when c_lvds_spec_out_set_low_reg => r_dat <= r_lvds_spec_out(31 downto 0); + when c_lvds_spec_out_set_high_reg => r_dat <= r_lvds_spec_out(63 downto 32); + when c_lvds_spec_out_reset_low_reg => r_dat <= r_lvds_spec_out(31 downto 0); + when c_lvds_spec_out_reset_high_reg => r_dat <= r_lvds_spec_out(63 downto 32); + when c_gpio_mux_set_low_reg => r_dat <= r_gpio_mux(31 downto 0); + when c_gpio_mux_set_high_reg => r_dat <= r_gpio_mux(63 downto 32); + when c_gpio_mux_reset_low_reg => r_dat <= r_gpio_mux(31 downto 0); + when c_gpio_mux_reset_high_reg => r_dat <= r_gpio_mux(63 downto 32); + when c_lvds_mux_set_low_reg => r_dat <= r_lvds_mux(31 downto 0); + when c_lvds_mux_set_high_reg => r_dat <= r_lvds_mux(63 downto 32); + when c_lvds_mux_reset_low_reg => r_dat <= r_lvds_mux(31 downto 0); + when c_lvds_mux_reset_high_reg => r_dat <= r_lvds_mux(63 downto 32); + when c_gpio_sel_set_low_reg => r_dat <= r_gpio_sel(31 downto 0); + when c_gpio_sel_set_high_reg => r_dat <= r_gpio_sel(63 downto 32); + when c_gpio_sel_reset_low_reg => r_dat <= r_gpio_sel(31 downto 0); + when c_gpio_sel_reset_high_reg => r_dat <= r_gpio_sel(63 downto 32); + when c_lvds_sel_set_low_reg => r_dat <= r_lvds_sel(31 downto 0); + when c_lvds_sel_set_high_reg => r_dat <= r_lvds_sel(63 downto 32); + when c_lvds_sel_reset_low_reg => r_dat <= r_lvds_sel(31 downto 0); + when c_lvds_sel_reset_high_reg => r_dat <= r_lvds_sel(63 downto 32); + when c_gpio_pps_mux_set_low_reg => r_dat <= r_gpio_pps_mux(31 downto 0); + when c_gpio_pps_mux_set_high_reg => r_dat <= r_gpio_pps_mux(63 downto 32); + when c_gpio_pps_mux_reset_low_reg => r_dat <= r_gpio_pps_mux(31 downto 0); + when c_gpio_pps_mux_reset_high_reg => r_dat <= r_gpio_pps_mux(63 downto 32); + when c_lvds_pps_mux_set_low_reg => r_dat <= r_lvds_pps_mux(31 downto 0); + when c_lvds_pps_mux_set_high_reg => r_dat <= r_lvds_pps_mux(63 downto 32); + when c_lvds_pps_mux_reset_low_reg => r_dat <= r_lvds_pps_mux(31 downto 0); + when c_lvds_pps_mux_reset_high_reg => r_dat <= r_lvds_pps_mux(63 downto 32); + when c_gpio_in_gate_set_low_reg => r_dat <= r_gpio_in_gate(31 downto 0); + when c_gpio_in_gate_set_high_reg => r_dat <= r_gpio_in_gate(63 downto 32); + when c_gpio_in_gate_reset_low_reg => r_dat <= r_gpio_in_gate(31 downto 0); + when c_gpio_in_gate_reset_high_reg => r_dat <= r_gpio_in_gate(63 downto 32); + when c_lvds_in_gate_set_low_reg => r_dat <= r_lvds_in_gate(31 downto 0); + when c_lvds_in_gate_set_high_reg => r_dat <= r_lvds_in_gate(63 downto 32); + when c_lvds_in_gate_reset_low_reg => r_dat <= r_lvds_in_gate(31 downto 0); + when c_lvds_in_gate_reset_high_reg => r_dat <= r_lvds_in_gate(63 downto 32); + when c_gpio_out_gate_set_low_reg => r_dat <= r_gpio_out_gate(31 downto 0); + when c_gpio_out_gate_set_high_reg => r_dat <= r_gpio_out_gate(63 downto 32); + when c_gpio_out_gate_reset_low_reg => r_dat <= r_gpio_out_gate(31 downto 0); + when c_gpio_out_gate_reset_high_reg => r_dat <= r_gpio_out_gate(63 downto 32); + when c_lvds_out_gate_set_low_reg => r_dat <= r_lvds_out_gate(31 downto 0); + when c_lvds_out_gate_set_high_reg => r_dat <= r_lvds_out_gate(63 downto 32); + when c_lvds_out_gate_reset_low_reg => r_dat <= r_lvds_out_gate(31 downto 0); + when c_lvds_out_gate_reset_high_reg => r_dat <= r_lvds_out_gate(63 downto 32); + when others => + -- Get driven GPIO OUT values + if (slave_i.adr(15 downto 2) >= c_set_gpio_out_begin_reg and slave_i.adr(15 downto 2) <= c_set_gpio_out_end_reg) then + r_dat(31 downto 8) <= (others => '0'); + r_dat( 7 downto 0) <= (others => r_gpio_drive(s_bit_selector)); + report "Getting driven GPIO OUT at: " & integer'image(s_bit_selector) severity note; + + -- Get driven LVDS OUT values + elsif (slave_i.adr(15 downto 2) >= c_set_lvds_out_begin_reg and slave_i.adr(15 downto 2) <= c_set_lvds_out_end_reg) then + r_dat(31 downto 8) <= (others => '0'); + r_dat( 7 downto 0) <= r_lvds_drive(s_bit_selector); + report "Getting driven LVDS OUT at: " & integer'image(s_bit_selector) severity note; + + -- Get GPIO IN values + elsif (slave_i.adr(15 downto 2) >= c_get_gpio_in_begin_reg and slave_i.adr(15 downto 2) <= c_get_gpio_in_end_reg) then + r_dat(31 downto 8) <= (others => '0'); + r_dat( 7 downto 0) <= (others => gpio_input_i(s_bit_selector)); + report "Getting GPIO IN at: " & integer'image(s_bit_selector) severity note; + + -- Get GPIO OUT values + elsif (slave_i.adr(15 downto 2) >= c_get_gpio_out_begin_reg and slave_i.adr(15 downto 2) <= c_get_gpio_out_end_reg) then + r_dat(31 downto 8) <= (others => '0'); + r_dat( 7 downto 0) <= (others => gpio_output_i(s_bit_selector-g_gpio_in-g_gpio_inout)); + report "Getting GPIO OUT at: " & integer'image(s_bit_selector-g_gpio_in-g_gpio_inout) severity note; + + -- Get LVDS IN values + elsif (slave_i.adr(15 downto 2) >= c_get_lvds_in_begin_reg and slave_i.adr(15 downto 2) <= c_get_lvds_in_end_reg) then + r_dat(31 downto 8) <= (others => '0'); + r_dat( 7 downto 0) <= lvds_input_i(s_bit_selector); + report "Getting LVDS IN at: " & integer'image(s_bit_selector) severity note; + + -- Get LVDS OUT values + elsif (slave_i.adr(15 downto 2) >= c_get_lvds_out_begin_reg and slave_i.adr(15 downto 2) <= c_get_lvds_out_end_reg) then + r_dat(31 downto 8) <= (others => '0'); + r_dat( 7 downto 0) <= lvds_output_i(s_bit_selector-g_lvds_in-g_lvds_inout); + report "Getting LVDS OUT at: " & integer'image(s_bit_selector-g_lvds_in-g_lvds_inout) severity note; + + -- GET IO mapping table + elsif (slave_i.adr(15 downto 2) >= c_io_map_table_begin_reg and slave_i.adr(15 downto 2) <= c_io_map_table_end_reg) then + -- Prevent out of range access + if (s_entry_selector < c_ios_total) then + case s_field_selector is + when 0 => r_dat <= c_io_table_memory(s_entry_selector).info_name(95 downto 64); + when 1 => r_dat <= c_io_table_memory(s_entry_selector).info_name(63 downto 32); + when 2 => r_dat <= c_io_table_memory(s_entry_selector).info_name(31 downto 0); + when others => r_dat(31 downto 26) <= c_io_table_memory(s_entry_selector).info_special; + r_dat(25) <= c_io_table_memory(s_entry_selector).info_special_out; + r_dat(24) <= c_io_table_memory(s_entry_selector).info_special_in; + r_dat(23 downto 16) <= c_io_table_memory(s_entry_selector).info_index; + r_dat(15 downto 14) <= c_io_table_memory(s_entry_selector).info_direction; + r_dat(13 downto 11) <= c_io_table_memory(s_entry_selector).info_channel; + r_dat(10) <= c_io_table_memory(s_entry_selector).info_oe; + r_dat(9) <= c_io_table_memory(s_entry_selector).info_term; + r_dat(8) <= c_io_table_memory(s_entry_selector).info_res_bit; + r_dat(7 downto 4) <= c_io_table_memory(s_entry_selector).info_logic_level; + r_dat(3 downto 0) <= c_io_table_memory(s_entry_selector).info_reserved; + end case; + else + report "Unknown table access (read)!" severity error; + r_dat(31 downto 16) <= x"beef"; + r_dat(15 downto 2) <= slave_i.adr(15 downto 2); + r_dat( 1 downto 0) <= (others => '0'); + end if; + report "Getting mapping table" severity note; + + -- Unknown access + else + if ((slave_i.cyc and slave_i.stb) = '1') then + report "Unknown register access (read)!" severity error; + r_dat(31 downto 16) <= x"dead"; + r_dat(15 downto 2) <= slave_i.adr(15 downto 2); + r_dat( 1 downto 0) <= (others => '0'); + else + r_dat <= (others => '0'); + end if; + + end if; + end case; + + end if; + end process; + +end rtl; diff --git a/testbench/tr_simulation/gsi_pexarria5/io_control_pkg.vhd b/testbench/tr_simulation/gsi_pexarria5/io_control_pkg.vhd new file mode 100644 index 0000000000..c535fe6078 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/io_control_pkg.vhd @@ -0,0 +1,99 @@ +--! @file io_control_pkg.vhd +--! @brief Control unit for bidirectional IO and more +--! @author CSCO-TG +--! +--! Copyright (C) 2015 GSI Helmholtz Centre for Heavy Ion Research GmbH +--! +-------------------------------------------------------------------------------- +--! This library is free software; you can redistribute it and/or +--! modify it under the terms of the GNU Lesser General Public +--! License as published by the Free Software Foundation; either +--! version 3 of the License, or (at your option) any later version. +--! +--! This library is distributed in the hope that it will be useful, +--! but WITHOUT ANY WARRANTY; without even the implied warranty of +--! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +--! Lesser General Public License for more details. +--! +--! You should have received a copy of the GNU Lesser General Public +--! License along with this library. If not, see . +--------------------------------------------------------------------------------- +-- Libraries +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.wishbone_pkg.all; +use work.monster_pkg.all; +use work.altera_lvds_pkg.all; + +package io_control_pkg is + + -- SERDES INOUT (in case altera_lvds_pkg/t_lvds_byte_array is not available/suitable) + subtype t_serdes_byte is std_logic_vector(7 downto 0); + type t_serdes_byte_array is array(natural range <>) of t_serdes_byte; + + constant c_io_control_sdb : t_sdb_device := ( + abi_class => x"0000", -- undocumented device + abi_ver_major => x"00", + abi_ver_minor => x"00", + wbd_endian => c_sdb_endian_big, + wbd_width => x"7", -- 8/16/32-bit port granularity + sdb_component => ( + addr_first => x"0000000000000000", + addr_last => x"000000000000ffff", + product => ( + vendor_id => x"0000000000000651", + device_id => x"10C05791", + version => x"00000001", + date => x"20150916", + name => "IO_CONTROL ")) + ); + + component io_control is + generic( + g_project : string; + g_syn_target : string := "Simulation"; + g_rom_delay : natural := 1; + g_version : natural := 1; + g_gpio_in : natural := 0; + g_gpio_out : natural := 0; + g_gpio_inout : natural := 0; + g_lvds_in : natural := 0; + g_lvds_out : natural := 0; + g_lvds_inout : natural := 0; + g_fixed : natural := 0; + g_io_table : t_io_mapping_table_arg_array); + port( + clk_i : in std_logic; + rst_n_i : in std_logic; + slave_i : in t_wishbone_slave_in; + slave_o : out t_wishbone_slave_out; + gpio_input_i : in std_logic_vector(f_sub1(g_gpio_in+g_gpio_inout) downto 0); + gpio_output_i : in std_logic_vector(f_sub1(g_gpio_out+g_gpio_inout) downto 0); + gpio_output_o : out std_logic_vector(f_sub1(g_gpio_out+g_gpio_inout) downto 0); + lvds_input_i : in t_lvds_byte_array(f_sub1(g_lvds_in+g_lvds_inout) downto 0); + lvds_output_i : in t_lvds_byte_array(f_sub1(g_lvds_out+g_lvds_inout) downto 0); + lvds_output_o : out t_lvds_byte_array(f_sub1(g_lvds_out+g_lvds_inout) downto 0); + gpio_oe_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_term_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + gpio_spec_out_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_spec_in_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + gpio_mux_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_pps_mux_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_sel_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_out_gate_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_in_gate_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + lvds_oe_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_term_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_spec_out_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_spec_in_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_mux_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_pps_mux_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_sel_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_out_gate_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_in_gate_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0)); + end component; + +end package; diff --git a/testbench/tr_simulation/gsi_pexarria5/makefile b/testbench/tr_simulation/gsi_pexarria5/makefile new file mode 100644 index 0000000000..b6d5356847 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/makefile @@ -0,0 +1,195 @@ +GHDL_INTEL=`pwd`/intel +GHDL_INTEL_OBJ=$(GHDL_INTEL)/altera_mf/v93/altera_mf.o +BEL_PROJECTS_DIR=../../.. + +GHDLFLAGS = --ieee=synopsys --std=93c \ + -fexplicit -frelaxed-rules --no-vital-checks --warn-binding --mb-comments \ + -P$(GHDL_INTEL)/altera/v93 \ + -P$(GHDL_INTEL)/altera_lnsim/v93\ + -P$(GHDL_INTEL)/altera_mf/v93 \ + -P$(GHDL_INTEL)/arriav/v93 \ + -P$(GHDL_INTEL)/arriaii/v93 \ + -P$(GHDL_INTEL)/lpm/v93 \ + -P$(GHDL_INTEL)/sgate/v93 \ + -P$(GHDL_INTEL) + +all: testbench + +intel-vendor-lib: ${QUARTUS_PATH}/quartus/eda/sim_lib/altera_mf.vhd + /usr/lib/ghdl/vendors/compile-altera.sh --skip-largefiles --all --vhdl93 --source ${QUARTUS_PATH}/quartus/eda/sim_lib --output $(GHDL_INTEL) + touch intel-vendor-lib + +run: testbench + ghdl -r testbench --stop-time=1000us --wave=simulation.ghw --ieee-asserts=disable -gg_en_simbridge=false + +notrace: testbench + ghdl -r testbench --ieee-asserts=disable + +testbench: intel-vendor-lib \ + vhdl_sources \ + $(shell cat vhdl_sources) \ + ref_pll.vhd ref_pll_5_10.vhd dmtd_pll.vhd dmtd_pll_5_10.vhd sys_pll.vhd sys_pll_5_10.vhd single_region.vhd global_region.vhd \ + simbridge_pkg_c.o ez_usb_dev_c.o ez_usb_dev.vhd ez_usb_chip.vhd wr_timing.vhd \ + .gvi/lm32_top_full_debug/lm32_top_full_debug_wrapper.vhd \ + .gvi/lm32_top_full/lm32_top_full_wrapper.vhd \ + .gvi/lm32_top_medium_icache_debug/lm32_top_medium_icache_debug_wrapper.vhd \ + .gvi/lm32_top_medium_debug/lm32_top_medium_debug_wrapper.vhd \ + .gvi/lm32_top_medium_icache/lm32_top_medium_icache_wrapper.vhd \ + .gvi/lm32_top_medium/lm32_top_medium_wrapper.vhd \ + .gvi/lm32_top_minimal/lm32_top_minimal_wrapper.vhd \ + testbench.vhd + ghdl -a -g $(GHDLFLAGS) $(shell cat vhdl_sources) $(filter-out vhdl_sources simbridge_pkg_c.o ez_usb_dev_c.o intel-vendor-lib, $+) # filter out all object file dependencies... ghdl doesn't like them as input in -a stage + ghdl -m $(GHDLFLAGS) \ + $(shell cat .gvi/lm32_top_full_debug/lm32_top_full_debug_wrapper.flags) \ + $(shell cat .gvi/lm32_top_full/lm32_top_full_wrapper.flags) \ + $(shell cat .gvi/lm32_top_medium_icache_debug/lm32_top_medium_icache_debug_wrapper.flags) \ + $(shell cat .gvi/lm32_top_medium_debug/lm32_top_medium_debug_wrapper.flags) \ + $(shell cat .gvi/lm32_top_medium_icache/lm32_top_medium_icache_wrapper.flags) \ + $(shell cat .gvi/lm32_top_medium/lm32_top_medium_wrapper.flags) \ + $(shell cat .gvi/lm32_top_minimal/lm32_top_minimal_wrapper.flags) \ + $(shell cat .gvi/common.flags) \ + -Wl,simbridge_pkg_c.o \ + -Wl,ez_usb_dev_c.o \ + testbench + +## +simbridge_pkg_c.o: ./eb_sim_core/simbridge_pkg_c.cpp + g++ -fPIC -c $+ + +ez_usb_dev_c.o: ez_usb_dev_c.c + gcc -fPIC -c $+ + +## auto generate lm32 vhdl wrapper +.gvi/lm32_top_full_debug/lm32_top_full_debug_wrapper.vhd: lm32_allprofiles.v gvi + ./gvi -G sdb_address=1024 -G eba_reset=0x10000000 -v lm32_allprofiles.v -t lm32_top_full_debug -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/src -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/platform/generic + sed -i '/entity lm32_top_full_debug is/ageneric(eba_reset: std_logic_vector(31 downto 0);sdb_address: std_logic_vector(31 downto 0));' .gvi/lm32_top_full_debug/lm32_top_full_debug_wrapper.vhd + +.gvi/lm32_top_full/lm32_top_full_wrapper.vhd: lm32_allprofiles.v gvi + ./gvi -G sdb_address=1024 -G eba_reset=0x10000000 -v lm32_allprofiles.v -t lm32_top_full -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/src -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/platform/generic + sed -i '/entity lm32_top_full is/ageneric(eba_reset: std_logic_vector(31 downto 0);sdb_address: std_logic_vector(31 downto 0));' .gvi/lm32_top_full/lm32_top_full_wrapper.vhd + +.gvi/lm32_top_medium_icache_debug/lm32_top_medium_icache_debug_wrapper.vhd: lm32_allprofiles.v gvi + ./gvi -G sdb_address=1024 -G eba_reset=0x10000000 -v lm32_allprofiles.v -t lm32_top_medium_icache_debug -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/src -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/platform/generic + sed -i '/entity lm32_top_medium_icache_debug is/ageneric(eba_reset: std_logic_vector(31 downto 0);sdb_address: std_logic_vector(31 downto 0));' .gvi/lm32_top_medium_icache_debug/lm32_top_medium_icache_debug_wrapper.vhd + +.gvi/lm32_top_medium_debug/lm32_top_medium_debug_wrapper.vhd: lm32_allprofiles.v gvi + ./gvi -G sdb_address=1024 -G eba_reset=0x10000000 -v lm32_allprofiles.v -t lm32_top_medium_debug -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/src -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/platform/generic + sed -i '/entity lm32_top_medium_debug is/ageneric(eba_reset: std_logic_vector(31 downto 0);sdb_address: std_logic_vector(31 downto 0));' .gvi/lm32_top_medium_debug/lm32_top_medium_debug_wrapper.vhd + +.gvi/lm32_top_medium_icache/lm32_top_medium_icache_wrapper.vhd: lm32_allprofiles.v gvi + ./gvi -G sdb_address=1024 -G eba_reset=0x10000000 -v lm32_allprofiles.v -t lm32_top_medium_icache -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/src -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/platform/generic + sed -i '/entity lm32_top_medium_icache is/ageneric(eba_reset: std_logic_vector(31 downto 0);sdb_address: std_logic_vector(31 downto 0));' .gvi/lm32_top_medium_icache/lm32_top_medium_icache_wrapper.vhd + +.gvi/lm32_top_medium/lm32_top_medium_wrapper.vhd: lm32_allprofiles.v gvi + ./gvi -G sdb_address=1024 -G eba_reset=0x10000000 -v lm32_allprofiles.v -t lm32_top_medium -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/src -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/platform/generic + sed -i '/entity lm32_top_medium is/ageneric(eba_reset: std_logic_vector(31 downto 0);sdb_address: std_logic_vector(31 downto 0));' .gvi/lm32_top_medium/lm32_top_medium_wrapper.vhd + +.gvi/lm32_top_minimal/lm32_top_minimal_wrapper.vhd: lm32_allprofiles.v gvi + ./gvi -G sdb_address=1024 -G eba_reset=0x10000000 -v lm32_allprofiles.v -t lm32_top_minimal -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/src -I $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/platform/generic + sed -i '/entity lm32_top_minimal is/ageneric(eba_reset: std_logic_vector(31 downto 0);sdb_address: std_logic_vector(31 downto 0));' .gvi/lm32_top_minimal/lm32_top_minimal_wrapper.vhd + +gvi: gvi.cpp + +#lm32 "interrupt" is a C++ keyword => the file must be patched so that Verilator can handle it +lm32_allprofiles.v: $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_lm32/generated/lm32_allprofiles.v + sed '/input \[ (32-1):0\] interrupt;/i \/\* verilator lint_off SYMRSVDWORD \*\/' $< > $@ + sed -i '/input \[ (32-1):0\] interrupt;/a \/\* verilator lint_on SYMRSVDWORD \*\/' $@ + +# modify the list of VHDL source files ( exclude certain files or replace them with patched files) +vhdl_sources: hdl_sources wb_irq_slave.vhd ep_rx_buffer.vhd wr_core.vhd eca_tdp.vhd eca_sdp.vhd monster_pkg.vhd io_control_pkg.vhd io_control.vhd wb_mil_scu_pkg.vhd wb_mil_scu.vhd wb_scu_bus.vhd wb_irq_scu_bus.vhd + grep -r '.vhd$$' $< | \ + grep -v wb_pmc_host_bridge.vhd | \ + grep -v VME_CR_CSR_Space.vhd | \ + grep -v VME_IRQ_Controller.vhd | \ + grep -v VME_Wb_master_eb.vhd | \ + grep -v xVME64xCore_Top.vhd | \ + grep -v asmi10.vhd | \ + grep -v wb_asmi.vhd | \ + grep -v arria10_reset.vhd | \ + grep -v mil_en_decoder.vhd | \ + grep -v mil_hw_or_soft_ip.vhd | \ + grep -v event_processing.vhd | \ + grep -v wb_temp_sense.vhd | \ + grep -v hw6408_vhdl.vhd | \ + sed '/\/wb_mil_scu_pkg.vhd/cwb_mil_scu_pkg.vhd' | \ + sed '/\/wb_mil_scu.vhd/cwb_mil_scu.vhd' | \ + sed '/\/wb_irq_scu_bus.vhd/cwb_irq_scu_bus.vhd' | \ + sed '/\/wb_scu_bus.vhd/cwb_scu_bus.vhd' | \ + sed '/\/io_control_pkg.vhd/cio_control_pkg.vhd' | \ + sed '/\/io_control.vhd/cio_control.vhd' | \ + sed '/\/wb_irq_slave.vhd/cwb_irq_slave.vhd' | \ + sed '/\/wb_arria_reset.vhd/cwb_arria_reset.vhd' | \ + sed '/\/monster_pkg.vhd/cmonster_pkg.vhd' | \ + sed '/\/monster.vhd/cmonster.vhd' | \ + sed '/\/eca_sdp.vhd/ceca_sdp.vhd' | \ + sed '/\/eca_tdp.vhd/ceca_tdp.vhd' | \ + sed '/\/ep_rx_buffer.vhd/cep_rx_buffer.vhd' | \ + sed '/\/wr_core.vhd/cwr_core.vhd' > $@ + +verilog_sources: hdl_sources + grep -r '.v$$' $< > $@ + +hdl_sources: + hdlmake list-files > hdl_sources + +# patches for certain source files +ep_rx_buffer.vhd: $(BEL_PROJECTS_DIR)/ip_cores/wr-cores/modules/wr_endpoint/ep_rx_buffer.vhd + sed '/signal cur_addr : in std_logic_vector;/csignal cur_addr : in std_logic_vector(1 downto 0);' $< > $@ + +wr_core.vhd: $(BEL_PROJECTS_DIR)/ip_cores/wr-cores/modules/wrc_core/wr_core.vhd + sed "/dpram_wbb_i.adr <= /cdpram_wbb_i.adr <= \(others => \'0\'\);" $< > $@ + +# remove the assertions that trigger if an address has 'X'es in it +eca_tdp.vhd: $(BEL_PROJECTS_DIR)/ip_cores/wr-cores/modules/wr_eca/eca_tdp.vhd + sed "s/assert/--assert/g" $< > $@ + sed -i "s/report/--report/g" $@ + sed -i "s/severity/--severity/g" $@ + +eca_sdp.vhd: $(BEL_PROJECTS_DIR)/ip_cores/wr-cores/modules/wr_eca/eca_sdp.vhd + sed "s/assert/--assert/g" $< > $@ + sed -i "s/report/--report/g" $@ + sed -i "s/severity/--severity/g" $@ + sed -i "s/bug :/--bug :/g" $@ + +monster_pkg.vhd: $(BEL_PROJECTS_DIR)/modules/monster/monster_pkg.vhd + sed "s/t_io_mapping_table_arg_array(natural range <>)/t_io_mapping_table_arg_array/g" $< > $@ + +io_control_pkg.vhd: $(BEL_PROJECTS_DIR)/modules/io_control/src/hdl/io_control_pkg.vhd + sed "s/t_io_mapping_table_arg_array(natural range <>)/t_io_mapping_table_arg_array/g" $< > $@ + +io_control.vhd: $(BEL_PROJECTS_DIR)/modules/io_control/src/hdl/io_control.vhd + sed "s/t_io_mapping_table_arg_array(natural range <>)/t_io_mapping_table_arg_array/g" $< > $@ + +wb_mil_scu_pkg.vhd: $(BEL_PROJECTS_DIR)/modules/wb_mil_scu/wb_mil_scu_pkg.vhd + sed "s/t_sdb_component.addr_last'length/16*4/g" $< > $@ + +wb_mil_scu.vhd: $(BEL_PROJECTS_DIR)/modules/wb_mil_scu/wb_mil_scu.vhd + sed "s/Reset => NOT nRst_i/Reset => Rst_i/g" $< > $@ + sed -i "s/signal task_runs: std_logic;/signal task_runs: std_logic; signal Rst_i: STD_LOGIC;/g" $@ + sed -i "s/reset_6408 <= '0';/reset_6408 <= '0'; Rst_i <= not nRst_i;/g" $@ + sed -i "s/signal n_modulreset: std_logic;/signal n_modulreset: std_logic; signal modulreset: std_logic; signal tx_req_not_tx_fifo_empty : std_logic_vector(255 downto 0);/g" $@ + sed -i "s/=> not n_modulreset/=> modulreset/g" $@ + sed -i "s/input => tx_req & not tx_fifo_empty/input => tx_req_not_tx_fifo_empty/g" $@ + sed -i "s/prio_enc:/tx_req_not_tx_fifo_empty <= tx_req \& not tx_fifo_empty;\n modulreset<=not n_modulreset; \nprio_enc:/g" $@ + +wb_scu_bus.vhd: $(BEL_PROJECTS_DIR)/modules/scu_bus/wb_scu_bus.vhd + sed "s/unsigned(s_adr(c_adr_width-1 downto 0))/s_adr_c_adr/g" $< > $@ + sed -i "s/signal s_sw_tag : std_logic;/signal s_sw_tag : std_logic;\n signal s_adr_c_adr : unsigned(c_adr_width-1 downto 0);/g" $@ + sed -i "s/end process p_wb_ctrl;/end process p_wb_ctrl;\n s_adr_c_adr <= unsigned(s_adr(c_adr_width-1 downto 0));/g" $@ + sed -i "s/unsigned(c_adr_width-1 DOWNTO 0) := to_unsigned(16#/unsigned(15 downto 0) := x\"/g" $@ + sed -i "s/#, c_adr_width); -- real address is multiplied by two/\";/g" $@ + +wb_irq_scu_bus.vhd: $(BEL_PROJECTS_DIR)/modules/scu_bus/wb_irq_scu_bus.vhd + sed "s/slave_o => scu_slave_o/slave_o => open/g" $< > $@ + +# patch for wb_irq_slave to prevent out of bounds error +wb_irq_slave.vhd: $(BEL_PROJECTS_DIR)/ip_cores/general-cores/modules/wishbone/wb_irq/wb_irq_slave.vhd + sed "s/irq_q(queue_offs)/irq_q(queue_offs mod irq_q'length)/g" $< > $@ + +clean: + rm -f ep_rx_buffer.vhd wr_core.vhd eca_tdp.vhd eca_sdp.vhd *.o hdl_sources verilog_sources vhdl_sources work-obj93.cf + rm -rf .gvi $(GHDL_INTEL) intel-vendor-lib + + + + diff --git a/testbench/tr_simulation/gsi_pexarria5/monster.vhd b/testbench/tr_simulation/gsi_pexarria5/monster.vhd new file mode 100644 index 0000000000..7bcea21a51 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/monster.vhd @@ -0,0 +1,3246 @@ +--! @file monster_pkg.vhd +--! @brief Monster (all your top are belong to BEL) entity +--! @author Wesley W. Terpstra +--! +--! Copyright (C) 2013 GSI Helmholtz Centre for Heavy Ion Research GmbH +--! +--! This combines all the common GSI components together +--! +-------------------------------------------------------------------------------- +--! This library is free software; you can redistribute it and/or +--! modify it under the terms of the GNU Lesser General Public +--! License as published by the Free Software Foundation; either +--! version 3 of the License, or (at your option) any later version. +--! +--! This library is distributed in the hope that it will be useful, +--! but WITHOUT ANY WARRANTY; without even the implied warranty of +--! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +--! Lesser General Public License for more details. +--! +--! You should have received a copy of the GNU Lesser General Public +--! License along with this library. If not, see . +--------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.gencores_pkg.all; +use work.wrcore_pkg.all; +use work.pll_pkg.all; +use work.monster_pkg.all; +use work.wr_fabric_pkg.all; +use work.wishbone_pkg.all; +use work.eca_pkg.all; +use work.eca_internals_pkg.eca_wr_time; +use work.eca_tap_pkg.all; +use work.tlu_pkg.all; +use work.pcie_wb_pkg.all; +use work.wr_altera_pkg.all; +use work.etherbone_pkg.all; +use work.scu_bus_pkg.all; +use work.altera_flash_pkg.all; +use work.altera_networks_pkg.all; +use work.altera_lvds_pkg.all; +use work.build_id_pkg.all; +use work.watchdog_pkg.all; +use work.mbox_pkg.all; +use work.oled_display_pkg.all; +use work.lpc_uart_pkg.all; +use work.wb_irq_pkg.all; +use work.ftm_pkg.all; +use work.ez_usb_pkg.all; +use work.wb_arria_reset_pkg.all; +use work.xvme64x_pack.all; +use work.VME_Buffer_pack.all; +use work.wb_mil_scu_pkg.all; +use work.wr_serialtimestamp_pkg.all; +use work.wb_ssd1325_serial_driver_pkg.all; +use work.wb_nau8811_audio_driver_pkg.all; +use work.fg_quad_pkg.all; +use work.cfi_flash_pkg.all; +use work.psram_pkg.all; +use work.wb_serdes_clk_gen_pkg.all; +use work.io_control_pkg.all; +use work.wb_pmc_host_bridge_pkg.all; +use work.wb_temp_sense_pkg.all; +use work.ddr3_wrapper_pkg.all; +use work.endpoint_pkg.all; +use work.cpri_phy_reconf_pkg.all; +use work.beam_dump_pkg.all; +use work.wb_i2c_wrapper_pkg.all; +use work.remote_update_pkg.all; + +entity monster is + generic( + g_simulation : boolean; -- false for synthesis, true for simulation + g_family : string; -- "Arria II", "Arria V", or "Arria 10" + g_project : string; + g_flash_bits : natural; + g_psram_bits : natural; + g_ram_size : natural; + g_gpio_inout : natural; + g_gpio_in : natural; + g_gpio_out : natural; + g_tlu_fifo_size : natural; + g_lvds_inout : natural; + g_lvds_in : natural; + g_lvds_out : natural; + g_fixed : natural; + g_lvds_invert : boolean; + g_en_tlu : boolean; + g_en_pcie : boolean; + g_en_vme : boolean; + g_en_usb : boolean; + g_en_scubus : boolean; + g_en_mil : boolean; + g_en_oled : boolean; + g_en_lcd : boolean; + g_en_cfi : boolean; + g_en_ddr3 : boolean; + g_en_ssd1325 : boolean; + g_en_nau8811 : boolean; + g_en_user_ow : boolean; + g_en_psram : boolean; + g_en_beam_dump : boolean; + g_en_i2c_wrapper : boolean; + g_num_i2c_interfaces : integer; + g_dual_port_wr : boolean; + g_io_table : t_io_mapping_table_arg_array; + g_en_pmc : boolean; + g_a10_use_sys_fpll : boolean; + g_a10_use_ref_fpll : boolean; + g_a10_en_phy_reconf : boolean; + g_en_butis : boolean; + g_lm32_cores : natural; + g_lm32_MSIs : natural; + g_lm32_ramsizes : natural; + g_lm32_init_files : string; + g_lm32_profiles : string; + g_lm32_are_ftm : boolean; + g_en_tempsens : boolean; + g_delay_diagnostics : boolean; + g_en_eca : boolean; + g_en_wd_tmr : boolean; + g_en_timer : boolean; + g_en_eca_tap : boolean; + g_en_asmi : boolean); + port( + -- Required: core signals + core_clk_20m_vcxo_i : in std_logic; + core_clk_125m_pllref_i : in std_logic; + core_clk_125m_sfpref_i : in std_logic; + core_clk_125m_local_i : in std_logic; + core_rstn_i : in std_logic; + -- Optional clock outputs + core_clk_wr_ref_o : out std_logic; + core_clk_butis_o : out std_logic; + core_clk_butis_t0_o : out std_logic; + core_clk_sys_o : out std_logic; + core_rstn_wr_ref_o : out std_logic; + core_rstn_butis_o : out std_logic; + core_clk_200m_o : out std_logic; + core_clk_20m_o : out std_logic; + core_debug_o : out std_logic_vector(15 downto 0) := (others => 'Z'); + core_clk_debug_i : in std_logic; + -- Required: white rabbit pins + wr_onewire_io : inout std_logic; + wr_sfp_sda_io : inout std_logic; + wr_sfp_scl_io : inout std_logic; + wr_sfp_det_i : in std_logic; + wr_sfp_tx_o : out std_logic; + wr_sfp_rx_i : in std_logic; + wr_dac_sclk_o : out std_logic; + wr_dac_din_o : out std_logic; + wr_ndac_cs_o : out std_logic_vector(2 downto 1); + wr_aux_onewire_io : inout std_logic; + wr_aux_sfp_sda_io : inout std_logic; + wr_aux_sfp_scl_io : inout std_logic; + wr_aux_sfp_det_i : in std_logic; + wr_aux_sfp_tx_o : out std_logic; + wr_aux_sfp_rx_i : in std_logic; + wbar_phy_dis_o : out std_logic; + wbar_phy_aux_dis_o : out std_logic; + -- Optional WR features + wr_ext_clk_i : in std_logic; -- 10MHz + wr_ext_pps_i : in std_logic; + wr_uart_o : out std_logic; + wr_uart_i : in std_logic; + -- SFP + sfp_tx_disable_o : out std_logic; + sfp_tx_fault_i : in std_logic; + sfp_los_i : in std_logic; + sfp_aux_tx_disable_o : out std_logic; + sfp_aux_tx_fault_i : in std_logic; + sfp_aux_los_i : in std_logic; + phy_rx_ready_o : out std_logic; + phy_tx_ready_o : out std_logic; + phy_aux_rx_ready_o : out std_logic; + phy_aux_tx_ready_o : out std_logic; + phy_debug_o : out std_logic; + phy_debug_i : in std_logic_vector(7 downto 0) := (others => '0'); + -- GPIO for the board + gpio_i : in std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + gpio_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0) := (others => 'Z'); + gpio_oen_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0) := (others => '0'); + gpio_term_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0) := (others => '1'); + gpio_spec_in_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0) := (others => '0'); + gpio_spec_out_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0) := (others => '0'); + -- LVDS for the board + lvds_p_i : in std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_n_i : in std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_i_led_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0) := (others => 'Z'); + lvds_p_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0) := (others => 'Z'); + lvds_n_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0) := (others => 'Z'); + lvds_o_led_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0) := (others => 'Z'); + lvds_oen_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0) := (others => '0'); + lvds_term_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0) := (others => '1'); + lvds_spec_in_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0) := (others => '0'); + lvds_spec_out_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0) := (others => '0'); + -- Optional status LEDs + led_link_up_o : out std_logic; + led_link_act_o : out std_logic; + led_track_o : out std_logic; + led_pps_o : out std_logic; + led_aux_link_up_o : out std_logic; + led_aux_link_act_o : out std_logic; + led_aux_track_o : out std_logic; + led_aux_pps_o : out std_logic; + -- g_en_pcie + pcie_refclk_i : in std_logic; + pcie_rstn_i : in std_logic; + pcie_rx_i : in std_logic_vector(3 downto 0); + pcie_tx_o : out std_logic_Vector(3 downto 0) := (others => 'Z'); + -- g_en_vme + vme_as_n_i : in std_logic; + vme_rst_n_i : in std_logic; + vme_write_n_i : in std_logic; + vme_am_i : in std_logic_vector(5 downto 0); + vme_ds_n_i : in std_logic_vector(1 downto 0); + vme_ga_i : in std_logic_vector(3 downto 0); + vme_addr_data_b : inout std_logic_vector(31 downto 0); + vme_iack_n_i : in std_logic; + vme_iackin_n_i : in std_logic; + vme_iackout_n_o : out std_logic := 'Z'; + vme_irq_n_o : out std_logic_vector(6 downto 0) := (others => 'Z'); + vme_berr_o : out std_logic := 'Z'; + vme_dtack_oe_o : out std_logic := 'Z'; + vme_buffer_latch_o : out std_logic_vector(3 downto 0) := (others => 'Z'); + vme_data_oe_ab_o : out std_logic := 'Z'; + vme_data_oe_ba_o : out std_logic := 'Z'; + vme_addr_oe_ab_o : out std_logic := 'Z'; + vme_addr_oe_ba_o : out std_logic := 'Z'; + -- g_en_usb + usb_rstn_o : out std_logic := 'Z'; + usb_ebcyc_i : in std_logic; + usb_speed_i : in std_logic; + usb_shift_i : in std_logic; + usb_readyn_io : inout std_logic; + usb_fifoadr_o : out std_logic_vector(1 downto 0) := (others => 'Z'); + usb_sloen_o : out std_logic := 'Z'; + usb_fulln_i : in std_logic; + usb_emptyn_i : in std_logic; + usb_slrdn_o : out std_logic := 'Z'; + usb_slwrn_o : out std_logic := 'Z'; + usb_pktendn_o : out std_logic := 'Z'; + usb_fd_io : inout std_logic_vector(7 downto 0); + -- g_en_scubus + scubus_a_a : out std_logic_vector(15 downto 0) := (others => 'Z'); + scubus_a_d : inout std_logic_vector(15 downto 0); + scubus_nsel_data_drv : out std_logic := 'Z'; + scubus_a_nds : out std_logic := 'Z'; + scubus_a_rnw : out std_logic := 'Z'; + scubus_a_ndtack : in std_logic; + scubus_a_nsrq : in std_logic_vector(12 downto 1); + scubus_a_nsel : out std_logic_vector(12 downto 1) := (others => 'Z'); + scubus_a_ntiming_cycle : out std_logic := 'Z'; + scubus_a_sysclock : out std_logic := 'Z'; + -- g_en_mil + mil_nme_boo_i : in std_logic; + mil_nme_bzo_i : in std_logic; + mil_me_sd_i : in std_logic; + mil_me_esc_i : in std_logic; + mil_me_sdi_o : out std_logic := 'Z'; + mil_me_ee_o : out std_logic := 'Z'; + mil_me_ss_o : out std_logic := 'Z'; + mil_me_boi_o : out std_logic := 'Z'; + mil_me_bzi_o : out std_logic := 'Z'; + mil_me_udi_o : out std_logic := 'Z'; + mil_me_cds_i : in std_logic; + mil_me_sdo_i : in std_logic; + mil_me_dsc_i : in std_logic; + mil_me_vw_i : in std_logic; + mil_me_td_i : in std_logic; + mil_me_12mhz_o : out std_logic := 'Z'; + mil_boi_i : in std_logic; + mil_bzi_i : in std_logic; + mil_sel_drv_o : out std_logic := 'Z'; + mil_nsel_rcv_o : out std_logic := 'Z'; + mil_nboo_o : out std_logic := 'Z'; + mil_nbzo_o : out std_logic := 'Z'; + mil_nled_rcv_o : out std_logic := 'Z'; + mil_nled_trm_o : out std_logic := 'Z'; + mil_nled_err_o : out std_logic := 'Z'; + mil_timing_i : in std_logic; + mil_nled_timing_o : out std_logic := 'Z'; + mil_nled_fifo_ne_o : out std_logic := 'Z'; + mil_interlock_intr_i : in std_logic; + mil_data_rdy_intr_i : in std_logic; + mil_data_req_intr_i : in std_logic; + mil_nled_interl_o : out std_logic := 'Z'; + mil_nled_dry_o : out std_logic := 'Z'; + mil_nled_drq_o : out std_logic := 'Z'; + mil_lemo_data_o : out std_logic_vector(4 downto 1); + mil_lemo_nled_o : out std_logic_vector(4 downto 1); + mil_lemo_out_en_o : out std_logic_vector(4 downto 1); + mil_lemo_data_i : in std_logic_vector(4 downto 1):= (others => '0'); + -- g_en_oled + oled_rstn_o : out std_logic := 'Z'; + oled_dc_o : out std_logic := 'Z'; + oled_ss_o : out std_logic := 'Z'; + oled_sck_o : out std_logic := 'Z'; + oled_sd_o : out std_logic := 'Z'; + oled_sh_vr_o : out std_logic := 'Z'; + -- g_en_lcd + lcd_scp_o : out std_logic := 'Z'; + lcd_lp_o : out std_logic := 'Z'; + lcd_flm_o : out std_logic := 'Z'; + lcd_in_o : out std_logic := 'Z'; + -- g_en_ssd1325 + ssd1325_rst_o : out std_logic := 'Z'; + ssd1325_dc_o : out std_logic := 'Z'; + ssd1325_ss_o : out std_logic := 'Z'; + ssd1325_sclk_o : out std_logic := 'Z'; + ssd1325_data_o : out std_logic := 'Z'; + -- g_en_nau8811 + nau8811_spi_csb_o : out std_logic := 'Z'; + nau8811_spi_sclk_o : out std_logic := 'Z'; + nau8811_spi_sdio_o : out std_logic := 'Z'; + nau8811_iis_fs_o : out std_logic := 'Z'; + nau8811_iis_bclk_o : out std_logic := 'Z'; + nau8811_iis_adcout_o : out std_logic := 'Z'; + nau8811_iis_dacin_i : in std_logic; + -- g_en_cfi + cfi_ad : out std_logic_vector(25 downto 1) := (others => 'Z'); + cfi_df : inout std_logic_vector(15 downto 0); + cfi_adv_fsh : out std_logic := 'Z'; + cfi_nce_fsh : out std_logic := 'Z'; + cfi_clk_fsh : out std_logic := 'Z'; + cfi_nwe_fsh : out std_logic := 'Z'; + cfi_noe_fsh : out std_logic := 'Z'; + cfi_nrst_fsh : out std_logic := 'Z'; + cfi_wait_fsh : in std_logic; + -- g_en_ddr3 + mem_DDR3_DQ : inout std_logic_vector(15 downto 0); + mem_DDR3_DM : out std_logic_vector( 1 downto 0); + mem_DDR3_BA : out std_logic_vector( 2 downto 0); + mem_DDR3_ADDR : out std_logic_vector(12 downto 0); + mem_DDR3_CS_n : out std_logic_vector( 0 downto 0); + mem_DDR3_DQS : inout std_logic_vector( 1 downto 0); + mem_DDR3_DQSn : inout std_logic_vector( 1 downto 0); + mem_DDR3_RES_n : out std_logic; + mem_DDR3_CKE : out std_logic_vector( 0 downto 0); + mem_DDR3_ODT : out std_logic_vector( 0 downto 0); + mem_DDR3_CAS_n : out std_logic; + mem_DDR3_RAS_n : out std_logic; + mem_DDR3_CLK : inout std_logic_vector( 0 downto 0); + mem_DDR3_CLK_n : inout std_logic_vector( 0 downto 0); + mem_DDR3_WE_n : out std_logic; + -- g_en_psram + ps_clk : out std_logic := 'Z'; + ps_addr : out std_logic_vector(g_psram_bits-1 downto 0) := (others => 'Z'); + ps_data : inout std_logic_vector(15 downto 0); + ps_seln : out std_logic_vector(1 downto 0) := (others => 'Z'); + ps_cen : out std_logic := 'Z'; + ps_oen : out std_logic := 'Z'; + ps_wen : out std_logic := 'Z'; + ps_cre : out std_logic := 'Z'; + ps_advn : out std_logic := 'Z'; + ps_wait : in std_logic; + -- i2c + i2c_scl_pad_i : in std_logic_vector(g_num_i2c_interfaces-1 downto 0); + i2c_scl_pad_o : out std_logic_vector(g_num_i2c_interfaces-1 downto 0) := (others => 'Z'); + i2c_scl_padoen_o : out std_logic_vector(g_num_i2c_interfaces-1 downto 0) := (others => 'Z'); + i2c_sda_pad_i : in std_logic_vector(g_num_i2c_interfaces-1 downto 0); + i2c_sda_pad_o : out std_logic_vector(g_num_i2c_interfaces-1 downto 0) := (others => 'Z'); + i2c_sda_padoen_o : out std_logic_vector(g_num_i2c_interfaces-1 downto 0) := (others => 'Z'); + -- g_en_pmc + pmc_pci_clk_i : in std_logic; + pmc_pci_rst_i : in std_logic; + pmc_buf_oe_o : out std_logic := 'Z'; + pmc_busmode_io : inout std_logic_vector(3 downto 0); + pmc_ad_io : inout std_logic_vector(31 downto 0); + pmc_c_be_io : inout std_logic_vector(3 downto 0); + pmc_par_io : inout std_logic; + pmc_frame_io : inout std_logic; + pmc_trdy_io : inout std_logic; + pmc_irdy_io : inout std_logic; + pmc_stop_io : inout std_logic; + pmc_devsel_io : inout std_logic; + pmc_idsel_i : in std_logic; + pmc_perr_io : inout std_logic; + pmc_serr_io : inout std_logic; + pmc_inta_o : out std_logic := 'Z'; + pmc_req_o : out std_logic; + pmc_gnt_i : in std_logic; + -- g_en_user_ow + ow_io : inout std_logic_vector(1 downto 0); + hw_version : in std_logic_vector(31 downto 0); + -- g_en_tempsens + tempsens_clr_out : out std_logic); +end monster; + +architecture rtl of monster is + + constant c_is_arria10sx : boolean := g_family = "Arria 10 SX"; + constant c_is_arria10gx : boolean := g_family = "Arria 10 GX"; + constant c_is_arria10gx_e3p1 : boolean := g_family = "Arria 10 GX E3P1"; + constant c_is_arria10gx_scu4 : boolean := g_family = "Arria 10 GX SCU4"; + constant c_is_arria10gx_ftm4 : boolean := g_family = "Arria 10 GX FTM4"; + constant c_is_arria10gx_pex10 : boolean := g_family = "Arria 10 GX PEX10"; + constant c_is_arria10gx_ftm10 : boolean := g_family = "Arria 10 GX FTM10"; + constant c_is_arria10 : boolean := c_is_arria10gx or c_is_arria10sx or c_is_arria10gx_e3p1 or c_is_arria10gx_scu4 or c_is_arria10gx_ftm4 or c_is_arria10gx_pex10 or c_is_arria10gx_ftm10; + constant c_is_arria5 : boolean := g_family = "Arria V"; + constant c_is_arria2 : boolean := g_family = "Arria II"; + + constant c_zero_master : t_wishbone_master_out := ( + cyc => '0', + stb => '0', + adr => (others => '0'), + sel => (others => '0'), + we => '0', + dat => (others => '0')); + + ---------------------------------------------------------------------------------- + -- GSI Top Crossbar Masters ------------------------------------------------------ + ---------------------------------------------------------------------------------- + + type top_my_masters is ( + topm_ebs, + topm_eca_wbm, + topm_pcie, + topm_vme, + topm_pmc, + topm_usb, + topm_prioq + ); + constant c_top_my_masters : natural := top_my_masters'pos(top_my_masters'right)+1; + + constant c_top_layout_my_masters : t_sdb_record_array(c_top_my_masters-1 downto 0) := + (top_my_masters'pos(topm_ebs) => f_sdb_auto_msi(c_ebs_msi, false), -- Need to add MSI support !!! + top_my_masters'pos(topm_eca_wbm) => f_sdb_auto_msi(c_null_msi, false), -- no MSIs for ECA=>WB macro player + top_my_masters'pos(topm_pcie) => f_sdb_auto_msi(c_pcie_msi, g_en_pcie), + top_my_masters'pos(topm_vme) => f_sdb_auto_msi(c_vme_msi, g_en_vme), + top_my_masters'pos(topm_pmc) => f_sdb_auto_msi(c_pmc_msi, g_en_pmc), + top_my_masters'pos(topm_usb) => f_sdb_auto_msi(c_usb_msi, g_en_usb), + top_my_masters'pos(topm_prioq) => f_sdb_auto_msi(c_null_msi, false)); + + -- The FTM adds a bunch of masters to this crossbar + constant c_ftm_masters : t_sdb_record_array := f_lm32_masters_bridge_msis(g_lm32_cores); + constant c_top_masters : natural := c_ftm_masters'length + c_top_my_masters; + constant c_top_layout_req_masters : t_sdb_record_array(c_top_masters-1 downto 0) := + c_ftm_masters & c_top_layout_my_masters; + + constant c_top_layout_masters : t_sdb_record_array := f_sdb_auto_layout(c_top_layout_req_masters); + constant c_top_bridge_msi : t_sdb_msi := f_xwb_msi_layout_sdb(c_top_layout_masters); + + signal top_bus_slave_i : t_wishbone_slave_in_array (c_top_masters-1 downto 0); + signal top_bus_slave_o : t_wishbone_slave_out_array (c_top_masters-1 downto 0); + signal top_msi_master_i : t_wishbone_master_in_array (c_top_masters-1 downto 0); + signal top_msi_master_o : t_wishbone_master_out_array(c_top_masters-1 downto 0); + + ---------------------------------------------------------------------------------- + -- GSI Dev Crossbar Masters ------------------------------------------------------ + ---------------------------------------------------------------------------------- + constant c_dev_masters : natural := 1; + constant c_devm_top : natural := 0; + + constant c_dev_layout_req_masters : t_sdb_record_array(c_dev_masters-1 downto 0) := + (c_devm_top => f_sdb_auto_msi(c_top_bridge_msi, true)); + constant c_dev_layout_masters : t_sdb_record_array := f_sdb_auto_layout(c_dev_layout_req_masters); + constant c_dev_bridge_msi : t_sdb_msi := f_xwb_msi_layout_sdb(c_dev_layout_masters); + + signal dev_bus_slave_i : t_wishbone_slave_in_array (c_dev_masters-1 downto 0); + signal dev_bus_slave_o : t_wishbone_slave_out_array (c_dev_masters-1 downto 0); + signal dev_msi_master_i : t_wishbone_master_in_array (c_dev_masters-1 downto 0); + signal dev_msi_master_o : t_wishbone_master_out_array(c_dev_masters-1 downto 0); + + attribute keep : boolean; + signal sdb_dummy_top : std_logic := '0'; + signal sdb_dummy_dev : std_logic := '0'; + attribute keep of sdb_dummy_top : signal is true; + attribute keep of sdb_dummy_dev : signal is true; + + ---------------------------------------------------------------------------------- + -- GSI Dev Crossbar Slaves ------------------------------------------------------- + ---------------------------------------------------------------------------------- + + type dev_slaves is ( + -- required slaves + devs_build_id, + devs_watchdog, + devs_flash, + devs_reset, + devs_tlu, + devs_eca_ctl, + devs_eca_aq, + devs_eca_tlu, + devs_eca_wbm, + devs_serdes_clk_gen, + devs_control, + devs_ftm_cluster, + -- optional slaves: + devs_lcd, + devs_oled, + devs_scubirq, + devs_mil_ctrl, + devs_ow, + devs_ssd1325, + devs_vme_info, + devs_CfiPFlash, + devs_nau8811, + devs_psram, + devs_DDR3_if1, + devs_DDR3_if2, + devs_DDR3_ctrl, + devs_tempsens, + devs_a10_phy_reconf, + devs_i2c_wrapper, + devs_eca_tap, + devs_asmi + ); + constant c_dev_slaves : natural := dev_slaves'pos(dev_slaves'right)+1; + + -- Cut off TLU + constant c_use_tlu : boolean := (g_lm32_are_ftm and g_en_tlu) or (not(g_lm32_are_ftm) and g_en_tlu); + + -- We have to specify the values for WRC as they provide no function for this + constant c_wrcore_bridge_sdb : t_sdb_bridge := f_xwb_bridge_manual_sdb(x"0003ffff", x"00030000"); + constant c_wrcore_aux_bridge_sdb : t_sdb_bridge := f_xwb_bridge_manual_sdb(x"0004ffff", x"00040000"); + constant c_ftm_slaves : t_sdb_bridge := f_cluster_bridge(c_dev_bridge_msi, g_lm32_cores, g_lm32_ramsizes, g_lm32_are_ftm, g_delay_diagnostics); + + constant c_dev_layout_req_slaves : t_sdb_record_array(c_dev_slaves-1 downto 0) := + (dev_slaves'pos(devs_build_id) => f_sdb_auto_device(c_build_id_sdb, true), + dev_slaves'pos(devs_watchdog) => f_sdb_auto_device(c_watchdog_sdb, true), + dev_slaves'pos(devs_flash) => f_sdb_auto_device(f_wb_spi_flash_sdb(g_flash_bits), not g_en_asmi), + dev_slaves'pos(devs_reset) => f_sdb_auto_device(c_arria_reset, true), + dev_slaves'pos(devs_tlu) => f_sdb_auto_device(c_tlu_sdb, c_use_tlu), + dev_slaves'pos(devs_eca_ctl) => f_sdb_auto_device(c_eca_slave_sdb, g_en_eca), + dev_slaves'pos(devs_eca_aq) => f_sdb_auto_device(c_eca_queue_slave_sdb, g_en_eca), + dev_slaves'pos(devs_eca_tlu) => f_sdb_auto_device(c_eca_tlu_slave_sdb, g_en_eca), + dev_slaves'pos(devs_eca_wbm) => f_sdb_auto_device(c_eca_ac_wbm_slave_sdb, g_en_eca), + dev_slaves'pos(devs_serdes_clk_gen) => f_sdb_auto_device(c_wb_serdes_clk_gen_sdb, not g_lm32_are_ftm), + dev_slaves'pos(devs_control) => f_sdb_auto_device(c_io_control_sdb, true), + dev_slaves'pos(devs_ftm_cluster) => f_sdb_auto_bridge(c_ftm_slaves, true), + dev_slaves'pos(devs_lcd) => f_sdb_auto_device(c_wb_serial_lcd_sdb, g_en_lcd), + dev_slaves'pos(devs_oled) => f_sdb_auto_device(c_oled_display, g_en_oled), + dev_slaves'pos(devs_scubirq) => f_sdb_auto_device(c_scu_irq_ctrl_sdb, g_en_scubus), + dev_slaves'pos(devs_mil_ctrl) => f_sdb_auto_device(c_mil_irq_ctrl_sdb, g_en_mil), + dev_slaves'pos(devs_ow) => f_sdb_auto_device(c_user_1wire_sdb, g_en_user_ow), + dev_slaves'pos(devs_nau8811) => f_sdb_auto_device(c_nau8811_sdb, g_en_nau8811), + dev_slaves'pos(devs_vme_info) => f_sdb_auto_device(c_vme_info_sdb, g_en_vme), + dev_slaves'pos(devs_psram) => f_sdb_auto_device(f_psram_sdb(g_psram_bits), g_en_psram), + dev_slaves'pos(devs_CfiPFlash) => f_sdb_auto_device(c_wb_CfiPFlash_sdb, g_en_cfi), + dev_slaves'pos(devs_ssd1325) => f_sdb_auto_device(c_ssd1325_sdb, g_en_ssd1325), + dev_slaves'pos(devs_DDR3_if1) => f_sdb_auto_device(c_wb_DDR3_if1_sdb, g_en_ddr3), + dev_slaves'pos(devs_DDR3_if2) => f_sdb_auto_device(c_wb_DDR3_if2_sdb, g_en_ddr3), + dev_slaves'pos(devs_DDR3_ctrl) => f_sdb_auto_device(c_irq_master_ctrl_sdb, g_en_ddr3), + dev_slaves'pos(devs_tempsens) => f_sdb_auto_device(c_temp_sense_sdb, g_en_tempsens), + dev_slaves'pos(devs_a10_phy_reconf) => f_sdb_auto_device(c_cpri_phy_reconf_sdb, g_a10_en_phy_reconf), + dev_slaves'pos(devs_i2c_wrapper) => f_sdb_auto_device(c_i2c_wrapper_sdb, g_en_i2c_wrapper), + dev_slaves'pos(devs_eca_tap) => f_sdb_auto_device(c_eca_tap_sdb, g_en_eca_tap), + dev_slaves'pos(devs_asmi) => f_sdb_auto_device(c_wb_asmi_sdb, g_en_asmi)); + constant c_dev_layout : t_sdb_record_array := f_sdb_auto_layout(c_dev_layout_req_masters, c_dev_layout_req_slaves); + constant c_dev_sdb_address : t_wishbone_address := f_sdb_auto_sdb (c_dev_layout_req_masters, c_dev_layout_req_slaves); + constant c_dev_bridge_sdb : t_sdb_bridge := f_xwb_bridge_layout_sdb(true, c_dev_layout, c_dev_sdb_address); + + signal dev_msi_slave_i : t_wishbone_slave_in_array (c_dev_slaves-1 downto 0) := (others => c_zero_master); + signal dev_msi_slave_o : t_wishbone_slave_out_array (c_dev_slaves-1 downto 0); + signal dev_bus_master_i : t_wishbone_master_in_array (c_dev_slaves-1 downto 0); + signal dev_bus_master_o : t_wishbone_master_out_array(c_dev_slaves-1 downto 0); + + ---------------------------------------------------------------------------------- + -- GSI Top Crossbar Slaves ------------------------------------------------------- + ---------------------------------------------------------------------------------- + + -- Only put a slave here if it has critical performance requirements! + type top_slaves is ( + tops_eca_event, + tops_scubus, + tops_mbox, + tops_dev, + tops_mil, + tops_wr_fast_path, + tops_wr_aux_fast_path, + tops_ebm, + tops_beam_dump, + tops_emb_cpu + ); + constant c_top_slaves : natural := top_slaves'pos(top_slaves'right)+1; + + constant c_top_layout_req_slaves : t_sdb_record_array(c_top_slaves-1 downto 0) := + (top_slaves'pos(tops_eca_event) => f_sdb_embed_device(c_eca_event_sdb, x"7FFFFFF0", g_en_eca), -- must be located at fixed address + top_slaves'pos(tops_scubus) => f_sdb_auto_device(c_scu_bus_master, g_en_scubus), + top_slaves'pos(tops_mbox) => f_sdb_auto_device(c_mbox_sdb, true), + top_slaves'pos(tops_dev) => f_sdb_auto_bridge(c_dev_bridge_sdb, true), + top_slaves'pos(tops_mil) => f_sdb_auto_device(c_xwb_gsi_mil_scu, g_en_mil), + top_slaves'pos(tops_wr_fast_path) => f_sdb_auto_bridge(c_wrcore_bridge_sdb, true), + top_slaves'pos(tops_wr_aux_fast_path) => f_sdb_auto_bridge(c_wrcore_aux_bridge_sdb, g_dual_port_wr), + top_slaves'pos(tops_ebm) => f_sdb_auto_device(c_ebm_sdb, true), + top_slaves'pos(tops_emb_cpu) => f_sdb_auto_device(c_eca_queue_slave_sdb, g_en_eca), + top_slaves'pos(tops_beam_dump) => f_sdb_embed_device(c_beam_dump_sdb, x"7FFF0000", g_en_beam_dump)); + + constant c_top_layout : t_sdb_record_array := f_sdb_auto_layout(c_top_layout_req_masters, c_top_layout_req_slaves); + constant c_top_sdb_address : t_wishbone_address := f_sdb_auto_sdb (c_top_layout_req_masters, c_top_layout_req_slaves); + constant c_top_bridge_sdb : t_sdb_bridge := f_xwb_bridge_layout_sdb(true, c_top_layout, c_top_sdb_address); + + signal top_msi_slave_i : t_wishbone_slave_in_array (c_top_slaves-1 downto 0) := (others => c_zero_master); + signal top_msi_slave_o : t_wishbone_slave_out_array (c_top_slaves-1 downto 0); + signal top_bus_master_i : t_wishbone_master_in_array (c_top_slaves-1 downto 0); + signal top_bus_master_o : t_wishbone_master_out_array(c_top_slaves-1 downto 0); + + ---------------------------------------------------------------------------------- + -- Clock networks ---------------------------------------------------------------- + ---------------------------------------------------------------------------------- + + -- Non-PLL reset stuff + signal clk_free : std_logic; + signal rstn_free : std_logic; + signal pll_rst : std_logic; + + -- Sys PLL from clk_125m_local_i + signal sys_locked : std_logic; + signal clk_sys0 : std_logic; + signal clk_sys1 : std_logic; + signal clk_sys2 : std_logic; + signal clk_sys3 : std_logic; + signal clk_sys4 : std_logic; + signal clk_sys5 : std_logic; + + signal clk_sys : std_logic; + signal clk_reconf : std_logic; -- 50MHz on arrai2, 100MHz on arria5 + signal clk_flash_ext : std_logic; + signal clk_flash_out : std_logic; + signal clk_flash_in : std_logic; + signal clk_20m : std_logic; + signal clk_update : std_logic; + signal rstn_sys : std_logic; + signal rst_sys : std_logic; + signal rstn_update : std_logic; + signal clk_200m : std_logic; + + -- Ref PLL from clk_125m_pllref_i + signal ref_locked : std_logic; + signal clk_ref0 : std_logic; + signal clk_ref1 : std_logic; + signal clk_ref2 : std_logic; + signal clk_ref3 : std_logic; + signal clk_ref4 : std_logic; + + signal clk_ref : std_logic; + signal clk_butis : std_logic; + signal clk_phase : std_logic; + signal clk_lvds : std_logic; + signal clk_enable : std_logic; + signal clk_12_5 : std_logic; + signal rstn_ref : std_logic; + signal rstn_butis : std_logic; + + signal phase_done : std_logic; + signal phase_step : std_logic; + signal phase_sel : std_logic_vector(4 downto 0); + + signal phase_butis : phase_offset; + + -- DMTD PLL from clk_20m_vcxo_i + signal dmtd_locked : std_logic; + signal clk_dmtd0 : std_logic; + signal clk_dmtd : std_logic; + + -- BuTiS T0 clocks + signal clk_butis_t0 : std_logic := '0'; -- 100KHz + signal clk_butis_t0_ts : std_logic := '0'; -- 100KHz + timestamp + + signal pci_clk_global : std_logic; + + -- Misc. + signal clk_tx_pll_a10 : std_logic; + signal reconfig_reset : std_logic_vector(0 downto 0); + signal reconfig_write : std_logic_vector(0 downto 0); + signal reconfig_read : std_logic_vector(0 downto 0); + signal reconfig_address : std_logic_vector(9 downto 0); + signal reconfig_address_dump : std_logic_vector(21 downto 0); + signal reconfig_writedata : std_logic_vector(31 downto 0); + signal reconfig_readdata : std_logic_vector(31 downto 0); + signal reconfig_waitrequest : std_logic_vector(0 downto 0); + + -- END OF Clock networks + ---------------------------------------------------------------------------------- + + ---------------------------------------------------------------------------------- + -- Master signals ---------------------------------------------------------------- + ---------------------------------------------------------------------------------- + signal wrc_slave_i : t_wishbone_slave_in; + signal wrc_slave_o : t_wishbone_slave_out; + signal wrc_aux_slave_i : t_wishbone_slave_in; + signal wrc_aux_slave_o : t_wishbone_slave_out; + signal wrc_master_i : t_wishbone_master_in; + signal wrc_master_o : t_wishbone_master_out; + signal s_eca_evt_m_i : t_wishbone_master_in; + signal s_eca_evt_m_o : t_wishbone_master_out; + + signal eb_src_out : t_wrf_source_out; + signal eb_src_in : t_wrf_source_in; + signal eb_snk_out : t_wrf_sink_out; + signal eb_snk_in : t_wrf_sink_in; + + signal uart_usb : std_logic; -- from usb + signal uart_mux : std_logic; -- either usb or external + signal uart_wrc : std_logic; -- from wrc + + signal uart_aux_mux : std_logic; + signal uart_aux_wrc : std_logic; + + signal s_usb_fd_o : std_logic_vector(7 downto 0); + signal s_usb_fd_oen : std_logic; + + signal s_lm32_rstn : std_logic_vector(g_lm32_cores-1 downto 0); + + -- END OF Master signals + ---------------------------------------------------------------------------------- + + signal drop_link : std_logic; + + ---------------------------------------------------------------------------------- + -- White Rabbit signals ---------------------------------------------------------- + ---------------------------------------------------------------------------------- + constant g_pcs_16bit : boolean := FALSE; + + signal phy8_o : t_phy_8bits_to_wrc; + signal phy8_i : t_phy_8bits_from_wrc := c_dummy_phy8_from_wrc; + signal phy16_o : t_phy_16bits_to_wrc; + signal phy16_i : t_phy_16bits_from_wrc := c_dummy_phy16_from_wrc; + + signal phy8_aux_o : t_phy_8bits_to_wrc; + signal phy8_aux_i : t_phy_8bits_from_wrc := c_dummy_phy8_from_wrc; + signal phy16_aux_o : t_phy_16bits_to_wrc; + signal phy16_aux_i : t_phy_16bits_from_wrc := c_dummy_phy16_from_wrc; + + signal s_link_ok : std_logic; + + signal dac_hpll_load_p1 : std_logic; + signal dac_dpll_load_p1 : std_logic; + signal dac_hpll_data : std_logic_vector(15 downto 0); + signal dac_dpll_data : std_logic_vector(15 downto 0); + + signal dac_hpll_load_p1_aux : std_logic; + signal dac_dpll_load_p1_aux : std_logic; + signal dac_hpll_data_aux : std_logic_vector(15 downto 0); + signal dac_dpll_data_aux : std_logic_vector(15 downto 0); + + signal phy_clk : std_logic; + + signal phy_ready : std_logic; + signal phy_loopen : std_logic; + signal phy_rst : std_logic; + + signal phy_tx_clk : std_logic; + signal phy_tx_data : std_logic_vector(f_pcs_data_width(g_pcs_16bit)-1 downto 0); + signal phy_tx_k : std_logic_vector(f_pcs_k_width(g_pcs_16bit)-1 downto 0); + signal phy_tx_disparity : std_logic; + signal phy_tx_enc_err : std_logic; + signal phy_rx_rbclk : std_logic; + signal phy_rx_data : std_logic_vector(f_pcs_data_width(g_pcs_16bit)-1 downto 0); + signal phy_rx_k : std_logic_vector(f_pcs_k_width(g_pcs_16bit)-1 downto 0); + signal phy_rx_enc_err : std_logic; + signal phy_rx_bitslide : std_logic_vector(f_pcs_bts_width(g_pcs_16bit)-1 downto 0); + + signal phy_aux_ready : std_logic; + signal phy_aux_loopen : std_logic; + signal phy_aux_rst : std_logic; + + signal phy_aux_tx_clk : std_logic; + signal phy_aux_tx_data : std_logic_vector(f_pcs_data_width(g_pcs_16bit)-1 downto 0); + signal phy_aux_tx_k : std_logic_vector(f_pcs_k_width(g_pcs_16bit)-1 downto 0); + signal phy_aux_tx_disparity : std_logic; + signal phy_aux_tx_enc_err : std_logic; + signal phy_aux_rx_rbclk : std_logic; + signal phy_aux_rx_data : std_logic_vector(f_pcs_data_width(g_pcs_16bit)-1 downto 0); + signal phy_aux_rx_k : std_logic_vector(f_pcs_k_width(g_pcs_16bit)-1 downto 0); + signal phy_aux_rx_enc_err : std_logic; + signal phy_aux_rx_bitslide : std_logic_vector(f_pcs_bts_width(g_pcs_16bit)-1 downto 0); + + signal link_act : std_logic; + signal link_up : std_logic; + signal pps : std_logic; + signal ext_pps : std_logic; + + signal link_act_aux : std_logic; + signal link_up_aux : std_logic; + signal pps_aux : std_logic; + signal ext_pps_aux : std_logic; + + signal tm_valid : std_logic; + signal tm_tai : std_logic_vector(39 downto 0); + signal tm_cycles : std_logic_vector(27 downto 0); + + signal tm_valid_aux : std_logic; + + signal ref_tai8ns : std_logic_vector(63 downto 0); + + signal wbar_phy_rst : std_logic; + signal wbar_phy_aux_rst : std_logic; + signal wbar_phy_dis : std_logic; + signal wbar_phy_aux_dis : std_logic; + + signal owr_pwren : std_logic_vector(1 downto 0); + signal owr_en : std_logic_vector(1 downto 0); + + signal sfp_scl_o : std_logic; + signal sfp_sda_o : std_logic; + signal sfp_aux_scl_o : std_logic; + signal sfp_aux_sda_o : std_logic; + signal s_records_for_phy : boolean := FALSE; + + constant c_loc_linux : natural := 0; + constant c_loc_wb_master : natural := 1; + constant c_loc_embedded_cpu : natural := 2; + constant c_loc_scubus_tag : natural := 3; + + constant c_wrc_size : natural := 131072/4; + + function f_channel_types return t_nat_array is + constant c_scu_channel_types : t_nat_array(3 downto 0) := ( + 0 => c_loc_linux, + 1 => c_loc_wb_master, + 2 => c_loc_embedded_cpu, + 3 => c_loc_scubus_tag); + constant c_channel_types : t_nat_array(2 downto 0) := c_scu_channel_types(2 downto 0); + begin + if g_en_scubus then + return c_scu_channel_types; + else + return c_channel_types; + end if; + end f_channel_types; + + constant c_channel_types : t_nat_array := f_channel_types; + + signal s_stall_i : std_logic_vector(c_channel_types'range) := (others => '0'); + signal s_channel_o : t_channel_array(c_channel_types'range); + signal s_time : t_time; + + + function TO_INTEGER(x: boolean ) return integer is + begin + if x then + return 1; + else + return 0; + end if; + end TO_INTEGER; + + constant c_num_streams : natural := 2; + signal s_stream_i : t_stream_array(c_num_streams-1 downto 0); + signal s_stall_o : std_logic_vector(c_num_streams-1 downto 0); + + -- END OF White Rabbit + ---------------------------------------------------------------------------------- + + ---------------------------------------------------------------------------------- + -- Mil-Extension signals --------------------------------------------------------- + ---------------------------------------------------------------------------------- + + signal mil_interlock_intr_o: std_logic; + signal mil_data_rdy_intr_o: std_logic; + signal mil_data_req_intr_o: std_logic; + signal mil_dly_intr_o: std_logic; + signal mil_ev_fifo_ne_intr_o: std_logic; + signal mil_every_ms_intr_o: std_logic; + + -- Mil-Extension signals + ---------------------------------------------------------------------------------- + + ---------------------------------------------------------------------------------- + -- SCU bus signals --------------------------------------------------------- + ---------------------------------------------------------------------------------- + + signal tag : std_logic_vector(31 downto 0); + signal tag_valid : std_logic; + + -- SCU bus signals + ---------------------------------------------------------------------------------- + + + ---------------------------------------------------------------------------------- + -- VME signals ------------------------------------------------------------------- + ---------------------------------------------------------------------------------- + + signal s_vme_lword_n_o : std_logic; + signal s_vme_lword_n_i : std_logic; + signal s_vme_berr_o : std_logic; + signal s_vme_dtack_n_o : std_logic; + signal s_vme_dtack_oe_o : std_logic; + signal s_vme_data_o : std_logic_vector(31 downto 0); + signal s_vme_addr_o : std_logic_vector(31 downto 1); + signal s_vme_buffer : t_vme_buffer; + signal s_vme_buffer_latch : std_logic; + + -- END OF VME signals + ---------------------------------------------------------------------------------- + + signal lcd_scp : std_logic; + signal lcd_lp : std_logic; + signal lcd_flm : std_logic; + signal lcd_in : std_logic; + signal user_ow_pwren : std_logic_vector(1 downto 0); + signal user_ow_en : std_logic_vector(1 downto 0); + + constant c_eca_lvds : natural := g_lvds_inout + g_lvds_out; + constant c_eca_gpio : natural := g_gpio_inout + g_gpio_out; + constant c_eca_io : natural := c_eca_lvds + c_eca_gpio; + + constant c_tlu_lvds : natural := g_lvds_inout + g_lvds_in; + constant c_tlu_gpio : natural := g_gpio_inout + g_gpio_in; + constant c_tlu_io : natural := c_tlu_lvds + c_tlu_gpio; + + signal s_eca_io : t_gpio_array(c_eca_io-1 downto 0); + signal s_tlu_io : t_gpio_array(c_tlu_io-1 downto 0); + signal s_tlu_gated_io : t_gpio_array(c_tlu_io-1 downto 0); + signal s_tlu_gated_io_sync : t_gpio_array(c_tlu_io-1 downto 0); + + signal s_gpio_out : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_gpio_out_gated : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_gpio_src_eca : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_gpio_src_ioc : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_gpio_src_wr_pps : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_gpio_src_butis_t0 : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + + signal s_gpio_mux : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_lvds_mux : std_logic_vector(f_sub1(c_eca_lvds) downto 0); + signal s_gpio_pps_mux : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_lvds_pps_mux : std_logic_vector(f_sub1(c_eca_lvds) downto 0); + signal s_gpio_in_gate : std_logic_vector(f_sub1(c_tlu_gpio) downto 0); + signal s_lvds_in_gate : std_logic_vector(f_sub1(c_tlu_lvds) downto 0); + signal s_gpio_in_gate_sync : std_logic_vector(f_sub1(c_tlu_gpio) downto 0); + signal s_lvds_in_gate_sync : std_logic_vector(f_sub1(c_tlu_lvds) downto 0); + signal s_gpio_out_gate : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_lvds_out_gate : std_logic_vector(f_sub1(c_eca_lvds) downto 0); + signal s_gpio_out_gate_sync : std_logic_vector(f_sub1(c_eca_gpio) downto 0); + signal s_lvds_out_gate_sync : std_logic_vector(f_sub1(c_eca_lvds) downto 0); + + signal s_lvds_vec_i : t_lvds_byte_array(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + + signal lvds_dat_fr_butis_t0 : t_lvds_byte_array(f_sub1(c_eca_lvds) downto 0); + signal lvds_dat_fr_ioc : t_lvds_byte_array(f_sub1(c_eca_lvds) downto 0); + signal lvds_dat_fr_eca_chan : t_lvds_byte_array(f_sub1(c_eca_lvds) downto 0); + signal lvds_dat_fr_clk_gen : t_lvds_byte_array(f_sub1(c_eca_lvds) downto 0); + signal lvds_dat_fr_wr_pps : t_lvds_byte_array(f_sub1(c_eca_lvds) downto 0); + signal lvds_dat : t_lvds_byte_array(f_sub1(c_eca_lvds) downto 0); + signal lvds_dat_combined : t_lvds_byte_array(f_sub1(c_eca_lvds) downto 0); + signal lvds_dat_gated : t_lvds_byte_array(f_sub1(c_eca_lvds) downto 0); + signal lvds_i : t_lvds_byte_array(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + + signal s_triggers : t_trigger_array(g_gpio_in + g_gpio_inout + g_lvds_inout + g_lvds_in -1 downto 0); + + function f_lvds_array_to_trigger_array(lvds : t_lvds_byte_array) return t_trigger_array is + variable i : natural := 0; + variable result : t_trigger_array(lvds'left downto 0); + begin + for i in 0 to lvds'left loop + result(i) := lvds(i); + end loop; + return result; + end f_lvds_array_to_trigger_array; + + ---------------------------------------------------------------------------------- + -- asmi signals ------------------------------------------------------------------ + ---------------------------------------------------------------------------------- + signal asmi_i : t_wishbone_slave_in; + signal asmi_o : t_wishbone_slave_out; + +begin + + ---------------------------------------------------------------------------------- + -- Reset and PLLs ---------------------------------------------------------------- + ---------------------------------------------------------------------------------- + + -- We need at least one off-chip free running clock to setup PLLs + free_a5 : if c_is_arria5 generate + clk_free <= core_clk_125m_local_i; + end generate; + free_a2 : if c_is_arria2 generate + clk_free <= core_clk_20m_vcxo_i; -- (125MHz is too fast) + end generate; + free_a10 : if c_is_arria10 generate + clk_free <= core_clk_125m_local_i; + end generate; + + reset : altera_reset + generic map( + g_plls => 4, + g_clocks => 4, + g_areset => f_pick(g_simulation, 16, f_pick(c_is_arria5, 100, 1)*1024), + g_stable => f_pick(g_simulation, 16, f_pick(c_is_arria5, 100, 1)*1024)) + --g_areset => f_pick(c_is_arria5, 100, 1)*1024, + --g_stable => f_pick(c_is_arria5, 100, 1)*1024) + port map( + clk_free_i => clk_free, + rstn_i => core_rstn_i, + pll_lock_i(0) => dmtd_locked, + pll_lock_i(1) => ref_locked, + pll_lock_i(2) => sys_locked, + pll_lock_i(3) => '1', + pll_arst_o => pll_rst, + clocks_i(0) => clk_free, + clocks_i(1) => clk_sys, + clocks_i(2) => clk_update, + clocks_i(3) => clk_ref, + rstn_o(0) => rstn_free, + rstn_o(1) => rstn_sys, + rstn_o(2) => rstn_update, + rstn_o(3) => rstn_ref); + + dmtd_a2 : if c_is_arria2 generate + dmtd_inst : dmtd_pll port map( + areset => pll_rst, + inclk0 => core_clk_20m_vcxo_i, -- 20 Mhz + c0 => clk_dmtd0, -- 62.5MHz + locked => dmtd_locked); + end generate; + dmtd_a5 : if c_is_arria5 generate + dmtd_inst : dmtd_pll5 port map( + rst => pll_rst, + refclk => core_clk_20m_vcxo_i, -- 20 MHz + outclk_0 => clk_dmtd0, -- 62.5MHz + locked => dmtd_locked); + end generate; + + dmtd_a10 : if c_is_arria10 generate + dmtd_inst : dmtd_pll10 port map( + rst => pll_rst, + refclk => core_clk_20m_vcxo_i, -- 20 MHz + outclk_0 => clk_dmtd0, -- 62.5MHz + locked => dmtd_locked); + end generate; + + dmtd_clk : single_region port map( + inclk => clk_dmtd0, + outclk => clk_dmtd); + + sys_a2 : if c_is_arria2 generate + sys_inst : sys_pll port map( + areset => pll_rst, + inclk0 => core_clk_125m_local_i, -- 125 Mhz + c0 => clk_sys0, -- 62.5 MHz + c1 => clk_sys1, -- 50 Mhz + c2 => clk_sys2, -- 20 MHz + c3 => clk_sys3, -- 10 MHz + locked => sys_locked); + clk_sys4 <= clk_sys1; + end generate; + + sys_a5 : if c_is_arria5 generate + sys_inst : sys_pll5 port map( + rst => pll_rst, + refclk => core_clk_125m_local_i, -- 125 Mhz + outclk_0 => clk_sys0, -- 62.5MHz + outclk_1 => clk_sys1, -- 100 MHz +0 ns + outclk_2 => clk_sys2, -- 20 MHz + outclk_3 => clk_sys3, -- 10 MHz + outclk_4 => clk_sys4, -- 20 MHz + locked => sys_locked); + end generate; + + sys_a10 : if (c_is_arria10 and not(g_a10_use_sys_fpll)) generate + sys_inst : sys_pll10 port map( + rst => pll_rst, + refclk => core_clk_125m_local_i, -- 125 Mhz + outclk_0 => clk_sys0, -- 62.5MHz + outclk_1 => clk_sys1, -- 100 MHz +0 ns + outclk_2 => clk_sys2, -- 20 MHz + outclk_3 => clk_sys3, -- 10 MHz + outclk_4 => clk_sys4, -- 20 MHz + locked => sys_locked); + end generate; + + sys_fa10 : if (c_is_arria10 and g_a10_use_sys_fpll) generate + sys_inst : sys_fpll10 port map( + pll_refclk0 => core_clk_125m_local_i, + pll_powerdown => '0', + pll_locked => sys_locked, + pll_cal_busy => open, + outclk0 => clk_sys0, -- 62.5MHz + outclk1 => clk_sys1, -- 100 MHz + outclk2 => clk_sys2, -- 20 MHz + outclk3 => clk_sys3); -- 10 MHz + clk_sys4 <= clk_sys2; + end generate; + + + sys_clk : global_region port map( + inclk => clk_sys0, + outclk => clk_sys); + + reconf_clk : global_region port map( + inclk => clk_sys1, + outclk => clk_reconf); + + c20m_clk : single_region port map( + inclk => clk_sys2, + outclk => clk_20m); + + update_clk : single_region port map( + inclk => clk_sys3, + outclk => clk_update); + + -- This keeps the legacy flash controller alive (voodoo mode) + global_region_flash_y : if not g_en_asmi generate + flash_out : global_region port map( + inclk => clk_sys4, + outclk => clk_flash_ext); + end generate; + + global_region_flash_n : if g_en_asmi generate + clk_flash_ext <= clk_sys4; + end generate; + + clk_flash_in <= clk_flash_ext; + clk_flash_out <= clk_reconf; + + ref_a2 : if c_is_arria2 generate + ref_inst : ref_pll port map( -- see "Phase Counter Select Mapping" table for arria2gx + areset => pll_rst, + inclk0 => core_clk_125m_pllref_i, -- 125 MHz + c0 => clk_ref0, -- 125 MHz, counter: 0010 - #2 + c1 => clk_ref1, -- 200 MHz, counter: 0011 = #3 + c2 => clk_ref2, -- 25 MHz, counter: 0100 = #4 + locked => ref_locked, + scanclk => clk_free, + phasedone => phase_done, + phasecounterselect => phase_sel(3 downto 0), + phasestep => phase_step, + phaseupdown => '1'); + clk_ref3 <= '0'; + clk_ref4 <= '0'; + end generate; + + ref_a5 : if c_is_arria5 generate + ref_inst : ref_pll5 port map( + rst => pll_rst, + refclk => core_clk_125m_pllref_i, -- 125 MHz + outclk_0 => clk_ref0, -- 125 MHz + outclk_1 => clk_ref1, -- 200 MHz + outclk_2 => clk_ref2, -- 25 MHz + outclk_3 => clk_ref3, --1000 MHz + outclk_4 => clk_ref4, -- 125 MHz, 1/8 duty, -1.5ns phase + locked => ref_locked, + scanclk => clk_free, + cntsel => phase_sel, + phase_en => phase_step, + updn => '1', -- positive phase shift (widen period) + phase_done => phase_done); + end generate; + + ref_a10 : if (c_is_arria10 and not(g_a10_use_ref_fpll)) generate + --ref_inst : ref_pll10 port map( + -- rst => pll_rst, + -- refclk => core_clk_125m_pllref_i, -- 125 MHz + -- outclk_2 => clk_ref0, -- 125 MHz + -- outclk_3 => clk_ref1, -- 200 MHz + -- outclk_4 => clk_ref2, -- 25 MHz + -- lvds_clk(0) => clk_ref3, -- 1000 MHz + -- loaden(0) => clk_ref4, -- 125 MHz, 1/8 duty, -1.5ns phase + -- locked => ref_locked, + -- scanclk => clk_free, + -- cntsel => phase_sel, + -- phase_en => phase_step, + -- updn => '1', -- positive phase shift (widen period) + -- phase_done => phase_done); + end generate; + + ref_fa10 : if (c_is_arria10 and g_a10_use_ref_fpll) generate + ref_inst : ref_fpll10 port map( + pll_refclk0 => core_clk_125m_pllref_i, + pll_powerdown => '0', + pll_locked => ref_locked, + pll_cal_busy => open, + outclk0 => clk_ref0, -- 125 MHz + outclk1 => open, -- 125 MHz + outclk2 => clk_ref1, -- 200 MHz + outclk3 => clk_ref2); -- 25 MHz + clk_ref3 <= '0'; + end generate; + + phase : altera_phase + generic map( + g_select_bits => 5, + g_outputs => 1, + g_base => 0, + g_vco_freq => 1000, -- 1GHz + g_output_freq => (0 => 200), + g_output_select => (0 => f_pick(c_is_arria5, 4, 3))) + port map( + clk_i => clk_free, + rstn_i => rstn_free, + clks_i(0) => clk_butis, + rstn_o(0) => rstn_butis, + offset_i(0) => phase_butis, + phasedone_i => phase_done, + phasesel_o => phase_sel, + phasestep_o => phase_step); + + ref_clk : global_region port map( + inclk => clk_ref0, + outclk => clk_ref); + + --butis_clk : global_region port map( + -- inclk => clk_ref1, + -- outclk => clk_butis); + clk_butis <= clk_ref1; + + c200m_clk : global_region port map( + inclk => clk_ref1, + outclk => clk_200m); + + + clk_div: process(clk_ref0) + variable cnt: integer := 0; + begin + if rising_edge(clk_ref0) then + if cnt < 4 then + cnt := cnt + 1; + else + cnt := 0; + clk_12_5 <= not clk_12_5; + end if; + end if; + end process; + + phase_clk : global_region port map( -- skew must match ref_clk + inclk => clk_ref2, + outclk => clk_phase); + + clk_lvds <= clk_ref3; + clk_enable <= clk_ref4; + + butis : altera_butis + port map( + clk_ref_i => clk_ref, + clk_25m_i => clk_phase, + pps_i => pps, + phase_o => phase_butis); + + butis_t0 : BuTiS_T0_generator + port map( + wr_clock_i => clk_ref, + wr_rst_n_i => rstn_ref, + wr_PPSpulse_i => pps, + BuTis_rst_n_i => rstn_butis, + timestamp_i => s_time, + BuTis_C2_i => clk_butis, + BuTis_T0_o => clk_butis_t0, + BuTis_T0_timestamp_o => clk_butis_t0_ts, + error_o => open); + + core_clk_wr_ref_o <= clk_ref; + core_clk_butis_o <= clk_butis; + core_clk_butis_t0_o<= clk_butis_t0_ts; + core_rstn_wr_ref_o <= rstn_ref; + core_rstn_butis_o <= rstn_butis; + core_clk_sys_o <= clk_sys; + core_clk_200m_o <= clk_200m; + core_clk_20m_o <= clk_20m; + + -- END OF Reset and PLLs + ---------------------------------------------------------------------------------- + + ---------------------------------------------------------------------------------- + -- Wishbone crossbars ------------------------------------------------------------ + ---------------------------------------------------------------------------------- + + top_bar : xwb_sdb_crossbar + generic map( + g_num_masters => c_top_masters, + g_num_slaves => c_top_slaves, + g_registered => true, + g_wraparound => true, + g_sdb_wb_mode => PIPELINED, + g_verbose => true, + g_layout => c_top_layout, + g_sdb_addr => c_top_sdb_address) + port map( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => top_bus_slave_i, + slave_o => top_bus_slave_o, + msi_master_i => top_msi_master_i, + msi_master_o => top_msi_master_o, + master_i => top_bus_master_i, + master_o => top_bus_master_o, + msi_slave_i => top_msi_slave_i, + msi_slave_o => top_msi_slave_o); + + dev_bar : xwb_sdb_crossbar + generic map( + g_num_masters => c_dev_masters, + g_num_slaves => c_dev_slaves, + g_registered => true, + g_wraparound => true, + g_sdb_wb_mode => PIPELINED, + g_verbose => true, + g_layout => c_dev_layout, + g_sdb_addr => c_dev_sdb_address) + port map( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_bus_slave_i, + slave_o => dev_bus_slave_o, + msi_master_i => dev_msi_master_i, + msi_master_o => dev_msi_master_o, + master_i => dev_bus_master_i, + master_o => dev_bus_master_o, + msi_slave_i => dev_msi_slave_i, + msi_slave_o => dev_msi_slave_o); + + top2dev_bus : xwb_register_link + generic map( + g_wb_adapter => false) + port map( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => top_bus_master_o(top_slaves'pos(tops_dev)), + slave_o => top_bus_master_i(top_slaves'pos(tops_dev)), + master_i => dev_bus_slave_o (c_devm_top), + master_o => dev_bus_slave_i (c_devm_top)); + + dev2top_msi : xwb_register_link + generic map( + g_wb_adapter => false) + port map( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_msi_master_o(c_devm_top), + slave_o => dev_msi_master_i(c_devm_top), + master_i => top_msi_slave_o (top_slaves'pos(tops_dev)), + master_o => top_msi_slave_i (top_slaves'pos(tops_dev))); + + top2wrc_bus : xwb_register_link + generic map( + g_wb_adapter => false) + port map( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => top_bus_master_o(top_slaves'pos(tops_wr_fast_path)), + slave_o => top_bus_master_i(top_slaves'pos(tops_wr_fast_path)), + master_i => wrc_slave_o, + master_o => wrc_slave_i); + + top2wrc_aux_bus : xwb_register_link + generic map( + g_wb_adapter => false) + port map( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => top_bus_master_o(top_slaves'pos(tops_wr_aux_fast_path)), + slave_o => top_bus_master_i(top_slaves'pos(tops_wr_aux_fast_path)), + master_i => wrc_aux_slave_o, + master_o => wrc_aux_slave_i); + + -- END OF Wishbone crossbars + ---------------------------------------------------------------------------------- + + ---------------------------------------------------------------------------------- + -- Top Wishbone masters ---------------------------------------------------------- + + top_msi_master_i(top_my_masters'pos(topm_ebs)) <= cc_dummy_slave_out; -- Etherbone does not accept MSI !!! + eb : eb_master_slave_wrapper + generic map( + g_with_master => true, + g_ebs_sdb_address => (x"00000000" & c_top_sdb_address)) + port map( + clk_i => clk_sys, + nRst_i => rstn_sys, + snk_i => eb_snk_in, + snk_o => eb_snk_out, + src_o => eb_src_out, + src_i => eb_src_in, + ebs_cfg_slave_o => wrc_master_i, + ebs_cfg_slave_i => wrc_master_o, + ebs_wb_master_o => top_bus_slave_i (top_my_masters'pos(topm_ebs)), + ebs_wb_master_i => top_bus_slave_o (top_my_masters'pos(topm_ebs)), + ebm_wb_slave_i => top_bus_master_o(top_slaves'pos(tops_ebm)), + ebm_wb_slave_o => top_bus_master_i(top_slaves'pos(tops_ebm))); + + + lm32 : ftm_lm32_cluster + generic map( + g_is_dm => g_lm32_are_ftm, + g_delay_diagnostics => g_delay_diagnostics, + g_cores => g_lm32_cores, + g_ram_per_core => g_lm32_ramsizes, + g_world_bridge_sdb => c_top_bridge_sdb, + g_clu_msi_sdb => c_dev_bridge_msi, + g_init_files => g_lm32_init_files, + g_en_timer => g_en_timer, + g_profiles => g_lm32_profiles) + port map( + clk_ref_i => clk_ref, + rst_ref_n_i => rstn_ref, + clk_sys_i => clk_sys, + rst_sys_n_i => rstn_sys, + rst_lm32_n_i => s_lm32_rstn, + tm_tai8ns_i => s_time, + wr_lock_i => tm_valid, + lm32_masters_o => top_bus_slave_i(top_bus_slave_i'high downto c_top_my_masters), + lm32_masters_i => top_bus_slave_o(top_bus_slave_o'high downto c_top_my_masters), + lm32_msi_slaves_o => top_msi_master_i(top_msi_master_i'high downto c_top_my_masters), + lm32_msi_slaves_i => top_msi_master_o(top_msi_master_o'high downto c_top_my_masters), + clu_slave_o => dev_bus_master_i(dev_slaves'pos(devs_ftm_cluster)), + clu_slave_i => dev_bus_master_o(dev_slaves'pos(devs_ftm_cluster)), + clu_msi_master_o => dev_msi_slave_i(dev_slaves'pos(devs_ftm_cluster)), + clu_msi_master_i => dev_msi_slave_o(dev_slaves'pos(devs_ftm_cluster)), + dm_prioq_master_o => top_bus_slave_i(top_my_masters'pos(topm_prioq)), + dm_prioq_master_i => top_bus_slave_o(top_my_masters'pos(topm_prioq))); + + pcie_n : if not g_en_pcie generate + top_bus_slave_i (top_my_masters'pos(topm_pcie)) <= cc_dummy_master_out; + top_msi_master_i(top_my_masters'pos(topm_pcie)) <= cc_dummy_slave_out; + end generate; + pcie_y : if g_en_pcie generate + pcie : pcie_wb + generic map( + g_family => g_family, + sdb_addr => c_top_sdb_address) + port map( + clk125_i => core_clk_125m_local_i, + cal_clk50_i => clk_reconf, + pcie_refclk_i => pcie_refclk_i, + pcie_rstn_i => pcie_rstn_i, + pcie_rx_i => pcie_rx_i, + pcie_tx_o => pcie_tx_o, + master_clk_i => clk_sys, + master_rstn_i => rstn_sys, + master_o => top_bus_slave_i (top_my_masters'pos(topm_pcie)), + master_i => top_bus_slave_o (top_my_masters'pos(topm_pcie)), + slave_clk_i => clk_sys, + slave_rstn_i => rstn_sys, + slave_i => top_msi_master_o(top_my_masters'pos(topm_pcie)), + slave_o => top_msi_master_i(top_my_masters'pos(topm_pcie))); + end generate; + + pmc_n : if not g_en_pmc generate + top_bus_slave_i (top_my_masters'pos(topm_pmc)) <= cc_dummy_master_out; + top_msi_master_i(top_my_masters'pos(topm_pmc)) <= cc_dummy_slave_out; + end generate; + pmc_y : if g_en_pmc generate + signal s_pmc_debug_in : std_logic_vector(15 downto 0); + signal s_pmc_debug_out : std_logic_vector(15 downto 0); + begin + pmc : wb_pmc_host_bridge + generic map( + g_family => g_family, + g_sdb_addr => c_top_sdb_address + ) + port map( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + + master_clk_i => clk_sys, + master_rstn_i => rstn_sys, + slave_clk_i => clk_sys, + slave_rstn_i => rstn_sys, + master_o => top_bus_slave_i (top_my_masters'pos(topm_pmc)), + master_i => top_bus_slave_o (top_my_masters'pos(topm_pmc)), + slave_i => top_msi_master_o(top_my_masters'pos(topm_pmc)), + slave_o => top_msi_master_i(top_my_masters'pos(topm_pmc)), + pci_clk_i => pci_clk_global, + pci_rst_i => pmc_pci_rst_i, + buf_oe_o => pmc_buf_oe_o, + busmode_io => pmc_busmode_io, + ad_io => pmc_ad_io, + c_be_io => pmc_c_be_io, + par_io => pmc_par_io, + frame_io => pmc_frame_io, + trdy_io => pmc_trdy_io, + irdy_io => pmc_irdy_io, + stop_io => pmc_stop_io, + devsel_io => pmc_devsel_io, + idsel_i => pmc_idsel_i, + perr_io => pmc_perr_io, + serr_io => pmc_serr_io, + inta_o => pmc_inta_o, + req_o => pmc_req_o, + gnt_i => pmc_gnt_i, + debug_i => s_pmc_debug_in, + debug_o => s_pmc_debug_out + ); + + core_debug_o <= s_pmc_debug_out; + s_pmc_debug_in(15 downto 0) <= (others => '0'); + + pci_clk_buf : global_region + port map( + inclk => pmc_pci_clk_i, + outclk => pci_clk_global + ); + +end generate; + + + vme_n : if not g_en_vme generate + top_bus_slave_i (top_my_masters'pos(topm_vme)) <= cc_dummy_master_out; + top_msi_master_i(top_my_masters'pos(topm_vme)) <= cc_dummy_slave_out; + dev_bus_master_i(dev_slaves'pos(devs_vme_info)) <= cc_dummy_slave_out; + vme_addr_data_b <= (others => 'Z'); + end generate; + vme_y : if g_en_vme generate + + U_VME64 : xVME64xCore_Top + generic map( + g_clock => 62, + g_wb_data_width => 32, + g_wb_addr_width => 32, + g_cram_size => c_CRAM_SIZE, -- 1024 + g_BoardID => c_VETAR_ID, -- 0x00000199 + g_ManufacturerID => c_GSI_ID, -- 0x080031 + g_RevisionID => c_RevisionID, -- 0x1 + g_ProgramID => 96, -- 0x60 + g_base_addr => MECHANICALLY, + g_sdb_addr => c_top_sdb_address, + g_irq_src => MSI) + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + vme_as_n_i => vme_as_n_i, + vme_rst_n_i => vme_rst_n_i, + vme_write_n_i => vme_write_n_i, + vme_am_i => vme_am_i, + vme_ds_n_i => vme_ds_n_i, + vme_ga_i => "000000",--b"00" & vme_ga_i, + vme_berr_o => s_vme_berr_o, + vme_dtack_n_o => s_vme_dtack_n_o, + vme_retry_n_o => open, + vme_lword_n_i => s_vme_lword_n_i, + vme_lword_n_o => s_vme_lword_n_o, + vme_addr_i => vme_addr_data_b(31 downto 1), + vme_addr_o => s_vme_addr_o, + vme_data_i => vme_addr_data_b, + vme_data_o => s_vme_data_o, + vme_irq_o => vme_irq_n_o, + vme_iackin_n_i => vme_iackin_n_i, + vme_iack_n_i => vme_iack_n_i, + vme_iackout_n_o => vme_iackout_n_o, + vme_buffer_o => s_vme_buffer, + vme_retry_oe_o => open, + irq_i => '0', -- => wbirq_i, + int_ack_o => open, -- => s_int_ack, + --reset_o => open, -- => s_rst, + master_o => top_bus_slave_i (top_my_masters'pos(topm_vme)), + master_i => top_bus_slave_o (top_my_masters'pos(topm_vme)), + slave_o => top_msi_master_i(top_my_masters'pos(topm_vme)), + slave_i => top_msi_master_o(top_my_masters'pos(topm_vme)), + info_slave_i => dev_bus_master_o(dev_slaves'pos(devs_vme_info)), + info_slave_o => dev_bus_master_i(dev_slaves'pos(devs_vme_info)), + debug => open); + + U_BUFFER_CTRL : VME_Buffer_ctrl + generic map( + g_bus_mode => LATCHED) + port map( + clk_i => clk_sys, + rst_i => vme_rst_n_i, + buffer_stat_i => s_vme_buffer, + buffer_clk_o => open, + data_buff_v2f_o => vme_data_oe_ab_o, + data_buff_f2v_o => vme_data_oe_ba_o, + addr_buff_v2f_o => vme_addr_oe_ab_o, + addr_buff_f2v_o => vme_addr_oe_ba_o, + dtack_oe_o => s_vme_dtack_oe_o, + latch_buff_o => s_vme_buffer_latch); + + vme_addr_data_b <= + s_vme_data_o when s_vme_buffer.s_buffer_eo = data_buff and s_vme_buffer.s_datadir = fpga2vme else + (s_vme_addr_o & s_vme_lword_n_o) when s_vme_buffer.s_buffer_eo = addr_buff and s_vme_buffer.s_addrdir = fpga2vme else + (others => 'Z'); + + vme_buffer_latch_o <= (others => s_vme_buffer_latch); + s_vme_lword_n_i <= vme_addr_data_b(0); + vme_dtack_oe_o <= s_vme_dtack_n_o when s_vme_dtack_oe_o = '1' else '1'; + vme_berr_o <= not s_vme_berr_o; + + end generate; + + usb_n : if not g_en_usb generate + top_bus_slave_i(top_my_masters'pos(topm_usb)) <= cc_dummy_master_out; + uart_usb <= '1'; + usb_readyn_io <= 'Z'; + usb_fd_io <= (others => 'Z'); + end generate; + usb_y : if g_en_usb generate + usb_readyn_io <= 'Z'; + usb_fd_io <= s_usb_fd_o when s_usb_fd_oen='1' else (others => 'Z'); + usb : ez_usb + generic map( + g_sdb_address => c_top_sdb_address, + g_sys_freq => f_pick(g_simulation, 10, 65000)) -- this is 65000 kHz for g_simulation=false, and 10 kHz for g_simulation=true + port map( + clk_sys_i => clk_sys, + rstn_i => rstn_sys, + master_i => top_bus_slave_o(top_my_masters'pos(topm_usb)), + master_o => top_bus_slave_i(top_my_masters'pos(topm_usb)), + msi_slave_i => top_msi_master_o(top_my_masters'pos(topm_usb)), + msi_slave_o => top_msi_master_i(top_my_masters'pos(topm_usb)), + uart_o => uart_usb, + uart_i => uart_wrc, + rstn_o => usb_rstn_o, + ebcyc_i => usb_ebcyc_i, + speed_i => usb_speed_i, + shift_i => usb_shift_i, + readyn_i => usb_readyn_io, + fifoadr_o => usb_fifoadr_o, + fulln_i => usb_fulln_i, + sloen_o => usb_sloen_o, + emptyn_i => usb_emptyn_i, + slrdn_o => usb_slrdn_o, + slwrn_o => usb_slwrn_o, + pktendn_o => usb_pktendn_o, + fd_i => usb_fd_io, + fd_o => s_usb_fd_o, + fd_oen_o => s_usb_fd_oen); + end generate; + + sdb_dummy_top <= f_report_wishbone_address(c_top_sdb_address, "SDB TOP"); + sdb_dummy_dev <= f_report_wishbone_address(c_dev_sdb_address, "SDB DEV"); + + wr_uart_o <= uart_wrc; + uart_mux <= uart_usb and wr_uart_i; + + -- END OF Wishbone masters + ---------------------------------------------------------------------------------- + + ---------------------------------------------------------------------------------- + -- White Rabbit ------------------------------------------------------------------ + ---------------------------------------------------------------------------------- + + wr_a2 : if c_is_arria2 generate + U_WR_CORE : xwr_core + + generic map ( + g_simulation => 0, + g_with_external_clock_input => FALSE, + g_phys_uart => TRUE, + g_virtual_uart => TRUE, + g_aux_clks => 0, + g_ep_rxbuf_size => 1024, + g_tx_runt_padding => TRUE, + g_records_for_phy => FALSE, + g_pcs_16bit => FALSE, + g_dpram_initf => "../../../ip_cores/wrpc-sw/wrc.mif", + g_dpram_size => c_wrc_size, + g_interface_mode => PIPELINED, + g_address_granularity => BYTE, + g_aux_sdb => c_etherbone_sdb, + g_softpll_enable_debugger => FALSE) + + port map ( + clk_sys_i => clk_sys, + clk_dmtd_i => clk_dmtd, + clk_ref_i => clk_ref, + clk_aux_i => (others => '0'), + --clk_ext_i => wr_ext_clk_i, + --clk_ext_mul_i => clk_ext_mul_i, + --clk_ext_mul_locked_i => clk_ext_mul_locked_i, + --clk_ext_stopped_i => '0, + --clk_ext_rst_o => open, + pps_ext_i => wr_ext_pps_i, + rst_n_i => rstn_sys, + dac_hpll_load_p1_o => dac_hpll_load_p1, + dac_hpll_data_o => dac_hpll_data, + dac_dpll_load_p1_o => dac_dpll_load_p1, + dac_dpll_data_o => dac_dpll_data, + phy_rdy_i => '1', + phy_loopen_vec_o => open, + phy_tx_prbs_sel_o => open, + phy_sfp_tx_fault_i => '0', + phy_sfp_los_i => '0', + phy_sfp_tx_disable_o => open, + phy_ref_clk_i => phy_tx_clk, + phy_tx_data_o => phy_tx_data, + phy_tx_k_o => phy_tx_k, + phy_tx_disparity_i => phy_tx_disparity, + phy_tx_enc_err_i => phy_tx_enc_err, + phy_rx_data_i => phy_rx_data, + phy_rx_rbclk_i => phy_rx_rbclk, + phy_rx_k_i => phy_rx_k, + phy_rx_enc_err_i => phy_rx_enc_err, + phy_rx_bitslide_i => phy_rx_bitslide, + phy_rst_o => phy_rst, + phy_loopen_o => phy_loopen, + phy8_o => phy8_i, + phy8_i => phy8_o, + phy16_o => phy16_i, + phy16_i => phy16_o, + led_act_o => link_act, + led_link_o => link_up, + scl_o => open, -- Our ROM is on onewire, not i2c + scl_i => '0', + sda_i => '0', + sda_o => open, + sfp_scl_i => wr_sfp_scl_io, + sfp_sda_i => wr_sfp_sda_io, + sfp_scl_o => sfp_scl_o, + sfp_sda_o => sfp_sda_o, + sfp_det_i => wr_sfp_det_i, + btn1_i => '0', + btn2_i => '0', + uart_rxd_i => uart_mux, + uart_txd_o => uart_wrc, + owr_pwren_o => owr_pwren, + owr_en_o => owr_en, + owr_i(0) => wr_onewire_io, + owr_i(1) => '0', + slave_i => wrc_slave_i, + slave_o => wrc_slave_o, + aux_master_o => wrc_master_o, + aux_master_i => wrc_master_i, + wrf_src_o => eb_snk_in, + wrf_src_i => eb_snk_out, + wrf_snk_o => eb_src_in, + wrf_snk_i => eb_src_out, + tm_link_up_o => open, + tm_dac_value_o => open, + tm_dac_wr_o => open, + tm_clk_aux_lock_en_i => (others => '0'), + tm_clk_aux_locked_o => open, + tm_time_valid_o => tm_valid, + tm_tai_o => tm_tai, + tm_cycles_o => tm_cycles, + pps_p_o => pps, + --dio_o => open, + rst_aux_n_o => open, + link_ok_o => s_link_ok); + end generate; + + wr_a5 : if c_is_arria5 generate + U_WR_CORE : xwr_core + + generic map ( + g_simulation => 0, + g_with_external_clock_input => FALSE, + g_phys_uart => TRUE, + g_virtual_uart => TRUE, + g_aux_clks => 0, + g_ep_rxbuf_size => 1024, + g_tx_runt_padding => TRUE, + g_records_for_phy => FALSE, + g_pcs_16bit => FALSE, + g_dpram_initf => "../../../ip_cores/wrpc-sw/wrc.mif", + g_dpram_size => c_wrc_size, + g_interface_mode => PIPELINED, + g_address_granularity => BYTE, + g_aux_sdb => c_etherbone_sdb, + g_softpll_enable_debugger => FALSE) + + port map ( + clk_sys_i => clk_sys, + clk_dmtd_i => clk_dmtd, + clk_ref_i => clk_ref, + clk_aux_i => (others => '0'), + --clk_ext_i => wr_ext_clk_i, + --clk_ext_mul_i => clk_ext_mul_i, + --clk_ext_mul_locked_i => clk_ext_mul_locked_i, + --clk_ext_stopped_i => '0, + --clk_ext_rst_o => open, + pps_ext_i => wr_ext_pps_i, + rst_n_i => rstn_sys, + dac_hpll_load_p1_o => dac_hpll_load_p1, + dac_hpll_data_o => dac_hpll_data, + dac_dpll_load_p1_o => dac_dpll_load_p1, + dac_dpll_data_o => dac_dpll_data, + phy_rdy_i => '1', + phy_loopen_vec_o => open, + phy_tx_prbs_sel_o => open, + phy_sfp_tx_fault_i => '0', + phy_sfp_los_i => '0', + phy_sfp_tx_disable_o => open, + phy_ref_clk_i => phy_tx_clk, + phy_tx_data_o => phy_tx_data, + phy_tx_k_o => phy_tx_k, + phy_tx_disparity_i => phy_tx_disparity, + phy_tx_enc_err_i => phy_tx_enc_err, + phy_rx_data_i => phy_rx_data, + phy_rx_rbclk_i => phy_rx_rbclk, + phy_rx_k_i => phy_rx_k, + phy_rx_enc_err_i => phy_rx_enc_err, + phy_rx_bitslide_i => phy_rx_bitslide, + phy_rst_o => phy_rst, + phy_loopen_o => phy_loopen, + phy8_o => phy8_i, + phy8_i => phy8_o, + phy16_o => phy16_i, + phy16_i => phy16_o, + led_act_o => link_act, + led_link_o => link_up, + scl_o => open, -- Our ROM is on onewire, not i2c + scl_i => '0', + sda_i => '0', + sda_o => open, + sfp_scl_i => wr_sfp_scl_io, + sfp_sda_i => wr_sfp_sda_io, + sfp_scl_o => sfp_scl_o, + sfp_sda_o => sfp_sda_o, + sfp_det_i => wr_sfp_det_i, + btn1_i => '0', + btn2_i => '0', + uart_rxd_i => uart_mux, + uart_txd_o => uart_wrc, + owr_pwren_o => owr_pwren, + owr_en_o => owr_en, + owr_i(0) => wr_onewire_io, + owr_i(1) => '0', + slave_i => wrc_slave_i, + slave_o => wrc_slave_o, + aux_master_o => wrc_master_o, + aux_master_i => wrc_master_i, + wrf_src_o => eb_snk_in, + wrf_src_i => eb_snk_out, + wrf_snk_o => eb_src_in, + wrf_snk_i => eb_src_out, + tm_link_up_o => open, + tm_dac_value_o => open, + tm_dac_wr_o => open, + tm_clk_aux_lock_en_i => (others => '0'), + tm_clk_aux_locked_o => open, + tm_time_valid_o => tm_valid, + tm_tai_o => tm_tai, + tm_cycles_o => tm_cycles, + pps_p_o => pps, + --dio_o => open, + rst_aux_n_o => open, + link_ok_o => s_link_ok); + end generate; + + wr_a10 : if c_is_arria10 generate + U_WR_CORE : xwr_core + + generic map ( + g_simulation => 0, + g_with_external_clock_input => FALSE, + g_phys_uart => TRUE, + g_virtual_uart => TRUE, + g_aux_clks => 0, + g_ep_rxbuf_size => 1024, + g_tx_runt_padding => TRUE, + g_records_for_phy => FALSE, + g_pcs_16bit => FALSE, + g_dpram_initf => "../../../ip_cores/wrpc-sw/wrc.mif", + g_dpram_size => c_wrc_size, + g_interface_mode => PIPELINED, + g_address_granularity => BYTE, + g_aux_sdb => c_etherbone_sdb, + g_softpll_enable_debugger => FALSE) + + port map ( + clk_sys_i => clk_sys, + clk_dmtd_i => clk_dmtd, + clk_ref_i => clk_ref, + clk_aux_i => (others => '0'), + --clk_ext_i => wr_ext_clk_i, + --clk_ext_mul_i => clk_ext_mul_i, + --clk_ext_mul_locked_i => clk_ext_mul_locked_i, + --clk_ext_stopped_i => '0, + --clk_ext_rst_o => open, + pps_ext_i => wr_ext_pps_i, + rst_n_i => rstn_sys, + dac_hpll_load_p1_o => dac_hpll_load_p1, + dac_hpll_data_o => dac_hpll_data, + dac_dpll_load_p1_o => dac_dpll_load_p1, + dac_dpll_data_o => dac_dpll_data, + phy_rdy_i => '1', + phy_loopen_vec_o => open, + phy_tx_prbs_sel_o => open, + phy_sfp_tx_fault_i => '0', + phy_sfp_los_i => '0', + phy_sfp_tx_disable_o => open, + phy_ref_clk_i => phy_tx_clk, + phy_tx_data_o => phy_tx_data, + phy_tx_k_o => phy_tx_k, + phy_tx_disparity_i => phy_tx_disparity, + phy_tx_enc_err_i => phy_tx_enc_err, + phy_rx_data_i => phy_rx_data, + phy_rx_rbclk_i => phy_rx_rbclk, + phy_rx_k_i => phy_rx_k, + phy_rx_enc_err_i => phy_rx_enc_err, + phy_rx_bitslide_i => phy_rx_bitslide, + phy_rst_o => phy_rst, + phy_loopen_o => phy_loopen, + phy8_o => phy8_i, + phy8_i => phy8_o, + phy16_o => phy16_i, + phy16_i => phy16_o, + led_act_o => link_act, + led_link_o => link_up, + scl_o => open, -- Our ROM is on onewire, not i2c + scl_i => '0', + sda_i => '0', + sda_o => open, + sfp_scl_i => wr_sfp_scl_io, + sfp_sda_i => wr_sfp_sda_io, + sfp_scl_o => sfp_scl_o, + sfp_sda_o => sfp_sda_o, + sfp_det_i => wr_sfp_det_i, + btn1_i => '0', + btn2_i => '0', + uart_rxd_i => uart_mux, + uart_txd_o => uart_wrc, + owr_pwren_o => owr_pwren, + owr_en_o => owr_en, + owr_i(0) => wr_onewire_io, + owr_i(1) => '0', + slave_i => wrc_slave_i, + slave_o => wrc_slave_o, + aux_master_o => wrc_master_o, + aux_master_i => wrc_master_i, + wrf_src_o => eb_snk_in, + wrf_src_i => eb_snk_out, + wrf_snk_o => eb_src_in, + wrf_snk_i => eb_src_out, + tm_link_up_o => open, + tm_dac_value_o => open, + tm_dac_wr_o => open, + tm_clk_aux_lock_en_i => (others => '0'), + tm_clk_aux_locked_o => open, + tm_time_valid_o => tm_valid, + tm_tai_o => tm_tai, + tm_cycles_o => tm_cycles, + pps_p_o => pps, + --dio_o => open, + rst_aux_n_o => open, + link_ok_o => s_link_ok); + end generate; + + dual_port_wr_core : if g_dual_port_wr generate + wr_a10 : if c_is_arria10 generate + U_WR_CORE : xwr_core + + generic map ( + g_simulation => 0, + g_with_external_clock_input => FALSE, + g_phys_uart => TRUE, + g_virtual_uart => TRUE, + g_aux_clks => 0, + g_ep_rxbuf_size => 1024, + g_tx_runt_padding => TRUE, + g_records_for_phy => FALSE, + g_pcs_16bit => FALSE, + g_dpram_initf => "../../../ip_cores/wrpc-sw/wrc.mif", + g_dpram_size => c_wrc_size, + g_interface_mode => PIPELINED, + g_address_granularity => BYTE, + g_aux_sdb => c_etherbone_sdb, + g_softpll_enable_debugger => FALSE) + + port map ( + clk_sys_i => clk_sys, + clk_dmtd_i => clk_dmtd, + clk_ref_i => clk_ref, + clk_aux_i => (others => '0'), + pps_ext_i => wr_ext_pps_i, + rst_n_i => rstn_sys, + dac_hpll_load_p1_o => dac_hpll_load_p1_aux, + dac_hpll_data_o => dac_hpll_data_aux, + dac_dpll_load_p1_o => dac_dpll_load_p1_aux, + dac_dpll_data_o => dac_dpll_data_aux, + phy_rdy_i => '1', + phy_loopen_vec_o => open, + phy_sfp_tx_fault_i => '0', + phy_tx_prbs_sel_o => open, + phy_sfp_los_i => '0', + phy_sfp_tx_disable_o => open, + phy_ref_clk_i => phy_aux_tx_clk, + phy_tx_data_o => phy_aux_tx_data, + phy_tx_k_o => phy_aux_tx_k, + phy_tx_disparity_i => phy_aux_tx_disparity, + phy_tx_enc_err_i => phy_aux_tx_enc_err, + phy_rx_data_i => phy_aux_rx_data, + phy_rx_rbclk_i => phy_aux_rx_rbclk, + phy_rx_k_i => phy_aux_rx_k, + phy_rx_enc_err_i => phy_aux_rx_enc_err, + phy_rx_bitslide_i => phy_aux_rx_bitslide, + phy_rst_o => phy_aux_rst, + phy_loopen_o => phy_aux_loopen, + phy8_o => phy8_aux_i, + phy8_i => phy8_aux_o, + phy16_o => phy16_aux_i, + phy16_i => phy16_aux_o, + led_act_o => link_act_aux, + led_link_o => link_up_aux, + sfp_scl_i => wr_sfp_scl_io, + sfp_sda_i => wr_sfp_sda_io, + sfp_scl_o => sfp_aux_scl_o, + sfp_sda_o => sfp_aux_sda_o, + sfp_det_i => wr_aux_sfp_det_i, + btn1_i => '0', + btn2_i => '0', + uart_rxd_i => uart_aux_mux, + uart_txd_o => uart_aux_wrc, + --owr_pwren_o => owr_pwren, + --owr_en_o => owr_en, + --owr_i(0) => wr_onewire_io, + --owr_i(1) => '0', + --slave_i => wrc_slave_i, + --slave_o => wrc_slave_o, + --aux_master_o => wrc_master_o, + --aux_master_i => wrc_master_i, + --wrf_src_o => eb_snk_in, + --wrf_src_i => eb_snk_out, + --wrf_snk_o => eb_src_in, + --wrf_snk_i => eb_src_out, + tm_link_up_o => open, + tm_dac_value_o => open, + tm_dac_wr_o => open, + tm_clk_aux_lock_en_i => (others => '0'), + tm_clk_aux_locked_o => open, + tm_time_valid_o => open, + tm_tai_o => open, + tm_cycles_o => open, + pps_p_o => pps_aux, + rst_aux_n_o => open, + link_ok_o => s_link_ok); + end generate; +end generate; + + U_DAC_ARB : spec_serial_dac_arb + generic map ( + g_invert_sclk => false, + g_num_extra_bits => 8) -- AD DACs with 24bit interface + port map ( + clk_i => clk_sys, + rst_n_i => rstn_sys, + val1_i => dac_dpll_data, + load1_i => dac_dpll_load_p1, + val2_i => dac_hpll_data, + load2_i => dac_hpll_load_p1, + dac_cs_n_o(0) => wr_ndac_cs_o(1), + dac_cs_n_o(1) => wr_ndac_cs_o(2), + dac_clr_n_o => open, + dac_sclk_o => wr_dac_sclk_o, + dac_din_o => wr_dac_din_o); + + drop_link <= (phy_rst or wbar_phy_rst); + phy_a2 : if c_is_arria2 generate + phy : wr_arria2_phy + port map ( + clk_reconf_i => clk_reconf, + clk_pll_i => clk_ref0, -- PLL cascade + clk_cru_i => core_clk_125m_sfpref_i, + clk_free_i => clk_free, + rst_i => pll_rst, + locked_o => phy_ready, + loopen_i => phy_loopen, + drop_link_i => drop_link, + tx_clk_i => clk_ref, + tx_data_i => phy_tx_data, + tx_k_i => phy_tx_k(0), + tx_disparity_o => phy_tx_disparity, + tx_enc_err_o => phy_tx_enc_err, + rx_rbclk_o => phy_rx_rbclk, + rx_data_o => phy_rx_data, + rx_k_o => phy_rx_k(0), + rx_enc_err_o => phy_rx_enc_err, + rx_bitslide_o => phy_rx_bitslide, + pad_txp_o => wr_sfp_tx_o, + pad_rxp_i => wr_sfp_rx_i); + + phy_tx_clk <= clk_ref; + end generate; + + phy_a5 : if c_is_arria5 generate + phy : wr_arria5_phy + generic map ( + g_pcs_16bit => g_pcs_16bit) + port map ( + clk_reconf_i => clk_reconf, + clk_phy_i => phy_clk, + ready_o => phy_ready, + loopen_i => phy_loopen, + drop_link_i => drop_link, + tx_clk_o => open, + tx_data_i => phy_tx_data, + tx_k_i => phy_tx_k, + tx_disparity_o => phy_tx_disparity, + tx_enc_err_o => phy_tx_enc_err, + rx_rbclk_o => phy_rx_rbclk, + rx_data_o => phy_rx_data, + rx_k_o => phy_rx_k, + rx_enc_err_o => phy_rx_enc_err, + rx_bitslide_o => phy_rx_bitslide, + pad_txp_o => wr_sfp_tx_o, + pad_rxp_i => wr_sfp_rx_i); + + phy_tx_clk <= clk_ref; + end generate phy_a5; + + phy_a10 : if c_is_arria10 generate + phy : wr_arria10_transceiver + generic map ( + g_family => g_family, + g_use_atx_pll => false, + g_use_cmu_pll => true, + g_use_simple_wa => true, + g_use_det_phy => true, + g_use_sfp_los_rst => true, + g_use_tx_lcr_dbg => false, + g_use_rx_lcr_dbg => false, + g_use_ext_loop => true, + g_use_ext_rst => true) + port map ( + clk_ref_i => clk_ref, + clk_phy_i => phy_clk, + reconfig_write_i => reconfig_write, + reconfig_read_i => reconfig_read, + reconfig_address_i => reconfig_address, + reconfig_writedata_i => reconfig_writedata, + reconfig_readdata_o => reconfig_readdata, + reconfig_waitrequest_o => reconfig_waitrequest, + reconfig_clk_i(0) => clk_sys, + reconfig_reset_i(0) => rst_sys, + ready_o => phy_ready, + drop_link_i => drop_link, + loopen_i => phy_loopen, + sfp_los_i => sfp_los_i, + tx_clk_o => phy_tx_clk, + tx_data_i => phy_tx_data, + tx_disparity_o => phy_tx_disparity, + tx_enc_err_o => phy_tx_enc_err, + tx_data_k_i => phy_tx_k(0), + rx_clk_o => phy_rx_rbclk, + rx_data_o => phy_rx_data, + rx_data_k_o => phy_rx_k(0), + rx_enc_err_o => phy_rx_enc_err, + rx_bitslide_o => phy_rx_bitslide, + debug_o => phy_debug_o, + debug_i => phy_debug_i, + pad_txp_o => wr_sfp_tx_o, + pad_rxp_i => wr_sfp_rx_i); + phy_rx_ready_o <= phy_ready; + phy_tx_ready_o <= phy_ready and not(phy_tx_enc_err); + end generate phy_a10; + rst_sys <= not rstn_sys; + + dual_port_wr : if g_dual_port_wr generate + phy_aux_a10 : if c_is_arria10 generate + phy_aux : wr_arria10_transceiver + generic map ( + g_family => g_family, + g_use_atx_pll => false, + g_use_cmu_pll => true, + g_use_simple_wa => true, + g_use_det_phy => true, + g_use_sfp_los_rst => true, + g_use_tx_lcr_dbg => false, + g_use_rx_lcr_dbg => false, + g_use_ext_loop => true, + g_use_ext_rst => true) + port map ( + clk_ref_i => clk_ref, + clk_phy_i => phy_clk, + reconfig_write_i => (others => '0'), + reconfig_read_i => (others => '0'), + reconfig_address_i => (others => '0'), + reconfig_writedata_i => (others => '0'), + reconfig_readdata_o => open, + reconfig_waitrequest_o => open, + reconfig_clk_i(0) => clk_sys, + reconfig_reset_i(0) => rst_sys, + ready_o => phy_aux_ready, + drop_link_i => phy_aux_rst, + loopen_i => phy_aux_loopen, + sfp_los_i => sfp_aux_los_i, + tx_clk_o => phy_aux_tx_clk, + tx_data_i => phy_aux_tx_data, + tx_disparity_o => phy_aux_tx_disparity, + tx_enc_err_o => phy_aux_tx_enc_err, + tx_data_k_i => phy_aux_tx_k(0), + rx_clk_o => phy_aux_rx_rbclk, + rx_data_o => phy_aux_rx_data, + rx_data_k_o => phy_aux_rx_k(0), + rx_enc_err_o => phy_aux_rx_enc_err, + rx_bitslide_o => phy_aux_rx_bitslide, + pad_txp_o => wr_aux_sfp_tx_o, + pad_rxp_i => wr_aux_sfp_rx_i); + phy_aux_rx_ready_o <= phy_aux_ready; + phy_aux_tx_ready_o <= phy_aux_ready and not(phy_aux_tx_enc_err); + end generate phy_aux_a10; + end generate dual_port_wr; + + phy_clk <= core_clk_125m_sfpref_i; + phy16_o <= c_dummy_phy16_to_wrc; + phy8_o <= c_dummy_phy8_to_wrc; + + a10_en_phy_reconf_n : if not g_a10_en_phy_reconf generate + dev_bus_master_i(dev_slaves'pos(devs_a10_phy_reconf)) <= cc_dummy_slave_out; + + reconfig_write(0) <= '0'; + reconfig_read(0) <= '0'; + reconfig_address <= (others => '0'); + reconfig_writedata <= (others => '0'); + end generate; + a10_en_phy_reconf_y : if g_a10_en_phy_reconf generate + cpri_phy_reconf_inst : cpri_phy_reconf + port map ( + clk_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_a10_phy_reconf)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_a10_phy_reconf)), + reconfig_write_o => reconfig_write(0), + reconfig_read_o => reconfig_read(0), + reconfig_address_o(9 downto 0) => reconfig_address, + reconfig_address_o(31 downto 10) => reconfig_address_dump, + reconfig_writedata_o => reconfig_writedata, + reconfig_readdata_i => reconfig_readdata, + reconfig_waitrequest_i => reconfig_waitrequest); + end generate; + + pps_ext : gc_extend_pulse + generic map( + g_width => 10000000) + port map( + clk_i => clk_ref, + rst_n_i => rstn_ref, + pulse_i => pps, + extended_o => ext_pps); + + wr_onewire_io <= owr_pwren(0) when (owr_pwren(0) = '1' or owr_en(0) = '1') else 'Z'; + wr_sfp_scl_io <= '0' when sfp_scl_o = '0' else 'Z'; + wr_sfp_sda_io <= '0' when sfp_sda_o = '0' else 'Z'; + + wr_aux_sfp_scl_io <= '0' when sfp_aux_scl_o = '0' else 'Z'; + wr_aux_sfp_sda_io <= '0' when sfp_aux_sda_o = '0' else 'Z'; + + led_link_up_o <= link_up; + led_link_act_o <= link_act; + led_track_o <= tm_valid; + led_pps_o <= ext_pps; + + led_aux_link_up_o <= link_up_aux; + led_aux_link_act_o <= link_act_aux; + led_aux_track_o <= tm_valid_aux; + led_aux_pps_o <= ext_pps_aux; + + -- END OF White Rabbit + ---------------------------------------------------------------------------------- + + ---------------------------------------------------------------------------------- + -- Wishbone slaves --------------------------------------------------------------- + ---------------------------------------------------------------------------------- + + id : build_id + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_build_id)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_build_id))); + + dog : watchdog + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_watchdog)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_watchdog))); + + mailbox : mbox + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + bus_slave_i => top_bus_master_o(top_slaves'pos(tops_mbox)), + bus_slave_o => top_bus_master_i(top_slaves'pos(tops_mbox)), + msi_master_o => top_msi_slave_i (top_slaves'pos(tops_mbox)), + msi_master_i => top_msi_slave_o (top_slaves'pos(tops_mbox))); + + flash_a2 : if c_is_arria2 generate + flash : flash_top + generic map( + g_family => "Arria II GX", + g_port_width => 1, -- single-lane SPI bus + g_addr_width => g_flash_bits, + g_dummy_time => 8, -- 8 cycles between address and data + g_input_latch_edge => '0', -- 30ns at 50MHz (10+20) after falling edge sets up SPI output + g_output_latch_edge => '1', -- falling edge to meet SPI setup times + g_input_to_output_cycles => 4) -- delayed to work-around unconstrained design + port map( + clk_i => clk_sys, + rstn_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_flash)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_flash)), + clk_ext_i => clk_flash_ext, + clk_out_i => clk_flash_out, + clk_in_i => clk_flash_in); + end generate; + + flash_a5 : if c_is_arria5 generate + flash : flash_top + generic map( + g_family => "Arria V", + g_port_width => 4, -- quad-lane SPI bus + g_addr_width => g_flash_bits, + g_dummy_time => 10, + g_input_latch_edge => '0', + g_output_latch_edge => '1', + g_input_to_output_cycles => 4) + port map( + clk_i => clk_sys, + rstn_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_flash)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_flash)), + clk_ext_i => clk_flash_ext, + clk_out_i => clk_flash_ext, + clk_in_i => clk_flash_ext); + end generate; + + wb_reset : wb_arria_reset + generic map( + arria_family => g_family, + rst_channels => g_lm32_cores, + clk_in_hz => 62_500_000, + en_wd_tmr => g_en_wd_tmr) + port map( + clk_sys_i => clk_sys, + rstn_sys_i => rstn_sys, + clk_upd_i => clk_update, + rstn_upd_i => rstn_update, + hw_version => hw_version, + slave_o => dev_bus_master_i(dev_slaves'pos(devs_reset)), + slave_i => dev_bus_master_o(dev_slaves'pos(devs_reset)), + phy_rst_o => wbar_phy_rst, + phy_aux_rst_o => wbar_phy_aux_rst, + phy_dis_o => wbar_phy_dis, + phy_aux_dis_o => wbar_phy_aux_dis, + rstn_o => s_lm32_rstn); + + wbar_phy_dis_o <= wbar_phy_dis; + wbar_phy_aux_dis_o <= wbar_phy_aux_dis; + + iocontrol : io_control + generic map( + g_project => g_project, + g_syn_target => g_family, + g_gpio_in => g_gpio_in, + g_gpio_out => g_gpio_out, + g_gpio_inout => g_gpio_inout, + g_lvds_in => g_lvds_in, + g_lvds_out => g_lvds_out, + g_lvds_inout => g_lvds_inout, + g_fixed => g_fixed, + g_io_table => g_io_table) + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + gpio_input_i => gpio_i(f_sub1(g_gpio_in+g_gpio_inout) downto 0), + gpio_output_i => s_gpio_out, + gpio_output_o => s_gpio_src_ioc, + lvds_input_i => s_lvds_vec_i(f_sub1(g_lvds_in+g_lvds_inout) downto 0), + lvds_output_i => lvds_dat, + lvds_output_o => lvds_dat_fr_ioc, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_control)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_control)), + gpio_oe_o => gpio_oen_o, + gpio_term_o => gpio_term_o, + gpio_spec_out_o => gpio_spec_out_o, + gpio_spec_in_o => gpio_spec_in_o, + gpio_mux_o => s_gpio_mux, + gpio_out_gate_o => s_gpio_out_gate, + gpio_in_gate_o => s_gpio_in_gate, + gpio_pps_mux_o => s_gpio_pps_mux, + lvds_oe_o => lvds_oen_o, + lvds_term_o => lvds_term_o, + lvds_spec_out_o => lvds_spec_out_o, + lvds_spec_in_o => lvds_spec_in_o, + lvds_mux_o => s_lvds_mux, + lvds_out_gate_o => s_lvds_out_gate, + lvds_in_gate_o => s_lvds_in_gate, + lvds_pps_mux_o => s_lvds_pps_mux); + + lvds_vec_in_zero : if (g_lvds_inout + g_lvds_in = 0) generate + s_lvds_vec_i <= (others => (others => '0')); + end generate; + + lvds_vec_in : if (g_lvds_inout + g_lvds_in > 0) generate + s_lvds_vec_i <= lvds_i(f_sub1(g_lvds_in+g_lvds_inout) downto 0); + end generate; + + gpio_out_selector : for i in 0 to f_sub1(c_eca_gpio) generate + s_gpio_src_butis_t0(i) <= '0' when s_gpio_mux(i)='0' else clk_butis_t0_ts; + end generate; + + gpio_pps_selector : for i in 0 to f_sub1(c_eca_gpio) generate + s_gpio_src_wr_pps(i) <= '0' when s_gpio_pps_mux(i)='0' else ext_pps; + end generate; + + s_gpio_out <= s_gpio_src_eca or s_gpio_src_ioc or s_gpio_src_butis_t0 or s_gpio_src_wr_pps; + process(clk_ref, rstn_ref) + begin + if(rstn_ref = '0') then + s_gpio_out_gated <= (others => '0'); + elsif rising_edge(clk_ref) then + s_gpio_out_gated <= s_gpio_out and s_gpio_out_gate_sync; + end if; + end process; + gpio_o <= s_gpio_out_gated; + + lvds_out_selector : for i in 0 to f_sub1(c_eca_lvds) generate + lvds_dat_fr_butis_t0(i) <= (others => clk_butis_t0_ts and s_lvds_mux(i)); -- !!! This is just a STUB and UNSAFE -> Clock domain crossing 1bit 20MHz <-> 8bit 125MHz + end generate; + + lvds_pps_selector : for i in 0 to f_sub1(c_eca_lvds) generate + lvds_dat_fr_wr_pps(i) <= (others => ext_pps and s_lvds_pps_mux(i)); + end generate; + + -- Instantiate SERDES clock generator + genSerdes : if not g_lm32_are_ftm generate + cmp_serdes_clk_gen : xwb_serdes_clk_gen + generic map( + g_num_serdes_bits => 8, + g_selectable_duty_cycle => true, + g_with_frac_counter => true, + g_num_outputs => f_sub1(c_eca_lvds)+1) + port map( + clk_sys_i => clk_sys, + rst_sys_n_i => rstn_sys, + wbs_i => dev_bus_master_o(dev_slaves'pos(devs_serdes_clk_gen)), + wbs_o => dev_bus_master_i(dev_slaves'pos(devs_serdes_clk_gen)), + clk_ref_i => clk_ref, + rst_ref_n_i => rstn_ref, + eca_time_i => ref_tai8ns, + serdes_dat_o => lvds_dat_fr_clk_gen); + end generate; + + genNoSerdes : if g_lm32_are_ftm generate + lvds_dat_fr_clk_gen <= (others => (others => '0')); + end generate; + + -- LVDS component data input is OR between ECA chan output and SERDES clk. gen. + gen_lvds_dat : for i in lvds_dat'range generate + --lvds_dat(i) <= lvds_dat_fr_eca_chan(i) or lvds_dat_fr_clk_gen(i) or lvds_dat_fr_ioc(i) or lvds_dat_fr_butis_t0(i) or lvds_dat_fr_wr_pps(i); + lvds_dat_combined(i) <= lvds_dat_fr_eca_chan(i) or lvds_dat_fr_clk_gen(i) or lvds_dat_fr_ioc(i) or lvds_dat_fr_butis_t0(i) or lvds_dat_fr_wr_pps(i); + process(clk_ref, rstn_ref) + begin + if(rstn_ref = '0') then + lvds_dat_gated(i) <= (others => '0'); + elsif rising_edge(clk_ref) then + lvds_dat_gated(i)(0) <= lvds_dat_combined(i)(0) and s_lvds_out_gate_sync(i); + lvds_dat_gated(i)(1) <= lvds_dat_combined(i)(1) and s_lvds_out_gate_sync(i); + lvds_dat_gated(i)(2) <= lvds_dat_combined(i)(2) and s_lvds_out_gate_sync(i); + lvds_dat_gated(i)(3) <= lvds_dat_combined(i)(3) and s_lvds_out_gate_sync(i); + lvds_dat_gated(i)(4) <= lvds_dat_combined(i)(4) and s_lvds_out_gate_sync(i); + lvds_dat_gated(i)(5) <= lvds_dat_combined(i)(5) and s_lvds_out_gate_sync(i); + lvds_dat_gated(i)(6) <= lvds_dat_combined(i)(6) and s_lvds_out_gate_sync(i); + lvds_dat_gated(i)(7) <= lvds_dat_combined(i)(7) and s_lvds_out_gate_sync(i); + end if; + end process; + lvds_dat(i) <= lvds_dat_gated(i); + end generate gen_lvds_dat; + --FIXME not sure about those ... do they need initialising when there is no ECA/TLU? => YES! + + -- transparent wire tap on eca events + ecatap : eca_tap + generic map( + g_build_tap => g_en_eca_tap + ) + port map ( + clk_sys_i => clk_sys, + rst_sys_n_i => rstn_sys, + clk_ref_i => clk_ref, + rst_ref_n_i => rstn_ref, + time_ref_i => s_time, + ctrl_o => dev_bus_master_i(dev_slaves'pos(devs_eca_tap)), + ctrl_i => dev_bus_master_o(dev_slaves'pos(devs_eca_tap)), + tap_out_o => s_eca_evt_m_o, + tap_out_i => s_eca_evt_m_i, + tap_in_o => top_bus_master_i(top_slaves'pos(tops_eca_event)), + tap_in_i => top_bus_master_o(top_slaves'pos(tops_eca_event)) + ); + + + -- FTM - NO ECA -- + genEcaTimeWoEca : if not g_en_eca generate + + ftm_eca_time : eca_wr_time + port map( + clk_i => clk_ref, + rst_n_i => rstn_ref, + tai_i => tm_tai, + cycles_i => tm_cycles, + time_o => s_time); + + -- Legacy 8ns time + ref_tai8ns <= "000" & s_time(63 downto 3); + + top_msi_master_i(top_my_masters'pos(topm_eca_wbm)) <= cc_dummy_slave_out; -- does not accept MSIs + + -- all ECA IOs are ORed. Floating could be dangerous, set them to defined values: + s_eca_io <= (others => (others => '0')); + + + -- GPIO output from the ECA + gpio1 : if c_eca_gpio > 0 generate + gpio : for i in 0 to c_eca_gpio-1 generate + s_gpio_src_eca(i) <= '0'; + end generate; + end generate; + + -- LVDS output from the ECA + lvds1 : if c_eca_lvds > 0 generate + lvds : for i in 0 to c_eca_lvds-1 generate + bits : for b in 0 to 7 generate -- 0 goes first for ECA, 7 goes first for serdes + lvds_dat_fr_eca_chan(i)(b) <= '0'; + end generate; + end generate; + end generate; + + -- GPIO input to the TLU + gpi1 : if c_tlu_gpio > 0 generate + gpio : for i in 0 to c_tlu_gpio-1 generate + s_tlu_io(i) <= (others => '0'); + end generate; + end generate; + + -- LVDS input to the TLU + lvd1 : if c_tlu_lvds > 0 generate + lvds : for i in 0 to c_tlu_lvds-1 generate + bits : for b in 0 to 7 generate -- 0 goes first for ECA + s_tlu_io(i+c_tlu_gpio)(b) <= '0'; + end generate; + end generate; + end generate; + + tlu_gpio : if (g_gpio_in + g_gpio_inout > 0) generate + s_triggers(g_gpio_in + g_gpio_inout -1 downto 0) <= (others => (others => '0')); + end generate; + + tlu_lvds : if (g_lvds_inout + g_lvds_in > 0) generate + s_triggers(g_gpio_in + g_gpio_inout + g_lvds_inout + g_lvds_in -1 downto g_gpio_in + g_gpio_inout) <= (others => (others => '0')); + end generate; + + end generate; + + + + genEcaStuff : if g_en_eca generate + + + no_genTLUStuff : if not(c_use_tlu) generate + dev_bus_master_i(dev_slaves'pos(devs_tlu)) <= cc_dummy_slave_out; + dev_msi_slave_i(dev_slaves'pos(devs_tlu)) <= cc_dummy_master_out; + end generate no_genTLUStuff; + genTLUStuff : if c_use_tlu generate + tlu : wr_tlu + generic map( + g_num_triggers => g_gpio_in + g_gpio_inout + g_lvds_inout + g_lvds_in, + g_fifo_depth => g_tlu_fifo_size) + port map( + clk_ref_i => clk_ref, + rst_ref_n_i => rstn_ref, + clk_sys_i => clk_sys, + rst_sys_n_i => rstn_sys, + triggers_i => s_triggers, + tm_tai_cyc_i => ref_tai8ns, + ctrl_slave_i => dev_bus_master_o(dev_slaves'pos(devs_tlu)), + ctrl_slave_o => dev_bus_master_i(dev_slaves'pos(devs_tlu)), + irq_master_o => dev_msi_slave_i (dev_slaves'pos(devs_tlu)), + irq_master_i => dev_msi_slave_o (dev_slaves'pos(devs_tlu))); + end generate genTLUStuff; + + -- Synchronize and relax paths + gpio_gated_io_sync_in : if c_tlu_gpio > 0 generate + gpio_gated_io_sync_in : for i in 0 to c_tlu_gpio-1 generate + sync_gated_gpio_in : gc_sync_ffs + port map ( + clk_i => clk_ref, + rst_n_i => '1', + data_i => s_gpio_in_gate(i), + synced_o => s_gpio_in_gate_sync(i)); + end generate; + end generate; + + lvds_gated_io_sync_in : if c_tlu_lvds > 0 generate + lvds_gated_io_sync_in : for i in 0 to c_tlu_lvds-1 generate + sync_gated_lvds_in : gc_sync_ffs + port map ( + clk_i => clk_ref, + rst_n_i => '1', + data_i => s_lvds_in_gate(i), + synced_o => s_lvds_in_gate_sync(i)); + end generate; + end generate; + + gpio_gated_io_sync_out : if c_eca_gpio > 0 generate + gpio_gated_io_sync_out : for i in 0 to c_eca_gpio-1 generate + sync_gated_gpio_out : gc_sync_ffs + port map ( + clk_i => clk_ref, + rst_n_i => '1', + data_i => s_gpio_out_gate(i), + synced_o => s_gpio_out_gate_sync(i)); + end generate; + end generate; + + lvds_gated_io_sync_out : if c_eca_lvds > 0 generate + lvds_gated_io_sync_out : for i in 0 to c_eca_lvds-1 generate + sync_gated_lvds_out : gc_sync_ffs + port map ( + clk_i => clk_ref, + rst_n_i => '1', + data_i => s_lvds_out_gate(i), + synced_o => s_lvds_out_gate_sync(i)); + end generate; + end generate; + + -- GPIO input to the TLU + gpi1_gated : if c_tlu_gpio > 0 generate + gpio_gated : for i in 0 to c_tlu_gpio-1 generate + s_tlu_gated_io(i) <= (others => gpio_i(i) and s_gpio_in_gate_sync(i)); + bits_gated : for b in 0 to 7 generate -- 0 goes first for ECA + sync_gated : gc_sync_ffs + port map ( + clk_i => clk_ref, + rst_n_i => '1', + data_i => s_tlu_gated_io(i)(b), + synced_o => s_tlu_gated_io_sync(i)(b)); + end generate; + end generate; + end generate; + + -- LVDS input to the TLU + lvd1_gated : if c_tlu_lvds > 0 generate + lvds_gated : for i in 0 to c_tlu_lvds-1 generate + bits_gated : for b in 0 to 7 generate -- 0 goes first for ECA + s_tlu_gated_io(i+c_tlu_gpio)(b) <= lvds_i(i)(7-b) and s_lvds_in_gate_sync(i); + sync_gated : gc_sync_ffs + port map ( + clk_i => clk_ref, + rst_n_i => '1', + data_i => s_tlu_gated_io(i+c_tlu_gpio)(b), + synced_o => s_tlu_gated_io_sync(i+c_tlu_gpio)(b)); + end generate; + end generate; + end generate; + + + ecawb : eca_wb_event + port map( + w_clk_i => clk_sys, + w_rst_n_i => rstn_sys, + w_slave_i => s_eca_evt_m_o, + w_slave_o => s_eca_evt_m_i, + e_clk_i => clk_ref, + e_rst_n_i => rstn_ref, + e_stream_o => s_stream_i(0), + e_stall_i => s_stall_o(0)); + + ecatlu : eca_tlu + generic map( + g_inputs => c_tlu_io) + port map( + c_clk_i => clk_sys, + c_rst_n_i => rstn_sys, + c_slave_i => dev_bus_master_o(dev_slaves'pos(devs_eca_tlu)), + c_slave_o => dev_bus_master_i(dev_slaves'pos(devs_eca_tlu)), + a_clk_i => clk_ref, + a_rst_n_i => rstn_ref, + a_time_i => s_time, + a_gpio_i => s_tlu_gated_io, + a_stream_o => s_stream_i(1), + a_stall_i => s_stall_o(1)); + + eca : wr_eca + generic map( + g_channel_types => c_channel_types, + g_num_streams => c_num_streams, + g_num_ios => c_eca_io, + g_log_table_size => 8, + g_log_queue_size => 8) -- any smaller and g_log_latency must be decreased + port map( + c_clk_i => clk_sys, + c_rst_n_i => rstn_sys, + c_slave_i => dev_bus_master_o(dev_slaves'pos(devs_eca_ctl)), + c_slave_o => dev_bus_master_i(dev_slaves'pos(devs_eca_ctl)), + a_clk_i => clk_ref, + a_rst_n_i => rstn_ref, + a_tai_i => tm_tai, + a_cycles_i => tm_cycles, + a_time_o => s_time, + a_stream_i => s_stream_i, + a_stall_o => s_stall_o, + a_stall_i => s_stall_i, + a_channel_o => s_channel_o, + a_io_o => s_eca_io, + i_clk_i => clk_sys, + i_rst_n_i => rstn_sys, + i_master_i => dev_msi_slave_o(dev_slaves'pos(devs_eca_ctl)), + i_master_o => dev_msi_slave_i(dev_slaves'pos(devs_eca_ctl))); + + -- Legacy 8ns time + ref_tai8ns <= "000" & s_time(63 downto 3); + + -- GPIO output from the ECA + gpio1 : if c_eca_gpio > 0 generate + gpio : for i in 0 to c_eca_gpio-1 generate + s_gpio_src_eca(i) <= s_eca_io(i)(0); + end generate; + end generate; + + -- LVDS output from the ECA + lvds1 : if c_eca_lvds > 0 generate + lvds : for i in 0 to c_eca_lvds-1 generate + bits : for b in 0 to 7 generate -- 0 goes first for ECA, 7 goes first for serdes + lvds_dat_fr_eca_chan(i)(b) <= s_eca_io(i+c_eca_gpio)(7-b); + end generate; + end generate; + end generate; + + -- GPIO input to the TLU + gpi1 : if c_tlu_gpio > 0 generate + gpio : for i in 0 to c_tlu_gpio-1 generate + s_tlu_io(i) <= (others => gpio_i(i)); + end generate; + end generate; + + -- LVDS input to the TLU + lvd1 : if c_tlu_lvds > 0 generate + lvds : for i in 0 to c_tlu_lvds-1 generate + bits : for b in 0 to 7 generate -- 0 goes first for ECA + s_tlu_io(i+c_tlu_gpio)(b) <= lvds_i(i)(7-b); + end generate; + end generate; + end generate; + + tlu_gpio : if (g_gpio_in + g_gpio_inout > 0) generate + s_triggers(g_gpio_in + g_gpio_inout -1 downto 0) <= f_gpio_to_trigger_array(gpio_i); + end generate; + + tlu_lvds : if (g_lvds_inout + g_lvds_in > 0) generate + s_triggers(g_gpio_in + g_gpio_inout + g_lvds_inout + g_lvds_in -1 downto g_gpio_in + g_gpio_inout) <= f_lvds_array_to_trigger_array(lvds_i(f_sub1(g_lvds_inout+g_lvds_in) downto 0)); + end generate; + + c0 : eca_queue + generic map( + g_queue_id => 0) + port map( + a_clk_i => clk_ref, + a_rst_n_i => rstn_ref, + a_stall_o => s_stall_i(0), + a_channel_i => s_channel_o(0), + q_clk_i => clk_sys, + q_rst_n_i => rstn_sys, + q_slave_i => dev_bus_master_o(dev_slaves'pos(devs_eca_aq)), + q_slave_o => dev_bus_master_i(dev_slaves'pos(devs_eca_aq))); + + + top_msi_master_i(top_my_masters'pos(topm_eca_wbm)) <= cc_dummy_slave_out; -- does not accept MSIs + + c1: eca_ac_wbm + generic map( + g_entries => 16, + g_ram_size => 128) + port map( + clk_ref_i => clk_ref, + rst_ref_n_i => rstn_ref, + channel_i => s_channel_o(1), + clk_sys_i => clk_sys, + rst_sys_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_eca_wbm)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_eca_wbm)), + master_o => top_bus_slave_i(top_my_masters'pos(topm_eca_wbm)), + master_i => top_bus_slave_o(top_my_masters'pos(topm_eca_wbm))); + + + + c2 : eca_queue + generic map( + g_queue_id => 2) + port map( + a_clk_i => clk_ref, + a_rst_n_i => rstn_ref, + a_stall_o => s_stall_i(2), + a_channel_i => s_channel_o(2), + q_clk_i => clk_sys, + q_rst_n_i => rstn_sys, + q_slave_i => top_bus_master_o(top_slaves'pos(tops_emb_cpu)), + q_slave_o => top_bus_master_i(top_slaves'pos(tops_emb_cpu))); + + end generate; + + eca_scu : if g_en_scubus generate + c3 : eca_scubus_channel + port map( + clk_i => clk_ref, + rst_n_i => rstn_ref, + channel_i => s_channel_o(3), + tag_valid => tag_valid, + tag => tag); + end generate; + + lvds_pins : altera_lvds + generic map( + g_family => g_family, + g_inputs => f_sub1(g_lvds_inout+g_lvds_in) +1, + g_outputs => f_sub1(g_lvds_inout+g_lvds_out)+1, + g_invert => g_lvds_invert) + port map( + clk_ref_i => clk_ref, + rstn_ref_i => rstn_ref, + clk_lvds_i => clk_lvds, + clk_enable_i => clk_enable, + dat_o => lvds_i(f_sub1(g_lvds_inout+g_lvds_in) downto 0), + lvds_p_i => lvds_p_i, + lvds_n_i => lvds_n_i, + lvds_i_led_o => lvds_i_led_o, + dat_i => lvds_dat(f_sub1(g_lvds_inout+g_lvds_out) downto 0), + lvds_p_o => lvds_p_o, + lvds_n_o => lvds_n_o, + lvds_o_led_o => lvds_o_led_o); + + CfiPFlash_n : if not g_en_cfi generate + dev_bus_master_i(dev_slaves'pos(devs_CfiPFlash)) <= cc_dummy_slave_out; + end generate; + CfiPFlash_y : if g_en_cfi generate + CfiPFlash: XWB_CFI_WRAPPER + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_CfiPFlash)), -- to Slave + slave_o => dev_bus_master_i(dev_slaves'pos(devs_CfiPFlash)), -- to WB + AD => cfi_ad, + DF => cfi_df, + ADV_FSH => cfi_adv_fsh, + nCE_FSH => cfi_nce_fsh, + CLK_FSH => cfi_clk_fsh, + nWE_FSH => cfi_nwe_fsh, + nOE_FSH => cfi_noe_fsh, + nRST_FSH => cfi_nrst_fsh, + WAIT_FSH => cfi_wait_fsh); + end generate; + + DDR3_n : if not g_en_ddr3 generate + dev_bus_master_i(dev_slaves'pos(devs_DDR3_if1)) <= cc_dummy_slave_out; + dev_bus_master_i(dev_slaves'pos(devs_DDR3_if2)) <= cc_dummy_slave_out; + --dev_bus_master_i(dev_slaves'pos(devs_DDR3_ctrl)) <= cc_dummy_slave_out; + dev_msi_slave_i (dev_slaves'pos(devs_DDR3_ctrl)) <= cc_dummy_master_out; + end generate; + + + DDR3_y : if g_en_ddr3 generate + DDR3_inst: ddr3_wrapper + port map( + clk_sys => clk_sys, -- 125MHz Clk + rstn_sys => rstn_sys, + + -- Wishbone + slave_i_1 => dev_bus_master_o(dev_slaves'pos(devs_DDR3_if1)), -- to Slave + slave_o_1 => dev_bus_master_i(dev_slaves'pos(devs_DDR3_if1)), -- to WB + + slave_i_2 => dev_bus_master_o(dev_slaves'pos(devs_DDR3_if2)), -- to Slave + slave_o_2 => dev_bus_master_i(dev_slaves'pos(devs_DDR3_if2)), -- to WB + --msi i/f + irq_mst_o => dev_msi_slave_i (dev_slaves'pos(devs_DDR3_ctrl)), + irq_mst_i => dev_msi_slave_o (dev_slaves'pos(devs_DDR3_ctrl)), + -- ctrl i/f + -- ctrl_irq_o => dev_bus_master_i(dev_slaves'pos(devs_DDR3_ctrl)), + -- ctrl_irq_i => dev_bus_master_o(dev_slaves'pos(devs_DDR3_ctrl)), + -- External DDR3 Pins + altmemddr_0_memory_mem_odt => mem_DDR3_ODT, -- Dynamic OnDie Termination + altmemddr_0_memory_mem_clk => mem_DDR3_CLK, -- 300 MHz Clk + altmemddr_0_memory_mem_clk_n => mem_DDR3_CLK_n,-- dito + altmemddr_0_memory_mem_cs_n => mem_DDR3_CS_n, -- Chip Select + altmemddr_0_memory_mem_cke => mem_DDR3_CKE, -- Clock Enable + altmemddr_0_memory_mem_addr => mem_DDR3_ADDR, -- Addr 12..0 + altmemddr_0_memory_mem_ba => mem_DDR3_BA, -- Bank Addr 2..0 + altmemddr_0_memory_mem_ras_n => mem_DDR3_RAS_n,-- Row Addr Sel + altmemddr_0_memory_mem_cas_n => mem_DDR3_CAS_n,-- Col Addr Sel + altmemddr_0_memory_mem_we_n => mem_DDR3_WE_n, -- Wr Enable + altmemddr_0_memory_mem_dq => mem_DDR3_DQ, -- Data 15.0 + altmemddr_0_memory_mem_dqs => mem_DDR3_DQS, -- Data Strobe 1..0 + altmemddr_0_memory_mem_dqsn => mem_DDR3_DQSn, -- dito + altmemddr_0_memory_mem_dm => mem_DDR3_DM, -- Data Mask 1..0 + altmemddr_0_memory_mem_reset_n => mem_DDR3_RES_n,-- Ext Reset + altmemddr_0_external_connection_local_refresh_ack => open, -- ACKs when in user mode + altmemddr_0_external_connection_local_init_done => open, -- High when init done + altmemddr_0_external_connection_reset_phy_clk_n => open, -- To reset phy_clk driven logic + altmemddr_0_external_connection_dll_reference_clk => open, -- To feed external DLLs + altmemddr_0_external_connection_dqs_delay_ctrl_export => open -- To share ALTMEMPHY DLLs + ); + end generate; --of ddr3_wrapper + + + + lcd_n : if not g_en_lcd generate + dev_bus_master_i(dev_slaves'pos(devs_lcd)) <= cc_dummy_slave_out; + end generate; + lcd_y : if g_en_lcd generate + lcd : wb_serial_lcd + generic map( + g_wait => 1, + g_hold => 15) + port map( + slave_clk_i => clk_sys, + slave_rstn_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_lcd)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_lcd)), + di_clk_i => clk_20m, + di_scp_o => lcd_scp, + di_lp_o => lcd_lp, + di_flm_o => lcd_flm, + di_dat_o => lcd_in); + + lcd_scp_o <= '0' when lcd_scp = '0' else 'Z'; + lcd_lp_o <= '0' when lcd_lp = '0' else 'Z'; + lcd_flm_o <= '0' when lcd_flm = '0' else 'Z'; + lcd_in_o <= '0' when lcd_in = '0' else 'Z'; + end generate; + + oled_n : if not g_en_oled generate + dev_bus_master_i(dev_slaves'pos(devs_oled)) <= cc_dummy_slave_out; + end generate; + oled_y : if g_en_oled generate + oled : display_console + port map( + clk_i => clk_sys, + nRst_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_oled)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_oled)), + RST_DISP_o => oled_rstn_o, + DC_SPI_o => oled_dc_o, + SS_SPI_o => oled_ss_o, + SCK_SPI_o => oled_sck_o, + SD_SPI_o => oled_sd_o, + SH_VR_o => oled_sh_vr_o); + end generate; + + ssd1325_n : if not g_en_ssd1325 generate + dev_bus_master_i(dev_slaves'pos(devs_ssd1325)) <= cc_dummy_slave_out; + end generate; + ssd1325_y : if g_en_ssd1325 generate + ssd1325_display : wb_ssd1325_serial_driver + port map ( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_ssd1325)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_ssd1325)), + ssd_rst_o => ssd1325_rst_o, + ssd_dc_o => ssd1325_dc_o, + ssd_ss_o => ssd1325_ss_o, + ssd_sclk_o => ssd1325_sclk_o, + ssd_data_o => ssd1325_data_o); + end generate; + + nau8811_n : if not g_en_nau8811 generate + dev_bus_master_i(dev_slaves'pos(devs_nau8811)) <= cc_dummy_slave_out; + end generate; + nau8811_y : if g_en_nau8811 generate + nau8811_audio : wb_nau8811_audio_driver + generic map ( + g_use_external_pll => true) + port map ( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + pll_ref_i => core_clk_125m_local_i, + trigger_i => ext_pps, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_nau8811)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_nau8811)), + spi_csb_o => nau8811_spi_csb_o, + spi_sclk_o => nau8811_spi_sclk_o, + spi_sdio_o => nau8811_spi_sdio_o, + iis_fs_o => nau8811_iis_fs_o, + iis_bclk_o => nau8811_iis_bclk_o, + iis_adcout_o => nau8811_iis_adcout_o, + iis_dacin_i => nau8811_iis_dacin_i); + end generate; + + scub_n : if not g_en_scubus generate + top_bus_master_i(top_slaves'pos(tops_scubus)) <= cc_dummy_slave_out; + dev_bus_master_i(dev_slaves'pos(devs_scubirq)) <= cc_dummy_slave_out; + dev_msi_slave_i (dev_slaves'pos(devs_scubirq)) <= cc_dummy_master_out; + scubus_a_d <= (others => 'Z'); + end generate; + scub_y : if g_en_scubus generate + scubus_a_sysclock <= clk_12_5; + scub : wb_irq_scu_bus + generic map( + g_interface_mode => PIPELINED, + g_address_granularity => BYTE, + clk_in_hz => 62_500_000, + Test => 0, + Time_Out_in_ns => 350) + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + tag => tag, + tag_valid => tag_valid, + irq_master_o => dev_msi_slave_i (dev_slaves'pos(devs_scubirq)), + irq_master_i => dev_msi_slave_o (dev_slaves'pos(devs_scubirq)), + ctrl_irq_o => dev_bus_master_i(dev_slaves'pos(devs_scubirq)), + ctrl_irq_i => dev_bus_master_o(dev_slaves'pos(devs_scubirq)), + scu_slave_o => top_bus_master_i(top_slaves'pos(tops_scubus)), + scu_slave_i => top_bus_master_o(top_slaves'pos(tops_scubus)), + scub_data => scubus_a_d, + nscub_ds => scubus_a_nds, + nscub_dtack => scubus_a_ndtack, + scub_addr => scubus_a_a, + scub_rdnwr => scubus_a_rnw, + nscub_srq_slaves => scubus_a_nsrq, + nscub_slave_sel => scubus_a_nsel, + nscub_timing_cycle => scubus_a_ntiming_cycle, + nsel_ext_data_drv => scubus_nsel_data_drv); + end generate; + + mil_n : if not g_en_mil generate + top_bus_master_i(top_slaves'pos(tops_mil)) <= cc_dummy_slave_out; + dev_bus_master_i(dev_slaves'pos(devs_mil_ctrl)) <= cc_dummy_slave_out; + dev_msi_slave_i (dev_slaves'pos(devs_mil_ctrl)) <= cc_dummy_master_out; + end generate; + + mil_y : if g_en_mil generate + + milp : mil_pll + port map( + inclk0 => clk_sys1, + c0 => mil_me_12mhz_o); + + mil_irq_inst: wb_irq_master + generic map( + g_channels => 6, -- number of interrupt lines + g_round_rb => true, -- scheduler true: round robin, false: prioritised + g_det_edge => true, -- edge detection. true: trigger on rising edge of irq lines, false: trigger on high level + g_has_dev_id => false, -- if set, dst adr bits 11..7 hold g_dev_id as device identifier + g_dev_id => (others => '0'), -- device identifier + g_has_ch_id => false, -- if set, dst adr bits 6..2 hold g_ch_id as device identifier + g_default_msg => true -- initialises msgs to a default value in order to detect uninitialised irq master + ) + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + --msi if + irq_master_o => dev_msi_slave_i (dev_slaves'pos(devs_mil_ctrl)), + irq_master_i => dev_msi_slave_o (dev_slaves'pos(devs_mil_ctrl)), + -- ctrl interface + ctrl_slave_o => dev_bus_master_i(dev_slaves'pos(devs_mil_ctrl)), + ctrl_slave_i => dev_bus_master_o(dev_slaves'pos(devs_mil_ctrl)), + --irq lines + irq_i => "000000" + --(mil_every_ms_intr_o, + --mil_ev_fifo_ne_intr_o, + --mil_dly_intr_o, + --mil_data_req_intr_o, + --mil_data_rdy_intr_o, + --mil_interlock_intr_o) + ); + + mil : wb_mil_scu + generic map( + Clk_in_Hz => 62_500_000, + slave_i_adr_max => 14 --14 for SCU, 17 for SIO + ) + port map( + clk_i => clk_sys, + nRst_i => rstn_sys, + slave_i => top_bus_master_o(top_slaves'pos(tops_mil)), + slave_o => top_bus_master_i(top_slaves'pos(tops_mil)), + nME_BOO => mil_nme_boo_i, + nME_BZO => mil_nme_bzo_i, + ME_SD => mil_me_sd_i, + ME_ESC => mil_me_esc_i, + ME_SDI => mil_me_sdi_o, + ME_EE => mil_me_ee_o, + ME_SS => mil_me_ss_o, + ME_BOI => mil_me_boi_o, + ME_BZI => mil_me_bzi_o, + ME_UDI => mil_me_udi_o, + ME_CDS => mil_me_cds_i, + ME_SDO => mil_me_sdo_i, + ME_DSC => mil_me_dsc_i, + ME_VW => mil_me_vw_i, + ME_TD => mil_me_td_i, + Mil_BOI => mil_boi_i, + Mil_BZI => mil_bzi_i, + Sel_Mil_Drv => open,--mil_sel_drv_o, + nSel_Mil_Rcv => mil_nsel_rcv_o, + Mil_nBOO => mil_nboo_o, + Mil_nBZO => mil_nbzo_o, + nLed_Mil_Rcv => mil_nled_rcv_o, + nLed_Mil_Trm => mil_nled_trm_o, + nLed_Mil_Err => mil_nled_err_o, + error_limit_reached => open, + Mil_Decoder_Diag_p => open, + Mil_Decoder_Diag_n => open, + timing => mil_timing_i, + dly_intr_o => mil_dly_intr_o, + nLed_Timing => mil_nled_timing_o, + nLed_Fifo_ne => mil_nled_fifo_ne_o, + ev_fifo_ne_intr_o => mil_ev_fifo_ne_intr_o, + Interlock_Intr_i => mil_interlock_intr_i, + Data_Rdy_Intr_i => mil_data_rdy_intr_i, + Data_Req_Intr_i => mil_data_req_intr_i, + Interlock_Intr_o => mil_interlock_intr_o, + Data_Rdy_Intr_o => mil_data_rdy_intr_o, + Data_Req_Intr_o => mil_data_req_intr_o, + nLed_Interl => mil_nled_interl_o, + nLed_drq => mil_nled_drq_o, + nLed_dry => mil_nled_dry_o, + every_ms_intr_o => mil_every_ms_intr_o, + lemo_data_o => mil_lemo_data_o, + lemo_nled_o => mil_lemo_nled_o, + lemo_out_en_o => mil_lemo_out_en_o, + lemo_data_i => mil_lemo_data_i, + nsig_wb_err => open, + n_tx_req_led => open, + n_rx_avail_led => open + ); + end generate; + + + ow_n : if not g_en_user_ow generate + dev_bus_master_i(dev_slaves'pos(devs_ow)) <= cc_dummy_slave_out; + end generate; + ow_y : if g_en_user_ow generate + ow_io(0) <= user_ow_pwren(0) when (user_ow_pwren(0) = '1' or user_ow_en(0) = '1') else 'Z'; + ow_io(1) <= user_ow_pwren(1) when (user_ow_pwren(1) = '1' or user_ow_en(1) = '1') else 'Z'; + ONEWIRE : xwb_onewire_master + generic map( + g_interface_mode => PIPELINED, + g_address_granularity => BYTE, + g_num_ports => 2, + g_ow_btp_normal => "5.0", + g_ow_btp_overdrive => "1.0") + port map( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_ow)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_ow)), + desc_o => open, + owr_pwren_o => user_ow_pwren, + owr_en_o => user_ow_en, + owr_i => ow_io); + end generate; + + psram_n : if not g_en_psram generate + dev_bus_master_i(dev_slaves'pos(devs_psram)) <= cc_dummy_slave_out; + end generate; + psram_y : if g_en_psram generate + ram : psram + generic map( + g_bits => g_psram_bits) + port map( + clk_i => clk_sys, + rstn_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_psram)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_psram)), + ps_clk => ps_clk, + ps_addr => ps_addr, + ps_data => ps_data, + ps_seln => ps_seln, + ps_cen => ps_cen, + ps_oen => ps_oen, + ps_wen => ps_wen, + ps_cre => ps_cre, + ps_advn => ps_advn, + ps_wait => ps_wait); + end generate; + + beam_dump_n : if not g_en_beam_dump generate + top_bus_master_i(top_slaves'pos(tops_beam_dump)) <= cc_dummy_slave_out; + end generate; + beam_dump_y : if g_en_beam_dump generate + beamdump : beam_dump + port map( + clk_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => top_bus_master_o(top_slaves'pos(tops_beam_dump)), + slave_o => top_bus_master_i(top_slaves'pos(tops_beam_dump))); + end generate; + + tempsens_n : if not g_en_tempsens generate + dev_bus_master_i(dev_slaves'pos(devs_tempsens)) <= cc_dummy_slave_out; + end generate; + + tempsens_y : if g_en_tempsens generate + tempsens_display : wb_temp_sense + port map ( + clk_sys_i => clk_sys, + rst_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_tempsens)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_tempsens)), + clr_o => tempsens_clr_out); + end generate; + + i2c_wrapper_n : if not g_en_i2c_wrapper generate + dev_bus_master_i(dev_slaves'pos(devs_i2c_wrapper)) <= cc_dummy_slave_out; + end generate; + i2c_wrapper_y : if g_en_i2c_wrapper generate + i2c_wrapper : i2c_master_top + generic map ( + ARST_LVL => '0', + g_num_interfaces => g_num_i2c_interfaces) + port map ( + wb_clk_i => clk_sys, + wb_rst_i => rst_sys, + arst_i => '1', + wb_adr_i => dev_bus_master_o(dev_slaves'pos(devs_i2c_wrapper)).adr(4 downto 2), + wb_dat_i => dev_bus_master_o(dev_slaves'pos(devs_i2c_wrapper)).dat(7 downto 0), + wb_dat_o => dev_bus_master_i(dev_slaves'pos(devs_i2c_wrapper)).dat(7 downto 0), + wb_we_i => dev_bus_master_o(dev_slaves'pos(devs_i2c_wrapper)).we, + wb_stb_i => dev_bus_master_o(dev_slaves'pos(devs_i2c_wrapper)).stb, + wb_cyc_i => dev_bus_master_o(dev_slaves'pos(devs_i2c_wrapper)).cyc, + wb_ack_o => dev_bus_master_i(dev_slaves'pos(devs_i2c_wrapper)).ack, + scl_pad_i => i2c_scl_pad_i, + scl_pad_o => i2c_scl_pad_o, + scl_padoen_o => i2c_scl_padoen_o, + sda_pad_i => i2c_sda_pad_i, + sda_pad_o => i2c_sda_pad_o, + sda_padoen_o => i2c_sda_padoen_o); + end generate; + + asmi_n : if not g_en_asmi generate + dev_bus_master_i(dev_slaves'pos(devs_asmi)) <= cc_dummy_slave_out; + end generate; + + asmi_y : if g_en_asmi generate + -------------------------------------------- + -- clock crossing from sys clk to clk_25Mhz + -------------------------------------------- + cross_systoasmi : xwb_clock_crossing + generic map ( g_size => 16) + port map( + -- Slave control port + slave_clk_i => clk_sys, + slave_rst_n_i => rstn_sys, + slave_i => dev_bus_master_o(dev_slaves'pos(devs_asmi)), + slave_o => dev_bus_master_i(dev_slaves'pos(devs_asmi)), + -- Master reader port + master_clk_i => clk_flash_ext, + master_rst_n_i => rstn_update, + master_i => asmi_o, + master_o => asmi_i); + + ----------------------------------------- + -- wb interface for altera remote update + ----------------------------------------- + asmi: wb_asmi + generic map ( + pagesize => 256, + g_family => g_family + ) + port map ( + clk_flash_i => clk_flash_ext, + rst_n_i => rstn_update, + slave_i => asmi_i, + slave_o => asmi_o + ); + end generate asmi_y; + + -- END OF Wishbone slaves + ---------------------------------------------------------------------------------- + +end rtl; diff --git a/testbench/tr_simulation/gsi_pexarria5/monster_pkg.vhd b/testbench/tr_simulation/gsi_pexarria5/monster_pkg.vhd new file mode 100644 index 0000000000..660bec6ddb --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/monster_pkg.vhd @@ -0,0 +1,603 @@ +--! @file monster_pkg.vhd +--! @brief Monster (all your top are belong to BEL) package +--! @author Wesley W. Terpstra +--! +--! Copyright (C) 2013 GSI Helmholtz Centre for Heavy Ion Research GmbH +--! +--! This combines all the common GSI components together +--! +-------------------------------------------------------------------------------- +--! This library is free software; you can redistribute it and/or +--! modify it under the terms of the GNU Lesser General Public +--! License as published by the Free Software Foundation; either +--! version 3 of the License, or (at your option) any later version. +--! +--! This library is distributed in the hope that it will be useful, +--! but WITHOUT ANY WARRANTY; without even the implied warranty of +--! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +--! Lesser General Public License for more details. +--! +--! You should have received a copy of the GNU Lesser General Public +--! License along with this library. If not, see . +--------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +use std.textio.all; +use IEEE.std_logic_textio.all; + +library work; +use work.wishbone_pkg.all; + +package monster_pkg is + + type io_channel is (IO_GPIO, IO_LVDS, IO_FIXED, IO_VIRTUAL); + type io_direction is (IO_OUTPUT, IO_INPUT, IO_INOUTPUT); + type io_logic_level is (IO_TTL, IO_LVTTL, IO_LVDS, IO_NIM, IO_CMOS); + type io_special_purpose is (IO_NONE, IO_TTL_TO_NIM, IO_CLK_IN_EN, IO_MTCA4_TRIG_BPL_PDN, IO_MTCA4_FAILSAFE_EN, IO_LIBERA_TRIG_OE, IO_MTCA4_BPL_BUF_OE, IO_I2C_USB_C); + + type t_io_mapping_table is + record -- Byte(s) = Bit(s) + info_name : std_logic_vector(95 downto 0); -- 12 = 96 + info_special : std_logic_vector(5 downto 0); -- x = 6 \ + info_special_out : std_logic; -- x = 1 | + info_special_in : std_logic; -- x = 1 / + info_index : std_logic_vector(7 downto 0); -- 1 = 8 + info_direction : std_logic_vector(1 downto 0); -- x = 2 \ + info_channel : std_logic_vector(2 downto 0); -- x = 3 \ + info_oe : std_logic; -- x = 1 | + info_term : std_logic; -- x = 1 / + info_res_bit : std_logic; -- x = 1 / + info_logic_level : std_logic_vector(3 downto 0); -- x = 4 \ + info_reserved : std_logic_vector(3 downto 0); -- x = 4 / + end record; -- 16 = 128 total each entry + type t_io_mapping_table_array is array (natural range <>) of t_io_mapping_table; + + type t_io_mapping_table_arg is + record + info_name : string (1 to 11); + info_special : io_special_purpose; + info_special_out : boolean; + info_special_in : boolean; + info_index : integer range 0 to 255; + info_direction : io_direction; + info_channel : io_channel; + info_oe : boolean; + info_term : boolean; + info_logic_level : io_logic_level; + end record; + type t_io_mapping_table_arg_array is array (natural range <>) of t_io_mapping_table_arg; + + function to_io_slv(str : string) return std_logic_vector; + function f_gen_io_table(input : t_io_mapping_table_arg_array; ios_total : natural) return t_io_mapping_table_array; + + function f_sub1(x : natural) return natural; + function f_pick(x : boolean; y : integer; z : integer) return natural; + function f_string_list_repeat(s : string; times : natural) return string; + function f_report_wishbone_address(value : t_wishbone_address; msg : string) return std_logic; + + component monster is + generic( + g_simulation : boolean := false; + g_family : string; -- "Arria II" or "Arria V" + g_project : string; + g_flash_bits : natural; + g_psram_bits : natural := 24; + g_ram_size : natural := 131072; + g_gpio_inout : natural := 0; + g_gpio_in : natural := 0; + g_gpio_out : natural := 0; + g_tlu_fifo_size : natural := 256; + g_lvds_inout : natural := 0; + g_lvds_in : natural := 0; + g_lvds_out : natural := 0; + g_fixed : natural := 0; + g_lvds_invert : boolean := false; + g_en_tlu : boolean := true; + g_en_pcie : boolean := false; + g_en_vme : boolean := false; + g_en_usb : boolean := false; + g_en_scubus : boolean := false; + g_en_mil : boolean := false; + g_en_oled : boolean := false; + g_en_lcd : boolean := false; + g_en_cfi : boolean := false; + g_en_ddr3 : boolean := false; + g_en_ssd1325 : boolean := false; + g_en_nau8811 : boolean := false; + g_en_user_ow : boolean := false; + g_en_psram : boolean := false; + g_en_beam_dump : boolean := false; + g_en_i2c_wrapper : boolean := false; + g_num_i2c_interfaces : integer := 1; + g_dual_port_wr : boolean := false; + g_io_table : t_io_mapping_table_arg_array; + g_en_pmc : boolean := false; + g_a10_use_sys_fpll : boolean := false; + g_a10_use_ref_fpll : boolean := false; + g_a10_en_phy_reconf : boolean := false; + g_en_butis : boolean := true; + g_lm32_cores : natural := 1; + g_lm32_MSIs : natural := 1; + g_lm32_ramsizes : natural := 131072/4; -- in 32b words + g_lm32_init_files : string; -- multiple init files must be seperated by a semicolon ';' + g_lm32_profiles : string; -- multiple profiles must be seperated by a semicolon ';' + g_lm32_are_ftm : boolean := false; + g_en_tempsens : boolean := false; + g_delay_diagnostics : boolean := false; + g_en_eca : boolean := true; + g_en_wd_tmr : boolean := false; + g_en_timer : boolean := false; + g_en_eca_tap : boolean := false; + g_en_asmi : boolean := false + + ); + port( + -- Required: core signals + core_clk_20m_vcxo_i : in std_logic; + core_clk_125m_sfpref_i : in std_logic; + core_clk_125m_pllref_i : in std_logic; + core_clk_125m_local_i : in std_logic; + core_rstn_i : in std_logic := '1'; + -- Optional clock outputs + core_clk_wr_ref_o : out std_logic; + core_clk_butis_o : out std_logic; + core_clk_butis_t0_o : out std_logic; + core_rstn_wr_ref_o : out std_logic; + core_rstn_butis_o : out std_logic; + core_clk_sys_o : out std_logic; + core_clk_200m_o : out std_logic; + core_clk_20m_o : out std_logic; + core_debug_o : out std_logic_vector(15 downto 0); + core_clk_debug_i : in std_logic := '0'; + -- Required: white rabbit pins + wr_onewire_io : inout std_logic; + wr_sfp_sda_io : inout std_logic; + wr_sfp_scl_io : inout std_logic; + wr_sfp_det_i : in std_logic; + wr_sfp_tx_o : out std_logic; + wr_sfp_rx_i : in std_logic; + wr_dac_sclk_o : out std_logic; + wr_dac_din_o : out std_logic; + wr_ndac_cs_o : out std_logic_vector(2 downto 1); + -- Optional dual port white rabbit pins + wr_aux_onewire_io : inout std_logic; + wr_aux_sfp_sda_io : inout std_logic; + wr_aux_sfp_scl_io : inout std_logic; + wr_aux_sfp_det_i : in std_logic := '0'; + wr_aux_sfp_tx_o : out std_logic; + wr_aux_sfp_rx_i : in std_logic := '0'; + -- Optional WR features + wr_ext_clk_i : in std_logic := '0'; -- 10MHz + wr_ext_pps_i : in std_logic := '0'; + wr_uart_o : out std_logic; + wr_uart_i : in std_logic := '1'; + -- SFP + sfp_tx_disable_o : out std_logic := '0'; + sfp_tx_fault_i : in std_logic; + sfp_los_i : in std_logic; + sfp_aux_tx_disable_o : out std_logic := '0'; + sfp_aux_tx_fault_i : in std_logic := '1'; + sfp_aux_los_i : in std_logic := '1'; + wbar_phy_dis_o : out std_logic := '0'; + wbar_phy_aux_dis_o : out std_logic := '0'; + phy_rx_ready_o : out std_logic; + phy_tx_ready_o : out std_logic; + phy_aux_rx_ready_o : out std_logic; + phy_aux_tx_ready_o : out std_logic; + phy_debug_o : out std_logic; + phy_debug_i : in std_logic_vector(7 downto 0) := (others => '0'); + -- GPIO for the board (inouts start at 0, dedicated in/outs come after) + gpio_i : in std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0) := (others => '1'); + gpio_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_oen_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + gpio_term_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + gpio_spec_in_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_in) downto 0); + gpio_spec_out_o : out std_logic_vector(f_sub1(g_gpio_inout+g_gpio_out) downto 0); + -- LVDS for the board (inouts start at 0, dedicated in/outs come after) + lvds_p_i : in std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0) := (others => '1'); + lvds_n_i : in std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0) := (others => '1'); + lvds_i_led_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_p_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_n_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_o_led_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_oen_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + lvds_term_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_spec_in_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_in) downto 0); + lvds_spec_out_o : out std_logic_vector(f_sub1(g_lvds_inout+g_lvds_out) downto 0); + -- Optional status LEDs + led_link_up_o : out std_logic; + led_link_act_o : out std_logic; + led_track_o : out std_logic; + led_pps_o : out std_logic; + led_aux_link_up_o : out std_logic; + led_aux_link_act_o : out std_logic; + led_aux_track_o : out std_logic; + led_aux_pps_o : out std_logic; + -- g_en_pcie + pcie_refclk_i : in std_logic := '0'; + pcie_rstn_i : in std_logic := '0'; + pcie_rx_i : in std_logic_vector(3 downto 0) := (others => '0'); + pcie_tx_o : out std_logic_Vector(3 downto 0); + -- g_en_vme + vme_as_n_i : in std_logic := '0'; + vme_rst_n_i : in std_logic := '0'; + vme_write_n_i : in std_logic := '1'; + vme_am_i : in std_logic_vector(5 downto 0) := (others => '0'); + vme_ds_n_i : in std_logic_vector(1 downto 0) := (others => '1'); + vme_ga_i : in std_logic_vector(3 downto 0) := (others => '0'); + vme_addr_data_b : inout std_logic_vector(31 downto 0) := (others => 'Z'); + vme_iack_n_i : in std_logic := '1'; + vme_iackin_n_i : in std_logic := '1'; + vme_iackout_n_o : out std_logic; + vme_irq_n_o : out std_logic_vector(6 downto 0); + vme_berr_o : out std_logic; + vme_dtack_oe_o : out std_logic; + vme_buffer_latch_o : out std_logic_vector(3 downto 0); + vme_data_oe_ab_o : out std_logic; + vme_data_oe_ba_o : out std_logic; + vme_addr_oe_ab_o : out std_logic; + vme_addr_oe_ba_o : out std_logic; + -- g_en_usb + usb_rstn_o : out std_logic; + usb_ebcyc_i : in std_logic := '0'; + usb_speed_i : in std_logic := '0'; + usb_shift_i : in std_logic := '0'; + usb_readyn_io : inout std_logic := 'Z'; + usb_fifoadr_o : out std_logic_vector(1 downto 0); + usb_sloen_o : out std_logic; + usb_fulln_i : in std_logic := '1'; + usb_emptyn_i : in std_logic := '0'; + usb_slrdn_o : out std_logic; + usb_slwrn_o : out std_logic; + usb_pktendn_o : out std_logic; + usb_fd_io : inout std_logic_vector(7 downto 0) := (others => 'Z'); + -- g_en_scubus + scubus_a_a : out std_logic_vector(15 downto 0); + scubus_a_d : inout std_logic_vector(15 downto 0) := (others => 'Z'); + scubus_nsel_data_drv : out std_logic; + scubus_a_nds : out std_logic; + scubus_a_rnw : out std_logic; + scubus_a_ndtack : in std_logic := '1'; + scubus_a_nsrq : in std_logic_vector(12 downto 1) := (others => '1'); + scubus_a_nsel : out std_logic_vector(12 downto 1); + scubus_a_ntiming_cycle : out std_logic; + scubus_a_sysclock : out std_logic; + -- g_en_mil + mil_nme_boo_i : in std_logic := '0'; + mil_nme_bzo_i : in std_logic := '0'; + mil_me_sd_i : in std_logic := '0'; + mil_me_esc_i : in std_logic := '0'; + mil_me_sdi_o : out std_logic; + mil_me_ee_o : out std_logic; + mil_me_ss_o : out std_logic; + mil_me_boi_o : out std_logic; + mil_me_bzi_o : out std_logic; + mil_me_udi_o : out std_logic; + mil_me_cds_i : in std_logic := '0'; + mil_me_sdo_i : in std_logic := '0'; + mil_me_dsc_i : in std_logic := '0'; + mil_me_vw_i : in std_logic := '0'; + mil_me_td_i : in std_logic := '0'; + mil_me_12mhz_o : out std_logic; + mil_boi_i : in std_logic := '0'; + mil_bzi_i : in std_logic := '0'; + mil_sel_drv_o : out std_logic; + mil_nsel_rcv_o : out std_logic; + mil_nboo_o : out std_logic; + mil_nbzo_o : out std_logic; + mil_nled_rcv_o : out std_logic; + mil_nled_trm_o : out std_logic; + mil_nled_err_o : out std_logic; + mil_timing_i : in std_logic := '0'; + mil_nled_timing_o : out std_logic; + mil_nled_fifo_ne_o : out std_logic; + mil_interlock_intr_i : in std_logic := '0'; + mil_data_rdy_intr_i : in std_logic := '0'; + mil_data_req_intr_i : in std_logic := '0'; + mil_nled_interl_o : out std_logic; + mil_nled_dry_o : out std_logic; + mil_nled_drq_o : out std_logic; + mil_lemo_data_o : out std_logic_vector(4 downto 1); + mil_lemo_nled_o : out std_logic_vector(4 downto 1); + mil_lemo_out_en_o : out std_logic_vector(4 downto 1); + mil_lemo_data_i : in std_logic_vector(4 downto 1):= (others => '0'); +-- mil_io1_o : out std_logic; +-- mil_io1_is_in_o : out std_logic; +-- mil_nled_io1_o : out std_logic; +-- mil_io2_o : out std_logic; +-- mil_io2_is_in_o : out std_logic; +-- mil_nled_io2_o : out std_logic; + -- g_en_oled + oled_rstn_o : out std_logic; + oled_dc_o : out std_logic; + oled_ss_o : out std_logic; + oled_sck_o : out std_logic; + oled_sd_o : out std_logic; + oled_sh_vr_o : out std_logic; + -- g_en_lcd + lcd_scp_o : out std_logic; + lcd_lp_o : out std_logic; + lcd_flm_o : out std_logic; + lcd_in_o : out std_logic; + -- g_en_ssd1325 + ssd1325_rst_o : out std_logic; + ssd1325_dc_o : out std_logic; + ssd1325_ss_o : out std_logic; + ssd1325_sclk_o : out std_logic; + ssd1325_data_o : out std_logic; + -- g_en_nau8811 + nau8811_spi_csb_o : out std_logic; + nau8811_spi_sclk_o : out std_logic; + nau8811_spi_sdio_o : out std_logic; + nau8811_iis_fs_o : out std_logic; + nau8811_iis_bclk_o : out std_logic; + nau8811_iis_adcout_o : out std_logic; + nau8811_iis_dacin_i : in std_logic := '0'; + -- g_en_cfi + cfi_ad : out std_logic_vector(25 downto 1); + cfi_df : inout std_logic_vector(15 downto 0) := (others => 'Z'); + cfi_adv_fsh : out std_logic ; + cfi_nce_fsh : out std_logic ; + cfi_clk_fsh : out std_logic ; + cfi_nwe_fsh : out std_logic ; + cfi_noe_fsh : out std_logic ; + cfi_nrst_fsh : out std_logic ; + cfi_wait_fsh : in std_logic := '0'; + -- g_en_ddr3 + mem_DDR3_DQ : inout std_logic_vector(15 downto 0); + mem_DDR3_DM : out std_logic_vector( 1 downto 0); + mem_DDR3_BA : out std_logic_vector( 2 downto 0); + mem_DDR3_ADDR : out std_logic_vector(12 downto 0); + mem_DDR3_CS_n : out std_logic_vector( 0 downto 0); + mem_DDR3_DQS : inout std_logic_vector( 1 downto 0); + mem_DDR3_DQSn : inout std_logic_vector( 1 downto 0); + mem_DDR3_RES_n : out std_logic; + mem_DDR3_CKE : out std_logic_vector( 0 downto 0); + mem_DDR3_ODT : out std_logic_vector( 0 downto 0); + mem_DDR3_CAS_n : out std_logic; + mem_DDR3_RAS_n : out std_logic; + mem_DDR3_CLK : inout std_logic_vector( 0 downto 0); + mem_DDR3_CLK_n : inout std_logic_vector( 0 downto 0); + mem_DDR3_WE_n : out std_logic; + -- g_en_psram + ps_clk : out std_logic; + ps_addr : out std_logic_vector(g_psram_bits-1 downto 0); + ps_data : inout std_logic_vector(15 downto 0) := (others => 'Z'); + ps_seln : out std_logic_vector(1 downto 0); + ps_cen : out std_logic; + ps_oen : out std_logic; + ps_wen : out std_logic; + ps_cre : out std_logic; + ps_advn : out std_logic; + ps_wait : in std_logic := '0'; + -- i2c + i2c_scl_pad_i : in std_logic_vector(g_num_i2c_interfaces-1 downto 0) := (others => '0'); + i2c_scl_pad_o : out std_logic_vector(g_num_i2c_interfaces-1 downto 0); + i2c_scl_padoen_o : out std_logic_vector(g_num_i2c_interfaces-1 downto 0); + i2c_sda_pad_i : in std_logic_vector(g_num_i2c_interfaces-1 downto 0) := (others => '0'); + i2c_sda_pad_o : out std_logic_vector(g_num_i2c_interfaces-1 downto 0); + i2c_sda_padoen_o : out std_logic_vector(g_num_i2c_interfaces-1 downto 0); + -- g_en_pmc + pmc_pci_clk_i : in std_logic := '0'; + pmc_pci_rst_i : in std_logic := '0'; + pmc_buf_oe_o : out std_logic; + pmc_busmode_io : inout std_logic_vector(3 downto 0) := (others => 'Z'); + pmc_ad_io : inout std_logic_vector(31 downto 0) := (others => 'Z'); + pmc_c_be_io : inout std_logic_vector(3 downto 0) := (others => 'Z'); + pmc_par_io : inout std_logic := 'Z'; + pmc_frame_io : inout std_logic := 'Z'; + pmc_trdy_io : inout std_logic := 'Z'; + pmc_irdy_io : inout std_logic := 'Z'; + pmc_stop_io : inout std_logic := 'Z'; + pmc_devsel_io : inout std_logic := 'Z'; + pmc_idsel_i : in std_logic := '0'; + pmc_perr_io : inout std_logic := 'Z'; + pmc_serr_io : inout std_logic := 'Z'; + pmc_inta_o : out std_logic; + pmc_req_o : out std_logic; + pmc_gnt_i : in std_logic := '1'; + -- g_en_user_ow + ow_io : inout std_logic_vector(1 downto 0) := (others => 'Z'); + hw_version : in std_logic_vector(31 downto 0) := (others => 'Z')); + end component; + + constant c_user_1wire_sdb : t_sdb_device := ( + abi_class => x"0000", -- undocumented device + abi_ver_major => x"01", + abi_ver_minor => x"01", + wbd_endian => c_sdb_endian_big, + wbd_width => x"7", -- 8/16/32-bit port granularity + sdb_component => ( + addr_first => x"0000000000000000", + addr_last => x"00000000000000ff", + product => ( + vendor_id => x"0000000000000651", -- GSI + device_id => x"4c8a0635", + version => x"00000001", + date => x"20171016", + name => "User-1Wire "))); + + constant c_iodir_sdb : t_sdb_device := ( + abi_class => x"0000", -- undocumented device + abi_ver_major => x"00", + abi_ver_minor => x"00", + wbd_endian => c_sdb_endian_big, + wbd_width => x"7", -- 8/16/32-bit port granularity + sdb_component => ( + addr_first => x"0000000000000000", + addr_last => x"000000000000000f", + product => ( + vendor_id => x"0000000000000651", + device_id => x"4d78adfd", + version => x"00000001", + date => x"20140516", + name => "GSI:IODIR_HACK "))); + + component monster_iodir is + generic( + g_gpio_inout : natural := 0; + g_lvds_inout : natural := 0); + port( + clk_i : in std_logic; + rst_n_i : in std_logic; + slave_i : in t_wishbone_slave_in; + slave_o : out t_wishbone_slave_out; + gpio_oen_o : out std_logic_vector(f_sub1(g_gpio_inout) downto 0); + lvds_oen_o : out std_logic_vector(f_sub1(g_lvds_inout) downto 0)); + end component; + +end package; + +package body monster_pkg is + + function f_sub1(x : natural) return natural is + begin + if x = 0 + then return 0; + else return x-1; + end if; + end f_sub1; + + function f_pick(x : boolean; y : integer; z : integer) return natural is + begin + if x + then return y; + else return z; + end if; + end f_pick; + + function to_io_slv(str : string) return std_logic_vector is + alias str_norm : string(1 to str'length) is str; + variable res_v : std_logic_vector(8 * (str'length+1) - 1 downto 0); + variable res_v_r : std_logic_vector(8 * (str'length+1) - 1 downto 0); + begin + for idx in 1 to (str'length+1) loop + if idx = (str'length+1) then + res_v(8 * idx - 1 downto 8 * idx - 8) := (others => '0'); -- Terminate string with zero + else + res_v(8 * idx - 1 downto 8 * idx - 8) := std_logic_vector(to_unsigned(character'pos(str_norm(idx)), 8)); + if std_logic_vector(to_unsigned(character'pos(str_norm(idx)), 8)) = x"20" then -- Check for space + res_v(8 * idx - 1 downto 8 * idx - 8) := (others => '0'); -- Fill string with zeros + end if; + end if; + end loop; + -- Reverse byte order if needed + for idx in 1 to (str'length+1) loop + res_v_r(95+8 -(8 * idx) downto 95+1 - (8 * idx)) := res_v(8 * idx - 1 downto 8 * idx - 8); + end loop; + return res_v_r; + end function; + + function f_gen_io_table(input : t_io_mapping_table_arg_array; ios_total : natural) return t_io_mapping_table_array + is + variable result : t_io_mapping_table_array(0 to ios_total); + variable name : string (1 to 11); + variable special : integer range 0 to 63; + variable direction : integer range 0 to 3; + variable channel : integer range 0 to 7; + variable logic_level : integer range 0 to 15; + begin + for i in 0 to ios_total-1 loop + report "IO ITERATOR: " & integer'image(i) severity note; + report "IO NAME: " & name severity note; + -- Convert name + name := input(i).info_name; + result(i).info_name:= to_io_slv(name); + -- Convert special information + case input(i).info_special is + when IO_NONE => special := 0; + when IO_TTL_TO_NIM => special := 1; + when IO_CLK_IN_EN => special := 2; + when IO_MTCA4_TRIG_BPL_PDN => special := 3; + when IO_MTCA4_FAILSAFE_EN => special := 4; + when IO_LIBERA_TRIG_OE => special := 5; + when IO_MTCA4_BPL_BUF_OE => special := 6; + when IO_I2C_USB_C => special := 7; + when others => special := 63; + end case; + result(i).info_special := std_logic_vector(to_unsigned(special, result(i).info_special'length)); + if input(i).info_special_out = true then + result(i).info_special_out := '1'; + else + result(i).info_special_out := '0'; + end if; + if input(i).info_special_in = true then + result(i).info_special_in := '1'; + else + result(i).info_special_in := '0'; + end if; + -- Convert Index + result(i).info_index := std_logic_vector(to_unsigned(input(i).info_index, result(i).info_index'length)); + -- Convert Direction + case input(i).info_direction is + when IO_OUTPUT => direction := 0; + when IO_INPUT => direction := 1; + when IO_INOUTPUT => direction := 2; + when others => direction := 3; + end case; + result(i).info_direction := std_logic_vector(to_unsigned(direction, result(i).info_direction'length)); + -- Convert Channel + case input(i).info_channel is + when IO_GPIO => channel := 0; + when IO_LVDS => channel := 1; + when IO_FIXED => channel := 2; + when IO_VIRTUAL => channel := 3; + when others => channel := 7; + end case; + result(i).info_channel := std_logic_vector(to_unsigned(channel, result(i).info_channel'length)); + -- Convert OutputEnable + if input(i).info_oe = true then + result(i).info_oe := '1'; + else + result(i).info_oe := '0'; + end if; + -- Convert Termination + if input(i).info_term = true then + result(i).info_term := '1'; + else + result(i).info_term := '0'; + end if; + -- Convert Reserved Bit + result(i).info_res_bit := '0'; + -- Convert Logic Level + case input(i).info_logic_level is + when IO_TTL => logic_level := 0; + when IO_LVTTL => logic_level := 1; + when IO_LVDS => logic_level := 2; + when IO_NIM => logic_level := 3; + when IO_CMOS => logic_level := 4; + when others => logic_level := 15; + end case; + result(i).info_logic_level := std_logic_vector(to_unsigned(logic_level, result(i).info_logic_level'length)); + -- Convert Reserved Vector + result(i).info_reserved := "0000"; + end loop; + --report "DONE " & name severity failure; + return result; + end f_gen_io_table; + + function f_string_list_repeat(s : string; times : natural) + return string is + variable i : natural := 0; + constant delimeter : string := ";"; + constant str : string := s & delimeter; + variable res : string(1 to str'length*times); + begin + for i in 0 to times-1 loop + res(i*str'length+1 to (i+1)*str'length) := str; + end loop; + return res; + end f_string_list_repeat; + + function f_report_wishbone_address(value : t_wishbone_address; msg : string) + return std_logic is + begin + report "Debug: " & msg; + report "Debug: Wishbone address (dec) = " & integer'image(to_integer(unsigned(value))); + return '0'; + end f_report_wishbone_address; + +end monster_pkg; diff --git a/testbench/tr_simulation/gsi_pexarria5/pci_control_stub.mif b/testbench/tr_simulation/gsi_pexarria5/pci_control_stub.mif new file mode 100644 index 0000000000..1375dbef45 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/pci_control_stub.mif @@ -0,0 +1,32775 @@ +DEPTH = 32768; +WIDTH = 32; +ADDRESS_RADIX = HEX; +DATA_RADIX = HEX; +CONTENT +BEGIN +0 : 90C00000; +1 : 98000000; +2 : D0000000; +3 : D0200000; +4 : 78011000; +5 : 38210000; +6 : D0E10000; +7 : F800013C; +8 : 34000000; +9 : 34000000; +a : 34000000; +b : 34000000; +c : 34000000; +d : 34000000; +e : 34000000; +f : 34000000; +10 : 34000000; +11 : 34000000; +12 : 34000000; +13 : 34000000; +14 : 34000000; +15 : 34000000; +16 : 34000000; +17 : 34000000; +18 : 34000000; +19 : 34000000; +1a : 34000000; +1b : 34000000; +1c : 34000000; +1d : 34000000; +1e : 34000000; +1f : 34000000; +20 : 5B9D0000; +21 : F8000131; +22 : 3401000B; +23 : F800011F; +24 : E0000141; +25 : 34000000; +26 : 34000000; +27 : 34000000; +28 : 34000000; +29 : 34000000; +2a : 34000000; +2b : 34000000; +2c : 34000000; +2d : 34000000; +2e : 34000000; +2f : 34000000; +30 : 5B9D0000; +31 : F8000121; +32 : 34010002; +33 : F800010E; +34 : E0000131; +35 : 34000000; +36 : 34000000; +37 : 34000000; +38 : 34000000; +39 : 34000000; +3a : 34000000; +3b : 34000000; +3c : 34000000; +3d : 34000000; +3e : 34000000; +3f : 34000000; +40 : 00000000; +41 : 00000000; +42 : 00000000; +43 : 00000000; +44 : 00000000; +45 : 00000000; +46 : 00000000; +47 : 00000000; +48 : 00000000; +49 : 00000000; +4a : 00000000; +4b : 00000000; +4c : 00000000; +4d : 00000000; +4e : 00000000; +4f : 00000000; +50 : 00000000; +51 : 00000000; +52 : 00000000; +53 : 00000000; +54 : 00000000; +55 : 00000000; +56 : 00000000; +57 : 00000000; +58 : 00000000; +59 : 00000000; +5a : 00000000; +5b : 00000000; +5c : 00000000; +5d : 00000000; +5e : 00000000; +5f : 00000000; +60 : 00000000; +61 : 00000000; +62 : 00000000; +63 : 00000000; +64 : 00000000; +65 : 00000000; +66 : 00000000; +67 : 00000000; +68 : 00000000; +69 : 00000000; +6a : 00000000; +6b : 00000000; +6c : 00000000; +6d : 00000000; +6e : 00000000; +6f : 00000000; +70 : 00000000; +71 : 00000000; +72 : 00000000; +73 : 00000000; +74 : 00000000; +75 : 00000000; +76 : 00000000; +77 : 00000000; +78 : 00000000; +79 : 00000000; +7a : 00000000; +7b : 00000000; +7c : 00000000; +7d : 00000000; +7e : 00000000; +7f : 00000000; +80 : 00000000; +81 : 00000000; +82 : 00000000; +83 : 00000000; +84 : 00000000; +85 : 00000000; +86 : 00000000; +87 : 00000000; +88 : 00000000; +89 : 00000000; +8a : 00000000; +8b : 00000000; +8c : 00000000; +8d : 00000000; +8e : 00000000; +8f : 00000000; +90 : 00000000; +91 : 00000000; +92 : 00000000; +93 : 00000000; +94 : 00000000; +95 : 00000000; +96 : 00000000; +97 : 00000000; +98 : 00000000; +99 : 00000000; +9a : 00000000; +9b : 00000000; +9c : 00000000; +9d : 00000000; +9e : 00000000; +9f : 00000000; +a0 : 00000000; +a1 : 00000000; +a2 : 00000000; +a3 : 00000000; +a4 : 00000000; +a5 : 00000000; +a6 : 00000000; +a7 : 00000000; +a8 : 00000000; +a9 : 00000000; +aa : 00000000; +ab : 00000000; +ac : 00000000; +ad : 00000000; +ae : 00000000; +af : 00000000; +b0 : 00000000; +b1 : 00000000; +b2 : 00000000; +b3 : 00000000; +b4 : 00000000; +b5 : 00000000; +b6 : 00000000; +b7 : 00000000; +b8 : 00000000; +b9 : 00000000; +ba : 00000000; +bb : 00000000; +bc : 00000000; +bd : 00000000; +be : 00000000; +bf : 00000000; +c0 : 00000000; +c1 : 00000000; +c2 : 00000000; +c3 : 00000000; +c4 : 00000000; +c5 : 00000000; +c6 : 00000000; +c7 : 00000000; +c8 : 00000000; +c9 : 00000000; +ca : 00000000; +cb : 00000000; +cc : 00000000; +cd : 00000000; +ce : 00000000; +cf : 00000000; +d0 : 00000000; +d1 : 00000000; +d2 : 00000000; +d3 : 00000000; +d4 : 00000000; +d5 : 00000000; +d6 : 00000000; +d7 : 00000000; +d8 : 00000000; +d9 : 00000000; +da : 00000000; +db : 00000000; +dc : 00000000; +dd : 00000000; +de : 00000000; +df : 00000000; +e0 : 00000000; +e1 : 00000000; +e2 : 00000000; +e3 : 00000000; +e4 : 00000000; +e5 : 00000000; +e6 : 00000000; +e7 : 00000000; +e8 : 00000000; +e9 : 00000000; +ea : 00000000; +eb : 00000000; +ec : 00000000; +ed : 00000000; +ee : 00000000; +ef : 00000000; +f0 : 00000000; +f1 : 00000000; +f2 : 00000000; +f3 : 00000000; +f4 : 00000000; +f5 : 00000000; +f6 : 00000000; +f7 : 00000000; +f8 : 00000000; +f9 : 00000000; +fa : 00000000; +fb : 00000000; +fc : 00000000; +fd : 00000000; +fe : 00000000; +ff : 00000000; +100 : 00000000; +101 : 00000000; +102 : 00000000; +103 : 00000000; +104 : 00000000; +105 : 00000000; +106 : 00000000; +107 : 00000000; +108 : 00000000; +109 : 00000000; +10a : 00000000; +10b : 00000000; +10c : 00000000; +10d : 00000000; +10e : 00000000; +10f : 00000000; +110 : 00000000; +111 : 00000000; +112 : 00000000; +113 : 00000000; +114 : 00000000; +115 : 00000000; +116 : 00000000; +117 : 00000000; +118 : 00000000; +119 : 00000000; +11a : 00000000; +11b : 00000000; +11c : 00000000; +11d : 00000000; +11e : 00000000; +11f : 00000000; +120 : 00000000; +121 : 00000000; +122 : 00000000; +123 : 00000000; +124 : 00000000; +125 : 00000000; +126 : 00000000; +127 : 00000000; +128 : 00000000; +129 : 00000000; +12a : 00000000; +12b : 00000000; +12c : 00000000; +12d : 00000000; +12e : 00000000; +12f : 00000000; +130 : 00000000; +131 : 00000000; +132 : 00000000; +133 : 00000000; +134 : 00000000; +135 : 00000000; +136 : 00000000; +137 : 00000000; +138 : 00000000; +139 : 00000000; +13a : 00000000; +13b : 00000000; +13c : 00000000; +13d : 00000000; +13e : 00000000; +13f : 00000000; +140 : C3A00000; +141 : C3A00000; +142 : C3A00000; +143 : 98000000; +144 : 781C1001; +145 : 3B9CFFFC; +146 : 78011000; +147 : 382106D8; +148 : 34020000; +149 : 78031000; +14a : 386306D8; +14b : C8611800; +14c : F8000029; +14d : 34010000; +14e : 34020000; +14f : 34030000; +150 : FBFFFFF0; +151 : E0000000; +152 : 379CFFC4; +153 : 5B810004; +154 : 5B820008; +155 : 5B83000C; +156 : 5B840010; +157 : 5B850014; +158 : 5B860018; +159 : 5B87001C; +15a : 5B880020; +15b : 5B890024; +15c : 5B8A0028; +15d : 5B9E0034; +15e : 5B9F0038; +15f : 2B81003C; +160 : 5B810030; +161 : BB800800; +162 : 3421003C; +163 : 5B81002C; +164 : C3A00000; +165 : 2B810004; +166 : 2B820008; +167 : 2B83000C; +168 : 2B840010; +169 : 2B850014; +16a : 2B860018; +16b : 2B87001C; +16c : 2B880020; +16d : 2B890024; +16e : 2B8A0028; +16f : 2B9D0030; +170 : 2B9E0034; +171 : 2B9F0038; +172 : 2B9C002C; +173 : 34000000; +174 : C3C00000; +175 : 20250003; +176 : B8202000; +177 : 44A0000B; +178 : 4460002C; +179 : 3463FFFF; +17a : 204600FF; +17b : E0000003; +17c : 44600028; +17d : 3463FFFF; +17e : 30860000; +17f : 34840001; +180 : 20850003; +181 : 5CA0FFFB; +182 : 34050003; +183 : 50A3001A; +184 : 204500FF; +185 : 3CA60008; +186 : 340A000F; +187 : B8C52800; +188 : 3CA60010; +189 : B8804000; +18a : B8C53000; +18b : B8603800; +18c : B8802800; +18d : 3409000F; +18e : 546A0017; +18f : 34040000; +190 : 34070003; +191 : B5042800; +192 : 34840004; +193 : 58A60000; +194 : C8642800; +195 : 54A7FFFC; +196 : 3463FFFC; +197 : 00640002; +198 : 20630003; +199 : 34840001; +19a : 3C840002; +19b : B5044000; +19c : B9002000; +19d : 44600007; +19e : 204200FF; +19f : 34050000; +1a0 : B4853000; +1a1 : 30C20000; +1a2 : 34A50001; +1a3 : 5C65FFFD; +1a4 : C3A00000; +1a5 : 58A60000; +1a6 : 58A60004; +1a7 : 58A60008; +1a8 : 58A6000C; +1a9 : 34E7FFF0; +1aa : 34A50010; +1ab : 54E9FFFA; +1ac : 3463FFF0; +1ad : 00680004; +1ae : 2063000F; +1af : 35080001; +1b0 : 3D080004; +1b1 : B4884000; +1b2 : 34040003; +1b3 : 5464FFDC; +1b4 : B9002000; +1b5 : E3FFFFE8; +1b6 : E3FFFFE8; +1b7 : 00000000; +1b8 : 00000000; +1b9 : 00000000; +1ba : 00000000; +1bb : 00000000; +1bc : 00000000; +1bd : 00000000; +1be : 00000000; +1bf : 00000000; +1c0 : 00000000; +1c1 : 00000000; +1c2 : 00000000; +1c3 : 00000000; +1c4 : 00000000; +1c5 : 00000000; +1c6 : 00000000; +1c7 : 00000000; +1c8 : 00000000; +1c9 : 00000000; +1ca : 00000000; +1cb : 00000000; +1cc : 00000000; +1cd : 00000000; +1ce : 00000000; +1cf : 00000000; +1d0 : 00000000; +1d1 : 00000000; +1d2 : 00000000; +1d3 : 00000000; +1d4 : 00000000; +1d5 : 00000000; +1d6 : 00000000; +1d7 : 00000000; +1d8 : 00000000; +1d9 : 00000000; +1da : 00000000; +1db : 00000000; +1dc : 00000000; +1dd : 00000000; +1de : 00000000; +1df : 00000000; +1e0 : 00000000; +1e1 : 00000000; +1e2 : 00000000; +1e3 : 00000000; +1e4 : 00000000; +1e5 : 00000000; +1e6 : 00000000; +1e7 : 00000000; +1e8 : 00000000; +1e9 : 00000000; +1ea : 00000000; +1eb : 00000000; +1ec : 00000000; +1ed : 00000000; +1ee : 00000000; +1ef : 00000000; +1f0 : 00000000; +1f1 : 00000000; +1f2 : 00000000; +1f3 : 00000000; +1f4 : 00000000; +1f5 : 00000000; +1f6 : 00000000; +1f7 : 00000000; +1f8 : 00000000; +1f9 : 00000000; +1fa : 00000000; +1fb : 00000000; +1fc : 00000000; +1fd : 00000000; +1fe : 00000000; +1ff : 00000000; +200 : 00000000; +201 : 00000000; +202 : 00000000; +203 : 00000000; +204 : 00000000; +205 : 00000000; +206 : 00000000; +207 : 00000000; +208 : 00000000; +209 : 00000000; +20a : 00000000; +20b : 00000000; +20c : 00000000; +20d : 00000000; +20e : 00000000; +20f : 00000000; +210 : 00000000; +211 : 00000000; +212 : 00000000; +213 : 00000000; +214 : 00000000; +215 : 00000000; +216 : 00000000; +217 : 00000000; +218 : 00000000; +219 : 00000000; +21a : 00000000; +21b : 00000000; +21c : 00000000; +21d : 00000000; +21e : 00000000; +21f : 00000000; +220 : 00000000; +221 : 00000000; +222 : 00000000; +223 : 00000000; +224 : 00000000; +225 : 00000000; +226 : 00000000; +227 : 00000000; +228 : 00000000; +229 : 00000000; +22a : 00000000; +22b : 00000000; +22c : 00000000; +22d : 00000000; +22e : 00000000; +22f : 00000000; +230 : 00000000; +231 : 00000000; +232 : 00000000; +233 : 00000000; +234 : 00000000; +235 : 00000000; +236 : 00000000; +237 : 00000000; +238 : 00000000; +239 : 00000000; +23a : 00000000; +23b : 00000000; +23c : 00000000; +23d : 00000000; +23e : 00000000; +23f : 00000000; +240 : 00000000; +241 : 00000000; +242 : 00000000; +243 : 00000000; +244 : 00000000; +245 : 00000000; +246 : 00000000; +247 : 00000000; +248 : 00000000; +249 : 00000000; +24a : 00000000; +24b : 00000000; +24c : 00000000; +24d : 00000000; +24e : 00000000; +24f : 00000000; +250 : 00000000; +251 : 00000000; +252 : 00000000; +253 : 00000000; +254 : 00000000; +255 : 00000000; +256 : 00000000; +257 : 00000000; +258 : 00000000; +259 : 00000000; +25a : 00000000; +25b : 00000000; +25c : 00000000; +25d : 00000000; +25e : 00000000; +25f : 00000000; +260 : 00000000; +261 : 00000000; +262 : 00000000; +263 : 00000000; +264 : 00000000; +265 : 00000000; +266 : 00000000; +267 : 00000000; +268 : 00000000; +269 : 00000000; +26a : 00000000; +26b : 00000000; +26c : 00000000; +26d : 00000000; +26e : 00000000; +26f : 00000000; +270 : 00000000; +271 : 00000000; +272 : 00000000; +273 : 00000000; +274 : 00000000; +275 : 00000000; +276 : 00000000; +277 : 00000000; +278 : 00000000; +279 : 00000000; +27a : 00000000; +27b : 00000000; +27c : 00000000; +27d : 00000000; +27e : 00000000; +27f : 00000000; +280 : 00000000; +281 : 00000000; +282 : 00000000; +283 : 00000000; +284 : 00000000; +285 : 00000000; +286 : 00000000; +287 : 00000000; +288 : 00000000; +289 : 00000000; +28a : 00000000; +28b : 00000000; +28c : 00000000; +28d : 00000000; +28e : 00000000; +28f : 00000000; +290 : 00000000; +291 : 00000000; +292 : 00000000; +293 : 00000000; +294 : 00000000; +295 : 00000000; +296 : 00000000; +297 : 00000000; +298 : 00000000; +299 : 00000000; +29a : 00000000; +29b : 00000000; +29c : 00000000; +29d : 00000000; +29e : 00000000; +29f : 00000000; +2a0 : 00000000; +2a1 : 00000000; +2a2 : 00000000; +2a3 : 00000000; +2a4 : 00000000; +2a5 : 00000000; +2a6 : 00000000; +2a7 : 00000000; +2a8 : 00000000; +2a9 : 00000000; +2aa : 00000000; +2ab : 00000000; +2ac : 00000000; +2ad : 00000000; +2ae : 00000000; +2af : 00000000; +2b0 : 00000000; +2b1 : 00000000; +2b2 : 00000000; +2b3 : 00000000; +2b4 : 00000000; +2b5 : 00000000; +2b6 : 00000000; +2b7 : 00000000; +2b8 : 00000000; +2b9 : 00000000; +2ba : 00000000; +2bb : 00000000; +2bc : 00000000; +2bd : 00000000; +2be : 00000000; +2bf : 00000000; +2c0 : 00000000; +2c1 : 00000000; +2c2 : 00000000; +2c3 : 00000000; +2c4 : 00000000; +2c5 : 00000000; +2c6 : 00000000; +2c7 : 00000000; +2c8 : 00000000; +2c9 : 00000000; +2ca : 00000000; +2cb : 00000000; +2cc : 00000000; +2cd : 00000000; +2ce : 00000000; +2cf : 00000000; +2d0 : 00000000; +2d1 : 00000000; +2d2 : 00000000; +2d3 : 00000000; +2d4 : 00000000; +2d5 : 00000000; +2d6 : 00000000; +2d7 : 00000000; +2d8 : 00000000; +2d9 : 00000000; +2da : 00000000; +2db : 00000000; +2dc : 00000000; +2dd : 00000000; +2de : 00000000; +2df : 00000000; +2e0 : 00000000; +2e1 : 00000000; +2e2 : 00000000; +2e3 : 00000000; +2e4 : 00000000; +2e5 : 00000000; +2e6 : 00000000; +2e7 : 00000000; +2e8 : 00000000; +2e9 : 00000000; +2ea : 00000000; +2eb : 00000000; +2ec : 00000000; +2ed : 00000000; +2ee : 00000000; +2ef : 00000000; +2f0 : 00000000; +2f1 : 00000000; +2f2 : 00000000; +2f3 : 00000000; +2f4 : 00000000; +2f5 : 00000000; +2f6 : 00000000; +2f7 : 00000000; +2f8 : 00000000; +2f9 : 00000000; +2fa : 00000000; +2fb : 00000000; +2fc : 00000000; +2fd : 00000000; +2fe : 00000000; +2ff : 00000000; +300 : 00000000; +301 : 00000000; +302 : 00000000; +303 : 00000000; +304 : 00000000; +305 : 00000000; +306 : 00000000; +307 : 00000000; +308 : 00000000; +309 : 00000000; +30a : 00000000; +30b : 00000000; +30c : 00000000; +30d : 00000000; +30e : 00000000; +30f : 00000000; +310 : 00000000; +311 : 00000000; +312 : 00000000; +313 : 00000000; +314 : 00000000; +315 : 00000000; +316 : 00000000; +317 : 00000000; +318 : 00000000; +319 : 00000000; +31a : 00000000; +31b : 00000000; +31c : 00000000; +31d : 00000000; +31e : 00000000; +31f : 00000000; +320 : 00000000; +321 : 00000000; +322 : 00000000; +323 : 00000000; +324 : 00000000; +325 : 00000000; +326 : 00000000; +327 : 00000000; +328 : 00000000; +329 : 00000000; +32a : 00000000; +32b : 00000000; +32c : 00000000; +32d : 00000000; +32e : 00000000; +32f : 00000000; +330 : 00000000; +331 : 00000000; +332 : 00000000; +333 : 00000000; +334 : 00000000; +335 : 00000000; +336 : 00000000; +337 : 00000000; +338 : 00000000; +339 : 00000000; +33a : 00000000; +33b : 00000000; +33c : 00000000; +33d : 00000000; +33e : 00000000; +33f : 00000000; +340 : 00000000; +341 : 00000000; +342 : 00000000; +343 : 00000000; +344 : 00000000; +345 : 00000000; +346 : 00000000; +347 : 00000000; +348 : 00000000; +349 : 00000000; +34a : 00000000; +34b : 00000000; +34c : 00000000; +34d : 00000000; +34e : 00000000; +34f : 00000000; +350 : 00000000; +351 : 00000000; +352 : 00000000; +353 : 00000000; +354 : 00000000; +355 : 00000000; +356 : 00000000; +357 : 00000000; +358 : 00000000; +359 : 00000000; +35a : 00000000; +35b : 00000000; +35c : 00000000; +35d : 00000000; +35e : 00000000; +35f : 00000000; +360 : 00000000; +361 : 00000000; +362 : 00000000; +363 : 00000000; +364 : 00000000; +365 : 00000000; +366 : 00000000; +367 : 00000000; +368 : 00000000; +369 : 00000000; +36a : 00000000; +36b : 00000000; +36c : 00000000; +36d : 00000000; +36e : 00000000; +36f : 00000000; +370 : 00000000; +371 : 00000000; +372 : 00000000; +373 : 00000000; +374 : 00000000; +375 : 00000000; +376 : 00000000; +377 : 00000000; +378 : 00000000; +379 : 00000000; +37a : 00000000; +37b : 00000000; +37c : 00000000; +37d : 00000000; +37e : 00000000; +37f : 00000000; +380 : 00000000; +381 : 00000000; +382 : 00000000; +383 : 00000000; +384 : 00000000; +385 : 00000000; +386 : 00000000; +387 : 00000000; +388 : 00000000; +389 : 00000000; +38a : 00000000; +38b : 00000000; +38c : 00000000; +38d : 00000000; +38e : 00000000; +38f : 00000000; +390 : 00000000; +391 : 00000000; +392 : 00000000; +393 : 00000000; +394 : 00000000; +395 : 00000000; +396 : 00000000; +397 : 00000000; +398 : 00000000; +399 : 00000000; +39a : 00000000; +39b : 00000000; +39c : 00000000; +39d : 00000000; +39e : 00000000; +39f : 00000000; +3a0 : 00000000; +3a1 : 00000000; +3a2 : 00000000; +3a3 : 00000000; +3a4 : 00000000; +3a5 : 00000000; +3a6 : 00000000; +3a7 : 00000000; +3a8 : 00000000; +3a9 : 00000000; +3aa : 00000000; +3ab : 00000000; +3ac : 00000000; +3ad : 00000000; +3ae : 00000000; +3af : 00000000; +3b0 : 00000000; +3b1 : 00000000; +3b2 : 00000000; +3b3 : 00000000; +3b4 : 00000000; +3b5 : 00000000; +3b6 : 00000000; +3b7 : 00000000; +3b8 : 00000000; +3b9 : 00000000; +3ba : 00000000; +3bb : 00000000; +3bc : 00000000; +3bd : 00000000; +3be : 00000000; +3bf : 00000000; +3c0 : 00000000; +3c1 : 00000000; +3c2 : 00000000; +3c3 : 00000000; +3c4 : 00000000; +3c5 : 00000000; +3c6 : 00000000; +3c7 : 00000000; +3c8 : 00000000; +3c9 : 00000000; +3ca : 00000000; +3cb : 00000000; +3cc : 00000000; +3cd : 00000000; +3ce : 00000000; +3cf : 00000000; +3d0 : 00000000; +3d1 : 00000000; +3d2 : 00000000; +3d3 : 00000000; +3d4 : 00000000; +3d5 : 00000000; +3d6 : 00000000; +3d7 : 00000000; +3d8 : 00000000; +3d9 : 00000000; +3da : 00000000; +3db : 00000000; +3dc : 00000000; +3dd : 00000000; +3de : 00000000; +3df : 00000000; +3e0 : 00000000; +3e1 : 00000000; +3e2 : 00000000; +3e3 : 00000000; +3e4 : 00000000; +3e5 : 00000000; +3e6 : 00000000; +3e7 : 00000000; +3e8 : 00000000; +3e9 : 00000000; +3ea : 00000000; +3eb : 00000000; +3ec : 00000000; +3ed : 00000000; +3ee : 00000000; +3ef : 00000000; +3f0 : 00000000; +3f1 : 00000000; +3f2 : 00000000; +3f3 : 00000000; +3f4 : 00000000; +3f5 : 00000000; +3f6 : 00000000; +3f7 : 00000000; +3f8 : 00000000; +3f9 : 00000000; +3fa : 00000000; +3fb : 00000000; +3fc : 00000000; +3fd : 00000000; +3fe : 00000000; +3ff : 00000000; +400 : 00000000; +401 : 00000000; +402 : 00000000; +403 : 00000000; +404 : 00000000; +405 : 00000000; +406 : 00000000; +407 : 00000000; +408 : 00000000; +409 : 00000000; +40a : 00000000; +40b : 00000000; +40c : 00000000; +40d : 00000000; +40e : 00000000; +40f : 00000000; +410 : 00000000; +411 : 00000000; +412 : 00000000; +413 : 00000000; +414 : 00000000; +415 : 00000000; +416 : 00000000; +417 : 00000000; +418 : 00000000; +419 : 00000000; +41a : 00000000; +41b : 00000000; +41c : 00000000; +41d : 00000000; +41e : 00000000; +41f : 00000000; +420 : 00000000; +421 : 00000000; +422 : 00000000; +423 : 00000000; +424 : 00000000; +425 : 00000000; +426 : 00000000; +427 : 00000000; +428 : 00000000; +429 : 00000000; +42a : 00000000; +42b : 00000000; +42c : 00000000; +42d : 00000000; +42e : 00000000; +42f : 00000000; +430 : 00000000; +431 : 00000000; +432 : 00000000; +433 : 00000000; +434 : 00000000; +435 : 00000000; +436 : 00000000; +437 : 00000000; +438 : 00000000; +439 : 00000000; +43a : 00000000; +43b : 00000000; +43c : 00000000; +43d : 00000000; +43e : 00000000; +43f : 00000000; +440 : 00000000; +441 : 00000000; +442 : 00000000; +443 : 00000000; +444 : 00000000; +445 : 00000000; +446 : 00000000; +447 : 00000000; +448 : 00000000; +449 : 00000000; +44a : 00000000; +44b : 00000000; +44c : 00000000; +44d : 00000000; +44e : 00000000; +44f : 00000000; +450 : 00000000; +451 : 00000000; +452 : 00000000; +453 : 00000000; +454 : 00000000; +455 : 00000000; +456 : 00000000; +457 : 00000000; +458 : 00000000; +459 : 00000000; +45a : 00000000; +45b : 00000000; +45c : 00000000; +45d : 00000000; +45e : 00000000; +45f : 00000000; +460 : 00000000; +461 : 00000000; +462 : 00000000; +463 : 00000000; +464 : 00000000; +465 : 00000000; +466 : 00000000; +467 : 00000000; +468 : 00000000; +469 : 00000000; +46a : 00000000; +46b : 00000000; +46c : 00000000; +46d : 00000000; +46e : 00000000; +46f : 00000000; +470 : 00000000; +471 : 00000000; +472 : 00000000; +473 : 00000000; +474 : 00000000; +475 : 00000000; +476 : 00000000; +477 : 00000000; +478 : 00000000; +479 : 00000000; +47a : 00000000; +47b : 00000000; +47c : 00000000; +47d : 00000000; +47e : 00000000; +47f : 00000000; +480 : 00000000; +481 : 00000000; +482 : 00000000; +483 : 00000000; +484 : 00000000; +485 : 00000000; +486 : 00000000; +487 : 00000000; +488 : 00000000; +489 : 00000000; +48a : 00000000; +48b : 00000000; +48c : 00000000; +48d : 00000000; +48e : 00000000; +48f : 00000000; +490 : 00000000; +491 : 00000000; +492 : 00000000; +493 : 00000000; +494 : 00000000; +495 : 00000000; +496 : 00000000; +497 : 00000000; +498 : 00000000; +499 : 00000000; +49a : 00000000; +49b : 00000000; +49c : 00000000; +49d : 00000000; +49e : 00000000; +49f : 00000000; +4a0 : 00000000; +4a1 : 00000000; +4a2 : 00000000; +4a3 : 00000000; +4a4 : 00000000; +4a5 : 00000000; +4a6 : 00000000; +4a7 : 00000000; +4a8 : 00000000; +4a9 : 00000000; +4aa : 00000000; +4ab : 00000000; +4ac : 00000000; +4ad : 00000000; +4ae : 00000000; +4af : 00000000; +4b0 : 00000000; +4b1 : 00000000; +4b2 : 00000000; +4b3 : 00000000; +4b4 : 00000000; +4b5 : 00000000; +4b6 : 00000000; +4b7 : 00000000; +4b8 : 00000000; +4b9 : 00000000; +4ba : 00000000; +4bb : 00000000; +4bc : 00000000; +4bd : 00000000; +4be : 00000000; +4bf : 00000000; +4c0 : 00000000; +4c1 : 00000000; +4c2 : 00000000; +4c3 : 00000000; +4c4 : 00000000; +4c5 : 00000000; +4c6 : 00000000; +4c7 : 00000000; +4c8 : 00000000; +4c9 : 00000000; +4ca : 00000000; +4cb : 00000000; +4cc : 00000000; +4cd : 00000000; +4ce : 00000000; +4cf : 00000000; +4d0 : 00000000; +4d1 : 00000000; +4d2 : 00000000; +4d3 : 00000000; +4d4 : 00000000; +4d5 : 00000000; +4d6 : 00000000; +4d7 : 00000000; +4d8 : 00000000; +4d9 : 00000000; +4da : 00000000; +4db : 00000000; +4dc : 00000000; +4dd : 00000000; +4de : 00000000; +4df : 00000000; +4e0 : 00000000; +4e1 : 00000000; +4e2 : 00000000; +4e3 : 00000000; +4e4 : 00000000; +4e5 : 00000000; +4e6 : 00000000; +4e7 : 00000000; +4e8 : 00000000; +4e9 : 00000000; +4ea : 00000000; +4eb : 00000000; +4ec : 00000000; +4ed : 00000000; +4ee : 00000000; +4ef : 00000000; +4f0 : 00000000; +4f1 : 00000000; +4f2 : 00000000; +4f3 : 00000000; +4f4 : 00000000; +4f5 : 00000000; +4f6 : 00000000; +4f7 : 00000000; +4f8 : 00000000; +4f9 : 00000000; +4fa : 00000000; +4fb : 00000000; +4fc : 00000000; +4fd : 00000000; +4fe : 00000000; +4ff : 00000000; +500 : 00000000; +501 : 00000000; +502 : 00000000; +503 : 00000000; +504 : 00000000; +505 : 00000000; +506 : 00000000; +507 : 00000000; +508 : 00000000; +509 : 00000000; +50a : 00000000; +50b : 00000000; +50c : 00000000; +50d : 00000000; +50e : 00000000; +50f : 00000000; +510 : 00000000; +511 : 00000000; +512 : 00000000; +513 : 00000000; +514 : 00000000; +515 : 00000000; +516 : 00000000; +517 : 00000000; +518 : 00000000; +519 : 00000000; +51a : 00000000; +51b : 00000000; +51c : 00000000; +51d : 00000000; +51e : 00000000; +51f : 00000000; +520 : 00000000; +521 : 00000000; +522 : 00000000; +523 : 00000000; +524 : 00000000; +525 : 00000000; +526 : 00000000; +527 : 00000000; +528 : 00000000; +529 : 00000000; +52a : 00000000; +52b : 00000000; +52c : 00000000; +52d : 00000000; +52e : 00000000; +52f : 00000000; +530 : 00000000; +531 : 00000000; +532 : 00000000; +533 : 00000000; +534 : 00000000; +535 : 00000000; +536 : 00000000; +537 : 00000000; +538 : 00000000; +539 : 00000000; +53a : 00000000; +53b : 00000000; +53c : 00000000; +53d : 00000000; +53e : 00000000; +53f : 00000000; +540 : 00000000; +541 : 00000000; +542 : 00000000; +543 : 00000000; +544 : 00000000; +545 : 00000000; +546 : 00000000; +547 : 00000000; +548 : 00000000; +549 : 00000000; +54a : 00000000; +54b : 00000000; +54c : 00000000; +54d : 00000000; +54e : 00000000; +54f : 00000000; +550 : 00000000; +551 : 00000000; +552 : 00000000; +553 : 00000000; +554 : 00000000; +555 : 00000000; +556 : 00000000; +557 : 00000000; +558 : 00000000; +559 : 00000000; +55a : 00000000; +55b : 00000000; +55c : 00000000; +55d : 00000000; +55e : 00000000; +55f : 00000000; +560 : 00000000; +561 : 00000000; +562 : 00000000; +563 : 00000000; +564 : 00000000; +565 : 00000000; +566 : 00000000; +567 : 00000000; +568 : 00000000; +569 : 00000000; +56a : 00000000; +56b : 00000000; +56c : 00000000; +56d : 00000000; +56e : 00000000; +56f : 00000000; +570 : 00000000; +571 : 00000000; +572 : 00000000; +573 : 00000000; +574 : 00000000; +575 : 00000000; +576 : 00000000; +577 : 00000000; +578 : 00000000; +579 : 00000000; +57a : 00000000; +57b : 00000000; +57c : 00000000; +57d : 00000000; +57e : 00000000; +57f : 00000000; +580 : 00000000; +581 : 00000000; +582 : 00000000; +583 : 00000000; +584 : 00000000; +585 : 00000000; +586 : 00000000; +587 : 00000000; +588 : 00000000; +589 : 00000000; +58a : 00000000; +58b : 00000000; +58c : 00000000; +58d : 00000000; +58e : 00000000; +58f : 00000000; +590 : 00000000; +591 : 00000000; +592 : 00000000; +593 : 00000000; +594 : 00000000; +595 : 00000000; +596 : 00000000; +597 : 00000000; +598 : 00000000; +599 : 00000000; +59a : 00000000; +59b : 00000000; +59c : 00000000; +59d : 00000000; +59e : 00000000; +59f : 00000000; +5a0 : 00000000; +5a1 : 00000000; +5a2 : 00000000; +5a3 : 00000000; +5a4 : 00000000; +5a5 : 00000000; +5a6 : 00000000; +5a7 : 00000000; +5a8 : 00000000; +5a9 : 00000000; +5aa : 00000000; +5ab : 00000000; +5ac : 00000000; +5ad : 00000000; +5ae : 00000000; +5af : 00000000; +5b0 : 00000000; +5b1 : 00000000; +5b2 : 00000000; +5b3 : 00000000; +5b4 : 00000000; +5b5 : 00000000; +5b6 : 00000000; +5b7 : 00000000; +5b8 : 00000000; +5b9 : 00000000; +5ba : 00000000; +5bb : 00000000; +5bc : 00000000; +5bd : 00000000; +5be : 00000000; +5bf : 00000000; +5c0 : 00000000; +5c1 : 00000000; +5c2 : 00000000; +5c3 : 00000000; +5c4 : 00000000; +5c5 : 00000000; +5c6 : 00000000; +5c7 : 00000000; +5c8 : 00000000; +5c9 : 00000000; +5ca : 00000000; +5cb : 00000000; +5cc : 00000000; +5cd : 00000000; +5ce : 00000000; +5cf : 00000000; +5d0 : 00000000; +5d1 : 00000000; +5d2 : 00000000; +5d3 : 00000000; +5d4 : 00000000; +5d5 : 00000000; +5d6 : 00000000; +5d7 : 00000000; +5d8 : 00000000; +5d9 : 00000000; +5da : 00000000; +5db : 00000000; +5dc : 00000000; +5dd : 00000000; +5de : 00000000; +5df : 00000000; +5e0 : 00000000; +5e1 : 00000000; +5e2 : 00000000; +5e3 : 00000000; +5e4 : 00000000; +5e5 : 00000000; +5e6 : 00000000; +5e7 : 00000000; +5e8 : 00000000; +5e9 : 00000000; +5ea : 00000000; +5eb : 00000000; +5ec : 00000000; +5ed : 00000000; +5ee : 00000000; +5ef : 00000000; +5f0 : 00000000; +5f1 : 00000000; +5f2 : 00000000; +5f3 : 00000000; +5f4 : 00000000; +5f5 : 00000000; +5f6 : 00000000; +5f7 : 00000000; +5f8 : 00000000; +5f9 : 00000000; +5fa : 00000000; +5fb : 00000000; +5fc : 00000000; +5fd : 00000000; +5fe : 00000000; +5ff : 00000000; +600 : 00000000; +601 : 00000000; +602 : 00000000; +603 : 00000000; +604 : 00000000; +605 : 00000000; +606 : 00000000; +607 : 00000000; +608 : 00000000; +609 : 00000000; +60a : 00000000; +60b : 00000000; +60c : 00000000; +60d : 00000000; +60e : 00000000; +60f : 00000000; +610 : 00000000; +611 : 00000000; +612 : 00000000; +613 : 00000000; +614 : 00000000; +615 : 00000000; +616 : 00000000; +617 : 00000000; +618 : 00000000; +619 : 00000000; +61a : 00000000; +61b : 00000000; +61c : 00000000; +61d : 00000000; +61e : 00000000; +61f : 00000000; +620 : 00000000; +621 : 00000000; +622 : 00000000; +623 : 00000000; +624 : 00000000; +625 : 00000000; +626 : 00000000; +627 : 00000000; +628 : 00000000; +629 : 00000000; +62a : 00000000; +62b : 00000000; +62c : 00000000; +62d : 00000000; +62e : 00000000; +62f : 00000000; +630 : 00000000; +631 : 00000000; +632 : 00000000; +633 : 00000000; +634 : 00000000; +635 : 00000000; +636 : 00000000; +637 : 00000000; +638 : 00000000; +639 : 00000000; +63a : 00000000; +63b : 00000000; +63c : 00000000; +63d : 00000000; +63e : 00000000; +63f : 00000000; +640 : 00000000; +641 : 00000000; +642 : 00000000; +643 : 00000000; +644 : 00000000; +645 : 00000000; +646 : 00000000; +647 : 00000000; +648 : 00000000; +649 : 00000000; +64a : 00000000; +64b : 00000000; +64c : 00000000; +64d : 00000000; +64e : 00000000; +64f : 00000000; +650 : 00000000; +651 : 00000000; +652 : 00000000; +653 : 00000000; +654 : 00000000; +655 : 00000000; +656 : 00000000; +657 : 00000000; +658 : 00000000; +659 : 00000000; +65a : 00000000; +65b : 00000000; +65c : 00000000; +65d : 00000000; +65e : 00000000; +65f : 00000000; +660 : 00000000; +661 : 00000000; +662 : 00000000; +663 : 00000000; +664 : 00000000; +665 : 00000000; +666 : 00000000; +667 : 00000000; +668 : 00000000; +669 : 00000000; +66a : 00000000; +66b : 00000000; +66c : 00000000; +66d : 00000000; +66e : 00000000; +66f : 00000000; +670 : 00000000; +671 : 00000000; +672 : 00000000; +673 : 00000000; +674 : 00000000; +675 : 00000000; +676 : 00000000; +677 : 00000000; +678 : 00000000; +679 : 00000000; +67a : 00000000; +67b : 00000000; +67c : 00000000; +67d : 00000000; +67e : 00000000; +67f : 00000000; +680 : 00000000; +681 : 00000000; +682 : 00000000; +683 : 00000000; +684 : 00000000; +685 : 00000000; +686 : 00000000; +687 : 00000000; +688 : 00000000; +689 : 00000000; +68a : 00000000; +68b : 00000000; +68c : 00000000; +68d : 00000000; +68e : 00000000; +68f : 00000000; +690 : 00000000; +691 : 00000000; +692 : 00000000; +693 : 00000000; +694 : 00000000; +695 : 00000000; +696 : 00000000; +697 : 00000000; +698 : 00000000; +699 : 00000000; +69a : 00000000; +69b : 00000000; +69c : 00000000; +69d : 00000000; +69e : 00000000; +69f : 00000000; +6a0 : 00000000; +6a1 : 00000000; +6a2 : 00000000; +6a3 : 00000000; +6a4 : 00000000; +6a5 : 00000000; +6a6 : 00000000; +6a7 : 00000000; +6a8 : 00000000; +6a9 : 00000000; +6aa : 00000000; +6ab : 00000000; +6ac : 00000000; +6ad : 00000000; +6ae : 00000000; +6af : 00000000; +6b0 : 00000000; +6b1 : 00000000; +6b2 : 00000000; +6b3 : 00000000; +6b4 : 00000000; +6b5 : 00000000; +6b6 : 00000000; +6b7 : 00000000; +6b8 : 00000000; +6b9 : 00000000; +6ba : 00000000; +6bb : 00000000; +6bc : 00000000; +6bd : 00000000; +6be : 00000000; +6bf : 00000000; +6c0 : 00000000; +6c1 : 00000000; +6c2 : 00000000; +6c3 : 00000000; +6c4 : 00000000; +6c5 : 00000000; +6c6 : 00000000; +6c7 : 00000000; +6c8 : 00000000; +6c9 : 00000000; +6ca : 00000000; +6cb : 00000000; +6cc : 00000000; +6cd : 00000000; +6ce : 00000000; +6cf : 00000000; +6d0 : 00000000; +6d1 : 00000000; +6d2 : 00000000; +6d3 : 00000000; +6d4 : 00000000; +6d5 : 00000000; +6d6 : 00000000; +6d7 : 00000000; +6d8 : 00000000; +6d9 : 00000000; +6da : 00000000; +6db : 00000000; +6dc : 00000000; +6dd : 00000000; +6de : 00000000; +6df : 00000000; +6e0 : 00000000; +6e1 : 00000000; +6e2 : 00000000; +6e3 : 00000000; +6e4 : 00000000; +6e5 : 00000000; +6e6 : 00000000; +6e7 : 00000000; +6e8 : 00000000; +6e9 : 00000000; +6ea : 00000000; +6eb : 00000000; +6ec : 00000000; +6ed : 00000000; +6ee : 00000000; +6ef : 00000000; +6f0 : 00000000; +6f1 : 00000000; +6f2 : 00000000; +6f3 : 00000000; +6f4 : 00000000; +6f5 : 00000000; +6f6 : 00000000; +6f7 : 00000000; +6f8 : 00000000; +6f9 : 00000000; +6fa : 00000000; +6fb : 00000000; +6fc : 00000000; +6fd : 00000000; +6fe : 00000000; +6ff : 00000000; +700 : 00000000; +701 : 00000000; +702 : 00000000; +703 : 00000000; +704 : 00000000; +705 : 00000000; +706 : 00000000; +707 : 00000000; +708 : 00000000; +709 : 00000000; +70a : 00000000; +70b : 00000000; +70c : 00000000; +70d : 00000000; +70e : 00000000; +70f : 00000000; +710 : 00000000; +711 : 00000000; +712 : 00000000; +713 : 00000000; +714 : 00000000; +715 : 00000000; +716 : 00000000; +717 : 00000000; +718 : 00000000; +719 : 00000000; +71a : 00000000; +71b : 00000000; +71c : 00000000; +71d : 00000000; +71e : 00000000; +71f : 00000000; +720 : 00000000; +721 : 00000000; +722 : 00000000; +723 : 00000000; +724 : 00000000; +725 : 00000000; +726 : 00000000; +727 : 00000000; +728 : 00000000; +729 : 00000000; +72a : 00000000; +72b : 00000000; +72c : 00000000; +72d : 00000000; +72e : 00000000; +72f : 00000000; +730 : 00000000; +731 : 00000000; +732 : 00000000; +733 : 00000000; +734 : 00000000; +735 : 00000000; +736 : 00000000; +737 : 00000000; +738 : 00000000; +739 : 00000000; +73a : 00000000; +73b : 00000000; +73c : 00000000; +73d : 00000000; +73e : 00000000; +73f : 00000000; +740 : 00000000; +741 : 00000000; +742 : 00000000; +743 : 00000000; +744 : 00000000; +745 : 00000000; +746 : 00000000; +747 : 00000000; +748 : 00000000; +749 : 00000000; +74a : 00000000; +74b : 00000000; +74c : 00000000; +74d : 00000000; +74e : 00000000; +74f : 00000000; +750 : 00000000; +751 : 00000000; +752 : 00000000; +753 : 00000000; +754 : 00000000; +755 : 00000000; +756 : 00000000; +757 : 00000000; +758 : 00000000; +759 : 00000000; +75a : 00000000; +75b : 00000000; +75c : 00000000; +75d : 00000000; +75e : 00000000; +75f : 00000000; +760 : 00000000; +761 : 00000000; +762 : 00000000; +763 : 00000000; +764 : 00000000; +765 : 00000000; +766 : 00000000; +767 : 00000000; +768 : 00000000; +769 : 00000000; +76a : 00000000; +76b : 00000000; +76c : 00000000; +76d : 00000000; +76e : 00000000; +76f : 00000000; +770 : 00000000; +771 : 00000000; +772 : 00000000; +773 : 00000000; +774 : 00000000; +775 : 00000000; +776 : 00000000; +777 : 00000000; +778 : 00000000; +779 : 00000000; +77a : 00000000; +77b : 00000000; +77c : 00000000; +77d : 00000000; +77e : 00000000; +77f : 00000000; +780 : 00000000; +781 : 00000000; +782 : 00000000; +783 : 00000000; +784 : 00000000; +785 : 00000000; +786 : 00000000; +787 : 00000000; +788 : 00000000; +789 : 00000000; +78a : 00000000; +78b : 00000000; +78c : 00000000; +78d : 00000000; +78e : 00000000; +78f : 00000000; +790 : 00000000; +791 : 00000000; +792 : 00000000; +793 : 00000000; +794 : 00000000; +795 : 00000000; +796 : 00000000; +797 : 00000000; +798 : 00000000; +799 : 00000000; +79a : 00000000; +79b : 00000000; +79c : 00000000; +79d : 00000000; +79e : 00000000; +79f : 00000000; +7a0 : 00000000; +7a1 : 00000000; +7a2 : 00000000; +7a3 : 00000000; +7a4 : 00000000; +7a5 : 00000000; +7a6 : 00000000; +7a7 : 00000000; +7a8 : 00000000; +7a9 : 00000000; +7aa : 00000000; +7ab : 00000000; +7ac : 00000000; +7ad : 00000000; +7ae : 00000000; +7af : 00000000; +7b0 : 00000000; +7b1 : 00000000; +7b2 : 00000000; +7b3 : 00000000; +7b4 : 00000000; +7b5 : 00000000; +7b6 : 00000000; +7b7 : 00000000; +7b8 : 00000000; +7b9 : 00000000; +7ba : 00000000; +7bb : 00000000; +7bc : 00000000; +7bd : 00000000; +7be : 00000000; +7bf : 00000000; +7c0 : 00000000; +7c1 : 00000000; +7c2 : 00000000; +7c3 : 00000000; +7c4 : 00000000; +7c5 : 00000000; +7c6 : 00000000; +7c7 : 00000000; +7c8 : 00000000; +7c9 : 00000000; +7ca : 00000000; +7cb : 00000000; +7cc : 00000000; +7cd : 00000000; +7ce : 00000000; +7cf : 00000000; +7d0 : 00000000; +7d1 : 00000000; +7d2 : 00000000; +7d3 : 00000000; +7d4 : 00000000; +7d5 : 00000000; +7d6 : 00000000; +7d7 : 00000000; +7d8 : 00000000; +7d9 : 00000000; +7da : 00000000; +7db : 00000000; +7dc : 00000000; +7dd : 00000000; +7de : 00000000; +7df : 00000000; +7e0 : 00000000; +7e1 : 00000000; +7e2 : 00000000; +7e3 : 00000000; +7e4 : 00000000; +7e5 : 00000000; +7e6 : 00000000; +7e7 : 00000000; +7e8 : 00000000; +7e9 : 00000000; +7ea : 00000000; +7eb : 00000000; +7ec : 00000000; +7ed : 00000000; +7ee : 00000000; +7ef : 00000000; +7f0 : 00000000; +7f1 : 00000000; +7f2 : 00000000; +7f3 : 00000000; +7f4 : 00000000; +7f5 : 00000000; +7f6 : 00000000; +7f7 : 00000000; +7f8 : 00000000; +7f9 : 00000000; +7fa : 00000000; +7fb : 00000000; +7fc : 00000000; +7fd : 00000000; +7fe : 00000000; +7ff : 00000000; +800 : 00000000; +801 : 00000000; +802 : 00000000; +803 : 00000000; +804 : 00000000; +805 : 00000000; +806 : 00000000; +807 : 00000000; +808 : 00000000; +809 : 00000000; +80a : 00000000; +80b : 00000000; +80c : 00000000; +80d : 00000000; +80e : 00000000; +80f : 00000000; +810 : 00000000; +811 : 00000000; +812 : 00000000; +813 : 00000000; +814 : 00000000; +815 : 00000000; +816 : 00000000; +817 : 00000000; +818 : 00000000; +819 : 00000000; +81a : 00000000; +81b : 00000000; +81c : 00000000; +81d : 00000000; +81e : 00000000; +81f : 00000000; +820 : 00000000; +821 : 00000000; +822 : 00000000; +823 : 00000000; +824 : 00000000; +825 : 00000000; +826 : 00000000; +827 : 00000000; +828 : 00000000; +829 : 00000000; +82a : 00000000; +82b : 00000000; +82c : 00000000; +82d : 00000000; +82e : 00000000; +82f : 00000000; +830 : 00000000; +831 : 00000000; +832 : 00000000; +833 : 00000000; +834 : 00000000; +835 : 00000000; +836 : 00000000; +837 : 00000000; +838 : 00000000; +839 : 00000000; +83a : 00000000; +83b : 00000000; +83c : 00000000; +83d : 00000000; +83e : 00000000; +83f : 00000000; +840 : 00000000; +841 : 00000000; +842 : 00000000; +843 : 00000000; +844 : 00000000; +845 : 00000000; +846 : 00000000; +847 : 00000000; +848 : 00000000; +849 : 00000000; +84a : 00000000; +84b : 00000000; +84c : 00000000; +84d : 00000000; +84e : 00000000; +84f : 00000000; +850 : 00000000; +851 : 00000000; +852 : 00000000; +853 : 00000000; +854 : 00000000; +855 : 00000000; +856 : 00000000; +857 : 00000000; +858 : 00000000; +859 : 00000000; +85a : 00000000; +85b : 00000000; +85c : 00000000; +85d : 00000000; +85e : 00000000; +85f : 00000000; +860 : 00000000; +861 : 00000000; +862 : 00000000; +863 : 00000000; +864 : 00000000; +865 : 00000000; +866 : 00000000; +867 : 00000000; +868 : 00000000; +869 : 00000000; +86a : 00000000; +86b : 00000000; +86c : 00000000; +86d : 00000000; +86e : 00000000; +86f : 00000000; +870 : 00000000; +871 : 00000000; +872 : 00000000; +873 : 00000000; +874 : 00000000; +875 : 00000000; +876 : 00000000; +877 : 00000000; +878 : 00000000; +879 : 00000000; +87a : 00000000; +87b : 00000000; +87c : 00000000; +87d : 00000000; +87e : 00000000; +87f : 00000000; +880 : 00000000; +881 : 00000000; +882 : 00000000; +883 : 00000000; +884 : 00000000; +885 : 00000000; +886 : 00000000; +887 : 00000000; +888 : 00000000; +889 : 00000000; +88a : 00000000; +88b : 00000000; +88c : 00000000; +88d : 00000000; +88e : 00000000; +88f : 00000000; +890 : 00000000; +891 : 00000000; +892 : 00000000; +893 : 00000000; +894 : 00000000; +895 : 00000000; +896 : 00000000; +897 : 00000000; +898 : 00000000; +899 : 00000000; +89a : 00000000; +89b : 00000000; +89c : 00000000; +89d : 00000000; +89e : 00000000; +89f : 00000000; +8a0 : 00000000; +8a1 : 00000000; +8a2 : 00000000; +8a3 : 00000000; +8a4 : 00000000; +8a5 : 00000000; +8a6 : 00000000; +8a7 : 00000000; +8a8 : 00000000; +8a9 : 00000000; +8aa : 00000000; +8ab : 00000000; +8ac : 00000000; +8ad : 00000000; +8ae : 00000000; +8af : 00000000; +8b0 : 00000000; +8b1 : 00000000; +8b2 : 00000000; +8b3 : 00000000; +8b4 : 00000000; +8b5 : 00000000; +8b6 : 00000000; +8b7 : 00000000; +8b8 : 00000000; +8b9 : 00000000; +8ba : 00000000; +8bb : 00000000; +8bc : 00000000; +8bd : 00000000; +8be : 00000000; +8bf : 00000000; +8c0 : 00000000; +8c1 : 00000000; +8c2 : 00000000; +8c3 : 00000000; +8c4 : 00000000; +8c5 : 00000000; +8c6 : 00000000; +8c7 : 00000000; +8c8 : 00000000; +8c9 : 00000000; +8ca : 00000000; +8cb : 00000000; +8cc : 00000000; +8cd : 00000000; +8ce : 00000000; +8cf : 00000000; +8d0 : 00000000; +8d1 : 00000000; +8d2 : 00000000; +8d3 : 00000000; +8d4 : 00000000; +8d5 : 00000000; +8d6 : 00000000; +8d7 : 00000000; +8d8 : 00000000; +8d9 : 00000000; +8da : 00000000; +8db : 00000000; +8dc : 00000000; +8dd : 00000000; +8de : 00000000; +8df : 00000000; +8e0 : 00000000; +8e1 : 00000000; +8e2 : 00000000; +8e3 : 00000000; +8e4 : 00000000; +8e5 : 00000000; +8e6 : 00000000; +8e7 : 00000000; +8e8 : 00000000; +8e9 : 00000000; +8ea : 00000000; +8eb : 00000000; +8ec : 00000000; +8ed : 00000000; +8ee : 00000000; +8ef : 00000000; +8f0 : 00000000; +8f1 : 00000000; +8f2 : 00000000; +8f3 : 00000000; +8f4 : 00000000; +8f5 : 00000000; +8f6 : 00000000; +8f7 : 00000000; +8f8 : 00000000; +8f9 : 00000000; +8fa : 00000000; +8fb : 00000000; +8fc : 00000000; +8fd : 00000000; +8fe : 00000000; +8ff : 00000000; +900 : 00000000; +901 : 00000000; +902 : 00000000; +903 : 00000000; +904 : 00000000; +905 : 00000000; +906 : 00000000; +907 : 00000000; +908 : 00000000; +909 : 00000000; +90a : 00000000; +90b : 00000000; +90c : 00000000; +90d : 00000000; +90e : 00000000; +90f : 00000000; +910 : 00000000; +911 : 00000000; +912 : 00000000; +913 : 00000000; +914 : 00000000; +915 : 00000000; +916 : 00000000; +917 : 00000000; +918 : 00000000; +919 : 00000000; +91a : 00000000; +91b : 00000000; +91c : 00000000; +91d : 00000000; +91e : 00000000; +91f : 00000000; +920 : 00000000; +921 : 00000000; +922 : 00000000; +923 : 00000000; +924 : 00000000; +925 : 00000000; +926 : 00000000; +927 : 00000000; +928 : 00000000; +929 : 00000000; +92a : 00000000; +92b : 00000000; +92c : 00000000; +92d : 00000000; +92e : 00000000; +92f : 00000000; +930 : 00000000; +931 : 00000000; +932 : 00000000; +933 : 00000000; +934 : 00000000; +935 : 00000000; +936 : 00000000; +937 : 00000000; +938 : 00000000; +939 : 00000000; +93a : 00000000; +93b : 00000000; +93c : 00000000; +93d : 00000000; +93e : 00000000; +93f : 00000000; +940 : 00000000; +941 : 00000000; +942 : 00000000; +943 : 00000000; +944 : 00000000; +945 : 00000000; +946 : 00000000; +947 : 00000000; +948 : 00000000; +949 : 00000000; +94a : 00000000; +94b : 00000000; +94c : 00000000; +94d : 00000000; +94e : 00000000; +94f : 00000000; +950 : 00000000; +951 : 00000000; +952 : 00000000; +953 : 00000000; +954 : 00000000; +955 : 00000000; +956 : 00000000; +957 : 00000000; +958 : 00000000; +959 : 00000000; +95a : 00000000; +95b : 00000000; +95c : 00000000; +95d : 00000000; +95e : 00000000; +95f : 00000000; +960 : 00000000; +961 : 00000000; +962 : 00000000; +963 : 00000000; +964 : 00000000; +965 : 00000000; +966 : 00000000; +967 : 00000000; +968 : 00000000; +969 : 00000000; +96a : 00000000; +96b : 00000000; +96c : 00000000; +96d : 00000000; +96e : 00000000; +96f : 00000000; +970 : 00000000; +971 : 00000000; +972 : 00000000; +973 : 00000000; +974 : 00000000; +975 : 00000000; +976 : 00000000; +977 : 00000000; +978 : 00000000; +979 : 00000000; +97a : 00000000; +97b : 00000000; +97c : 00000000; +97d : 00000000; +97e : 00000000; +97f : 00000000; +980 : 00000000; +981 : 00000000; +982 : 00000000; +983 : 00000000; +984 : 00000000; +985 : 00000000; +986 : 00000000; +987 : 00000000; +988 : 00000000; +989 : 00000000; +98a : 00000000; +98b : 00000000; +98c : 00000000; +98d : 00000000; +98e : 00000000; +98f : 00000000; +990 : 00000000; +991 : 00000000; +992 : 00000000; +993 : 00000000; +994 : 00000000; +995 : 00000000; +996 : 00000000; +997 : 00000000; +998 : 00000000; +999 : 00000000; +99a : 00000000; +99b : 00000000; +99c : 00000000; +99d : 00000000; +99e : 00000000; +99f : 00000000; +9a0 : 00000000; +9a1 : 00000000; +9a2 : 00000000; +9a3 : 00000000; +9a4 : 00000000; +9a5 : 00000000; +9a6 : 00000000; +9a7 : 00000000; +9a8 : 00000000; +9a9 : 00000000; +9aa : 00000000; +9ab : 00000000; +9ac : 00000000; +9ad : 00000000; +9ae : 00000000; +9af : 00000000; +9b0 : 00000000; +9b1 : 00000000; +9b2 : 00000000; +9b3 : 00000000; +9b4 : 00000000; +9b5 : 00000000; +9b6 : 00000000; +9b7 : 00000000; +9b8 : 00000000; +9b9 : 00000000; +9ba : 00000000; +9bb : 00000000; +9bc : 00000000; +9bd : 00000000; +9be : 00000000; +9bf : 00000000; +9c0 : 00000000; +9c1 : 00000000; +9c2 : 00000000; +9c3 : 00000000; +9c4 : 00000000; +9c5 : 00000000; +9c6 : 00000000; +9c7 : 00000000; +9c8 : 00000000; +9c9 : 00000000; +9ca : 00000000; +9cb : 00000000; +9cc : 00000000; +9cd : 00000000; +9ce : 00000000; +9cf : 00000000; +9d0 : 00000000; +9d1 : 00000000; +9d2 : 00000000; +9d3 : 00000000; +9d4 : 00000000; +9d5 : 00000000; +9d6 : 00000000; +9d7 : 00000000; +9d8 : 00000000; +9d9 : 00000000; +9da : 00000000; +9db : 00000000; +9dc : 00000000; +9dd : 00000000; +9de : 00000000; +9df : 00000000; +9e0 : 00000000; +9e1 : 00000000; +9e2 : 00000000; +9e3 : 00000000; +9e4 : 00000000; +9e5 : 00000000; +9e6 : 00000000; +9e7 : 00000000; +9e8 : 00000000; +9e9 : 00000000; +9ea : 00000000; +9eb : 00000000; +9ec : 00000000; +9ed : 00000000; +9ee : 00000000; +9ef : 00000000; +9f0 : 00000000; +9f1 : 00000000; +9f2 : 00000000; +9f3 : 00000000; +9f4 : 00000000; +9f5 : 00000000; +9f6 : 00000000; +9f7 : 00000000; +9f8 : 00000000; +9f9 : 00000000; +9fa : 00000000; +9fb : 00000000; +9fc : 00000000; +9fd : 00000000; +9fe : 00000000; +9ff : 00000000; +a00 : 00000000; +a01 : 00000000; +a02 : 00000000; +a03 : 00000000; +a04 : 00000000; +a05 : 00000000; +a06 : 00000000; +a07 : 00000000; +a08 : 00000000; +a09 : 00000000; +a0a : 00000000; +a0b : 00000000; +a0c : 00000000; +a0d : 00000000; +a0e : 00000000; +a0f : 00000000; +a10 : 00000000; +a11 : 00000000; +a12 : 00000000; +a13 : 00000000; +a14 : 00000000; +a15 : 00000000; +a16 : 00000000; +a17 : 00000000; +a18 : 00000000; +a19 : 00000000; +a1a : 00000000; +a1b : 00000000; +a1c : 00000000; +a1d : 00000000; +a1e : 00000000; +a1f : 00000000; +a20 : 00000000; +a21 : 00000000; +a22 : 00000000; +a23 : 00000000; +a24 : 00000000; +a25 : 00000000; +a26 : 00000000; +a27 : 00000000; +a28 : 00000000; +a29 : 00000000; +a2a : 00000000; +a2b : 00000000; +a2c : 00000000; +a2d : 00000000; +a2e : 00000000; +a2f : 00000000; +a30 : 00000000; +a31 : 00000000; +a32 : 00000000; +a33 : 00000000; +a34 : 00000000; +a35 : 00000000; +a36 : 00000000; +a37 : 00000000; +a38 : 00000000; +a39 : 00000000; +a3a : 00000000; +a3b : 00000000; +a3c : 00000000; +a3d : 00000000; +a3e : 00000000; +a3f : 00000000; +a40 : 00000000; +a41 : 00000000; +a42 : 00000000; +a43 : 00000000; +a44 : 00000000; +a45 : 00000000; +a46 : 00000000; +a47 : 00000000; +a48 : 00000000; +a49 : 00000000; +a4a : 00000000; +a4b : 00000000; +a4c : 00000000; +a4d : 00000000; +a4e : 00000000; +a4f : 00000000; +a50 : 00000000; +a51 : 00000000; +a52 : 00000000; +a53 : 00000000; +a54 : 00000000; +a55 : 00000000; +a56 : 00000000; +a57 : 00000000; +a58 : 00000000; +a59 : 00000000; +a5a : 00000000; +a5b : 00000000; +a5c : 00000000; +a5d : 00000000; +a5e : 00000000; +a5f : 00000000; +a60 : 00000000; +a61 : 00000000; +a62 : 00000000; +a63 : 00000000; +a64 : 00000000; +a65 : 00000000; +a66 : 00000000; +a67 : 00000000; +a68 : 00000000; +a69 : 00000000; +a6a : 00000000; +a6b : 00000000; +a6c : 00000000; +a6d : 00000000; +a6e : 00000000; +a6f : 00000000; +a70 : 00000000; +a71 : 00000000; +a72 : 00000000; +a73 : 00000000; +a74 : 00000000; +a75 : 00000000; +a76 : 00000000; +a77 : 00000000; +a78 : 00000000; +a79 : 00000000; +a7a : 00000000; +a7b : 00000000; +a7c : 00000000; +a7d : 00000000; +a7e : 00000000; +a7f : 00000000; +a80 : 00000000; +a81 : 00000000; +a82 : 00000000; +a83 : 00000000; +a84 : 00000000; +a85 : 00000000; +a86 : 00000000; +a87 : 00000000; +a88 : 00000000; +a89 : 00000000; +a8a : 00000000; +a8b : 00000000; +a8c : 00000000; +a8d : 00000000; +a8e : 00000000; +a8f : 00000000; +a90 : 00000000; +a91 : 00000000; +a92 : 00000000; +a93 : 00000000; +a94 : 00000000; +a95 : 00000000; +a96 : 00000000; +a97 : 00000000; +a98 : 00000000; +a99 : 00000000; +a9a : 00000000; +a9b : 00000000; +a9c : 00000000; +a9d : 00000000; +a9e : 00000000; +a9f : 00000000; +aa0 : 00000000; +aa1 : 00000000; +aa2 : 00000000; +aa3 : 00000000; +aa4 : 00000000; +aa5 : 00000000; +aa6 : 00000000; +aa7 : 00000000; +aa8 : 00000000; +aa9 : 00000000; +aaa : 00000000; +aab : 00000000; +aac : 00000000; +aad : 00000000; +aae : 00000000; +aaf : 00000000; +ab0 : 00000000; +ab1 : 00000000; +ab2 : 00000000; +ab3 : 00000000; +ab4 : 00000000; +ab5 : 00000000; +ab6 : 00000000; +ab7 : 00000000; +ab8 : 00000000; +ab9 : 00000000; +aba : 00000000; +abb : 00000000; +abc : 00000000; +abd : 00000000; +abe : 00000000; +abf : 00000000; +ac0 : 00000000; +ac1 : 00000000; +ac2 : 00000000; +ac3 : 00000000; +ac4 : 00000000; +ac5 : 00000000; +ac6 : 00000000; +ac7 : 00000000; +ac8 : 00000000; +ac9 : 00000000; +aca : 00000000; +acb : 00000000; +acc : 00000000; +acd : 00000000; +ace : 00000000; +acf : 00000000; +ad0 : 00000000; +ad1 : 00000000; +ad2 : 00000000; +ad3 : 00000000; +ad4 : 00000000; +ad5 : 00000000; +ad6 : 00000000; +ad7 : 00000000; +ad8 : 00000000; +ad9 : 00000000; +ada : 00000000; +adb : 00000000; +adc : 00000000; +add : 00000000; +ade : 00000000; +adf : 00000000; +ae0 : 00000000; +ae1 : 00000000; +ae2 : 00000000; +ae3 : 00000000; +ae4 : 00000000; +ae5 : 00000000; +ae6 : 00000000; +ae7 : 00000000; +ae8 : 00000000; +ae9 : 00000000; +aea : 00000000; +aeb : 00000000; +aec : 00000000; +aed : 00000000; +aee : 00000000; +aef : 00000000; +af0 : 00000000; +af1 : 00000000; +af2 : 00000000; +af3 : 00000000; +af4 : 00000000; +af5 : 00000000; +af6 : 00000000; +af7 : 00000000; +af8 : 00000000; +af9 : 00000000; +afa : 00000000; +afb : 00000000; +afc : 00000000; +afd : 00000000; +afe : 00000000; +aff : 00000000; +b00 : 00000000; +b01 : 00000000; +b02 : 00000000; +b03 : 00000000; +b04 : 00000000; +b05 : 00000000; +b06 : 00000000; +b07 : 00000000; +b08 : 00000000; +b09 : 00000000; +b0a : 00000000; +b0b : 00000000; +b0c : 00000000; +b0d : 00000000; +b0e : 00000000; +b0f : 00000000; +b10 : 00000000; +b11 : 00000000; +b12 : 00000000; +b13 : 00000000; +b14 : 00000000; +b15 : 00000000; +b16 : 00000000; +b17 : 00000000; +b18 : 00000000; +b19 : 00000000; +b1a : 00000000; +b1b : 00000000; +b1c : 00000000; +b1d : 00000000; +b1e : 00000000; +b1f : 00000000; +b20 : 00000000; +b21 : 00000000; +b22 : 00000000; +b23 : 00000000; +b24 : 00000000; +b25 : 00000000; +b26 : 00000000; +b27 : 00000000; +b28 : 00000000; +b29 : 00000000; +b2a : 00000000; +b2b : 00000000; +b2c : 00000000; +b2d : 00000000; +b2e : 00000000; +b2f : 00000000; +b30 : 00000000; +b31 : 00000000; +b32 : 00000000; +b33 : 00000000; +b34 : 00000000; +b35 : 00000000; +b36 : 00000000; +b37 : 00000000; +b38 : 00000000; +b39 : 00000000; +b3a : 00000000; +b3b : 00000000; +b3c : 00000000; +b3d : 00000000; +b3e : 00000000; +b3f : 00000000; +b40 : 00000000; +b41 : 00000000; +b42 : 00000000; +b43 : 00000000; +b44 : 00000000; +b45 : 00000000; +b46 : 00000000; +b47 : 00000000; +b48 : 00000000; +b49 : 00000000; +b4a : 00000000; +b4b : 00000000; +b4c : 00000000; +b4d : 00000000; +b4e : 00000000; +b4f : 00000000; +b50 : 00000000; +b51 : 00000000; +b52 : 00000000; +b53 : 00000000; +b54 : 00000000; +b55 : 00000000; +b56 : 00000000; +b57 : 00000000; +b58 : 00000000; +b59 : 00000000; +b5a : 00000000; +b5b : 00000000; +b5c : 00000000; +b5d : 00000000; +b5e : 00000000; +b5f : 00000000; +b60 : 00000000; +b61 : 00000000; +b62 : 00000000; +b63 : 00000000; +b64 : 00000000; +b65 : 00000000; +b66 : 00000000; +b67 : 00000000; +b68 : 00000000; +b69 : 00000000; +b6a : 00000000; +b6b : 00000000; +b6c : 00000000; +b6d : 00000000; +b6e : 00000000; +b6f : 00000000; +b70 : 00000000; +b71 : 00000000; +b72 : 00000000; +b73 : 00000000; +b74 : 00000000; +b75 : 00000000; +b76 : 00000000; +b77 : 00000000; +b78 : 00000000; +b79 : 00000000; +b7a : 00000000; +b7b : 00000000; +b7c : 00000000; +b7d : 00000000; +b7e : 00000000; +b7f : 00000000; +b80 : 00000000; +b81 : 00000000; +b82 : 00000000; +b83 : 00000000; +b84 : 00000000; +b85 : 00000000; +b86 : 00000000; +b87 : 00000000; +b88 : 00000000; +b89 : 00000000; +b8a : 00000000; +b8b : 00000000; +b8c : 00000000; +b8d : 00000000; +b8e : 00000000; +b8f : 00000000; +b90 : 00000000; +b91 : 00000000; +b92 : 00000000; +b93 : 00000000; +b94 : 00000000; +b95 : 00000000; +b96 : 00000000; +b97 : 00000000; +b98 : 00000000; +b99 : 00000000; +b9a : 00000000; +b9b : 00000000; +b9c : 00000000; +b9d : 00000000; +b9e : 00000000; +b9f : 00000000; +ba0 : 00000000; +ba1 : 00000000; +ba2 : 00000000; +ba3 : 00000000; +ba4 : 00000000; +ba5 : 00000000; +ba6 : 00000000; +ba7 : 00000000; +ba8 : 00000000; +ba9 : 00000000; +baa : 00000000; +bab : 00000000; +bac : 00000000; +bad : 00000000; +bae : 00000000; +baf : 00000000; +bb0 : 00000000; +bb1 : 00000000; +bb2 : 00000000; +bb3 : 00000000; +bb4 : 00000000; +bb5 : 00000000; +bb6 : 00000000; +bb7 : 00000000; +bb8 : 00000000; +bb9 : 00000000; +bba : 00000000; +bbb : 00000000; +bbc : 00000000; +bbd : 00000000; +bbe : 00000000; +bbf : 00000000; +bc0 : 00000000; +bc1 : 00000000; +bc2 : 00000000; +bc3 : 00000000; +bc4 : 00000000; +bc5 : 00000000; +bc6 : 00000000; +bc7 : 00000000; +bc8 : 00000000; +bc9 : 00000000; +bca : 00000000; +bcb : 00000000; +bcc : 00000000; +bcd : 00000000; +bce : 00000000; +bcf : 00000000; +bd0 : 00000000; +bd1 : 00000000; +bd2 : 00000000; +bd3 : 00000000; +bd4 : 00000000; +bd5 : 00000000; +bd6 : 00000000; +bd7 : 00000000; +bd8 : 00000000; +bd9 : 00000000; +bda : 00000000; +bdb : 00000000; +bdc : 00000000; +bdd : 00000000; +bde : 00000000; +bdf : 00000000; +be0 : 00000000; +be1 : 00000000; +be2 : 00000000; +be3 : 00000000; +be4 : 00000000; +be5 : 00000000; +be6 : 00000000; +be7 : 00000000; +be8 : 00000000; +be9 : 00000000; +bea : 00000000; +beb : 00000000; +bec : 00000000; +bed : 00000000; +bee : 00000000; +bef : 00000000; +bf0 : 00000000; +bf1 : 00000000; +bf2 : 00000000; +bf3 : 00000000; +bf4 : 00000000; +bf5 : 00000000; +bf6 : 00000000; +bf7 : 00000000; +bf8 : 00000000; +bf9 : 00000000; +bfa : 00000000; +bfb : 00000000; +bfc : 00000000; +bfd : 00000000; +bfe : 00000000; +bff : 00000000; +c00 : 00000000; +c01 : 00000000; +c02 : 00000000; +c03 : 00000000; +c04 : 00000000; +c05 : 00000000; +c06 : 00000000; +c07 : 00000000; +c08 : 00000000; +c09 : 00000000; +c0a : 00000000; +c0b : 00000000; +c0c : 00000000; +c0d : 00000000; +c0e : 00000000; +c0f : 00000000; +c10 : 00000000; +c11 : 00000000; +c12 : 00000000; +c13 : 00000000; +c14 : 00000000; +c15 : 00000000; +c16 : 00000000; +c17 : 00000000; +c18 : 00000000; +c19 : 00000000; +c1a : 00000000; +c1b : 00000000; +c1c : 00000000; +c1d : 00000000; +c1e : 00000000; +c1f : 00000000; +c20 : 00000000; +c21 : 00000000; +c22 : 00000000; +c23 : 00000000; +c24 : 00000000; +c25 : 00000000; +c26 : 00000000; +c27 : 00000000; +c28 : 00000000; +c29 : 00000000; +c2a : 00000000; +c2b : 00000000; +c2c : 00000000; +c2d : 00000000; +c2e : 00000000; +c2f : 00000000; +c30 : 00000000; +c31 : 00000000; +c32 : 00000000; +c33 : 00000000; +c34 : 00000000; +c35 : 00000000; +c36 : 00000000; +c37 : 00000000; +c38 : 00000000; +c39 : 00000000; +c3a : 00000000; +c3b : 00000000; +c3c : 00000000; +c3d : 00000000; +c3e : 00000000; +c3f : 00000000; +c40 : 00000000; +c41 : 00000000; +c42 : 00000000; +c43 : 00000000; +c44 : 00000000; +c45 : 00000000; +c46 : 00000000; +c47 : 00000000; +c48 : 00000000; +c49 : 00000000; +c4a : 00000000; +c4b : 00000000; +c4c : 00000000; +c4d : 00000000; +c4e : 00000000; +c4f : 00000000; +c50 : 00000000; +c51 : 00000000; +c52 : 00000000; +c53 : 00000000; +c54 : 00000000; +c55 : 00000000; +c56 : 00000000; +c57 : 00000000; +c58 : 00000000; +c59 : 00000000; +c5a : 00000000; +c5b : 00000000; +c5c : 00000000; +c5d : 00000000; +c5e : 00000000; +c5f : 00000000; +c60 : 00000000; +c61 : 00000000; +c62 : 00000000; +c63 : 00000000; +c64 : 00000000; +c65 : 00000000; +c66 : 00000000; +c67 : 00000000; +c68 : 00000000; +c69 : 00000000; +c6a : 00000000; +c6b : 00000000; +c6c : 00000000; +c6d : 00000000; +c6e : 00000000; +c6f : 00000000; +c70 : 00000000; +c71 : 00000000; +c72 : 00000000; +c73 : 00000000; +c74 : 00000000; +c75 : 00000000; +c76 : 00000000; +c77 : 00000000; +c78 : 00000000; +c79 : 00000000; +c7a : 00000000; +c7b : 00000000; +c7c : 00000000; +c7d : 00000000; +c7e : 00000000; +c7f : 00000000; +c80 : 00000000; +c81 : 00000000; +c82 : 00000000; +c83 : 00000000; +c84 : 00000000; +c85 : 00000000; +c86 : 00000000; +c87 : 00000000; +c88 : 00000000; +c89 : 00000000; +c8a : 00000000; +c8b : 00000000; +c8c : 00000000; +c8d : 00000000; +c8e : 00000000; +c8f : 00000000; +c90 : 00000000; +c91 : 00000000; +c92 : 00000000; +c93 : 00000000; +c94 : 00000000; +c95 : 00000000; +c96 : 00000000; +c97 : 00000000; +c98 : 00000000; +c99 : 00000000; +c9a : 00000000; +c9b : 00000000; +c9c : 00000000; +c9d : 00000000; +c9e : 00000000; +c9f : 00000000; +ca0 : 00000000; +ca1 : 00000000; +ca2 : 00000000; +ca3 : 00000000; +ca4 : 00000000; +ca5 : 00000000; +ca6 : 00000000; +ca7 : 00000000; +ca8 : 00000000; +ca9 : 00000000; +caa : 00000000; +cab : 00000000; +cac : 00000000; +cad : 00000000; +cae : 00000000; +caf : 00000000; +cb0 : 00000000; +cb1 : 00000000; +cb2 : 00000000; +cb3 : 00000000; +cb4 : 00000000; +cb5 : 00000000; +cb6 : 00000000; +cb7 : 00000000; +cb8 : 00000000; +cb9 : 00000000; +cba : 00000000; +cbb : 00000000; +cbc : 00000000; +cbd : 00000000; +cbe : 00000000; +cbf : 00000000; +cc0 : 00000000; +cc1 : 00000000; +cc2 : 00000000; +cc3 : 00000000; +cc4 : 00000000; +cc5 : 00000000; +cc6 : 00000000; +cc7 : 00000000; +cc8 : 00000000; +cc9 : 00000000; +cca : 00000000; +ccb : 00000000; +ccc : 00000000; +ccd : 00000000; +cce : 00000000; +ccf : 00000000; +cd0 : 00000000; +cd1 : 00000000; +cd2 : 00000000; +cd3 : 00000000; +cd4 : 00000000; +cd5 : 00000000; +cd6 : 00000000; +cd7 : 00000000; +cd8 : 00000000; +cd9 : 00000000; +cda : 00000000; +cdb : 00000000; +cdc : 00000000; +cdd : 00000000; +cde : 00000000; +cdf : 00000000; +ce0 : 00000000; +ce1 : 00000000; +ce2 : 00000000; +ce3 : 00000000; +ce4 : 00000000; +ce5 : 00000000; +ce6 : 00000000; +ce7 : 00000000; +ce8 : 00000000; +ce9 : 00000000; +cea : 00000000; +ceb : 00000000; +cec : 00000000; +ced : 00000000; +cee : 00000000; +cef : 00000000; +cf0 : 00000000; +cf1 : 00000000; +cf2 : 00000000; +cf3 : 00000000; +cf4 : 00000000; +cf5 : 00000000; +cf6 : 00000000; +cf7 : 00000000; +cf8 : 00000000; +cf9 : 00000000; +cfa : 00000000; +cfb : 00000000; +cfc : 00000000; +cfd : 00000000; +cfe : 00000000; +cff : 00000000; +d00 : 00000000; +d01 : 00000000; +d02 : 00000000; +d03 : 00000000; +d04 : 00000000; +d05 : 00000000; +d06 : 00000000; +d07 : 00000000; +d08 : 00000000; +d09 : 00000000; +d0a : 00000000; +d0b : 00000000; +d0c : 00000000; +d0d : 00000000; +d0e : 00000000; +d0f : 00000000; +d10 : 00000000; +d11 : 00000000; +d12 : 00000000; +d13 : 00000000; +d14 : 00000000; +d15 : 00000000; +d16 : 00000000; +d17 : 00000000; +d18 : 00000000; +d19 : 00000000; +d1a : 00000000; +d1b : 00000000; +d1c : 00000000; +d1d : 00000000; +d1e : 00000000; +d1f : 00000000; +d20 : 00000000; +d21 : 00000000; +d22 : 00000000; +d23 : 00000000; +d24 : 00000000; +d25 : 00000000; +d26 : 00000000; +d27 : 00000000; +d28 : 00000000; +d29 : 00000000; +d2a : 00000000; +d2b : 00000000; +d2c : 00000000; +d2d : 00000000; +d2e : 00000000; +d2f : 00000000; +d30 : 00000000; +d31 : 00000000; +d32 : 00000000; +d33 : 00000000; +d34 : 00000000; +d35 : 00000000; +d36 : 00000000; +d37 : 00000000; +d38 : 00000000; +d39 : 00000000; +d3a : 00000000; +d3b : 00000000; +d3c : 00000000; +d3d : 00000000; +d3e : 00000000; +d3f : 00000000; +d40 : 00000000; +d41 : 00000000; +d42 : 00000000; +d43 : 00000000; +d44 : 00000000; +d45 : 00000000; +d46 : 00000000; +d47 : 00000000; +d48 : 00000000; +d49 : 00000000; +d4a : 00000000; +d4b : 00000000; +d4c : 00000000; +d4d : 00000000; +d4e : 00000000; +d4f : 00000000; +d50 : 00000000; +d51 : 00000000; +d52 : 00000000; +d53 : 00000000; +d54 : 00000000; +d55 : 00000000; +d56 : 00000000; +d57 : 00000000; +d58 : 00000000; +d59 : 00000000; +d5a : 00000000; +d5b : 00000000; +d5c : 00000000; +d5d : 00000000; +d5e : 00000000; +d5f : 00000000; +d60 : 00000000; +d61 : 00000000; +d62 : 00000000; +d63 : 00000000; +d64 : 00000000; +d65 : 00000000; +d66 : 00000000; +d67 : 00000000; +d68 : 00000000; +d69 : 00000000; +d6a : 00000000; +d6b : 00000000; +d6c : 00000000; +d6d : 00000000; +d6e : 00000000; +d6f : 00000000; +d70 : 00000000; +d71 : 00000000; +d72 : 00000000; +d73 : 00000000; +d74 : 00000000; +d75 : 00000000; +d76 : 00000000; +d77 : 00000000; +d78 : 00000000; +d79 : 00000000; +d7a : 00000000; +d7b : 00000000; +d7c : 00000000; +d7d : 00000000; +d7e : 00000000; +d7f : 00000000; +d80 : 00000000; +d81 : 00000000; +d82 : 00000000; +d83 : 00000000; +d84 : 00000000; +d85 : 00000000; +d86 : 00000000; +d87 : 00000000; +d88 : 00000000; +d89 : 00000000; +d8a : 00000000; +d8b : 00000000; +d8c : 00000000; +d8d : 00000000; +d8e : 00000000; +d8f : 00000000; +d90 : 00000000; +d91 : 00000000; +d92 : 00000000; +d93 : 00000000; +d94 : 00000000; +d95 : 00000000; +d96 : 00000000; +d97 : 00000000; +d98 : 00000000; +d99 : 00000000; +d9a : 00000000; +d9b : 00000000; +d9c : 00000000; +d9d : 00000000; +d9e : 00000000; +d9f : 00000000; +da0 : 00000000; +da1 : 00000000; +da2 : 00000000; +da3 : 00000000; +da4 : 00000000; +da5 : 00000000; +da6 : 00000000; +da7 : 00000000; +da8 : 00000000; +da9 : 00000000; +daa : 00000000; +dab : 00000000; +dac : 00000000; +dad : 00000000; +dae : 00000000; +daf : 00000000; +db0 : 00000000; +db1 : 00000000; +db2 : 00000000; +db3 : 00000000; +db4 : 00000000; +db5 : 00000000; +db6 : 00000000; +db7 : 00000000; +db8 : 00000000; +db9 : 00000000; +dba : 00000000; +dbb : 00000000; +dbc : 00000000; +dbd : 00000000; +dbe : 00000000; +dbf : 00000000; +dc0 : 00000000; +dc1 : 00000000; +dc2 : 00000000; +dc3 : 00000000; +dc4 : 00000000; +dc5 : 00000000; +dc6 : 00000000; +dc7 : 00000000; +dc8 : 00000000; +dc9 : 00000000; +dca : 00000000; +dcb : 00000000; +dcc : 00000000; +dcd : 00000000; +dce : 00000000; +dcf : 00000000; +dd0 : 00000000; +dd1 : 00000000; +dd2 : 00000000; +dd3 : 00000000; +dd4 : 00000000; +dd5 : 00000000; +dd6 : 00000000; +dd7 : 00000000; +dd8 : 00000000; +dd9 : 00000000; +dda : 00000000; +ddb : 00000000; +ddc : 00000000; +ddd : 00000000; +dde : 00000000; +ddf : 00000000; +de0 : 00000000; +de1 : 00000000; +de2 : 00000000; +de3 : 00000000; +de4 : 00000000; +de5 : 00000000; +de6 : 00000000; +de7 : 00000000; +de8 : 00000000; +de9 : 00000000; +dea : 00000000; +deb : 00000000; +dec : 00000000; +ded : 00000000; +dee : 00000000; +def : 00000000; +df0 : 00000000; +df1 : 00000000; +df2 : 00000000; +df3 : 00000000; +df4 : 00000000; +df5 : 00000000; +df6 : 00000000; +df7 : 00000000; +df8 : 00000000; +df9 : 00000000; +dfa : 00000000; +dfb : 00000000; +dfc : 00000000; +dfd : 00000000; +dfe : 00000000; +dff : 00000000; +e00 : 00000000; +e01 : 00000000; +e02 : 00000000; +e03 : 00000000; +e04 : 00000000; +e05 : 00000000; +e06 : 00000000; +e07 : 00000000; +e08 : 00000000; +e09 : 00000000; +e0a : 00000000; +e0b : 00000000; +e0c : 00000000; +e0d : 00000000; +e0e : 00000000; +e0f : 00000000; +e10 : 00000000; +e11 : 00000000; +e12 : 00000000; +e13 : 00000000; +e14 : 00000000; +e15 : 00000000; +e16 : 00000000; +e17 : 00000000; +e18 : 00000000; +e19 : 00000000; +e1a : 00000000; +e1b : 00000000; +e1c : 00000000; +e1d : 00000000; +e1e : 00000000; +e1f : 00000000; +e20 : 00000000; +e21 : 00000000; +e22 : 00000000; +e23 : 00000000; +e24 : 00000000; +e25 : 00000000; +e26 : 00000000; +e27 : 00000000; +e28 : 00000000; +e29 : 00000000; +e2a : 00000000; +e2b : 00000000; +e2c : 00000000; +e2d : 00000000; +e2e : 00000000; +e2f : 00000000; +e30 : 00000000; +e31 : 00000000; +e32 : 00000000; +e33 : 00000000; +e34 : 00000000; +e35 : 00000000; +e36 : 00000000; +e37 : 00000000; +e38 : 00000000; +e39 : 00000000; +e3a : 00000000; +e3b : 00000000; +e3c : 00000000; +e3d : 00000000; +e3e : 00000000; +e3f : 00000000; +e40 : 00000000; +e41 : 00000000; +e42 : 00000000; +e43 : 00000000; +e44 : 00000000; +e45 : 00000000; +e46 : 00000000; +e47 : 00000000; +e48 : 00000000; +e49 : 00000000; +e4a : 00000000; +e4b : 00000000; +e4c : 00000000; +e4d : 00000000; +e4e : 00000000; +e4f : 00000000; +e50 : 00000000; +e51 : 00000000; +e52 : 00000000; +e53 : 00000000; +e54 : 00000000; +e55 : 00000000; +e56 : 00000000; +e57 : 00000000; +e58 : 00000000; +e59 : 00000000; +e5a : 00000000; +e5b : 00000000; +e5c : 00000000; +e5d : 00000000; +e5e : 00000000; +e5f : 00000000; +e60 : 00000000; +e61 : 00000000; +e62 : 00000000; +e63 : 00000000; +e64 : 00000000; +e65 : 00000000; +e66 : 00000000; +e67 : 00000000; +e68 : 00000000; +e69 : 00000000; +e6a : 00000000; +e6b : 00000000; +e6c : 00000000; +e6d : 00000000; +e6e : 00000000; +e6f : 00000000; +e70 : 00000000; +e71 : 00000000; +e72 : 00000000; +e73 : 00000000; +e74 : 00000000; +e75 : 00000000; +e76 : 00000000; +e77 : 00000000; +e78 : 00000000; +e79 : 00000000; +e7a : 00000000; +e7b : 00000000; +e7c : 00000000; +e7d : 00000000; +e7e : 00000000; +e7f : 00000000; +e80 : 00000000; +e81 : 00000000; +e82 : 00000000; +e83 : 00000000; +e84 : 00000000; +e85 : 00000000; +e86 : 00000000; +e87 : 00000000; +e88 : 00000000; +e89 : 00000000; +e8a : 00000000; +e8b : 00000000; +e8c : 00000000; +e8d : 00000000; +e8e : 00000000; +e8f : 00000000; +e90 : 00000000; +e91 : 00000000; +e92 : 00000000; +e93 : 00000000; +e94 : 00000000; +e95 : 00000000; +e96 : 00000000; +e97 : 00000000; +e98 : 00000000; +e99 : 00000000; +e9a : 00000000; +e9b : 00000000; +e9c : 00000000; +e9d : 00000000; +e9e : 00000000; +e9f : 00000000; +ea0 : 00000000; +ea1 : 00000000; +ea2 : 00000000; +ea3 : 00000000; +ea4 : 00000000; +ea5 : 00000000; +ea6 : 00000000; +ea7 : 00000000; +ea8 : 00000000; +ea9 : 00000000; +eaa : 00000000; +eab : 00000000; +eac : 00000000; +ead : 00000000; +eae : 00000000; +eaf : 00000000; +eb0 : 00000000; +eb1 : 00000000; +eb2 : 00000000; +eb3 : 00000000; +eb4 : 00000000; +eb5 : 00000000; +eb6 : 00000000; +eb7 : 00000000; +eb8 : 00000000; +eb9 : 00000000; +eba : 00000000; +ebb : 00000000; +ebc : 00000000; +ebd : 00000000; +ebe : 00000000; +ebf : 00000000; +ec0 : 00000000; +ec1 : 00000000; +ec2 : 00000000; +ec3 : 00000000; +ec4 : 00000000; +ec5 : 00000000; +ec6 : 00000000; +ec7 : 00000000; +ec8 : 00000000; +ec9 : 00000000; +eca : 00000000; +ecb : 00000000; +ecc : 00000000; +ecd : 00000000; +ece : 00000000; +ecf : 00000000; +ed0 : 00000000; +ed1 : 00000000; +ed2 : 00000000; +ed3 : 00000000; +ed4 : 00000000; +ed5 : 00000000; +ed6 : 00000000; +ed7 : 00000000; +ed8 : 00000000; +ed9 : 00000000; +eda : 00000000; +edb : 00000000; +edc : 00000000; +edd : 00000000; +ede : 00000000; +edf : 00000000; +ee0 : 00000000; +ee1 : 00000000; +ee2 : 00000000; +ee3 : 00000000; +ee4 : 00000000; +ee5 : 00000000; +ee6 : 00000000; +ee7 : 00000000; +ee8 : 00000000; +ee9 : 00000000; +eea : 00000000; +eeb : 00000000; +eec : 00000000; +eed : 00000000; +eee : 00000000; +eef : 00000000; +ef0 : 00000000; +ef1 : 00000000; +ef2 : 00000000; +ef3 : 00000000; +ef4 : 00000000; +ef5 : 00000000; +ef6 : 00000000; +ef7 : 00000000; +ef8 : 00000000; +ef9 : 00000000; +efa : 00000000; +efb : 00000000; +efc : 00000000; +efd : 00000000; +efe : 00000000; +eff : 00000000; +f00 : 00000000; +f01 : 00000000; +f02 : 00000000; +f03 : 00000000; +f04 : 00000000; +f05 : 00000000; +f06 : 00000000; +f07 : 00000000; +f08 : 00000000; +f09 : 00000000; +f0a : 00000000; +f0b : 00000000; +f0c : 00000000; +f0d : 00000000; +f0e : 00000000; +f0f : 00000000; +f10 : 00000000; +f11 : 00000000; +f12 : 00000000; +f13 : 00000000; +f14 : 00000000; +f15 : 00000000; +f16 : 00000000; +f17 : 00000000; +f18 : 00000000; +f19 : 00000000; +f1a : 00000000; +f1b : 00000000; +f1c : 00000000; +f1d : 00000000; +f1e : 00000000; +f1f : 00000000; +f20 : 00000000; +f21 : 00000000; +f22 : 00000000; +f23 : 00000000; +f24 : 00000000; +f25 : 00000000; +f26 : 00000000; +f27 : 00000000; +f28 : 00000000; +f29 : 00000000; +f2a : 00000000; +f2b : 00000000; +f2c : 00000000; +f2d : 00000000; +f2e : 00000000; +f2f : 00000000; +f30 : 00000000; +f31 : 00000000; +f32 : 00000000; +f33 : 00000000; +f34 : 00000000; +f35 : 00000000; +f36 : 00000000; +f37 : 00000000; +f38 : 00000000; +f39 : 00000000; +f3a : 00000000; +f3b : 00000000; +f3c : 00000000; +f3d : 00000000; +f3e : 00000000; +f3f : 00000000; +f40 : 00000000; +f41 : 00000000; +f42 : 00000000; +f43 : 00000000; +f44 : 00000000; +f45 : 00000000; +f46 : 00000000; +f47 : 00000000; +f48 : 00000000; +f49 : 00000000; +f4a : 00000000; +f4b : 00000000; +f4c : 00000000; +f4d : 00000000; +f4e : 00000000; +f4f : 00000000; +f50 : 00000000; +f51 : 00000000; +f52 : 00000000; +f53 : 00000000; +f54 : 00000000; +f55 : 00000000; +f56 : 00000000; +f57 : 00000000; +f58 : 00000000; +f59 : 00000000; +f5a : 00000000; +f5b : 00000000; +f5c : 00000000; +f5d : 00000000; +f5e : 00000000; +f5f : 00000000; +f60 : 00000000; +f61 : 00000000; +f62 : 00000000; +f63 : 00000000; +f64 : 00000000; +f65 : 00000000; +f66 : 00000000; +f67 : 00000000; +f68 : 00000000; +f69 : 00000000; +f6a : 00000000; +f6b : 00000000; +f6c : 00000000; +f6d : 00000000; +f6e : 00000000; +f6f : 00000000; +f70 : 00000000; +f71 : 00000000; +f72 : 00000000; +f73 : 00000000; +f74 : 00000000; +f75 : 00000000; +f76 : 00000000; +f77 : 00000000; +f78 : 00000000; +f79 : 00000000; +f7a : 00000000; +f7b : 00000000; +f7c : 00000000; +f7d : 00000000; +f7e : 00000000; +f7f : 00000000; +f80 : 00000000; +f81 : 00000000; +f82 : 00000000; +f83 : 00000000; +f84 : 00000000; +f85 : 00000000; +f86 : 00000000; +f87 : 00000000; +f88 : 00000000; +f89 : 00000000; +f8a : 00000000; +f8b : 00000000; +f8c : 00000000; +f8d : 00000000; +f8e : 00000000; +f8f : 00000000; +f90 : 00000000; +f91 : 00000000; +f92 : 00000000; +f93 : 00000000; +f94 : 00000000; +f95 : 00000000; +f96 : 00000000; +f97 : 00000000; +f98 : 00000000; +f99 : 00000000; +f9a : 00000000; +f9b : 00000000; +f9c : 00000000; +f9d : 00000000; +f9e : 00000000; +f9f : 00000000; +fa0 : 00000000; +fa1 : 00000000; +fa2 : 00000000; +fa3 : 00000000; +fa4 : 00000000; +fa5 : 00000000; +fa6 : 00000000; +fa7 : 00000000; +fa8 : 00000000; +fa9 : 00000000; +faa : 00000000; +fab : 00000000; +fac : 00000000; +fad : 00000000; +fae : 00000000; +faf : 00000000; +fb0 : 00000000; +fb1 : 00000000; +fb2 : 00000000; +fb3 : 00000000; +fb4 : 00000000; +fb5 : 00000000; +fb6 : 00000000; +fb7 : 00000000; +fb8 : 00000000; +fb9 : 00000000; +fba : 00000000; +fbb : 00000000; +fbc : 00000000; +fbd : 00000000; +fbe : 00000000; +fbf : 00000000; +fc0 : 00000000; +fc1 : 00000000; +fc2 : 00000000; +fc3 : 00000000; +fc4 : 00000000; +fc5 : 00000000; +fc6 : 00000000; +fc7 : 00000000; +fc8 : 00000000; +fc9 : 00000000; +fca : 00000000; +fcb : 00000000; +fcc : 00000000; +fcd : 00000000; +fce : 00000000; +fcf : 00000000; +fd0 : 00000000; +fd1 : 00000000; +fd2 : 00000000; +fd3 : 00000000; +fd4 : 00000000; +fd5 : 00000000; +fd6 : 00000000; +fd7 : 00000000; +fd8 : 00000000; +fd9 : 00000000; +fda : 00000000; +fdb : 00000000; +fdc : 00000000; +fdd : 00000000; +fde : 00000000; +fdf : 00000000; +fe0 : 00000000; +fe1 : 00000000; +fe2 : 00000000; +fe3 : 00000000; +fe4 : 00000000; +fe5 : 00000000; +fe6 : 00000000; +fe7 : 00000000; +fe8 : 00000000; +fe9 : 00000000; +fea : 00000000; +feb : 00000000; +fec : 00000000; +fed : 00000000; +fee : 00000000; +fef : 00000000; +ff0 : 00000000; +ff1 : 00000000; +ff2 : 00000000; +ff3 : 00000000; +ff4 : 00000000; +ff5 : 00000000; +ff6 : 00000000; +ff7 : 00000000; +ff8 : 00000000; +ff9 : 00000000; +ffa : 00000000; +ffb : 00000000; +ffc : 00000000; +ffd : 00000000; +ffe : 00000000; +fff : 00000000; +1000 : 00000000; +1001 : 00000000; +1002 : 00000000; +1003 : 00000000; +1004 : 00000000; +1005 : 00000000; +1006 : 00000000; +1007 : 00000000; +1008 : 00000000; +1009 : 00000000; +100a : 00000000; +100b : 00000000; +100c : 00000000; +100d : 00000000; +100e : 00000000; +100f : 00000000; +1010 : 00000000; +1011 : 00000000; +1012 : 00000000; +1013 : 00000000; +1014 : 00000000; +1015 : 00000000; +1016 : 00000000; +1017 : 00000000; +1018 : 00000000; +1019 : 00000000; +101a : 00000000; +101b : 00000000; +101c : 00000000; +101d : 00000000; +101e : 00000000; +101f : 00000000; +1020 : 00000000; +1021 : 00000000; +1022 : 00000000; +1023 : 00000000; +1024 : 00000000; +1025 : 00000000; +1026 : 00000000; +1027 : 00000000; +1028 : 00000000; +1029 : 00000000; +102a : 00000000; +102b : 00000000; +102c : 00000000; +102d : 00000000; +102e : 00000000; +102f : 00000000; +1030 : 00000000; +1031 : 00000000; +1032 : 00000000; +1033 : 00000000; +1034 : 00000000; +1035 : 00000000; +1036 : 00000000; +1037 : 00000000; +1038 : 00000000; +1039 : 00000000; +103a : 00000000; +103b : 00000000; +103c : 00000000; +103d : 00000000; +103e : 00000000; +103f : 00000000; +1040 : 00000000; +1041 : 00000000; +1042 : 00000000; +1043 : 00000000; +1044 : 00000000; +1045 : 00000000; +1046 : 00000000; +1047 : 00000000; +1048 : 00000000; +1049 : 00000000; +104a : 00000000; +104b : 00000000; +104c : 00000000; +104d : 00000000; +104e : 00000000; +104f : 00000000; +1050 : 00000000; +1051 : 00000000; +1052 : 00000000; +1053 : 00000000; +1054 : 00000000; +1055 : 00000000; +1056 : 00000000; +1057 : 00000000; +1058 : 00000000; +1059 : 00000000; +105a : 00000000; +105b : 00000000; +105c : 00000000; +105d : 00000000; +105e : 00000000; +105f : 00000000; +1060 : 00000000; +1061 : 00000000; +1062 : 00000000; +1063 : 00000000; +1064 : 00000000; +1065 : 00000000; +1066 : 00000000; +1067 : 00000000; +1068 : 00000000; +1069 : 00000000; +106a : 00000000; +106b : 00000000; +106c : 00000000; +106d : 00000000; +106e : 00000000; +106f : 00000000; +1070 : 00000000; +1071 : 00000000; +1072 : 00000000; +1073 : 00000000; +1074 : 00000000; +1075 : 00000000; +1076 : 00000000; +1077 : 00000000; +1078 : 00000000; +1079 : 00000000; +107a : 00000000; +107b : 00000000; +107c : 00000000; +107d : 00000000; +107e : 00000000; +107f : 00000000; +1080 : 00000000; +1081 : 00000000; +1082 : 00000000; +1083 : 00000000; +1084 : 00000000; +1085 : 00000000; +1086 : 00000000; +1087 : 00000000; +1088 : 00000000; +1089 : 00000000; +108a : 00000000; +108b : 00000000; +108c : 00000000; +108d : 00000000; +108e : 00000000; +108f : 00000000; +1090 : 00000000; +1091 : 00000000; +1092 : 00000000; +1093 : 00000000; +1094 : 00000000; +1095 : 00000000; +1096 : 00000000; +1097 : 00000000; +1098 : 00000000; +1099 : 00000000; +109a : 00000000; +109b : 00000000; +109c : 00000000; +109d : 00000000; +109e : 00000000; +109f : 00000000; +10a0 : 00000000; +10a1 : 00000000; +10a2 : 00000000; +10a3 : 00000000; +10a4 : 00000000; +10a5 : 00000000; +10a6 : 00000000; +10a7 : 00000000; +10a8 : 00000000; +10a9 : 00000000; +10aa : 00000000; +10ab : 00000000; +10ac : 00000000; +10ad : 00000000; +10ae : 00000000; +10af : 00000000; +10b0 : 00000000; +10b1 : 00000000; +10b2 : 00000000; +10b3 : 00000000; +10b4 : 00000000; +10b5 : 00000000; +10b6 : 00000000; +10b7 : 00000000; +10b8 : 00000000; +10b9 : 00000000; +10ba : 00000000; +10bb : 00000000; +10bc : 00000000; +10bd : 00000000; +10be : 00000000; +10bf : 00000000; +10c0 : 00000000; +10c1 : 00000000; +10c2 : 00000000; +10c3 : 00000000; +10c4 : 00000000; +10c5 : 00000000; +10c6 : 00000000; +10c7 : 00000000; +10c8 : 00000000; +10c9 : 00000000; +10ca : 00000000; +10cb : 00000000; +10cc : 00000000; +10cd : 00000000; +10ce : 00000000; +10cf : 00000000; +10d0 : 00000000; +10d1 : 00000000; +10d2 : 00000000; +10d3 : 00000000; +10d4 : 00000000; +10d5 : 00000000; +10d6 : 00000000; +10d7 : 00000000; +10d8 : 00000000; +10d9 : 00000000; +10da : 00000000; +10db : 00000000; +10dc : 00000000; +10dd : 00000000; +10de : 00000000; +10df : 00000000; +10e0 : 00000000; +10e1 : 00000000; +10e2 : 00000000; +10e3 : 00000000; +10e4 : 00000000; +10e5 : 00000000; +10e6 : 00000000; +10e7 : 00000000; +10e8 : 00000000; +10e9 : 00000000; +10ea : 00000000; +10eb : 00000000; +10ec : 00000000; +10ed : 00000000; +10ee : 00000000; +10ef : 00000000; +10f0 : 00000000; +10f1 : 00000000; +10f2 : 00000000; +10f3 : 00000000; +10f4 : 00000000; +10f5 : 00000000; +10f6 : 00000000; +10f7 : 00000000; +10f8 : 00000000; +10f9 : 00000000; +10fa : 00000000; +10fb : 00000000; +10fc : 00000000; +10fd : 00000000; +10fe : 00000000; +10ff : 00000000; +1100 : 00000000; +1101 : 00000000; +1102 : 00000000; +1103 : 00000000; +1104 : 00000000; +1105 : 00000000; +1106 : 00000000; +1107 : 00000000; +1108 : 00000000; +1109 : 00000000; +110a : 00000000; +110b : 00000000; +110c : 00000000; +110d : 00000000; +110e : 00000000; +110f : 00000000; +1110 : 00000000; +1111 : 00000000; +1112 : 00000000; +1113 : 00000000; +1114 : 00000000; +1115 : 00000000; +1116 : 00000000; +1117 : 00000000; +1118 : 00000000; +1119 : 00000000; +111a : 00000000; +111b : 00000000; +111c : 00000000; +111d : 00000000; +111e : 00000000; +111f : 00000000; +1120 : 00000000; +1121 : 00000000; +1122 : 00000000; +1123 : 00000000; +1124 : 00000000; +1125 : 00000000; +1126 : 00000000; +1127 : 00000000; +1128 : 00000000; +1129 : 00000000; +112a : 00000000; +112b : 00000000; +112c : 00000000; +112d : 00000000; +112e : 00000000; +112f : 00000000; +1130 : 00000000; +1131 : 00000000; +1132 : 00000000; +1133 : 00000000; +1134 : 00000000; +1135 : 00000000; +1136 : 00000000; +1137 : 00000000; +1138 : 00000000; +1139 : 00000000; +113a : 00000000; +113b : 00000000; +113c : 00000000; +113d : 00000000; +113e : 00000000; +113f : 00000000; +1140 : 00000000; +1141 : 00000000; +1142 : 00000000; +1143 : 00000000; +1144 : 00000000; +1145 : 00000000; +1146 : 00000000; +1147 : 00000000; +1148 : 00000000; +1149 : 00000000; +114a : 00000000; +114b : 00000000; +114c : 00000000; +114d : 00000000; +114e : 00000000; +114f : 00000000; +1150 : 00000000; +1151 : 00000000; +1152 : 00000000; +1153 : 00000000; +1154 : 00000000; +1155 : 00000000; +1156 : 00000000; +1157 : 00000000; +1158 : 00000000; +1159 : 00000000; +115a : 00000000; +115b : 00000000; +115c : 00000000; +115d : 00000000; +115e : 00000000; +115f : 00000000; +1160 : 00000000; +1161 : 00000000; +1162 : 00000000; +1163 : 00000000; +1164 : 00000000; +1165 : 00000000; +1166 : 00000000; +1167 : 00000000; +1168 : 00000000; +1169 : 00000000; +116a : 00000000; +116b : 00000000; +116c : 00000000; +116d : 00000000; +116e : 00000000; +116f : 00000000; +1170 : 00000000; +1171 : 00000000; +1172 : 00000000; +1173 : 00000000; +1174 : 00000000; +1175 : 00000000; +1176 : 00000000; +1177 : 00000000; +1178 : 00000000; +1179 : 00000000; +117a : 00000000; +117b : 00000000; +117c : 00000000; +117d : 00000000; +117e : 00000000; +117f : 00000000; +1180 : 00000000; +1181 : 00000000; +1182 : 00000000; +1183 : 00000000; +1184 : 00000000; +1185 : 00000000; +1186 : 00000000; +1187 : 00000000; +1188 : 00000000; +1189 : 00000000; +118a : 00000000; +118b : 00000000; +118c : 00000000; +118d : 00000000; +118e : 00000000; +118f : 00000000; +1190 : 00000000; +1191 : 00000000; +1192 : 00000000; +1193 : 00000000; +1194 : 00000000; +1195 : 00000000; +1196 : 00000000; +1197 : 00000000; +1198 : 00000000; +1199 : 00000000; +119a : 00000000; +119b : 00000000; +119c : 00000000; +119d : 00000000; +119e : 00000000; +119f : 00000000; +11a0 : 00000000; +11a1 : 00000000; +11a2 : 00000000; +11a3 : 00000000; +11a4 : 00000000; +11a5 : 00000000; +11a6 : 00000000; +11a7 : 00000000; +11a8 : 00000000; +11a9 : 00000000; +11aa : 00000000; +11ab : 00000000; +11ac : 00000000; +11ad : 00000000; +11ae : 00000000; +11af : 00000000; +11b0 : 00000000; +11b1 : 00000000; +11b2 : 00000000; +11b3 : 00000000; +11b4 : 00000000; +11b5 : 00000000; +11b6 : 00000000; +11b7 : 00000000; +11b8 : 00000000; +11b9 : 00000000; +11ba : 00000000; +11bb : 00000000; +11bc : 00000000; +11bd : 00000000; +11be : 00000000; +11bf : 00000000; +11c0 : 00000000; +11c1 : 00000000; +11c2 : 00000000; +11c3 : 00000000; +11c4 : 00000000; +11c5 : 00000000; +11c6 : 00000000; +11c7 : 00000000; +11c8 : 00000000; +11c9 : 00000000; +11ca : 00000000; +11cb : 00000000; +11cc : 00000000; +11cd : 00000000; +11ce : 00000000; +11cf : 00000000; +11d0 : 00000000; +11d1 : 00000000; +11d2 : 00000000; +11d3 : 00000000; +11d4 : 00000000; +11d5 : 00000000; +11d6 : 00000000; +11d7 : 00000000; +11d8 : 00000000; +11d9 : 00000000; +11da : 00000000; +11db : 00000000; +11dc : 00000000; +11dd : 00000000; +11de : 00000000; +11df : 00000000; +11e0 : 00000000; +11e1 : 00000000; +11e2 : 00000000; +11e3 : 00000000; +11e4 : 00000000; +11e5 : 00000000; +11e6 : 00000000; +11e7 : 00000000; +11e8 : 00000000; +11e9 : 00000000; +11ea : 00000000; +11eb : 00000000; +11ec : 00000000; +11ed : 00000000; +11ee : 00000000; +11ef : 00000000; +11f0 : 00000000; +11f1 : 00000000; +11f2 : 00000000; +11f3 : 00000000; +11f4 : 00000000; +11f5 : 00000000; +11f6 : 00000000; +11f7 : 00000000; +11f8 : 00000000; +11f9 : 00000000; +11fa : 00000000; +11fb : 00000000; +11fc : 00000000; +11fd : 00000000; +11fe : 00000000; +11ff : 00000000; +1200 : 00000000; +1201 : 00000000; +1202 : 00000000; +1203 : 00000000; +1204 : 00000000; +1205 : 00000000; +1206 : 00000000; +1207 : 00000000; +1208 : 00000000; +1209 : 00000000; +120a : 00000000; +120b : 00000000; +120c : 00000000; +120d : 00000000; +120e : 00000000; +120f : 00000000; +1210 : 00000000; +1211 : 00000000; +1212 : 00000000; +1213 : 00000000; +1214 : 00000000; +1215 : 00000000; +1216 : 00000000; +1217 : 00000000; +1218 : 00000000; +1219 : 00000000; +121a : 00000000; +121b : 00000000; +121c : 00000000; +121d : 00000000; +121e : 00000000; +121f : 00000000; +1220 : 00000000; +1221 : 00000000; +1222 : 00000000; +1223 : 00000000; +1224 : 00000000; +1225 : 00000000; +1226 : 00000000; +1227 : 00000000; +1228 : 00000000; +1229 : 00000000; +122a : 00000000; +122b : 00000000; +122c : 00000000; +122d : 00000000; +122e : 00000000; +122f : 00000000; +1230 : 00000000; +1231 : 00000000; +1232 : 00000000; +1233 : 00000000; +1234 : 00000000; +1235 : 00000000; +1236 : 00000000; +1237 : 00000000; +1238 : 00000000; +1239 : 00000000; +123a : 00000000; +123b : 00000000; +123c : 00000000; +123d : 00000000; +123e : 00000000; +123f : 00000000; +1240 : 00000000; +1241 : 00000000; +1242 : 00000000; +1243 : 00000000; +1244 : 00000000; +1245 : 00000000; +1246 : 00000000; +1247 : 00000000; +1248 : 00000000; +1249 : 00000000; +124a : 00000000; +124b : 00000000; +124c : 00000000; +124d : 00000000; +124e : 00000000; +124f : 00000000; +1250 : 00000000; +1251 : 00000000; +1252 : 00000000; +1253 : 00000000; +1254 : 00000000; +1255 : 00000000; +1256 : 00000000; +1257 : 00000000; +1258 : 00000000; +1259 : 00000000; +125a : 00000000; +125b : 00000000; +125c : 00000000; +125d : 00000000; +125e : 00000000; +125f : 00000000; +1260 : 00000000; +1261 : 00000000; +1262 : 00000000; +1263 : 00000000; +1264 : 00000000; +1265 : 00000000; +1266 : 00000000; +1267 : 00000000; +1268 : 00000000; +1269 : 00000000; +126a : 00000000; +126b : 00000000; +126c : 00000000; +126d : 00000000; +126e : 00000000; +126f : 00000000; +1270 : 00000000; +1271 : 00000000; +1272 : 00000000; +1273 : 00000000; +1274 : 00000000; +1275 : 00000000; +1276 : 00000000; +1277 : 00000000; +1278 : 00000000; +1279 : 00000000; +127a : 00000000; +127b : 00000000; +127c : 00000000; +127d : 00000000; +127e : 00000000; +127f : 00000000; +1280 : 00000000; +1281 : 00000000; +1282 : 00000000; +1283 : 00000000; +1284 : 00000000; +1285 : 00000000; +1286 : 00000000; +1287 : 00000000; +1288 : 00000000; +1289 : 00000000; +128a : 00000000; +128b : 00000000; +128c : 00000000; +128d : 00000000; +128e : 00000000; +128f : 00000000; +1290 : 00000000; +1291 : 00000000; +1292 : 00000000; +1293 : 00000000; +1294 : 00000000; +1295 : 00000000; +1296 : 00000000; +1297 : 00000000; +1298 : 00000000; +1299 : 00000000; +129a : 00000000; +129b : 00000000; +129c : 00000000; +129d : 00000000; +129e : 00000000; +129f : 00000000; +12a0 : 00000000; +12a1 : 00000000; +12a2 : 00000000; +12a3 : 00000000; +12a4 : 00000000; +12a5 : 00000000; +12a6 : 00000000; +12a7 : 00000000; +12a8 : 00000000; +12a9 : 00000000; +12aa : 00000000; +12ab : 00000000; +12ac : 00000000; +12ad : 00000000; +12ae : 00000000; +12af : 00000000; +12b0 : 00000000; +12b1 : 00000000; +12b2 : 00000000; +12b3 : 00000000; +12b4 : 00000000; +12b5 : 00000000; +12b6 : 00000000; +12b7 : 00000000; +12b8 : 00000000; +12b9 : 00000000; +12ba : 00000000; +12bb : 00000000; +12bc : 00000000; +12bd : 00000000; +12be : 00000000; +12bf : 00000000; +12c0 : 00000000; +12c1 : 00000000; +12c2 : 00000000; +12c3 : 00000000; +12c4 : 00000000; +12c5 : 00000000; +12c6 : 00000000; +12c7 : 00000000; +12c8 : 00000000; +12c9 : 00000000; +12ca : 00000000; +12cb : 00000000; +12cc : 00000000; +12cd : 00000000; +12ce : 00000000; +12cf : 00000000; +12d0 : 00000000; +12d1 : 00000000; +12d2 : 00000000; +12d3 : 00000000; +12d4 : 00000000; +12d5 : 00000000; +12d6 : 00000000; +12d7 : 00000000; +12d8 : 00000000; +12d9 : 00000000; +12da : 00000000; +12db : 00000000; +12dc : 00000000; +12dd : 00000000; +12de : 00000000; +12df : 00000000; +12e0 : 00000000; +12e1 : 00000000; +12e2 : 00000000; +12e3 : 00000000; +12e4 : 00000000; +12e5 : 00000000; +12e6 : 00000000; +12e7 : 00000000; +12e8 : 00000000; +12e9 : 00000000; +12ea : 00000000; +12eb : 00000000; +12ec : 00000000; +12ed : 00000000; +12ee : 00000000; +12ef : 00000000; +12f0 : 00000000; +12f1 : 00000000; +12f2 : 00000000; +12f3 : 00000000; +12f4 : 00000000; +12f5 : 00000000; +12f6 : 00000000; +12f7 : 00000000; +12f8 : 00000000; +12f9 : 00000000; +12fa : 00000000; +12fb : 00000000; +12fc : 00000000; +12fd : 00000000; +12fe : 00000000; +12ff : 00000000; +1300 : 00000000; +1301 : 00000000; +1302 : 00000000; +1303 : 00000000; +1304 : 00000000; +1305 : 00000000; +1306 : 00000000; +1307 : 00000000; +1308 : 00000000; +1309 : 00000000; +130a : 00000000; +130b : 00000000; +130c : 00000000; +130d : 00000000; +130e : 00000000; +130f : 00000000; +1310 : 00000000; +1311 : 00000000; +1312 : 00000000; +1313 : 00000000; +1314 : 00000000; +1315 : 00000000; +1316 : 00000000; +1317 : 00000000; +1318 : 00000000; +1319 : 00000000; +131a : 00000000; +131b : 00000000; +131c : 00000000; +131d : 00000000; +131e : 00000000; +131f : 00000000; +1320 : 00000000; +1321 : 00000000; +1322 : 00000000; +1323 : 00000000; +1324 : 00000000; +1325 : 00000000; +1326 : 00000000; +1327 : 00000000; +1328 : 00000000; +1329 : 00000000; +132a : 00000000; +132b : 00000000; +132c : 00000000; +132d : 00000000; +132e : 00000000; +132f : 00000000; +1330 : 00000000; +1331 : 00000000; +1332 : 00000000; +1333 : 00000000; +1334 : 00000000; +1335 : 00000000; +1336 : 00000000; +1337 : 00000000; +1338 : 00000000; +1339 : 00000000; +133a : 00000000; +133b : 00000000; +133c : 00000000; +133d : 00000000; +133e : 00000000; +133f : 00000000; +1340 : 00000000; +1341 : 00000000; +1342 : 00000000; +1343 : 00000000; +1344 : 00000000; +1345 : 00000000; +1346 : 00000000; +1347 : 00000000; +1348 : 00000000; +1349 : 00000000; +134a : 00000000; +134b : 00000000; +134c : 00000000; +134d : 00000000; +134e : 00000000; +134f : 00000000; +1350 : 00000000; +1351 : 00000000; +1352 : 00000000; +1353 : 00000000; +1354 : 00000000; +1355 : 00000000; +1356 : 00000000; +1357 : 00000000; +1358 : 00000000; +1359 : 00000000; +135a : 00000000; +135b : 00000000; +135c : 00000000; +135d : 00000000; +135e : 00000000; +135f : 00000000; +1360 : 00000000; +1361 : 00000000; +1362 : 00000000; +1363 : 00000000; +1364 : 00000000; +1365 : 00000000; +1366 : 00000000; +1367 : 00000000; +1368 : 00000000; +1369 : 00000000; +136a : 00000000; +136b : 00000000; +136c : 00000000; +136d : 00000000; +136e : 00000000; +136f : 00000000; +1370 : 00000000; +1371 : 00000000; +1372 : 00000000; +1373 : 00000000; +1374 : 00000000; +1375 : 00000000; +1376 : 00000000; +1377 : 00000000; +1378 : 00000000; +1379 : 00000000; +137a : 00000000; +137b : 00000000; +137c : 00000000; +137d : 00000000; +137e : 00000000; +137f : 00000000; +1380 : 00000000; +1381 : 00000000; +1382 : 00000000; +1383 : 00000000; +1384 : 00000000; +1385 : 00000000; +1386 : 00000000; +1387 : 00000000; +1388 : 00000000; +1389 : 00000000; +138a : 00000000; +138b : 00000000; +138c : 00000000; +138d : 00000000; +138e : 00000000; +138f : 00000000; +1390 : 00000000; +1391 : 00000000; +1392 : 00000000; +1393 : 00000000; +1394 : 00000000; +1395 : 00000000; +1396 : 00000000; +1397 : 00000000; +1398 : 00000000; +1399 : 00000000; +139a : 00000000; +139b : 00000000; +139c : 00000000; +139d : 00000000; +139e : 00000000; +139f : 00000000; +13a0 : 00000000; +13a1 : 00000000; +13a2 : 00000000; +13a3 : 00000000; +13a4 : 00000000; +13a5 : 00000000; +13a6 : 00000000; +13a7 : 00000000; +13a8 : 00000000; +13a9 : 00000000; +13aa : 00000000; +13ab : 00000000; +13ac : 00000000; +13ad : 00000000; +13ae : 00000000; +13af : 00000000; +13b0 : 00000000; +13b1 : 00000000; +13b2 : 00000000; +13b3 : 00000000; +13b4 : 00000000; +13b5 : 00000000; +13b6 : 00000000; +13b7 : 00000000; +13b8 : 00000000; +13b9 : 00000000; +13ba : 00000000; +13bb : 00000000; +13bc : 00000000; +13bd : 00000000; +13be : 00000000; +13bf : 00000000; +13c0 : 00000000; +13c1 : 00000000; +13c2 : 00000000; +13c3 : 00000000; +13c4 : 00000000; +13c5 : 00000000; +13c6 : 00000000; +13c7 : 00000000; +13c8 : 00000000; +13c9 : 00000000; +13ca : 00000000; +13cb : 00000000; +13cc : 00000000; +13cd : 00000000; +13ce : 00000000; +13cf : 00000000; +13d0 : 00000000; +13d1 : 00000000; +13d2 : 00000000; +13d3 : 00000000; +13d4 : 00000000; +13d5 : 00000000; +13d6 : 00000000; +13d7 : 00000000; +13d8 : 00000000; +13d9 : 00000000; +13da : 00000000; +13db : 00000000; +13dc : 00000000; +13dd : 00000000; +13de : 00000000; +13df : 00000000; +13e0 : 00000000; +13e1 : 00000000; +13e2 : 00000000; +13e3 : 00000000; +13e4 : 00000000; +13e5 : 00000000; +13e6 : 00000000; +13e7 : 00000000; +13e8 : 00000000; +13e9 : 00000000; +13ea : 00000000; +13eb : 00000000; +13ec : 00000000; +13ed : 00000000; +13ee : 00000000; +13ef : 00000000; +13f0 : 00000000; +13f1 : 00000000; +13f2 : 00000000; +13f3 : 00000000; +13f4 : 00000000; +13f5 : 00000000; +13f6 : 00000000; +13f7 : 00000000; +13f8 : 00000000; +13f9 : 00000000; +13fa : 00000000; +13fb : 00000000; +13fc : 00000000; +13fd : 00000000; +13fe : 00000000; +13ff : 00000000; +1400 : 00000000; +1401 : 00000000; +1402 : 00000000; +1403 : 00000000; +1404 : 00000000; +1405 : 00000000; +1406 : 00000000; +1407 : 00000000; +1408 : 00000000; +1409 : 00000000; +140a : 00000000; +140b : 00000000; +140c : 00000000; +140d : 00000000; +140e : 00000000; +140f : 00000000; +1410 : 00000000; +1411 : 00000000; +1412 : 00000000; +1413 : 00000000; +1414 : 00000000; +1415 : 00000000; +1416 : 00000000; +1417 : 00000000; +1418 : 00000000; +1419 : 00000000; +141a : 00000000; +141b : 00000000; +141c : 00000000; +141d : 00000000; +141e : 00000000; +141f : 00000000; +1420 : 00000000; +1421 : 00000000; +1422 : 00000000; +1423 : 00000000; +1424 : 00000000; +1425 : 00000000; +1426 : 00000000; +1427 : 00000000; +1428 : 00000000; +1429 : 00000000; +142a : 00000000; +142b : 00000000; +142c : 00000000; +142d : 00000000; +142e : 00000000; +142f : 00000000; +1430 : 00000000; +1431 : 00000000; +1432 : 00000000; +1433 : 00000000; +1434 : 00000000; +1435 : 00000000; +1436 : 00000000; +1437 : 00000000; +1438 : 00000000; +1439 : 00000000; +143a : 00000000; +143b : 00000000; +143c : 00000000; +143d : 00000000; +143e : 00000000; +143f : 00000000; +1440 : 00000000; +1441 : 00000000; +1442 : 00000000; +1443 : 00000000; +1444 : 00000000; +1445 : 00000000; +1446 : 00000000; +1447 : 00000000; +1448 : 00000000; +1449 : 00000000; +144a : 00000000; +144b : 00000000; +144c : 00000000; +144d : 00000000; +144e : 00000000; +144f : 00000000; +1450 : 00000000; +1451 : 00000000; +1452 : 00000000; +1453 : 00000000; +1454 : 00000000; +1455 : 00000000; +1456 : 00000000; +1457 : 00000000; +1458 : 00000000; +1459 : 00000000; +145a : 00000000; +145b : 00000000; +145c : 00000000; +145d : 00000000; +145e : 00000000; +145f : 00000000; +1460 : 00000000; +1461 : 00000000; +1462 : 00000000; +1463 : 00000000; +1464 : 00000000; +1465 : 00000000; +1466 : 00000000; +1467 : 00000000; +1468 : 00000000; +1469 : 00000000; +146a : 00000000; +146b : 00000000; +146c : 00000000; +146d : 00000000; +146e : 00000000; +146f : 00000000; +1470 : 00000000; +1471 : 00000000; +1472 : 00000000; +1473 : 00000000; +1474 : 00000000; +1475 : 00000000; +1476 : 00000000; +1477 : 00000000; +1478 : 00000000; +1479 : 00000000; +147a : 00000000; +147b : 00000000; +147c : 00000000; +147d : 00000000; +147e : 00000000; +147f : 00000000; +1480 : 00000000; +1481 : 00000000; +1482 : 00000000; +1483 : 00000000; +1484 : 00000000; +1485 : 00000000; +1486 : 00000000; +1487 : 00000000; +1488 : 00000000; +1489 : 00000000; +148a : 00000000; +148b : 00000000; +148c : 00000000; +148d : 00000000; +148e : 00000000; +148f : 00000000; +1490 : 00000000; +1491 : 00000000; +1492 : 00000000; +1493 : 00000000; +1494 : 00000000; +1495 : 00000000; +1496 : 00000000; +1497 : 00000000; +1498 : 00000000; +1499 : 00000000; +149a : 00000000; +149b : 00000000; +149c : 00000000; +149d : 00000000; +149e : 00000000; +149f : 00000000; +14a0 : 00000000; +14a1 : 00000000; +14a2 : 00000000; +14a3 : 00000000; +14a4 : 00000000; +14a5 : 00000000; +14a6 : 00000000; +14a7 : 00000000; +14a8 : 00000000; +14a9 : 00000000; +14aa : 00000000; +14ab : 00000000; +14ac : 00000000; +14ad : 00000000; +14ae : 00000000; +14af : 00000000; +14b0 : 00000000; +14b1 : 00000000; +14b2 : 00000000; +14b3 : 00000000; +14b4 : 00000000; +14b5 : 00000000; +14b6 : 00000000; +14b7 : 00000000; +14b8 : 00000000; +14b9 : 00000000; +14ba : 00000000; +14bb : 00000000; +14bc : 00000000; +14bd : 00000000; +14be : 00000000; +14bf : 00000000; +14c0 : 00000000; +14c1 : 00000000; +14c2 : 00000000; +14c3 : 00000000; +14c4 : 00000000; +14c5 : 00000000; +14c6 : 00000000; +14c7 : 00000000; +14c8 : 00000000; +14c9 : 00000000; +14ca : 00000000; +14cb : 00000000; +14cc : 00000000; +14cd : 00000000; +14ce : 00000000; +14cf : 00000000; +14d0 : 00000000; +14d1 : 00000000; +14d2 : 00000000; +14d3 : 00000000; +14d4 : 00000000; +14d5 : 00000000; +14d6 : 00000000; +14d7 : 00000000; +14d8 : 00000000; +14d9 : 00000000; +14da : 00000000; +14db : 00000000; +14dc : 00000000; +14dd : 00000000; +14de : 00000000; +14df : 00000000; +14e0 : 00000000; +14e1 : 00000000; +14e2 : 00000000; +14e3 : 00000000; +14e4 : 00000000; +14e5 : 00000000; +14e6 : 00000000; +14e7 : 00000000; +14e8 : 00000000; +14e9 : 00000000; +14ea : 00000000; +14eb : 00000000; +14ec : 00000000; +14ed : 00000000; +14ee : 00000000; +14ef : 00000000; +14f0 : 00000000; +14f1 : 00000000; +14f2 : 00000000; +14f3 : 00000000; +14f4 : 00000000; +14f5 : 00000000; +14f6 : 00000000; +14f7 : 00000000; +14f8 : 00000000; +14f9 : 00000000; +14fa : 00000000; +14fb : 00000000; +14fc : 00000000; +14fd : 00000000; +14fe : 00000000; +14ff : 00000000; +1500 : 00000000; +1501 : 00000000; +1502 : 00000000; +1503 : 00000000; +1504 : 00000000; +1505 : 00000000; +1506 : 00000000; +1507 : 00000000; +1508 : 00000000; +1509 : 00000000; +150a : 00000000; +150b : 00000000; +150c : 00000000; +150d : 00000000; +150e : 00000000; +150f : 00000000; +1510 : 00000000; +1511 : 00000000; +1512 : 00000000; +1513 : 00000000; +1514 : 00000000; +1515 : 00000000; +1516 : 00000000; +1517 : 00000000; +1518 : 00000000; +1519 : 00000000; +151a : 00000000; +151b : 00000000; +151c : 00000000; +151d : 00000000; +151e : 00000000; +151f : 00000000; +1520 : 00000000; +1521 : 00000000; +1522 : 00000000; +1523 : 00000000; +1524 : 00000000; +1525 : 00000000; +1526 : 00000000; +1527 : 00000000; +1528 : 00000000; +1529 : 00000000; +152a : 00000000; +152b : 00000000; +152c : 00000000; +152d : 00000000; +152e : 00000000; +152f : 00000000; +1530 : 00000000; +1531 : 00000000; +1532 : 00000000; +1533 : 00000000; +1534 : 00000000; +1535 : 00000000; +1536 : 00000000; +1537 : 00000000; +1538 : 00000000; +1539 : 00000000; +153a : 00000000; +153b : 00000000; +153c : 00000000; +153d : 00000000; +153e : 00000000; +153f : 00000000; +1540 : 00000000; +1541 : 00000000; +1542 : 00000000; +1543 : 00000000; +1544 : 00000000; +1545 : 00000000; +1546 : 00000000; +1547 : 00000000; +1548 : 00000000; +1549 : 00000000; +154a : 00000000; +154b : 00000000; +154c : 00000000; +154d : 00000000; +154e : 00000000; +154f : 00000000; +1550 : 00000000; +1551 : 00000000; +1552 : 00000000; +1553 : 00000000; +1554 : 00000000; +1555 : 00000000; +1556 : 00000000; +1557 : 00000000; +1558 : 00000000; +1559 : 00000000; +155a : 00000000; +155b : 00000000; +155c : 00000000; +155d : 00000000; +155e : 00000000; +155f : 00000000; +1560 : 00000000; +1561 : 00000000; +1562 : 00000000; +1563 : 00000000; +1564 : 00000000; +1565 : 00000000; +1566 : 00000000; +1567 : 00000000; +1568 : 00000000; +1569 : 00000000; +156a : 00000000; +156b : 00000000; +156c : 00000000; +156d : 00000000; +156e : 00000000; +156f : 00000000; +1570 : 00000000; +1571 : 00000000; +1572 : 00000000; +1573 : 00000000; +1574 : 00000000; +1575 : 00000000; +1576 : 00000000; +1577 : 00000000; +1578 : 00000000; +1579 : 00000000; +157a : 00000000; +157b : 00000000; +157c : 00000000; +157d : 00000000; +157e : 00000000; +157f : 00000000; +1580 : 00000000; +1581 : 00000000; +1582 : 00000000; +1583 : 00000000; +1584 : 00000000; +1585 : 00000000; +1586 : 00000000; +1587 : 00000000; +1588 : 00000000; +1589 : 00000000; +158a : 00000000; +158b : 00000000; +158c : 00000000; +158d : 00000000; +158e : 00000000; +158f : 00000000; +1590 : 00000000; +1591 : 00000000; +1592 : 00000000; +1593 : 00000000; +1594 : 00000000; +1595 : 00000000; +1596 : 00000000; +1597 : 00000000; +1598 : 00000000; +1599 : 00000000; +159a : 00000000; +159b : 00000000; +159c : 00000000; +159d : 00000000; +159e : 00000000; +159f : 00000000; +15a0 : 00000000; +15a1 : 00000000; +15a2 : 00000000; +15a3 : 00000000; +15a4 : 00000000; +15a5 : 00000000; +15a6 : 00000000; +15a7 : 00000000; +15a8 : 00000000; +15a9 : 00000000; +15aa : 00000000; +15ab : 00000000; +15ac : 00000000; +15ad : 00000000; +15ae : 00000000; +15af : 00000000; +15b0 : 00000000; +15b1 : 00000000; +15b2 : 00000000; +15b3 : 00000000; +15b4 : 00000000; +15b5 : 00000000; +15b6 : 00000000; +15b7 : 00000000; +15b8 : 00000000; +15b9 : 00000000; +15ba : 00000000; +15bb : 00000000; +15bc : 00000000; +15bd : 00000000; +15be : 00000000; +15bf : 00000000; +15c0 : 00000000; +15c1 : 00000000; +15c2 : 00000000; +15c3 : 00000000; +15c4 : 00000000; +15c5 : 00000000; +15c6 : 00000000; +15c7 : 00000000; +15c8 : 00000000; +15c9 : 00000000; +15ca : 00000000; +15cb : 00000000; +15cc : 00000000; +15cd : 00000000; +15ce : 00000000; +15cf : 00000000; +15d0 : 00000000; +15d1 : 00000000; +15d2 : 00000000; +15d3 : 00000000; +15d4 : 00000000; +15d5 : 00000000; +15d6 : 00000000; +15d7 : 00000000; +15d8 : 00000000; +15d9 : 00000000; +15da : 00000000; +15db : 00000000; +15dc : 00000000; +15dd : 00000000; +15de : 00000000; +15df : 00000000; +15e0 : 00000000; +15e1 : 00000000; +15e2 : 00000000; +15e3 : 00000000; +15e4 : 00000000; +15e5 : 00000000; +15e6 : 00000000; +15e7 : 00000000; +15e8 : 00000000; +15e9 : 00000000; +15ea : 00000000; +15eb : 00000000; +15ec : 00000000; +15ed : 00000000; +15ee : 00000000; +15ef : 00000000; +15f0 : 00000000; +15f1 : 00000000; +15f2 : 00000000; +15f3 : 00000000; +15f4 : 00000000; +15f5 : 00000000; +15f6 : 00000000; +15f7 : 00000000; +15f8 : 00000000; +15f9 : 00000000; +15fa : 00000000; +15fb : 00000000; +15fc : 00000000; +15fd : 00000000; +15fe : 00000000; +15ff : 00000000; +1600 : 00000000; +1601 : 00000000; +1602 : 00000000; +1603 : 00000000; +1604 : 00000000; +1605 : 00000000; +1606 : 00000000; +1607 : 00000000; +1608 : 00000000; +1609 : 00000000; +160a : 00000000; +160b : 00000000; +160c : 00000000; +160d : 00000000; +160e : 00000000; +160f : 00000000; +1610 : 00000000; +1611 : 00000000; +1612 : 00000000; +1613 : 00000000; +1614 : 00000000; +1615 : 00000000; +1616 : 00000000; +1617 : 00000000; +1618 : 00000000; +1619 : 00000000; +161a : 00000000; +161b : 00000000; +161c : 00000000; +161d : 00000000; +161e : 00000000; +161f : 00000000; +1620 : 00000000; +1621 : 00000000; +1622 : 00000000; +1623 : 00000000; +1624 : 00000000; +1625 : 00000000; +1626 : 00000000; +1627 : 00000000; +1628 : 00000000; +1629 : 00000000; +162a : 00000000; +162b : 00000000; +162c : 00000000; +162d : 00000000; +162e : 00000000; +162f : 00000000; +1630 : 00000000; +1631 : 00000000; +1632 : 00000000; +1633 : 00000000; +1634 : 00000000; +1635 : 00000000; +1636 : 00000000; +1637 : 00000000; +1638 : 00000000; +1639 : 00000000; +163a : 00000000; +163b : 00000000; +163c : 00000000; +163d : 00000000; +163e : 00000000; +163f : 00000000; +1640 : 00000000; +1641 : 00000000; +1642 : 00000000; +1643 : 00000000; +1644 : 00000000; +1645 : 00000000; +1646 : 00000000; +1647 : 00000000; +1648 : 00000000; +1649 : 00000000; +164a : 00000000; +164b : 00000000; +164c : 00000000; +164d : 00000000; +164e : 00000000; +164f : 00000000; +1650 : 00000000; +1651 : 00000000; +1652 : 00000000; +1653 : 00000000; +1654 : 00000000; +1655 : 00000000; +1656 : 00000000; +1657 : 00000000; +1658 : 00000000; +1659 : 00000000; +165a : 00000000; +165b : 00000000; +165c : 00000000; +165d : 00000000; +165e : 00000000; +165f : 00000000; +1660 : 00000000; +1661 : 00000000; +1662 : 00000000; +1663 : 00000000; +1664 : 00000000; +1665 : 00000000; +1666 : 00000000; +1667 : 00000000; +1668 : 00000000; +1669 : 00000000; +166a : 00000000; +166b : 00000000; +166c : 00000000; +166d : 00000000; +166e : 00000000; +166f : 00000000; +1670 : 00000000; +1671 : 00000000; +1672 : 00000000; +1673 : 00000000; +1674 : 00000000; +1675 : 00000000; +1676 : 00000000; +1677 : 00000000; +1678 : 00000000; +1679 : 00000000; +167a : 00000000; +167b : 00000000; +167c : 00000000; +167d : 00000000; +167e : 00000000; +167f : 00000000; +1680 : 00000000; +1681 : 00000000; +1682 : 00000000; +1683 : 00000000; +1684 : 00000000; +1685 : 00000000; +1686 : 00000000; +1687 : 00000000; +1688 : 00000000; +1689 : 00000000; +168a : 00000000; +168b : 00000000; +168c : 00000000; +168d : 00000000; +168e : 00000000; +168f : 00000000; +1690 : 00000000; +1691 : 00000000; +1692 : 00000000; +1693 : 00000000; +1694 : 00000000; +1695 : 00000000; +1696 : 00000000; +1697 : 00000000; +1698 : 00000000; +1699 : 00000000; +169a : 00000000; +169b : 00000000; +169c : 00000000; +169d : 00000000; +169e : 00000000; +169f : 00000000; +16a0 : 00000000; +16a1 : 00000000; +16a2 : 00000000; +16a3 : 00000000; +16a4 : 00000000; +16a5 : 00000000; +16a6 : 00000000; +16a7 : 00000000; +16a8 : 00000000; +16a9 : 00000000; +16aa : 00000000; +16ab : 00000000; +16ac : 00000000; +16ad : 00000000; +16ae : 00000000; +16af : 00000000; +16b0 : 00000000; +16b1 : 00000000; +16b2 : 00000000; +16b3 : 00000000; +16b4 : 00000000; +16b5 : 00000000; +16b6 : 00000000; +16b7 : 00000000; +16b8 : 00000000; +16b9 : 00000000; +16ba : 00000000; +16bb : 00000000; +16bc : 00000000; +16bd : 00000000; +16be : 00000000; +16bf : 00000000; +16c0 : 00000000; +16c1 : 00000000; +16c2 : 00000000; +16c3 : 00000000; +16c4 : 00000000; +16c5 : 00000000; +16c6 : 00000000; +16c7 : 00000000; +16c8 : 00000000; +16c9 : 00000000; +16ca : 00000000; +16cb : 00000000; +16cc : 00000000; +16cd : 00000000; +16ce : 00000000; +16cf : 00000000; +16d0 : 00000000; +16d1 : 00000000; +16d2 : 00000000; +16d3 : 00000000; +16d4 : 00000000; +16d5 : 00000000; +16d6 : 00000000; +16d7 : 00000000; +16d8 : 00000000; +16d9 : 00000000; +16da : 00000000; +16db : 00000000; +16dc : 00000000; +16dd : 00000000; +16de : 00000000; +16df : 00000000; +16e0 : 00000000; +16e1 : 00000000; +16e2 : 00000000; +16e3 : 00000000; +16e4 : 00000000; +16e5 : 00000000; +16e6 : 00000000; +16e7 : 00000000; +16e8 : 00000000; +16e9 : 00000000; +16ea : 00000000; +16eb : 00000000; +16ec : 00000000; +16ed : 00000000; +16ee : 00000000; +16ef : 00000000; +16f0 : 00000000; +16f1 : 00000000; +16f2 : 00000000; +16f3 : 00000000; +16f4 : 00000000; +16f5 : 00000000; +16f6 : 00000000; +16f7 : 00000000; +16f8 : 00000000; +16f9 : 00000000; +16fa : 00000000; +16fb : 00000000; +16fc : 00000000; +16fd : 00000000; +16fe : 00000000; +16ff : 00000000; +1700 : 00000000; +1701 : 00000000; +1702 : 00000000; +1703 : 00000000; +1704 : 00000000; +1705 : 00000000; +1706 : 00000000; +1707 : 00000000; +1708 : 00000000; +1709 : 00000000; +170a : 00000000; +170b : 00000000; +170c : 00000000; +170d : 00000000; +170e : 00000000; +170f : 00000000; +1710 : 00000000; +1711 : 00000000; +1712 : 00000000; +1713 : 00000000; +1714 : 00000000; +1715 : 00000000; +1716 : 00000000; +1717 : 00000000; +1718 : 00000000; +1719 : 00000000; +171a : 00000000; +171b : 00000000; +171c : 00000000; +171d : 00000000; +171e : 00000000; +171f : 00000000; +1720 : 00000000; +1721 : 00000000; +1722 : 00000000; +1723 : 00000000; +1724 : 00000000; +1725 : 00000000; +1726 : 00000000; +1727 : 00000000; +1728 : 00000000; +1729 : 00000000; +172a : 00000000; +172b : 00000000; +172c : 00000000; +172d : 00000000; +172e : 00000000; +172f : 00000000; +1730 : 00000000; +1731 : 00000000; +1732 : 00000000; +1733 : 00000000; +1734 : 00000000; +1735 : 00000000; +1736 : 00000000; +1737 : 00000000; +1738 : 00000000; +1739 : 00000000; +173a : 00000000; +173b : 00000000; +173c : 00000000; +173d : 00000000; +173e : 00000000; +173f : 00000000; +1740 : 00000000; +1741 : 00000000; +1742 : 00000000; +1743 : 00000000; +1744 : 00000000; +1745 : 00000000; +1746 : 00000000; +1747 : 00000000; +1748 : 00000000; +1749 : 00000000; +174a : 00000000; +174b : 00000000; +174c : 00000000; +174d : 00000000; +174e : 00000000; +174f : 00000000; +1750 : 00000000; +1751 : 00000000; +1752 : 00000000; +1753 : 00000000; +1754 : 00000000; +1755 : 00000000; +1756 : 00000000; +1757 : 00000000; +1758 : 00000000; +1759 : 00000000; +175a : 00000000; +175b : 00000000; +175c : 00000000; +175d : 00000000; +175e : 00000000; +175f : 00000000; +1760 : 00000000; +1761 : 00000000; +1762 : 00000000; +1763 : 00000000; +1764 : 00000000; +1765 : 00000000; +1766 : 00000000; +1767 : 00000000; +1768 : 00000000; +1769 : 00000000; +176a : 00000000; +176b : 00000000; +176c : 00000000; +176d : 00000000; +176e : 00000000; +176f : 00000000; +1770 : 00000000; +1771 : 00000000; +1772 : 00000000; +1773 : 00000000; +1774 : 00000000; +1775 : 00000000; +1776 : 00000000; +1777 : 00000000; +1778 : 00000000; +1779 : 00000000; +177a : 00000000; +177b : 00000000; +177c : 00000000; +177d : 00000000; +177e : 00000000; +177f : 00000000; +1780 : 00000000; +1781 : 00000000; +1782 : 00000000; +1783 : 00000000; +1784 : 00000000; +1785 : 00000000; +1786 : 00000000; +1787 : 00000000; +1788 : 00000000; +1789 : 00000000; +178a : 00000000; +178b : 00000000; +178c : 00000000; +178d : 00000000; +178e : 00000000; +178f : 00000000; +1790 : 00000000; +1791 : 00000000; +1792 : 00000000; +1793 : 00000000; +1794 : 00000000; +1795 : 00000000; +1796 : 00000000; +1797 : 00000000; +1798 : 00000000; +1799 : 00000000; +179a : 00000000; +179b : 00000000; +179c : 00000000; +179d : 00000000; +179e : 00000000; +179f : 00000000; +17a0 : 00000000; +17a1 : 00000000; +17a2 : 00000000; +17a3 : 00000000; +17a4 : 00000000; +17a5 : 00000000; +17a6 : 00000000; +17a7 : 00000000; +17a8 : 00000000; +17a9 : 00000000; +17aa : 00000000; +17ab : 00000000; +17ac : 00000000; +17ad : 00000000; +17ae : 00000000; +17af : 00000000; +17b0 : 00000000; +17b1 : 00000000; +17b2 : 00000000; +17b3 : 00000000; +17b4 : 00000000; +17b5 : 00000000; +17b6 : 00000000; +17b7 : 00000000; +17b8 : 00000000; +17b9 : 00000000; +17ba : 00000000; +17bb : 00000000; +17bc : 00000000; +17bd : 00000000; +17be : 00000000; +17bf : 00000000; +17c0 : 00000000; +17c1 : 00000000; +17c2 : 00000000; +17c3 : 00000000; +17c4 : 00000000; +17c5 : 00000000; +17c6 : 00000000; +17c7 : 00000000; +17c8 : 00000000; +17c9 : 00000000; +17ca : 00000000; +17cb : 00000000; +17cc : 00000000; +17cd : 00000000; +17ce : 00000000; +17cf : 00000000; +17d0 : 00000000; +17d1 : 00000000; +17d2 : 00000000; +17d3 : 00000000; +17d4 : 00000000; +17d5 : 00000000; +17d6 : 00000000; +17d7 : 00000000; +17d8 : 00000000; +17d9 : 00000000; +17da : 00000000; +17db : 00000000; +17dc : 00000000; +17dd : 00000000; +17de : 00000000; +17df : 00000000; +17e0 : 00000000; +17e1 : 00000000; +17e2 : 00000000; +17e3 : 00000000; +17e4 : 00000000; +17e5 : 00000000; +17e6 : 00000000; +17e7 : 00000000; +17e8 : 00000000; +17e9 : 00000000; +17ea : 00000000; +17eb : 00000000; +17ec : 00000000; +17ed : 00000000; +17ee : 00000000; +17ef : 00000000; +17f0 : 00000000; +17f1 : 00000000; +17f2 : 00000000; +17f3 : 00000000; +17f4 : 00000000; +17f5 : 00000000; +17f6 : 00000000; +17f7 : 00000000; +17f8 : 00000000; +17f9 : 00000000; +17fa : 00000000; +17fb : 00000000; +17fc : 00000000; +17fd : 00000000; +17fe : 00000000; +17ff : 00000000; +1800 : 00000000; +1801 : 00000000; +1802 : 00000000; +1803 : 00000000; +1804 : 00000000; +1805 : 00000000; +1806 : 00000000; +1807 : 00000000; +1808 : 00000000; +1809 : 00000000; +180a : 00000000; +180b : 00000000; +180c : 00000000; +180d : 00000000; +180e : 00000000; +180f : 00000000; +1810 : 00000000; +1811 : 00000000; +1812 : 00000000; +1813 : 00000000; +1814 : 00000000; +1815 : 00000000; +1816 : 00000000; +1817 : 00000000; +1818 : 00000000; +1819 : 00000000; +181a : 00000000; +181b : 00000000; +181c : 00000000; +181d : 00000000; +181e : 00000000; +181f : 00000000; +1820 : 00000000; +1821 : 00000000; +1822 : 00000000; +1823 : 00000000; +1824 : 00000000; +1825 : 00000000; +1826 : 00000000; +1827 : 00000000; +1828 : 00000000; +1829 : 00000000; +182a : 00000000; +182b : 00000000; +182c : 00000000; +182d : 00000000; +182e : 00000000; +182f : 00000000; +1830 : 00000000; +1831 : 00000000; +1832 : 00000000; +1833 : 00000000; +1834 : 00000000; +1835 : 00000000; +1836 : 00000000; +1837 : 00000000; +1838 : 00000000; +1839 : 00000000; +183a : 00000000; +183b : 00000000; +183c : 00000000; +183d : 00000000; +183e : 00000000; +183f : 00000000; +1840 : 00000000; +1841 : 00000000; +1842 : 00000000; +1843 : 00000000; +1844 : 00000000; +1845 : 00000000; +1846 : 00000000; +1847 : 00000000; +1848 : 00000000; +1849 : 00000000; +184a : 00000000; +184b : 00000000; +184c : 00000000; +184d : 00000000; +184e : 00000000; +184f : 00000000; +1850 : 00000000; +1851 : 00000000; +1852 : 00000000; +1853 : 00000000; +1854 : 00000000; +1855 : 00000000; +1856 : 00000000; +1857 : 00000000; +1858 : 00000000; +1859 : 00000000; +185a : 00000000; +185b : 00000000; +185c : 00000000; +185d : 00000000; +185e : 00000000; +185f : 00000000; +1860 : 00000000; +1861 : 00000000; +1862 : 00000000; +1863 : 00000000; +1864 : 00000000; +1865 : 00000000; +1866 : 00000000; +1867 : 00000000; +1868 : 00000000; +1869 : 00000000; +186a : 00000000; +186b : 00000000; +186c : 00000000; +186d : 00000000; +186e : 00000000; +186f : 00000000; +1870 : 00000000; +1871 : 00000000; +1872 : 00000000; +1873 : 00000000; +1874 : 00000000; +1875 : 00000000; +1876 : 00000000; +1877 : 00000000; +1878 : 00000000; +1879 : 00000000; +187a : 00000000; +187b : 00000000; +187c : 00000000; +187d : 00000000; +187e : 00000000; +187f : 00000000; +1880 : 00000000; +1881 : 00000000; +1882 : 00000000; +1883 : 00000000; +1884 : 00000000; +1885 : 00000000; +1886 : 00000000; +1887 : 00000000; +1888 : 00000000; +1889 : 00000000; +188a : 00000000; +188b : 00000000; +188c : 00000000; +188d : 00000000; +188e : 00000000; +188f : 00000000; +1890 : 00000000; +1891 : 00000000; +1892 : 00000000; +1893 : 00000000; +1894 : 00000000; +1895 : 00000000; +1896 : 00000000; +1897 : 00000000; +1898 : 00000000; +1899 : 00000000; +189a : 00000000; +189b : 00000000; +189c : 00000000; +189d : 00000000; +189e : 00000000; +189f : 00000000; +18a0 : 00000000; +18a1 : 00000000; +18a2 : 00000000; +18a3 : 00000000; +18a4 : 00000000; +18a5 : 00000000; +18a6 : 00000000; +18a7 : 00000000; +18a8 : 00000000; +18a9 : 00000000; +18aa : 00000000; +18ab : 00000000; +18ac : 00000000; +18ad : 00000000; +18ae : 00000000; +18af : 00000000; +18b0 : 00000000; +18b1 : 00000000; +18b2 : 00000000; +18b3 : 00000000; +18b4 : 00000000; +18b5 : 00000000; +18b6 : 00000000; +18b7 : 00000000; +18b8 : 00000000; +18b9 : 00000000; +18ba : 00000000; +18bb : 00000000; +18bc : 00000000; +18bd : 00000000; +18be : 00000000; +18bf : 00000000; +18c0 : 00000000; +18c1 : 00000000; +18c2 : 00000000; +18c3 : 00000000; +18c4 : 00000000; +18c5 : 00000000; +18c6 : 00000000; +18c7 : 00000000; +18c8 : 00000000; +18c9 : 00000000; +18ca : 00000000; +18cb : 00000000; +18cc : 00000000; +18cd : 00000000; +18ce : 00000000; +18cf : 00000000; +18d0 : 00000000; +18d1 : 00000000; +18d2 : 00000000; +18d3 : 00000000; +18d4 : 00000000; +18d5 : 00000000; +18d6 : 00000000; +18d7 : 00000000; +18d8 : 00000000; +18d9 : 00000000; +18da : 00000000; +18db : 00000000; +18dc : 00000000; +18dd : 00000000; +18de : 00000000; +18df : 00000000; +18e0 : 00000000; +18e1 : 00000000; +18e2 : 00000000; +18e3 : 00000000; +18e4 : 00000000; +18e5 : 00000000; +18e6 : 00000000; +18e7 : 00000000; +18e8 : 00000000; +18e9 : 00000000; +18ea : 00000000; +18eb : 00000000; +18ec : 00000000; +18ed : 00000000; +18ee : 00000000; +18ef : 00000000; +18f0 : 00000000; +18f1 : 00000000; +18f2 : 00000000; +18f3 : 00000000; +18f4 : 00000000; +18f5 : 00000000; +18f6 : 00000000; +18f7 : 00000000; +18f8 : 00000000; +18f9 : 00000000; +18fa : 00000000; +18fb : 00000000; +18fc : 00000000; +18fd : 00000000; +18fe : 00000000; +18ff : 00000000; +1900 : 00000000; +1901 : 00000000; +1902 : 00000000; +1903 : 00000000; +1904 : 00000000; +1905 : 00000000; +1906 : 00000000; +1907 : 00000000; +1908 : 00000000; +1909 : 00000000; +190a : 00000000; +190b : 00000000; +190c : 00000000; +190d : 00000000; +190e : 00000000; +190f : 00000000; +1910 : 00000000; +1911 : 00000000; +1912 : 00000000; +1913 : 00000000; +1914 : 00000000; +1915 : 00000000; +1916 : 00000000; +1917 : 00000000; +1918 : 00000000; +1919 : 00000000; +191a : 00000000; +191b : 00000000; +191c : 00000000; +191d : 00000000; +191e : 00000000; +191f : 00000000; +1920 : 00000000; +1921 : 00000000; +1922 : 00000000; +1923 : 00000000; +1924 : 00000000; +1925 : 00000000; +1926 : 00000000; +1927 : 00000000; +1928 : 00000000; +1929 : 00000000; +192a : 00000000; +192b : 00000000; +192c : 00000000; +192d : 00000000; +192e : 00000000; +192f : 00000000; +1930 : 00000000; +1931 : 00000000; +1932 : 00000000; +1933 : 00000000; +1934 : 00000000; +1935 : 00000000; +1936 : 00000000; +1937 : 00000000; +1938 : 00000000; +1939 : 00000000; +193a : 00000000; +193b : 00000000; +193c : 00000000; +193d : 00000000; +193e : 00000000; +193f : 00000000; +1940 : 00000000; +1941 : 00000000; +1942 : 00000000; +1943 : 00000000; +1944 : 00000000; +1945 : 00000000; +1946 : 00000000; +1947 : 00000000; +1948 : 00000000; +1949 : 00000000; +194a : 00000000; +194b : 00000000; +194c : 00000000; +194d : 00000000; +194e : 00000000; +194f : 00000000; +1950 : 00000000; +1951 : 00000000; +1952 : 00000000; +1953 : 00000000; +1954 : 00000000; +1955 : 00000000; +1956 : 00000000; +1957 : 00000000; +1958 : 00000000; +1959 : 00000000; +195a : 00000000; +195b : 00000000; +195c : 00000000; +195d : 00000000; +195e : 00000000; +195f : 00000000; +1960 : 00000000; +1961 : 00000000; +1962 : 00000000; +1963 : 00000000; +1964 : 00000000; +1965 : 00000000; +1966 : 00000000; +1967 : 00000000; +1968 : 00000000; +1969 : 00000000; +196a : 00000000; +196b : 00000000; +196c : 00000000; +196d : 00000000; +196e : 00000000; +196f : 00000000; +1970 : 00000000; +1971 : 00000000; +1972 : 00000000; +1973 : 00000000; +1974 : 00000000; +1975 : 00000000; +1976 : 00000000; +1977 : 00000000; +1978 : 00000000; +1979 : 00000000; +197a : 00000000; +197b : 00000000; +197c : 00000000; +197d : 00000000; +197e : 00000000; +197f : 00000000; +1980 : 00000000; +1981 : 00000000; +1982 : 00000000; +1983 : 00000000; +1984 : 00000000; +1985 : 00000000; +1986 : 00000000; +1987 : 00000000; +1988 : 00000000; +1989 : 00000000; +198a : 00000000; +198b : 00000000; +198c : 00000000; +198d : 00000000; +198e : 00000000; +198f : 00000000; +1990 : 00000000; +1991 : 00000000; +1992 : 00000000; +1993 : 00000000; +1994 : 00000000; +1995 : 00000000; +1996 : 00000000; +1997 : 00000000; +1998 : 00000000; +1999 : 00000000; +199a : 00000000; +199b : 00000000; +199c : 00000000; +199d : 00000000; +199e : 00000000; +199f : 00000000; +19a0 : 00000000; +19a1 : 00000000; +19a2 : 00000000; +19a3 : 00000000; +19a4 : 00000000; +19a5 : 00000000; +19a6 : 00000000; +19a7 : 00000000; +19a8 : 00000000; +19a9 : 00000000; +19aa : 00000000; +19ab : 00000000; +19ac : 00000000; +19ad : 00000000; +19ae : 00000000; +19af : 00000000; +19b0 : 00000000; +19b1 : 00000000; +19b2 : 00000000; +19b3 : 00000000; +19b4 : 00000000; +19b5 : 00000000; +19b6 : 00000000; +19b7 : 00000000; +19b8 : 00000000; +19b9 : 00000000; +19ba : 00000000; +19bb : 00000000; +19bc : 00000000; +19bd : 00000000; +19be : 00000000; +19bf : 00000000; +19c0 : 00000000; +19c1 : 00000000; +19c2 : 00000000; +19c3 : 00000000; +19c4 : 00000000; +19c5 : 00000000; +19c6 : 00000000; +19c7 : 00000000; +19c8 : 00000000; +19c9 : 00000000; +19ca : 00000000; +19cb : 00000000; +19cc : 00000000; +19cd : 00000000; +19ce : 00000000; +19cf : 00000000; +19d0 : 00000000; +19d1 : 00000000; +19d2 : 00000000; +19d3 : 00000000; +19d4 : 00000000; +19d5 : 00000000; +19d6 : 00000000; +19d7 : 00000000; +19d8 : 00000000; +19d9 : 00000000; +19da : 00000000; +19db : 00000000; +19dc : 00000000; +19dd : 00000000; +19de : 00000000; +19df : 00000000; +19e0 : 00000000; +19e1 : 00000000; +19e2 : 00000000; +19e3 : 00000000; +19e4 : 00000000; +19e5 : 00000000; +19e6 : 00000000; +19e7 : 00000000; +19e8 : 00000000; +19e9 : 00000000; +19ea : 00000000; +19eb : 00000000; +19ec : 00000000; +19ed : 00000000; +19ee : 00000000; +19ef : 00000000; +19f0 : 00000000; +19f1 : 00000000; +19f2 : 00000000; +19f3 : 00000000; +19f4 : 00000000; +19f5 : 00000000; +19f6 : 00000000; +19f7 : 00000000; +19f8 : 00000000; +19f9 : 00000000; +19fa : 00000000; +19fb : 00000000; +19fc : 00000000; +19fd : 00000000; +19fe : 00000000; +19ff : 00000000; +1a00 : 00000000; +1a01 : 00000000; +1a02 : 00000000; +1a03 : 00000000; +1a04 : 00000000; +1a05 : 00000000; +1a06 : 00000000; +1a07 : 00000000; +1a08 : 00000000; +1a09 : 00000000; +1a0a : 00000000; +1a0b : 00000000; +1a0c : 00000000; +1a0d : 00000000; +1a0e : 00000000; +1a0f : 00000000; +1a10 : 00000000; +1a11 : 00000000; +1a12 : 00000000; +1a13 : 00000000; +1a14 : 00000000; +1a15 : 00000000; +1a16 : 00000000; +1a17 : 00000000; +1a18 : 00000000; +1a19 : 00000000; +1a1a : 00000000; +1a1b : 00000000; +1a1c : 00000000; +1a1d : 00000000; +1a1e : 00000000; +1a1f : 00000000; +1a20 : 00000000; +1a21 : 00000000; +1a22 : 00000000; +1a23 : 00000000; +1a24 : 00000000; +1a25 : 00000000; +1a26 : 00000000; +1a27 : 00000000; +1a28 : 00000000; +1a29 : 00000000; +1a2a : 00000000; +1a2b : 00000000; +1a2c : 00000000; +1a2d : 00000000; +1a2e : 00000000; +1a2f : 00000000; +1a30 : 00000000; +1a31 : 00000000; +1a32 : 00000000; +1a33 : 00000000; +1a34 : 00000000; +1a35 : 00000000; +1a36 : 00000000; +1a37 : 00000000; +1a38 : 00000000; +1a39 : 00000000; +1a3a : 00000000; +1a3b : 00000000; +1a3c : 00000000; +1a3d : 00000000; +1a3e : 00000000; +1a3f : 00000000; +1a40 : 00000000; +1a41 : 00000000; +1a42 : 00000000; +1a43 : 00000000; +1a44 : 00000000; +1a45 : 00000000; +1a46 : 00000000; +1a47 : 00000000; +1a48 : 00000000; +1a49 : 00000000; +1a4a : 00000000; +1a4b : 00000000; +1a4c : 00000000; +1a4d : 00000000; +1a4e : 00000000; +1a4f : 00000000; +1a50 : 00000000; +1a51 : 00000000; +1a52 : 00000000; +1a53 : 00000000; +1a54 : 00000000; +1a55 : 00000000; +1a56 : 00000000; +1a57 : 00000000; +1a58 : 00000000; +1a59 : 00000000; +1a5a : 00000000; +1a5b : 00000000; +1a5c : 00000000; +1a5d : 00000000; +1a5e : 00000000; +1a5f : 00000000; +1a60 : 00000000; +1a61 : 00000000; +1a62 : 00000000; +1a63 : 00000000; +1a64 : 00000000; +1a65 : 00000000; +1a66 : 00000000; +1a67 : 00000000; +1a68 : 00000000; +1a69 : 00000000; +1a6a : 00000000; +1a6b : 00000000; +1a6c : 00000000; +1a6d : 00000000; +1a6e : 00000000; +1a6f : 00000000; +1a70 : 00000000; +1a71 : 00000000; +1a72 : 00000000; +1a73 : 00000000; +1a74 : 00000000; +1a75 : 00000000; +1a76 : 00000000; +1a77 : 00000000; +1a78 : 00000000; +1a79 : 00000000; +1a7a : 00000000; +1a7b : 00000000; +1a7c : 00000000; +1a7d : 00000000; +1a7e : 00000000; +1a7f : 00000000; +1a80 : 00000000; +1a81 : 00000000; +1a82 : 00000000; +1a83 : 00000000; +1a84 : 00000000; +1a85 : 00000000; +1a86 : 00000000; +1a87 : 00000000; +1a88 : 00000000; +1a89 : 00000000; +1a8a : 00000000; +1a8b : 00000000; +1a8c : 00000000; +1a8d : 00000000; +1a8e : 00000000; +1a8f : 00000000; +1a90 : 00000000; +1a91 : 00000000; +1a92 : 00000000; +1a93 : 00000000; +1a94 : 00000000; +1a95 : 00000000; +1a96 : 00000000; +1a97 : 00000000; +1a98 : 00000000; +1a99 : 00000000; +1a9a : 00000000; +1a9b : 00000000; +1a9c : 00000000; +1a9d : 00000000; +1a9e : 00000000; +1a9f : 00000000; +1aa0 : 00000000; +1aa1 : 00000000; +1aa2 : 00000000; +1aa3 : 00000000; +1aa4 : 00000000; +1aa5 : 00000000; +1aa6 : 00000000; +1aa7 : 00000000; +1aa8 : 00000000; +1aa9 : 00000000; +1aaa : 00000000; +1aab : 00000000; +1aac : 00000000; +1aad : 00000000; +1aae : 00000000; +1aaf : 00000000; +1ab0 : 00000000; +1ab1 : 00000000; +1ab2 : 00000000; +1ab3 : 00000000; +1ab4 : 00000000; +1ab5 : 00000000; +1ab6 : 00000000; +1ab7 : 00000000; +1ab8 : 00000000; +1ab9 : 00000000; +1aba : 00000000; +1abb : 00000000; +1abc : 00000000; +1abd : 00000000; +1abe : 00000000; +1abf : 00000000; +1ac0 : 00000000; +1ac1 : 00000000; +1ac2 : 00000000; +1ac3 : 00000000; +1ac4 : 00000000; +1ac5 : 00000000; +1ac6 : 00000000; +1ac7 : 00000000; +1ac8 : 00000000; +1ac9 : 00000000; +1aca : 00000000; +1acb : 00000000; +1acc : 00000000; +1acd : 00000000; +1ace : 00000000; +1acf : 00000000; +1ad0 : 00000000; +1ad1 : 00000000; +1ad2 : 00000000; +1ad3 : 00000000; +1ad4 : 00000000; +1ad5 : 00000000; +1ad6 : 00000000; +1ad7 : 00000000; +1ad8 : 00000000; +1ad9 : 00000000; +1ada : 00000000; +1adb : 00000000; +1adc : 00000000; +1add : 00000000; +1ade : 00000000; +1adf : 00000000; +1ae0 : 00000000; +1ae1 : 00000000; +1ae2 : 00000000; +1ae3 : 00000000; +1ae4 : 00000000; +1ae5 : 00000000; +1ae6 : 00000000; +1ae7 : 00000000; +1ae8 : 00000000; +1ae9 : 00000000; +1aea : 00000000; +1aeb : 00000000; +1aec : 00000000; +1aed : 00000000; +1aee : 00000000; +1aef : 00000000; +1af0 : 00000000; +1af1 : 00000000; +1af2 : 00000000; +1af3 : 00000000; +1af4 : 00000000; +1af5 : 00000000; +1af6 : 00000000; +1af7 : 00000000; +1af8 : 00000000; +1af9 : 00000000; +1afa : 00000000; +1afb : 00000000; +1afc : 00000000; +1afd : 00000000; +1afe : 00000000; +1aff : 00000000; +1b00 : 00000000; +1b01 : 00000000; +1b02 : 00000000; +1b03 : 00000000; +1b04 : 00000000; +1b05 : 00000000; +1b06 : 00000000; +1b07 : 00000000; +1b08 : 00000000; +1b09 : 00000000; +1b0a : 00000000; +1b0b : 00000000; +1b0c : 00000000; +1b0d : 00000000; +1b0e : 00000000; +1b0f : 00000000; +1b10 : 00000000; +1b11 : 00000000; +1b12 : 00000000; +1b13 : 00000000; +1b14 : 00000000; +1b15 : 00000000; +1b16 : 00000000; +1b17 : 00000000; +1b18 : 00000000; +1b19 : 00000000; +1b1a : 00000000; +1b1b : 00000000; +1b1c : 00000000; +1b1d : 00000000; +1b1e : 00000000; +1b1f : 00000000; +1b20 : 00000000; +1b21 : 00000000; +1b22 : 00000000; +1b23 : 00000000; +1b24 : 00000000; +1b25 : 00000000; +1b26 : 00000000; +1b27 : 00000000; +1b28 : 00000000; +1b29 : 00000000; +1b2a : 00000000; +1b2b : 00000000; +1b2c : 00000000; +1b2d : 00000000; +1b2e : 00000000; +1b2f : 00000000; +1b30 : 00000000; +1b31 : 00000000; +1b32 : 00000000; +1b33 : 00000000; +1b34 : 00000000; +1b35 : 00000000; +1b36 : 00000000; +1b37 : 00000000; +1b38 : 00000000; +1b39 : 00000000; +1b3a : 00000000; +1b3b : 00000000; +1b3c : 00000000; +1b3d : 00000000; +1b3e : 00000000; +1b3f : 00000000; +1b40 : 00000000; +1b41 : 00000000; +1b42 : 00000000; +1b43 : 00000000; +1b44 : 00000000; +1b45 : 00000000; +1b46 : 00000000; +1b47 : 00000000; +1b48 : 00000000; +1b49 : 00000000; +1b4a : 00000000; +1b4b : 00000000; +1b4c : 00000000; +1b4d : 00000000; +1b4e : 00000000; +1b4f : 00000000; +1b50 : 00000000; +1b51 : 00000000; +1b52 : 00000000; +1b53 : 00000000; +1b54 : 00000000; +1b55 : 00000000; +1b56 : 00000000; +1b57 : 00000000; +1b58 : 00000000; +1b59 : 00000000; +1b5a : 00000000; +1b5b : 00000000; +1b5c : 00000000; +1b5d : 00000000; +1b5e : 00000000; +1b5f : 00000000; +1b60 : 00000000; +1b61 : 00000000; +1b62 : 00000000; +1b63 : 00000000; +1b64 : 00000000; +1b65 : 00000000; +1b66 : 00000000; +1b67 : 00000000; +1b68 : 00000000; +1b69 : 00000000; +1b6a : 00000000; +1b6b : 00000000; +1b6c : 00000000; +1b6d : 00000000; +1b6e : 00000000; +1b6f : 00000000; +1b70 : 00000000; +1b71 : 00000000; +1b72 : 00000000; +1b73 : 00000000; +1b74 : 00000000; +1b75 : 00000000; +1b76 : 00000000; +1b77 : 00000000; +1b78 : 00000000; +1b79 : 00000000; +1b7a : 00000000; +1b7b : 00000000; +1b7c : 00000000; +1b7d : 00000000; +1b7e : 00000000; +1b7f : 00000000; +1b80 : 00000000; +1b81 : 00000000; +1b82 : 00000000; +1b83 : 00000000; +1b84 : 00000000; +1b85 : 00000000; +1b86 : 00000000; +1b87 : 00000000; +1b88 : 00000000; +1b89 : 00000000; +1b8a : 00000000; +1b8b : 00000000; +1b8c : 00000000; +1b8d : 00000000; +1b8e : 00000000; +1b8f : 00000000; +1b90 : 00000000; +1b91 : 00000000; +1b92 : 00000000; +1b93 : 00000000; +1b94 : 00000000; +1b95 : 00000000; +1b96 : 00000000; +1b97 : 00000000; +1b98 : 00000000; +1b99 : 00000000; +1b9a : 00000000; +1b9b : 00000000; +1b9c : 00000000; +1b9d : 00000000; +1b9e : 00000000; +1b9f : 00000000; +1ba0 : 00000000; +1ba1 : 00000000; +1ba2 : 00000000; +1ba3 : 00000000; +1ba4 : 00000000; +1ba5 : 00000000; +1ba6 : 00000000; +1ba7 : 00000000; +1ba8 : 00000000; +1ba9 : 00000000; +1baa : 00000000; +1bab : 00000000; +1bac : 00000000; +1bad : 00000000; +1bae : 00000000; +1baf : 00000000; +1bb0 : 00000000; +1bb1 : 00000000; +1bb2 : 00000000; +1bb3 : 00000000; +1bb4 : 00000000; +1bb5 : 00000000; +1bb6 : 00000000; +1bb7 : 00000000; +1bb8 : 00000000; +1bb9 : 00000000; +1bba : 00000000; +1bbb : 00000000; +1bbc : 00000000; +1bbd : 00000000; +1bbe : 00000000; +1bbf : 00000000; +1bc0 : 00000000; +1bc1 : 00000000; +1bc2 : 00000000; +1bc3 : 00000000; +1bc4 : 00000000; +1bc5 : 00000000; +1bc6 : 00000000; +1bc7 : 00000000; +1bc8 : 00000000; +1bc9 : 00000000; +1bca : 00000000; +1bcb : 00000000; +1bcc : 00000000; +1bcd : 00000000; +1bce : 00000000; +1bcf : 00000000; +1bd0 : 00000000; +1bd1 : 00000000; +1bd2 : 00000000; +1bd3 : 00000000; +1bd4 : 00000000; +1bd5 : 00000000; +1bd6 : 00000000; +1bd7 : 00000000; +1bd8 : 00000000; +1bd9 : 00000000; +1bda : 00000000; +1bdb : 00000000; +1bdc : 00000000; +1bdd : 00000000; +1bde : 00000000; +1bdf : 00000000; +1be0 : 00000000; +1be1 : 00000000; +1be2 : 00000000; +1be3 : 00000000; +1be4 : 00000000; +1be5 : 00000000; +1be6 : 00000000; +1be7 : 00000000; +1be8 : 00000000; +1be9 : 00000000; +1bea : 00000000; +1beb : 00000000; +1bec : 00000000; +1bed : 00000000; +1bee : 00000000; +1bef : 00000000; +1bf0 : 00000000; +1bf1 : 00000000; +1bf2 : 00000000; +1bf3 : 00000000; +1bf4 : 00000000; +1bf5 : 00000000; +1bf6 : 00000000; +1bf7 : 00000000; +1bf8 : 00000000; +1bf9 : 00000000; +1bfa : 00000000; +1bfb : 00000000; +1bfc : 00000000; +1bfd : 00000000; +1bfe : 00000000; +1bff : 00000000; +1c00 : 00000000; +1c01 : 00000000; +1c02 : 00000000; +1c03 : 00000000; +1c04 : 00000000; +1c05 : 00000000; +1c06 : 00000000; +1c07 : 00000000; +1c08 : 00000000; +1c09 : 00000000; +1c0a : 00000000; +1c0b : 00000000; +1c0c : 00000000; +1c0d : 00000000; +1c0e : 00000000; +1c0f : 00000000; +1c10 : 00000000; +1c11 : 00000000; +1c12 : 00000000; +1c13 : 00000000; +1c14 : 00000000; +1c15 : 00000000; +1c16 : 00000000; +1c17 : 00000000; +1c18 : 00000000; +1c19 : 00000000; +1c1a : 00000000; +1c1b : 00000000; +1c1c : 00000000; +1c1d : 00000000; +1c1e : 00000000; +1c1f : 00000000; +1c20 : 00000000; +1c21 : 00000000; +1c22 : 00000000; +1c23 : 00000000; +1c24 : 00000000; +1c25 : 00000000; +1c26 : 00000000; +1c27 : 00000000; +1c28 : 00000000; +1c29 : 00000000; +1c2a : 00000000; +1c2b : 00000000; +1c2c : 00000000; +1c2d : 00000000; +1c2e : 00000000; +1c2f : 00000000; +1c30 : 00000000; +1c31 : 00000000; +1c32 : 00000000; +1c33 : 00000000; +1c34 : 00000000; +1c35 : 00000000; +1c36 : 00000000; +1c37 : 00000000; +1c38 : 00000000; +1c39 : 00000000; +1c3a : 00000000; +1c3b : 00000000; +1c3c : 00000000; +1c3d : 00000000; +1c3e : 00000000; +1c3f : 00000000; +1c40 : 00000000; +1c41 : 00000000; +1c42 : 00000000; +1c43 : 00000000; +1c44 : 00000000; +1c45 : 00000000; +1c46 : 00000000; +1c47 : 00000000; +1c48 : 00000000; +1c49 : 00000000; +1c4a : 00000000; +1c4b : 00000000; +1c4c : 00000000; +1c4d : 00000000; +1c4e : 00000000; +1c4f : 00000000; +1c50 : 00000000; +1c51 : 00000000; +1c52 : 00000000; +1c53 : 00000000; +1c54 : 00000000; +1c55 : 00000000; +1c56 : 00000000; +1c57 : 00000000; +1c58 : 00000000; +1c59 : 00000000; +1c5a : 00000000; +1c5b : 00000000; +1c5c : 00000000; +1c5d : 00000000; +1c5e : 00000000; +1c5f : 00000000; +1c60 : 00000000; +1c61 : 00000000; +1c62 : 00000000; +1c63 : 00000000; +1c64 : 00000000; +1c65 : 00000000; +1c66 : 00000000; +1c67 : 00000000; +1c68 : 00000000; +1c69 : 00000000; +1c6a : 00000000; +1c6b : 00000000; +1c6c : 00000000; +1c6d : 00000000; +1c6e : 00000000; +1c6f : 00000000; +1c70 : 00000000; +1c71 : 00000000; +1c72 : 00000000; +1c73 : 00000000; +1c74 : 00000000; +1c75 : 00000000; +1c76 : 00000000; +1c77 : 00000000; +1c78 : 00000000; +1c79 : 00000000; +1c7a : 00000000; +1c7b : 00000000; +1c7c : 00000000; +1c7d : 00000000; +1c7e : 00000000; +1c7f : 00000000; +1c80 : 00000000; +1c81 : 00000000; +1c82 : 00000000; +1c83 : 00000000; +1c84 : 00000000; +1c85 : 00000000; +1c86 : 00000000; +1c87 : 00000000; +1c88 : 00000000; +1c89 : 00000000; +1c8a : 00000000; +1c8b : 00000000; +1c8c : 00000000; +1c8d : 00000000; +1c8e : 00000000; +1c8f : 00000000; +1c90 : 00000000; +1c91 : 00000000; +1c92 : 00000000; +1c93 : 00000000; +1c94 : 00000000; +1c95 : 00000000; +1c96 : 00000000; +1c97 : 00000000; +1c98 : 00000000; +1c99 : 00000000; +1c9a : 00000000; +1c9b : 00000000; +1c9c : 00000000; +1c9d : 00000000; +1c9e : 00000000; +1c9f : 00000000; +1ca0 : 00000000; +1ca1 : 00000000; +1ca2 : 00000000; +1ca3 : 00000000; +1ca4 : 00000000; +1ca5 : 00000000; +1ca6 : 00000000; +1ca7 : 00000000; +1ca8 : 00000000; +1ca9 : 00000000; +1caa : 00000000; +1cab : 00000000; +1cac : 00000000; +1cad : 00000000; +1cae : 00000000; +1caf : 00000000; +1cb0 : 00000000; +1cb1 : 00000000; +1cb2 : 00000000; +1cb3 : 00000000; +1cb4 : 00000000; +1cb5 : 00000000; +1cb6 : 00000000; +1cb7 : 00000000; +1cb8 : 00000000; +1cb9 : 00000000; +1cba : 00000000; +1cbb : 00000000; +1cbc : 00000000; +1cbd : 00000000; +1cbe : 00000000; +1cbf : 00000000; +1cc0 : 00000000; +1cc1 : 00000000; +1cc2 : 00000000; +1cc3 : 00000000; +1cc4 : 00000000; +1cc5 : 00000000; +1cc6 : 00000000; +1cc7 : 00000000; +1cc8 : 00000000; +1cc9 : 00000000; +1cca : 00000000; +1ccb : 00000000; +1ccc : 00000000; +1ccd : 00000000; +1cce : 00000000; +1ccf : 00000000; +1cd0 : 00000000; +1cd1 : 00000000; +1cd2 : 00000000; +1cd3 : 00000000; +1cd4 : 00000000; +1cd5 : 00000000; +1cd6 : 00000000; +1cd7 : 00000000; +1cd8 : 00000000; +1cd9 : 00000000; +1cda : 00000000; +1cdb : 00000000; +1cdc : 00000000; +1cdd : 00000000; +1cde : 00000000; +1cdf : 00000000; +1ce0 : 00000000; +1ce1 : 00000000; +1ce2 : 00000000; +1ce3 : 00000000; +1ce4 : 00000000; +1ce5 : 00000000; +1ce6 : 00000000; +1ce7 : 00000000; +1ce8 : 00000000; +1ce9 : 00000000; +1cea : 00000000; +1ceb : 00000000; +1cec : 00000000; +1ced : 00000000; +1cee : 00000000; +1cef : 00000000; +1cf0 : 00000000; +1cf1 : 00000000; +1cf2 : 00000000; +1cf3 : 00000000; +1cf4 : 00000000; +1cf5 : 00000000; +1cf6 : 00000000; +1cf7 : 00000000; +1cf8 : 00000000; +1cf9 : 00000000; +1cfa : 00000000; +1cfb : 00000000; +1cfc : 00000000; +1cfd : 00000000; +1cfe : 00000000; +1cff : 00000000; +1d00 : 00000000; +1d01 : 00000000; +1d02 : 00000000; +1d03 : 00000000; +1d04 : 00000000; +1d05 : 00000000; +1d06 : 00000000; +1d07 : 00000000; +1d08 : 00000000; +1d09 : 00000000; +1d0a : 00000000; +1d0b : 00000000; +1d0c : 00000000; +1d0d : 00000000; +1d0e : 00000000; +1d0f : 00000000; +1d10 : 00000000; +1d11 : 00000000; +1d12 : 00000000; +1d13 : 00000000; +1d14 : 00000000; +1d15 : 00000000; +1d16 : 00000000; +1d17 : 00000000; +1d18 : 00000000; +1d19 : 00000000; +1d1a : 00000000; +1d1b : 00000000; +1d1c : 00000000; +1d1d : 00000000; +1d1e : 00000000; +1d1f : 00000000; +1d20 : 00000000; +1d21 : 00000000; +1d22 : 00000000; +1d23 : 00000000; +1d24 : 00000000; +1d25 : 00000000; +1d26 : 00000000; +1d27 : 00000000; +1d28 : 00000000; +1d29 : 00000000; +1d2a : 00000000; +1d2b : 00000000; +1d2c : 00000000; +1d2d : 00000000; +1d2e : 00000000; +1d2f : 00000000; +1d30 : 00000000; +1d31 : 00000000; +1d32 : 00000000; +1d33 : 00000000; +1d34 : 00000000; +1d35 : 00000000; +1d36 : 00000000; +1d37 : 00000000; +1d38 : 00000000; +1d39 : 00000000; +1d3a : 00000000; +1d3b : 00000000; +1d3c : 00000000; +1d3d : 00000000; +1d3e : 00000000; +1d3f : 00000000; +1d40 : 00000000; +1d41 : 00000000; +1d42 : 00000000; +1d43 : 00000000; +1d44 : 00000000; +1d45 : 00000000; +1d46 : 00000000; +1d47 : 00000000; +1d48 : 00000000; +1d49 : 00000000; +1d4a : 00000000; +1d4b : 00000000; +1d4c : 00000000; +1d4d : 00000000; +1d4e : 00000000; +1d4f : 00000000; +1d50 : 00000000; +1d51 : 00000000; +1d52 : 00000000; +1d53 : 00000000; +1d54 : 00000000; +1d55 : 00000000; +1d56 : 00000000; +1d57 : 00000000; +1d58 : 00000000; +1d59 : 00000000; +1d5a : 00000000; +1d5b : 00000000; +1d5c : 00000000; +1d5d : 00000000; +1d5e : 00000000; +1d5f : 00000000; +1d60 : 00000000; +1d61 : 00000000; +1d62 : 00000000; +1d63 : 00000000; +1d64 : 00000000; +1d65 : 00000000; +1d66 : 00000000; +1d67 : 00000000; +1d68 : 00000000; +1d69 : 00000000; +1d6a : 00000000; +1d6b : 00000000; +1d6c : 00000000; +1d6d : 00000000; +1d6e : 00000000; +1d6f : 00000000; +1d70 : 00000000; +1d71 : 00000000; +1d72 : 00000000; +1d73 : 00000000; +1d74 : 00000000; +1d75 : 00000000; +1d76 : 00000000; +1d77 : 00000000; +1d78 : 00000000; +1d79 : 00000000; +1d7a : 00000000; +1d7b : 00000000; +1d7c : 00000000; +1d7d : 00000000; +1d7e : 00000000; +1d7f : 00000000; +1d80 : 00000000; +1d81 : 00000000; +1d82 : 00000000; +1d83 : 00000000; +1d84 : 00000000; +1d85 : 00000000; +1d86 : 00000000; +1d87 : 00000000; +1d88 : 00000000; +1d89 : 00000000; +1d8a : 00000000; +1d8b : 00000000; +1d8c : 00000000; +1d8d : 00000000; +1d8e : 00000000; +1d8f : 00000000; +1d90 : 00000000; +1d91 : 00000000; +1d92 : 00000000; +1d93 : 00000000; +1d94 : 00000000; +1d95 : 00000000; +1d96 : 00000000; +1d97 : 00000000; +1d98 : 00000000; +1d99 : 00000000; +1d9a : 00000000; +1d9b : 00000000; +1d9c : 00000000; +1d9d : 00000000; +1d9e : 00000000; +1d9f : 00000000; +1da0 : 00000000; +1da1 : 00000000; +1da2 : 00000000; +1da3 : 00000000; +1da4 : 00000000; +1da5 : 00000000; +1da6 : 00000000; +1da7 : 00000000; +1da8 : 00000000; +1da9 : 00000000; +1daa : 00000000; +1dab : 00000000; +1dac : 00000000; +1dad : 00000000; +1dae : 00000000; +1daf : 00000000; +1db0 : 00000000; +1db1 : 00000000; +1db2 : 00000000; +1db3 : 00000000; +1db4 : 00000000; +1db5 : 00000000; +1db6 : 00000000; +1db7 : 00000000; +1db8 : 00000000; +1db9 : 00000000; +1dba : 00000000; +1dbb : 00000000; +1dbc : 00000000; +1dbd : 00000000; +1dbe : 00000000; +1dbf : 00000000; +1dc0 : 00000000; +1dc1 : 00000000; +1dc2 : 00000000; +1dc3 : 00000000; +1dc4 : 00000000; +1dc5 : 00000000; +1dc6 : 00000000; +1dc7 : 00000000; +1dc8 : 00000000; +1dc9 : 00000000; +1dca : 00000000; +1dcb : 00000000; +1dcc : 00000000; +1dcd : 00000000; +1dce : 00000000; +1dcf : 00000000; +1dd0 : 00000000; +1dd1 : 00000000; +1dd2 : 00000000; +1dd3 : 00000000; +1dd4 : 00000000; +1dd5 : 00000000; +1dd6 : 00000000; +1dd7 : 00000000; +1dd8 : 00000000; +1dd9 : 00000000; +1dda : 00000000; +1ddb : 00000000; +1ddc : 00000000; +1ddd : 00000000; +1dde : 00000000; +1ddf : 00000000; +1de0 : 00000000; +1de1 : 00000000; +1de2 : 00000000; +1de3 : 00000000; +1de4 : 00000000; +1de5 : 00000000; +1de6 : 00000000; +1de7 : 00000000; +1de8 : 00000000; +1de9 : 00000000; +1dea : 00000000; +1deb : 00000000; +1dec : 00000000; +1ded : 00000000; +1dee : 00000000; +1def : 00000000; +1df0 : 00000000; +1df1 : 00000000; +1df2 : 00000000; +1df3 : 00000000; +1df4 : 00000000; +1df5 : 00000000; +1df6 : 00000000; +1df7 : 00000000; +1df8 : 00000000; +1df9 : 00000000; +1dfa : 00000000; +1dfb : 00000000; +1dfc : 00000000; +1dfd : 00000000; +1dfe : 00000000; +1dff : 00000000; +1e00 : 00000000; +1e01 : 00000000; +1e02 : 00000000; +1e03 : 00000000; +1e04 : 00000000; +1e05 : 00000000; +1e06 : 00000000; +1e07 : 00000000; +1e08 : 00000000; +1e09 : 00000000; +1e0a : 00000000; +1e0b : 00000000; +1e0c : 00000000; +1e0d : 00000000; +1e0e : 00000000; +1e0f : 00000000; +1e10 : 00000000; +1e11 : 00000000; +1e12 : 00000000; +1e13 : 00000000; +1e14 : 00000000; +1e15 : 00000000; +1e16 : 00000000; +1e17 : 00000000; +1e18 : 00000000; +1e19 : 00000000; +1e1a : 00000000; +1e1b : 00000000; +1e1c : 00000000; +1e1d : 00000000; +1e1e : 00000000; +1e1f : 00000000; +1e20 : 00000000; +1e21 : 00000000; +1e22 : 00000000; +1e23 : 00000000; +1e24 : 00000000; +1e25 : 00000000; +1e26 : 00000000; +1e27 : 00000000; +1e28 : 00000000; +1e29 : 00000000; +1e2a : 00000000; +1e2b : 00000000; +1e2c : 00000000; +1e2d : 00000000; +1e2e : 00000000; +1e2f : 00000000; +1e30 : 00000000; +1e31 : 00000000; +1e32 : 00000000; +1e33 : 00000000; +1e34 : 00000000; +1e35 : 00000000; +1e36 : 00000000; +1e37 : 00000000; +1e38 : 00000000; +1e39 : 00000000; +1e3a : 00000000; +1e3b : 00000000; +1e3c : 00000000; +1e3d : 00000000; +1e3e : 00000000; +1e3f : 00000000; +1e40 : 00000000; +1e41 : 00000000; +1e42 : 00000000; +1e43 : 00000000; +1e44 : 00000000; +1e45 : 00000000; +1e46 : 00000000; +1e47 : 00000000; +1e48 : 00000000; +1e49 : 00000000; +1e4a : 00000000; +1e4b : 00000000; +1e4c : 00000000; +1e4d : 00000000; +1e4e : 00000000; +1e4f : 00000000; +1e50 : 00000000; +1e51 : 00000000; +1e52 : 00000000; +1e53 : 00000000; +1e54 : 00000000; +1e55 : 00000000; +1e56 : 00000000; +1e57 : 00000000; +1e58 : 00000000; +1e59 : 00000000; +1e5a : 00000000; +1e5b : 00000000; +1e5c : 00000000; +1e5d : 00000000; +1e5e : 00000000; +1e5f : 00000000; +1e60 : 00000000; +1e61 : 00000000; +1e62 : 00000000; +1e63 : 00000000; +1e64 : 00000000; +1e65 : 00000000; +1e66 : 00000000; +1e67 : 00000000; +1e68 : 00000000; +1e69 : 00000000; +1e6a : 00000000; +1e6b : 00000000; +1e6c : 00000000; +1e6d : 00000000; +1e6e : 00000000; +1e6f : 00000000; +1e70 : 00000000; +1e71 : 00000000; +1e72 : 00000000; +1e73 : 00000000; +1e74 : 00000000; +1e75 : 00000000; +1e76 : 00000000; +1e77 : 00000000; +1e78 : 00000000; +1e79 : 00000000; +1e7a : 00000000; +1e7b : 00000000; +1e7c : 00000000; +1e7d : 00000000; +1e7e : 00000000; +1e7f : 00000000; +1e80 : 00000000; +1e81 : 00000000; +1e82 : 00000000; +1e83 : 00000000; +1e84 : 00000000; +1e85 : 00000000; +1e86 : 00000000; +1e87 : 00000000; +1e88 : 00000000; +1e89 : 00000000; +1e8a : 00000000; +1e8b : 00000000; +1e8c : 00000000; +1e8d : 00000000; +1e8e : 00000000; +1e8f : 00000000; +1e90 : 00000000; +1e91 : 00000000; +1e92 : 00000000; +1e93 : 00000000; +1e94 : 00000000; +1e95 : 00000000; +1e96 : 00000000; +1e97 : 00000000; +1e98 : 00000000; +1e99 : 00000000; +1e9a : 00000000; +1e9b : 00000000; +1e9c : 00000000; +1e9d : 00000000; +1e9e : 00000000; +1e9f : 00000000; +1ea0 : 00000000; +1ea1 : 00000000; +1ea2 : 00000000; +1ea3 : 00000000; +1ea4 : 00000000; +1ea5 : 00000000; +1ea6 : 00000000; +1ea7 : 00000000; +1ea8 : 00000000; +1ea9 : 00000000; +1eaa : 00000000; +1eab : 00000000; +1eac : 00000000; +1ead : 00000000; +1eae : 00000000; +1eaf : 00000000; +1eb0 : 00000000; +1eb1 : 00000000; +1eb2 : 00000000; +1eb3 : 00000000; +1eb4 : 00000000; +1eb5 : 00000000; +1eb6 : 00000000; +1eb7 : 00000000; +1eb8 : 00000000; +1eb9 : 00000000; +1eba : 00000000; +1ebb : 00000000; +1ebc : 00000000; +1ebd : 00000000; +1ebe : 00000000; +1ebf : 00000000; +1ec0 : 00000000; +1ec1 : 00000000; +1ec2 : 00000000; +1ec3 : 00000000; +1ec4 : 00000000; +1ec5 : 00000000; +1ec6 : 00000000; +1ec7 : 00000000; +1ec8 : 00000000; +1ec9 : 00000000; +1eca : 00000000; +1ecb : 00000000; +1ecc : 00000000; +1ecd : 00000000; +1ece : 00000000; +1ecf : 00000000; +1ed0 : 00000000; +1ed1 : 00000000; +1ed2 : 00000000; +1ed3 : 00000000; +1ed4 : 00000000; +1ed5 : 00000000; +1ed6 : 00000000; +1ed7 : 00000000; +1ed8 : 00000000; +1ed9 : 00000000; +1eda : 00000000; +1edb : 00000000; +1edc : 00000000; +1edd : 00000000; +1ede : 00000000; +1edf : 00000000; +1ee0 : 00000000; +1ee1 : 00000000; +1ee2 : 00000000; +1ee3 : 00000000; +1ee4 : 00000000; +1ee5 : 00000000; +1ee6 : 00000000; +1ee7 : 00000000; +1ee8 : 00000000; +1ee9 : 00000000; +1eea : 00000000; +1eeb : 00000000; +1eec : 00000000; +1eed : 00000000; +1eee : 00000000; +1eef : 00000000; +1ef0 : 00000000; +1ef1 : 00000000; +1ef2 : 00000000; +1ef3 : 00000000; +1ef4 : 00000000; +1ef5 : 00000000; +1ef6 : 00000000; +1ef7 : 00000000; +1ef8 : 00000000; +1ef9 : 00000000; +1efa : 00000000; +1efb : 00000000; +1efc : 00000000; +1efd : 00000000; +1efe : 00000000; +1eff : 00000000; +1f00 : 00000000; +1f01 : 00000000; +1f02 : 00000000; +1f03 : 00000000; +1f04 : 00000000; +1f05 : 00000000; +1f06 : 00000000; +1f07 : 00000000; +1f08 : 00000000; +1f09 : 00000000; +1f0a : 00000000; +1f0b : 00000000; +1f0c : 00000000; +1f0d : 00000000; +1f0e : 00000000; +1f0f : 00000000; +1f10 : 00000000; +1f11 : 00000000; +1f12 : 00000000; +1f13 : 00000000; +1f14 : 00000000; +1f15 : 00000000; +1f16 : 00000000; +1f17 : 00000000; +1f18 : 00000000; +1f19 : 00000000; +1f1a : 00000000; +1f1b : 00000000; +1f1c : 00000000; +1f1d : 00000000; +1f1e : 00000000; +1f1f : 00000000; +1f20 : 00000000; +1f21 : 00000000; +1f22 : 00000000; +1f23 : 00000000; +1f24 : 00000000; +1f25 : 00000000; +1f26 : 00000000; +1f27 : 00000000; +1f28 : 00000000; +1f29 : 00000000; +1f2a : 00000000; +1f2b : 00000000; +1f2c : 00000000; +1f2d : 00000000; +1f2e : 00000000; +1f2f : 00000000; +1f30 : 00000000; +1f31 : 00000000; +1f32 : 00000000; +1f33 : 00000000; +1f34 : 00000000; +1f35 : 00000000; +1f36 : 00000000; +1f37 : 00000000; +1f38 : 00000000; +1f39 : 00000000; +1f3a : 00000000; +1f3b : 00000000; +1f3c : 00000000; +1f3d : 00000000; +1f3e : 00000000; +1f3f : 00000000; +1f40 : 00000000; +1f41 : 00000000; +1f42 : 00000000; +1f43 : 00000000; +1f44 : 00000000; +1f45 : 00000000; +1f46 : 00000000; +1f47 : 00000000; +1f48 : 00000000; +1f49 : 00000000; +1f4a : 00000000; +1f4b : 00000000; +1f4c : 00000000; +1f4d : 00000000; +1f4e : 00000000; +1f4f : 00000000; +1f50 : 00000000; +1f51 : 00000000; +1f52 : 00000000; +1f53 : 00000000; +1f54 : 00000000; +1f55 : 00000000; +1f56 : 00000000; +1f57 : 00000000; +1f58 : 00000000; +1f59 : 00000000; +1f5a : 00000000; +1f5b : 00000000; +1f5c : 00000000; +1f5d : 00000000; +1f5e : 00000000; +1f5f : 00000000; +1f60 : 00000000; +1f61 : 00000000; +1f62 : 00000000; +1f63 : 00000000; +1f64 : 00000000; +1f65 : 00000000; +1f66 : 00000000; +1f67 : 00000000; +1f68 : 00000000; +1f69 : 00000000; +1f6a : 00000000; +1f6b : 00000000; +1f6c : 00000000; +1f6d : 00000000; +1f6e : 00000000; +1f6f : 00000000; +1f70 : 00000000; +1f71 : 00000000; +1f72 : 00000000; +1f73 : 00000000; +1f74 : 00000000; +1f75 : 00000000; +1f76 : 00000000; +1f77 : 00000000; +1f78 : 00000000; +1f79 : 00000000; +1f7a : 00000000; +1f7b : 00000000; +1f7c : 00000000; +1f7d : 00000000; +1f7e : 00000000; +1f7f : 00000000; +1f80 : 00000000; +1f81 : 00000000; +1f82 : 00000000; +1f83 : 00000000; +1f84 : 00000000; +1f85 : 00000000; +1f86 : 00000000; +1f87 : 00000000; +1f88 : 00000000; +1f89 : 00000000; +1f8a : 00000000; +1f8b : 00000000; +1f8c : 00000000; +1f8d : 00000000; +1f8e : 00000000; +1f8f : 00000000; +1f90 : 00000000; +1f91 : 00000000; +1f92 : 00000000; +1f93 : 00000000; +1f94 : 00000000; +1f95 : 00000000; +1f96 : 00000000; +1f97 : 00000000; +1f98 : 00000000; +1f99 : 00000000; +1f9a : 00000000; +1f9b : 00000000; +1f9c : 00000000; +1f9d : 00000000; +1f9e : 00000000; +1f9f : 00000000; +1fa0 : 00000000; +1fa1 : 00000000; +1fa2 : 00000000; +1fa3 : 00000000; +1fa4 : 00000000; +1fa5 : 00000000; +1fa6 : 00000000; +1fa7 : 00000000; +1fa8 : 00000000; +1fa9 : 00000000; +1faa : 00000000; +1fab : 00000000; +1fac : 00000000; +1fad : 00000000; +1fae : 00000000; +1faf : 00000000; +1fb0 : 00000000; +1fb1 : 00000000; +1fb2 : 00000000; +1fb3 : 00000000; +1fb4 : 00000000; +1fb5 : 00000000; +1fb6 : 00000000; +1fb7 : 00000000; +1fb8 : 00000000; +1fb9 : 00000000; +1fba : 00000000; +1fbb : 00000000; +1fbc : 00000000; +1fbd : 00000000; +1fbe : 00000000; +1fbf : 00000000; +1fc0 : 00000000; +1fc1 : 00000000; +1fc2 : 00000000; +1fc3 : 00000000; +1fc4 : 00000000; +1fc5 : 00000000; +1fc6 : 00000000; +1fc7 : 00000000; +1fc8 : 00000000; +1fc9 : 00000000; +1fca : 00000000; +1fcb : 00000000; +1fcc : 00000000; +1fcd : 00000000; +1fce : 00000000; +1fcf : 00000000; +1fd0 : 00000000; +1fd1 : 00000000; +1fd2 : 00000000; +1fd3 : 00000000; +1fd4 : 00000000; +1fd5 : 00000000; +1fd6 : 00000000; +1fd7 : 00000000; +1fd8 : 00000000; +1fd9 : 00000000; +1fda : 00000000; +1fdb : 00000000; +1fdc : 00000000; +1fdd : 00000000; +1fde : 00000000; +1fdf : 00000000; +1fe0 : 00000000; +1fe1 : 00000000; +1fe2 : 00000000; +1fe3 : 00000000; +1fe4 : 00000000; +1fe5 : 00000000; +1fe6 : 00000000; +1fe7 : 00000000; +1fe8 : 00000000; +1fe9 : 00000000; +1fea : 00000000; +1feb : 00000000; +1fec : 00000000; +1fed : 00000000; +1fee : 00000000; +1fef : 00000000; +1ff0 : 00000000; +1ff1 : 00000000; +1ff2 : 00000000; +1ff3 : 00000000; +1ff4 : 00000000; +1ff5 : 00000000; +1ff6 : 00000000; +1ff7 : 00000000; +1ff8 : 00000000; +1ff9 : 00000000; +1ffa : 00000000; +1ffb : 00000000; +1ffc : 00000000; +1ffd : 00000000; +1ffe : 00000000; +1fff : 00000000; +2000 : 00000000; +2001 : 00000000; +2002 : 00000000; +2003 : 00000000; +2004 : 00000000; +2005 : 00000000; +2006 : 00000000; +2007 : 00000000; +2008 : 00000000; +2009 : 00000000; +200a : 00000000; +200b : 00000000; +200c : 00000000; +200d : 00000000; +200e : 00000000; +200f : 00000000; +2010 : 00000000; +2011 : 00000000; +2012 : 00000000; +2013 : 00000000; +2014 : 00000000; +2015 : 00000000; +2016 : 00000000; +2017 : 00000000; +2018 : 00000000; +2019 : 00000000; +201a : 00000000; +201b : 00000000; +201c : 00000000; +201d : 00000000; +201e : 00000000; +201f : 00000000; +2020 : 00000000; +2021 : 00000000; +2022 : 00000000; +2023 : 00000000; +2024 : 00000000; +2025 : 00000000; +2026 : 00000000; +2027 : 00000000; +2028 : 00000000; +2029 : 00000000; +202a : 00000000; +202b : 00000000; +202c : 00000000; +202d : 00000000; +202e : 00000000; +202f : 00000000; +2030 : 00000000; +2031 : 00000000; +2032 : 00000000; +2033 : 00000000; +2034 : 00000000; +2035 : 00000000; +2036 : 00000000; +2037 : 00000000; +2038 : 00000000; +2039 : 00000000; +203a : 00000000; +203b : 00000000; +203c : 00000000; +203d : 00000000; +203e : 00000000; +203f : 00000000; +2040 : 00000000; +2041 : 00000000; +2042 : 00000000; +2043 : 00000000; +2044 : 00000000; +2045 : 00000000; +2046 : 00000000; +2047 : 00000000; +2048 : 00000000; +2049 : 00000000; +204a : 00000000; +204b : 00000000; +204c : 00000000; +204d : 00000000; +204e : 00000000; +204f : 00000000; +2050 : 00000000; +2051 : 00000000; +2052 : 00000000; +2053 : 00000000; +2054 : 00000000; +2055 : 00000000; +2056 : 00000000; +2057 : 00000000; +2058 : 00000000; +2059 : 00000000; +205a : 00000000; +205b : 00000000; +205c : 00000000; +205d : 00000000; +205e : 00000000; +205f : 00000000; +2060 : 00000000; +2061 : 00000000; +2062 : 00000000; +2063 : 00000000; +2064 : 00000000; +2065 : 00000000; +2066 : 00000000; +2067 : 00000000; +2068 : 00000000; +2069 : 00000000; +206a : 00000000; +206b : 00000000; +206c : 00000000; +206d : 00000000; +206e : 00000000; +206f : 00000000; +2070 : 00000000; +2071 : 00000000; +2072 : 00000000; +2073 : 00000000; +2074 : 00000000; +2075 : 00000000; +2076 : 00000000; +2077 : 00000000; +2078 : 00000000; +2079 : 00000000; +207a : 00000000; +207b : 00000000; +207c : 00000000; +207d : 00000000; +207e : 00000000; +207f : 00000000; +2080 : 00000000; +2081 : 00000000; +2082 : 00000000; +2083 : 00000000; +2084 : 00000000; +2085 : 00000000; +2086 : 00000000; +2087 : 00000000; +2088 : 00000000; +2089 : 00000000; +208a : 00000000; +208b : 00000000; +208c : 00000000; +208d : 00000000; +208e : 00000000; +208f : 00000000; +2090 : 00000000; +2091 : 00000000; +2092 : 00000000; +2093 : 00000000; +2094 : 00000000; +2095 : 00000000; +2096 : 00000000; +2097 : 00000000; +2098 : 00000000; +2099 : 00000000; +209a : 00000000; +209b : 00000000; +209c : 00000000; +209d : 00000000; +209e : 00000000; +209f : 00000000; +20a0 : 00000000; +20a1 : 00000000; +20a2 : 00000000; +20a3 : 00000000; +20a4 : 00000000; +20a5 : 00000000; +20a6 : 00000000; +20a7 : 00000000; +20a8 : 00000000; +20a9 : 00000000; +20aa : 00000000; +20ab : 00000000; +20ac : 00000000; +20ad : 00000000; +20ae : 00000000; +20af : 00000000; +20b0 : 00000000; +20b1 : 00000000; +20b2 : 00000000; +20b3 : 00000000; +20b4 : 00000000; +20b5 : 00000000; +20b6 : 00000000; +20b7 : 00000000; +20b8 : 00000000; +20b9 : 00000000; +20ba : 00000000; +20bb : 00000000; +20bc : 00000000; +20bd : 00000000; +20be : 00000000; +20bf : 00000000; +20c0 : 00000000; +20c1 : 00000000; +20c2 : 00000000; +20c3 : 00000000; +20c4 : 00000000; +20c5 : 00000000; +20c6 : 00000000; +20c7 : 00000000; +20c8 : 00000000; +20c9 : 00000000; +20ca : 00000000; +20cb : 00000000; +20cc : 00000000; +20cd : 00000000; +20ce : 00000000; +20cf : 00000000; +20d0 : 00000000; +20d1 : 00000000; +20d2 : 00000000; +20d3 : 00000000; +20d4 : 00000000; +20d5 : 00000000; +20d6 : 00000000; +20d7 : 00000000; +20d8 : 00000000; +20d9 : 00000000; +20da : 00000000; +20db : 00000000; +20dc : 00000000; +20dd : 00000000; +20de : 00000000; +20df : 00000000; +20e0 : 00000000; +20e1 : 00000000; +20e2 : 00000000; +20e3 : 00000000; +20e4 : 00000000; +20e5 : 00000000; +20e6 : 00000000; +20e7 : 00000000; +20e8 : 00000000; +20e9 : 00000000; +20ea : 00000000; +20eb : 00000000; +20ec : 00000000; +20ed : 00000000; +20ee : 00000000; +20ef : 00000000; +20f0 : 00000000; +20f1 : 00000000; +20f2 : 00000000; +20f3 : 00000000; +20f4 : 00000000; +20f5 : 00000000; +20f6 : 00000000; +20f7 : 00000000; +20f8 : 00000000; +20f9 : 00000000; +20fa : 00000000; +20fb : 00000000; +20fc : 00000000; +20fd : 00000000; +20fe : 00000000; +20ff : 00000000; +2100 : 00000000; +2101 : 00000000; +2102 : 00000000; +2103 : 00000000; +2104 : 00000000; +2105 : 00000000; +2106 : 00000000; +2107 : 00000000; +2108 : 00000000; +2109 : 00000000; +210a : 00000000; +210b : 00000000; +210c : 00000000; +210d : 00000000; +210e : 00000000; +210f : 00000000; +2110 : 00000000; +2111 : 00000000; +2112 : 00000000; +2113 : 00000000; +2114 : 00000000; +2115 : 00000000; +2116 : 00000000; +2117 : 00000000; +2118 : 00000000; +2119 : 00000000; +211a : 00000000; +211b : 00000000; +211c : 00000000; +211d : 00000000; +211e : 00000000; +211f : 00000000; +2120 : 00000000; +2121 : 00000000; +2122 : 00000000; +2123 : 00000000; +2124 : 00000000; +2125 : 00000000; +2126 : 00000000; +2127 : 00000000; +2128 : 00000000; +2129 : 00000000; +212a : 00000000; +212b : 00000000; +212c : 00000000; +212d : 00000000; +212e : 00000000; +212f : 00000000; +2130 : 00000000; +2131 : 00000000; +2132 : 00000000; +2133 : 00000000; +2134 : 00000000; +2135 : 00000000; +2136 : 00000000; +2137 : 00000000; +2138 : 00000000; +2139 : 00000000; +213a : 00000000; +213b : 00000000; +213c : 00000000; +213d : 00000000; +213e : 00000000; +213f : 00000000; +2140 : 00000000; +2141 : 00000000; +2142 : 00000000; +2143 : 00000000; +2144 : 00000000; +2145 : 00000000; +2146 : 00000000; +2147 : 00000000; +2148 : 00000000; +2149 : 00000000; +214a : 00000000; +214b : 00000000; +214c : 00000000; +214d : 00000000; +214e : 00000000; +214f : 00000000; +2150 : 00000000; +2151 : 00000000; +2152 : 00000000; +2153 : 00000000; +2154 : 00000000; +2155 : 00000000; +2156 : 00000000; +2157 : 00000000; +2158 : 00000000; +2159 : 00000000; +215a : 00000000; +215b : 00000000; +215c : 00000000; +215d : 00000000; +215e : 00000000; +215f : 00000000; +2160 : 00000000; +2161 : 00000000; +2162 : 00000000; +2163 : 00000000; +2164 : 00000000; +2165 : 00000000; +2166 : 00000000; +2167 : 00000000; +2168 : 00000000; +2169 : 00000000; +216a : 00000000; +216b : 00000000; +216c : 00000000; +216d : 00000000; +216e : 00000000; +216f : 00000000; +2170 : 00000000; +2171 : 00000000; +2172 : 00000000; +2173 : 00000000; +2174 : 00000000; +2175 : 00000000; +2176 : 00000000; +2177 : 00000000; +2178 : 00000000; +2179 : 00000000; +217a : 00000000; +217b : 00000000; +217c : 00000000; +217d : 00000000; +217e : 00000000; +217f : 00000000; +2180 : 00000000; +2181 : 00000000; +2182 : 00000000; +2183 : 00000000; +2184 : 00000000; +2185 : 00000000; +2186 : 00000000; +2187 : 00000000; +2188 : 00000000; +2189 : 00000000; +218a : 00000000; +218b : 00000000; +218c : 00000000; +218d : 00000000; +218e : 00000000; +218f : 00000000; +2190 : 00000000; +2191 : 00000000; +2192 : 00000000; +2193 : 00000000; +2194 : 00000000; +2195 : 00000000; +2196 : 00000000; +2197 : 00000000; +2198 : 00000000; +2199 : 00000000; +219a : 00000000; +219b : 00000000; +219c : 00000000; +219d : 00000000; +219e : 00000000; +219f : 00000000; +21a0 : 00000000; +21a1 : 00000000; +21a2 : 00000000; +21a3 : 00000000; +21a4 : 00000000; +21a5 : 00000000; +21a6 : 00000000; +21a7 : 00000000; +21a8 : 00000000; +21a9 : 00000000; +21aa : 00000000; +21ab : 00000000; +21ac : 00000000; +21ad : 00000000; +21ae : 00000000; +21af : 00000000; +21b0 : 00000000; +21b1 : 00000000; +21b2 : 00000000; +21b3 : 00000000; +21b4 : 00000000; +21b5 : 00000000; +21b6 : 00000000; +21b7 : 00000000; +21b8 : 00000000; +21b9 : 00000000; +21ba : 00000000; +21bb : 00000000; +21bc : 00000000; +21bd : 00000000; +21be : 00000000; +21bf : 00000000; +21c0 : 00000000; +21c1 : 00000000; +21c2 : 00000000; +21c3 : 00000000; +21c4 : 00000000; +21c5 : 00000000; +21c6 : 00000000; +21c7 : 00000000; +21c8 : 00000000; +21c9 : 00000000; +21ca : 00000000; +21cb : 00000000; +21cc : 00000000; +21cd : 00000000; +21ce : 00000000; +21cf : 00000000; +21d0 : 00000000; +21d1 : 00000000; +21d2 : 00000000; +21d3 : 00000000; +21d4 : 00000000; +21d5 : 00000000; +21d6 : 00000000; +21d7 : 00000000; +21d8 : 00000000; +21d9 : 00000000; +21da : 00000000; +21db : 00000000; +21dc : 00000000; +21dd : 00000000; +21de : 00000000; +21df : 00000000; +21e0 : 00000000; +21e1 : 00000000; +21e2 : 00000000; +21e3 : 00000000; +21e4 : 00000000; +21e5 : 00000000; +21e6 : 00000000; +21e7 : 00000000; +21e8 : 00000000; +21e9 : 00000000; +21ea : 00000000; +21eb : 00000000; +21ec : 00000000; +21ed : 00000000; +21ee : 00000000; +21ef : 00000000; +21f0 : 00000000; +21f1 : 00000000; +21f2 : 00000000; +21f3 : 00000000; +21f4 : 00000000; +21f5 : 00000000; +21f6 : 00000000; +21f7 : 00000000; +21f8 : 00000000; +21f9 : 00000000; +21fa : 00000000; +21fb : 00000000; +21fc : 00000000; +21fd : 00000000; +21fe : 00000000; +21ff : 00000000; +2200 : 00000000; +2201 : 00000000; +2202 : 00000000; +2203 : 00000000; +2204 : 00000000; +2205 : 00000000; +2206 : 00000000; +2207 : 00000000; +2208 : 00000000; +2209 : 00000000; +220a : 00000000; +220b : 00000000; +220c : 00000000; +220d : 00000000; +220e : 00000000; +220f : 00000000; +2210 : 00000000; +2211 : 00000000; +2212 : 00000000; +2213 : 00000000; +2214 : 00000000; +2215 : 00000000; +2216 : 00000000; +2217 : 00000000; +2218 : 00000000; +2219 : 00000000; +221a : 00000000; +221b : 00000000; +221c : 00000000; +221d : 00000000; +221e : 00000000; +221f : 00000000; +2220 : 00000000; +2221 : 00000000; +2222 : 00000000; +2223 : 00000000; +2224 : 00000000; +2225 : 00000000; +2226 : 00000000; +2227 : 00000000; +2228 : 00000000; +2229 : 00000000; +222a : 00000000; +222b : 00000000; +222c : 00000000; +222d : 00000000; +222e : 00000000; +222f : 00000000; +2230 : 00000000; +2231 : 00000000; +2232 : 00000000; +2233 : 00000000; +2234 : 00000000; +2235 : 00000000; +2236 : 00000000; +2237 : 00000000; +2238 : 00000000; +2239 : 00000000; +223a : 00000000; +223b : 00000000; +223c : 00000000; +223d : 00000000; +223e : 00000000; +223f : 00000000; +2240 : 00000000; +2241 : 00000000; +2242 : 00000000; +2243 : 00000000; +2244 : 00000000; +2245 : 00000000; +2246 : 00000000; +2247 : 00000000; +2248 : 00000000; +2249 : 00000000; +224a : 00000000; +224b : 00000000; +224c : 00000000; +224d : 00000000; +224e : 00000000; +224f : 00000000; +2250 : 00000000; +2251 : 00000000; +2252 : 00000000; +2253 : 00000000; +2254 : 00000000; +2255 : 00000000; +2256 : 00000000; +2257 : 00000000; +2258 : 00000000; +2259 : 00000000; +225a : 00000000; +225b : 00000000; +225c : 00000000; +225d : 00000000; +225e : 00000000; +225f : 00000000; +2260 : 00000000; +2261 : 00000000; +2262 : 00000000; +2263 : 00000000; +2264 : 00000000; +2265 : 00000000; +2266 : 00000000; +2267 : 00000000; +2268 : 00000000; +2269 : 00000000; +226a : 00000000; +226b : 00000000; +226c : 00000000; +226d : 00000000; +226e : 00000000; +226f : 00000000; +2270 : 00000000; +2271 : 00000000; +2272 : 00000000; +2273 : 00000000; +2274 : 00000000; +2275 : 00000000; +2276 : 00000000; +2277 : 00000000; +2278 : 00000000; +2279 : 00000000; +227a : 00000000; +227b : 00000000; +227c : 00000000; +227d : 00000000; +227e : 00000000; +227f : 00000000; +2280 : 00000000; +2281 : 00000000; +2282 : 00000000; +2283 : 00000000; +2284 : 00000000; +2285 : 00000000; +2286 : 00000000; +2287 : 00000000; +2288 : 00000000; +2289 : 00000000; +228a : 00000000; +228b : 00000000; +228c : 00000000; +228d : 00000000; +228e : 00000000; +228f : 00000000; +2290 : 00000000; +2291 : 00000000; +2292 : 00000000; +2293 : 00000000; +2294 : 00000000; +2295 : 00000000; +2296 : 00000000; +2297 : 00000000; +2298 : 00000000; +2299 : 00000000; +229a : 00000000; +229b : 00000000; +229c : 00000000; +229d : 00000000; +229e : 00000000; +229f : 00000000; +22a0 : 00000000; +22a1 : 00000000; +22a2 : 00000000; +22a3 : 00000000; +22a4 : 00000000; +22a5 : 00000000; +22a6 : 00000000; +22a7 : 00000000; +22a8 : 00000000; +22a9 : 00000000; +22aa : 00000000; +22ab : 00000000; +22ac : 00000000; +22ad : 00000000; +22ae : 00000000; +22af : 00000000; +22b0 : 00000000; +22b1 : 00000000; +22b2 : 00000000; +22b3 : 00000000; +22b4 : 00000000; +22b5 : 00000000; +22b6 : 00000000; +22b7 : 00000000; +22b8 : 00000000; +22b9 : 00000000; +22ba : 00000000; +22bb : 00000000; +22bc : 00000000; +22bd : 00000000; +22be : 00000000; +22bf : 00000000; +22c0 : 00000000; +22c1 : 00000000; +22c2 : 00000000; +22c3 : 00000000; +22c4 : 00000000; +22c5 : 00000000; +22c6 : 00000000; +22c7 : 00000000; +22c8 : 00000000; +22c9 : 00000000; +22ca : 00000000; +22cb : 00000000; +22cc : 00000000; +22cd : 00000000; +22ce : 00000000; +22cf : 00000000; +22d0 : 00000000; +22d1 : 00000000; +22d2 : 00000000; +22d3 : 00000000; +22d4 : 00000000; +22d5 : 00000000; +22d6 : 00000000; +22d7 : 00000000; +22d8 : 00000000; +22d9 : 00000000; +22da : 00000000; +22db : 00000000; +22dc : 00000000; +22dd : 00000000; +22de : 00000000; +22df : 00000000; +22e0 : 00000000; +22e1 : 00000000; +22e2 : 00000000; +22e3 : 00000000; +22e4 : 00000000; +22e5 : 00000000; +22e6 : 00000000; +22e7 : 00000000; +22e8 : 00000000; +22e9 : 00000000; +22ea : 00000000; +22eb : 00000000; +22ec : 00000000; +22ed : 00000000; +22ee : 00000000; +22ef : 00000000; +22f0 : 00000000; +22f1 : 00000000; +22f2 : 00000000; +22f3 : 00000000; +22f4 : 00000000; +22f5 : 00000000; +22f6 : 00000000; +22f7 : 00000000; +22f8 : 00000000; +22f9 : 00000000; +22fa : 00000000; +22fb : 00000000; +22fc : 00000000; +22fd : 00000000; +22fe : 00000000; +22ff : 00000000; +2300 : 00000000; +2301 : 00000000; +2302 : 00000000; +2303 : 00000000; +2304 : 00000000; +2305 : 00000000; +2306 : 00000000; +2307 : 00000000; +2308 : 00000000; +2309 : 00000000; +230a : 00000000; +230b : 00000000; +230c : 00000000; +230d : 00000000; +230e : 00000000; +230f : 00000000; +2310 : 00000000; +2311 : 00000000; +2312 : 00000000; +2313 : 00000000; +2314 : 00000000; +2315 : 00000000; +2316 : 00000000; +2317 : 00000000; +2318 : 00000000; +2319 : 00000000; +231a : 00000000; +231b : 00000000; +231c : 00000000; +231d : 00000000; +231e : 00000000; +231f : 00000000; +2320 : 00000000; +2321 : 00000000; +2322 : 00000000; +2323 : 00000000; +2324 : 00000000; +2325 : 00000000; +2326 : 00000000; +2327 : 00000000; +2328 : 00000000; +2329 : 00000000; +232a : 00000000; +232b : 00000000; +232c : 00000000; +232d : 00000000; +232e : 00000000; +232f : 00000000; +2330 : 00000000; +2331 : 00000000; +2332 : 00000000; +2333 : 00000000; +2334 : 00000000; +2335 : 00000000; +2336 : 00000000; +2337 : 00000000; +2338 : 00000000; +2339 : 00000000; +233a : 00000000; +233b : 00000000; +233c : 00000000; +233d : 00000000; +233e : 00000000; +233f : 00000000; +2340 : 00000000; +2341 : 00000000; +2342 : 00000000; +2343 : 00000000; +2344 : 00000000; +2345 : 00000000; +2346 : 00000000; +2347 : 00000000; +2348 : 00000000; +2349 : 00000000; +234a : 00000000; +234b : 00000000; +234c : 00000000; +234d : 00000000; +234e : 00000000; +234f : 00000000; +2350 : 00000000; +2351 : 00000000; +2352 : 00000000; +2353 : 00000000; +2354 : 00000000; +2355 : 00000000; +2356 : 00000000; +2357 : 00000000; +2358 : 00000000; +2359 : 00000000; +235a : 00000000; +235b : 00000000; +235c : 00000000; +235d : 00000000; +235e : 00000000; +235f : 00000000; +2360 : 00000000; +2361 : 00000000; +2362 : 00000000; +2363 : 00000000; +2364 : 00000000; +2365 : 00000000; +2366 : 00000000; +2367 : 00000000; +2368 : 00000000; +2369 : 00000000; +236a : 00000000; +236b : 00000000; +236c : 00000000; +236d : 00000000; +236e : 00000000; +236f : 00000000; +2370 : 00000000; +2371 : 00000000; +2372 : 00000000; +2373 : 00000000; +2374 : 00000000; +2375 : 00000000; +2376 : 00000000; +2377 : 00000000; +2378 : 00000000; +2379 : 00000000; +237a : 00000000; +237b : 00000000; +237c : 00000000; +237d : 00000000; +237e : 00000000; +237f : 00000000; +2380 : 00000000; +2381 : 00000000; +2382 : 00000000; +2383 : 00000000; +2384 : 00000000; +2385 : 00000000; +2386 : 00000000; +2387 : 00000000; +2388 : 00000000; +2389 : 00000000; +238a : 00000000; +238b : 00000000; +238c : 00000000; +238d : 00000000; +238e : 00000000; +238f : 00000000; +2390 : 00000000; +2391 : 00000000; +2392 : 00000000; +2393 : 00000000; +2394 : 00000000; +2395 : 00000000; +2396 : 00000000; +2397 : 00000000; +2398 : 00000000; +2399 : 00000000; +239a : 00000000; +239b : 00000000; +239c : 00000000; +239d : 00000000; +239e : 00000000; +239f : 00000000; +23a0 : 00000000; +23a1 : 00000000; +23a2 : 00000000; +23a3 : 00000000; +23a4 : 00000000; +23a5 : 00000000; +23a6 : 00000000; +23a7 : 00000000; +23a8 : 00000000; +23a9 : 00000000; +23aa : 00000000; +23ab : 00000000; +23ac : 00000000; +23ad : 00000000; +23ae : 00000000; +23af : 00000000; +23b0 : 00000000; +23b1 : 00000000; +23b2 : 00000000; +23b3 : 00000000; +23b4 : 00000000; +23b5 : 00000000; +23b6 : 00000000; +23b7 : 00000000; +23b8 : 00000000; +23b9 : 00000000; +23ba : 00000000; +23bb : 00000000; +23bc : 00000000; +23bd : 00000000; +23be : 00000000; +23bf : 00000000; +23c0 : 00000000; +23c1 : 00000000; +23c2 : 00000000; +23c3 : 00000000; +23c4 : 00000000; +23c5 : 00000000; +23c6 : 00000000; +23c7 : 00000000; +23c8 : 00000000; +23c9 : 00000000; +23ca : 00000000; +23cb : 00000000; +23cc : 00000000; +23cd : 00000000; +23ce : 00000000; +23cf : 00000000; +23d0 : 00000000; +23d1 : 00000000; +23d2 : 00000000; +23d3 : 00000000; +23d4 : 00000000; +23d5 : 00000000; +23d6 : 00000000; +23d7 : 00000000; +23d8 : 00000000; +23d9 : 00000000; +23da : 00000000; +23db : 00000000; +23dc : 00000000; +23dd : 00000000; +23de : 00000000; +23df : 00000000; +23e0 : 00000000; +23e1 : 00000000; +23e2 : 00000000; +23e3 : 00000000; +23e4 : 00000000; +23e5 : 00000000; +23e6 : 00000000; +23e7 : 00000000; +23e8 : 00000000; +23e9 : 00000000; +23ea : 00000000; +23eb : 00000000; +23ec : 00000000; +23ed : 00000000; +23ee : 00000000; +23ef : 00000000; +23f0 : 00000000; +23f1 : 00000000; +23f2 : 00000000; +23f3 : 00000000; +23f4 : 00000000; +23f5 : 00000000; +23f6 : 00000000; +23f7 : 00000000; +23f8 : 00000000; +23f9 : 00000000; +23fa : 00000000; +23fb : 00000000; +23fc : 00000000; +23fd : 00000000; +23fe : 00000000; +23ff : 00000000; +2400 : 00000000; +2401 : 00000000; +2402 : 00000000; +2403 : 00000000; +2404 : 00000000; +2405 : 00000000; +2406 : 00000000; +2407 : 00000000; +2408 : 00000000; +2409 : 00000000; +240a : 00000000; +240b : 00000000; +240c : 00000000; +240d : 00000000; +240e : 00000000; +240f : 00000000; +2410 : 00000000; +2411 : 00000000; +2412 : 00000000; +2413 : 00000000; +2414 : 00000000; +2415 : 00000000; +2416 : 00000000; +2417 : 00000000; +2418 : 00000000; +2419 : 00000000; +241a : 00000000; +241b : 00000000; +241c : 00000000; +241d : 00000000; +241e : 00000000; +241f : 00000000; +2420 : 00000000; +2421 : 00000000; +2422 : 00000000; +2423 : 00000000; +2424 : 00000000; +2425 : 00000000; +2426 : 00000000; +2427 : 00000000; +2428 : 00000000; +2429 : 00000000; +242a : 00000000; +242b : 00000000; +242c : 00000000; +242d : 00000000; +242e : 00000000; +242f : 00000000; +2430 : 00000000; +2431 : 00000000; +2432 : 00000000; +2433 : 00000000; +2434 : 00000000; +2435 : 00000000; +2436 : 00000000; +2437 : 00000000; +2438 : 00000000; +2439 : 00000000; +243a : 00000000; +243b : 00000000; +243c : 00000000; +243d : 00000000; +243e : 00000000; +243f : 00000000; +2440 : 00000000; +2441 : 00000000; +2442 : 00000000; +2443 : 00000000; +2444 : 00000000; +2445 : 00000000; +2446 : 00000000; +2447 : 00000000; +2448 : 00000000; +2449 : 00000000; +244a : 00000000; +244b : 00000000; +244c : 00000000; +244d : 00000000; +244e : 00000000; +244f : 00000000; +2450 : 00000000; +2451 : 00000000; +2452 : 00000000; +2453 : 00000000; +2454 : 00000000; +2455 : 00000000; +2456 : 00000000; +2457 : 00000000; +2458 : 00000000; +2459 : 00000000; +245a : 00000000; +245b : 00000000; +245c : 00000000; +245d : 00000000; +245e : 00000000; +245f : 00000000; +2460 : 00000000; +2461 : 00000000; +2462 : 00000000; +2463 : 00000000; +2464 : 00000000; +2465 : 00000000; +2466 : 00000000; +2467 : 00000000; +2468 : 00000000; +2469 : 00000000; +246a : 00000000; +246b : 00000000; +246c : 00000000; +246d : 00000000; +246e : 00000000; +246f : 00000000; +2470 : 00000000; +2471 : 00000000; +2472 : 00000000; +2473 : 00000000; +2474 : 00000000; +2475 : 00000000; +2476 : 00000000; +2477 : 00000000; +2478 : 00000000; +2479 : 00000000; +247a : 00000000; +247b : 00000000; +247c : 00000000; +247d : 00000000; +247e : 00000000; +247f : 00000000; +2480 : 00000000; +2481 : 00000000; +2482 : 00000000; +2483 : 00000000; +2484 : 00000000; +2485 : 00000000; +2486 : 00000000; +2487 : 00000000; +2488 : 00000000; +2489 : 00000000; +248a : 00000000; +248b : 00000000; +248c : 00000000; +248d : 00000000; +248e : 00000000; +248f : 00000000; +2490 : 00000000; +2491 : 00000000; +2492 : 00000000; +2493 : 00000000; +2494 : 00000000; +2495 : 00000000; +2496 : 00000000; +2497 : 00000000; +2498 : 00000000; +2499 : 00000000; +249a : 00000000; +249b : 00000000; +249c : 00000000; +249d : 00000000; +249e : 00000000; +249f : 00000000; +24a0 : 00000000; +24a1 : 00000000; +24a2 : 00000000; +24a3 : 00000000; +24a4 : 00000000; +24a5 : 00000000; +24a6 : 00000000; +24a7 : 00000000; +24a8 : 00000000; +24a9 : 00000000; +24aa : 00000000; +24ab : 00000000; +24ac : 00000000; +24ad : 00000000; +24ae : 00000000; +24af : 00000000; +24b0 : 00000000; +24b1 : 00000000; +24b2 : 00000000; +24b3 : 00000000; +24b4 : 00000000; +24b5 : 00000000; +24b6 : 00000000; +24b7 : 00000000; +24b8 : 00000000; +24b9 : 00000000; +24ba : 00000000; +24bb : 00000000; +24bc : 00000000; +24bd : 00000000; +24be : 00000000; +24bf : 00000000; +24c0 : 00000000; +24c1 : 00000000; +24c2 : 00000000; +24c3 : 00000000; +24c4 : 00000000; +24c5 : 00000000; +24c6 : 00000000; +24c7 : 00000000; +24c8 : 00000000; +24c9 : 00000000; +24ca : 00000000; +24cb : 00000000; +24cc : 00000000; +24cd : 00000000; +24ce : 00000000; +24cf : 00000000; +24d0 : 00000000; +24d1 : 00000000; +24d2 : 00000000; +24d3 : 00000000; +24d4 : 00000000; +24d5 : 00000000; +24d6 : 00000000; +24d7 : 00000000; +24d8 : 00000000; +24d9 : 00000000; +24da : 00000000; +24db : 00000000; +24dc : 00000000; +24dd : 00000000; +24de : 00000000; +24df : 00000000; +24e0 : 00000000; +24e1 : 00000000; +24e2 : 00000000; +24e3 : 00000000; +24e4 : 00000000; +24e5 : 00000000; +24e6 : 00000000; +24e7 : 00000000; +24e8 : 00000000; +24e9 : 00000000; +24ea : 00000000; +24eb : 00000000; +24ec : 00000000; +24ed : 00000000; +24ee : 00000000; +24ef : 00000000; +24f0 : 00000000; +24f1 : 00000000; +24f2 : 00000000; +24f3 : 00000000; +24f4 : 00000000; +24f5 : 00000000; +24f6 : 00000000; +24f7 : 00000000; +24f8 : 00000000; +24f9 : 00000000; +24fa : 00000000; +24fb : 00000000; +24fc : 00000000; +24fd : 00000000; +24fe : 00000000; +24ff : 00000000; +2500 : 00000000; +2501 : 00000000; +2502 : 00000000; +2503 : 00000000; +2504 : 00000000; +2505 : 00000000; +2506 : 00000000; +2507 : 00000000; +2508 : 00000000; +2509 : 00000000; +250a : 00000000; +250b : 00000000; +250c : 00000000; +250d : 00000000; +250e : 00000000; +250f : 00000000; +2510 : 00000000; +2511 : 00000000; +2512 : 00000000; +2513 : 00000000; +2514 : 00000000; +2515 : 00000000; +2516 : 00000000; +2517 : 00000000; +2518 : 00000000; +2519 : 00000000; +251a : 00000000; +251b : 00000000; +251c : 00000000; +251d : 00000000; +251e : 00000000; +251f : 00000000; +2520 : 00000000; +2521 : 00000000; +2522 : 00000000; +2523 : 00000000; +2524 : 00000000; +2525 : 00000000; +2526 : 00000000; +2527 : 00000000; +2528 : 00000000; +2529 : 00000000; +252a : 00000000; +252b : 00000000; +252c : 00000000; +252d : 00000000; +252e : 00000000; +252f : 00000000; +2530 : 00000000; +2531 : 00000000; +2532 : 00000000; +2533 : 00000000; +2534 : 00000000; +2535 : 00000000; +2536 : 00000000; +2537 : 00000000; +2538 : 00000000; +2539 : 00000000; +253a : 00000000; +253b : 00000000; +253c : 00000000; +253d : 00000000; +253e : 00000000; +253f : 00000000; +2540 : 00000000; +2541 : 00000000; +2542 : 00000000; +2543 : 00000000; +2544 : 00000000; +2545 : 00000000; +2546 : 00000000; +2547 : 00000000; +2548 : 00000000; +2549 : 00000000; +254a : 00000000; +254b : 00000000; +254c : 00000000; +254d : 00000000; +254e : 00000000; +254f : 00000000; +2550 : 00000000; +2551 : 00000000; +2552 : 00000000; +2553 : 00000000; +2554 : 00000000; +2555 : 00000000; +2556 : 00000000; +2557 : 00000000; +2558 : 00000000; +2559 : 00000000; +255a : 00000000; +255b : 00000000; +255c : 00000000; +255d : 00000000; +255e : 00000000; +255f : 00000000; +2560 : 00000000; +2561 : 00000000; +2562 : 00000000; +2563 : 00000000; +2564 : 00000000; +2565 : 00000000; +2566 : 00000000; +2567 : 00000000; +2568 : 00000000; +2569 : 00000000; +256a : 00000000; +256b : 00000000; +256c : 00000000; +256d : 00000000; +256e : 00000000; +256f : 00000000; +2570 : 00000000; +2571 : 00000000; +2572 : 00000000; +2573 : 00000000; +2574 : 00000000; +2575 : 00000000; +2576 : 00000000; +2577 : 00000000; +2578 : 00000000; +2579 : 00000000; +257a : 00000000; +257b : 00000000; +257c : 00000000; +257d : 00000000; +257e : 00000000; +257f : 00000000; +2580 : 00000000; +2581 : 00000000; +2582 : 00000000; +2583 : 00000000; +2584 : 00000000; +2585 : 00000000; +2586 : 00000000; +2587 : 00000000; +2588 : 00000000; +2589 : 00000000; +258a : 00000000; +258b : 00000000; +258c : 00000000; +258d : 00000000; +258e : 00000000; +258f : 00000000; +2590 : 00000000; +2591 : 00000000; +2592 : 00000000; +2593 : 00000000; +2594 : 00000000; +2595 : 00000000; +2596 : 00000000; +2597 : 00000000; +2598 : 00000000; +2599 : 00000000; +259a : 00000000; +259b : 00000000; +259c : 00000000; +259d : 00000000; +259e : 00000000; +259f : 00000000; +25a0 : 00000000; +25a1 : 00000000; +25a2 : 00000000; +25a3 : 00000000; +25a4 : 00000000; +25a5 : 00000000; +25a6 : 00000000; +25a7 : 00000000; +25a8 : 00000000; +25a9 : 00000000; +25aa : 00000000; +25ab : 00000000; +25ac : 00000000; +25ad : 00000000; +25ae : 00000000; +25af : 00000000; +25b0 : 00000000; +25b1 : 00000000; +25b2 : 00000000; +25b3 : 00000000; +25b4 : 00000000; +25b5 : 00000000; +25b6 : 00000000; +25b7 : 00000000; +25b8 : 00000000; +25b9 : 00000000; +25ba : 00000000; +25bb : 00000000; +25bc : 00000000; +25bd : 00000000; +25be : 00000000; +25bf : 00000000; +25c0 : 00000000; +25c1 : 00000000; +25c2 : 00000000; +25c3 : 00000000; +25c4 : 00000000; +25c5 : 00000000; +25c6 : 00000000; +25c7 : 00000000; +25c8 : 00000000; +25c9 : 00000000; +25ca : 00000000; +25cb : 00000000; +25cc : 00000000; +25cd : 00000000; +25ce : 00000000; +25cf : 00000000; +25d0 : 00000000; +25d1 : 00000000; +25d2 : 00000000; +25d3 : 00000000; +25d4 : 00000000; +25d5 : 00000000; +25d6 : 00000000; +25d7 : 00000000; +25d8 : 00000000; +25d9 : 00000000; +25da : 00000000; +25db : 00000000; +25dc : 00000000; +25dd : 00000000; +25de : 00000000; +25df : 00000000; +25e0 : 00000000; +25e1 : 00000000; +25e2 : 00000000; +25e3 : 00000000; +25e4 : 00000000; +25e5 : 00000000; +25e6 : 00000000; +25e7 : 00000000; +25e8 : 00000000; +25e9 : 00000000; +25ea : 00000000; +25eb : 00000000; +25ec : 00000000; +25ed : 00000000; +25ee : 00000000; +25ef : 00000000; +25f0 : 00000000; +25f1 : 00000000; +25f2 : 00000000; +25f3 : 00000000; +25f4 : 00000000; +25f5 : 00000000; +25f6 : 00000000; +25f7 : 00000000; +25f8 : 00000000; +25f9 : 00000000; +25fa : 00000000; +25fb : 00000000; +25fc : 00000000; +25fd : 00000000; +25fe : 00000000; +25ff : 00000000; +2600 : 00000000; +2601 : 00000000; +2602 : 00000000; +2603 : 00000000; +2604 : 00000000; +2605 : 00000000; +2606 : 00000000; +2607 : 00000000; +2608 : 00000000; +2609 : 00000000; +260a : 00000000; +260b : 00000000; +260c : 00000000; +260d : 00000000; +260e : 00000000; +260f : 00000000; +2610 : 00000000; +2611 : 00000000; +2612 : 00000000; +2613 : 00000000; +2614 : 00000000; +2615 : 00000000; +2616 : 00000000; +2617 : 00000000; +2618 : 00000000; +2619 : 00000000; +261a : 00000000; +261b : 00000000; +261c : 00000000; +261d : 00000000; +261e : 00000000; +261f : 00000000; +2620 : 00000000; +2621 : 00000000; +2622 : 00000000; +2623 : 00000000; +2624 : 00000000; +2625 : 00000000; +2626 : 00000000; +2627 : 00000000; +2628 : 00000000; +2629 : 00000000; +262a : 00000000; +262b : 00000000; +262c : 00000000; +262d : 00000000; +262e : 00000000; +262f : 00000000; +2630 : 00000000; +2631 : 00000000; +2632 : 00000000; +2633 : 00000000; +2634 : 00000000; +2635 : 00000000; +2636 : 00000000; +2637 : 00000000; +2638 : 00000000; +2639 : 00000000; +263a : 00000000; +263b : 00000000; +263c : 00000000; +263d : 00000000; +263e : 00000000; +263f : 00000000; +2640 : 00000000; +2641 : 00000000; +2642 : 00000000; +2643 : 00000000; +2644 : 00000000; +2645 : 00000000; +2646 : 00000000; +2647 : 00000000; +2648 : 00000000; +2649 : 00000000; +264a : 00000000; +264b : 00000000; +264c : 00000000; +264d : 00000000; +264e : 00000000; +264f : 00000000; +2650 : 00000000; +2651 : 00000000; +2652 : 00000000; +2653 : 00000000; +2654 : 00000000; +2655 : 00000000; +2656 : 00000000; +2657 : 00000000; +2658 : 00000000; +2659 : 00000000; +265a : 00000000; +265b : 00000000; +265c : 00000000; +265d : 00000000; +265e : 00000000; +265f : 00000000; +2660 : 00000000; +2661 : 00000000; +2662 : 00000000; +2663 : 00000000; +2664 : 00000000; +2665 : 00000000; +2666 : 00000000; +2667 : 00000000; +2668 : 00000000; +2669 : 00000000; +266a : 00000000; +266b : 00000000; +266c : 00000000; +266d : 00000000; +266e : 00000000; +266f : 00000000; +2670 : 00000000; +2671 : 00000000; +2672 : 00000000; +2673 : 00000000; +2674 : 00000000; +2675 : 00000000; +2676 : 00000000; +2677 : 00000000; +2678 : 00000000; +2679 : 00000000; +267a : 00000000; +267b : 00000000; +267c : 00000000; +267d : 00000000; +267e : 00000000; +267f : 00000000; +2680 : 00000000; +2681 : 00000000; +2682 : 00000000; +2683 : 00000000; +2684 : 00000000; +2685 : 00000000; +2686 : 00000000; +2687 : 00000000; +2688 : 00000000; +2689 : 00000000; +268a : 00000000; +268b : 00000000; +268c : 00000000; +268d : 00000000; +268e : 00000000; +268f : 00000000; +2690 : 00000000; +2691 : 00000000; +2692 : 00000000; +2693 : 00000000; +2694 : 00000000; +2695 : 00000000; +2696 : 00000000; +2697 : 00000000; +2698 : 00000000; +2699 : 00000000; +269a : 00000000; +269b : 00000000; +269c : 00000000; +269d : 00000000; +269e : 00000000; +269f : 00000000; +26a0 : 00000000; +26a1 : 00000000; +26a2 : 00000000; +26a3 : 00000000; +26a4 : 00000000; +26a5 : 00000000; +26a6 : 00000000; +26a7 : 00000000; +26a8 : 00000000; +26a9 : 00000000; +26aa : 00000000; +26ab : 00000000; +26ac : 00000000; +26ad : 00000000; +26ae : 00000000; +26af : 00000000; +26b0 : 00000000; +26b1 : 00000000; +26b2 : 00000000; +26b3 : 00000000; +26b4 : 00000000; +26b5 : 00000000; +26b6 : 00000000; +26b7 : 00000000; +26b8 : 00000000; +26b9 : 00000000; +26ba : 00000000; +26bb : 00000000; +26bc : 00000000; +26bd : 00000000; +26be : 00000000; +26bf : 00000000; +26c0 : 00000000; +26c1 : 00000000; +26c2 : 00000000; +26c3 : 00000000; +26c4 : 00000000; +26c5 : 00000000; +26c6 : 00000000; +26c7 : 00000000; +26c8 : 00000000; +26c9 : 00000000; +26ca : 00000000; +26cb : 00000000; +26cc : 00000000; +26cd : 00000000; +26ce : 00000000; +26cf : 00000000; +26d0 : 00000000; +26d1 : 00000000; +26d2 : 00000000; +26d3 : 00000000; +26d4 : 00000000; +26d5 : 00000000; +26d6 : 00000000; +26d7 : 00000000; +26d8 : 00000000; +26d9 : 00000000; +26da : 00000000; +26db : 00000000; +26dc : 00000000; +26dd : 00000000; +26de : 00000000; +26df : 00000000; +26e0 : 00000000; +26e1 : 00000000; +26e2 : 00000000; +26e3 : 00000000; +26e4 : 00000000; +26e5 : 00000000; +26e6 : 00000000; +26e7 : 00000000; +26e8 : 00000000; +26e9 : 00000000; +26ea : 00000000; +26eb : 00000000; +26ec : 00000000; +26ed : 00000000; +26ee : 00000000; +26ef : 00000000; +26f0 : 00000000; +26f1 : 00000000; +26f2 : 00000000; +26f3 : 00000000; +26f4 : 00000000; +26f5 : 00000000; +26f6 : 00000000; +26f7 : 00000000; +26f8 : 00000000; +26f9 : 00000000; +26fa : 00000000; +26fb : 00000000; +26fc : 00000000; +26fd : 00000000; +26fe : 00000000; +26ff : 00000000; +2700 : 00000000; +2701 : 00000000; +2702 : 00000000; +2703 : 00000000; +2704 : 00000000; +2705 : 00000000; +2706 : 00000000; +2707 : 00000000; +2708 : 00000000; +2709 : 00000000; +270a : 00000000; +270b : 00000000; +270c : 00000000; +270d : 00000000; +270e : 00000000; +270f : 00000000; +2710 : 00000000; +2711 : 00000000; +2712 : 00000000; +2713 : 00000000; +2714 : 00000000; +2715 : 00000000; +2716 : 00000000; +2717 : 00000000; +2718 : 00000000; +2719 : 00000000; +271a : 00000000; +271b : 00000000; +271c : 00000000; +271d : 00000000; +271e : 00000000; +271f : 00000000; +2720 : 00000000; +2721 : 00000000; +2722 : 00000000; +2723 : 00000000; +2724 : 00000000; +2725 : 00000000; +2726 : 00000000; +2727 : 00000000; +2728 : 00000000; +2729 : 00000000; +272a : 00000000; +272b : 00000000; +272c : 00000000; +272d : 00000000; +272e : 00000000; +272f : 00000000; +2730 : 00000000; +2731 : 00000000; +2732 : 00000000; +2733 : 00000000; +2734 : 00000000; +2735 : 00000000; +2736 : 00000000; +2737 : 00000000; +2738 : 00000000; +2739 : 00000000; +273a : 00000000; +273b : 00000000; +273c : 00000000; +273d : 00000000; +273e : 00000000; +273f : 00000000; +2740 : 00000000; +2741 : 00000000; +2742 : 00000000; +2743 : 00000000; +2744 : 00000000; +2745 : 00000000; +2746 : 00000000; +2747 : 00000000; +2748 : 00000000; +2749 : 00000000; +274a : 00000000; +274b : 00000000; +274c : 00000000; +274d : 00000000; +274e : 00000000; +274f : 00000000; +2750 : 00000000; +2751 : 00000000; +2752 : 00000000; +2753 : 00000000; +2754 : 00000000; +2755 : 00000000; +2756 : 00000000; +2757 : 00000000; +2758 : 00000000; +2759 : 00000000; +275a : 00000000; +275b : 00000000; +275c : 00000000; +275d : 00000000; +275e : 00000000; +275f : 00000000; +2760 : 00000000; +2761 : 00000000; +2762 : 00000000; +2763 : 00000000; +2764 : 00000000; +2765 : 00000000; +2766 : 00000000; +2767 : 00000000; +2768 : 00000000; +2769 : 00000000; +276a : 00000000; +276b : 00000000; +276c : 00000000; +276d : 00000000; +276e : 00000000; +276f : 00000000; +2770 : 00000000; +2771 : 00000000; +2772 : 00000000; +2773 : 00000000; +2774 : 00000000; +2775 : 00000000; +2776 : 00000000; +2777 : 00000000; +2778 : 00000000; +2779 : 00000000; +277a : 00000000; +277b : 00000000; +277c : 00000000; +277d : 00000000; +277e : 00000000; +277f : 00000000; +2780 : 00000000; +2781 : 00000000; +2782 : 00000000; +2783 : 00000000; +2784 : 00000000; +2785 : 00000000; +2786 : 00000000; +2787 : 00000000; +2788 : 00000000; +2789 : 00000000; +278a : 00000000; +278b : 00000000; +278c : 00000000; +278d : 00000000; +278e : 00000000; +278f : 00000000; +2790 : 00000000; +2791 : 00000000; +2792 : 00000000; +2793 : 00000000; +2794 : 00000000; +2795 : 00000000; +2796 : 00000000; +2797 : 00000000; +2798 : 00000000; +2799 : 00000000; +279a : 00000000; +279b : 00000000; +279c : 00000000; +279d : 00000000; +279e : 00000000; +279f : 00000000; +27a0 : 00000000; +27a1 : 00000000; +27a2 : 00000000; +27a3 : 00000000; +27a4 : 00000000; +27a5 : 00000000; +27a6 : 00000000; +27a7 : 00000000; +27a8 : 00000000; +27a9 : 00000000; +27aa : 00000000; +27ab : 00000000; +27ac : 00000000; +27ad : 00000000; +27ae : 00000000; +27af : 00000000; +27b0 : 00000000; +27b1 : 00000000; +27b2 : 00000000; +27b3 : 00000000; +27b4 : 00000000; +27b5 : 00000000; +27b6 : 00000000; +27b7 : 00000000; +27b8 : 00000000; +27b9 : 00000000; +27ba : 00000000; +27bb : 00000000; +27bc : 00000000; +27bd : 00000000; +27be : 00000000; +27bf : 00000000; +27c0 : 00000000; +27c1 : 00000000; +27c2 : 00000000; +27c3 : 00000000; +27c4 : 00000000; +27c5 : 00000000; +27c6 : 00000000; +27c7 : 00000000; +27c8 : 00000000; +27c9 : 00000000; +27ca : 00000000; +27cb : 00000000; +27cc : 00000000; +27cd : 00000000; +27ce : 00000000; +27cf : 00000000; +27d0 : 00000000; +27d1 : 00000000; +27d2 : 00000000; +27d3 : 00000000; +27d4 : 00000000; +27d5 : 00000000; +27d6 : 00000000; +27d7 : 00000000; +27d8 : 00000000; +27d9 : 00000000; +27da : 00000000; +27db : 00000000; +27dc : 00000000; +27dd : 00000000; +27de : 00000000; +27df : 00000000; +27e0 : 00000000; +27e1 : 00000000; +27e2 : 00000000; +27e3 : 00000000; +27e4 : 00000000; +27e5 : 00000000; +27e6 : 00000000; +27e7 : 00000000; +27e8 : 00000000; +27e9 : 00000000; +27ea : 00000000; +27eb : 00000000; +27ec : 00000000; +27ed : 00000000; +27ee : 00000000; +27ef : 00000000; +27f0 : 00000000; +27f1 : 00000000; +27f2 : 00000000; +27f3 : 00000000; +27f4 : 00000000; +27f5 : 00000000; +27f6 : 00000000; +27f7 : 00000000; +27f8 : 00000000; +27f9 : 00000000; +27fa : 00000000; +27fb : 00000000; +27fc : 00000000; +27fd : 00000000; +27fe : 00000000; +27ff : 00000000; +2800 : 00000000; +2801 : 00000000; +2802 : 00000000; +2803 : 00000000; +2804 : 00000000; +2805 : 00000000; +2806 : 00000000; +2807 : 00000000; +2808 : 00000000; +2809 : 00000000; +280a : 00000000; +280b : 00000000; +280c : 00000000; +280d : 00000000; +280e : 00000000; +280f : 00000000; +2810 : 00000000; +2811 : 00000000; +2812 : 00000000; +2813 : 00000000; +2814 : 00000000; +2815 : 00000000; +2816 : 00000000; +2817 : 00000000; +2818 : 00000000; +2819 : 00000000; +281a : 00000000; +281b : 00000000; +281c : 00000000; +281d : 00000000; +281e : 00000000; +281f : 00000000; +2820 : 00000000; +2821 : 00000000; +2822 : 00000000; +2823 : 00000000; +2824 : 00000000; +2825 : 00000000; +2826 : 00000000; +2827 : 00000000; +2828 : 00000000; +2829 : 00000000; +282a : 00000000; +282b : 00000000; +282c : 00000000; +282d : 00000000; +282e : 00000000; +282f : 00000000; +2830 : 00000000; +2831 : 00000000; +2832 : 00000000; +2833 : 00000000; +2834 : 00000000; +2835 : 00000000; +2836 : 00000000; +2837 : 00000000; +2838 : 00000000; +2839 : 00000000; +283a : 00000000; +283b : 00000000; +283c : 00000000; +283d : 00000000; +283e : 00000000; +283f : 00000000; +2840 : 00000000; +2841 : 00000000; +2842 : 00000000; +2843 : 00000000; +2844 : 00000000; +2845 : 00000000; +2846 : 00000000; +2847 : 00000000; +2848 : 00000000; +2849 : 00000000; +284a : 00000000; +284b : 00000000; +284c : 00000000; +284d : 00000000; +284e : 00000000; +284f : 00000000; +2850 : 00000000; +2851 : 00000000; +2852 : 00000000; +2853 : 00000000; +2854 : 00000000; +2855 : 00000000; +2856 : 00000000; +2857 : 00000000; +2858 : 00000000; +2859 : 00000000; +285a : 00000000; +285b : 00000000; +285c : 00000000; +285d : 00000000; +285e : 00000000; +285f : 00000000; +2860 : 00000000; +2861 : 00000000; +2862 : 00000000; +2863 : 00000000; +2864 : 00000000; +2865 : 00000000; +2866 : 00000000; +2867 : 00000000; +2868 : 00000000; +2869 : 00000000; +286a : 00000000; +286b : 00000000; +286c : 00000000; +286d : 00000000; +286e : 00000000; +286f : 00000000; +2870 : 00000000; +2871 : 00000000; +2872 : 00000000; +2873 : 00000000; +2874 : 00000000; +2875 : 00000000; +2876 : 00000000; +2877 : 00000000; +2878 : 00000000; +2879 : 00000000; +287a : 00000000; +287b : 00000000; +287c : 00000000; +287d : 00000000; +287e : 00000000; +287f : 00000000; +2880 : 00000000; +2881 : 00000000; +2882 : 00000000; +2883 : 00000000; +2884 : 00000000; +2885 : 00000000; +2886 : 00000000; +2887 : 00000000; +2888 : 00000000; +2889 : 00000000; +288a : 00000000; +288b : 00000000; +288c : 00000000; +288d : 00000000; +288e : 00000000; +288f : 00000000; +2890 : 00000000; +2891 : 00000000; +2892 : 00000000; +2893 : 00000000; +2894 : 00000000; +2895 : 00000000; +2896 : 00000000; +2897 : 00000000; +2898 : 00000000; +2899 : 00000000; +289a : 00000000; +289b : 00000000; +289c : 00000000; +289d : 00000000; +289e : 00000000; +289f : 00000000; +28a0 : 00000000; +28a1 : 00000000; +28a2 : 00000000; +28a3 : 00000000; +28a4 : 00000000; +28a5 : 00000000; +28a6 : 00000000; +28a7 : 00000000; +28a8 : 00000000; +28a9 : 00000000; +28aa : 00000000; +28ab : 00000000; +28ac : 00000000; +28ad : 00000000; +28ae : 00000000; +28af : 00000000; +28b0 : 00000000; +28b1 : 00000000; +28b2 : 00000000; +28b3 : 00000000; +28b4 : 00000000; +28b5 : 00000000; +28b6 : 00000000; +28b7 : 00000000; +28b8 : 00000000; +28b9 : 00000000; +28ba : 00000000; +28bb : 00000000; +28bc : 00000000; +28bd : 00000000; +28be : 00000000; +28bf : 00000000; +28c0 : 00000000; +28c1 : 00000000; +28c2 : 00000000; +28c3 : 00000000; +28c4 : 00000000; +28c5 : 00000000; +28c6 : 00000000; +28c7 : 00000000; +28c8 : 00000000; +28c9 : 00000000; +28ca : 00000000; +28cb : 00000000; +28cc : 00000000; +28cd : 00000000; +28ce : 00000000; +28cf : 00000000; +28d0 : 00000000; +28d1 : 00000000; +28d2 : 00000000; +28d3 : 00000000; +28d4 : 00000000; +28d5 : 00000000; +28d6 : 00000000; +28d7 : 00000000; +28d8 : 00000000; +28d9 : 00000000; +28da : 00000000; +28db : 00000000; +28dc : 00000000; +28dd : 00000000; +28de : 00000000; +28df : 00000000; +28e0 : 00000000; +28e1 : 00000000; +28e2 : 00000000; +28e3 : 00000000; +28e4 : 00000000; +28e5 : 00000000; +28e6 : 00000000; +28e7 : 00000000; +28e8 : 00000000; +28e9 : 00000000; +28ea : 00000000; +28eb : 00000000; +28ec : 00000000; +28ed : 00000000; +28ee : 00000000; +28ef : 00000000; +28f0 : 00000000; +28f1 : 00000000; +28f2 : 00000000; +28f3 : 00000000; +28f4 : 00000000; +28f5 : 00000000; +28f6 : 00000000; +28f7 : 00000000; +28f8 : 00000000; +28f9 : 00000000; +28fa : 00000000; +28fb : 00000000; +28fc : 00000000; +28fd : 00000000; +28fe : 00000000; +28ff : 00000000; +2900 : 00000000; +2901 : 00000000; +2902 : 00000000; +2903 : 00000000; +2904 : 00000000; +2905 : 00000000; +2906 : 00000000; +2907 : 00000000; +2908 : 00000000; +2909 : 00000000; +290a : 00000000; +290b : 00000000; +290c : 00000000; +290d : 00000000; +290e : 00000000; +290f : 00000000; +2910 : 00000000; +2911 : 00000000; +2912 : 00000000; +2913 : 00000000; +2914 : 00000000; +2915 : 00000000; +2916 : 00000000; +2917 : 00000000; +2918 : 00000000; +2919 : 00000000; +291a : 00000000; +291b : 00000000; +291c : 00000000; +291d : 00000000; +291e : 00000000; +291f : 00000000; +2920 : 00000000; +2921 : 00000000; +2922 : 00000000; +2923 : 00000000; +2924 : 00000000; +2925 : 00000000; +2926 : 00000000; +2927 : 00000000; +2928 : 00000000; +2929 : 00000000; +292a : 00000000; +292b : 00000000; +292c : 00000000; +292d : 00000000; +292e : 00000000; +292f : 00000000; +2930 : 00000000; +2931 : 00000000; +2932 : 00000000; +2933 : 00000000; +2934 : 00000000; +2935 : 00000000; +2936 : 00000000; +2937 : 00000000; +2938 : 00000000; +2939 : 00000000; +293a : 00000000; +293b : 00000000; +293c : 00000000; +293d : 00000000; +293e : 00000000; +293f : 00000000; +2940 : 00000000; +2941 : 00000000; +2942 : 00000000; +2943 : 00000000; +2944 : 00000000; +2945 : 00000000; +2946 : 00000000; +2947 : 00000000; +2948 : 00000000; +2949 : 00000000; +294a : 00000000; +294b : 00000000; +294c : 00000000; +294d : 00000000; +294e : 00000000; +294f : 00000000; +2950 : 00000000; +2951 : 00000000; +2952 : 00000000; +2953 : 00000000; +2954 : 00000000; +2955 : 00000000; +2956 : 00000000; +2957 : 00000000; +2958 : 00000000; +2959 : 00000000; +295a : 00000000; +295b : 00000000; +295c : 00000000; +295d : 00000000; +295e : 00000000; +295f : 00000000; +2960 : 00000000; +2961 : 00000000; +2962 : 00000000; +2963 : 00000000; +2964 : 00000000; +2965 : 00000000; +2966 : 00000000; +2967 : 00000000; +2968 : 00000000; +2969 : 00000000; +296a : 00000000; +296b : 00000000; +296c : 00000000; +296d : 00000000; +296e : 00000000; +296f : 00000000; +2970 : 00000000; +2971 : 00000000; +2972 : 00000000; +2973 : 00000000; +2974 : 00000000; +2975 : 00000000; +2976 : 00000000; +2977 : 00000000; +2978 : 00000000; +2979 : 00000000; +297a : 00000000; +297b : 00000000; +297c : 00000000; +297d : 00000000; +297e : 00000000; +297f : 00000000; +2980 : 00000000; +2981 : 00000000; +2982 : 00000000; +2983 : 00000000; +2984 : 00000000; +2985 : 00000000; +2986 : 00000000; +2987 : 00000000; +2988 : 00000000; +2989 : 00000000; +298a : 00000000; +298b : 00000000; +298c : 00000000; +298d : 00000000; +298e : 00000000; +298f : 00000000; +2990 : 00000000; +2991 : 00000000; +2992 : 00000000; +2993 : 00000000; +2994 : 00000000; +2995 : 00000000; +2996 : 00000000; +2997 : 00000000; +2998 : 00000000; +2999 : 00000000; +299a : 00000000; +299b : 00000000; +299c : 00000000; +299d : 00000000; +299e : 00000000; +299f : 00000000; +29a0 : 00000000; +29a1 : 00000000; +29a2 : 00000000; +29a3 : 00000000; +29a4 : 00000000; +29a5 : 00000000; +29a6 : 00000000; +29a7 : 00000000; +29a8 : 00000000; +29a9 : 00000000; +29aa : 00000000; +29ab : 00000000; +29ac : 00000000; +29ad : 00000000; +29ae : 00000000; +29af : 00000000; +29b0 : 00000000; +29b1 : 00000000; +29b2 : 00000000; +29b3 : 00000000; +29b4 : 00000000; +29b5 : 00000000; +29b6 : 00000000; +29b7 : 00000000; +29b8 : 00000000; +29b9 : 00000000; +29ba : 00000000; +29bb : 00000000; +29bc : 00000000; +29bd : 00000000; +29be : 00000000; +29bf : 00000000; +29c0 : 00000000; +29c1 : 00000000; +29c2 : 00000000; +29c3 : 00000000; +29c4 : 00000000; +29c5 : 00000000; +29c6 : 00000000; +29c7 : 00000000; +29c8 : 00000000; +29c9 : 00000000; +29ca : 00000000; +29cb : 00000000; +29cc : 00000000; +29cd : 00000000; +29ce : 00000000; +29cf : 00000000; +29d0 : 00000000; +29d1 : 00000000; +29d2 : 00000000; +29d3 : 00000000; +29d4 : 00000000; +29d5 : 00000000; +29d6 : 00000000; +29d7 : 00000000; +29d8 : 00000000; +29d9 : 00000000; +29da : 00000000; +29db : 00000000; +29dc : 00000000; +29dd : 00000000; +29de : 00000000; +29df : 00000000; +29e0 : 00000000; +29e1 : 00000000; +29e2 : 00000000; +29e3 : 00000000; +29e4 : 00000000; +29e5 : 00000000; +29e6 : 00000000; +29e7 : 00000000; +29e8 : 00000000; +29e9 : 00000000; +29ea : 00000000; +29eb : 00000000; +29ec : 00000000; +29ed : 00000000; +29ee : 00000000; +29ef : 00000000; +29f0 : 00000000; +29f1 : 00000000; +29f2 : 00000000; +29f3 : 00000000; +29f4 : 00000000; +29f5 : 00000000; +29f6 : 00000000; +29f7 : 00000000; +29f8 : 00000000; +29f9 : 00000000; +29fa : 00000000; +29fb : 00000000; +29fc : 00000000; +29fd : 00000000; +29fe : 00000000; +29ff : 00000000; +2a00 : 00000000; +2a01 : 00000000; +2a02 : 00000000; +2a03 : 00000000; +2a04 : 00000000; +2a05 : 00000000; +2a06 : 00000000; +2a07 : 00000000; +2a08 : 00000000; +2a09 : 00000000; +2a0a : 00000000; +2a0b : 00000000; +2a0c : 00000000; +2a0d : 00000000; +2a0e : 00000000; +2a0f : 00000000; +2a10 : 00000000; +2a11 : 00000000; +2a12 : 00000000; +2a13 : 00000000; +2a14 : 00000000; +2a15 : 00000000; +2a16 : 00000000; +2a17 : 00000000; +2a18 : 00000000; +2a19 : 00000000; +2a1a : 00000000; +2a1b : 00000000; +2a1c : 00000000; +2a1d : 00000000; +2a1e : 00000000; +2a1f : 00000000; +2a20 : 00000000; +2a21 : 00000000; +2a22 : 00000000; +2a23 : 00000000; +2a24 : 00000000; +2a25 : 00000000; +2a26 : 00000000; +2a27 : 00000000; +2a28 : 00000000; +2a29 : 00000000; +2a2a : 00000000; +2a2b : 00000000; +2a2c : 00000000; +2a2d : 00000000; +2a2e : 00000000; +2a2f : 00000000; +2a30 : 00000000; +2a31 : 00000000; +2a32 : 00000000; +2a33 : 00000000; +2a34 : 00000000; +2a35 : 00000000; +2a36 : 00000000; +2a37 : 00000000; +2a38 : 00000000; +2a39 : 00000000; +2a3a : 00000000; +2a3b : 00000000; +2a3c : 00000000; +2a3d : 00000000; +2a3e : 00000000; +2a3f : 00000000; +2a40 : 00000000; +2a41 : 00000000; +2a42 : 00000000; +2a43 : 00000000; +2a44 : 00000000; +2a45 : 00000000; +2a46 : 00000000; +2a47 : 00000000; +2a48 : 00000000; +2a49 : 00000000; +2a4a : 00000000; +2a4b : 00000000; +2a4c : 00000000; +2a4d : 00000000; +2a4e : 00000000; +2a4f : 00000000; +2a50 : 00000000; +2a51 : 00000000; +2a52 : 00000000; +2a53 : 00000000; +2a54 : 00000000; +2a55 : 00000000; +2a56 : 00000000; +2a57 : 00000000; +2a58 : 00000000; +2a59 : 00000000; +2a5a : 00000000; +2a5b : 00000000; +2a5c : 00000000; +2a5d : 00000000; +2a5e : 00000000; +2a5f : 00000000; +2a60 : 00000000; +2a61 : 00000000; +2a62 : 00000000; +2a63 : 00000000; +2a64 : 00000000; +2a65 : 00000000; +2a66 : 00000000; +2a67 : 00000000; +2a68 : 00000000; +2a69 : 00000000; +2a6a : 00000000; +2a6b : 00000000; +2a6c : 00000000; +2a6d : 00000000; +2a6e : 00000000; +2a6f : 00000000; +2a70 : 00000000; +2a71 : 00000000; +2a72 : 00000000; +2a73 : 00000000; +2a74 : 00000000; +2a75 : 00000000; +2a76 : 00000000; +2a77 : 00000000; +2a78 : 00000000; +2a79 : 00000000; +2a7a : 00000000; +2a7b : 00000000; +2a7c : 00000000; +2a7d : 00000000; +2a7e : 00000000; +2a7f : 00000000; +2a80 : 00000000; +2a81 : 00000000; +2a82 : 00000000; +2a83 : 00000000; +2a84 : 00000000; +2a85 : 00000000; +2a86 : 00000000; +2a87 : 00000000; +2a88 : 00000000; +2a89 : 00000000; +2a8a : 00000000; +2a8b : 00000000; +2a8c : 00000000; +2a8d : 00000000; +2a8e : 00000000; +2a8f : 00000000; +2a90 : 00000000; +2a91 : 00000000; +2a92 : 00000000; +2a93 : 00000000; +2a94 : 00000000; +2a95 : 00000000; +2a96 : 00000000; +2a97 : 00000000; +2a98 : 00000000; +2a99 : 00000000; +2a9a : 00000000; +2a9b : 00000000; +2a9c : 00000000; +2a9d : 00000000; +2a9e : 00000000; +2a9f : 00000000; +2aa0 : 00000000; +2aa1 : 00000000; +2aa2 : 00000000; +2aa3 : 00000000; +2aa4 : 00000000; +2aa5 : 00000000; +2aa6 : 00000000; +2aa7 : 00000000; +2aa8 : 00000000; +2aa9 : 00000000; +2aaa : 00000000; +2aab : 00000000; +2aac : 00000000; +2aad : 00000000; +2aae : 00000000; +2aaf : 00000000; +2ab0 : 00000000; +2ab1 : 00000000; +2ab2 : 00000000; +2ab3 : 00000000; +2ab4 : 00000000; +2ab5 : 00000000; +2ab6 : 00000000; +2ab7 : 00000000; +2ab8 : 00000000; +2ab9 : 00000000; +2aba : 00000000; +2abb : 00000000; +2abc : 00000000; +2abd : 00000000; +2abe : 00000000; +2abf : 00000000; +2ac0 : 00000000; +2ac1 : 00000000; +2ac2 : 00000000; +2ac3 : 00000000; +2ac4 : 00000000; +2ac5 : 00000000; +2ac6 : 00000000; +2ac7 : 00000000; +2ac8 : 00000000; +2ac9 : 00000000; +2aca : 00000000; +2acb : 00000000; +2acc : 00000000; +2acd : 00000000; +2ace : 00000000; +2acf : 00000000; +2ad0 : 00000000; +2ad1 : 00000000; +2ad2 : 00000000; +2ad3 : 00000000; +2ad4 : 00000000; +2ad5 : 00000000; +2ad6 : 00000000; +2ad7 : 00000000; +2ad8 : 00000000; +2ad9 : 00000000; +2ada : 00000000; +2adb : 00000000; +2adc : 00000000; +2add : 00000000; +2ade : 00000000; +2adf : 00000000; +2ae0 : 00000000; +2ae1 : 00000000; +2ae2 : 00000000; +2ae3 : 00000000; +2ae4 : 00000000; +2ae5 : 00000000; +2ae6 : 00000000; +2ae7 : 00000000; +2ae8 : 00000000; +2ae9 : 00000000; +2aea : 00000000; +2aeb : 00000000; +2aec : 00000000; +2aed : 00000000; +2aee : 00000000; +2aef : 00000000; +2af0 : 00000000; +2af1 : 00000000; +2af2 : 00000000; +2af3 : 00000000; +2af4 : 00000000; +2af5 : 00000000; +2af6 : 00000000; +2af7 : 00000000; +2af8 : 00000000; +2af9 : 00000000; +2afa : 00000000; +2afb : 00000000; +2afc : 00000000; +2afd : 00000000; +2afe : 00000000; +2aff : 00000000; +2b00 : 00000000; +2b01 : 00000000; +2b02 : 00000000; +2b03 : 00000000; +2b04 : 00000000; +2b05 : 00000000; +2b06 : 00000000; +2b07 : 00000000; +2b08 : 00000000; +2b09 : 00000000; +2b0a : 00000000; +2b0b : 00000000; +2b0c : 00000000; +2b0d : 00000000; +2b0e : 00000000; +2b0f : 00000000; +2b10 : 00000000; +2b11 : 00000000; +2b12 : 00000000; +2b13 : 00000000; +2b14 : 00000000; +2b15 : 00000000; +2b16 : 00000000; +2b17 : 00000000; +2b18 : 00000000; +2b19 : 00000000; +2b1a : 00000000; +2b1b : 00000000; +2b1c : 00000000; +2b1d : 00000000; +2b1e : 00000000; +2b1f : 00000000; +2b20 : 00000000; +2b21 : 00000000; +2b22 : 00000000; +2b23 : 00000000; +2b24 : 00000000; +2b25 : 00000000; +2b26 : 00000000; +2b27 : 00000000; +2b28 : 00000000; +2b29 : 00000000; +2b2a : 00000000; +2b2b : 00000000; +2b2c : 00000000; +2b2d : 00000000; +2b2e : 00000000; +2b2f : 00000000; +2b30 : 00000000; +2b31 : 00000000; +2b32 : 00000000; +2b33 : 00000000; +2b34 : 00000000; +2b35 : 00000000; +2b36 : 00000000; +2b37 : 00000000; +2b38 : 00000000; +2b39 : 00000000; +2b3a : 00000000; +2b3b : 00000000; +2b3c : 00000000; +2b3d : 00000000; +2b3e : 00000000; +2b3f : 00000000; +2b40 : 00000000; +2b41 : 00000000; +2b42 : 00000000; +2b43 : 00000000; +2b44 : 00000000; +2b45 : 00000000; +2b46 : 00000000; +2b47 : 00000000; +2b48 : 00000000; +2b49 : 00000000; +2b4a : 00000000; +2b4b : 00000000; +2b4c : 00000000; +2b4d : 00000000; +2b4e : 00000000; +2b4f : 00000000; +2b50 : 00000000; +2b51 : 00000000; +2b52 : 00000000; +2b53 : 00000000; +2b54 : 00000000; +2b55 : 00000000; +2b56 : 00000000; +2b57 : 00000000; +2b58 : 00000000; +2b59 : 00000000; +2b5a : 00000000; +2b5b : 00000000; +2b5c : 00000000; +2b5d : 00000000; +2b5e : 00000000; +2b5f : 00000000; +2b60 : 00000000; +2b61 : 00000000; +2b62 : 00000000; +2b63 : 00000000; +2b64 : 00000000; +2b65 : 00000000; +2b66 : 00000000; +2b67 : 00000000; +2b68 : 00000000; +2b69 : 00000000; +2b6a : 00000000; +2b6b : 00000000; +2b6c : 00000000; +2b6d : 00000000; +2b6e : 00000000; +2b6f : 00000000; +2b70 : 00000000; +2b71 : 00000000; +2b72 : 00000000; +2b73 : 00000000; +2b74 : 00000000; +2b75 : 00000000; +2b76 : 00000000; +2b77 : 00000000; +2b78 : 00000000; +2b79 : 00000000; +2b7a : 00000000; +2b7b : 00000000; +2b7c : 00000000; +2b7d : 00000000; +2b7e : 00000000; +2b7f : 00000000; +2b80 : 00000000; +2b81 : 00000000; +2b82 : 00000000; +2b83 : 00000000; +2b84 : 00000000; +2b85 : 00000000; +2b86 : 00000000; +2b87 : 00000000; +2b88 : 00000000; +2b89 : 00000000; +2b8a : 00000000; +2b8b : 00000000; +2b8c : 00000000; +2b8d : 00000000; +2b8e : 00000000; +2b8f : 00000000; +2b90 : 00000000; +2b91 : 00000000; +2b92 : 00000000; +2b93 : 00000000; +2b94 : 00000000; +2b95 : 00000000; +2b96 : 00000000; +2b97 : 00000000; +2b98 : 00000000; +2b99 : 00000000; +2b9a : 00000000; +2b9b : 00000000; +2b9c : 00000000; +2b9d : 00000000; +2b9e : 00000000; +2b9f : 00000000; +2ba0 : 00000000; +2ba1 : 00000000; +2ba2 : 00000000; +2ba3 : 00000000; +2ba4 : 00000000; +2ba5 : 00000000; +2ba6 : 00000000; +2ba7 : 00000000; +2ba8 : 00000000; +2ba9 : 00000000; +2baa : 00000000; +2bab : 00000000; +2bac : 00000000; +2bad : 00000000; +2bae : 00000000; +2baf : 00000000; +2bb0 : 00000000; +2bb1 : 00000000; +2bb2 : 00000000; +2bb3 : 00000000; +2bb4 : 00000000; +2bb5 : 00000000; +2bb6 : 00000000; +2bb7 : 00000000; +2bb8 : 00000000; +2bb9 : 00000000; +2bba : 00000000; +2bbb : 00000000; +2bbc : 00000000; +2bbd : 00000000; +2bbe : 00000000; +2bbf : 00000000; +2bc0 : 00000000; +2bc1 : 00000000; +2bc2 : 00000000; +2bc3 : 00000000; +2bc4 : 00000000; +2bc5 : 00000000; +2bc6 : 00000000; +2bc7 : 00000000; +2bc8 : 00000000; +2bc9 : 00000000; +2bca : 00000000; +2bcb : 00000000; +2bcc : 00000000; +2bcd : 00000000; +2bce : 00000000; +2bcf : 00000000; +2bd0 : 00000000; +2bd1 : 00000000; +2bd2 : 00000000; +2bd3 : 00000000; +2bd4 : 00000000; +2bd5 : 00000000; +2bd6 : 00000000; +2bd7 : 00000000; +2bd8 : 00000000; +2bd9 : 00000000; +2bda : 00000000; +2bdb : 00000000; +2bdc : 00000000; +2bdd : 00000000; +2bde : 00000000; +2bdf : 00000000; +2be0 : 00000000; +2be1 : 00000000; +2be2 : 00000000; +2be3 : 00000000; +2be4 : 00000000; +2be5 : 00000000; +2be6 : 00000000; +2be7 : 00000000; +2be8 : 00000000; +2be9 : 00000000; +2bea : 00000000; +2beb : 00000000; +2bec : 00000000; +2bed : 00000000; +2bee : 00000000; +2bef : 00000000; +2bf0 : 00000000; +2bf1 : 00000000; +2bf2 : 00000000; +2bf3 : 00000000; +2bf4 : 00000000; +2bf5 : 00000000; +2bf6 : 00000000; +2bf7 : 00000000; +2bf8 : 00000000; +2bf9 : 00000000; +2bfa : 00000000; +2bfb : 00000000; +2bfc : 00000000; +2bfd : 00000000; +2bfe : 00000000; +2bff : 00000000; +2c00 : 00000000; +2c01 : 00000000; +2c02 : 00000000; +2c03 : 00000000; +2c04 : 00000000; +2c05 : 00000000; +2c06 : 00000000; +2c07 : 00000000; +2c08 : 00000000; +2c09 : 00000000; +2c0a : 00000000; +2c0b : 00000000; +2c0c : 00000000; +2c0d : 00000000; +2c0e : 00000000; +2c0f : 00000000; +2c10 : 00000000; +2c11 : 00000000; +2c12 : 00000000; +2c13 : 00000000; +2c14 : 00000000; +2c15 : 00000000; +2c16 : 00000000; +2c17 : 00000000; +2c18 : 00000000; +2c19 : 00000000; +2c1a : 00000000; +2c1b : 00000000; +2c1c : 00000000; +2c1d : 00000000; +2c1e : 00000000; +2c1f : 00000000; +2c20 : 00000000; +2c21 : 00000000; +2c22 : 00000000; +2c23 : 00000000; +2c24 : 00000000; +2c25 : 00000000; +2c26 : 00000000; +2c27 : 00000000; +2c28 : 00000000; +2c29 : 00000000; +2c2a : 00000000; +2c2b : 00000000; +2c2c : 00000000; +2c2d : 00000000; +2c2e : 00000000; +2c2f : 00000000; +2c30 : 00000000; +2c31 : 00000000; +2c32 : 00000000; +2c33 : 00000000; +2c34 : 00000000; +2c35 : 00000000; +2c36 : 00000000; +2c37 : 00000000; +2c38 : 00000000; +2c39 : 00000000; +2c3a : 00000000; +2c3b : 00000000; +2c3c : 00000000; +2c3d : 00000000; +2c3e : 00000000; +2c3f : 00000000; +2c40 : 00000000; +2c41 : 00000000; +2c42 : 00000000; +2c43 : 00000000; +2c44 : 00000000; +2c45 : 00000000; +2c46 : 00000000; +2c47 : 00000000; +2c48 : 00000000; +2c49 : 00000000; +2c4a : 00000000; +2c4b : 00000000; +2c4c : 00000000; +2c4d : 00000000; +2c4e : 00000000; +2c4f : 00000000; +2c50 : 00000000; +2c51 : 00000000; +2c52 : 00000000; +2c53 : 00000000; +2c54 : 00000000; +2c55 : 00000000; +2c56 : 00000000; +2c57 : 00000000; +2c58 : 00000000; +2c59 : 00000000; +2c5a : 00000000; +2c5b : 00000000; +2c5c : 00000000; +2c5d : 00000000; +2c5e : 00000000; +2c5f : 00000000; +2c60 : 00000000; +2c61 : 00000000; +2c62 : 00000000; +2c63 : 00000000; +2c64 : 00000000; +2c65 : 00000000; +2c66 : 00000000; +2c67 : 00000000; +2c68 : 00000000; +2c69 : 00000000; +2c6a : 00000000; +2c6b : 00000000; +2c6c : 00000000; +2c6d : 00000000; +2c6e : 00000000; +2c6f : 00000000; +2c70 : 00000000; +2c71 : 00000000; +2c72 : 00000000; +2c73 : 00000000; +2c74 : 00000000; +2c75 : 00000000; +2c76 : 00000000; +2c77 : 00000000; +2c78 : 00000000; +2c79 : 00000000; +2c7a : 00000000; +2c7b : 00000000; +2c7c : 00000000; +2c7d : 00000000; +2c7e : 00000000; +2c7f : 00000000; +2c80 : 00000000; +2c81 : 00000000; +2c82 : 00000000; +2c83 : 00000000; +2c84 : 00000000; +2c85 : 00000000; +2c86 : 00000000; +2c87 : 00000000; +2c88 : 00000000; +2c89 : 00000000; +2c8a : 00000000; +2c8b : 00000000; +2c8c : 00000000; +2c8d : 00000000; +2c8e : 00000000; +2c8f : 00000000; +2c90 : 00000000; +2c91 : 00000000; +2c92 : 00000000; +2c93 : 00000000; +2c94 : 00000000; +2c95 : 00000000; +2c96 : 00000000; +2c97 : 00000000; +2c98 : 00000000; +2c99 : 00000000; +2c9a : 00000000; +2c9b : 00000000; +2c9c : 00000000; +2c9d : 00000000; +2c9e : 00000000; +2c9f : 00000000; +2ca0 : 00000000; +2ca1 : 00000000; +2ca2 : 00000000; +2ca3 : 00000000; +2ca4 : 00000000; +2ca5 : 00000000; +2ca6 : 00000000; +2ca7 : 00000000; +2ca8 : 00000000; +2ca9 : 00000000; +2caa : 00000000; +2cab : 00000000; +2cac : 00000000; +2cad : 00000000; +2cae : 00000000; +2caf : 00000000; +2cb0 : 00000000; +2cb1 : 00000000; +2cb2 : 00000000; +2cb3 : 00000000; +2cb4 : 00000000; +2cb5 : 00000000; +2cb6 : 00000000; +2cb7 : 00000000; +2cb8 : 00000000; +2cb9 : 00000000; +2cba : 00000000; +2cbb : 00000000; +2cbc : 00000000; +2cbd : 00000000; +2cbe : 00000000; +2cbf : 00000000; +2cc0 : 00000000; +2cc1 : 00000000; +2cc2 : 00000000; +2cc3 : 00000000; +2cc4 : 00000000; +2cc5 : 00000000; +2cc6 : 00000000; +2cc7 : 00000000; +2cc8 : 00000000; +2cc9 : 00000000; +2cca : 00000000; +2ccb : 00000000; +2ccc : 00000000; +2ccd : 00000000; +2cce : 00000000; +2ccf : 00000000; +2cd0 : 00000000; +2cd1 : 00000000; +2cd2 : 00000000; +2cd3 : 00000000; +2cd4 : 00000000; +2cd5 : 00000000; +2cd6 : 00000000; +2cd7 : 00000000; +2cd8 : 00000000; +2cd9 : 00000000; +2cda : 00000000; +2cdb : 00000000; +2cdc : 00000000; +2cdd : 00000000; +2cde : 00000000; +2cdf : 00000000; +2ce0 : 00000000; +2ce1 : 00000000; +2ce2 : 00000000; +2ce3 : 00000000; +2ce4 : 00000000; +2ce5 : 00000000; +2ce6 : 00000000; +2ce7 : 00000000; +2ce8 : 00000000; +2ce9 : 00000000; +2cea : 00000000; +2ceb : 00000000; +2cec : 00000000; +2ced : 00000000; +2cee : 00000000; +2cef : 00000000; +2cf0 : 00000000; +2cf1 : 00000000; +2cf2 : 00000000; +2cf3 : 00000000; +2cf4 : 00000000; +2cf5 : 00000000; +2cf6 : 00000000; +2cf7 : 00000000; +2cf8 : 00000000; +2cf9 : 00000000; +2cfa : 00000000; +2cfb : 00000000; +2cfc : 00000000; +2cfd : 00000000; +2cfe : 00000000; +2cff : 00000000; +2d00 : 00000000; +2d01 : 00000000; +2d02 : 00000000; +2d03 : 00000000; +2d04 : 00000000; +2d05 : 00000000; +2d06 : 00000000; +2d07 : 00000000; +2d08 : 00000000; +2d09 : 00000000; +2d0a : 00000000; +2d0b : 00000000; +2d0c : 00000000; +2d0d : 00000000; +2d0e : 00000000; +2d0f : 00000000; +2d10 : 00000000; +2d11 : 00000000; +2d12 : 00000000; +2d13 : 00000000; +2d14 : 00000000; +2d15 : 00000000; +2d16 : 00000000; +2d17 : 00000000; +2d18 : 00000000; +2d19 : 00000000; +2d1a : 00000000; +2d1b : 00000000; +2d1c : 00000000; +2d1d : 00000000; +2d1e : 00000000; +2d1f : 00000000; +2d20 : 00000000; +2d21 : 00000000; +2d22 : 00000000; +2d23 : 00000000; +2d24 : 00000000; +2d25 : 00000000; +2d26 : 00000000; +2d27 : 00000000; +2d28 : 00000000; +2d29 : 00000000; +2d2a : 00000000; +2d2b : 00000000; +2d2c : 00000000; +2d2d : 00000000; +2d2e : 00000000; +2d2f : 00000000; +2d30 : 00000000; +2d31 : 00000000; +2d32 : 00000000; +2d33 : 00000000; +2d34 : 00000000; +2d35 : 00000000; +2d36 : 00000000; +2d37 : 00000000; +2d38 : 00000000; +2d39 : 00000000; +2d3a : 00000000; +2d3b : 00000000; +2d3c : 00000000; +2d3d : 00000000; +2d3e : 00000000; +2d3f : 00000000; +2d40 : 00000000; +2d41 : 00000000; +2d42 : 00000000; +2d43 : 00000000; +2d44 : 00000000; +2d45 : 00000000; +2d46 : 00000000; +2d47 : 00000000; +2d48 : 00000000; +2d49 : 00000000; +2d4a : 00000000; +2d4b : 00000000; +2d4c : 00000000; +2d4d : 00000000; +2d4e : 00000000; +2d4f : 00000000; +2d50 : 00000000; +2d51 : 00000000; +2d52 : 00000000; +2d53 : 00000000; +2d54 : 00000000; +2d55 : 00000000; +2d56 : 00000000; +2d57 : 00000000; +2d58 : 00000000; +2d59 : 00000000; +2d5a : 00000000; +2d5b : 00000000; +2d5c : 00000000; +2d5d : 00000000; +2d5e : 00000000; +2d5f : 00000000; +2d60 : 00000000; +2d61 : 00000000; +2d62 : 00000000; +2d63 : 00000000; +2d64 : 00000000; +2d65 : 00000000; +2d66 : 00000000; +2d67 : 00000000; +2d68 : 00000000; +2d69 : 00000000; +2d6a : 00000000; +2d6b : 00000000; +2d6c : 00000000; +2d6d : 00000000; +2d6e : 00000000; +2d6f : 00000000; +2d70 : 00000000; +2d71 : 00000000; +2d72 : 00000000; +2d73 : 00000000; +2d74 : 00000000; +2d75 : 00000000; +2d76 : 00000000; +2d77 : 00000000; +2d78 : 00000000; +2d79 : 00000000; +2d7a : 00000000; +2d7b : 00000000; +2d7c : 00000000; +2d7d : 00000000; +2d7e : 00000000; +2d7f : 00000000; +2d80 : 00000000; +2d81 : 00000000; +2d82 : 00000000; +2d83 : 00000000; +2d84 : 00000000; +2d85 : 00000000; +2d86 : 00000000; +2d87 : 00000000; +2d88 : 00000000; +2d89 : 00000000; +2d8a : 00000000; +2d8b : 00000000; +2d8c : 00000000; +2d8d : 00000000; +2d8e : 00000000; +2d8f : 00000000; +2d90 : 00000000; +2d91 : 00000000; +2d92 : 00000000; +2d93 : 00000000; +2d94 : 00000000; +2d95 : 00000000; +2d96 : 00000000; +2d97 : 00000000; +2d98 : 00000000; +2d99 : 00000000; +2d9a : 00000000; +2d9b : 00000000; +2d9c : 00000000; +2d9d : 00000000; +2d9e : 00000000; +2d9f : 00000000; +2da0 : 00000000; +2da1 : 00000000; +2da2 : 00000000; +2da3 : 00000000; +2da4 : 00000000; +2da5 : 00000000; +2da6 : 00000000; +2da7 : 00000000; +2da8 : 00000000; +2da9 : 00000000; +2daa : 00000000; +2dab : 00000000; +2dac : 00000000; +2dad : 00000000; +2dae : 00000000; +2daf : 00000000; +2db0 : 00000000; +2db1 : 00000000; +2db2 : 00000000; +2db3 : 00000000; +2db4 : 00000000; +2db5 : 00000000; +2db6 : 00000000; +2db7 : 00000000; +2db8 : 00000000; +2db9 : 00000000; +2dba : 00000000; +2dbb : 00000000; +2dbc : 00000000; +2dbd : 00000000; +2dbe : 00000000; +2dbf : 00000000; +2dc0 : 00000000; +2dc1 : 00000000; +2dc2 : 00000000; +2dc3 : 00000000; +2dc4 : 00000000; +2dc5 : 00000000; +2dc6 : 00000000; +2dc7 : 00000000; +2dc8 : 00000000; +2dc9 : 00000000; +2dca : 00000000; +2dcb : 00000000; +2dcc : 00000000; +2dcd : 00000000; +2dce : 00000000; +2dcf : 00000000; +2dd0 : 00000000; +2dd1 : 00000000; +2dd2 : 00000000; +2dd3 : 00000000; +2dd4 : 00000000; +2dd5 : 00000000; +2dd6 : 00000000; +2dd7 : 00000000; +2dd8 : 00000000; +2dd9 : 00000000; +2dda : 00000000; +2ddb : 00000000; +2ddc : 00000000; +2ddd : 00000000; +2dde : 00000000; +2ddf : 00000000; +2de0 : 00000000; +2de1 : 00000000; +2de2 : 00000000; +2de3 : 00000000; +2de4 : 00000000; +2de5 : 00000000; +2de6 : 00000000; +2de7 : 00000000; +2de8 : 00000000; +2de9 : 00000000; +2dea : 00000000; +2deb : 00000000; +2dec : 00000000; +2ded : 00000000; +2dee : 00000000; +2def : 00000000; +2df0 : 00000000; +2df1 : 00000000; +2df2 : 00000000; +2df3 : 00000000; +2df4 : 00000000; +2df5 : 00000000; +2df6 : 00000000; +2df7 : 00000000; +2df8 : 00000000; +2df9 : 00000000; +2dfa : 00000000; +2dfb : 00000000; +2dfc : 00000000; +2dfd : 00000000; +2dfe : 00000000; +2dff : 00000000; +2e00 : 00000000; +2e01 : 00000000; +2e02 : 00000000; +2e03 : 00000000; +2e04 : 00000000; +2e05 : 00000000; +2e06 : 00000000; +2e07 : 00000000; +2e08 : 00000000; +2e09 : 00000000; +2e0a : 00000000; +2e0b : 00000000; +2e0c : 00000000; +2e0d : 00000000; +2e0e : 00000000; +2e0f : 00000000; +2e10 : 00000000; +2e11 : 00000000; +2e12 : 00000000; +2e13 : 00000000; +2e14 : 00000000; +2e15 : 00000000; +2e16 : 00000000; +2e17 : 00000000; +2e18 : 00000000; +2e19 : 00000000; +2e1a : 00000000; +2e1b : 00000000; +2e1c : 00000000; +2e1d : 00000000; +2e1e : 00000000; +2e1f : 00000000; +2e20 : 00000000; +2e21 : 00000000; +2e22 : 00000000; +2e23 : 00000000; +2e24 : 00000000; +2e25 : 00000000; +2e26 : 00000000; +2e27 : 00000000; +2e28 : 00000000; +2e29 : 00000000; +2e2a : 00000000; +2e2b : 00000000; +2e2c : 00000000; +2e2d : 00000000; +2e2e : 00000000; +2e2f : 00000000; +2e30 : 00000000; +2e31 : 00000000; +2e32 : 00000000; +2e33 : 00000000; +2e34 : 00000000; +2e35 : 00000000; +2e36 : 00000000; +2e37 : 00000000; +2e38 : 00000000; +2e39 : 00000000; +2e3a : 00000000; +2e3b : 00000000; +2e3c : 00000000; +2e3d : 00000000; +2e3e : 00000000; +2e3f : 00000000; +2e40 : 00000000; +2e41 : 00000000; +2e42 : 00000000; +2e43 : 00000000; +2e44 : 00000000; +2e45 : 00000000; +2e46 : 00000000; +2e47 : 00000000; +2e48 : 00000000; +2e49 : 00000000; +2e4a : 00000000; +2e4b : 00000000; +2e4c : 00000000; +2e4d : 00000000; +2e4e : 00000000; +2e4f : 00000000; +2e50 : 00000000; +2e51 : 00000000; +2e52 : 00000000; +2e53 : 00000000; +2e54 : 00000000; +2e55 : 00000000; +2e56 : 00000000; +2e57 : 00000000; +2e58 : 00000000; +2e59 : 00000000; +2e5a : 00000000; +2e5b : 00000000; +2e5c : 00000000; +2e5d : 00000000; +2e5e : 00000000; +2e5f : 00000000; +2e60 : 00000000; +2e61 : 00000000; +2e62 : 00000000; +2e63 : 00000000; +2e64 : 00000000; +2e65 : 00000000; +2e66 : 00000000; +2e67 : 00000000; +2e68 : 00000000; +2e69 : 00000000; +2e6a : 00000000; +2e6b : 00000000; +2e6c : 00000000; +2e6d : 00000000; +2e6e : 00000000; +2e6f : 00000000; +2e70 : 00000000; +2e71 : 00000000; +2e72 : 00000000; +2e73 : 00000000; +2e74 : 00000000; +2e75 : 00000000; +2e76 : 00000000; +2e77 : 00000000; +2e78 : 00000000; +2e79 : 00000000; +2e7a : 00000000; +2e7b : 00000000; +2e7c : 00000000; +2e7d : 00000000; +2e7e : 00000000; +2e7f : 00000000; +2e80 : 00000000; +2e81 : 00000000; +2e82 : 00000000; +2e83 : 00000000; +2e84 : 00000000; +2e85 : 00000000; +2e86 : 00000000; +2e87 : 00000000; +2e88 : 00000000; +2e89 : 00000000; +2e8a : 00000000; +2e8b : 00000000; +2e8c : 00000000; +2e8d : 00000000; +2e8e : 00000000; +2e8f : 00000000; +2e90 : 00000000; +2e91 : 00000000; +2e92 : 00000000; +2e93 : 00000000; +2e94 : 00000000; +2e95 : 00000000; +2e96 : 00000000; +2e97 : 00000000; +2e98 : 00000000; +2e99 : 00000000; +2e9a : 00000000; +2e9b : 00000000; +2e9c : 00000000; +2e9d : 00000000; +2e9e : 00000000; +2e9f : 00000000; +2ea0 : 00000000; +2ea1 : 00000000; +2ea2 : 00000000; +2ea3 : 00000000; +2ea4 : 00000000; +2ea5 : 00000000; +2ea6 : 00000000; +2ea7 : 00000000; +2ea8 : 00000000; +2ea9 : 00000000; +2eaa : 00000000; +2eab : 00000000; +2eac : 00000000; +2ead : 00000000; +2eae : 00000000; +2eaf : 00000000; +2eb0 : 00000000; +2eb1 : 00000000; +2eb2 : 00000000; +2eb3 : 00000000; +2eb4 : 00000000; +2eb5 : 00000000; +2eb6 : 00000000; +2eb7 : 00000000; +2eb8 : 00000000; +2eb9 : 00000000; +2eba : 00000000; +2ebb : 00000000; +2ebc : 00000000; +2ebd : 00000000; +2ebe : 00000000; +2ebf : 00000000; +2ec0 : 00000000; +2ec1 : 00000000; +2ec2 : 00000000; +2ec3 : 00000000; +2ec4 : 00000000; +2ec5 : 00000000; +2ec6 : 00000000; +2ec7 : 00000000; +2ec8 : 00000000; +2ec9 : 00000000; +2eca : 00000000; +2ecb : 00000000; +2ecc : 00000000; +2ecd : 00000000; +2ece : 00000000; +2ecf : 00000000; +2ed0 : 00000000; +2ed1 : 00000000; +2ed2 : 00000000; +2ed3 : 00000000; +2ed4 : 00000000; +2ed5 : 00000000; +2ed6 : 00000000; +2ed7 : 00000000; +2ed8 : 00000000; +2ed9 : 00000000; +2eda : 00000000; +2edb : 00000000; +2edc : 00000000; +2edd : 00000000; +2ede : 00000000; +2edf : 00000000; +2ee0 : 00000000; +2ee1 : 00000000; +2ee2 : 00000000; +2ee3 : 00000000; +2ee4 : 00000000; +2ee5 : 00000000; +2ee6 : 00000000; +2ee7 : 00000000; +2ee8 : 00000000; +2ee9 : 00000000; +2eea : 00000000; +2eeb : 00000000; +2eec : 00000000; +2eed : 00000000; +2eee : 00000000; +2eef : 00000000; +2ef0 : 00000000; +2ef1 : 00000000; +2ef2 : 00000000; +2ef3 : 00000000; +2ef4 : 00000000; +2ef5 : 00000000; +2ef6 : 00000000; +2ef7 : 00000000; +2ef8 : 00000000; +2ef9 : 00000000; +2efa : 00000000; +2efb : 00000000; +2efc : 00000000; +2efd : 00000000; +2efe : 00000000; +2eff : 00000000; +2f00 : 00000000; +2f01 : 00000000; +2f02 : 00000000; +2f03 : 00000000; +2f04 : 00000000; +2f05 : 00000000; +2f06 : 00000000; +2f07 : 00000000; +2f08 : 00000000; +2f09 : 00000000; +2f0a : 00000000; +2f0b : 00000000; +2f0c : 00000000; +2f0d : 00000000; +2f0e : 00000000; +2f0f : 00000000; +2f10 : 00000000; +2f11 : 00000000; +2f12 : 00000000; +2f13 : 00000000; +2f14 : 00000000; +2f15 : 00000000; +2f16 : 00000000; +2f17 : 00000000; +2f18 : 00000000; +2f19 : 00000000; +2f1a : 00000000; +2f1b : 00000000; +2f1c : 00000000; +2f1d : 00000000; +2f1e : 00000000; +2f1f : 00000000; +2f20 : 00000000; +2f21 : 00000000; +2f22 : 00000000; +2f23 : 00000000; +2f24 : 00000000; +2f25 : 00000000; +2f26 : 00000000; +2f27 : 00000000; +2f28 : 00000000; +2f29 : 00000000; +2f2a : 00000000; +2f2b : 00000000; +2f2c : 00000000; +2f2d : 00000000; +2f2e : 00000000; +2f2f : 00000000; +2f30 : 00000000; +2f31 : 00000000; +2f32 : 00000000; +2f33 : 00000000; +2f34 : 00000000; +2f35 : 00000000; +2f36 : 00000000; +2f37 : 00000000; +2f38 : 00000000; +2f39 : 00000000; +2f3a : 00000000; +2f3b : 00000000; +2f3c : 00000000; +2f3d : 00000000; +2f3e : 00000000; +2f3f : 00000000; +2f40 : 00000000; +2f41 : 00000000; +2f42 : 00000000; +2f43 : 00000000; +2f44 : 00000000; +2f45 : 00000000; +2f46 : 00000000; +2f47 : 00000000; +2f48 : 00000000; +2f49 : 00000000; +2f4a : 00000000; +2f4b : 00000000; +2f4c : 00000000; +2f4d : 00000000; +2f4e : 00000000; +2f4f : 00000000; +2f50 : 00000000; +2f51 : 00000000; +2f52 : 00000000; +2f53 : 00000000; +2f54 : 00000000; +2f55 : 00000000; +2f56 : 00000000; +2f57 : 00000000; +2f58 : 00000000; +2f59 : 00000000; +2f5a : 00000000; +2f5b : 00000000; +2f5c : 00000000; +2f5d : 00000000; +2f5e : 00000000; +2f5f : 00000000; +2f60 : 00000000; +2f61 : 00000000; +2f62 : 00000000; +2f63 : 00000000; +2f64 : 00000000; +2f65 : 00000000; +2f66 : 00000000; +2f67 : 00000000; +2f68 : 00000000; +2f69 : 00000000; +2f6a : 00000000; +2f6b : 00000000; +2f6c : 00000000; +2f6d : 00000000; +2f6e : 00000000; +2f6f : 00000000; +2f70 : 00000000; +2f71 : 00000000; +2f72 : 00000000; +2f73 : 00000000; +2f74 : 00000000; +2f75 : 00000000; +2f76 : 00000000; +2f77 : 00000000; +2f78 : 00000000; +2f79 : 00000000; +2f7a : 00000000; +2f7b : 00000000; +2f7c : 00000000; +2f7d : 00000000; +2f7e : 00000000; +2f7f : 00000000; +2f80 : 00000000; +2f81 : 00000000; +2f82 : 00000000; +2f83 : 00000000; +2f84 : 00000000; +2f85 : 00000000; +2f86 : 00000000; +2f87 : 00000000; +2f88 : 00000000; +2f89 : 00000000; +2f8a : 00000000; +2f8b : 00000000; +2f8c : 00000000; +2f8d : 00000000; +2f8e : 00000000; +2f8f : 00000000; +2f90 : 00000000; +2f91 : 00000000; +2f92 : 00000000; +2f93 : 00000000; +2f94 : 00000000; +2f95 : 00000000; +2f96 : 00000000; +2f97 : 00000000; +2f98 : 00000000; +2f99 : 00000000; +2f9a : 00000000; +2f9b : 00000000; +2f9c : 00000000; +2f9d : 00000000; +2f9e : 00000000; +2f9f : 00000000; +2fa0 : 00000000; +2fa1 : 00000000; +2fa2 : 00000000; +2fa3 : 00000000; +2fa4 : 00000000; +2fa5 : 00000000; +2fa6 : 00000000; +2fa7 : 00000000; +2fa8 : 00000000; +2fa9 : 00000000; +2faa : 00000000; +2fab : 00000000; +2fac : 00000000; +2fad : 00000000; +2fae : 00000000; +2faf : 00000000; +2fb0 : 00000000; +2fb1 : 00000000; +2fb2 : 00000000; +2fb3 : 00000000; +2fb4 : 00000000; +2fb5 : 00000000; +2fb6 : 00000000; +2fb7 : 00000000; +2fb8 : 00000000; +2fb9 : 00000000; +2fba : 00000000; +2fbb : 00000000; +2fbc : 00000000; +2fbd : 00000000; +2fbe : 00000000; +2fbf : 00000000; +2fc0 : 00000000; +2fc1 : 00000000; +2fc2 : 00000000; +2fc3 : 00000000; +2fc4 : 00000000; +2fc5 : 00000000; +2fc6 : 00000000; +2fc7 : 00000000; +2fc8 : 00000000; +2fc9 : 00000000; +2fca : 00000000; +2fcb : 00000000; +2fcc : 00000000; +2fcd : 00000000; +2fce : 00000000; +2fcf : 00000000; +2fd0 : 00000000; +2fd1 : 00000000; +2fd2 : 00000000; +2fd3 : 00000000; +2fd4 : 00000000; +2fd5 : 00000000; +2fd6 : 00000000; +2fd7 : 00000000; +2fd8 : 00000000; +2fd9 : 00000000; +2fda : 00000000; +2fdb : 00000000; +2fdc : 00000000; +2fdd : 00000000; +2fde : 00000000; +2fdf : 00000000; +2fe0 : 00000000; +2fe1 : 00000000; +2fe2 : 00000000; +2fe3 : 00000000; +2fe4 : 00000000; +2fe5 : 00000000; +2fe6 : 00000000; +2fe7 : 00000000; +2fe8 : 00000000; +2fe9 : 00000000; +2fea : 00000000; +2feb : 00000000; +2fec : 00000000; +2fed : 00000000; +2fee : 00000000; +2fef : 00000000; +2ff0 : 00000000; +2ff1 : 00000000; +2ff2 : 00000000; +2ff3 : 00000000; +2ff4 : 00000000; +2ff5 : 00000000; +2ff6 : 00000000; +2ff7 : 00000000; +2ff8 : 00000000; +2ff9 : 00000000; +2ffa : 00000000; +2ffb : 00000000; +2ffc : 00000000; +2ffd : 00000000; +2ffe : 00000000; +2fff : 00000000; +3000 : 00000000; +3001 : 00000000; +3002 : 00000000; +3003 : 00000000; +3004 : 00000000; +3005 : 00000000; +3006 : 00000000; +3007 : 00000000; +3008 : 00000000; +3009 : 00000000; +300a : 00000000; +300b : 00000000; +300c : 00000000; +300d : 00000000; +300e : 00000000; +300f : 00000000; +3010 : 00000000; +3011 : 00000000; +3012 : 00000000; +3013 : 00000000; +3014 : 00000000; +3015 : 00000000; +3016 : 00000000; +3017 : 00000000; +3018 : 00000000; +3019 : 00000000; +301a : 00000000; +301b : 00000000; +301c : 00000000; +301d : 00000000; +301e : 00000000; +301f : 00000000; +3020 : 00000000; +3021 : 00000000; +3022 : 00000000; +3023 : 00000000; +3024 : 00000000; +3025 : 00000000; +3026 : 00000000; +3027 : 00000000; +3028 : 00000000; +3029 : 00000000; +302a : 00000000; +302b : 00000000; +302c : 00000000; +302d : 00000000; +302e : 00000000; +302f : 00000000; +3030 : 00000000; +3031 : 00000000; +3032 : 00000000; +3033 : 00000000; +3034 : 00000000; +3035 : 00000000; +3036 : 00000000; +3037 : 00000000; +3038 : 00000000; +3039 : 00000000; +303a : 00000000; +303b : 00000000; +303c : 00000000; +303d : 00000000; +303e : 00000000; +303f : 00000000; +3040 : 00000000; +3041 : 00000000; +3042 : 00000000; +3043 : 00000000; +3044 : 00000000; +3045 : 00000000; +3046 : 00000000; +3047 : 00000000; +3048 : 00000000; +3049 : 00000000; +304a : 00000000; +304b : 00000000; +304c : 00000000; +304d : 00000000; +304e : 00000000; +304f : 00000000; +3050 : 00000000; +3051 : 00000000; +3052 : 00000000; +3053 : 00000000; +3054 : 00000000; +3055 : 00000000; +3056 : 00000000; +3057 : 00000000; +3058 : 00000000; +3059 : 00000000; +305a : 00000000; +305b : 00000000; +305c : 00000000; +305d : 00000000; +305e : 00000000; +305f : 00000000; +3060 : 00000000; +3061 : 00000000; +3062 : 00000000; +3063 : 00000000; +3064 : 00000000; +3065 : 00000000; +3066 : 00000000; +3067 : 00000000; +3068 : 00000000; +3069 : 00000000; +306a : 00000000; +306b : 00000000; +306c : 00000000; +306d : 00000000; +306e : 00000000; +306f : 00000000; +3070 : 00000000; +3071 : 00000000; +3072 : 00000000; +3073 : 00000000; +3074 : 00000000; +3075 : 00000000; +3076 : 00000000; +3077 : 00000000; +3078 : 00000000; +3079 : 00000000; +307a : 00000000; +307b : 00000000; +307c : 00000000; +307d : 00000000; +307e : 00000000; +307f : 00000000; +3080 : 00000000; +3081 : 00000000; +3082 : 00000000; +3083 : 00000000; +3084 : 00000000; +3085 : 00000000; +3086 : 00000000; +3087 : 00000000; +3088 : 00000000; +3089 : 00000000; +308a : 00000000; +308b : 00000000; +308c : 00000000; +308d : 00000000; +308e : 00000000; +308f : 00000000; +3090 : 00000000; +3091 : 00000000; +3092 : 00000000; +3093 : 00000000; +3094 : 00000000; +3095 : 00000000; +3096 : 00000000; +3097 : 00000000; +3098 : 00000000; +3099 : 00000000; +309a : 00000000; +309b : 00000000; +309c : 00000000; +309d : 00000000; +309e : 00000000; +309f : 00000000; +30a0 : 00000000; +30a1 : 00000000; +30a2 : 00000000; +30a3 : 00000000; +30a4 : 00000000; +30a5 : 00000000; +30a6 : 00000000; +30a7 : 00000000; +30a8 : 00000000; +30a9 : 00000000; +30aa : 00000000; +30ab : 00000000; +30ac : 00000000; +30ad : 00000000; +30ae : 00000000; +30af : 00000000; +30b0 : 00000000; +30b1 : 00000000; +30b2 : 00000000; +30b3 : 00000000; +30b4 : 00000000; +30b5 : 00000000; +30b6 : 00000000; +30b7 : 00000000; +30b8 : 00000000; +30b9 : 00000000; +30ba : 00000000; +30bb : 00000000; +30bc : 00000000; +30bd : 00000000; +30be : 00000000; +30bf : 00000000; +30c0 : 00000000; +30c1 : 00000000; +30c2 : 00000000; +30c3 : 00000000; +30c4 : 00000000; +30c5 : 00000000; +30c6 : 00000000; +30c7 : 00000000; +30c8 : 00000000; +30c9 : 00000000; +30ca : 00000000; +30cb : 00000000; +30cc : 00000000; +30cd : 00000000; +30ce : 00000000; +30cf : 00000000; +30d0 : 00000000; +30d1 : 00000000; +30d2 : 00000000; +30d3 : 00000000; +30d4 : 00000000; +30d5 : 00000000; +30d6 : 00000000; +30d7 : 00000000; +30d8 : 00000000; +30d9 : 00000000; +30da : 00000000; +30db : 00000000; +30dc : 00000000; +30dd : 00000000; +30de : 00000000; +30df : 00000000; +30e0 : 00000000; +30e1 : 00000000; +30e2 : 00000000; +30e3 : 00000000; +30e4 : 00000000; +30e5 : 00000000; +30e6 : 00000000; +30e7 : 00000000; +30e8 : 00000000; +30e9 : 00000000; +30ea : 00000000; +30eb : 00000000; +30ec : 00000000; +30ed : 00000000; +30ee : 00000000; +30ef : 00000000; +30f0 : 00000000; +30f1 : 00000000; +30f2 : 00000000; +30f3 : 00000000; +30f4 : 00000000; +30f5 : 00000000; +30f6 : 00000000; +30f7 : 00000000; +30f8 : 00000000; +30f9 : 00000000; +30fa : 00000000; +30fb : 00000000; +30fc : 00000000; +30fd : 00000000; +30fe : 00000000; +30ff : 00000000; +3100 : 00000000; +3101 : 00000000; +3102 : 00000000; +3103 : 00000000; +3104 : 00000000; +3105 : 00000000; +3106 : 00000000; +3107 : 00000000; +3108 : 00000000; +3109 : 00000000; +310a : 00000000; +310b : 00000000; +310c : 00000000; +310d : 00000000; +310e : 00000000; +310f : 00000000; +3110 : 00000000; +3111 : 00000000; +3112 : 00000000; +3113 : 00000000; +3114 : 00000000; +3115 : 00000000; +3116 : 00000000; +3117 : 00000000; +3118 : 00000000; +3119 : 00000000; +311a : 00000000; +311b : 00000000; +311c : 00000000; +311d : 00000000; +311e : 00000000; +311f : 00000000; +3120 : 00000000; +3121 : 00000000; +3122 : 00000000; +3123 : 00000000; +3124 : 00000000; +3125 : 00000000; +3126 : 00000000; +3127 : 00000000; +3128 : 00000000; +3129 : 00000000; +312a : 00000000; +312b : 00000000; +312c : 00000000; +312d : 00000000; +312e : 00000000; +312f : 00000000; +3130 : 00000000; +3131 : 00000000; +3132 : 00000000; +3133 : 00000000; +3134 : 00000000; +3135 : 00000000; +3136 : 00000000; +3137 : 00000000; +3138 : 00000000; +3139 : 00000000; +313a : 00000000; +313b : 00000000; +313c : 00000000; +313d : 00000000; +313e : 00000000; +313f : 00000000; +3140 : 00000000; +3141 : 00000000; +3142 : 00000000; +3143 : 00000000; +3144 : 00000000; +3145 : 00000000; +3146 : 00000000; +3147 : 00000000; +3148 : 00000000; +3149 : 00000000; +314a : 00000000; +314b : 00000000; +314c : 00000000; +314d : 00000000; +314e : 00000000; +314f : 00000000; +3150 : 00000000; +3151 : 00000000; +3152 : 00000000; +3153 : 00000000; +3154 : 00000000; +3155 : 00000000; +3156 : 00000000; +3157 : 00000000; +3158 : 00000000; +3159 : 00000000; +315a : 00000000; +315b : 00000000; +315c : 00000000; +315d : 00000000; +315e : 00000000; +315f : 00000000; +3160 : 00000000; +3161 : 00000000; +3162 : 00000000; +3163 : 00000000; +3164 : 00000000; +3165 : 00000000; +3166 : 00000000; +3167 : 00000000; +3168 : 00000000; +3169 : 00000000; +316a : 00000000; +316b : 00000000; +316c : 00000000; +316d : 00000000; +316e : 00000000; +316f : 00000000; +3170 : 00000000; +3171 : 00000000; +3172 : 00000000; +3173 : 00000000; +3174 : 00000000; +3175 : 00000000; +3176 : 00000000; +3177 : 00000000; +3178 : 00000000; +3179 : 00000000; +317a : 00000000; +317b : 00000000; +317c : 00000000; +317d : 00000000; +317e : 00000000; +317f : 00000000; +3180 : 00000000; +3181 : 00000000; +3182 : 00000000; +3183 : 00000000; +3184 : 00000000; +3185 : 00000000; +3186 : 00000000; +3187 : 00000000; +3188 : 00000000; +3189 : 00000000; +318a : 00000000; +318b : 00000000; +318c : 00000000; +318d : 00000000; +318e : 00000000; +318f : 00000000; +3190 : 00000000; +3191 : 00000000; +3192 : 00000000; +3193 : 00000000; +3194 : 00000000; +3195 : 00000000; +3196 : 00000000; +3197 : 00000000; +3198 : 00000000; +3199 : 00000000; +319a : 00000000; +319b : 00000000; +319c : 00000000; +319d : 00000000; +319e : 00000000; +319f : 00000000; +31a0 : 00000000; +31a1 : 00000000; +31a2 : 00000000; +31a3 : 00000000; +31a4 : 00000000; +31a5 : 00000000; +31a6 : 00000000; +31a7 : 00000000; +31a8 : 00000000; +31a9 : 00000000; +31aa : 00000000; +31ab : 00000000; +31ac : 00000000; +31ad : 00000000; +31ae : 00000000; +31af : 00000000; +31b0 : 00000000; +31b1 : 00000000; +31b2 : 00000000; +31b3 : 00000000; +31b4 : 00000000; +31b5 : 00000000; +31b6 : 00000000; +31b7 : 00000000; +31b8 : 00000000; +31b9 : 00000000; +31ba : 00000000; +31bb : 00000000; +31bc : 00000000; +31bd : 00000000; +31be : 00000000; +31bf : 00000000; +31c0 : 00000000; +31c1 : 00000000; +31c2 : 00000000; +31c3 : 00000000; +31c4 : 00000000; +31c5 : 00000000; +31c6 : 00000000; +31c7 : 00000000; +31c8 : 00000000; +31c9 : 00000000; +31ca : 00000000; +31cb : 00000000; +31cc : 00000000; +31cd : 00000000; +31ce : 00000000; +31cf : 00000000; +31d0 : 00000000; +31d1 : 00000000; +31d2 : 00000000; +31d3 : 00000000; +31d4 : 00000000; +31d5 : 00000000; +31d6 : 00000000; +31d7 : 00000000; +31d8 : 00000000; +31d9 : 00000000; +31da : 00000000; +31db : 00000000; +31dc : 00000000; +31dd : 00000000; +31de : 00000000; +31df : 00000000; +31e0 : 00000000; +31e1 : 00000000; +31e2 : 00000000; +31e3 : 00000000; +31e4 : 00000000; +31e5 : 00000000; +31e6 : 00000000; +31e7 : 00000000; +31e8 : 00000000; +31e9 : 00000000; +31ea : 00000000; +31eb : 00000000; +31ec : 00000000; +31ed : 00000000; +31ee : 00000000; +31ef : 00000000; +31f0 : 00000000; +31f1 : 00000000; +31f2 : 00000000; +31f3 : 00000000; +31f4 : 00000000; +31f5 : 00000000; +31f6 : 00000000; +31f7 : 00000000; +31f8 : 00000000; +31f9 : 00000000; +31fa : 00000000; +31fb : 00000000; +31fc : 00000000; +31fd : 00000000; +31fe : 00000000; +31ff : 00000000; +3200 : 00000000; +3201 : 00000000; +3202 : 00000000; +3203 : 00000000; +3204 : 00000000; +3205 : 00000000; +3206 : 00000000; +3207 : 00000000; +3208 : 00000000; +3209 : 00000000; +320a : 00000000; +320b : 00000000; +320c : 00000000; +320d : 00000000; +320e : 00000000; +320f : 00000000; +3210 : 00000000; +3211 : 00000000; +3212 : 00000000; +3213 : 00000000; +3214 : 00000000; +3215 : 00000000; +3216 : 00000000; +3217 : 00000000; +3218 : 00000000; +3219 : 00000000; +321a : 00000000; +321b : 00000000; +321c : 00000000; +321d : 00000000; +321e : 00000000; +321f : 00000000; +3220 : 00000000; +3221 : 00000000; +3222 : 00000000; +3223 : 00000000; +3224 : 00000000; +3225 : 00000000; +3226 : 00000000; +3227 : 00000000; +3228 : 00000000; +3229 : 00000000; +322a : 00000000; +322b : 00000000; +322c : 00000000; +322d : 00000000; +322e : 00000000; +322f : 00000000; +3230 : 00000000; +3231 : 00000000; +3232 : 00000000; +3233 : 00000000; +3234 : 00000000; +3235 : 00000000; +3236 : 00000000; +3237 : 00000000; +3238 : 00000000; +3239 : 00000000; +323a : 00000000; +323b : 00000000; +323c : 00000000; +323d : 00000000; +323e : 00000000; +323f : 00000000; +3240 : 00000000; +3241 : 00000000; +3242 : 00000000; +3243 : 00000000; +3244 : 00000000; +3245 : 00000000; +3246 : 00000000; +3247 : 00000000; +3248 : 00000000; +3249 : 00000000; +324a : 00000000; +324b : 00000000; +324c : 00000000; +324d : 00000000; +324e : 00000000; +324f : 00000000; +3250 : 00000000; +3251 : 00000000; +3252 : 00000000; +3253 : 00000000; +3254 : 00000000; +3255 : 00000000; +3256 : 00000000; +3257 : 00000000; +3258 : 00000000; +3259 : 00000000; +325a : 00000000; +325b : 00000000; +325c : 00000000; +325d : 00000000; +325e : 00000000; +325f : 00000000; +3260 : 00000000; +3261 : 00000000; +3262 : 00000000; +3263 : 00000000; +3264 : 00000000; +3265 : 00000000; +3266 : 00000000; +3267 : 00000000; +3268 : 00000000; +3269 : 00000000; +326a : 00000000; +326b : 00000000; +326c : 00000000; +326d : 00000000; +326e : 00000000; +326f : 00000000; +3270 : 00000000; +3271 : 00000000; +3272 : 00000000; +3273 : 00000000; +3274 : 00000000; +3275 : 00000000; +3276 : 00000000; +3277 : 00000000; +3278 : 00000000; +3279 : 00000000; +327a : 00000000; +327b : 00000000; +327c : 00000000; +327d : 00000000; +327e : 00000000; +327f : 00000000; +3280 : 00000000; +3281 : 00000000; +3282 : 00000000; +3283 : 00000000; +3284 : 00000000; +3285 : 00000000; +3286 : 00000000; +3287 : 00000000; +3288 : 00000000; +3289 : 00000000; +328a : 00000000; +328b : 00000000; +328c : 00000000; +328d : 00000000; +328e : 00000000; +328f : 00000000; +3290 : 00000000; +3291 : 00000000; +3292 : 00000000; +3293 : 00000000; +3294 : 00000000; +3295 : 00000000; +3296 : 00000000; +3297 : 00000000; +3298 : 00000000; +3299 : 00000000; +329a : 00000000; +329b : 00000000; +329c : 00000000; +329d : 00000000; +329e : 00000000; +329f : 00000000; +32a0 : 00000000; +32a1 : 00000000; +32a2 : 00000000; +32a3 : 00000000; +32a4 : 00000000; +32a5 : 00000000; +32a6 : 00000000; +32a7 : 00000000; +32a8 : 00000000; +32a9 : 00000000; +32aa : 00000000; +32ab : 00000000; +32ac : 00000000; +32ad : 00000000; +32ae : 00000000; +32af : 00000000; +32b0 : 00000000; +32b1 : 00000000; +32b2 : 00000000; +32b3 : 00000000; +32b4 : 00000000; +32b5 : 00000000; +32b6 : 00000000; +32b7 : 00000000; +32b8 : 00000000; +32b9 : 00000000; +32ba : 00000000; +32bb : 00000000; +32bc : 00000000; +32bd : 00000000; +32be : 00000000; +32bf : 00000000; +32c0 : 00000000; +32c1 : 00000000; +32c2 : 00000000; +32c3 : 00000000; +32c4 : 00000000; +32c5 : 00000000; +32c6 : 00000000; +32c7 : 00000000; +32c8 : 00000000; +32c9 : 00000000; +32ca : 00000000; +32cb : 00000000; +32cc : 00000000; +32cd : 00000000; +32ce : 00000000; +32cf : 00000000; +32d0 : 00000000; +32d1 : 00000000; +32d2 : 00000000; +32d3 : 00000000; +32d4 : 00000000; +32d5 : 00000000; +32d6 : 00000000; +32d7 : 00000000; +32d8 : 00000000; +32d9 : 00000000; +32da : 00000000; +32db : 00000000; +32dc : 00000000; +32dd : 00000000; +32de : 00000000; +32df : 00000000; +32e0 : 00000000; +32e1 : 00000000; +32e2 : 00000000; +32e3 : 00000000; +32e4 : 00000000; +32e5 : 00000000; +32e6 : 00000000; +32e7 : 00000000; +32e8 : 00000000; +32e9 : 00000000; +32ea : 00000000; +32eb : 00000000; +32ec : 00000000; +32ed : 00000000; +32ee : 00000000; +32ef : 00000000; +32f0 : 00000000; +32f1 : 00000000; +32f2 : 00000000; +32f3 : 00000000; +32f4 : 00000000; +32f5 : 00000000; +32f6 : 00000000; +32f7 : 00000000; +32f8 : 00000000; +32f9 : 00000000; +32fa : 00000000; +32fb : 00000000; +32fc : 00000000; +32fd : 00000000; +32fe : 00000000; +32ff : 00000000; +3300 : 00000000; +3301 : 00000000; +3302 : 00000000; +3303 : 00000000; +3304 : 00000000; +3305 : 00000000; +3306 : 00000000; +3307 : 00000000; +3308 : 00000000; +3309 : 00000000; +330a : 00000000; +330b : 00000000; +330c : 00000000; +330d : 00000000; +330e : 00000000; +330f : 00000000; +3310 : 00000000; +3311 : 00000000; +3312 : 00000000; +3313 : 00000000; +3314 : 00000000; +3315 : 00000000; +3316 : 00000000; +3317 : 00000000; +3318 : 00000000; +3319 : 00000000; +331a : 00000000; +331b : 00000000; +331c : 00000000; +331d : 00000000; +331e : 00000000; +331f : 00000000; +3320 : 00000000; +3321 : 00000000; +3322 : 00000000; +3323 : 00000000; +3324 : 00000000; +3325 : 00000000; +3326 : 00000000; +3327 : 00000000; +3328 : 00000000; +3329 : 00000000; +332a : 00000000; +332b : 00000000; +332c : 00000000; +332d : 00000000; +332e : 00000000; +332f : 00000000; +3330 : 00000000; +3331 : 00000000; +3332 : 00000000; +3333 : 00000000; +3334 : 00000000; +3335 : 00000000; +3336 : 00000000; +3337 : 00000000; +3338 : 00000000; +3339 : 00000000; +333a : 00000000; +333b : 00000000; +333c : 00000000; +333d : 00000000; +333e : 00000000; +333f : 00000000; +3340 : 00000000; +3341 : 00000000; +3342 : 00000000; +3343 : 00000000; +3344 : 00000000; +3345 : 00000000; +3346 : 00000000; +3347 : 00000000; +3348 : 00000000; +3349 : 00000000; +334a : 00000000; +334b : 00000000; +334c : 00000000; +334d : 00000000; +334e : 00000000; +334f : 00000000; +3350 : 00000000; +3351 : 00000000; +3352 : 00000000; +3353 : 00000000; +3354 : 00000000; +3355 : 00000000; +3356 : 00000000; +3357 : 00000000; +3358 : 00000000; +3359 : 00000000; +335a : 00000000; +335b : 00000000; +335c : 00000000; +335d : 00000000; +335e : 00000000; +335f : 00000000; +3360 : 00000000; +3361 : 00000000; +3362 : 00000000; +3363 : 00000000; +3364 : 00000000; +3365 : 00000000; +3366 : 00000000; +3367 : 00000000; +3368 : 00000000; +3369 : 00000000; +336a : 00000000; +336b : 00000000; +336c : 00000000; +336d : 00000000; +336e : 00000000; +336f : 00000000; +3370 : 00000000; +3371 : 00000000; +3372 : 00000000; +3373 : 00000000; +3374 : 00000000; +3375 : 00000000; +3376 : 00000000; +3377 : 00000000; +3378 : 00000000; +3379 : 00000000; +337a : 00000000; +337b : 00000000; +337c : 00000000; +337d : 00000000; +337e : 00000000; +337f : 00000000; +3380 : 00000000; +3381 : 00000000; +3382 : 00000000; +3383 : 00000000; +3384 : 00000000; +3385 : 00000000; +3386 : 00000000; +3387 : 00000000; +3388 : 00000000; +3389 : 00000000; +338a : 00000000; +338b : 00000000; +338c : 00000000; +338d : 00000000; +338e : 00000000; +338f : 00000000; +3390 : 00000000; +3391 : 00000000; +3392 : 00000000; +3393 : 00000000; +3394 : 00000000; +3395 : 00000000; +3396 : 00000000; +3397 : 00000000; +3398 : 00000000; +3399 : 00000000; +339a : 00000000; +339b : 00000000; +339c : 00000000; +339d : 00000000; +339e : 00000000; +339f : 00000000; +33a0 : 00000000; +33a1 : 00000000; +33a2 : 00000000; +33a3 : 00000000; +33a4 : 00000000; +33a5 : 00000000; +33a6 : 00000000; +33a7 : 00000000; +33a8 : 00000000; +33a9 : 00000000; +33aa : 00000000; +33ab : 00000000; +33ac : 00000000; +33ad : 00000000; +33ae : 00000000; +33af : 00000000; +33b0 : 00000000; +33b1 : 00000000; +33b2 : 00000000; +33b3 : 00000000; +33b4 : 00000000; +33b5 : 00000000; +33b6 : 00000000; +33b7 : 00000000; +33b8 : 00000000; +33b9 : 00000000; +33ba : 00000000; +33bb : 00000000; +33bc : 00000000; +33bd : 00000000; +33be : 00000000; +33bf : 00000000; +33c0 : 00000000; +33c1 : 00000000; +33c2 : 00000000; +33c3 : 00000000; +33c4 : 00000000; +33c5 : 00000000; +33c6 : 00000000; +33c7 : 00000000; +33c8 : 00000000; +33c9 : 00000000; +33ca : 00000000; +33cb : 00000000; +33cc : 00000000; +33cd : 00000000; +33ce : 00000000; +33cf : 00000000; +33d0 : 00000000; +33d1 : 00000000; +33d2 : 00000000; +33d3 : 00000000; +33d4 : 00000000; +33d5 : 00000000; +33d6 : 00000000; +33d7 : 00000000; +33d8 : 00000000; +33d9 : 00000000; +33da : 00000000; +33db : 00000000; +33dc : 00000000; +33dd : 00000000; +33de : 00000000; +33df : 00000000; +33e0 : 00000000; +33e1 : 00000000; +33e2 : 00000000; +33e3 : 00000000; +33e4 : 00000000; +33e5 : 00000000; +33e6 : 00000000; +33e7 : 00000000; +33e8 : 00000000; +33e9 : 00000000; +33ea : 00000000; +33eb : 00000000; +33ec : 00000000; +33ed : 00000000; +33ee : 00000000; +33ef : 00000000; +33f0 : 00000000; +33f1 : 00000000; +33f2 : 00000000; +33f3 : 00000000; +33f4 : 00000000; +33f5 : 00000000; +33f6 : 00000000; +33f7 : 00000000; +33f8 : 00000000; +33f9 : 00000000; +33fa : 00000000; +33fb : 00000000; +33fc : 00000000; +33fd : 00000000; +33fe : 00000000; +33ff : 00000000; +3400 : 00000000; +3401 : 00000000; +3402 : 00000000; +3403 : 00000000; +3404 : 00000000; +3405 : 00000000; +3406 : 00000000; +3407 : 00000000; +3408 : 00000000; +3409 : 00000000; +340a : 00000000; +340b : 00000000; +340c : 00000000; +340d : 00000000; +340e : 00000000; +340f : 00000000; +3410 : 00000000; +3411 : 00000000; +3412 : 00000000; +3413 : 00000000; +3414 : 00000000; +3415 : 00000000; +3416 : 00000000; +3417 : 00000000; +3418 : 00000000; +3419 : 00000000; +341a : 00000000; +341b : 00000000; +341c : 00000000; +341d : 00000000; +341e : 00000000; +341f : 00000000; +3420 : 00000000; +3421 : 00000000; +3422 : 00000000; +3423 : 00000000; +3424 : 00000000; +3425 : 00000000; +3426 : 00000000; +3427 : 00000000; +3428 : 00000000; +3429 : 00000000; +342a : 00000000; +342b : 00000000; +342c : 00000000; +342d : 00000000; +342e : 00000000; +342f : 00000000; +3430 : 00000000; +3431 : 00000000; +3432 : 00000000; +3433 : 00000000; +3434 : 00000000; +3435 : 00000000; +3436 : 00000000; +3437 : 00000000; +3438 : 00000000; +3439 : 00000000; +343a : 00000000; +343b : 00000000; +343c : 00000000; +343d : 00000000; +343e : 00000000; +343f : 00000000; +3440 : 00000000; +3441 : 00000000; +3442 : 00000000; +3443 : 00000000; +3444 : 00000000; +3445 : 00000000; +3446 : 00000000; +3447 : 00000000; +3448 : 00000000; +3449 : 00000000; +344a : 00000000; +344b : 00000000; +344c : 00000000; +344d : 00000000; +344e : 00000000; +344f : 00000000; +3450 : 00000000; +3451 : 00000000; +3452 : 00000000; +3453 : 00000000; +3454 : 00000000; +3455 : 00000000; +3456 : 00000000; +3457 : 00000000; +3458 : 00000000; +3459 : 00000000; +345a : 00000000; +345b : 00000000; +345c : 00000000; +345d : 00000000; +345e : 00000000; +345f : 00000000; +3460 : 00000000; +3461 : 00000000; +3462 : 00000000; +3463 : 00000000; +3464 : 00000000; +3465 : 00000000; +3466 : 00000000; +3467 : 00000000; +3468 : 00000000; +3469 : 00000000; +346a : 00000000; +346b : 00000000; +346c : 00000000; +346d : 00000000; +346e : 00000000; +346f : 00000000; +3470 : 00000000; +3471 : 00000000; +3472 : 00000000; +3473 : 00000000; +3474 : 00000000; +3475 : 00000000; +3476 : 00000000; +3477 : 00000000; +3478 : 00000000; +3479 : 00000000; +347a : 00000000; +347b : 00000000; +347c : 00000000; +347d : 00000000; +347e : 00000000; +347f : 00000000; +3480 : 00000000; +3481 : 00000000; +3482 : 00000000; +3483 : 00000000; +3484 : 00000000; +3485 : 00000000; +3486 : 00000000; +3487 : 00000000; +3488 : 00000000; +3489 : 00000000; +348a : 00000000; +348b : 00000000; +348c : 00000000; +348d : 00000000; +348e : 00000000; +348f : 00000000; +3490 : 00000000; +3491 : 00000000; +3492 : 00000000; +3493 : 00000000; +3494 : 00000000; +3495 : 00000000; +3496 : 00000000; +3497 : 00000000; +3498 : 00000000; +3499 : 00000000; +349a : 00000000; +349b : 00000000; +349c : 00000000; +349d : 00000000; +349e : 00000000; +349f : 00000000; +34a0 : 00000000; +34a1 : 00000000; +34a2 : 00000000; +34a3 : 00000000; +34a4 : 00000000; +34a5 : 00000000; +34a6 : 00000000; +34a7 : 00000000; +34a8 : 00000000; +34a9 : 00000000; +34aa : 00000000; +34ab : 00000000; +34ac : 00000000; +34ad : 00000000; +34ae : 00000000; +34af : 00000000; +34b0 : 00000000; +34b1 : 00000000; +34b2 : 00000000; +34b3 : 00000000; +34b4 : 00000000; +34b5 : 00000000; +34b6 : 00000000; +34b7 : 00000000; +34b8 : 00000000; +34b9 : 00000000; +34ba : 00000000; +34bb : 00000000; +34bc : 00000000; +34bd : 00000000; +34be : 00000000; +34bf : 00000000; +34c0 : 00000000; +34c1 : 00000000; +34c2 : 00000000; +34c3 : 00000000; +34c4 : 00000000; +34c5 : 00000000; +34c6 : 00000000; +34c7 : 00000000; +34c8 : 00000000; +34c9 : 00000000; +34ca : 00000000; +34cb : 00000000; +34cc : 00000000; +34cd : 00000000; +34ce : 00000000; +34cf : 00000000; +34d0 : 00000000; +34d1 : 00000000; +34d2 : 00000000; +34d3 : 00000000; +34d4 : 00000000; +34d5 : 00000000; +34d6 : 00000000; +34d7 : 00000000; +34d8 : 00000000; +34d9 : 00000000; +34da : 00000000; +34db : 00000000; +34dc : 00000000; +34dd : 00000000; +34de : 00000000; +34df : 00000000; +34e0 : 00000000; +34e1 : 00000000; +34e2 : 00000000; +34e3 : 00000000; +34e4 : 00000000; +34e5 : 00000000; +34e6 : 00000000; +34e7 : 00000000; +34e8 : 00000000; +34e9 : 00000000; +34ea : 00000000; +34eb : 00000000; +34ec : 00000000; +34ed : 00000000; +34ee : 00000000; +34ef : 00000000; +34f0 : 00000000; +34f1 : 00000000; +34f2 : 00000000; +34f3 : 00000000; +34f4 : 00000000; +34f5 : 00000000; +34f6 : 00000000; +34f7 : 00000000; +34f8 : 00000000; +34f9 : 00000000; +34fa : 00000000; +34fb : 00000000; +34fc : 00000000; +34fd : 00000000; +34fe : 00000000; +34ff : 00000000; +3500 : 00000000; +3501 : 00000000; +3502 : 00000000; +3503 : 00000000; +3504 : 00000000; +3505 : 00000000; +3506 : 00000000; +3507 : 00000000; +3508 : 00000000; +3509 : 00000000; +350a : 00000000; +350b : 00000000; +350c : 00000000; +350d : 00000000; +350e : 00000000; +350f : 00000000; +3510 : 00000000; +3511 : 00000000; +3512 : 00000000; +3513 : 00000000; +3514 : 00000000; +3515 : 00000000; +3516 : 00000000; +3517 : 00000000; +3518 : 00000000; +3519 : 00000000; +351a : 00000000; +351b : 00000000; +351c : 00000000; +351d : 00000000; +351e : 00000000; +351f : 00000000; +3520 : 00000000; +3521 : 00000000; +3522 : 00000000; +3523 : 00000000; +3524 : 00000000; +3525 : 00000000; +3526 : 00000000; +3527 : 00000000; +3528 : 00000000; +3529 : 00000000; +352a : 00000000; +352b : 00000000; +352c : 00000000; +352d : 00000000; +352e : 00000000; +352f : 00000000; +3530 : 00000000; +3531 : 00000000; +3532 : 00000000; +3533 : 00000000; +3534 : 00000000; +3535 : 00000000; +3536 : 00000000; +3537 : 00000000; +3538 : 00000000; +3539 : 00000000; +353a : 00000000; +353b : 00000000; +353c : 00000000; +353d : 00000000; +353e : 00000000; +353f : 00000000; +3540 : 00000000; +3541 : 00000000; +3542 : 00000000; +3543 : 00000000; +3544 : 00000000; +3545 : 00000000; +3546 : 00000000; +3547 : 00000000; +3548 : 00000000; +3549 : 00000000; +354a : 00000000; +354b : 00000000; +354c : 00000000; +354d : 00000000; +354e : 00000000; +354f : 00000000; +3550 : 00000000; +3551 : 00000000; +3552 : 00000000; +3553 : 00000000; +3554 : 00000000; +3555 : 00000000; +3556 : 00000000; +3557 : 00000000; +3558 : 00000000; +3559 : 00000000; +355a : 00000000; +355b : 00000000; +355c : 00000000; +355d : 00000000; +355e : 00000000; +355f : 00000000; +3560 : 00000000; +3561 : 00000000; +3562 : 00000000; +3563 : 00000000; +3564 : 00000000; +3565 : 00000000; +3566 : 00000000; +3567 : 00000000; +3568 : 00000000; +3569 : 00000000; +356a : 00000000; +356b : 00000000; +356c : 00000000; +356d : 00000000; +356e : 00000000; +356f : 00000000; +3570 : 00000000; +3571 : 00000000; +3572 : 00000000; +3573 : 00000000; +3574 : 00000000; +3575 : 00000000; +3576 : 00000000; +3577 : 00000000; +3578 : 00000000; +3579 : 00000000; +357a : 00000000; +357b : 00000000; +357c : 00000000; +357d : 00000000; +357e : 00000000; +357f : 00000000; +3580 : 00000000; +3581 : 00000000; +3582 : 00000000; +3583 : 00000000; +3584 : 00000000; +3585 : 00000000; +3586 : 00000000; +3587 : 00000000; +3588 : 00000000; +3589 : 00000000; +358a : 00000000; +358b : 00000000; +358c : 00000000; +358d : 00000000; +358e : 00000000; +358f : 00000000; +3590 : 00000000; +3591 : 00000000; +3592 : 00000000; +3593 : 00000000; +3594 : 00000000; +3595 : 00000000; +3596 : 00000000; +3597 : 00000000; +3598 : 00000000; +3599 : 00000000; +359a : 00000000; +359b : 00000000; +359c : 00000000; +359d : 00000000; +359e : 00000000; +359f : 00000000; +35a0 : 00000000; +35a1 : 00000000; +35a2 : 00000000; +35a3 : 00000000; +35a4 : 00000000; +35a5 : 00000000; +35a6 : 00000000; +35a7 : 00000000; +35a8 : 00000000; +35a9 : 00000000; +35aa : 00000000; +35ab : 00000000; +35ac : 00000000; +35ad : 00000000; +35ae : 00000000; +35af : 00000000; +35b0 : 00000000; +35b1 : 00000000; +35b2 : 00000000; +35b3 : 00000000; +35b4 : 00000000; +35b5 : 00000000; +35b6 : 00000000; +35b7 : 00000000; +35b8 : 00000000; +35b9 : 00000000; +35ba : 00000000; +35bb : 00000000; +35bc : 00000000; +35bd : 00000000; +35be : 00000000; +35bf : 00000000; +35c0 : 00000000; +35c1 : 00000000; +35c2 : 00000000; +35c3 : 00000000; +35c4 : 00000000; +35c5 : 00000000; +35c6 : 00000000; +35c7 : 00000000; +35c8 : 00000000; +35c9 : 00000000; +35ca : 00000000; +35cb : 00000000; +35cc : 00000000; +35cd : 00000000; +35ce : 00000000; +35cf : 00000000; +35d0 : 00000000; +35d1 : 00000000; +35d2 : 00000000; +35d3 : 00000000; +35d4 : 00000000; +35d5 : 00000000; +35d6 : 00000000; +35d7 : 00000000; +35d8 : 00000000; +35d9 : 00000000; +35da : 00000000; +35db : 00000000; +35dc : 00000000; +35dd : 00000000; +35de : 00000000; +35df : 00000000; +35e0 : 00000000; +35e1 : 00000000; +35e2 : 00000000; +35e3 : 00000000; +35e4 : 00000000; +35e5 : 00000000; +35e6 : 00000000; +35e7 : 00000000; +35e8 : 00000000; +35e9 : 00000000; +35ea : 00000000; +35eb : 00000000; +35ec : 00000000; +35ed : 00000000; +35ee : 00000000; +35ef : 00000000; +35f0 : 00000000; +35f1 : 00000000; +35f2 : 00000000; +35f3 : 00000000; +35f4 : 00000000; +35f5 : 00000000; +35f6 : 00000000; +35f7 : 00000000; +35f8 : 00000000; +35f9 : 00000000; +35fa : 00000000; +35fb : 00000000; +35fc : 00000000; +35fd : 00000000; +35fe : 00000000; +35ff : 00000000; +3600 : 00000000; +3601 : 00000000; +3602 : 00000000; +3603 : 00000000; +3604 : 00000000; +3605 : 00000000; +3606 : 00000000; +3607 : 00000000; +3608 : 00000000; +3609 : 00000000; +360a : 00000000; +360b : 00000000; +360c : 00000000; +360d : 00000000; +360e : 00000000; +360f : 00000000; +3610 : 00000000; +3611 : 00000000; +3612 : 00000000; +3613 : 00000000; +3614 : 00000000; +3615 : 00000000; +3616 : 00000000; +3617 : 00000000; +3618 : 00000000; +3619 : 00000000; +361a : 00000000; +361b : 00000000; +361c : 00000000; +361d : 00000000; +361e : 00000000; +361f : 00000000; +3620 : 00000000; +3621 : 00000000; +3622 : 00000000; +3623 : 00000000; +3624 : 00000000; +3625 : 00000000; +3626 : 00000000; +3627 : 00000000; +3628 : 00000000; +3629 : 00000000; +362a : 00000000; +362b : 00000000; +362c : 00000000; +362d : 00000000; +362e : 00000000; +362f : 00000000; +3630 : 00000000; +3631 : 00000000; +3632 : 00000000; +3633 : 00000000; +3634 : 00000000; +3635 : 00000000; +3636 : 00000000; +3637 : 00000000; +3638 : 00000000; +3639 : 00000000; +363a : 00000000; +363b : 00000000; +363c : 00000000; +363d : 00000000; +363e : 00000000; +363f : 00000000; +3640 : 00000000; +3641 : 00000000; +3642 : 00000000; +3643 : 00000000; +3644 : 00000000; +3645 : 00000000; +3646 : 00000000; +3647 : 00000000; +3648 : 00000000; +3649 : 00000000; +364a : 00000000; +364b : 00000000; +364c : 00000000; +364d : 00000000; +364e : 00000000; +364f : 00000000; +3650 : 00000000; +3651 : 00000000; +3652 : 00000000; +3653 : 00000000; +3654 : 00000000; +3655 : 00000000; +3656 : 00000000; +3657 : 00000000; +3658 : 00000000; +3659 : 00000000; +365a : 00000000; +365b : 00000000; +365c : 00000000; +365d : 00000000; +365e : 00000000; +365f : 00000000; +3660 : 00000000; +3661 : 00000000; +3662 : 00000000; +3663 : 00000000; +3664 : 00000000; +3665 : 00000000; +3666 : 00000000; +3667 : 00000000; +3668 : 00000000; +3669 : 00000000; +366a : 00000000; +366b : 00000000; +366c : 00000000; +366d : 00000000; +366e : 00000000; +366f : 00000000; +3670 : 00000000; +3671 : 00000000; +3672 : 00000000; +3673 : 00000000; +3674 : 00000000; +3675 : 00000000; +3676 : 00000000; +3677 : 00000000; +3678 : 00000000; +3679 : 00000000; +367a : 00000000; +367b : 00000000; +367c : 00000000; +367d : 00000000; +367e : 00000000; +367f : 00000000; +3680 : 00000000; +3681 : 00000000; +3682 : 00000000; +3683 : 00000000; +3684 : 00000000; +3685 : 00000000; +3686 : 00000000; +3687 : 00000000; +3688 : 00000000; +3689 : 00000000; +368a : 00000000; +368b : 00000000; +368c : 00000000; +368d : 00000000; +368e : 00000000; +368f : 00000000; +3690 : 00000000; +3691 : 00000000; +3692 : 00000000; +3693 : 00000000; +3694 : 00000000; +3695 : 00000000; +3696 : 00000000; +3697 : 00000000; +3698 : 00000000; +3699 : 00000000; +369a : 00000000; +369b : 00000000; +369c : 00000000; +369d : 00000000; +369e : 00000000; +369f : 00000000; +36a0 : 00000000; +36a1 : 00000000; +36a2 : 00000000; +36a3 : 00000000; +36a4 : 00000000; +36a5 : 00000000; +36a6 : 00000000; +36a7 : 00000000; +36a8 : 00000000; +36a9 : 00000000; +36aa : 00000000; +36ab : 00000000; +36ac : 00000000; +36ad : 00000000; +36ae : 00000000; +36af : 00000000; +36b0 : 00000000; +36b1 : 00000000; +36b2 : 00000000; +36b3 : 00000000; +36b4 : 00000000; +36b5 : 00000000; +36b6 : 00000000; +36b7 : 00000000; +36b8 : 00000000; +36b9 : 00000000; +36ba : 00000000; +36bb : 00000000; +36bc : 00000000; +36bd : 00000000; +36be : 00000000; +36bf : 00000000; +36c0 : 00000000; +36c1 : 00000000; +36c2 : 00000000; +36c3 : 00000000; +36c4 : 00000000; +36c5 : 00000000; +36c6 : 00000000; +36c7 : 00000000; +36c8 : 00000000; +36c9 : 00000000; +36ca : 00000000; +36cb : 00000000; +36cc : 00000000; +36cd : 00000000; +36ce : 00000000; +36cf : 00000000; +36d0 : 00000000; +36d1 : 00000000; +36d2 : 00000000; +36d3 : 00000000; +36d4 : 00000000; +36d5 : 00000000; +36d6 : 00000000; +36d7 : 00000000; +36d8 : 00000000; +36d9 : 00000000; +36da : 00000000; +36db : 00000000; +36dc : 00000000; +36dd : 00000000; +36de : 00000000; +36df : 00000000; +36e0 : 00000000; +36e1 : 00000000; +36e2 : 00000000; +36e3 : 00000000; +36e4 : 00000000; +36e5 : 00000000; +36e6 : 00000000; +36e7 : 00000000; +36e8 : 00000000; +36e9 : 00000000; +36ea : 00000000; +36eb : 00000000; +36ec : 00000000; +36ed : 00000000; +36ee : 00000000; +36ef : 00000000; +36f0 : 00000000; +36f1 : 00000000; +36f2 : 00000000; +36f3 : 00000000; +36f4 : 00000000; +36f5 : 00000000; +36f6 : 00000000; +36f7 : 00000000; +36f8 : 00000000; +36f9 : 00000000; +36fa : 00000000; +36fb : 00000000; +36fc : 00000000; +36fd : 00000000; +36fe : 00000000; +36ff : 00000000; +3700 : 00000000; +3701 : 00000000; +3702 : 00000000; +3703 : 00000000; +3704 : 00000000; +3705 : 00000000; +3706 : 00000000; +3707 : 00000000; +3708 : 00000000; +3709 : 00000000; +370a : 00000000; +370b : 00000000; +370c : 00000000; +370d : 00000000; +370e : 00000000; +370f : 00000000; +3710 : 00000000; +3711 : 00000000; +3712 : 00000000; +3713 : 00000000; +3714 : 00000000; +3715 : 00000000; +3716 : 00000000; +3717 : 00000000; +3718 : 00000000; +3719 : 00000000; +371a : 00000000; +371b : 00000000; +371c : 00000000; +371d : 00000000; +371e : 00000000; +371f : 00000000; +3720 : 00000000; +3721 : 00000000; +3722 : 00000000; +3723 : 00000000; +3724 : 00000000; +3725 : 00000000; +3726 : 00000000; +3727 : 00000000; +3728 : 00000000; +3729 : 00000000; +372a : 00000000; +372b : 00000000; +372c : 00000000; +372d : 00000000; +372e : 00000000; +372f : 00000000; +3730 : 00000000; +3731 : 00000000; +3732 : 00000000; +3733 : 00000000; +3734 : 00000000; +3735 : 00000000; +3736 : 00000000; +3737 : 00000000; +3738 : 00000000; +3739 : 00000000; +373a : 00000000; +373b : 00000000; +373c : 00000000; +373d : 00000000; +373e : 00000000; +373f : 00000000; +3740 : 00000000; +3741 : 00000000; +3742 : 00000000; +3743 : 00000000; +3744 : 00000000; +3745 : 00000000; +3746 : 00000000; +3747 : 00000000; +3748 : 00000000; +3749 : 00000000; +374a : 00000000; +374b : 00000000; +374c : 00000000; +374d : 00000000; +374e : 00000000; +374f : 00000000; +3750 : 00000000; +3751 : 00000000; +3752 : 00000000; +3753 : 00000000; +3754 : 00000000; +3755 : 00000000; +3756 : 00000000; +3757 : 00000000; +3758 : 00000000; +3759 : 00000000; +375a : 00000000; +375b : 00000000; +375c : 00000000; +375d : 00000000; +375e : 00000000; +375f : 00000000; +3760 : 00000000; +3761 : 00000000; +3762 : 00000000; +3763 : 00000000; +3764 : 00000000; +3765 : 00000000; +3766 : 00000000; +3767 : 00000000; +3768 : 00000000; +3769 : 00000000; +376a : 00000000; +376b : 00000000; +376c : 00000000; +376d : 00000000; +376e : 00000000; +376f : 00000000; +3770 : 00000000; +3771 : 00000000; +3772 : 00000000; +3773 : 00000000; +3774 : 00000000; +3775 : 00000000; +3776 : 00000000; +3777 : 00000000; +3778 : 00000000; +3779 : 00000000; +377a : 00000000; +377b : 00000000; +377c : 00000000; +377d : 00000000; +377e : 00000000; +377f : 00000000; +3780 : 00000000; +3781 : 00000000; +3782 : 00000000; +3783 : 00000000; +3784 : 00000000; +3785 : 00000000; +3786 : 00000000; +3787 : 00000000; +3788 : 00000000; +3789 : 00000000; +378a : 00000000; +378b : 00000000; +378c : 00000000; +378d : 00000000; +378e : 00000000; +378f : 00000000; +3790 : 00000000; +3791 : 00000000; +3792 : 00000000; +3793 : 00000000; +3794 : 00000000; +3795 : 00000000; +3796 : 00000000; +3797 : 00000000; +3798 : 00000000; +3799 : 00000000; +379a : 00000000; +379b : 00000000; +379c : 00000000; +379d : 00000000; +379e : 00000000; +379f : 00000000; +37a0 : 00000000; +37a1 : 00000000; +37a2 : 00000000; +37a3 : 00000000; +37a4 : 00000000; +37a5 : 00000000; +37a6 : 00000000; +37a7 : 00000000; +37a8 : 00000000; +37a9 : 00000000; +37aa : 00000000; +37ab : 00000000; +37ac : 00000000; +37ad : 00000000; +37ae : 00000000; +37af : 00000000; +37b0 : 00000000; +37b1 : 00000000; +37b2 : 00000000; +37b3 : 00000000; +37b4 : 00000000; +37b5 : 00000000; +37b6 : 00000000; +37b7 : 00000000; +37b8 : 00000000; +37b9 : 00000000; +37ba : 00000000; +37bb : 00000000; +37bc : 00000000; +37bd : 00000000; +37be : 00000000; +37bf : 00000000; +37c0 : 00000000; +37c1 : 00000000; +37c2 : 00000000; +37c3 : 00000000; +37c4 : 00000000; +37c5 : 00000000; +37c6 : 00000000; +37c7 : 00000000; +37c8 : 00000000; +37c9 : 00000000; +37ca : 00000000; +37cb : 00000000; +37cc : 00000000; +37cd : 00000000; +37ce : 00000000; +37cf : 00000000; +37d0 : 00000000; +37d1 : 00000000; +37d2 : 00000000; +37d3 : 00000000; +37d4 : 00000000; +37d5 : 00000000; +37d6 : 00000000; +37d7 : 00000000; +37d8 : 00000000; +37d9 : 00000000; +37da : 00000000; +37db : 00000000; +37dc : 00000000; +37dd : 00000000; +37de : 00000000; +37df : 00000000; +37e0 : 00000000; +37e1 : 00000000; +37e2 : 00000000; +37e3 : 00000000; +37e4 : 00000000; +37e5 : 00000000; +37e6 : 00000000; +37e7 : 00000000; +37e8 : 00000000; +37e9 : 00000000; +37ea : 00000000; +37eb : 00000000; +37ec : 00000000; +37ed : 00000000; +37ee : 00000000; +37ef : 00000000; +37f0 : 00000000; +37f1 : 00000000; +37f2 : 00000000; +37f3 : 00000000; +37f4 : 00000000; +37f5 : 00000000; +37f6 : 00000000; +37f7 : 00000000; +37f8 : 00000000; +37f9 : 00000000; +37fa : 00000000; +37fb : 00000000; +37fc : 00000000; +37fd : 00000000; +37fe : 00000000; +37ff : 00000000; +3800 : 00000000; +3801 : 00000000; +3802 : 00000000; +3803 : 00000000; +3804 : 00000000; +3805 : 00000000; +3806 : 00000000; +3807 : 00000000; +3808 : 00000000; +3809 : 00000000; +380a : 00000000; +380b : 00000000; +380c : 00000000; +380d : 00000000; +380e : 00000000; +380f : 00000000; +3810 : 00000000; +3811 : 00000000; +3812 : 00000000; +3813 : 00000000; +3814 : 00000000; +3815 : 00000000; +3816 : 00000000; +3817 : 00000000; +3818 : 00000000; +3819 : 00000000; +381a : 00000000; +381b : 00000000; +381c : 00000000; +381d : 00000000; +381e : 00000000; +381f : 00000000; +3820 : 00000000; +3821 : 00000000; +3822 : 00000000; +3823 : 00000000; +3824 : 00000000; +3825 : 00000000; +3826 : 00000000; +3827 : 00000000; +3828 : 00000000; +3829 : 00000000; +382a : 00000000; +382b : 00000000; +382c : 00000000; +382d : 00000000; +382e : 00000000; +382f : 00000000; +3830 : 00000000; +3831 : 00000000; +3832 : 00000000; +3833 : 00000000; +3834 : 00000000; +3835 : 00000000; +3836 : 00000000; +3837 : 00000000; +3838 : 00000000; +3839 : 00000000; +383a : 00000000; +383b : 00000000; +383c : 00000000; +383d : 00000000; +383e : 00000000; +383f : 00000000; +3840 : 00000000; +3841 : 00000000; +3842 : 00000000; +3843 : 00000000; +3844 : 00000000; +3845 : 00000000; +3846 : 00000000; +3847 : 00000000; +3848 : 00000000; +3849 : 00000000; +384a : 00000000; +384b : 00000000; +384c : 00000000; +384d : 00000000; +384e : 00000000; +384f : 00000000; +3850 : 00000000; +3851 : 00000000; +3852 : 00000000; +3853 : 00000000; +3854 : 00000000; +3855 : 00000000; +3856 : 00000000; +3857 : 00000000; +3858 : 00000000; +3859 : 00000000; +385a : 00000000; +385b : 00000000; +385c : 00000000; +385d : 00000000; +385e : 00000000; +385f : 00000000; +3860 : 00000000; +3861 : 00000000; +3862 : 00000000; +3863 : 00000000; +3864 : 00000000; +3865 : 00000000; +3866 : 00000000; +3867 : 00000000; +3868 : 00000000; +3869 : 00000000; +386a : 00000000; +386b : 00000000; +386c : 00000000; +386d : 00000000; +386e : 00000000; +386f : 00000000; +3870 : 00000000; +3871 : 00000000; +3872 : 00000000; +3873 : 00000000; +3874 : 00000000; +3875 : 00000000; +3876 : 00000000; +3877 : 00000000; +3878 : 00000000; +3879 : 00000000; +387a : 00000000; +387b : 00000000; +387c : 00000000; +387d : 00000000; +387e : 00000000; +387f : 00000000; +3880 : 00000000; +3881 : 00000000; +3882 : 00000000; +3883 : 00000000; +3884 : 00000000; +3885 : 00000000; +3886 : 00000000; +3887 : 00000000; +3888 : 00000000; +3889 : 00000000; +388a : 00000000; +388b : 00000000; +388c : 00000000; +388d : 00000000; +388e : 00000000; +388f : 00000000; +3890 : 00000000; +3891 : 00000000; +3892 : 00000000; +3893 : 00000000; +3894 : 00000000; +3895 : 00000000; +3896 : 00000000; +3897 : 00000000; +3898 : 00000000; +3899 : 00000000; +389a : 00000000; +389b : 00000000; +389c : 00000000; +389d : 00000000; +389e : 00000000; +389f : 00000000; +38a0 : 00000000; +38a1 : 00000000; +38a2 : 00000000; +38a3 : 00000000; +38a4 : 00000000; +38a5 : 00000000; +38a6 : 00000000; +38a7 : 00000000; +38a8 : 00000000; +38a9 : 00000000; +38aa : 00000000; +38ab : 00000000; +38ac : 00000000; +38ad : 00000000; +38ae : 00000000; +38af : 00000000; +38b0 : 00000000; +38b1 : 00000000; +38b2 : 00000000; +38b3 : 00000000; +38b4 : 00000000; +38b5 : 00000000; +38b6 : 00000000; +38b7 : 00000000; +38b8 : 00000000; +38b9 : 00000000; +38ba : 00000000; +38bb : 00000000; +38bc : 00000000; +38bd : 00000000; +38be : 00000000; +38bf : 00000000; +38c0 : 00000000; +38c1 : 00000000; +38c2 : 00000000; +38c3 : 00000000; +38c4 : 00000000; +38c5 : 00000000; +38c6 : 00000000; +38c7 : 00000000; +38c8 : 00000000; +38c9 : 00000000; +38ca : 00000000; +38cb : 00000000; +38cc : 00000000; +38cd : 00000000; +38ce : 00000000; +38cf : 00000000; +38d0 : 00000000; +38d1 : 00000000; +38d2 : 00000000; +38d3 : 00000000; +38d4 : 00000000; +38d5 : 00000000; +38d6 : 00000000; +38d7 : 00000000; +38d8 : 00000000; +38d9 : 00000000; +38da : 00000000; +38db : 00000000; +38dc : 00000000; +38dd : 00000000; +38de : 00000000; +38df : 00000000; +38e0 : 00000000; +38e1 : 00000000; +38e2 : 00000000; +38e3 : 00000000; +38e4 : 00000000; +38e5 : 00000000; +38e6 : 00000000; +38e7 : 00000000; +38e8 : 00000000; +38e9 : 00000000; +38ea : 00000000; +38eb : 00000000; +38ec : 00000000; +38ed : 00000000; +38ee : 00000000; +38ef : 00000000; +38f0 : 00000000; +38f1 : 00000000; +38f2 : 00000000; +38f3 : 00000000; +38f4 : 00000000; +38f5 : 00000000; +38f6 : 00000000; +38f7 : 00000000; +38f8 : 00000000; +38f9 : 00000000; +38fa : 00000000; +38fb : 00000000; +38fc : 00000000; +38fd : 00000000; +38fe : 00000000; +38ff : 00000000; +3900 : 00000000; +3901 : 00000000; +3902 : 00000000; +3903 : 00000000; +3904 : 00000000; +3905 : 00000000; +3906 : 00000000; +3907 : 00000000; +3908 : 00000000; +3909 : 00000000; +390a : 00000000; +390b : 00000000; +390c : 00000000; +390d : 00000000; +390e : 00000000; +390f : 00000000; +3910 : 00000000; +3911 : 00000000; +3912 : 00000000; +3913 : 00000000; +3914 : 00000000; +3915 : 00000000; +3916 : 00000000; +3917 : 00000000; +3918 : 00000000; +3919 : 00000000; +391a : 00000000; +391b : 00000000; +391c : 00000000; +391d : 00000000; +391e : 00000000; +391f : 00000000; +3920 : 00000000; +3921 : 00000000; +3922 : 00000000; +3923 : 00000000; +3924 : 00000000; +3925 : 00000000; +3926 : 00000000; +3927 : 00000000; +3928 : 00000000; +3929 : 00000000; +392a : 00000000; +392b : 00000000; +392c : 00000000; +392d : 00000000; +392e : 00000000; +392f : 00000000; +3930 : 00000000; +3931 : 00000000; +3932 : 00000000; +3933 : 00000000; +3934 : 00000000; +3935 : 00000000; +3936 : 00000000; +3937 : 00000000; +3938 : 00000000; +3939 : 00000000; +393a : 00000000; +393b : 00000000; +393c : 00000000; +393d : 00000000; +393e : 00000000; +393f : 00000000; +3940 : 00000000; +3941 : 00000000; +3942 : 00000000; +3943 : 00000000; +3944 : 00000000; +3945 : 00000000; +3946 : 00000000; +3947 : 00000000; +3948 : 00000000; +3949 : 00000000; +394a : 00000000; +394b : 00000000; +394c : 00000000; +394d : 00000000; +394e : 00000000; +394f : 00000000; +3950 : 00000000; +3951 : 00000000; +3952 : 00000000; +3953 : 00000000; +3954 : 00000000; +3955 : 00000000; +3956 : 00000000; +3957 : 00000000; +3958 : 00000000; +3959 : 00000000; +395a : 00000000; +395b : 00000000; +395c : 00000000; +395d : 00000000; +395e : 00000000; +395f : 00000000; +3960 : 00000000; +3961 : 00000000; +3962 : 00000000; +3963 : 00000000; +3964 : 00000000; +3965 : 00000000; +3966 : 00000000; +3967 : 00000000; +3968 : 00000000; +3969 : 00000000; +396a : 00000000; +396b : 00000000; +396c : 00000000; +396d : 00000000; +396e : 00000000; +396f : 00000000; +3970 : 00000000; +3971 : 00000000; +3972 : 00000000; +3973 : 00000000; +3974 : 00000000; +3975 : 00000000; +3976 : 00000000; +3977 : 00000000; +3978 : 00000000; +3979 : 00000000; +397a : 00000000; +397b : 00000000; +397c : 00000000; +397d : 00000000; +397e : 00000000; +397f : 00000000; +3980 : 00000000; +3981 : 00000000; +3982 : 00000000; +3983 : 00000000; +3984 : 00000000; +3985 : 00000000; +3986 : 00000000; +3987 : 00000000; +3988 : 00000000; +3989 : 00000000; +398a : 00000000; +398b : 00000000; +398c : 00000000; +398d : 00000000; +398e : 00000000; +398f : 00000000; +3990 : 00000000; +3991 : 00000000; +3992 : 00000000; +3993 : 00000000; +3994 : 00000000; +3995 : 00000000; +3996 : 00000000; +3997 : 00000000; +3998 : 00000000; +3999 : 00000000; +399a : 00000000; +399b : 00000000; +399c : 00000000; +399d : 00000000; +399e : 00000000; +399f : 00000000; +39a0 : 00000000; +39a1 : 00000000; +39a2 : 00000000; +39a3 : 00000000; +39a4 : 00000000; +39a5 : 00000000; +39a6 : 00000000; +39a7 : 00000000; +39a8 : 00000000; +39a9 : 00000000; +39aa : 00000000; +39ab : 00000000; +39ac : 00000000; +39ad : 00000000; +39ae : 00000000; +39af : 00000000; +39b0 : 00000000; +39b1 : 00000000; +39b2 : 00000000; +39b3 : 00000000; +39b4 : 00000000; +39b5 : 00000000; +39b6 : 00000000; +39b7 : 00000000; +39b8 : 00000000; +39b9 : 00000000; +39ba : 00000000; +39bb : 00000000; +39bc : 00000000; +39bd : 00000000; +39be : 00000000; +39bf : 00000000; +39c0 : 00000000; +39c1 : 00000000; +39c2 : 00000000; +39c3 : 00000000; +39c4 : 00000000; +39c5 : 00000000; +39c6 : 00000000; +39c7 : 00000000; +39c8 : 00000000; +39c9 : 00000000; +39ca : 00000000; +39cb : 00000000; +39cc : 00000000; +39cd : 00000000; +39ce : 00000000; +39cf : 00000000; +39d0 : 00000000; +39d1 : 00000000; +39d2 : 00000000; +39d3 : 00000000; +39d4 : 00000000; +39d5 : 00000000; +39d6 : 00000000; +39d7 : 00000000; +39d8 : 00000000; +39d9 : 00000000; +39da : 00000000; +39db : 00000000; +39dc : 00000000; +39dd : 00000000; +39de : 00000000; +39df : 00000000; +39e0 : 00000000; +39e1 : 00000000; +39e2 : 00000000; +39e3 : 00000000; +39e4 : 00000000; +39e5 : 00000000; +39e6 : 00000000; +39e7 : 00000000; +39e8 : 00000000; +39e9 : 00000000; +39ea : 00000000; +39eb : 00000000; +39ec : 00000000; +39ed : 00000000; +39ee : 00000000; +39ef : 00000000; +39f0 : 00000000; +39f1 : 00000000; +39f2 : 00000000; +39f3 : 00000000; +39f4 : 00000000; +39f5 : 00000000; +39f6 : 00000000; +39f7 : 00000000; +39f8 : 00000000; +39f9 : 00000000; +39fa : 00000000; +39fb : 00000000; +39fc : 00000000; +39fd : 00000000; +39fe : 00000000; +39ff : 00000000; +3a00 : 00000000; +3a01 : 00000000; +3a02 : 00000000; +3a03 : 00000000; +3a04 : 00000000; +3a05 : 00000000; +3a06 : 00000000; +3a07 : 00000000; +3a08 : 00000000; +3a09 : 00000000; +3a0a : 00000000; +3a0b : 00000000; +3a0c : 00000000; +3a0d : 00000000; +3a0e : 00000000; +3a0f : 00000000; +3a10 : 00000000; +3a11 : 00000000; +3a12 : 00000000; +3a13 : 00000000; +3a14 : 00000000; +3a15 : 00000000; +3a16 : 00000000; +3a17 : 00000000; +3a18 : 00000000; +3a19 : 00000000; +3a1a : 00000000; +3a1b : 00000000; +3a1c : 00000000; +3a1d : 00000000; +3a1e : 00000000; +3a1f : 00000000; +3a20 : 00000000; +3a21 : 00000000; +3a22 : 00000000; +3a23 : 00000000; +3a24 : 00000000; +3a25 : 00000000; +3a26 : 00000000; +3a27 : 00000000; +3a28 : 00000000; +3a29 : 00000000; +3a2a : 00000000; +3a2b : 00000000; +3a2c : 00000000; +3a2d : 00000000; +3a2e : 00000000; +3a2f : 00000000; +3a30 : 00000000; +3a31 : 00000000; +3a32 : 00000000; +3a33 : 00000000; +3a34 : 00000000; +3a35 : 00000000; +3a36 : 00000000; +3a37 : 00000000; +3a38 : 00000000; +3a39 : 00000000; +3a3a : 00000000; +3a3b : 00000000; +3a3c : 00000000; +3a3d : 00000000; +3a3e : 00000000; +3a3f : 00000000; +3a40 : 00000000; +3a41 : 00000000; +3a42 : 00000000; +3a43 : 00000000; +3a44 : 00000000; +3a45 : 00000000; +3a46 : 00000000; +3a47 : 00000000; +3a48 : 00000000; +3a49 : 00000000; +3a4a : 00000000; +3a4b : 00000000; +3a4c : 00000000; +3a4d : 00000000; +3a4e : 00000000; +3a4f : 00000000; +3a50 : 00000000; +3a51 : 00000000; +3a52 : 00000000; +3a53 : 00000000; +3a54 : 00000000; +3a55 : 00000000; +3a56 : 00000000; +3a57 : 00000000; +3a58 : 00000000; +3a59 : 00000000; +3a5a : 00000000; +3a5b : 00000000; +3a5c : 00000000; +3a5d : 00000000; +3a5e : 00000000; +3a5f : 00000000; +3a60 : 00000000; +3a61 : 00000000; +3a62 : 00000000; +3a63 : 00000000; +3a64 : 00000000; +3a65 : 00000000; +3a66 : 00000000; +3a67 : 00000000; +3a68 : 00000000; +3a69 : 00000000; +3a6a : 00000000; +3a6b : 00000000; +3a6c : 00000000; +3a6d : 00000000; +3a6e : 00000000; +3a6f : 00000000; +3a70 : 00000000; +3a71 : 00000000; +3a72 : 00000000; +3a73 : 00000000; +3a74 : 00000000; +3a75 : 00000000; +3a76 : 00000000; +3a77 : 00000000; +3a78 : 00000000; +3a79 : 00000000; +3a7a : 00000000; +3a7b : 00000000; +3a7c : 00000000; +3a7d : 00000000; +3a7e : 00000000; +3a7f : 00000000; +3a80 : 00000000; +3a81 : 00000000; +3a82 : 00000000; +3a83 : 00000000; +3a84 : 00000000; +3a85 : 00000000; +3a86 : 00000000; +3a87 : 00000000; +3a88 : 00000000; +3a89 : 00000000; +3a8a : 00000000; +3a8b : 00000000; +3a8c : 00000000; +3a8d : 00000000; +3a8e : 00000000; +3a8f : 00000000; +3a90 : 00000000; +3a91 : 00000000; +3a92 : 00000000; +3a93 : 00000000; +3a94 : 00000000; +3a95 : 00000000; +3a96 : 00000000; +3a97 : 00000000; +3a98 : 00000000; +3a99 : 00000000; +3a9a : 00000000; +3a9b : 00000000; +3a9c : 00000000; +3a9d : 00000000; +3a9e : 00000000; +3a9f : 00000000; +3aa0 : 00000000; +3aa1 : 00000000; +3aa2 : 00000000; +3aa3 : 00000000; +3aa4 : 00000000; +3aa5 : 00000000; +3aa6 : 00000000; +3aa7 : 00000000; +3aa8 : 00000000; +3aa9 : 00000000; +3aaa : 00000000; +3aab : 00000000; +3aac : 00000000; +3aad : 00000000; +3aae : 00000000; +3aaf : 00000000; +3ab0 : 00000000; +3ab1 : 00000000; +3ab2 : 00000000; +3ab3 : 00000000; +3ab4 : 00000000; +3ab5 : 00000000; +3ab6 : 00000000; +3ab7 : 00000000; +3ab8 : 00000000; +3ab9 : 00000000; +3aba : 00000000; +3abb : 00000000; +3abc : 00000000; +3abd : 00000000; +3abe : 00000000; +3abf : 00000000; +3ac0 : 00000000; +3ac1 : 00000000; +3ac2 : 00000000; +3ac3 : 00000000; +3ac4 : 00000000; +3ac5 : 00000000; +3ac6 : 00000000; +3ac7 : 00000000; +3ac8 : 00000000; +3ac9 : 00000000; +3aca : 00000000; +3acb : 00000000; +3acc : 00000000; +3acd : 00000000; +3ace : 00000000; +3acf : 00000000; +3ad0 : 00000000; +3ad1 : 00000000; +3ad2 : 00000000; +3ad3 : 00000000; +3ad4 : 00000000; +3ad5 : 00000000; +3ad6 : 00000000; +3ad7 : 00000000; +3ad8 : 00000000; +3ad9 : 00000000; +3ada : 00000000; +3adb : 00000000; +3adc : 00000000; +3add : 00000000; +3ade : 00000000; +3adf : 00000000; +3ae0 : 00000000; +3ae1 : 00000000; +3ae2 : 00000000; +3ae3 : 00000000; +3ae4 : 00000000; +3ae5 : 00000000; +3ae6 : 00000000; +3ae7 : 00000000; +3ae8 : 00000000; +3ae9 : 00000000; +3aea : 00000000; +3aeb : 00000000; +3aec : 00000000; +3aed : 00000000; +3aee : 00000000; +3aef : 00000000; +3af0 : 00000000; +3af1 : 00000000; +3af2 : 00000000; +3af3 : 00000000; +3af4 : 00000000; +3af5 : 00000000; +3af6 : 00000000; +3af7 : 00000000; +3af8 : 00000000; +3af9 : 00000000; +3afa : 00000000; +3afb : 00000000; +3afc : 00000000; +3afd : 00000000; +3afe : 00000000; +3aff : 00000000; +3b00 : 00000000; +3b01 : 00000000; +3b02 : 00000000; +3b03 : 00000000; +3b04 : 00000000; +3b05 : 00000000; +3b06 : 00000000; +3b07 : 00000000; +3b08 : 00000000; +3b09 : 00000000; +3b0a : 00000000; +3b0b : 00000000; +3b0c : 00000000; +3b0d : 00000000; +3b0e : 00000000; +3b0f : 00000000; +3b10 : 00000000; +3b11 : 00000000; +3b12 : 00000000; +3b13 : 00000000; +3b14 : 00000000; +3b15 : 00000000; +3b16 : 00000000; +3b17 : 00000000; +3b18 : 00000000; +3b19 : 00000000; +3b1a : 00000000; +3b1b : 00000000; +3b1c : 00000000; +3b1d : 00000000; +3b1e : 00000000; +3b1f : 00000000; +3b20 : 00000000; +3b21 : 00000000; +3b22 : 00000000; +3b23 : 00000000; +3b24 : 00000000; +3b25 : 00000000; +3b26 : 00000000; +3b27 : 00000000; +3b28 : 00000000; +3b29 : 00000000; +3b2a : 00000000; +3b2b : 00000000; +3b2c : 00000000; +3b2d : 00000000; +3b2e : 00000000; +3b2f : 00000000; +3b30 : 00000000; +3b31 : 00000000; +3b32 : 00000000; +3b33 : 00000000; +3b34 : 00000000; +3b35 : 00000000; +3b36 : 00000000; +3b37 : 00000000; +3b38 : 00000000; +3b39 : 00000000; +3b3a : 00000000; +3b3b : 00000000; +3b3c : 00000000; +3b3d : 00000000; +3b3e : 00000000; +3b3f : 00000000; +3b40 : 00000000; +3b41 : 00000000; +3b42 : 00000000; +3b43 : 00000000; +3b44 : 00000000; +3b45 : 00000000; +3b46 : 00000000; +3b47 : 00000000; +3b48 : 00000000; +3b49 : 00000000; +3b4a : 00000000; +3b4b : 00000000; +3b4c : 00000000; +3b4d : 00000000; +3b4e : 00000000; +3b4f : 00000000; +3b50 : 00000000; +3b51 : 00000000; +3b52 : 00000000; +3b53 : 00000000; +3b54 : 00000000; +3b55 : 00000000; +3b56 : 00000000; +3b57 : 00000000; +3b58 : 00000000; +3b59 : 00000000; +3b5a : 00000000; +3b5b : 00000000; +3b5c : 00000000; +3b5d : 00000000; +3b5e : 00000000; +3b5f : 00000000; +3b60 : 00000000; +3b61 : 00000000; +3b62 : 00000000; +3b63 : 00000000; +3b64 : 00000000; +3b65 : 00000000; +3b66 : 00000000; +3b67 : 00000000; +3b68 : 00000000; +3b69 : 00000000; +3b6a : 00000000; +3b6b : 00000000; +3b6c : 00000000; +3b6d : 00000000; +3b6e : 00000000; +3b6f : 00000000; +3b70 : 00000000; +3b71 : 00000000; +3b72 : 00000000; +3b73 : 00000000; +3b74 : 00000000; +3b75 : 00000000; +3b76 : 00000000; +3b77 : 00000000; +3b78 : 00000000; +3b79 : 00000000; +3b7a : 00000000; +3b7b : 00000000; +3b7c : 00000000; +3b7d : 00000000; +3b7e : 00000000; +3b7f : 00000000; +3b80 : 00000000; +3b81 : 00000000; +3b82 : 00000000; +3b83 : 00000000; +3b84 : 00000000; +3b85 : 00000000; +3b86 : 00000000; +3b87 : 00000000; +3b88 : 00000000; +3b89 : 00000000; +3b8a : 00000000; +3b8b : 00000000; +3b8c : 00000000; +3b8d : 00000000; +3b8e : 00000000; +3b8f : 00000000; +3b90 : 00000000; +3b91 : 00000000; +3b92 : 00000000; +3b93 : 00000000; +3b94 : 00000000; +3b95 : 00000000; +3b96 : 00000000; +3b97 : 00000000; +3b98 : 00000000; +3b99 : 00000000; +3b9a : 00000000; +3b9b : 00000000; +3b9c : 00000000; +3b9d : 00000000; +3b9e : 00000000; +3b9f : 00000000; +3ba0 : 00000000; +3ba1 : 00000000; +3ba2 : 00000000; +3ba3 : 00000000; +3ba4 : 00000000; +3ba5 : 00000000; +3ba6 : 00000000; +3ba7 : 00000000; +3ba8 : 00000000; +3ba9 : 00000000; +3baa : 00000000; +3bab : 00000000; +3bac : 00000000; +3bad : 00000000; +3bae : 00000000; +3baf : 00000000; +3bb0 : 00000000; +3bb1 : 00000000; +3bb2 : 00000000; +3bb3 : 00000000; +3bb4 : 00000000; +3bb5 : 00000000; +3bb6 : 00000000; +3bb7 : 00000000; +3bb8 : 00000000; +3bb9 : 00000000; +3bba : 00000000; +3bbb : 00000000; +3bbc : 00000000; +3bbd : 00000000; +3bbe : 00000000; +3bbf : 00000000; +3bc0 : 00000000; +3bc1 : 00000000; +3bc2 : 00000000; +3bc3 : 00000000; +3bc4 : 00000000; +3bc5 : 00000000; +3bc6 : 00000000; +3bc7 : 00000000; +3bc8 : 00000000; +3bc9 : 00000000; +3bca : 00000000; +3bcb : 00000000; +3bcc : 00000000; +3bcd : 00000000; +3bce : 00000000; +3bcf : 00000000; +3bd0 : 00000000; +3bd1 : 00000000; +3bd2 : 00000000; +3bd3 : 00000000; +3bd4 : 00000000; +3bd5 : 00000000; +3bd6 : 00000000; +3bd7 : 00000000; +3bd8 : 00000000; +3bd9 : 00000000; +3bda : 00000000; +3bdb : 00000000; +3bdc : 00000000; +3bdd : 00000000; +3bde : 00000000; +3bdf : 00000000; +3be0 : 00000000; +3be1 : 00000000; +3be2 : 00000000; +3be3 : 00000000; +3be4 : 00000000; +3be5 : 00000000; +3be6 : 00000000; +3be7 : 00000000; +3be8 : 00000000; +3be9 : 00000000; +3bea : 00000000; +3beb : 00000000; +3bec : 00000000; +3bed : 00000000; +3bee : 00000000; +3bef : 00000000; +3bf0 : 00000000; +3bf1 : 00000000; +3bf2 : 00000000; +3bf3 : 00000000; +3bf4 : 00000000; +3bf5 : 00000000; +3bf6 : 00000000; +3bf7 : 00000000; +3bf8 : 00000000; +3bf9 : 00000000; +3bfa : 00000000; +3bfb : 00000000; +3bfc : 00000000; +3bfd : 00000000; +3bfe : 00000000; +3bff : 00000000; +3c00 : 00000000; +3c01 : 00000000; +3c02 : 00000000; +3c03 : 00000000; +3c04 : 00000000; +3c05 : 00000000; +3c06 : 00000000; +3c07 : 00000000; +3c08 : 00000000; +3c09 : 00000000; +3c0a : 00000000; +3c0b : 00000000; +3c0c : 00000000; +3c0d : 00000000; +3c0e : 00000000; +3c0f : 00000000; +3c10 : 00000000; +3c11 : 00000000; +3c12 : 00000000; +3c13 : 00000000; +3c14 : 00000000; +3c15 : 00000000; +3c16 : 00000000; +3c17 : 00000000; +3c18 : 00000000; +3c19 : 00000000; +3c1a : 00000000; +3c1b : 00000000; +3c1c : 00000000; +3c1d : 00000000; +3c1e : 00000000; +3c1f : 00000000; +3c20 : 00000000; +3c21 : 00000000; +3c22 : 00000000; +3c23 : 00000000; +3c24 : 00000000; +3c25 : 00000000; +3c26 : 00000000; +3c27 : 00000000; +3c28 : 00000000; +3c29 : 00000000; +3c2a : 00000000; +3c2b : 00000000; +3c2c : 00000000; +3c2d : 00000000; +3c2e : 00000000; +3c2f : 00000000; +3c30 : 00000000; +3c31 : 00000000; +3c32 : 00000000; +3c33 : 00000000; +3c34 : 00000000; +3c35 : 00000000; +3c36 : 00000000; +3c37 : 00000000; +3c38 : 00000000; +3c39 : 00000000; +3c3a : 00000000; +3c3b : 00000000; +3c3c : 00000000; +3c3d : 00000000; +3c3e : 00000000; +3c3f : 00000000; +3c40 : 00000000; +3c41 : 00000000; +3c42 : 00000000; +3c43 : 00000000; +3c44 : 00000000; +3c45 : 00000000; +3c46 : 00000000; +3c47 : 00000000; +3c48 : 00000000; +3c49 : 00000000; +3c4a : 00000000; +3c4b : 00000000; +3c4c : 00000000; +3c4d : 00000000; +3c4e : 00000000; +3c4f : 00000000; +3c50 : 00000000; +3c51 : 00000000; +3c52 : 00000000; +3c53 : 00000000; +3c54 : 00000000; +3c55 : 00000000; +3c56 : 00000000; +3c57 : 00000000; +3c58 : 00000000; +3c59 : 00000000; +3c5a : 00000000; +3c5b : 00000000; +3c5c : 00000000; +3c5d : 00000000; +3c5e : 00000000; +3c5f : 00000000; +3c60 : 00000000; +3c61 : 00000000; +3c62 : 00000000; +3c63 : 00000000; +3c64 : 00000000; +3c65 : 00000000; +3c66 : 00000000; +3c67 : 00000000; +3c68 : 00000000; +3c69 : 00000000; +3c6a : 00000000; +3c6b : 00000000; +3c6c : 00000000; +3c6d : 00000000; +3c6e : 00000000; +3c6f : 00000000; +3c70 : 00000000; +3c71 : 00000000; +3c72 : 00000000; +3c73 : 00000000; +3c74 : 00000000; +3c75 : 00000000; +3c76 : 00000000; +3c77 : 00000000; +3c78 : 00000000; +3c79 : 00000000; +3c7a : 00000000; +3c7b : 00000000; +3c7c : 00000000; +3c7d : 00000000; +3c7e : 00000000; +3c7f : 00000000; +3c80 : 00000000; +3c81 : 00000000; +3c82 : 00000000; +3c83 : 00000000; +3c84 : 00000000; +3c85 : 00000000; +3c86 : 00000000; +3c87 : 00000000; +3c88 : 00000000; +3c89 : 00000000; +3c8a : 00000000; +3c8b : 00000000; +3c8c : 00000000; +3c8d : 00000000; +3c8e : 00000000; +3c8f : 00000000; +3c90 : 00000000; +3c91 : 00000000; +3c92 : 00000000; +3c93 : 00000000; +3c94 : 00000000; +3c95 : 00000000; +3c96 : 00000000; +3c97 : 00000000; +3c98 : 00000000; +3c99 : 00000000; +3c9a : 00000000; +3c9b : 00000000; +3c9c : 00000000; +3c9d : 00000000; +3c9e : 00000000; +3c9f : 00000000; +3ca0 : 00000000; +3ca1 : 00000000; +3ca2 : 00000000; +3ca3 : 00000000; +3ca4 : 00000000; +3ca5 : 00000000; +3ca6 : 00000000; +3ca7 : 00000000; +3ca8 : 00000000; +3ca9 : 00000000; +3caa : 00000000; +3cab : 00000000; +3cac : 00000000; +3cad : 00000000; +3cae : 00000000; +3caf : 00000000; +3cb0 : 00000000; +3cb1 : 00000000; +3cb2 : 00000000; +3cb3 : 00000000; +3cb4 : 00000000; +3cb5 : 00000000; +3cb6 : 00000000; +3cb7 : 00000000; +3cb8 : 00000000; +3cb9 : 00000000; +3cba : 00000000; +3cbb : 00000000; +3cbc : 00000000; +3cbd : 00000000; +3cbe : 00000000; +3cbf : 00000000; +3cc0 : 00000000; +3cc1 : 00000000; +3cc2 : 00000000; +3cc3 : 00000000; +3cc4 : 00000000; +3cc5 : 00000000; +3cc6 : 00000000; +3cc7 : 00000000; +3cc8 : 00000000; +3cc9 : 00000000; +3cca : 00000000; +3ccb : 00000000; +3ccc : 00000000; +3ccd : 00000000; +3cce : 00000000; +3ccf : 00000000; +3cd0 : 00000000; +3cd1 : 00000000; +3cd2 : 00000000; +3cd3 : 00000000; +3cd4 : 00000000; +3cd5 : 00000000; +3cd6 : 00000000; +3cd7 : 00000000; +3cd8 : 00000000; +3cd9 : 00000000; +3cda : 00000000; +3cdb : 00000000; +3cdc : 00000000; +3cdd : 00000000; +3cde : 00000000; +3cdf : 00000000; +3ce0 : 00000000; +3ce1 : 00000000; +3ce2 : 00000000; +3ce3 : 00000000; +3ce4 : 00000000; +3ce5 : 00000000; +3ce6 : 00000000; +3ce7 : 00000000; +3ce8 : 00000000; +3ce9 : 00000000; +3cea : 00000000; +3ceb : 00000000; +3cec : 00000000; +3ced : 00000000; +3cee : 00000000; +3cef : 00000000; +3cf0 : 00000000; +3cf1 : 00000000; +3cf2 : 00000000; +3cf3 : 00000000; +3cf4 : 00000000; +3cf5 : 00000000; +3cf6 : 00000000; +3cf7 : 00000000; +3cf8 : 00000000; +3cf9 : 00000000; +3cfa : 00000000; +3cfb : 00000000; +3cfc : 00000000; +3cfd : 00000000; +3cfe : 00000000; +3cff : 00000000; +3d00 : 00000000; +3d01 : 00000000; +3d02 : 00000000; +3d03 : 00000000; +3d04 : 00000000; +3d05 : 00000000; +3d06 : 00000000; +3d07 : 00000000; +3d08 : 00000000; +3d09 : 00000000; +3d0a : 00000000; +3d0b : 00000000; +3d0c : 00000000; +3d0d : 00000000; +3d0e : 00000000; +3d0f : 00000000; +3d10 : 00000000; +3d11 : 00000000; +3d12 : 00000000; +3d13 : 00000000; +3d14 : 00000000; +3d15 : 00000000; +3d16 : 00000000; +3d17 : 00000000; +3d18 : 00000000; +3d19 : 00000000; +3d1a : 00000000; +3d1b : 00000000; +3d1c : 00000000; +3d1d : 00000000; +3d1e : 00000000; +3d1f : 00000000; +3d20 : 00000000; +3d21 : 00000000; +3d22 : 00000000; +3d23 : 00000000; +3d24 : 00000000; +3d25 : 00000000; +3d26 : 00000000; +3d27 : 00000000; +3d28 : 00000000; +3d29 : 00000000; +3d2a : 00000000; +3d2b : 00000000; +3d2c : 00000000; +3d2d : 00000000; +3d2e : 00000000; +3d2f : 00000000; +3d30 : 00000000; +3d31 : 00000000; +3d32 : 00000000; +3d33 : 00000000; +3d34 : 00000000; +3d35 : 00000000; +3d36 : 00000000; +3d37 : 00000000; +3d38 : 00000000; +3d39 : 00000000; +3d3a : 00000000; +3d3b : 00000000; +3d3c : 00000000; +3d3d : 00000000; +3d3e : 00000000; +3d3f : 00000000; +3d40 : 00000000; +3d41 : 00000000; +3d42 : 00000000; +3d43 : 00000000; +3d44 : 00000000; +3d45 : 00000000; +3d46 : 00000000; +3d47 : 00000000; +3d48 : 00000000; +3d49 : 00000000; +3d4a : 00000000; +3d4b : 00000000; +3d4c : 00000000; +3d4d : 00000000; +3d4e : 00000000; +3d4f : 00000000; +3d50 : 00000000; +3d51 : 00000000; +3d52 : 00000000; +3d53 : 00000000; +3d54 : 00000000; +3d55 : 00000000; +3d56 : 00000000; +3d57 : 00000000; +3d58 : 00000000; +3d59 : 00000000; +3d5a : 00000000; +3d5b : 00000000; +3d5c : 00000000; +3d5d : 00000000; +3d5e : 00000000; +3d5f : 00000000; +3d60 : 00000000; +3d61 : 00000000; +3d62 : 00000000; +3d63 : 00000000; +3d64 : 00000000; +3d65 : 00000000; +3d66 : 00000000; +3d67 : 00000000; +3d68 : 00000000; +3d69 : 00000000; +3d6a : 00000000; +3d6b : 00000000; +3d6c : 00000000; +3d6d : 00000000; +3d6e : 00000000; +3d6f : 00000000; +3d70 : 00000000; +3d71 : 00000000; +3d72 : 00000000; +3d73 : 00000000; +3d74 : 00000000; +3d75 : 00000000; +3d76 : 00000000; +3d77 : 00000000; +3d78 : 00000000; +3d79 : 00000000; +3d7a : 00000000; +3d7b : 00000000; +3d7c : 00000000; +3d7d : 00000000; +3d7e : 00000000; +3d7f : 00000000; +3d80 : 00000000; +3d81 : 00000000; +3d82 : 00000000; +3d83 : 00000000; +3d84 : 00000000; +3d85 : 00000000; +3d86 : 00000000; +3d87 : 00000000; +3d88 : 00000000; +3d89 : 00000000; +3d8a : 00000000; +3d8b : 00000000; +3d8c : 00000000; +3d8d : 00000000; +3d8e : 00000000; +3d8f : 00000000; +3d90 : 00000000; +3d91 : 00000000; +3d92 : 00000000; +3d93 : 00000000; +3d94 : 00000000; +3d95 : 00000000; +3d96 : 00000000; +3d97 : 00000000; +3d98 : 00000000; +3d99 : 00000000; +3d9a : 00000000; +3d9b : 00000000; +3d9c : 00000000; +3d9d : 00000000; +3d9e : 00000000; +3d9f : 00000000; +3da0 : 00000000; +3da1 : 00000000; +3da2 : 00000000; +3da3 : 00000000; +3da4 : 00000000; +3da5 : 00000000; +3da6 : 00000000; +3da7 : 00000000; +3da8 : 00000000; +3da9 : 00000000; +3daa : 00000000; +3dab : 00000000; +3dac : 00000000; +3dad : 00000000; +3dae : 00000000; +3daf : 00000000; +3db0 : 00000000; +3db1 : 00000000; +3db2 : 00000000; +3db3 : 00000000; +3db4 : 00000000; +3db5 : 00000000; +3db6 : 00000000; +3db7 : 00000000; +3db8 : 00000000; +3db9 : 00000000; +3dba : 00000000; +3dbb : 00000000; +3dbc : 00000000; +3dbd : 00000000; +3dbe : 00000000; +3dbf : 00000000; +3dc0 : 00000000; +3dc1 : 00000000; +3dc2 : 00000000; +3dc3 : 00000000; +3dc4 : 00000000; +3dc5 : 00000000; +3dc6 : 00000000; +3dc7 : 00000000; +3dc8 : 00000000; +3dc9 : 00000000; +3dca : 00000000; +3dcb : 00000000; +3dcc : 00000000; +3dcd : 00000000; +3dce : 00000000; +3dcf : 00000000; +3dd0 : 00000000; +3dd1 : 00000000; +3dd2 : 00000000; +3dd3 : 00000000; +3dd4 : 00000000; +3dd5 : 00000000; +3dd6 : 00000000; +3dd7 : 00000000; +3dd8 : 00000000; +3dd9 : 00000000; +3dda : 00000000; +3ddb : 00000000; +3ddc : 00000000; +3ddd : 00000000; +3dde : 00000000; +3ddf : 00000000; +3de0 : 00000000; +3de1 : 00000000; +3de2 : 00000000; +3de3 : 00000000; +3de4 : 00000000; +3de5 : 00000000; +3de6 : 00000000; +3de7 : 00000000; +3de8 : 00000000; +3de9 : 00000000; +3dea : 00000000; +3deb : 00000000; +3dec : 00000000; +3ded : 00000000; +3dee : 00000000; +3def : 00000000; +3df0 : 00000000; +3df1 : 00000000; +3df2 : 00000000; +3df3 : 00000000; +3df4 : 00000000; +3df5 : 00000000; +3df6 : 00000000; +3df7 : 00000000; +3df8 : 00000000; +3df9 : 00000000; +3dfa : 00000000; +3dfb : 00000000; +3dfc : 00000000; +3dfd : 00000000; +3dfe : 00000000; +3dff : 00000000; +3e00 : 00000000; +3e01 : 00000000; +3e02 : 00000000; +3e03 : 00000000; +3e04 : 00000000; +3e05 : 00000000; +3e06 : 00000000; +3e07 : 00000000; +3e08 : 00000000; +3e09 : 00000000; +3e0a : 00000000; +3e0b : 00000000; +3e0c : 00000000; +3e0d : 00000000; +3e0e : 00000000; +3e0f : 00000000; +3e10 : 00000000; +3e11 : 00000000; +3e12 : 00000000; +3e13 : 00000000; +3e14 : 00000000; +3e15 : 00000000; +3e16 : 00000000; +3e17 : 00000000; +3e18 : 00000000; +3e19 : 00000000; +3e1a : 00000000; +3e1b : 00000000; +3e1c : 00000000; +3e1d : 00000000; +3e1e : 00000000; +3e1f : 00000000; +3e20 : 00000000; +3e21 : 00000000; +3e22 : 00000000; +3e23 : 00000000; +3e24 : 00000000; +3e25 : 00000000; +3e26 : 00000000; +3e27 : 00000000; +3e28 : 00000000; +3e29 : 00000000; +3e2a : 00000000; +3e2b : 00000000; +3e2c : 00000000; +3e2d : 00000000; +3e2e : 00000000; +3e2f : 00000000; +3e30 : 00000000; +3e31 : 00000000; +3e32 : 00000000; +3e33 : 00000000; +3e34 : 00000000; +3e35 : 00000000; +3e36 : 00000000; +3e37 : 00000000; +3e38 : 00000000; +3e39 : 00000000; +3e3a : 00000000; +3e3b : 00000000; +3e3c : 00000000; +3e3d : 00000000; +3e3e : 00000000; +3e3f : 00000000; +3e40 : 00000000; +3e41 : 00000000; +3e42 : 00000000; +3e43 : 00000000; +3e44 : 00000000; +3e45 : 00000000; +3e46 : 00000000; +3e47 : 00000000; +3e48 : 00000000; +3e49 : 00000000; +3e4a : 00000000; +3e4b : 00000000; +3e4c : 00000000; +3e4d : 00000000; +3e4e : 00000000; +3e4f : 00000000; +3e50 : 00000000; +3e51 : 00000000; +3e52 : 00000000; +3e53 : 00000000; +3e54 : 00000000; +3e55 : 00000000; +3e56 : 00000000; +3e57 : 00000000; +3e58 : 00000000; +3e59 : 00000000; +3e5a : 00000000; +3e5b : 00000000; +3e5c : 00000000; +3e5d : 00000000; +3e5e : 00000000; +3e5f : 00000000; +3e60 : 00000000; +3e61 : 00000000; +3e62 : 00000000; +3e63 : 00000000; +3e64 : 00000000; +3e65 : 00000000; +3e66 : 00000000; +3e67 : 00000000; +3e68 : 00000000; +3e69 : 00000000; +3e6a : 00000000; +3e6b : 00000000; +3e6c : 00000000; +3e6d : 00000000; +3e6e : 00000000; +3e6f : 00000000; +3e70 : 00000000; +3e71 : 00000000; +3e72 : 00000000; +3e73 : 00000000; +3e74 : 00000000; +3e75 : 00000000; +3e76 : 00000000; +3e77 : 00000000; +3e78 : 00000000; +3e79 : 00000000; +3e7a : 00000000; +3e7b : 00000000; +3e7c : 00000000; +3e7d : 00000000; +3e7e : 00000000; +3e7f : 00000000; +3e80 : 00000000; +3e81 : 00000000; +3e82 : 00000000; +3e83 : 00000000; +3e84 : 00000000; +3e85 : 00000000; +3e86 : 00000000; +3e87 : 00000000; +3e88 : 00000000; +3e89 : 00000000; +3e8a : 00000000; +3e8b : 00000000; +3e8c : 00000000; +3e8d : 00000000; +3e8e : 00000000; +3e8f : 00000000; +3e90 : 00000000; +3e91 : 00000000; +3e92 : 00000000; +3e93 : 00000000; +3e94 : 00000000; +3e95 : 00000000; +3e96 : 00000000; +3e97 : 00000000; +3e98 : 00000000; +3e99 : 00000000; +3e9a : 00000000; +3e9b : 00000000; +3e9c : 00000000; +3e9d : 00000000; +3e9e : 00000000; +3e9f : 00000000; +3ea0 : 00000000; +3ea1 : 00000000; +3ea2 : 00000000; +3ea3 : 00000000; +3ea4 : 00000000; +3ea5 : 00000000; +3ea6 : 00000000; +3ea7 : 00000000; +3ea8 : 00000000; +3ea9 : 00000000; +3eaa : 00000000; +3eab : 00000000; +3eac : 00000000; +3ead : 00000000; +3eae : 00000000; +3eaf : 00000000; +3eb0 : 00000000; +3eb1 : 00000000; +3eb2 : 00000000; +3eb3 : 00000000; +3eb4 : 00000000; +3eb5 : 00000000; +3eb6 : 00000000; +3eb7 : 00000000; +3eb8 : 00000000; +3eb9 : 00000000; +3eba : 00000000; +3ebb : 00000000; +3ebc : 00000000; +3ebd : 00000000; +3ebe : 00000000; +3ebf : 00000000; +3ec0 : 00000000; +3ec1 : 00000000; +3ec2 : 00000000; +3ec3 : 00000000; +3ec4 : 00000000; +3ec5 : 00000000; +3ec6 : 00000000; +3ec7 : 00000000; +3ec8 : 00000000; +3ec9 : 00000000; +3eca : 00000000; +3ecb : 00000000; +3ecc : 00000000; +3ecd : 00000000; +3ece : 00000000; +3ecf : 00000000; +3ed0 : 00000000; +3ed1 : 00000000; +3ed2 : 00000000; +3ed3 : 00000000; +3ed4 : 00000000; +3ed5 : 00000000; +3ed6 : 00000000; +3ed7 : 00000000; +3ed8 : 00000000; +3ed9 : 00000000; +3eda : 00000000; +3edb : 00000000; +3edc : 00000000; +3edd : 00000000; +3ede : 00000000; +3edf : 00000000; +3ee0 : 00000000; +3ee1 : 00000000; +3ee2 : 00000000; +3ee3 : 00000000; +3ee4 : 00000000; +3ee5 : 00000000; +3ee6 : 00000000; +3ee7 : 00000000; +3ee8 : 00000000; +3ee9 : 00000000; +3eea : 00000000; +3eeb : 00000000; +3eec : 00000000; +3eed : 00000000; +3eee : 00000000; +3eef : 00000000; +3ef0 : 00000000; +3ef1 : 00000000; +3ef2 : 00000000; +3ef3 : 00000000; +3ef4 : 00000000; +3ef5 : 00000000; +3ef6 : 00000000; +3ef7 : 00000000; +3ef8 : 00000000; +3ef9 : 00000000; +3efa : 00000000; +3efb : 00000000; +3efc : 00000000; +3efd : 00000000; +3efe : 00000000; +3eff : 00000000; +3f00 : 00000000; +3f01 : 00000000; +3f02 : 00000000; +3f03 : 00000000; +3f04 : 00000000; +3f05 : 00000000; +3f06 : 00000000; +3f07 : 00000000; +3f08 : 00000000; +3f09 : 00000000; +3f0a : 00000000; +3f0b : 00000000; +3f0c : 00000000; +3f0d : 00000000; +3f0e : 00000000; +3f0f : 00000000; +3f10 : 00000000; +3f11 : 00000000; +3f12 : 00000000; +3f13 : 00000000; +3f14 : 00000000; +3f15 : 00000000; +3f16 : 00000000; +3f17 : 00000000; +3f18 : 00000000; +3f19 : 00000000; +3f1a : 00000000; +3f1b : 00000000; +3f1c : 00000000; +3f1d : 00000000; +3f1e : 00000000; +3f1f : 00000000; +3f20 : 00000000; +3f21 : 00000000; +3f22 : 00000000; +3f23 : 00000000; +3f24 : 00000000; +3f25 : 00000000; +3f26 : 00000000; +3f27 : 00000000; +3f28 : 00000000; +3f29 : 00000000; +3f2a : 00000000; +3f2b : 00000000; +3f2c : 00000000; +3f2d : 00000000; +3f2e : 00000000; +3f2f : 00000000; +3f30 : 00000000; +3f31 : 00000000; +3f32 : 00000000; +3f33 : 00000000; +3f34 : 00000000; +3f35 : 00000000; +3f36 : 00000000; +3f37 : 00000000; +3f38 : 00000000; +3f39 : 00000000; +3f3a : 00000000; +3f3b : 00000000; +3f3c : 00000000; +3f3d : 00000000; +3f3e : 00000000; +3f3f : 00000000; +3f40 : 00000000; +3f41 : 00000000; +3f42 : 00000000; +3f43 : 00000000; +3f44 : 00000000; +3f45 : 00000000; +3f46 : 00000000; +3f47 : 00000000; +3f48 : 00000000; +3f49 : 00000000; +3f4a : 00000000; +3f4b : 00000000; +3f4c : 00000000; +3f4d : 00000000; +3f4e : 00000000; +3f4f : 00000000; +3f50 : 00000000; +3f51 : 00000000; +3f52 : 00000000; +3f53 : 00000000; +3f54 : 00000000; +3f55 : 00000000; +3f56 : 00000000; +3f57 : 00000000; +3f58 : 00000000; +3f59 : 00000000; +3f5a : 00000000; +3f5b : 00000000; +3f5c : 00000000; +3f5d : 00000000; +3f5e : 00000000; +3f5f : 00000000; +3f60 : 00000000; +3f61 : 00000000; +3f62 : 00000000; +3f63 : 00000000; +3f64 : 00000000; +3f65 : 00000000; +3f66 : 00000000; +3f67 : 00000000; +3f68 : 00000000; +3f69 : 00000000; +3f6a : 00000000; +3f6b : 00000000; +3f6c : 00000000; +3f6d : 00000000; +3f6e : 00000000; +3f6f : 00000000; +3f70 : 00000000; +3f71 : 00000000; +3f72 : 00000000; +3f73 : 00000000; +3f74 : 00000000; +3f75 : 00000000; +3f76 : 00000000; +3f77 : 00000000; +3f78 : 00000000; +3f79 : 00000000; +3f7a : 00000000; +3f7b : 00000000; +3f7c : 00000000; +3f7d : 00000000; +3f7e : 00000000; +3f7f : 00000000; +3f80 : 00000000; +3f81 : 00000000; +3f82 : 00000000; +3f83 : 00000000; +3f84 : 00000000; +3f85 : 00000000; +3f86 : 00000000; +3f87 : 00000000; +3f88 : 00000000; +3f89 : 00000000; +3f8a : 00000000; +3f8b : 00000000; +3f8c : 00000000; +3f8d : 00000000; +3f8e : 00000000; +3f8f : 00000000; +3f90 : 00000000; +3f91 : 00000000; +3f92 : 00000000; +3f93 : 00000000; +3f94 : 00000000; +3f95 : 00000000; +3f96 : 00000000; +3f97 : 00000000; +3f98 : 00000000; +3f99 : 00000000; +3f9a : 00000000; +3f9b : 00000000; +3f9c : 00000000; +3f9d : 00000000; +3f9e : 00000000; +3f9f : 00000000; +3fa0 : 00000000; +3fa1 : 00000000; +3fa2 : 00000000; +3fa3 : 00000000; +3fa4 : 00000000; +3fa5 : 00000000; +3fa6 : 00000000; +3fa7 : 00000000; +3fa8 : 00000000; +3fa9 : 00000000; +3faa : 00000000; +3fab : 00000000; +3fac : 00000000; +3fad : 00000000; +3fae : 00000000; +3faf : 00000000; +3fb0 : 00000000; +3fb1 : 00000000; +3fb2 : 00000000; +3fb3 : 00000000; +3fb4 : 00000000; +3fb5 : 00000000; +3fb6 : 00000000; +3fb7 : 00000000; +3fb8 : 00000000; +3fb9 : 00000000; +3fba : 00000000; +3fbb : 00000000; +3fbc : 00000000; +3fbd : 00000000; +3fbe : 00000000; +3fbf : 00000000; +3fc0 : 00000000; +3fc1 : 00000000; +3fc2 : 00000000; +3fc3 : 00000000; +3fc4 : 00000000; +3fc5 : 00000000; +3fc6 : 00000000; +3fc7 : 00000000; +3fc8 : 00000000; +3fc9 : 00000000; +3fca : 00000000; +3fcb : 00000000; +3fcc : 00000000; +3fcd : 00000000; +3fce : 00000000; +3fcf : 00000000; +3fd0 : 00000000; +3fd1 : 00000000; +3fd2 : 00000000; +3fd3 : 00000000; +3fd4 : 00000000; +3fd5 : 00000000; +3fd6 : 00000000; +3fd7 : 00000000; +3fd8 : 00000000; +3fd9 : 00000000; +3fda : 00000000; +3fdb : 00000000; +3fdc : 00000000; +3fdd : 00000000; +3fde : 00000000; +3fdf : 00000000; +3fe0 : 00000000; +3fe1 : 00000000; +3fe2 : 00000000; +3fe3 : 00000000; +3fe4 : 00000000; +3fe5 : 00000000; +3fe6 : 00000000; +3fe7 : 00000000; +3fe8 : 00000000; +3fe9 : 00000000; +3fea : 00000000; +3feb : 00000000; +3fec : 00000000; +3fed : 00000000; +3fee : 00000000; +3fef : 00000000; +3ff0 : 00000000; +3ff1 : 00000000; +3ff2 : 00000000; +3ff3 : 00000000; +3ff4 : 00000000; +3ff5 : 00000000; +3ff6 : 00000000; +3ff7 : 00000000; +3ff8 : 00000000; +3ff9 : 00000000; +3ffa : 00000000; +3ffb : 00000000; +3ffc : 00000000; +3ffd : 00000000; +3ffe : 00000000; +3fff : 00000000; +4000 : 00000000; +4001 : 00000000; +4002 : 00000000; +4003 : 00000000; +4004 : 00000000; +4005 : 00000000; +4006 : 00000000; +4007 : 00000000; +4008 : 00000000; +4009 : 00000000; +400a : 00000000; +400b : 00000000; +400c : 00000000; +400d : 00000000; +400e : 00000000; +400f : 00000000; +4010 : 00000000; +4011 : 00000000; +4012 : 00000000; +4013 : 00000000; +4014 : 00000000; +4015 : 00000000; +4016 : 00000000; +4017 : 00000000; +4018 : 00000000; +4019 : 00000000; +401a : 00000000; +401b : 00000000; +401c : 00000000; +401d : 00000000; +401e : 00000000; +401f : 00000000; +4020 : 00000000; +4021 : 00000000; +4022 : 00000000; +4023 : 00000000; +4024 : 00000000; +4025 : 00000000; +4026 : 00000000; +4027 : 00000000; +4028 : 00000000; +4029 : 00000000; +402a : 00000000; +402b : 00000000; +402c : 00000000; +402d : 00000000; +402e : 00000000; +402f : 00000000; +4030 : 00000000; +4031 : 00000000; +4032 : 00000000; +4033 : 00000000; +4034 : 00000000; +4035 : 00000000; +4036 : 00000000; +4037 : 00000000; +4038 : 00000000; +4039 : 00000000; +403a : 00000000; +403b : 00000000; +403c : 00000000; +403d : 00000000; +403e : 00000000; +403f : 00000000; +4040 : 00000000; +4041 : 00000000; +4042 : 00000000; +4043 : 00000000; +4044 : 00000000; +4045 : 00000000; +4046 : 00000000; +4047 : 00000000; +4048 : 00000000; +4049 : 00000000; +404a : 00000000; +404b : 00000000; +404c : 00000000; +404d : 00000000; +404e : 00000000; +404f : 00000000; +4050 : 00000000; +4051 : 00000000; +4052 : 00000000; +4053 : 00000000; +4054 : 00000000; +4055 : 00000000; +4056 : 00000000; +4057 : 00000000; +4058 : 00000000; +4059 : 00000000; +405a : 00000000; +405b : 00000000; +405c : 00000000; +405d : 00000000; +405e : 00000000; +405f : 00000000; +4060 : 00000000; +4061 : 00000000; +4062 : 00000000; +4063 : 00000000; +4064 : 00000000; +4065 : 00000000; +4066 : 00000000; +4067 : 00000000; +4068 : 00000000; +4069 : 00000000; +406a : 00000000; +406b : 00000000; +406c : 00000000; +406d : 00000000; +406e : 00000000; +406f : 00000000; +4070 : 00000000; +4071 : 00000000; +4072 : 00000000; +4073 : 00000000; +4074 : 00000000; +4075 : 00000000; +4076 : 00000000; +4077 : 00000000; +4078 : 00000000; +4079 : 00000000; +407a : 00000000; +407b : 00000000; +407c : 00000000; +407d : 00000000; +407e : 00000000; +407f : 00000000; +4080 : 00000000; +4081 : 00000000; +4082 : 00000000; +4083 : 00000000; +4084 : 00000000; +4085 : 00000000; +4086 : 00000000; +4087 : 00000000; +4088 : 00000000; +4089 : 00000000; +408a : 00000000; +408b : 00000000; +408c : 00000000; +408d : 00000000; +408e : 00000000; +408f : 00000000; +4090 : 00000000; +4091 : 00000000; +4092 : 00000000; +4093 : 00000000; +4094 : 00000000; +4095 : 00000000; +4096 : 00000000; +4097 : 00000000; +4098 : 00000000; +4099 : 00000000; +409a : 00000000; +409b : 00000000; +409c : 00000000; +409d : 00000000; +409e : 00000000; +409f : 00000000; +40a0 : 00000000; +40a1 : 00000000; +40a2 : 00000000; +40a3 : 00000000; +40a4 : 00000000; +40a5 : 00000000; +40a6 : 00000000; +40a7 : 00000000; +40a8 : 00000000; +40a9 : 00000000; +40aa : 00000000; +40ab : 00000000; +40ac : 00000000; +40ad : 00000000; +40ae : 00000000; +40af : 00000000; +40b0 : 00000000; +40b1 : 00000000; +40b2 : 00000000; +40b3 : 00000000; +40b4 : 00000000; +40b5 : 00000000; +40b6 : 00000000; +40b7 : 00000000; +40b8 : 00000000; +40b9 : 00000000; +40ba : 00000000; +40bb : 00000000; +40bc : 00000000; +40bd : 00000000; +40be : 00000000; +40bf : 00000000; +40c0 : 00000000; +40c1 : 00000000; +40c2 : 00000000; +40c3 : 00000000; +40c4 : 00000000; +40c5 : 00000000; +40c6 : 00000000; +40c7 : 00000000; +40c8 : 00000000; +40c9 : 00000000; +40ca : 00000000; +40cb : 00000000; +40cc : 00000000; +40cd : 00000000; +40ce : 00000000; +40cf : 00000000; +40d0 : 00000000; +40d1 : 00000000; +40d2 : 00000000; +40d3 : 00000000; +40d4 : 00000000; +40d5 : 00000000; +40d6 : 00000000; +40d7 : 00000000; +40d8 : 00000000; +40d9 : 00000000; +40da : 00000000; +40db : 00000000; +40dc : 00000000; +40dd : 00000000; +40de : 00000000; +40df : 00000000; +40e0 : 00000000; +40e1 : 00000000; +40e2 : 00000000; +40e3 : 00000000; +40e4 : 00000000; +40e5 : 00000000; +40e6 : 00000000; +40e7 : 00000000; +40e8 : 00000000; +40e9 : 00000000; +40ea : 00000000; +40eb : 00000000; +40ec : 00000000; +40ed : 00000000; +40ee : 00000000; +40ef : 00000000; +40f0 : 00000000; +40f1 : 00000000; +40f2 : 00000000; +40f3 : 00000000; +40f4 : 00000000; +40f5 : 00000000; +40f6 : 00000000; +40f7 : 00000000; +40f8 : 00000000; +40f9 : 00000000; +40fa : 00000000; +40fb : 00000000; +40fc : 00000000; +40fd : 00000000; +40fe : 00000000; +40ff : 00000000; +4100 : 00000000; +4101 : 00000000; +4102 : 00000000; +4103 : 00000000; +4104 : 00000000; +4105 : 00000000; +4106 : 00000000; +4107 : 00000000; +4108 : 00000000; +4109 : 00000000; +410a : 00000000; +410b : 00000000; +410c : 00000000; +410d : 00000000; +410e : 00000000; +410f : 00000000; +4110 : 00000000; +4111 : 00000000; +4112 : 00000000; +4113 : 00000000; +4114 : 00000000; +4115 : 00000000; +4116 : 00000000; +4117 : 00000000; +4118 : 00000000; +4119 : 00000000; +411a : 00000000; +411b : 00000000; +411c : 00000000; +411d : 00000000; +411e : 00000000; +411f : 00000000; +4120 : 00000000; +4121 : 00000000; +4122 : 00000000; +4123 : 00000000; +4124 : 00000000; +4125 : 00000000; +4126 : 00000000; +4127 : 00000000; +4128 : 00000000; +4129 : 00000000; +412a : 00000000; +412b : 00000000; +412c : 00000000; +412d : 00000000; +412e : 00000000; +412f : 00000000; +4130 : 00000000; +4131 : 00000000; +4132 : 00000000; +4133 : 00000000; +4134 : 00000000; +4135 : 00000000; +4136 : 00000000; +4137 : 00000000; +4138 : 00000000; +4139 : 00000000; +413a : 00000000; +413b : 00000000; +413c : 00000000; +413d : 00000000; +413e : 00000000; +413f : 00000000; +4140 : 00000000; +4141 : 00000000; +4142 : 00000000; +4143 : 00000000; +4144 : 00000000; +4145 : 00000000; +4146 : 00000000; +4147 : 00000000; +4148 : 00000000; +4149 : 00000000; +414a : 00000000; +414b : 00000000; +414c : 00000000; +414d : 00000000; +414e : 00000000; +414f : 00000000; +4150 : 00000000; +4151 : 00000000; +4152 : 00000000; +4153 : 00000000; +4154 : 00000000; +4155 : 00000000; +4156 : 00000000; +4157 : 00000000; +4158 : 00000000; +4159 : 00000000; +415a : 00000000; +415b : 00000000; +415c : 00000000; +415d : 00000000; +415e : 00000000; +415f : 00000000; +4160 : 00000000; +4161 : 00000000; +4162 : 00000000; +4163 : 00000000; +4164 : 00000000; +4165 : 00000000; +4166 : 00000000; +4167 : 00000000; +4168 : 00000000; +4169 : 00000000; +416a : 00000000; +416b : 00000000; +416c : 00000000; +416d : 00000000; +416e : 00000000; +416f : 00000000; +4170 : 00000000; +4171 : 00000000; +4172 : 00000000; +4173 : 00000000; +4174 : 00000000; +4175 : 00000000; +4176 : 00000000; +4177 : 00000000; +4178 : 00000000; +4179 : 00000000; +417a : 00000000; +417b : 00000000; +417c : 00000000; +417d : 00000000; +417e : 00000000; +417f : 00000000; +4180 : 00000000; +4181 : 00000000; +4182 : 00000000; +4183 : 00000000; +4184 : 00000000; +4185 : 00000000; +4186 : 00000000; +4187 : 00000000; +4188 : 00000000; +4189 : 00000000; +418a : 00000000; +418b : 00000000; +418c : 00000000; +418d : 00000000; +418e : 00000000; +418f : 00000000; +4190 : 00000000; +4191 : 00000000; +4192 : 00000000; +4193 : 00000000; +4194 : 00000000; +4195 : 00000000; +4196 : 00000000; +4197 : 00000000; +4198 : 00000000; +4199 : 00000000; +419a : 00000000; +419b : 00000000; +419c : 00000000; +419d : 00000000; +419e : 00000000; +419f : 00000000; +41a0 : 00000000; +41a1 : 00000000; +41a2 : 00000000; +41a3 : 00000000; +41a4 : 00000000; +41a5 : 00000000; +41a6 : 00000000; +41a7 : 00000000; +41a8 : 00000000; +41a9 : 00000000; +41aa : 00000000; +41ab : 00000000; +41ac : 00000000; +41ad : 00000000; +41ae : 00000000; +41af : 00000000; +41b0 : 00000000; +41b1 : 00000000; +41b2 : 00000000; +41b3 : 00000000; +41b4 : 00000000; +41b5 : 00000000; +41b6 : 00000000; +41b7 : 00000000; +41b8 : 00000000; +41b9 : 00000000; +41ba : 00000000; +41bb : 00000000; +41bc : 00000000; +41bd : 00000000; +41be : 00000000; +41bf : 00000000; +41c0 : 00000000; +41c1 : 00000000; +41c2 : 00000000; +41c3 : 00000000; +41c4 : 00000000; +41c5 : 00000000; +41c6 : 00000000; +41c7 : 00000000; +41c8 : 00000000; +41c9 : 00000000; +41ca : 00000000; +41cb : 00000000; +41cc : 00000000; +41cd : 00000000; +41ce : 00000000; +41cf : 00000000; +41d0 : 00000000; +41d1 : 00000000; +41d2 : 00000000; +41d3 : 00000000; +41d4 : 00000000; +41d5 : 00000000; +41d6 : 00000000; +41d7 : 00000000; +41d8 : 00000000; +41d9 : 00000000; +41da : 00000000; +41db : 00000000; +41dc : 00000000; +41dd : 00000000; +41de : 00000000; +41df : 00000000; +41e0 : 00000000; +41e1 : 00000000; +41e2 : 00000000; +41e3 : 00000000; +41e4 : 00000000; +41e5 : 00000000; +41e6 : 00000000; +41e7 : 00000000; +41e8 : 00000000; +41e9 : 00000000; +41ea : 00000000; +41eb : 00000000; +41ec : 00000000; +41ed : 00000000; +41ee : 00000000; +41ef : 00000000; +41f0 : 00000000; +41f1 : 00000000; +41f2 : 00000000; +41f3 : 00000000; +41f4 : 00000000; +41f5 : 00000000; +41f6 : 00000000; +41f7 : 00000000; +41f8 : 00000000; +41f9 : 00000000; +41fa : 00000000; +41fb : 00000000; +41fc : 00000000; +41fd : 00000000; +41fe : 00000000; +41ff : 00000000; +4200 : 00000000; +4201 : 00000000; +4202 : 00000000; +4203 : 00000000; +4204 : 00000000; +4205 : 00000000; +4206 : 00000000; +4207 : 00000000; +4208 : 00000000; +4209 : 00000000; +420a : 00000000; +420b : 00000000; +420c : 00000000; +420d : 00000000; +420e : 00000000; +420f : 00000000; +4210 : 00000000; +4211 : 00000000; +4212 : 00000000; +4213 : 00000000; +4214 : 00000000; +4215 : 00000000; +4216 : 00000000; +4217 : 00000000; +4218 : 00000000; +4219 : 00000000; +421a : 00000000; +421b : 00000000; +421c : 00000000; +421d : 00000000; +421e : 00000000; +421f : 00000000; +4220 : 00000000; +4221 : 00000000; +4222 : 00000000; +4223 : 00000000; +4224 : 00000000; +4225 : 00000000; +4226 : 00000000; +4227 : 00000000; +4228 : 00000000; +4229 : 00000000; +422a : 00000000; +422b : 00000000; +422c : 00000000; +422d : 00000000; +422e : 00000000; +422f : 00000000; +4230 : 00000000; +4231 : 00000000; +4232 : 00000000; +4233 : 00000000; +4234 : 00000000; +4235 : 00000000; +4236 : 00000000; +4237 : 00000000; +4238 : 00000000; +4239 : 00000000; +423a : 00000000; +423b : 00000000; +423c : 00000000; +423d : 00000000; +423e : 00000000; +423f : 00000000; +4240 : 00000000; +4241 : 00000000; +4242 : 00000000; +4243 : 00000000; +4244 : 00000000; +4245 : 00000000; +4246 : 00000000; +4247 : 00000000; +4248 : 00000000; +4249 : 00000000; +424a : 00000000; +424b : 00000000; +424c : 00000000; +424d : 00000000; +424e : 00000000; +424f : 00000000; +4250 : 00000000; +4251 : 00000000; +4252 : 00000000; +4253 : 00000000; +4254 : 00000000; +4255 : 00000000; +4256 : 00000000; +4257 : 00000000; +4258 : 00000000; +4259 : 00000000; +425a : 00000000; +425b : 00000000; +425c : 00000000; +425d : 00000000; +425e : 00000000; +425f : 00000000; +4260 : 00000000; +4261 : 00000000; +4262 : 00000000; +4263 : 00000000; +4264 : 00000000; +4265 : 00000000; +4266 : 00000000; +4267 : 00000000; +4268 : 00000000; +4269 : 00000000; +426a : 00000000; +426b : 00000000; +426c : 00000000; +426d : 00000000; +426e : 00000000; +426f : 00000000; +4270 : 00000000; +4271 : 00000000; +4272 : 00000000; +4273 : 00000000; +4274 : 00000000; +4275 : 00000000; +4276 : 00000000; +4277 : 00000000; +4278 : 00000000; +4279 : 00000000; +427a : 00000000; +427b : 00000000; +427c : 00000000; +427d : 00000000; +427e : 00000000; +427f : 00000000; +4280 : 00000000; +4281 : 00000000; +4282 : 00000000; +4283 : 00000000; +4284 : 00000000; +4285 : 00000000; +4286 : 00000000; +4287 : 00000000; +4288 : 00000000; +4289 : 00000000; +428a : 00000000; +428b : 00000000; +428c : 00000000; +428d : 00000000; +428e : 00000000; +428f : 00000000; +4290 : 00000000; +4291 : 00000000; +4292 : 00000000; +4293 : 00000000; +4294 : 00000000; +4295 : 00000000; +4296 : 00000000; +4297 : 00000000; +4298 : 00000000; +4299 : 00000000; +429a : 00000000; +429b : 00000000; +429c : 00000000; +429d : 00000000; +429e : 00000000; +429f : 00000000; +42a0 : 00000000; +42a1 : 00000000; +42a2 : 00000000; +42a3 : 00000000; +42a4 : 00000000; +42a5 : 00000000; +42a6 : 00000000; +42a7 : 00000000; +42a8 : 00000000; +42a9 : 00000000; +42aa : 00000000; +42ab : 00000000; +42ac : 00000000; +42ad : 00000000; +42ae : 00000000; +42af : 00000000; +42b0 : 00000000; +42b1 : 00000000; +42b2 : 00000000; +42b3 : 00000000; +42b4 : 00000000; +42b5 : 00000000; +42b6 : 00000000; +42b7 : 00000000; +42b8 : 00000000; +42b9 : 00000000; +42ba : 00000000; +42bb : 00000000; +42bc : 00000000; +42bd : 00000000; +42be : 00000000; +42bf : 00000000; +42c0 : 00000000; +42c1 : 00000000; +42c2 : 00000000; +42c3 : 00000000; +42c4 : 00000000; +42c5 : 00000000; +42c6 : 00000000; +42c7 : 00000000; +42c8 : 00000000; +42c9 : 00000000; +42ca : 00000000; +42cb : 00000000; +42cc : 00000000; +42cd : 00000000; +42ce : 00000000; +42cf : 00000000; +42d0 : 00000000; +42d1 : 00000000; +42d2 : 00000000; +42d3 : 00000000; +42d4 : 00000000; +42d5 : 00000000; +42d6 : 00000000; +42d7 : 00000000; +42d8 : 00000000; +42d9 : 00000000; +42da : 00000000; +42db : 00000000; +42dc : 00000000; +42dd : 00000000; +42de : 00000000; +42df : 00000000; +42e0 : 00000000; +42e1 : 00000000; +42e2 : 00000000; +42e3 : 00000000; +42e4 : 00000000; +42e5 : 00000000; +42e6 : 00000000; +42e7 : 00000000; +42e8 : 00000000; +42e9 : 00000000; +42ea : 00000000; +42eb : 00000000; +42ec : 00000000; +42ed : 00000000; +42ee : 00000000; +42ef : 00000000; +42f0 : 00000000; +42f1 : 00000000; +42f2 : 00000000; +42f3 : 00000000; +42f4 : 00000000; +42f5 : 00000000; +42f6 : 00000000; +42f7 : 00000000; +42f8 : 00000000; +42f9 : 00000000; +42fa : 00000000; +42fb : 00000000; +42fc : 00000000; +42fd : 00000000; +42fe : 00000000; +42ff : 00000000; +4300 : 00000000; +4301 : 00000000; +4302 : 00000000; +4303 : 00000000; +4304 : 00000000; +4305 : 00000000; +4306 : 00000000; +4307 : 00000000; +4308 : 00000000; +4309 : 00000000; +430a : 00000000; +430b : 00000000; +430c : 00000000; +430d : 00000000; +430e : 00000000; +430f : 00000000; +4310 : 00000000; +4311 : 00000000; +4312 : 00000000; +4313 : 00000000; +4314 : 00000000; +4315 : 00000000; +4316 : 00000000; +4317 : 00000000; +4318 : 00000000; +4319 : 00000000; +431a : 00000000; +431b : 00000000; +431c : 00000000; +431d : 00000000; +431e : 00000000; +431f : 00000000; +4320 : 00000000; +4321 : 00000000; +4322 : 00000000; +4323 : 00000000; +4324 : 00000000; +4325 : 00000000; +4326 : 00000000; +4327 : 00000000; +4328 : 00000000; +4329 : 00000000; +432a : 00000000; +432b : 00000000; +432c : 00000000; +432d : 00000000; +432e : 00000000; +432f : 00000000; +4330 : 00000000; +4331 : 00000000; +4332 : 00000000; +4333 : 00000000; +4334 : 00000000; +4335 : 00000000; +4336 : 00000000; +4337 : 00000000; +4338 : 00000000; +4339 : 00000000; +433a : 00000000; +433b : 00000000; +433c : 00000000; +433d : 00000000; +433e : 00000000; +433f : 00000000; +4340 : 00000000; +4341 : 00000000; +4342 : 00000000; +4343 : 00000000; +4344 : 00000000; +4345 : 00000000; +4346 : 00000000; +4347 : 00000000; +4348 : 00000000; +4349 : 00000000; +434a : 00000000; +434b : 00000000; +434c : 00000000; +434d : 00000000; +434e : 00000000; +434f : 00000000; +4350 : 00000000; +4351 : 00000000; +4352 : 00000000; +4353 : 00000000; +4354 : 00000000; +4355 : 00000000; +4356 : 00000000; +4357 : 00000000; +4358 : 00000000; +4359 : 00000000; +435a : 00000000; +435b : 00000000; +435c : 00000000; +435d : 00000000; +435e : 00000000; +435f : 00000000; +4360 : 00000000; +4361 : 00000000; +4362 : 00000000; +4363 : 00000000; +4364 : 00000000; +4365 : 00000000; +4366 : 00000000; +4367 : 00000000; +4368 : 00000000; +4369 : 00000000; +436a : 00000000; +436b : 00000000; +436c : 00000000; +436d : 00000000; +436e : 00000000; +436f : 00000000; +4370 : 00000000; +4371 : 00000000; +4372 : 00000000; +4373 : 00000000; +4374 : 00000000; +4375 : 00000000; +4376 : 00000000; +4377 : 00000000; +4378 : 00000000; +4379 : 00000000; +437a : 00000000; +437b : 00000000; +437c : 00000000; +437d : 00000000; +437e : 00000000; +437f : 00000000; +4380 : 00000000; +4381 : 00000000; +4382 : 00000000; +4383 : 00000000; +4384 : 00000000; +4385 : 00000000; +4386 : 00000000; +4387 : 00000000; +4388 : 00000000; +4389 : 00000000; +438a : 00000000; +438b : 00000000; +438c : 00000000; +438d : 00000000; +438e : 00000000; +438f : 00000000; +4390 : 00000000; +4391 : 00000000; +4392 : 00000000; +4393 : 00000000; +4394 : 00000000; +4395 : 00000000; +4396 : 00000000; +4397 : 00000000; +4398 : 00000000; +4399 : 00000000; +439a : 00000000; +439b : 00000000; +439c : 00000000; +439d : 00000000; +439e : 00000000; +439f : 00000000; +43a0 : 00000000; +43a1 : 00000000; +43a2 : 00000000; +43a3 : 00000000; +43a4 : 00000000; +43a5 : 00000000; +43a6 : 00000000; +43a7 : 00000000; +43a8 : 00000000; +43a9 : 00000000; +43aa : 00000000; +43ab : 00000000; +43ac : 00000000; +43ad : 00000000; +43ae : 00000000; +43af : 00000000; +43b0 : 00000000; +43b1 : 00000000; +43b2 : 00000000; +43b3 : 00000000; +43b4 : 00000000; +43b5 : 00000000; +43b6 : 00000000; +43b7 : 00000000; +43b8 : 00000000; +43b9 : 00000000; +43ba : 00000000; +43bb : 00000000; +43bc : 00000000; +43bd : 00000000; +43be : 00000000; +43bf : 00000000; +43c0 : 00000000; +43c1 : 00000000; +43c2 : 00000000; +43c3 : 00000000; +43c4 : 00000000; +43c5 : 00000000; +43c6 : 00000000; +43c7 : 00000000; +43c8 : 00000000; +43c9 : 00000000; +43ca : 00000000; +43cb : 00000000; +43cc : 00000000; +43cd : 00000000; +43ce : 00000000; +43cf : 00000000; +43d0 : 00000000; +43d1 : 00000000; +43d2 : 00000000; +43d3 : 00000000; +43d4 : 00000000; +43d5 : 00000000; +43d6 : 00000000; +43d7 : 00000000; +43d8 : 00000000; +43d9 : 00000000; +43da : 00000000; +43db : 00000000; +43dc : 00000000; +43dd : 00000000; +43de : 00000000; +43df : 00000000; +43e0 : 00000000; +43e1 : 00000000; +43e2 : 00000000; +43e3 : 00000000; +43e4 : 00000000; +43e5 : 00000000; +43e6 : 00000000; +43e7 : 00000000; +43e8 : 00000000; +43e9 : 00000000; +43ea : 00000000; +43eb : 00000000; +43ec : 00000000; +43ed : 00000000; +43ee : 00000000; +43ef : 00000000; +43f0 : 00000000; +43f1 : 00000000; +43f2 : 00000000; +43f3 : 00000000; +43f4 : 00000000; +43f5 : 00000000; +43f6 : 00000000; +43f7 : 00000000; +43f8 : 00000000; +43f9 : 00000000; +43fa : 00000000; +43fb : 00000000; +43fc : 00000000; +43fd : 00000000; +43fe : 00000000; +43ff : 00000000; +4400 : 00000000; +4401 : 00000000; +4402 : 00000000; +4403 : 00000000; +4404 : 00000000; +4405 : 00000000; +4406 : 00000000; +4407 : 00000000; +4408 : 00000000; +4409 : 00000000; +440a : 00000000; +440b : 00000000; +440c : 00000000; +440d : 00000000; +440e : 00000000; +440f : 00000000; +4410 : 00000000; +4411 : 00000000; +4412 : 00000000; +4413 : 00000000; +4414 : 00000000; +4415 : 00000000; +4416 : 00000000; +4417 : 00000000; +4418 : 00000000; +4419 : 00000000; +441a : 00000000; +441b : 00000000; +441c : 00000000; +441d : 00000000; +441e : 00000000; +441f : 00000000; +4420 : 00000000; +4421 : 00000000; +4422 : 00000000; +4423 : 00000000; +4424 : 00000000; +4425 : 00000000; +4426 : 00000000; +4427 : 00000000; +4428 : 00000000; +4429 : 00000000; +442a : 00000000; +442b : 00000000; +442c : 00000000; +442d : 00000000; +442e : 00000000; +442f : 00000000; +4430 : 00000000; +4431 : 00000000; +4432 : 00000000; +4433 : 00000000; +4434 : 00000000; +4435 : 00000000; +4436 : 00000000; +4437 : 00000000; +4438 : 00000000; +4439 : 00000000; +443a : 00000000; +443b : 00000000; +443c : 00000000; +443d : 00000000; +443e : 00000000; +443f : 00000000; +4440 : 00000000; +4441 : 00000000; +4442 : 00000000; +4443 : 00000000; +4444 : 00000000; +4445 : 00000000; +4446 : 00000000; +4447 : 00000000; +4448 : 00000000; +4449 : 00000000; +444a : 00000000; +444b : 00000000; +444c : 00000000; +444d : 00000000; +444e : 00000000; +444f : 00000000; +4450 : 00000000; +4451 : 00000000; +4452 : 00000000; +4453 : 00000000; +4454 : 00000000; +4455 : 00000000; +4456 : 00000000; +4457 : 00000000; +4458 : 00000000; +4459 : 00000000; +445a : 00000000; +445b : 00000000; +445c : 00000000; +445d : 00000000; +445e : 00000000; +445f : 00000000; +4460 : 00000000; +4461 : 00000000; +4462 : 00000000; +4463 : 00000000; +4464 : 00000000; +4465 : 00000000; +4466 : 00000000; +4467 : 00000000; +4468 : 00000000; +4469 : 00000000; +446a : 00000000; +446b : 00000000; +446c : 00000000; +446d : 00000000; +446e : 00000000; +446f : 00000000; +4470 : 00000000; +4471 : 00000000; +4472 : 00000000; +4473 : 00000000; +4474 : 00000000; +4475 : 00000000; +4476 : 00000000; +4477 : 00000000; +4478 : 00000000; +4479 : 00000000; +447a : 00000000; +447b : 00000000; +447c : 00000000; +447d : 00000000; +447e : 00000000; +447f : 00000000; +4480 : 00000000; +4481 : 00000000; +4482 : 00000000; +4483 : 00000000; +4484 : 00000000; +4485 : 00000000; +4486 : 00000000; +4487 : 00000000; +4488 : 00000000; +4489 : 00000000; +448a : 00000000; +448b : 00000000; +448c : 00000000; +448d : 00000000; +448e : 00000000; +448f : 00000000; +4490 : 00000000; +4491 : 00000000; +4492 : 00000000; +4493 : 00000000; +4494 : 00000000; +4495 : 00000000; +4496 : 00000000; +4497 : 00000000; +4498 : 00000000; +4499 : 00000000; +449a : 00000000; +449b : 00000000; +449c : 00000000; +449d : 00000000; +449e : 00000000; +449f : 00000000; +44a0 : 00000000; +44a1 : 00000000; +44a2 : 00000000; +44a3 : 00000000; +44a4 : 00000000; +44a5 : 00000000; +44a6 : 00000000; +44a7 : 00000000; +44a8 : 00000000; +44a9 : 00000000; +44aa : 00000000; +44ab : 00000000; +44ac : 00000000; +44ad : 00000000; +44ae : 00000000; +44af : 00000000; +44b0 : 00000000; +44b1 : 00000000; +44b2 : 00000000; +44b3 : 00000000; +44b4 : 00000000; +44b5 : 00000000; +44b6 : 00000000; +44b7 : 00000000; +44b8 : 00000000; +44b9 : 00000000; +44ba : 00000000; +44bb : 00000000; +44bc : 00000000; +44bd : 00000000; +44be : 00000000; +44bf : 00000000; +44c0 : 00000000; +44c1 : 00000000; +44c2 : 00000000; +44c3 : 00000000; +44c4 : 00000000; +44c5 : 00000000; +44c6 : 00000000; +44c7 : 00000000; +44c8 : 00000000; +44c9 : 00000000; +44ca : 00000000; +44cb : 00000000; +44cc : 00000000; +44cd : 00000000; +44ce : 00000000; +44cf : 00000000; +44d0 : 00000000; +44d1 : 00000000; +44d2 : 00000000; +44d3 : 00000000; +44d4 : 00000000; +44d5 : 00000000; +44d6 : 00000000; +44d7 : 00000000; +44d8 : 00000000; +44d9 : 00000000; +44da : 00000000; +44db : 00000000; +44dc : 00000000; +44dd : 00000000; +44de : 00000000; +44df : 00000000; +44e0 : 00000000; +44e1 : 00000000; +44e2 : 00000000; +44e3 : 00000000; +44e4 : 00000000; +44e5 : 00000000; +44e6 : 00000000; +44e7 : 00000000; +44e8 : 00000000; +44e9 : 00000000; +44ea : 00000000; +44eb : 00000000; +44ec : 00000000; +44ed : 00000000; +44ee : 00000000; +44ef : 00000000; +44f0 : 00000000; +44f1 : 00000000; +44f2 : 00000000; +44f3 : 00000000; +44f4 : 00000000; +44f5 : 00000000; +44f6 : 00000000; +44f7 : 00000000; +44f8 : 00000000; +44f9 : 00000000; +44fa : 00000000; +44fb : 00000000; +44fc : 00000000; +44fd : 00000000; +44fe : 00000000; +44ff : 00000000; +4500 : 00000000; +4501 : 00000000; +4502 : 00000000; +4503 : 00000000; +4504 : 00000000; +4505 : 00000000; +4506 : 00000000; +4507 : 00000000; +4508 : 00000000; +4509 : 00000000; +450a : 00000000; +450b : 00000000; +450c : 00000000; +450d : 00000000; +450e : 00000000; +450f : 00000000; +4510 : 00000000; +4511 : 00000000; +4512 : 00000000; +4513 : 00000000; +4514 : 00000000; +4515 : 00000000; +4516 : 00000000; +4517 : 00000000; +4518 : 00000000; +4519 : 00000000; +451a : 00000000; +451b : 00000000; +451c : 00000000; +451d : 00000000; +451e : 00000000; +451f : 00000000; +4520 : 00000000; +4521 : 00000000; +4522 : 00000000; +4523 : 00000000; +4524 : 00000000; +4525 : 00000000; +4526 : 00000000; +4527 : 00000000; +4528 : 00000000; +4529 : 00000000; +452a : 00000000; +452b : 00000000; +452c : 00000000; +452d : 00000000; +452e : 00000000; +452f : 00000000; +4530 : 00000000; +4531 : 00000000; +4532 : 00000000; +4533 : 00000000; +4534 : 00000000; +4535 : 00000000; +4536 : 00000000; +4537 : 00000000; +4538 : 00000000; +4539 : 00000000; +453a : 00000000; +453b : 00000000; +453c : 00000000; +453d : 00000000; +453e : 00000000; +453f : 00000000; +4540 : 00000000; +4541 : 00000000; +4542 : 00000000; +4543 : 00000000; +4544 : 00000000; +4545 : 00000000; +4546 : 00000000; +4547 : 00000000; +4548 : 00000000; +4549 : 00000000; +454a : 00000000; +454b : 00000000; +454c : 00000000; +454d : 00000000; +454e : 00000000; +454f : 00000000; +4550 : 00000000; +4551 : 00000000; +4552 : 00000000; +4553 : 00000000; +4554 : 00000000; +4555 : 00000000; +4556 : 00000000; +4557 : 00000000; +4558 : 00000000; +4559 : 00000000; +455a : 00000000; +455b : 00000000; +455c : 00000000; +455d : 00000000; +455e : 00000000; +455f : 00000000; +4560 : 00000000; +4561 : 00000000; +4562 : 00000000; +4563 : 00000000; +4564 : 00000000; +4565 : 00000000; +4566 : 00000000; +4567 : 00000000; +4568 : 00000000; +4569 : 00000000; +456a : 00000000; +456b : 00000000; +456c : 00000000; +456d : 00000000; +456e : 00000000; +456f : 00000000; +4570 : 00000000; +4571 : 00000000; +4572 : 00000000; +4573 : 00000000; +4574 : 00000000; +4575 : 00000000; +4576 : 00000000; +4577 : 00000000; +4578 : 00000000; +4579 : 00000000; +457a : 00000000; +457b : 00000000; +457c : 00000000; +457d : 00000000; +457e : 00000000; +457f : 00000000; +4580 : 00000000; +4581 : 00000000; +4582 : 00000000; +4583 : 00000000; +4584 : 00000000; +4585 : 00000000; +4586 : 00000000; +4587 : 00000000; +4588 : 00000000; +4589 : 00000000; +458a : 00000000; +458b : 00000000; +458c : 00000000; +458d : 00000000; +458e : 00000000; +458f : 00000000; +4590 : 00000000; +4591 : 00000000; +4592 : 00000000; +4593 : 00000000; +4594 : 00000000; +4595 : 00000000; +4596 : 00000000; +4597 : 00000000; +4598 : 00000000; +4599 : 00000000; +459a : 00000000; +459b : 00000000; +459c : 00000000; +459d : 00000000; +459e : 00000000; +459f : 00000000; +45a0 : 00000000; +45a1 : 00000000; +45a2 : 00000000; +45a3 : 00000000; +45a4 : 00000000; +45a5 : 00000000; +45a6 : 00000000; +45a7 : 00000000; +45a8 : 00000000; +45a9 : 00000000; +45aa : 00000000; +45ab : 00000000; +45ac : 00000000; +45ad : 00000000; +45ae : 00000000; +45af : 00000000; +45b0 : 00000000; +45b1 : 00000000; +45b2 : 00000000; +45b3 : 00000000; +45b4 : 00000000; +45b5 : 00000000; +45b6 : 00000000; +45b7 : 00000000; +45b8 : 00000000; +45b9 : 00000000; +45ba : 00000000; +45bb : 00000000; +45bc : 00000000; +45bd : 00000000; +45be : 00000000; +45bf : 00000000; +45c0 : 00000000; +45c1 : 00000000; +45c2 : 00000000; +45c3 : 00000000; +45c4 : 00000000; +45c5 : 00000000; +45c6 : 00000000; +45c7 : 00000000; +45c8 : 00000000; +45c9 : 00000000; +45ca : 00000000; +45cb : 00000000; +45cc : 00000000; +45cd : 00000000; +45ce : 00000000; +45cf : 00000000; +45d0 : 00000000; +45d1 : 00000000; +45d2 : 00000000; +45d3 : 00000000; +45d4 : 00000000; +45d5 : 00000000; +45d6 : 00000000; +45d7 : 00000000; +45d8 : 00000000; +45d9 : 00000000; +45da : 00000000; +45db : 00000000; +45dc : 00000000; +45dd : 00000000; +45de : 00000000; +45df : 00000000; +45e0 : 00000000; +45e1 : 00000000; +45e2 : 00000000; +45e3 : 00000000; +45e4 : 00000000; +45e5 : 00000000; +45e6 : 00000000; +45e7 : 00000000; +45e8 : 00000000; +45e9 : 00000000; +45ea : 00000000; +45eb : 00000000; +45ec : 00000000; +45ed : 00000000; +45ee : 00000000; +45ef : 00000000; +45f0 : 00000000; +45f1 : 00000000; +45f2 : 00000000; +45f3 : 00000000; +45f4 : 00000000; +45f5 : 00000000; +45f6 : 00000000; +45f7 : 00000000; +45f8 : 00000000; +45f9 : 00000000; +45fa : 00000000; +45fb : 00000000; +45fc : 00000000; +45fd : 00000000; +45fe : 00000000; +45ff : 00000000; +4600 : 00000000; +4601 : 00000000; +4602 : 00000000; +4603 : 00000000; +4604 : 00000000; +4605 : 00000000; +4606 : 00000000; +4607 : 00000000; +4608 : 00000000; +4609 : 00000000; +460a : 00000000; +460b : 00000000; +460c : 00000000; +460d : 00000000; +460e : 00000000; +460f : 00000000; +4610 : 00000000; +4611 : 00000000; +4612 : 00000000; +4613 : 00000000; +4614 : 00000000; +4615 : 00000000; +4616 : 00000000; +4617 : 00000000; +4618 : 00000000; +4619 : 00000000; +461a : 00000000; +461b : 00000000; +461c : 00000000; +461d : 00000000; +461e : 00000000; +461f : 00000000; +4620 : 00000000; +4621 : 00000000; +4622 : 00000000; +4623 : 00000000; +4624 : 00000000; +4625 : 00000000; +4626 : 00000000; +4627 : 00000000; +4628 : 00000000; +4629 : 00000000; +462a : 00000000; +462b : 00000000; +462c : 00000000; +462d : 00000000; +462e : 00000000; +462f : 00000000; +4630 : 00000000; +4631 : 00000000; +4632 : 00000000; +4633 : 00000000; +4634 : 00000000; +4635 : 00000000; +4636 : 00000000; +4637 : 00000000; +4638 : 00000000; +4639 : 00000000; +463a : 00000000; +463b : 00000000; +463c : 00000000; +463d : 00000000; +463e : 00000000; +463f : 00000000; +4640 : 00000000; +4641 : 00000000; +4642 : 00000000; +4643 : 00000000; +4644 : 00000000; +4645 : 00000000; +4646 : 00000000; +4647 : 00000000; +4648 : 00000000; +4649 : 00000000; +464a : 00000000; +464b : 00000000; +464c : 00000000; +464d : 00000000; +464e : 00000000; +464f : 00000000; +4650 : 00000000; +4651 : 00000000; +4652 : 00000000; +4653 : 00000000; +4654 : 00000000; +4655 : 00000000; +4656 : 00000000; +4657 : 00000000; +4658 : 00000000; +4659 : 00000000; +465a : 00000000; +465b : 00000000; +465c : 00000000; +465d : 00000000; +465e : 00000000; +465f : 00000000; +4660 : 00000000; +4661 : 00000000; +4662 : 00000000; +4663 : 00000000; +4664 : 00000000; +4665 : 00000000; +4666 : 00000000; +4667 : 00000000; +4668 : 00000000; +4669 : 00000000; +466a : 00000000; +466b : 00000000; +466c : 00000000; +466d : 00000000; +466e : 00000000; +466f : 00000000; +4670 : 00000000; +4671 : 00000000; +4672 : 00000000; +4673 : 00000000; +4674 : 00000000; +4675 : 00000000; +4676 : 00000000; +4677 : 00000000; +4678 : 00000000; +4679 : 00000000; +467a : 00000000; +467b : 00000000; +467c : 00000000; +467d : 00000000; +467e : 00000000; +467f : 00000000; +4680 : 00000000; +4681 : 00000000; +4682 : 00000000; +4683 : 00000000; +4684 : 00000000; +4685 : 00000000; +4686 : 00000000; +4687 : 00000000; +4688 : 00000000; +4689 : 00000000; +468a : 00000000; +468b : 00000000; +468c : 00000000; +468d : 00000000; +468e : 00000000; +468f : 00000000; +4690 : 00000000; +4691 : 00000000; +4692 : 00000000; +4693 : 00000000; +4694 : 00000000; +4695 : 00000000; +4696 : 00000000; +4697 : 00000000; +4698 : 00000000; +4699 : 00000000; +469a : 00000000; +469b : 00000000; +469c : 00000000; +469d : 00000000; +469e : 00000000; +469f : 00000000; +46a0 : 00000000; +46a1 : 00000000; +46a2 : 00000000; +46a3 : 00000000; +46a4 : 00000000; +46a5 : 00000000; +46a6 : 00000000; +46a7 : 00000000; +46a8 : 00000000; +46a9 : 00000000; +46aa : 00000000; +46ab : 00000000; +46ac : 00000000; +46ad : 00000000; +46ae : 00000000; +46af : 00000000; +46b0 : 00000000; +46b1 : 00000000; +46b2 : 00000000; +46b3 : 00000000; +46b4 : 00000000; +46b5 : 00000000; +46b6 : 00000000; +46b7 : 00000000; +46b8 : 00000000; +46b9 : 00000000; +46ba : 00000000; +46bb : 00000000; +46bc : 00000000; +46bd : 00000000; +46be : 00000000; +46bf : 00000000; +46c0 : 00000000; +46c1 : 00000000; +46c2 : 00000000; +46c3 : 00000000; +46c4 : 00000000; +46c5 : 00000000; +46c6 : 00000000; +46c7 : 00000000; +46c8 : 00000000; +46c9 : 00000000; +46ca : 00000000; +46cb : 00000000; +46cc : 00000000; +46cd : 00000000; +46ce : 00000000; +46cf : 00000000; +46d0 : 00000000; +46d1 : 00000000; +46d2 : 00000000; +46d3 : 00000000; +46d4 : 00000000; +46d5 : 00000000; +46d6 : 00000000; +46d7 : 00000000; +46d8 : 00000000; +46d9 : 00000000; +46da : 00000000; +46db : 00000000; +46dc : 00000000; +46dd : 00000000; +46de : 00000000; +46df : 00000000; +46e0 : 00000000; +46e1 : 00000000; +46e2 : 00000000; +46e3 : 00000000; +46e4 : 00000000; +46e5 : 00000000; +46e6 : 00000000; +46e7 : 00000000; +46e8 : 00000000; +46e9 : 00000000; +46ea : 00000000; +46eb : 00000000; +46ec : 00000000; +46ed : 00000000; +46ee : 00000000; +46ef : 00000000; +46f0 : 00000000; +46f1 : 00000000; +46f2 : 00000000; +46f3 : 00000000; +46f4 : 00000000; +46f5 : 00000000; +46f6 : 00000000; +46f7 : 00000000; +46f8 : 00000000; +46f9 : 00000000; +46fa : 00000000; +46fb : 00000000; +46fc : 00000000; +46fd : 00000000; +46fe : 00000000; +46ff : 00000000; +4700 : 00000000; +4701 : 00000000; +4702 : 00000000; +4703 : 00000000; +4704 : 00000000; +4705 : 00000000; +4706 : 00000000; +4707 : 00000000; +4708 : 00000000; +4709 : 00000000; +470a : 00000000; +470b : 00000000; +470c : 00000000; +470d : 00000000; +470e : 00000000; +470f : 00000000; +4710 : 00000000; +4711 : 00000000; +4712 : 00000000; +4713 : 00000000; +4714 : 00000000; +4715 : 00000000; +4716 : 00000000; +4717 : 00000000; +4718 : 00000000; +4719 : 00000000; +471a : 00000000; +471b : 00000000; +471c : 00000000; +471d : 00000000; +471e : 00000000; +471f : 00000000; +4720 : 00000000; +4721 : 00000000; +4722 : 00000000; +4723 : 00000000; +4724 : 00000000; +4725 : 00000000; +4726 : 00000000; +4727 : 00000000; +4728 : 00000000; +4729 : 00000000; +472a : 00000000; +472b : 00000000; +472c : 00000000; +472d : 00000000; +472e : 00000000; +472f : 00000000; +4730 : 00000000; +4731 : 00000000; +4732 : 00000000; +4733 : 00000000; +4734 : 00000000; +4735 : 00000000; +4736 : 00000000; +4737 : 00000000; +4738 : 00000000; +4739 : 00000000; +473a : 00000000; +473b : 00000000; +473c : 00000000; +473d : 00000000; +473e : 00000000; +473f : 00000000; +4740 : 00000000; +4741 : 00000000; +4742 : 00000000; +4743 : 00000000; +4744 : 00000000; +4745 : 00000000; +4746 : 00000000; +4747 : 00000000; +4748 : 00000000; +4749 : 00000000; +474a : 00000000; +474b : 00000000; +474c : 00000000; +474d : 00000000; +474e : 00000000; +474f : 00000000; +4750 : 00000000; +4751 : 00000000; +4752 : 00000000; +4753 : 00000000; +4754 : 00000000; +4755 : 00000000; +4756 : 00000000; +4757 : 00000000; +4758 : 00000000; +4759 : 00000000; +475a : 00000000; +475b : 00000000; +475c : 00000000; +475d : 00000000; +475e : 00000000; +475f : 00000000; +4760 : 00000000; +4761 : 00000000; +4762 : 00000000; +4763 : 00000000; +4764 : 00000000; +4765 : 00000000; +4766 : 00000000; +4767 : 00000000; +4768 : 00000000; +4769 : 00000000; +476a : 00000000; +476b : 00000000; +476c : 00000000; +476d : 00000000; +476e : 00000000; +476f : 00000000; +4770 : 00000000; +4771 : 00000000; +4772 : 00000000; +4773 : 00000000; +4774 : 00000000; +4775 : 00000000; +4776 : 00000000; +4777 : 00000000; +4778 : 00000000; +4779 : 00000000; +477a : 00000000; +477b : 00000000; +477c : 00000000; +477d : 00000000; +477e : 00000000; +477f : 00000000; +4780 : 00000000; +4781 : 00000000; +4782 : 00000000; +4783 : 00000000; +4784 : 00000000; +4785 : 00000000; +4786 : 00000000; +4787 : 00000000; +4788 : 00000000; +4789 : 00000000; +478a : 00000000; +478b : 00000000; +478c : 00000000; +478d : 00000000; +478e : 00000000; +478f : 00000000; +4790 : 00000000; +4791 : 00000000; +4792 : 00000000; +4793 : 00000000; +4794 : 00000000; +4795 : 00000000; +4796 : 00000000; +4797 : 00000000; +4798 : 00000000; +4799 : 00000000; +479a : 00000000; +479b : 00000000; +479c : 00000000; +479d : 00000000; +479e : 00000000; +479f : 00000000; +47a0 : 00000000; +47a1 : 00000000; +47a2 : 00000000; +47a3 : 00000000; +47a4 : 00000000; +47a5 : 00000000; +47a6 : 00000000; +47a7 : 00000000; +47a8 : 00000000; +47a9 : 00000000; +47aa : 00000000; +47ab : 00000000; +47ac : 00000000; +47ad : 00000000; +47ae : 00000000; +47af : 00000000; +47b0 : 00000000; +47b1 : 00000000; +47b2 : 00000000; +47b3 : 00000000; +47b4 : 00000000; +47b5 : 00000000; +47b6 : 00000000; +47b7 : 00000000; +47b8 : 00000000; +47b9 : 00000000; +47ba : 00000000; +47bb : 00000000; +47bc : 00000000; +47bd : 00000000; +47be : 00000000; +47bf : 00000000; +47c0 : 00000000; +47c1 : 00000000; +47c2 : 00000000; +47c3 : 00000000; +47c4 : 00000000; +47c5 : 00000000; +47c6 : 00000000; +47c7 : 00000000; +47c8 : 00000000; +47c9 : 00000000; +47ca : 00000000; +47cb : 00000000; +47cc : 00000000; +47cd : 00000000; +47ce : 00000000; +47cf : 00000000; +47d0 : 00000000; +47d1 : 00000000; +47d2 : 00000000; +47d3 : 00000000; +47d4 : 00000000; +47d5 : 00000000; +47d6 : 00000000; +47d7 : 00000000; +47d8 : 00000000; +47d9 : 00000000; +47da : 00000000; +47db : 00000000; +47dc : 00000000; +47dd : 00000000; +47de : 00000000; +47df : 00000000; +47e0 : 00000000; +47e1 : 00000000; +47e2 : 00000000; +47e3 : 00000000; +47e4 : 00000000; +47e5 : 00000000; +47e6 : 00000000; +47e7 : 00000000; +47e8 : 00000000; +47e9 : 00000000; +47ea : 00000000; +47eb : 00000000; +47ec : 00000000; +47ed : 00000000; +47ee : 00000000; +47ef : 00000000; +47f0 : 00000000; +47f1 : 00000000; +47f2 : 00000000; +47f3 : 00000000; +47f4 : 00000000; +47f5 : 00000000; +47f6 : 00000000; +47f7 : 00000000; +47f8 : 00000000; +47f9 : 00000000; +47fa : 00000000; +47fb : 00000000; +47fc : 00000000; +47fd : 00000000; +47fe : 00000000; +47ff : 00000000; +4800 : 00000000; +4801 : 00000000; +4802 : 00000000; +4803 : 00000000; +4804 : 00000000; +4805 : 00000000; +4806 : 00000000; +4807 : 00000000; +4808 : 00000000; +4809 : 00000000; +480a : 00000000; +480b : 00000000; +480c : 00000000; +480d : 00000000; +480e : 00000000; +480f : 00000000; +4810 : 00000000; +4811 : 00000000; +4812 : 00000000; +4813 : 00000000; +4814 : 00000000; +4815 : 00000000; +4816 : 00000000; +4817 : 00000000; +4818 : 00000000; +4819 : 00000000; +481a : 00000000; +481b : 00000000; +481c : 00000000; +481d : 00000000; +481e : 00000000; +481f : 00000000; +4820 : 00000000; +4821 : 00000000; +4822 : 00000000; +4823 : 00000000; +4824 : 00000000; +4825 : 00000000; +4826 : 00000000; +4827 : 00000000; +4828 : 00000000; +4829 : 00000000; +482a : 00000000; +482b : 00000000; +482c : 00000000; +482d : 00000000; +482e : 00000000; +482f : 00000000; +4830 : 00000000; +4831 : 00000000; +4832 : 00000000; +4833 : 00000000; +4834 : 00000000; +4835 : 00000000; +4836 : 00000000; +4837 : 00000000; +4838 : 00000000; +4839 : 00000000; +483a : 00000000; +483b : 00000000; +483c : 00000000; +483d : 00000000; +483e : 00000000; +483f : 00000000; +4840 : 00000000; +4841 : 00000000; +4842 : 00000000; +4843 : 00000000; +4844 : 00000000; +4845 : 00000000; +4846 : 00000000; +4847 : 00000000; +4848 : 00000000; +4849 : 00000000; +484a : 00000000; +484b : 00000000; +484c : 00000000; +484d : 00000000; +484e : 00000000; +484f : 00000000; +4850 : 00000000; +4851 : 00000000; +4852 : 00000000; +4853 : 00000000; +4854 : 00000000; +4855 : 00000000; +4856 : 00000000; +4857 : 00000000; +4858 : 00000000; +4859 : 00000000; +485a : 00000000; +485b : 00000000; +485c : 00000000; +485d : 00000000; +485e : 00000000; +485f : 00000000; +4860 : 00000000; +4861 : 00000000; +4862 : 00000000; +4863 : 00000000; +4864 : 00000000; +4865 : 00000000; +4866 : 00000000; +4867 : 00000000; +4868 : 00000000; +4869 : 00000000; +486a : 00000000; +486b : 00000000; +486c : 00000000; +486d : 00000000; +486e : 00000000; +486f : 00000000; +4870 : 00000000; +4871 : 00000000; +4872 : 00000000; +4873 : 00000000; +4874 : 00000000; +4875 : 00000000; +4876 : 00000000; +4877 : 00000000; +4878 : 00000000; +4879 : 00000000; +487a : 00000000; +487b : 00000000; +487c : 00000000; +487d : 00000000; +487e : 00000000; +487f : 00000000; +4880 : 00000000; +4881 : 00000000; +4882 : 00000000; +4883 : 00000000; +4884 : 00000000; +4885 : 00000000; +4886 : 00000000; +4887 : 00000000; +4888 : 00000000; +4889 : 00000000; +488a : 00000000; +488b : 00000000; +488c : 00000000; +488d : 00000000; +488e : 00000000; +488f : 00000000; +4890 : 00000000; +4891 : 00000000; +4892 : 00000000; +4893 : 00000000; +4894 : 00000000; +4895 : 00000000; +4896 : 00000000; +4897 : 00000000; +4898 : 00000000; +4899 : 00000000; +489a : 00000000; +489b : 00000000; +489c : 00000000; +489d : 00000000; +489e : 00000000; +489f : 00000000; +48a0 : 00000000; +48a1 : 00000000; +48a2 : 00000000; +48a3 : 00000000; +48a4 : 00000000; +48a5 : 00000000; +48a6 : 00000000; +48a7 : 00000000; +48a8 : 00000000; +48a9 : 00000000; +48aa : 00000000; +48ab : 00000000; +48ac : 00000000; +48ad : 00000000; +48ae : 00000000; +48af : 00000000; +48b0 : 00000000; +48b1 : 00000000; +48b2 : 00000000; +48b3 : 00000000; +48b4 : 00000000; +48b5 : 00000000; +48b6 : 00000000; +48b7 : 00000000; +48b8 : 00000000; +48b9 : 00000000; +48ba : 00000000; +48bb : 00000000; +48bc : 00000000; +48bd : 00000000; +48be : 00000000; +48bf : 00000000; +48c0 : 00000000; +48c1 : 00000000; +48c2 : 00000000; +48c3 : 00000000; +48c4 : 00000000; +48c5 : 00000000; +48c6 : 00000000; +48c7 : 00000000; +48c8 : 00000000; +48c9 : 00000000; +48ca : 00000000; +48cb : 00000000; +48cc : 00000000; +48cd : 00000000; +48ce : 00000000; +48cf : 00000000; +48d0 : 00000000; +48d1 : 00000000; +48d2 : 00000000; +48d3 : 00000000; +48d4 : 00000000; +48d5 : 00000000; +48d6 : 00000000; +48d7 : 00000000; +48d8 : 00000000; +48d9 : 00000000; +48da : 00000000; +48db : 00000000; +48dc : 00000000; +48dd : 00000000; +48de : 00000000; +48df : 00000000; +48e0 : 00000000; +48e1 : 00000000; +48e2 : 00000000; +48e3 : 00000000; +48e4 : 00000000; +48e5 : 00000000; +48e6 : 00000000; +48e7 : 00000000; +48e8 : 00000000; +48e9 : 00000000; +48ea : 00000000; +48eb : 00000000; +48ec : 00000000; +48ed : 00000000; +48ee : 00000000; +48ef : 00000000; +48f0 : 00000000; +48f1 : 00000000; +48f2 : 00000000; +48f3 : 00000000; +48f4 : 00000000; +48f5 : 00000000; +48f6 : 00000000; +48f7 : 00000000; +48f8 : 00000000; +48f9 : 00000000; +48fa : 00000000; +48fb : 00000000; +48fc : 00000000; +48fd : 00000000; +48fe : 00000000; +48ff : 00000000; +4900 : 00000000; +4901 : 00000000; +4902 : 00000000; +4903 : 00000000; +4904 : 00000000; +4905 : 00000000; +4906 : 00000000; +4907 : 00000000; +4908 : 00000000; +4909 : 00000000; +490a : 00000000; +490b : 00000000; +490c : 00000000; +490d : 00000000; +490e : 00000000; +490f : 00000000; +4910 : 00000000; +4911 : 00000000; +4912 : 00000000; +4913 : 00000000; +4914 : 00000000; +4915 : 00000000; +4916 : 00000000; +4917 : 00000000; +4918 : 00000000; +4919 : 00000000; +491a : 00000000; +491b : 00000000; +491c : 00000000; +491d : 00000000; +491e : 00000000; +491f : 00000000; +4920 : 00000000; +4921 : 00000000; +4922 : 00000000; +4923 : 00000000; +4924 : 00000000; +4925 : 00000000; +4926 : 00000000; +4927 : 00000000; +4928 : 00000000; +4929 : 00000000; +492a : 00000000; +492b : 00000000; +492c : 00000000; +492d : 00000000; +492e : 00000000; +492f : 00000000; +4930 : 00000000; +4931 : 00000000; +4932 : 00000000; +4933 : 00000000; +4934 : 00000000; +4935 : 00000000; +4936 : 00000000; +4937 : 00000000; +4938 : 00000000; +4939 : 00000000; +493a : 00000000; +493b : 00000000; +493c : 00000000; +493d : 00000000; +493e : 00000000; +493f : 00000000; +4940 : 00000000; +4941 : 00000000; +4942 : 00000000; +4943 : 00000000; +4944 : 00000000; +4945 : 00000000; +4946 : 00000000; +4947 : 00000000; +4948 : 00000000; +4949 : 00000000; +494a : 00000000; +494b : 00000000; +494c : 00000000; +494d : 00000000; +494e : 00000000; +494f : 00000000; +4950 : 00000000; +4951 : 00000000; +4952 : 00000000; +4953 : 00000000; +4954 : 00000000; +4955 : 00000000; +4956 : 00000000; +4957 : 00000000; +4958 : 00000000; +4959 : 00000000; +495a : 00000000; +495b : 00000000; +495c : 00000000; +495d : 00000000; +495e : 00000000; +495f : 00000000; +4960 : 00000000; +4961 : 00000000; +4962 : 00000000; +4963 : 00000000; +4964 : 00000000; +4965 : 00000000; +4966 : 00000000; +4967 : 00000000; +4968 : 00000000; +4969 : 00000000; +496a : 00000000; +496b : 00000000; +496c : 00000000; +496d : 00000000; +496e : 00000000; +496f : 00000000; +4970 : 00000000; +4971 : 00000000; +4972 : 00000000; +4973 : 00000000; +4974 : 00000000; +4975 : 00000000; +4976 : 00000000; +4977 : 00000000; +4978 : 00000000; +4979 : 00000000; +497a : 00000000; +497b : 00000000; +497c : 00000000; +497d : 00000000; +497e : 00000000; +497f : 00000000; +4980 : 00000000; +4981 : 00000000; +4982 : 00000000; +4983 : 00000000; +4984 : 00000000; +4985 : 00000000; +4986 : 00000000; +4987 : 00000000; +4988 : 00000000; +4989 : 00000000; +498a : 00000000; +498b : 00000000; +498c : 00000000; +498d : 00000000; +498e : 00000000; +498f : 00000000; +4990 : 00000000; +4991 : 00000000; +4992 : 00000000; +4993 : 00000000; +4994 : 00000000; +4995 : 00000000; +4996 : 00000000; +4997 : 00000000; +4998 : 00000000; +4999 : 00000000; +499a : 00000000; +499b : 00000000; +499c : 00000000; +499d : 00000000; +499e : 00000000; +499f : 00000000; +49a0 : 00000000; +49a1 : 00000000; +49a2 : 00000000; +49a3 : 00000000; +49a4 : 00000000; +49a5 : 00000000; +49a6 : 00000000; +49a7 : 00000000; +49a8 : 00000000; +49a9 : 00000000; +49aa : 00000000; +49ab : 00000000; +49ac : 00000000; +49ad : 00000000; +49ae : 00000000; +49af : 00000000; +49b0 : 00000000; +49b1 : 00000000; +49b2 : 00000000; +49b3 : 00000000; +49b4 : 00000000; +49b5 : 00000000; +49b6 : 00000000; +49b7 : 00000000; +49b8 : 00000000; +49b9 : 00000000; +49ba : 00000000; +49bb : 00000000; +49bc : 00000000; +49bd : 00000000; +49be : 00000000; +49bf : 00000000; +49c0 : 00000000; +49c1 : 00000000; +49c2 : 00000000; +49c3 : 00000000; +49c4 : 00000000; +49c5 : 00000000; +49c6 : 00000000; +49c7 : 00000000; +49c8 : 00000000; +49c9 : 00000000; +49ca : 00000000; +49cb : 00000000; +49cc : 00000000; +49cd : 00000000; +49ce : 00000000; +49cf : 00000000; +49d0 : 00000000; +49d1 : 00000000; +49d2 : 00000000; +49d3 : 00000000; +49d4 : 00000000; +49d5 : 00000000; +49d6 : 00000000; +49d7 : 00000000; +49d8 : 00000000; +49d9 : 00000000; +49da : 00000000; +49db : 00000000; +49dc : 00000000; +49dd : 00000000; +49de : 00000000; +49df : 00000000; +49e0 : 00000000; +49e1 : 00000000; +49e2 : 00000000; +49e3 : 00000000; +49e4 : 00000000; +49e5 : 00000000; +49e6 : 00000000; +49e7 : 00000000; +49e8 : 00000000; +49e9 : 00000000; +49ea : 00000000; +49eb : 00000000; +49ec : 00000000; +49ed : 00000000; +49ee : 00000000; +49ef : 00000000; +49f0 : 00000000; +49f1 : 00000000; +49f2 : 00000000; +49f3 : 00000000; +49f4 : 00000000; +49f5 : 00000000; +49f6 : 00000000; +49f7 : 00000000; +49f8 : 00000000; +49f9 : 00000000; +49fa : 00000000; +49fb : 00000000; +49fc : 00000000; +49fd : 00000000; +49fe : 00000000; +49ff : 00000000; +4a00 : 00000000; +4a01 : 00000000; +4a02 : 00000000; +4a03 : 00000000; +4a04 : 00000000; +4a05 : 00000000; +4a06 : 00000000; +4a07 : 00000000; +4a08 : 00000000; +4a09 : 00000000; +4a0a : 00000000; +4a0b : 00000000; +4a0c : 00000000; +4a0d : 00000000; +4a0e : 00000000; +4a0f : 00000000; +4a10 : 00000000; +4a11 : 00000000; +4a12 : 00000000; +4a13 : 00000000; +4a14 : 00000000; +4a15 : 00000000; +4a16 : 00000000; +4a17 : 00000000; +4a18 : 00000000; +4a19 : 00000000; +4a1a : 00000000; +4a1b : 00000000; +4a1c : 00000000; +4a1d : 00000000; +4a1e : 00000000; +4a1f : 00000000; +4a20 : 00000000; +4a21 : 00000000; +4a22 : 00000000; +4a23 : 00000000; +4a24 : 00000000; +4a25 : 00000000; +4a26 : 00000000; +4a27 : 00000000; +4a28 : 00000000; +4a29 : 00000000; +4a2a : 00000000; +4a2b : 00000000; +4a2c : 00000000; +4a2d : 00000000; +4a2e : 00000000; +4a2f : 00000000; +4a30 : 00000000; +4a31 : 00000000; +4a32 : 00000000; +4a33 : 00000000; +4a34 : 00000000; +4a35 : 00000000; +4a36 : 00000000; +4a37 : 00000000; +4a38 : 00000000; +4a39 : 00000000; +4a3a : 00000000; +4a3b : 00000000; +4a3c : 00000000; +4a3d : 00000000; +4a3e : 00000000; +4a3f : 00000000; +4a40 : 00000000; +4a41 : 00000000; +4a42 : 00000000; +4a43 : 00000000; +4a44 : 00000000; +4a45 : 00000000; +4a46 : 00000000; +4a47 : 00000000; +4a48 : 00000000; +4a49 : 00000000; +4a4a : 00000000; +4a4b : 00000000; +4a4c : 00000000; +4a4d : 00000000; +4a4e : 00000000; +4a4f : 00000000; +4a50 : 00000000; +4a51 : 00000000; +4a52 : 00000000; +4a53 : 00000000; +4a54 : 00000000; +4a55 : 00000000; +4a56 : 00000000; +4a57 : 00000000; +4a58 : 00000000; +4a59 : 00000000; +4a5a : 00000000; +4a5b : 00000000; +4a5c : 00000000; +4a5d : 00000000; +4a5e : 00000000; +4a5f : 00000000; +4a60 : 00000000; +4a61 : 00000000; +4a62 : 00000000; +4a63 : 00000000; +4a64 : 00000000; +4a65 : 00000000; +4a66 : 00000000; +4a67 : 00000000; +4a68 : 00000000; +4a69 : 00000000; +4a6a : 00000000; +4a6b : 00000000; +4a6c : 00000000; +4a6d : 00000000; +4a6e : 00000000; +4a6f : 00000000; +4a70 : 00000000; +4a71 : 00000000; +4a72 : 00000000; +4a73 : 00000000; +4a74 : 00000000; +4a75 : 00000000; +4a76 : 00000000; +4a77 : 00000000; +4a78 : 00000000; +4a79 : 00000000; +4a7a : 00000000; +4a7b : 00000000; +4a7c : 00000000; +4a7d : 00000000; +4a7e : 00000000; +4a7f : 00000000; +4a80 : 00000000; +4a81 : 00000000; +4a82 : 00000000; +4a83 : 00000000; +4a84 : 00000000; +4a85 : 00000000; +4a86 : 00000000; +4a87 : 00000000; +4a88 : 00000000; +4a89 : 00000000; +4a8a : 00000000; +4a8b : 00000000; +4a8c : 00000000; +4a8d : 00000000; +4a8e : 00000000; +4a8f : 00000000; +4a90 : 00000000; +4a91 : 00000000; +4a92 : 00000000; +4a93 : 00000000; +4a94 : 00000000; +4a95 : 00000000; +4a96 : 00000000; +4a97 : 00000000; +4a98 : 00000000; +4a99 : 00000000; +4a9a : 00000000; +4a9b : 00000000; +4a9c : 00000000; +4a9d : 00000000; +4a9e : 00000000; +4a9f : 00000000; +4aa0 : 00000000; +4aa1 : 00000000; +4aa2 : 00000000; +4aa3 : 00000000; +4aa4 : 00000000; +4aa5 : 00000000; +4aa6 : 00000000; +4aa7 : 00000000; +4aa8 : 00000000; +4aa9 : 00000000; +4aaa : 00000000; +4aab : 00000000; +4aac : 00000000; +4aad : 00000000; +4aae : 00000000; +4aaf : 00000000; +4ab0 : 00000000; +4ab1 : 00000000; +4ab2 : 00000000; +4ab3 : 00000000; +4ab4 : 00000000; +4ab5 : 00000000; +4ab6 : 00000000; +4ab7 : 00000000; +4ab8 : 00000000; +4ab9 : 00000000; +4aba : 00000000; +4abb : 00000000; +4abc : 00000000; +4abd : 00000000; +4abe : 00000000; +4abf : 00000000; +4ac0 : 00000000; +4ac1 : 00000000; +4ac2 : 00000000; +4ac3 : 00000000; +4ac4 : 00000000; +4ac5 : 00000000; +4ac6 : 00000000; +4ac7 : 00000000; +4ac8 : 00000000; +4ac9 : 00000000; +4aca : 00000000; +4acb : 00000000; +4acc : 00000000; +4acd : 00000000; +4ace : 00000000; +4acf : 00000000; +4ad0 : 00000000; +4ad1 : 00000000; +4ad2 : 00000000; +4ad3 : 00000000; +4ad4 : 00000000; +4ad5 : 00000000; +4ad6 : 00000000; +4ad7 : 00000000; +4ad8 : 00000000; +4ad9 : 00000000; +4ada : 00000000; +4adb : 00000000; +4adc : 00000000; +4add : 00000000; +4ade : 00000000; +4adf : 00000000; +4ae0 : 00000000; +4ae1 : 00000000; +4ae2 : 00000000; +4ae3 : 00000000; +4ae4 : 00000000; +4ae5 : 00000000; +4ae6 : 00000000; +4ae7 : 00000000; +4ae8 : 00000000; +4ae9 : 00000000; +4aea : 00000000; +4aeb : 00000000; +4aec : 00000000; +4aed : 00000000; +4aee : 00000000; +4aef : 00000000; +4af0 : 00000000; +4af1 : 00000000; +4af2 : 00000000; +4af3 : 00000000; +4af4 : 00000000; +4af5 : 00000000; +4af6 : 00000000; +4af7 : 00000000; +4af8 : 00000000; +4af9 : 00000000; +4afa : 00000000; +4afb : 00000000; +4afc : 00000000; +4afd : 00000000; +4afe : 00000000; +4aff : 00000000; +4b00 : 00000000; +4b01 : 00000000; +4b02 : 00000000; +4b03 : 00000000; +4b04 : 00000000; +4b05 : 00000000; +4b06 : 00000000; +4b07 : 00000000; +4b08 : 00000000; +4b09 : 00000000; +4b0a : 00000000; +4b0b : 00000000; +4b0c : 00000000; +4b0d : 00000000; +4b0e : 00000000; +4b0f : 00000000; +4b10 : 00000000; +4b11 : 00000000; +4b12 : 00000000; +4b13 : 00000000; +4b14 : 00000000; +4b15 : 00000000; +4b16 : 00000000; +4b17 : 00000000; +4b18 : 00000000; +4b19 : 00000000; +4b1a : 00000000; +4b1b : 00000000; +4b1c : 00000000; +4b1d : 00000000; +4b1e : 00000000; +4b1f : 00000000; +4b20 : 00000000; +4b21 : 00000000; +4b22 : 00000000; +4b23 : 00000000; +4b24 : 00000000; +4b25 : 00000000; +4b26 : 00000000; +4b27 : 00000000; +4b28 : 00000000; +4b29 : 00000000; +4b2a : 00000000; +4b2b : 00000000; +4b2c : 00000000; +4b2d : 00000000; +4b2e : 00000000; +4b2f : 00000000; +4b30 : 00000000; +4b31 : 00000000; +4b32 : 00000000; +4b33 : 00000000; +4b34 : 00000000; +4b35 : 00000000; +4b36 : 00000000; +4b37 : 00000000; +4b38 : 00000000; +4b39 : 00000000; +4b3a : 00000000; +4b3b : 00000000; +4b3c : 00000000; +4b3d : 00000000; +4b3e : 00000000; +4b3f : 00000000; +4b40 : 00000000; +4b41 : 00000000; +4b42 : 00000000; +4b43 : 00000000; +4b44 : 00000000; +4b45 : 00000000; +4b46 : 00000000; +4b47 : 00000000; +4b48 : 00000000; +4b49 : 00000000; +4b4a : 00000000; +4b4b : 00000000; +4b4c : 00000000; +4b4d : 00000000; +4b4e : 00000000; +4b4f : 00000000; +4b50 : 00000000; +4b51 : 00000000; +4b52 : 00000000; +4b53 : 00000000; +4b54 : 00000000; +4b55 : 00000000; +4b56 : 00000000; +4b57 : 00000000; +4b58 : 00000000; +4b59 : 00000000; +4b5a : 00000000; +4b5b : 00000000; +4b5c : 00000000; +4b5d : 00000000; +4b5e : 00000000; +4b5f : 00000000; +4b60 : 00000000; +4b61 : 00000000; +4b62 : 00000000; +4b63 : 00000000; +4b64 : 00000000; +4b65 : 00000000; +4b66 : 00000000; +4b67 : 00000000; +4b68 : 00000000; +4b69 : 00000000; +4b6a : 00000000; +4b6b : 00000000; +4b6c : 00000000; +4b6d : 00000000; +4b6e : 00000000; +4b6f : 00000000; +4b70 : 00000000; +4b71 : 00000000; +4b72 : 00000000; +4b73 : 00000000; +4b74 : 00000000; +4b75 : 00000000; +4b76 : 00000000; +4b77 : 00000000; +4b78 : 00000000; +4b79 : 00000000; +4b7a : 00000000; +4b7b : 00000000; +4b7c : 00000000; +4b7d : 00000000; +4b7e : 00000000; +4b7f : 00000000; +4b80 : 00000000; +4b81 : 00000000; +4b82 : 00000000; +4b83 : 00000000; +4b84 : 00000000; +4b85 : 00000000; +4b86 : 00000000; +4b87 : 00000000; +4b88 : 00000000; +4b89 : 00000000; +4b8a : 00000000; +4b8b : 00000000; +4b8c : 00000000; +4b8d : 00000000; +4b8e : 00000000; +4b8f : 00000000; +4b90 : 00000000; +4b91 : 00000000; +4b92 : 00000000; +4b93 : 00000000; +4b94 : 00000000; +4b95 : 00000000; +4b96 : 00000000; +4b97 : 00000000; +4b98 : 00000000; +4b99 : 00000000; +4b9a : 00000000; +4b9b : 00000000; +4b9c : 00000000; +4b9d : 00000000; +4b9e : 00000000; +4b9f : 00000000; +4ba0 : 00000000; +4ba1 : 00000000; +4ba2 : 00000000; +4ba3 : 00000000; +4ba4 : 00000000; +4ba5 : 00000000; +4ba6 : 00000000; +4ba7 : 00000000; +4ba8 : 00000000; +4ba9 : 00000000; +4baa : 00000000; +4bab : 00000000; +4bac : 00000000; +4bad : 00000000; +4bae : 00000000; +4baf : 00000000; +4bb0 : 00000000; +4bb1 : 00000000; +4bb2 : 00000000; +4bb3 : 00000000; +4bb4 : 00000000; +4bb5 : 00000000; +4bb6 : 00000000; +4bb7 : 00000000; +4bb8 : 00000000; +4bb9 : 00000000; +4bba : 00000000; +4bbb : 00000000; +4bbc : 00000000; +4bbd : 00000000; +4bbe : 00000000; +4bbf : 00000000; +4bc0 : 00000000; +4bc1 : 00000000; +4bc2 : 00000000; +4bc3 : 00000000; +4bc4 : 00000000; +4bc5 : 00000000; +4bc6 : 00000000; +4bc7 : 00000000; +4bc8 : 00000000; +4bc9 : 00000000; +4bca : 00000000; +4bcb : 00000000; +4bcc : 00000000; +4bcd : 00000000; +4bce : 00000000; +4bcf : 00000000; +4bd0 : 00000000; +4bd1 : 00000000; +4bd2 : 00000000; +4bd3 : 00000000; +4bd4 : 00000000; +4bd5 : 00000000; +4bd6 : 00000000; +4bd7 : 00000000; +4bd8 : 00000000; +4bd9 : 00000000; +4bda : 00000000; +4bdb : 00000000; +4bdc : 00000000; +4bdd : 00000000; +4bde : 00000000; +4bdf : 00000000; +4be0 : 00000000; +4be1 : 00000000; +4be2 : 00000000; +4be3 : 00000000; +4be4 : 00000000; +4be5 : 00000000; +4be6 : 00000000; +4be7 : 00000000; +4be8 : 00000000; +4be9 : 00000000; +4bea : 00000000; +4beb : 00000000; +4bec : 00000000; +4bed : 00000000; +4bee : 00000000; +4bef : 00000000; +4bf0 : 00000000; +4bf1 : 00000000; +4bf2 : 00000000; +4bf3 : 00000000; +4bf4 : 00000000; +4bf5 : 00000000; +4bf6 : 00000000; +4bf7 : 00000000; +4bf8 : 00000000; +4bf9 : 00000000; +4bfa : 00000000; +4bfb : 00000000; +4bfc : 00000000; +4bfd : 00000000; +4bfe : 00000000; +4bff : 00000000; +4c00 : 00000000; +4c01 : 00000000; +4c02 : 00000000; +4c03 : 00000000; +4c04 : 00000000; +4c05 : 00000000; +4c06 : 00000000; +4c07 : 00000000; +4c08 : 00000000; +4c09 : 00000000; +4c0a : 00000000; +4c0b : 00000000; +4c0c : 00000000; +4c0d : 00000000; +4c0e : 00000000; +4c0f : 00000000; +4c10 : 00000000; +4c11 : 00000000; +4c12 : 00000000; +4c13 : 00000000; +4c14 : 00000000; +4c15 : 00000000; +4c16 : 00000000; +4c17 : 00000000; +4c18 : 00000000; +4c19 : 00000000; +4c1a : 00000000; +4c1b : 00000000; +4c1c : 00000000; +4c1d : 00000000; +4c1e : 00000000; +4c1f : 00000000; +4c20 : 00000000; +4c21 : 00000000; +4c22 : 00000000; +4c23 : 00000000; +4c24 : 00000000; +4c25 : 00000000; +4c26 : 00000000; +4c27 : 00000000; +4c28 : 00000000; +4c29 : 00000000; +4c2a : 00000000; +4c2b : 00000000; +4c2c : 00000000; +4c2d : 00000000; +4c2e : 00000000; +4c2f : 00000000; +4c30 : 00000000; +4c31 : 00000000; +4c32 : 00000000; +4c33 : 00000000; +4c34 : 00000000; +4c35 : 00000000; +4c36 : 00000000; +4c37 : 00000000; +4c38 : 00000000; +4c39 : 00000000; +4c3a : 00000000; +4c3b : 00000000; +4c3c : 00000000; +4c3d : 00000000; +4c3e : 00000000; +4c3f : 00000000; +4c40 : 00000000; +4c41 : 00000000; +4c42 : 00000000; +4c43 : 00000000; +4c44 : 00000000; +4c45 : 00000000; +4c46 : 00000000; +4c47 : 00000000; +4c48 : 00000000; +4c49 : 00000000; +4c4a : 00000000; +4c4b : 00000000; +4c4c : 00000000; +4c4d : 00000000; +4c4e : 00000000; +4c4f : 00000000; +4c50 : 00000000; +4c51 : 00000000; +4c52 : 00000000; +4c53 : 00000000; +4c54 : 00000000; +4c55 : 00000000; +4c56 : 00000000; +4c57 : 00000000; +4c58 : 00000000; +4c59 : 00000000; +4c5a : 00000000; +4c5b : 00000000; +4c5c : 00000000; +4c5d : 00000000; +4c5e : 00000000; +4c5f : 00000000; +4c60 : 00000000; +4c61 : 00000000; +4c62 : 00000000; +4c63 : 00000000; +4c64 : 00000000; +4c65 : 00000000; +4c66 : 00000000; +4c67 : 00000000; +4c68 : 00000000; +4c69 : 00000000; +4c6a : 00000000; +4c6b : 00000000; +4c6c : 00000000; +4c6d : 00000000; +4c6e : 00000000; +4c6f : 00000000; +4c70 : 00000000; +4c71 : 00000000; +4c72 : 00000000; +4c73 : 00000000; +4c74 : 00000000; +4c75 : 00000000; +4c76 : 00000000; +4c77 : 00000000; +4c78 : 00000000; +4c79 : 00000000; +4c7a : 00000000; +4c7b : 00000000; +4c7c : 00000000; +4c7d : 00000000; +4c7e : 00000000; +4c7f : 00000000; +4c80 : 00000000; +4c81 : 00000000; +4c82 : 00000000; +4c83 : 00000000; +4c84 : 00000000; +4c85 : 00000000; +4c86 : 00000000; +4c87 : 00000000; +4c88 : 00000000; +4c89 : 00000000; +4c8a : 00000000; +4c8b : 00000000; +4c8c : 00000000; +4c8d : 00000000; +4c8e : 00000000; +4c8f : 00000000; +4c90 : 00000000; +4c91 : 00000000; +4c92 : 00000000; +4c93 : 00000000; +4c94 : 00000000; +4c95 : 00000000; +4c96 : 00000000; +4c97 : 00000000; +4c98 : 00000000; +4c99 : 00000000; +4c9a : 00000000; +4c9b : 00000000; +4c9c : 00000000; +4c9d : 00000000; +4c9e : 00000000; +4c9f : 00000000; +4ca0 : 00000000; +4ca1 : 00000000; +4ca2 : 00000000; +4ca3 : 00000000; +4ca4 : 00000000; +4ca5 : 00000000; +4ca6 : 00000000; +4ca7 : 00000000; +4ca8 : 00000000; +4ca9 : 00000000; +4caa : 00000000; +4cab : 00000000; +4cac : 00000000; +4cad : 00000000; +4cae : 00000000; +4caf : 00000000; +4cb0 : 00000000; +4cb1 : 00000000; +4cb2 : 00000000; +4cb3 : 00000000; +4cb4 : 00000000; +4cb5 : 00000000; +4cb6 : 00000000; +4cb7 : 00000000; +4cb8 : 00000000; +4cb9 : 00000000; +4cba : 00000000; +4cbb : 00000000; +4cbc : 00000000; +4cbd : 00000000; +4cbe : 00000000; +4cbf : 00000000; +4cc0 : 00000000; +4cc1 : 00000000; +4cc2 : 00000000; +4cc3 : 00000000; +4cc4 : 00000000; +4cc5 : 00000000; +4cc6 : 00000000; +4cc7 : 00000000; +4cc8 : 00000000; +4cc9 : 00000000; +4cca : 00000000; +4ccb : 00000000; +4ccc : 00000000; +4ccd : 00000000; +4cce : 00000000; +4ccf : 00000000; +4cd0 : 00000000; +4cd1 : 00000000; +4cd2 : 00000000; +4cd3 : 00000000; +4cd4 : 00000000; +4cd5 : 00000000; +4cd6 : 00000000; +4cd7 : 00000000; +4cd8 : 00000000; +4cd9 : 00000000; +4cda : 00000000; +4cdb : 00000000; +4cdc : 00000000; +4cdd : 00000000; +4cde : 00000000; +4cdf : 00000000; +4ce0 : 00000000; +4ce1 : 00000000; +4ce2 : 00000000; +4ce3 : 00000000; +4ce4 : 00000000; +4ce5 : 00000000; +4ce6 : 00000000; +4ce7 : 00000000; +4ce8 : 00000000; +4ce9 : 00000000; +4cea : 00000000; +4ceb : 00000000; +4cec : 00000000; +4ced : 00000000; +4cee : 00000000; +4cef : 00000000; +4cf0 : 00000000; +4cf1 : 00000000; +4cf2 : 00000000; +4cf3 : 00000000; +4cf4 : 00000000; +4cf5 : 00000000; +4cf6 : 00000000; +4cf7 : 00000000; +4cf8 : 00000000; +4cf9 : 00000000; +4cfa : 00000000; +4cfb : 00000000; +4cfc : 00000000; +4cfd : 00000000; +4cfe : 00000000; +4cff : 00000000; +4d00 : 00000000; +4d01 : 00000000; +4d02 : 00000000; +4d03 : 00000000; +4d04 : 00000000; +4d05 : 00000000; +4d06 : 00000000; +4d07 : 00000000; +4d08 : 00000000; +4d09 : 00000000; +4d0a : 00000000; +4d0b : 00000000; +4d0c : 00000000; +4d0d : 00000000; +4d0e : 00000000; +4d0f : 00000000; +4d10 : 00000000; +4d11 : 00000000; +4d12 : 00000000; +4d13 : 00000000; +4d14 : 00000000; +4d15 : 00000000; +4d16 : 00000000; +4d17 : 00000000; +4d18 : 00000000; +4d19 : 00000000; +4d1a : 00000000; +4d1b : 00000000; +4d1c : 00000000; +4d1d : 00000000; +4d1e : 00000000; +4d1f : 00000000; +4d20 : 00000000; +4d21 : 00000000; +4d22 : 00000000; +4d23 : 00000000; +4d24 : 00000000; +4d25 : 00000000; +4d26 : 00000000; +4d27 : 00000000; +4d28 : 00000000; +4d29 : 00000000; +4d2a : 00000000; +4d2b : 00000000; +4d2c : 00000000; +4d2d : 00000000; +4d2e : 00000000; +4d2f : 00000000; +4d30 : 00000000; +4d31 : 00000000; +4d32 : 00000000; +4d33 : 00000000; +4d34 : 00000000; +4d35 : 00000000; +4d36 : 00000000; +4d37 : 00000000; +4d38 : 00000000; +4d39 : 00000000; +4d3a : 00000000; +4d3b : 00000000; +4d3c : 00000000; +4d3d : 00000000; +4d3e : 00000000; +4d3f : 00000000; +4d40 : 00000000; +4d41 : 00000000; +4d42 : 00000000; +4d43 : 00000000; +4d44 : 00000000; +4d45 : 00000000; +4d46 : 00000000; +4d47 : 00000000; +4d48 : 00000000; +4d49 : 00000000; +4d4a : 00000000; +4d4b : 00000000; +4d4c : 00000000; +4d4d : 00000000; +4d4e : 00000000; +4d4f : 00000000; +4d50 : 00000000; +4d51 : 00000000; +4d52 : 00000000; +4d53 : 00000000; +4d54 : 00000000; +4d55 : 00000000; +4d56 : 00000000; +4d57 : 00000000; +4d58 : 00000000; +4d59 : 00000000; +4d5a : 00000000; +4d5b : 00000000; +4d5c : 00000000; +4d5d : 00000000; +4d5e : 00000000; +4d5f : 00000000; +4d60 : 00000000; +4d61 : 00000000; +4d62 : 00000000; +4d63 : 00000000; +4d64 : 00000000; +4d65 : 00000000; +4d66 : 00000000; +4d67 : 00000000; +4d68 : 00000000; +4d69 : 00000000; +4d6a : 00000000; +4d6b : 00000000; +4d6c : 00000000; +4d6d : 00000000; +4d6e : 00000000; +4d6f : 00000000; +4d70 : 00000000; +4d71 : 00000000; +4d72 : 00000000; +4d73 : 00000000; +4d74 : 00000000; +4d75 : 00000000; +4d76 : 00000000; +4d77 : 00000000; +4d78 : 00000000; +4d79 : 00000000; +4d7a : 00000000; +4d7b : 00000000; +4d7c : 00000000; +4d7d : 00000000; +4d7e : 00000000; +4d7f : 00000000; +4d80 : 00000000; +4d81 : 00000000; +4d82 : 00000000; +4d83 : 00000000; +4d84 : 00000000; +4d85 : 00000000; +4d86 : 00000000; +4d87 : 00000000; +4d88 : 00000000; +4d89 : 00000000; +4d8a : 00000000; +4d8b : 00000000; +4d8c : 00000000; +4d8d : 00000000; +4d8e : 00000000; +4d8f : 00000000; +4d90 : 00000000; +4d91 : 00000000; +4d92 : 00000000; +4d93 : 00000000; +4d94 : 00000000; +4d95 : 00000000; +4d96 : 00000000; +4d97 : 00000000; +4d98 : 00000000; +4d99 : 00000000; +4d9a : 00000000; +4d9b : 00000000; +4d9c : 00000000; +4d9d : 00000000; +4d9e : 00000000; +4d9f : 00000000; +4da0 : 00000000; +4da1 : 00000000; +4da2 : 00000000; +4da3 : 00000000; +4da4 : 00000000; +4da5 : 00000000; +4da6 : 00000000; +4da7 : 00000000; +4da8 : 00000000; +4da9 : 00000000; +4daa : 00000000; +4dab : 00000000; +4dac : 00000000; +4dad : 00000000; +4dae : 00000000; +4daf : 00000000; +4db0 : 00000000; +4db1 : 00000000; +4db2 : 00000000; +4db3 : 00000000; +4db4 : 00000000; +4db5 : 00000000; +4db6 : 00000000; +4db7 : 00000000; +4db8 : 00000000; +4db9 : 00000000; +4dba : 00000000; +4dbb : 00000000; +4dbc : 00000000; +4dbd : 00000000; +4dbe : 00000000; +4dbf : 00000000; +4dc0 : 00000000; +4dc1 : 00000000; +4dc2 : 00000000; +4dc3 : 00000000; +4dc4 : 00000000; +4dc5 : 00000000; +4dc6 : 00000000; +4dc7 : 00000000; +4dc8 : 00000000; +4dc9 : 00000000; +4dca : 00000000; +4dcb : 00000000; +4dcc : 00000000; +4dcd : 00000000; +4dce : 00000000; +4dcf : 00000000; +4dd0 : 00000000; +4dd1 : 00000000; +4dd2 : 00000000; +4dd3 : 00000000; +4dd4 : 00000000; +4dd5 : 00000000; +4dd6 : 00000000; +4dd7 : 00000000; +4dd8 : 00000000; +4dd9 : 00000000; +4dda : 00000000; +4ddb : 00000000; +4ddc : 00000000; +4ddd : 00000000; +4dde : 00000000; +4ddf : 00000000; +4de0 : 00000000; +4de1 : 00000000; +4de2 : 00000000; +4de3 : 00000000; +4de4 : 00000000; +4de5 : 00000000; +4de6 : 00000000; +4de7 : 00000000; +4de8 : 00000000; +4de9 : 00000000; +4dea : 00000000; +4deb : 00000000; +4dec : 00000000; +4ded : 00000000; +4dee : 00000000; +4def : 00000000; +4df0 : 00000000; +4df1 : 00000000; +4df2 : 00000000; +4df3 : 00000000; +4df4 : 00000000; +4df5 : 00000000; +4df6 : 00000000; +4df7 : 00000000; +4df8 : 00000000; +4df9 : 00000000; +4dfa : 00000000; +4dfb : 00000000; +4dfc : 00000000; +4dfd : 00000000; +4dfe : 00000000; +4dff : 00000000; +4e00 : 00000000; +4e01 : 00000000; +4e02 : 00000000; +4e03 : 00000000; +4e04 : 00000000; +4e05 : 00000000; +4e06 : 00000000; +4e07 : 00000000; +4e08 : 00000000; +4e09 : 00000000; +4e0a : 00000000; +4e0b : 00000000; +4e0c : 00000000; +4e0d : 00000000; +4e0e : 00000000; +4e0f : 00000000; +4e10 : 00000000; +4e11 : 00000000; +4e12 : 00000000; +4e13 : 00000000; +4e14 : 00000000; +4e15 : 00000000; +4e16 : 00000000; +4e17 : 00000000; +4e18 : 00000000; +4e19 : 00000000; +4e1a : 00000000; +4e1b : 00000000; +4e1c : 00000000; +4e1d : 00000000; +4e1e : 00000000; +4e1f : 00000000; +4e20 : 00000000; +4e21 : 00000000; +4e22 : 00000000; +4e23 : 00000000; +4e24 : 00000000; +4e25 : 00000000; +4e26 : 00000000; +4e27 : 00000000; +4e28 : 00000000; +4e29 : 00000000; +4e2a : 00000000; +4e2b : 00000000; +4e2c : 00000000; +4e2d : 00000000; +4e2e : 00000000; +4e2f : 00000000; +4e30 : 00000000; +4e31 : 00000000; +4e32 : 00000000; +4e33 : 00000000; +4e34 : 00000000; +4e35 : 00000000; +4e36 : 00000000; +4e37 : 00000000; +4e38 : 00000000; +4e39 : 00000000; +4e3a : 00000000; +4e3b : 00000000; +4e3c : 00000000; +4e3d : 00000000; +4e3e : 00000000; +4e3f : 00000000; +4e40 : 00000000; +4e41 : 00000000; +4e42 : 00000000; +4e43 : 00000000; +4e44 : 00000000; +4e45 : 00000000; +4e46 : 00000000; +4e47 : 00000000; +4e48 : 00000000; +4e49 : 00000000; +4e4a : 00000000; +4e4b : 00000000; +4e4c : 00000000; +4e4d : 00000000; +4e4e : 00000000; +4e4f : 00000000; +4e50 : 00000000; +4e51 : 00000000; +4e52 : 00000000; +4e53 : 00000000; +4e54 : 00000000; +4e55 : 00000000; +4e56 : 00000000; +4e57 : 00000000; +4e58 : 00000000; +4e59 : 00000000; +4e5a : 00000000; +4e5b : 00000000; +4e5c : 00000000; +4e5d : 00000000; +4e5e : 00000000; +4e5f : 00000000; +4e60 : 00000000; +4e61 : 00000000; +4e62 : 00000000; +4e63 : 00000000; +4e64 : 00000000; +4e65 : 00000000; +4e66 : 00000000; +4e67 : 00000000; +4e68 : 00000000; +4e69 : 00000000; +4e6a : 00000000; +4e6b : 00000000; +4e6c : 00000000; +4e6d : 00000000; +4e6e : 00000000; +4e6f : 00000000; +4e70 : 00000000; +4e71 : 00000000; +4e72 : 00000000; +4e73 : 00000000; +4e74 : 00000000; +4e75 : 00000000; +4e76 : 00000000; +4e77 : 00000000; +4e78 : 00000000; +4e79 : 00000000; +4e7a : 00000000; +4e7b : 00000000; +4e7c : 00000000; +4e7d : 00000000; +4e7e : 00000000; +4e7f : 00000000; +4e80 : 00000000; +4e81 : 00000000; +4e82 : 00000000; +4e83 : 00000000; +4e84 : 00000000; +4e85 : 00000000; +4e86 : 00000000; +4e87 : 00000000; +4e88 : 00000000; +4e89 : 00000000; +4e8a : 00000000; +4e8b : 00000000; +4e8c : 00000000; +4e8d : 00000000; +4e8e : 00000000; +4e8f : 00000000; +4e90 : 00000000; +4e91 : 00000000; +4e92 : 00000000; +4e93 : 00000000; +4e94 : 00000000; +4e95 : 00000000; +4e96 : 00000000; +4e97 : 00000000; +4e98 : 00000000; +4e99 : 00000000; +4e9a : 00000000; +4e9b : 00000000; +4e9c : 00000000; +4e9d : 00000000; +4e9e : 00000000; +4e9f : 00000000; +4ea0 : 00000000; +4ea1 : 00000000; +4ea2 : 00000000; +4ea3 : 00000000; +4ea4 : 00000000; +4ea5 : 00000000; +4ea6 : 00000000; +4ea7 : 00000000; +4ea8 : 00000000; +4ea9 : 00000000; +4eaa : 00000000; +4eab : 00000000; +4eac : 00000000; +4ead : 00000000; +4eae : 00000000; +4eaf : 00000000; +4eb0 : 00000000; +4eb1 : 00000000; +4eb2 : 00000000; +4eb3 : 00000000; +4eb4 : 00000000; +4eb5 : 00000000; +4eb6 : 00000000; +4eb7 : 00000000; +4eb8 : 00000000; +4eb9 : 00000000; +4eba : 00000000; +4ebb : 00000000; +4ebc : 00000000; +4ebd : 00000000; +4ebe : 00000000; +4ebf : 00000000; +4ec0 : 00000000; +4ec1 : 00000000; +4ec2 : 00000000; +4ec3 : 00000000; +4ec4 : 00000000; +4ec5 : 00000000; +4ec6 : 00000000; +4ec7 : 00000000; +4ec8 : 00000000; +4ec9 : 00000000; +4eca : 00000000; +4ecb : 00000000; +4ecc : 00000000; +4ecd : 00000000; +4ece : 00000000; +4ecf : 00000000; +4ed0 : 00000000; +4ed1 : 00000000; +4ed2 : 00000000; +4ed3 : 00000000; +4ed4 : 00000000; +4ed5 : 00000000; +4ed6 : 00000000; +4ed7 : 00000000; +4ed8 : 00000000; +4ed9 : 00000000; +4eda : 00000000; +4edb : 00000000; +4edc : 00000000; +4edd : 00000000; +4ede : 00000000; +4edf : 00000000; +4ee0 : 00000000; +4ee1 : 00000000; +4ee2 : 00000000; +4ee3 : 00000000; +4ee4 : 00000000; +4ee5 : 00000000; +4ee6 : 00000000; +4ee7 : 00000000; +4ee8 : 00000000; +4ee9 : 00000000; +4eea : 00000000; +4eeb : 00000000; +4eec : 00000000; +4eed : 00000000; +4eee : 00000000; +4eef : 00000000; +4ef0 : 00000000; +4ef1 : 00000000; +4ef2 : 00000000; +4ef3 : 00000000; +4ef4 : 00000000; +4ef5 : 00000000; +4ef6 : 00000000; +4ef7 : 00000000; +4ef8 : 00000000; +4ef9 : 00000000; +4efa : 00000000; +4efb : 00000000; +4efc : 00000000; +4efd : 00000000; +4efe : 00000000; +4eff : 00000000; +4f00 : 00000000; +4f01 : 00000000; +4f02 : 00000000; +4f03 : 00000000; +4f04 : 00000000; +4f05 : 00000000; +4f06 : 00000000; +4f07 : 00000000; +4f08 : 00000000; +4f09 : 00000000; +4f0a : 00000000; +4f0b : 00000000; +4f0c : 00000000; +4f0d : 00000000; +4f0e : 00000000; +4f0f : 00000000; +4f10 : 00000000; +4f11 : 00000000; +4f12 : 00000000; +4f13 : 00000000; +4f14 : 00000000; +4f15 : 00000000; +4f16 : 00000000; +4f17 : 00000000; +4f18 : 00000000; +4f19 : 00000000; +4f1a : 00000000; +4f1b : 00000000; +4f1c : 00000000; +4f1d : 00000000; +4f1e : 00000000; +4f1f : 00000000; +4f20 : 00000000; +4f21 : 00000000; +4f22 : 00000000; +4f23 : 00000000; +4f24 : 00000000; +4f25 : 00000000; +4f26 : 00000000; +4f27 : 00000000; +4f28 : 00000000; +4f29 : 00000000; +4f2a : 00000000; +4f2b : 00000000; +4f2c : 00000000; +4f2d : 00000000; +4f2e : 00000000; +4f2f : 00000000; +4f30 : 00000000; +4f31 : 00000000; +4f32 : 00000000; +4f33 : 00000000; +4f34 : 00000000; +4f35 : 00000000; +4f36 : 00000000; +4f37 : 00000000; +4f38 : 00000000; +4f39 : 00000000; +4f3a : 00000000; +4f3b : 00000000; +4f3c : 00000000; +4f3d : 00000000; +4f3e : 00000000; +4f3f : 00000000; +4f40 : 00000000; +4f41 : 00000000; +4f42 : 00000000; +4f43 : 00000000; +4f44 : 00000000; +4f45 : 00000000; +4f46 : 00000000; +4f47 : 00000000; +4f48 : 00000000; +4f49 : 00000000; +4f4a : 00000000; +4f4b : 00000000; +4f4c : 00000000; +4f4d : 00000000; +4f4e : 00000000; +4f4f : 00000000; +4f50 : 00000000; +4f51 : 00000000; +4f52 : 00000000; +4f53 : 00000000; +4f54 : 00000000; +4f55 : 00000000; +4f56 : 00000000; +4f57 : 00000000; +4f58 : 00000000; +4f59 : 00000000; +4f5a : 00000000; +4f5b : 00000000; +4f5c : 00000000; +4f5d : 00000000; +4f5e : 00000000; +4f5f : 00000000; +4f60 : 00000000; +4f61 : 00000000; +4f62 : 00000000; +4f63 : 00000000; +4f64 : 00000000; +4f65 : 00000000; +4f66 : 00000000; +4f67 : 00000000; +4f68 : 00000000; +4f69 : 00000000; +4f6a : 00000000; +4f6b : 00000000; +4f6c : 00000000; +4f6d : 00000000; +4f6e : 00000000; +4f6f : 00000000; +4f70 : 00000000; +4f71 : 00000000; +4f72 : 00000000; +4f73 : 00000000; +4f74 : 00000000; +4f75 : 00000000; +4f76 : 00000000; +4f77 : 00000000; +4f78 : 00000000; +4f79 : 00000000; +4f7a : 00000000; +4f7b : 00000000; +4f7c : 00000000; +4f7d : 00000000; +4f7e : 00000000; +4f7f : 00000000; +4f80 : 00000000; +4f81 : 00000000; +4f82 : 00000000; +4f83 : 00000000; +4f84 : 00000000; +4f85 : 00000000; +4f86 : 00000000; +4f87 : 00000000; +4f88 : 00000000; +4f89 : 00000000; +4f8a : 00000000; +4f8b : 00000000; +4f8c : 00000000; +4f8d : 00000000; +4f8e : 00000000; +4f8f : 00000000; +4f90 : 00000000; +4f91 : 00000000; +4f92 : 00000000; +4f93 : 00000000; +4f94 : 00000000; +4f95 : 00000000; +4f96 : 00000000; +4f97 : 00000000; +4f98 : 00000000; +4f99 : 00000000; +4f9a : 00000000; +4f9b : 00000000; +4f9c : 00000000; +4f9d : 00000000; +4f9e : 00000000; +4f9f : 00000000; +4fa0 : 00000000; +4fa1 : 00000000; +4fa2 : 00000000; +4fa3 : 00000000; +4fa4 : 00000000; +4fa5 : 00000000; +4fa6 : 00000000; +4fa7 : 00000000; +4fa8 : 00000000; +4fa9 : 00000000; +4faa : 00000000; +4fab : 00000000; +4fac : 00000000; +4fad : 00000000; +4fae : 00000000; +4faf : 00000000; +4fb0 : 00000000; +4fb1 : 00000000; +4fb2 : 00000000; +4fb3 : 00000000; +4fb4 : 00000000; +4fb5 : 00000000; +4fb6 : 00000000; +4fb7 : 00000000; +4fb8 : 00000000; +4fb9 : 00000000; +4fba : 00000000; +4fbb : 00000000; +4fbc : 00000000; +4fbd : 00000000; +4fbe : 00000000; +4fbf : 00000000; +4fc0 : 00000000; +4fc1 : 00000000; +4fc2 : 00000000; +4fc3 : 00000000; +4fc4 : 00000000; +4fc5 : 00000000; +4fc6 : 00000000; +4fc7 : 00000000; +4fc8 : 00000000; +4fc9 : 00000000; +4fca : 00000000; +4fcb : 00000000; +4fcc : 00000000; +4fcd : 00000000; +4fce : 00000000; +4fcf : 00000000; +4fd0 : 00000000; +4fd1 : 00000000; +4fd2 : 00000000; +4fd3 : 00000000; +4fd4 : 00000000; +4fd5 : 00000000; +4fd6 : 00000000; +4fd7 : 00000000; +4fd8 : 00000000; +4fd9 : 00000000; +4fda : 00000000; +4fdb : 00000000; +4fdc : 00000000; +4fdd : 00000000; +4fde : 00000000; +4fdf : 00000000; +4fe0 : 00000000; +4fe1 : 00000000; +4fe2 : 00000000; +4fe3 : 00000000; +4fe4 : 00000000; +4fe5 : 00000000; +4fe6 : 00000000; +4fe7 : 00000000; +4fe8 : 00000000; +4fe9 : 00000000; +4fea : 00000000; +4feb : 00000000; +4fec : 00000000; +4fed : 00000000; +4fee : 00000000; +4fef : 00000000; +4ff0 : 00000000; +4ff1 : 00000000; +4ff2 : 00000000; +4ff3 : 00000000; +4ff4 : 00000000; +4ff5 : 00000000; +4ff6 : 00000000; +4ff7 : 00000000; +4ff8 : 00000000; +4ff9 : 00000000; +4ffa : 00000000; +4ffb : 00000000; +4ffc : 00000000; +4ffd : 00000000; +4ffe : 00000000; +4fff : 00000000; +5000 : 00000000; +5001 : 00000000; +5002 : 00000000; +5003 : 00000000; +5004 : 00000000; +5005 : 00000000; +5006 : 00000000; +5007 : 00000000; +5008 : 00000000; +5009 : 00000000; +500a : 00000000; +500b : 00000000; +500c : 00000000; +500d : 00000000; +500e : 00000000; +500f : 00000000; +5010 : 00000000; +5011 : 00000000; +5012 : 00000000; +5013 : 00000000; +5014 : 00000000; +5015 : 00000000; +5016 : 00000000; +5017 : 00000000; +5018 : 00000000; +5019 : 00000000; +501a : 00000000; +501b : 00000000; +501c : 00000000; +501d : 00000000; +501e : 00000000; +501f : 00000000; +5020 : 00000000; +5021 : 00000000; +5022 : 00000000; +5023 : 00000000; +5024 : 00000000; +5025 : 00000000; +5026 : 00000000; +5027 : 00000000; +5028 : 00000000; +5029 : 00000000; +502a : 00000000; +502b : 00000000; +502c : 00000000; +502d : 00000000; +502e : 00000000; +502f : 00000000; +5030 : 00000000; +5031 : 00000000; +5032 : 00000000; +5033 : 00000000; +5034 : 00000000; +5035 : 00000000; +5036 : 00000000; +5037 : 00000000; +5038 : 00000000; +5039 : 00000000; +503a : 00000000; +503b : 00000000; +503c : 00000000; +503d : 00000000; +503e : 00000000; +503f : 00000000; +5040 : 00000000; +5041 : 00000000; +5042 : 00000000; +5043 : 00000000; +5044 : 00000000; +5045 : 00000000; +5046 : 00000000; +5047 : 00000000; +5048 : 00000000; +5049 : 00000000; +504a : 00000000; +504b : 00000000; +504c : 00000000; +504d : 00000000; +504e : 00000000; +504f : 00000000; +5050 : 00000000; +5051 : 00000000; +5052 : 00000000; +5053 : 00000000; +5054 : 00000000; +5055 : 00000000; +5056 : 00000000; +5057 : 00000000; +5058 : 00000000; +5059 : 00000000; +505a : 00000000; +505b : 00000000; +505c : 00000000; +505d : 00000000; +505e : 00000000; +505f : 00000000; +5060 : 00000000; +5061 : 00000000; +5062 : 00000000; +5063 : 00000000; +5064 : 00000000; +5065 : 00000000; +5066 : 00000000; +5067 : 00000000; +5068 : 00000000; +5069 : 00000000; +506a : 00000000; +506b : 00000000; +506c : 00000000; +506d : 00000000; +506e : 00000000; +506f : 00000000; +5070 : 00000000; +5071 : 00000000; +5072 : 00000000; +5073 : 00000000; +5074 : 00000000; +5075 : 00000000; +5076 : 00000000; +5077 : 00000000; +5078 : 00000000; +5079 : 00000000; +507a : 00000000; +507b : 00000000; +507c : 00000000; +507d : 00000000; +507e : 00000000; +507f : 00000000; +5080 : 00000000; +5081 : 00000000; +5082 : 00000000; +5083 : 00000000; +5084 : 00000000; +5085 : 00000000; +5086 : 00000000; +5087 : 00000000; +5088 : 00000000; +5089 : 00000000; +508a : 00000000; +508b : 00000000; +508c : 00000000; +508d : 00000000; +508e : 00000000; +508f : 00000000; +5090 : 00000000; +5091 : 00000000; +5092 : 00000000; +5093 : 00000000; +5094 : 00000000; +5095 : 00000000; +5096 : 00000000; +5097 : 00000000; +5098 : 00000000; +5099 : 00000000; +509a : 00000000; +509b : 00000000; +509c : 00000000; +509d : 00000000; +509e : 00000000; +509f : 00000000; +50a0 : 00000000; +50a1 : 00000000; +50a2 : 00000000; +50a3 : 00000000; +50a4 : 00000000; +50a5 : 00000000; +50a6 : 00000000; +50a7 : 00000000; +50a8 : 00000000; +50a9 : 00000000; +50aa : 00000000; +50ab : 00000000; +50ac : 00000000; +50ad : 00000000; +50ae : 00000000; +50af : 00000000; +50b0 : 00000000; +50b1 : 00000000; +50b2 : 00000000; +50b3 : 00000000; +50b4 : 00000000; +50b5 : 00000000; +50b6 : 00000000; +50b7 : 00000000; +50b8 : 00000000; +50b9 : 00000000; +50ba : 00000000; +50bb : 00000000; +50bc : 00000000; +50bd : 00000000; +50be : 00000000; +50bf : 00000000; +50c0 : 00000000; +50c1 : 00000000; +50c2 : 00000000; +50c3 : 00000000; +50c4 : 00000000; +50c5 : 00000000; +50c6 : 00000000; +50c7 : 00000000; +50c8 : 00000000; +50c9 : 00000000; +50ca : 00000000; +50cb : 00000000; +50cc : 00000000; +50cd : 00000000; +50ce : 00000000; +50cf : 00000000; +50d0 : 00000000; +50d1 : 00000000; +50d2 : 00000000; +50d3 : 00000000; +50d4 : 00000000; +50d5 : 00000000; +50d6 : 00000000; +50d7 : 00000000; +50d8 : 00000000; +50d9 : 00000000; +50da : 00000000; +50db : 00000000; +50dc : 00000000; +50dd : 00000000; +50de : 00000000; +50df : 00000000; +50e0 : 00000000; +50e1 : 00000000; +50e2 : 00000000; +50e3 : 00000000; +50e4 : 00000000; +50e5 : 00000000; +50e6 : 00000000; +50e7 : 00000000; +50e8 : 00000000; +50e9 : 00000000; +50ea : 00000000; +50eb : 00000000; +50ec : 00000000; +50ed : 00000000; +50ee : 00000000; +50ef : 00000000; +50f0 : 00000000; +50f1 : 00000000; +50f2 : 00000000; +50f3 : 00000000; +50f4 : 00000000; +50f5 : 00000000; +50f6 : 00000000; +50f7 : 00000000; +50f8 : 00000000; +50f9 : 00000000; +50fa : 00000000; +50fb : 00000000; +50fc : 00000000; +50fd : 00000000; +50fe : 00000000; +50ff : 00000000; +5100 : 00000000; +5101 : 00000000; +5102 : 00000000; +5103 : 00000000; +5104 : 00000000; +5105 : 00000000; +5106 : 00000000; +5107 : 00000000; +5108 : 00000000; +5109 : 00000000; +510a : 00000000; +510b : 00000000; +510c : 00000000; +510d : 00000000; +510e : 00000000; +510f : 00000000; +5110 : 00000000; +5111 : 00000000; +5112 : 00000000; +5113 : 00000000; +5114 : 00000000; +5115 : 00000000; +5116 : 00000000; +5117 : 00000000; +5118 : 00000000; +5119 : 00000000; +511a : 00000000; +511b : 00000000; +511c : 00000000; +511d : 00000000; +511e : 00000000; +511f : 00000000; +5120 : 00000000; +5121 : 00000000; +5122 : 00000000; +5123 : 00000000; +5124 : 00000000; +5125 : 00000000; +5126 : 00000000; +5127 : 00000000; +5128 : 00000000; +5129 : 00000000; +512a : 00000000; +512b : 00000000; +512c : 00000000; +512d : 00000000; +512e : 00000000; +512f : 00000000; +5130 : 00000000; +5131 : 00000000; +5132 : 00000000; +5133 : 00000000; +5134 : 00000000; +5135 : 00000000; +5136 : 00000000; +5137 : 00000000; +5138 : 00000000; +5139 : 00000000; +513a : 00000000; +513b : 00000000; +513c : 00000000; +513d : 00000000; +513e : 00000000; +513f : 00000000; +5140 : 00000000; +5141 : 00000000; +5142 : 00000000; +5143 : 00000000; +5144 : 00000000; +5145 : 00000000; +5146 : 00000000; +5147 : 00000000; +5148 : 00000000; +5149 : 00000000; +514a : 00000000; +514b : 00000000; +514c : 00000000; +514d : 00000000; +514e : 00000000; +514f : 00000000; +5150 : 00000000; +5151 : 00000000; +5152 : 00000000; +5153 : 00000000; +5154 : 00000000; +5155 : 00000000; +5156 : 00000000; +5157 : 00000000; +5158 : 00000000; +5159 : 00000000; +515a : 00000000; +515b : 00000000; +515c : 00000000; +515d : 00000000; +515e : 00000000; +515f : 00000000; +5160 : 00000000; +5161 : 00000000; +5162 : 00000000; +5163 : 00000000; +5164 : 00000000; +5165 : 00000000; +5166 : 00000000; +5167 : 00000000; +5168 : 00000000; +5169 : 00000000; +516a : 00000000; +516b : 00000000; +516c : 00000000; +516d : 00000000; +516e : 00000000; +516f : 00000000; +5170 : 00000000; +5171 : 00000000; +5172 : 00000000; +5173 : 00000000; +5174 : 00000000; +5175 : 00000000; +5176 : 00000000; +5177 : 00000000; +5178 : 00000000; +5179 : 00000000; +517a : 00000000; +517b : 00000000; +517c : 00000000; +517d : 00000000; +517e : 00000000; +517f : 00000000; +5180 : 00000000; +5181 : 00000000; +5182 : 00000000; +5183 : 00000000; +5184 : 00000000; +5185 : 00000000; +5186 : 00000000; +5187 : 00000000; +5188 : 00000000; +5189 : 00000000; +518a : 00000000; +518b : 00000000; +518c : 00000000; +518d : 00000000; +518e : 00000000; +518f : 00000000; +5190 : 00000000; +5191 : 00000000; +5192 : 00000000; +5193 : 00000000; +5194 : 00000000; +5195 : 00000000; +5196 : 00000000; +5197 : 00000000; +5198 : 00000000; +5199 : 00000000; +519a : 00000000; +519b : 00000000; +519c : 00000000; +519d : 00000000; +519e : 00000000; +519f : 00000000; +51a0 : 00000000; +51a1 : 00000000; +51a2 : 00000000; +51a3 : 00000000; +51a4 : 00000000; +51a5 : 00000000; +51a6 : 00000000; +51a7 : 00000000; +51a8 : 00000000; +51a9 : 00000000; +51aa : 00000000; +51ab : 00000000; +51ac : 00000000; +51ad : 00000000; +51ae : 00000000; +51af : 00000000; +51b0 : 00000000; +51b1 : 00000000; +51b2 : 00000000; +51b3 : 00000000; +51b4 : 00000000; +51b5 : 00000000; +51b6 : 00000000; +51b7 : 00000000; +51b8 : 00000000; +51b9 : 00000000; +51ba : 00000000; +51bb : 00000000; +51bc : 00000000; +51bd : 00000000; +51be : 00000000; +51bf : 00000000; +51c0 : 00000000; +51c1 : 00000000; +51c2 : 00000000; +51c3 : 00000000; +51c4 : 00000000; +51c5 : 00000000; +51c6 : 00000000; +51c7 : 00000000; +51c8 : 00000000; +51c9 : 00000000; +51ca : 00000000; +51cb : 00000000; +51cc : 00000000; +51cd : 00000000; +51ce : 00000000; +51cf : 00000000; +51d0 : 00000000; +51d1 : 00000000; +51d2 : 00000000; +51d3 : 00000000; +51d4 : 00000000; +51d5 : 00000000; +51d6 : 00000000; +51d7 : 00000000; +51d8 : 00000000; +51d9 : 00000000; +51da : 00000000; +51db : 00000000; +51dc : 00000000; +51dd : 00000000; +51de : 00000000; +51df : 00000000; +51e0 : 00000000; +51e1 : 00000000; +51e2 : 00000000; +51e3 : 00000000; +51e4 : 00000000; +51e5 : 00000000; +51e6 : 00000000; +51e7 : 00000000; +51e8 : 00000000; +51e9 : 00000000; +51ea : 00000000; +51eb : 00000000; +51ec : 00000000; +51ed : 00000000; +51ee : 00000000; +51ef : 00000000; +51f0 : 00000000; +51f1 : 00000000; +51f2 : 00000000; +51f3 : 00000000; +51f4 : 00000000; +51f5 : 00000000; +51f6 : 00000000; +51f7 : 00000000; +51f8 : 00000000; +51f9 : 00000000; +51fa : 00000000; +51fb : 00000000; +51fc : 00000000; +51fd : 00000000; +51fe : 00000000; +51ff : 00000000; +5200 : 00000000; +5201 : 00000000; +5202 : 00000000; +5203 : 00000000; +5204 : 00000000; +5205 : 00000000; +5206 : 00000000; +5207 : 00000000; +5208 : 00000000; +5209 : 00000000; +520a : 00000000; +520b : 00000000; +520c : 00000000; +520d : 00000000; +520e : 00000000; +520f : 00000000; +5210 : 00000000; +5211 : 00000000; +5212 : 00000000; +5213 : 00000000; +5214 : 00000000; +5215 : 00000000; +5216 : 00000000; +5217 : 00000000; +5218 : 00000000; +5219 : 00000000; +521a : 00000000; +521b : 00000000; +521c : 00000000; +521d : 00000000; +521e : 00000000; +521f : 00000000; +5220 : 00000000; +5221 : 00000000; +5222 : 00000000; +5223 : 00000000; +5224 : 00000000; +5225 : 00000000; +5226 : 00000000; +5227 : 00000000; +5228 : 00000000; +5229 : 00000000; +522a : 00000000; +522b : 00000000; +522c : 00000000; +522d : 00000000; +522e : 00000000; +522f : 00000000; +5230 : 00000000; +5231 : 00000000; +5232 : 00000000; +5233 : 00000000; +5234 : 00000000; +5235 : 00000000; +5236 : 00000000; +5237 : 00000000; +5238 : 00000000; +5239 : 00000000; +523a : 00000000; +523b : 00000000; +523c : 00000000; +523d : 00000000; +523e : 00000000; +523f : 00000000; +5240 : 00000000; +5241 : 00000000; +5242 : 00000000; +5243 : 00000000; +5244 : 00000000; +5245 : 00000000; +5246 : 00000000; +5247 : 00000000; +5248 : 00000000; +5249 : 00000000; +524a : 00000000; +524b : 00000000; +524c : 00000000; +524d : 00000000; +524e : 00000000; +524f : 00000000; +5250 : 00000000; +5251 : 00000000; +5252 : 00000000; +5253 : 00000000; +5254 : 00000000; +5255 : 00000000; +5256 : 00000000; +5257 : 00000000; +5258 : 00000000; +5259 : 00000000; +525a : 00000000; +525b : 00000000; +525c : 00000000; +525d : 00000000; +525e : 00000000; +525f : 00000000; +5260 : 00000000; +5261 : 00000000; +5262 : 00000000; +5263 : 00000000; +5264 : 00000000; +5265 : 00000000; +5266 : 00000000; +5267 : 00000000; +5268 : 00000000; +5269 : 00000000; +526a : 00000000; +526b : 00000000; +526c : 00000000; +526d : 00000000; +526e : 00000000; +526f : 00000000; +5270 : 00000000; +5271 : 00000000; +5272 : 00000000; +5273 : 00000000; +5274 : 00000000; +5275 : 00000000; +5276 : 00000000; +5277 : 00000000; +5278 : 00000000; +5279 : 00000000; +527a : 00000000; +527b : 00000000; +527c : 00000000; +527d : 00000000; +527e : 00000000; +527f : 00000000; +5280 : 00000000; +5281 : 00000000; +5282 : 00000000; +5283 : 00000000; +5284 : 00000000; +5285 : 00000000; +5286 : 00000000; +5287 : 00000000; +5288 : 00000000; +5289 : 00000000; +528a : 00000000; +528b : 00000000; +528c : 00000000; +528d : 00000000; +528e : 00000000; +528f : 00000000; +5290 : 00000000; +5291 : 00000000; +5292 : 00000000; +5293 : 00000000; +5294 : 00000000; +5295 : 00000000; +5296 : 00000000; +5297 : 00000000; +5298 : 00000000; +5299 : 00000000; +529a : 00000000; +529b : 00000000; +529c : 00000000; +529d : 00000000; +529e : 00000000; +529f : 00000000; +52a0 : 00000000; +52a1 : 00000000; +52a2 : 00000000; +52a3 : 00000000; +52a4 : 00000000; +52a5 : 00000000; +52a6 : 00000000; +52a7 : 00000000; +52a8 : 00000000; +52a9 : 00000000; +52aa : 00000000; +52ab : 00000000; +52ac : 00000000; +52ad : 00000000; +52ae : 00000000; +52af : 00000000; +52b0 : 00000000; +52b1 : 00000000; +52b2 : 00000000; +52b3 : 00000000; +52b4 : 00000000; +52b5 : 00000000; +52b6 : 00000000; +52b7 : 00000000; +52b8 : 00000000; +52b9 : 00000000; +52ba : 00000000; +52bb : 00000000; +52bc : 00000000; +52bd : 00000000; +52be : 00000000; +52bf : 00000000; +52c0 : 00000000; +52c1 : 00000000; +52c2 : 00000000; +52c3 : 00000000; +52c4 : 00000000; +52c5 : 00000000; +52c6 : 00000000; +52c7 : 00000000; +52c8 : 00000000; +52c9 : 00000000; +52ca : 00000000; +52cb : 00000000; +52cc : 00000000; +52cd : 00000000; +52ce : 00000000; +52cf : 00000000; +52d0 : 00000000; +52d1 : 00000000; +52d2 : 00000000; +52d3 : 00000000; +52d4 : 00000000; +52d5 : 00000000; +52d6 : 00000000; +52d7 : 00000000; +52d8 : 00000000; +52d9 : 00000000; +52da : 00000000; +52db : 00000000; +52dc : 00000000; +52dd : 00000000; +52de : 00000000; +52df : 00000000; +52e0 : 00000000; +52e1 : 00000000; +52e2 : 00000000; +52e3 : 00000000; +52e4 : 00000000; +52e5 : 00000000; +52e6 : 00000000; +52e7 : 00000000; +52e8 : 00000000; +52e9 : 00000000; +52ea : 00000000; +52eb : 00000000; +52ec : 00000000; +52ed : 00000000; +52ee : 00000000; +52ef : 00000000; +52f0 : 00000000; +52f1 : 00000000; +52f2 : 00000000; +52f3 : 00000000; +52f4 : 00000000; +52f5 : 00000000; +52f6 : 00000000; +52f7 : 00000000; +52f8 : 00000000; +52f9 : 00000000; +52fa : 00000000; +52fb : 00000000; +52fc : 00000000; +52fd : 00000000; +52fe : 00000000; +52ff : 00000000; +5300 : 00000000; +5301 : 00000000; +5302 : 00000000; +5303 : 00000000; +5304 : 00000000; +5305 : 00000000; +5306 : 00000000; +5307 : 00000000; +5308 : 00000000; +5309 : 00000000; +530a : 00000000; +530b : 00000000; +530c : 00000000; +530d : 00000000; +530e : 00000000; +530f : 00000000; +5310 : 00000000; +5311 : 00000000; +5312 : 00000000; +5313 : 00000000; +5314 : 00000000; +5315 : 00000000; +5316 : 00000000; +5317 : 00000000; +5318 : 00000000; +5319 : 00000000; +531a : 00000000; +531b : 00000000; +531c : 00000000; +531d : 00000000; +531e : 00000000; +531f : 00000000; +5320 : 00000000; +5321 : 00000000; +5322 : 00000000; +5323 : 00000000; +5324 : 00000000; +5325 : 00000000; +5326 : 00000000; +5327 : 00000000; +5328 : 00000000; +5329 : 00000000; +532a : 00000000; +532b : 00000000; +532c : 00000000; +532d : 00000000; +532e : 00000000; +532f : 00000000; +5330 : 00000000; +5331 : 00000000; +5332 : 00000000; +5333 : 00000000; +5334 : 00000000; +5335 : 00000000; +5336 : 00000000; +5337 : 00000000; +5338 : 00000000; +5339 : 00000000; +533a : 00000000; +533b : 00000000; +533c : 00000000; +533d : 00000000; +533e : 00000000; +533f : 00000000; +5340 : 00000000; +5341 : 00000000; +5342 : 00000000; +5343 : 00000000; +5344 : 00000000; +5345 : 00000000; +5346 : 00000000; +5347 : 00000000; +5348 : 00000000; +5349 : 00000000; +534a : 00000000; +534b : 00000000; +534c : 00000000; +534d : 00000000; +534e : 00000000; +534f : 00000000; +5350 : 00000000; +5351 : 00000000; +5352 : 00000000; +5353 : 00000000; +5354 : 00000000; +5355 : 00000000; +5356 : 00000000; +5357 : 00000000; +5358 : 00000000; +5359 : 00000000; +535a : 00000000; +535b : 00000000; +535c : 00000000; +535d : 00000000; +535e : 00000000; +535f : 00000000; +5360 : 00000000; +5361 : 00000000; +5362 : 00000000; +5363 : 00000000; +5364 : 00000000; +5365 : 00000000; +5366 : 00000000; +5367 : 00000000; +5368 : 00000000; +5369 : 00000000; +536a : 00000000; +536b : 00000000; +536c : 00000000; +536d : 00000000; +536e : 00000000; +536f : 00000000; +5370 : 00000000; +5371 : 00000000; +5372 : 00000000; +5373 : 00000000; +5374 : 00000000; +5375 : 00000000; +5376 : 00000000; +5377 : 00000000; +5378 : 00000000; +5379 : 00000000; +537a : 00000000; +537b : 00000000; +537c : 00000000; +537d : 00000000; +537e : 00000000; +537f : 00000000; +5380 : 00000000; +5381 : 00000000; +5382 : 00000000; +5383 : 00000000; +5384 : 00000000; +5385 : 00000000; +5386 : 00000000; +5387 : 00000000; +5388 : 00000000; +5389 : 00000000; +538a : 00000000; +538b : 00000000; +538c : 00000000; +538d : 00000000; +538e : 00000000; +538f : 00000000; +5390 : 00000000; +5391 : 00000000; +5392 : 00000000; +5393 : 00000000; +5394 : 00000000; +5395 : 00000000; +5396 : 00000000; +5397 : 00000000; +5398 : 00000000; +5399 : 00000000; +539a : 00000000; +539b : 00000000; +539c : 00000000; +539d : 00000000; +539e : 00000000; +539f : 00000000; +53a0 : 00000000; +53a1 : 00000000; +53a2 : 00000000; +53a3 : 00000000; +53a4 : 00000000; +53a5 : 00000000; +53a6 : 00000000; +53a7 : 00000000; +53a8 : 00000000; +53a9 : 00000000; +53aa : 00000000; +53ab : 00000000; +53ac : 00000000; +53ad : 00000000; +53ae : 00000000; +53af : 00000000; +53b0 : 00000000; +53b1 : 00000000; +53b2 : 00000000; +53b3 : 00000000; +53b4 : 00000000; +53b5 : 00000000; +53b6 : 00000000; +53b7 : 00000000; +53b8 : 00000000; +53b9 : 00000000; +53ba : 00000000; +53bb : 00000000; +53bc : 00000000; +53bd : 00000000; +53be : 00000000; +53bf : 00000000; +53c0 : 00000000; +53c1 : 00000000; +53c2 : 00000000; +53c3 : 00000000; +53c4 : 00000000; +53c5 : 00000000; +53c6 : 00000000; +53c7 : 00000000; +53c8 : 00000000; +53c9 : 00000000; +53ca : 00000000; +53cb : 00000000; +53cc : 00000000; +53cd : 00000000; +53ce : 00000000; +53cf : 00000000; +53d0 : 00000000; +53d1 : 00000000; +53d2 : 00000000; +53d3 : 00000000; +53d4 : 00000000; +53d5 : 00000000; +53d6 : 00000000; +53d7 : 00000000; +53d8 : 00000000; +53d9 : 00000000; +53da : 00000000; +53db : 00000000; +53dc : 00000000; +53dd : 00000000; +53de : 00000000; +53df : 00000000; +53e0 : 00000000; +53e1 : 00000000; +53e2 : 00000000; +53e3 : 00000000; +53e4 : 00000000; +53e5 : 00000000; +53e6 : 00000000; +53e7 : 00000000; +53e8 : 00000000; +53e9 : 00000000; +53ea : 00000000; +53eb : 00000000; +53ec : 00000000; +53ed : 00000000; +53ee : 00000000; +53ef : 00000000; +53f0 : 00000000; +53f1 : 00000000; +53f2 : 00000000; +53f3 : 00000000; +53f4 : 00000000; +53f5 : 00000000; +53f6 : 00000000; +53f7 : 00000000; +53f8 : 00000000; +53f9 : 00000000; +53fa : 00000000; +53fb : 00000000; +53fc : 00000000; +53fd : 00000000; +53fe : 00000000; +53ff : 00000000; +5400 : 00000000; +5401 : 00000000; +5402 : 00000000; +5403 : 00000000; +5404 : 00000000; +5405 : 00000000; +5406 : 00000000; +5407 : 00000000; +5408 : 00000000; +5409 : 00000000; +540a : 00000000; +540b : 00000000; +540c : 00000000; +540d : 00000000; +540e : 00000000; +540f : 00000000; +5410 : 00000000; +5411 : 00000000; +5412 : 00000000; +5413 : 00000000; +5414 : 00000000; +5415 : 00000000; +5416 : 00000000; +5417 : 00000000; +5418 : 00000000; +5419 : 00000000; +541a : 00000000; +541b : 00000000; +541c : 00000000; +541d : 00000000; +541e : 00000000; +541f : 00000000; +5420 : 00000000; +5421 : 00000000; +5422 : 00000000; +5423 : 00000000; +5424 : 00000000; +5425 : 00000000; +5426 : 00000000; +5427 : 00000000; +5428 : 00000000; +5429 : 00000000; +542a : 00000000; +542b : 00000000; +542c : 00000000; +542d : 00000000; +542e : 00000000; +542f : 00000000; +5430 : 00000000; +5431 : 00000000; +5432 : 00000000; +5433 : 00000000; +5434 : 00000000; +5435 : 00000000; +5436 : 00000000; +5437 : 00000000; +5438 : 00000000; +5439 : 00000000; +543a : 00000000; +543b : 00000000; +543c : 00000000; +543d : 00000000; +543e : 00000000; +543f : 00000000; +5440 : 00000000; +5441 : 00000000; +5442 : 00000000; +5443 : 00000000; +5444 : 00000000; +5445 : 00000000; +5446 : 00000000; +5447 : 00000000; +5448 : 00000000; +5449 : 00000000; +544a : 00000000; +544b : 00000000; +544c : 00000000; +544d : 00000000; +544e : 00000000; +544f : 00000000; +5450 : 00000000; +5451 : 00000000; +5452 : 00000000; +5453 : 00000000; +5454 : 00000000; +5455 : 00000000; +5456 : 00000000; +5457 : 00000000; +5458 : 00000000; +5459 : 00000000; +545a : 00000000; +545b : 00000000; +545c : 00000000; +545d : 00000000; +545e : 00000000; +545f : 00000000; +5460 : 00000000; +5461 : 00000000; +5462 : 00000000; +5463 : 00000000; +5464 : 00000000; +5465 : 00000000; +5466 : 00000000; +5467 : 00000000; +5468 : 00000000; +5469 : 00000000; +546a : 00000000; +546b : 00000000; +546c : 00000000; +546d : 00000000; +546e : 00000000; +546f : 00000000; +5470 : 00000000; +5471 : 00000000; +5472 : 00000000; +5473 : 00000000; +5474 : 00000000; +5475 : 00000000; +5476 : 00000000; +5477 : 00000000; +5478 : 00000000; +5479 : 00000000; +547a : 00000000; +547b : 00000000; +547c : 00000000; +547d : 00000000; +547e : 00000000; +547f : 00000000; +5480 : 00000000; +5481 : 00000000; +5482 : 00000000; +5483 : 00000000; +5484 : 00000000; +5485 : 00000000; +5486 : 00000000; +5487 : 00000000; +5488 : 00000000; +5489 : 00000000; +548a : 00000000; +548b : 00000000; +548c : 00000000; +548d : 00000000; +548e : 00000000; +548f : 00000000; +5490 : 00000000; +5491 : 00000000; +5492 : 00000000; +5493 : 00000000; +5494 : 00000000; +5495 : 00000000; +5496 : 00000000; +5497 : 00000000; +5498 : 00000000; +5499 : 00000000; +549a : 00000000; +549b : 00000000; +549c : 00000000; +549d : 00000000; +549e : 00000000; +549f : 00000000; +54a0 : 00000000; +54a1 : 00000000; +54a2 : 00000000; +54a3 : 00000000; +54a4 : 00000000; +54a5 : 00000000; +54a6 : 00000000; +54a7 : 00000000; +54a8 : 00000000; +54a9 : 00000000; +54aa : 00000000; +54ab : 00000000; +54ac : 00000000; +54ad : 00000000; +54ae : 00000000; +54af : 00000000; +54b0 : 00000000; +54b1 : 00000000; +54b2 : 00000000; +54b3 : 00000000; +54b4 : 00000000; +54b5 : 00000000; +54b6 : 00000000; +54b7 : 00000000; +54b8 : 00000000; +54b9 : 00000000; +54ba : 00000000; +54bb : 00000000; +54bc : 00000000; +54bd : 00000000; +54be : 00000000; +54bf : 00000000; +54c0 : 00000000; +54c1 : 00000000; +54c2 : 00000000; +54c3 : 00000000; +54c4 : 00000000; +54c5 : 00000000; +54c6 : 00000000; +54c7 : 00000000; +54c8 : 00000000; +54c9 : 00000000; +54ca : 00000000; +54cb : 00000000; +54cc : 00000000; +54cd : 00000000; +54ce : 00000000; +54cf : 00000000; +54d0 : 00000000; +54d1 : 00000000; +54d2 : 00000000; +54d3 : 00000000; +54d4 : 00000000; +54d5 : 00000000; +54d6 : 00000000; +54d7 : 00000000; +54d8 : 00000000; +54d9 : 00000000; +54da : 00000000; +54db : 00000000; +54dc : 00000000; +54dd : 00000000; +54de : 00000000; +54df : 00000000; +54e0 : 00000000; +54e1 : 00000000; +54e2 : 00000000; +54e3 : 00000000; +54e4 : 00000000; +54e5 : 00000000; +54e6 : 00000000; +54e7 : 00000000; +54e8 : 00000000; +54e9 : 00000000; +54ea : 00000000; +54eb : 00000000; +54ec : 00000000; +54ed : 00000000; +54ee : 00000000; +54ef : 00000000; +54f0 : 00000000; +54f1 : 00000000; +54f2 : 00000000; +54f3 : 00000000; +54f4 : 00000000; +54f5 : 00000000; +54f6 : 00000000; +54f7 : 00000000; +54f8 : 00000000; +54f9 : 00000000; +54fa : 00000000; +54fb : 00000000; +54fc : 00000000; +54fd : 00000000; +54fe : 00000000; +54ff : 00000000; +5500 : 00000000; +5501 : 00000000; +5502 : 00000000; +5503 : 00000000; +5504 : 00000000; +5505 : 00000000; +5506 : 00000000; +5507 : 00000000; +5508 : 00000000; +5509 : 00000000; +550a : 00000000; +550b : 00000000; +550c : 00000000; +550d : 00000000; +550e : 00000000; +550f : 00000000; +5510 : 00000000; +5511 : 00000000; +5512 : 00000000; +5513 : 00000000; +5514 : 00000000; +5515 : 00000000; +5516 : 00000000; +5517 : 00000000; +5518 : 00000000; +5519 : 00000000; +551a : 00000000; +551b : 00000000; +551c : 00000000; +551d : 00000000; +551e : 00000000; +551f : 00000000; +5520 : 00000000; +5521 : 00000000; +5522 : 00000000; +5523 : 00000000; +5524 : 00000000; +5525 : 00000000; +5526 : 00000000; +5527 : 00000000; +5528 : 00000000; +5529 : 00000000; +552a : 00000000; +552b : 00000000; +552c : 00000000; +552d : 00000000; +552e : 00000000; +552f : 00000000; +5530 : 00000000; +5531 : 00000000; +5532 : 00000000; +5533 : 00000000; +5534 : 00000000; +5535 : 00000000; +5536 : 00000000; +5537 : 00000000; +5538 : 00000000; +5539 : 00000000; +553a : 00000000; +553b : 00000000; +553c : 00000000; +553d : 00000000; +553e : 00000000; +553f : 00000000; +5540 : 00000000; +5541 : 00000000; +5542 : 00000000; +5543 : 00000000; +5544 : 00000000; +5545 : 00000000; +5546 : 00000000; +5547 : 00000000; +5548 : 00000000; +5549 : 00000000; +554a : 00000000; +554b : 00000000; +554c : 00000000; +554d : 00000000; +554e : 00000000; +554f : 00000000; +5550 : 00000000; +5551 : 00000000; +5552 : 00000000; +5553 : 00000000; +5554 : 00000000; +5555 : 00000000; +5556 : 00000000; +5557 : 00000000; +5558 : 00000000; +5559 : 00000000; +555a : 00000000; +555b : 00000000; +555c : 00000000; +555d : 00000000; +555e : 00000000; +555f : 00000000; +5560 : 00000000; +5561 : 00000000; +5562 : 00000000; +5563 : 00000000; +5564 : 00000000; +5565 : 00000000; +5566 : 00000000; +5567 : 00000000; +5568 : 00000000; +5569 : 00000000; +556a : 00000000; +556b : 00000000; +556c : 00000000; +556d : 00000000; +556e : 00000000; +556f : 00000000; +5570 : 00000000; +5571 : 00000000; +5572 : 00000000; +5573 : 00000000; +5574 : 00000000; +5575 : 00000000; +5576 : 00000000; +5577 : 00000000; +5578 : 00000000; +5579 : 00000000; +557a : 00000000; +557b : 00000000; +557c : 00000000; +557d : 00000000; +557e : 00000000; +557f : 00000000; +5580 : 00000000; +5581 : 00000000; +5582 : 00000000; +5583 : 00000000; +5584 : 00000000; +5585 : 00000000; +5586 : 00000000; +5587 : 00000000; +5588 : 00000000; +5589 : 00000000; +558a : 00000000; +558b : 00000000; +558c : 00000000; +558d : 00000000; +558e : 00000000; +558f : 00000000; +5590 : 00000000; +5591 : 00000000; +5592 : 00000000; +5593 : 00000000; +5594 : 00000000; +5595 : 00000000; +5596 : 00000000; +5597 : 00000000; +5598 : 00000000; +5599 : 00000000; +559a : 00000000; +559b : 00000000; +559c : 00000000; +559d : 00000000; +559e : 00000000; +559f : 00000000; +55a0 : 00000000; +55a1 : 00000000; +55a2 : 00000000; +55a3 : 00000000; +55a4 : 00000000; +55a5 : 00000000; +55a6 : 00000000; +55a7 : 00000000; +55a8 : 00000000; +55a9 : 00000000; +55aa : 00000000; +55ab : 00000000; +55ac : 00000000; +55ad : 00000000; +55ae : 00000000; +55af : 00000000; +55b0 : 00000000; +55b1 : 00000000; +55b2 : 00000000; +55b3 : 00000000; +55b4 : 00000000; +55b5 : 00000000; +55b6 : 00000000; +55b7 : 00000000; +55b8 : 00000000; +55b9 : 00000000; +55ba : 00000000; +55bb : 00000000; +55bc : 00000000; +55bd : 00000000; +55be : 00000000; +55bf : 00000000; +55c0 : 00000000; +55c1 : 00000000; +55c2 : 00000000; +55c3 : 00000000; +55c4 : 00000000; +55c5 : 00000000; +55c6 : 00000000; +55c7 : 00000000; +55c8 : 00000000; +55c9 : 00000000; +55ca : 00000000; +55cb : 00000000; +55cc : 00000000; +55cd : 00000000; +55ce : 00000000; +55cf : 00000000; +55d0 : 00000000; +55d1 : 00000000; +55d2 : 00000000; +55d3 : 00000000; +55d4 : 00000000; +55d5 : 00000000; +55d6 : 00000000; +55d7 : 00000000; +55d8 : 00000000; +55d9 : 00000000; +55da : 00000000; +55db : 00000000; +55dc : 00000000; +55dd : 00000000; +55de : 00000000; +55df : 00000000; +55e0 : 00000000; +55e1 : 00000000; +55e2 : 00000000; +55e3 : 00000000; +55e4 : 00000000; +55e5 : 00000000; +55e6 : 00000000; +55e7 : 00000000; +55e8 : 00000000; +55e9 : 00000000; +55ea : 00000000; +55eb : 00000000; +55ec : 00000000; +55ed : 00000000; +55ee : 00000000; +55ef : 00000000; +55f0 : 00000000; +55f1 : 00000000; +55f2 : 00000000; +55f3 : 00000000; +55f4 : 00000000; +55f5 : 00000000; +55f6 : 00000000; +55f7 : 00000000; +55f8 : 00000000; +55f9 : 00000000; +55fa : 00000000; +55fb : 00000000; +55fc : 00000000; +55fd : 00000000; +55fe : 00000000; +55ff : 00000000; +5600 : 00000000; +5601 : 00000000; +5602 : 00000000; +5603 : 00000000; +5604 : 00000000; +5605 : 00000000; +5606 : 00000000; +5607 : 00000000; +5608 : 00000000; +5609 : 00000000; +560a : 00000000; +560b : 00000000; +560c : 00000000; +560d : 00000000; +560e : 00000000; +560f : 00000000; +5610 : 00000000; +5611 : 00000000; +5612 : 00000000; +5613 : 00000000; +5614 : 00000000; +5615 : 00000000; +5616 : 00000000; +5617 : 00000000; +5618 : 00000000; +5619 : 00000000; +561a : 00000000; +561b : 00000000; +561c : 00000000; +561d : 00000000; +561e : 00000000; +561f : 00000000; +5620 : 00000000; +5621 : 00000000; +5622 : 00000000; +5623 : 00000000; +5624 : 00000000; +5625 : 00000000; +5626 : 00000000; +5627 : 00000000; +5628 : 00000000; +5629 : 00000000; +562a : 00000000; +562b : 00000000; +562c : 00000000; +562d : 00000000; +562e : 00000000; +562f : 00000000; +5630 : 00000000; +5631 : 00000000; +5632 : 00000000; +5633 : 00000000; +5634 : 00000000; +5635 : 00000000; +5636 : 00000000; +5637 : 00000000; +5638 : 00000000; +5639 : 00000000; +563a : 00000000; +563b : 00000000; +563c : 00000000; +563d : 00000000; +563e : 00000000; +563f : 00000000; +5640 : 00000000; +5641 : 00000000; +5642 : 00000000; +5643 : 00000000; +5644 : 00000000; +5645 : 00000000; +5646 : 00000000; +5647 : 00000000; +5648 : 00000000; +5649 : 00000000; +564a : 00000000; +564b : 00000000; +564c : 00000000; +564d : 00000000; +564e : 00000000; +564f : 00000000; +5650 : 00000000; +5651 : 00000000; +5652 : 00000000; +5653 : 00000000; +5654 : 00000000; +5655 : 00000000; +5656 : 00000000; +5657 : 00000000; +5658 : 00000000; +5659 : 00000000; +565a : 00000000; +565b : 00000000; +565c : 00000000; +565d : 00000000; +565e : 00000000; +565f : 00000000; +5660 : 00000000; +5661 : 00000000; +5662 : 00000000; +5663 : 00000000; +5664 : 00000000; +5665 : 00000000; +5666 : 00000000; +5667 : 00000000; +5668 : 00000000; +5669 : 00000000; +566a : 00000000; +566b : 00000000; +566c : 00000000; +566d : 00000000; +566e : 00000000; +566f : 00000000; +5670 : 00000000; +5671 : 00000000; +5672 : 00000000; +5673 : 00000000; +5674 : 00000000; +5675 : 00000000; +5676 : 00000000; +5677 : 00000000; +5678 : 00000000; +5679 : 00000000; +567a : 00000000; +567b : 00000000; +567c : 00000000; +567d : 00000000; +567e : 00000000; +567f : 00000000; +5680 : 00000000; +5681 : 00000000; +5682 : 00000000; +5683 : 00000000; +5684 : 00000000; +5685 : 00000000; +5686 : 00000000; +5687 : 00000000; +5688 : 00000000; +5689 : 00000000; +568a : 00000000; +568b : 00000000; +568c : 00000000; +568d : 00000000; +568e : 00000000; +568f : 00000000; +5690 : 00000000; +5691 : 00000000; +5692 : 00000000; +5693 : 00000000; +5694 : 00000000; +5695 : 00000000; +5696 : 00000000; +5697 : 00000000; +5698 : 00000000; +5699 : 00000000; +569a : 00000000; +569b : 00000000; +569c : 00000000; +569d : 00000000; +569e : 00000000; +569f : 00000000; +56a0 : 00000000; +56a1 : 00000000; +56a2 : 00000000; +56a3 : 00000000; +56a4 : 00000000; +56a5 : 00000000; +56a6 : 00000000; +56a7 : 00000000; +56a8 : 00000000; +56a9 : 00000000; +56aa : 00000000; +56ab : 00000000; +56ac : 00000000; +56ad : 00000000; +56ae : 00000000; +56af : 00000000; +56b0 : 00000000; +56b1 : 00000000; +56b2 : 00000000; +56b3 : 00000000; +56b4 : 00000000; +56b5 : 00000000; +56b6 : 00000000; +56b7 : 00000000; +56b8 : 00000000; +56b9 : 00000000; +56ba : 00000000; +56bb : 00000000; +56bc : 00000000; +56bd : 00000000; +56be : 00000000; +56bf : 00000000; +56c0 : 00000000; +56c1 : 00000000; +56c2 : 00000000; +56c3 : 00000000; +56c4 : 00000000; +56c5 : 00000000; +56c6 : 00000000; +56c7 : 00000000; +56c8 : 00000000; +56c9 : 00000000; +56ca : 00000000; +56cb : 00000000; +56cc : 00000000; +56cd : 00000000; +56ce : 00000000; +56cf : 00000000; +56d0 : 00000000; +56d1 : 00000000; +56d2 : 00000000; +56d3 : 00000000; +56d4 : 00000000; +56d5 : 00000000; +56d6 : 00000000; +56d7 : 00000000; +56d8 : 00000000; +56d9 : 00000000; +56da : 00000000; +56db : 00000000; +56dc : 00000000; +56dd : 00000000; +56de : 00000000; +56df : 00000000; +56e0 : 00000000; +56e1 : 00000000; +56e2 : 00000000; +56e3 : 00000000; +56e4 : 00000000; +56e5 : 00000000; +56e6 : 00000000; +56e7 : 00000000; +56e8 : 00000000; +56e9 : 00000000; +56ea : 00000000; +56eb : 00000000; +56ec : 00000000; +56ed : 00000000; +56ee : 00000000; +56ef : 00000000; +56f0 : 00000000; +56f1 : 00000000; +56f2 : 00000000; +56f3 : 00000000; +56f4 : 00000000; +56f5 : 00000000; +56f6 : 00000000; +56f7 : 00000000; +56f8 : 00000000; +56f9 : 00000000; +56fa : 00000000; +56fb : 00000000; +56fc : 00000000; +56fd : 00000000; +56fe : 00000000; +56ff : 00000000; +5700 : 00000000; +5701 : 00000000; +5702 : 00000000; +5703 : 00000000; +5704 : 00000000; +5705 : 00000000; +5706 : 00000000; +5707 : 00000000; +5708 : 00000000; +5709 : 00000000; +570a : 00000000; +570b : 00000000; +570c : 00000000; +570d : 00000000; +570e : 00000000; +570f : 00000000; +5710 : 00000000; +5711 : 00000000; +5712 : 00000000; +5713 : 00000000; +5714 : 00000000; +5715 : 00000000; +5716 : 00000000; +5717 : 00000000; +5718 : 00000000; +5719 : 00000000; +571a : 00000000; +571b : 00000000; +571c : 00000000; +571d : 00000000; +571e : 00000000; +571f : 00000000; +5720 : 00000000; +5721 : 00000000; +5722 : 00000000; +5723 : 00000000; +5724 : 00000000; +5725 : 00000000; +5726 : 00000000; +5727 : 00000000; +5728 : 00000000; +5729 : 00000000; +572a : 00000000; +572b : 00000000; +572c : 00000000; +572d : 00000000; +572e : 00000000; +572f : 00000000; +5730 : 00000000; +5731 : 00000000; +5732 : 00000000; +5733 : 00000000; +5734 : 00000000; +5735 : 00000000; +5736 : 00000000; +5737 : 00000000; +5738 : 00000000; +5739 : 00000000; +573a : 00000000; +573b : 00000000; +573c : 00000000; +573d : 00000000; +573e : 00000000; +573f : 00000000; +5740 : 00000000; +5741 : 00000000; +5742 : 00000000; +5743 : 00000000; +5744 : 00000000; +5745 : 00000000; +5746 : 00000000; +5747 : 00000000; +5748 : 00000000; +5749 : 00000000; +574a : 00000000; +574b : 00000000; +574c : 00000000; +574d : 00000000; +574e : 00000000; +574f : 00000000; +5750 : 00000000; +5751 : 00000000; +5752 : 00000000; +5753 : 00000000; +5754 : 00000000; +5755 : 00000000; +5756 : 00000000; +5757 : 00000000; +5758 : 00000000; +5759 : 00000000; +575a : 00000000; +575b : 00000000; +575c : 00000000; +575d : 00000000; +575e : 00000000; +575f : 00000000; +5760 : 00000000; +5761 : 00000000; +5762 : 00000000; +5763 : 00000000; +5764 : 00000000; +5765 : 00000000; +5766 : 00000000; +5767 : 00000000; +5768 : 00000000; +5769 : 00000000; +576a : 00000000; +576b : 00000000; +576c : 00000000; +576d : 00000000; +576e : 00000000; +576f : 00000000; +5770 : 00000000; +5771 : 00000000; +5772 : 00000000; +5773 : 00000000; +5774 : 00000000; +5775 : 00000000; +5776 : 00000000; +5777 : 00000000; +5778 : 00000000; +5779 : 00000000; +577a : 00000000; +577b : 00000000; +577c : 00000000; +577d : 00000000; +577e : 00000000; +577f : 00000000; +5780 : 00000000; +5781 : 00000000; +5782 : 00000000; +5783 : 00000000; +5784 : 00000000; +5785 : 00000000; +5786 : 00000000; +5787 : 00000000; +5788 : 00000000; +5789 : 00000000; +578a : 00000000; +578b : 00000000; +578c : 00000000; +578d : 00000000; +578e : 00000000; +578f : 00000000; +5790 : 00000000; +5791 : 00000000; +5792 : 00000000; +5793 : 00000000; +5794 : 00000000; +5795 : 00000000; +5796 : 00000000; +5797 : 00000000; +5798 : 00000000; +5799 : 00000000; +579a : 00000000; +579b : 00000000; +579c : 00000000; +579d : 00000000; +579e : 00000000; +579f : 00000000; +57a0 : 00000000; +57a1 : 00000000; +57a2 : 00000000; +57a3 : 00000000; +57a4 : 00000000; +57a5 : 00000000; +57a6 : 00000000; +57a7 : 00000000; +57a8 : 00000000; +57a9 : 00000000; +57aa : 00000000; +57ab : 00000000; +57ac : 00000000; +57ad : 00000000; +57ae : 00000000; +57af : 00000000; +57b0 : 00000000; +57b1 : 00000000; +57b2 : 00000000; +57b3 : 00000000; +57b4 : 00000000; +57b5 : 00000000; +57b6 : 00000000; +57b7 : 00000000; +57b8 : 00000000; +57b9 : 00000000; +57ba : 00000000; +57bb : 00000000; +57bc : 00000000; +57bd : 00000000; +57be : 00000000; +57bf : 00000000; +57c0 : 00000000; +57c1 : 00000000; +57c2 : 00000000; +57c3 : 00000000; +57c4 : 00000000; +57c5 : 00000000; +57c6 : 00000000; +57c7 : 00000000; +57c8 : 00000000; +57c9 : 00000000; +57ca : 00000000; +57cb : 00000000; +57cc : 00000000; +57cd : 00000000; +57ce : 00000000; +57cf : 00000000; +57d0 : 00000000; +57d1 : 00000000; +57d2 : 00000000; +57d3 : 00000000; +57d4 : 00000000; +57d5 : 00000000; +57d6 : 00000000; +57d7 : 00000000; +57d8 : 00000000; +57d9 : 00000000; +57da : 00000000; +57db : 00000000; +57dc : 00000000; +57dd : 00000000; +57de : 00000000; +57df : 00000000; +57e0 : 00000000; +57e1 : 00000000; +57e2 : 00000000; +57e3 : 00000000; +57e4 : 00000000; +57e5 : 00000000; +57e6 : 00000000; +57e7 : 00000000; +57e8 : 00000000; +57e9 : 00000000; +57ea : 00000000; +57eb : 00000000; +57ec : 00000000; +57ed : 00000000; +57ee : 00000000; +57ef : 00000000; +57f0 : 00000000; +57f1 : 00000000; +57f2 : 00000000; +57f3 : 00000000; +57f4 : 00000000; +57f5 : 00000000; +57f6 : 00000000; +57f7 : 00000000; +57f8 : 00000000; +57f9 : 00000000; +57fa : 00000000; +57fb : 00000000; +57fc : 00000000; +57fd : 00000000; +57fe : 00000000; +57ff : 00000000; +5800 : 00000000; +5801 : 00000000; +5802 : 00000000; +5803 : 00000000; +5804 : 00000000; +5805 : 00000000; +5806 : 00000000; +5807 : 00000000; +5808 : 00000000; +5809 : 00000000; +580a : 00000000; +580b : 00000000; +580c : 00000000; +580d : 00000000; +580e : 00000000; +580f : 00000000; +5810 : 00000000; +5811 : 00000000; +5812 : 00000000; +5813 : 00000000; +5814 : 00000000; +5815 : 00000000; +5816 : 00000000; +5817 : 00000000; +5818 : 00000000; +5819 : 00000000; +581a : 00000000; +581b : 00000000; +581c : 00000000; +581d : 00000000; +581e : 00000000; +581f : 00000000; +5820 : 00000000; +5821 : 00000000; +5822 : 00000000; +5823 : 00000000; +5824 : 00000000; +5825 : 00000000; +5826 : 00000000; +5827 : 00000000; +5828 : 00000000; +5829 : 00000000; +582a : 00000000; +582b : 00000000; +582c : 00000000; +582d : 00000000; +582e : 00000000; +582f : 00000000; +5830 : 00000000; +5831 : 00000000; +5832 : 00000000; +5833 : 00000000; +5834 : 00000000; +5835 : 00000000; +5836 : 00000000; +5837 : 00000000; +5838 : 00000000; +5839 : 00000000; +583a : 00000000; +583b : 00000000; +583c : 00000000; +583d : 00000000; +583e : 00000000; +583f : 00000000; +5840 : 00000000; +5841 : 00000000; +5842 : 00000000; +5843 : 00000000; +5844 : 00000000; +5845 : 00000000; +5846 : 00000000; +5847 : 00000000; +5848 : 00000000; +5849 : 00000000; +584a : 00000000; +584b : 00000000; +584c : 00000000; +584d : 00000000; +584e : 00000000; +584f : 00000000; +5850 : 00000000; +5851 : 00000000; +5852 : 00000000; +5853 : 00000000; +5854 : 00000000; +5855 : 00000000; +5856 : 00000000; +5857 : 00000000; +5858 : 00000000; +5859 : 00000000; +585a : 00000000; +585b : 00000000; +585c : 00000000; +585d : 00000000; +585e : 00000000; +585f : 00000000; +5860 : 00000000; +5861 : 00000000; +5862 : 00000000; +5863 : 00000000; +5864 : 00000000; +5865 : 00000000; +5866 : 00000000; +5867 : 00000000; +5868 : 00000000; +5869 : 00000000; +586a : 00000000; +586b : 00000000; +586c : 00000000; +586d : 00000000; +586e : 00000000; +586f : 00000000; +5870 : 00000000; +5871 : 00000000; +5872 : 00000000; +5873 : 00000000; +5874 : 00000000; +5875 : 00000000; +5876 : 00000000; +5877 : 00000000; +5878 : 00000000; +5879 : 00000000; +587a : 00000000; +587b : 00000000; +587c : 00000000; +587d : 00000000; +587e : 00000000; +587f : 00000000; +5880 : 00000000; +5881 : 00000000; +5882 : 00000000; +5883 : 00000000; +5884 : 00000000; +5885 : 00000000; +5886 : 00000000; +5887 : 00000000; +5888 : 00000000; +5889 : 00000000; +588a : 00000000; +588b : 00000000; +588c : 00000000; +588d : 00000000; +588e : 00000000; +588f : 00000000; +5890 : 00000000; +5891 : 00000000; +5892 : 00000000; +5893 : 00000000; +5894 : 00000000; +5895 : 00000000; +5896 : 00000000; +5897 : 00000000; +5898 : 00000000; +5899 : 00000000; +589a : 00000000; +589b : 00000000; +589c : 00000000; +589d : 00000000; +589e : 00000000; +589f : 00000000; +58a0 : 00000000; +58a1 : 00000000; +58a2 : 00000000; +58a3 : 00000000; +58a4 : 00000000; +58a5 : 00000000; +58a6 : 00000000; +58a7 : 00000000; +58a8 : 00000000; +58a9 : 00000000; +58aa : 00000000; +58ab : 00000000; +58ac : 00000000; +58ad : 00000000; +58ae : 00000000; +58af : 00000000; +58b0 : 00000000; +58b1 : 00000000; +58b2 : 00000000; +58b3 : 00000000; +58b4 : 00000000; +58b5 : 00000000; +58b6 : 00000000; +58b7 : 00000000; +58b8 : 00000000; +58b9 : 00000000; +58ba : 00000000; +58bb : 00000000; +58bc : 00000000; +58bd : 00000000; +58be : 00000000; +58bf : 00000000; +58c0 : 00000000; +58c1 : 00000000; +58c2 : 00000000; +58c3 : 00000000; +58c4 : 00000000; +58c5 : 00000000; +58c6 : 00000000; +58c7 : 00000000; +58c8 : 00000000; +58c9 : 00000000; +58ca : 00000000; +58cb : 00000000; +58cc : 00000000; +58cd : 00000000; +58ce : 00000000; +58cf : 00000000; +58d0 : 00000000; +58d1 : 00000000; +58d2 : 00000000; +58d3 : 00000000; +58d4 : 00000000; +58d5 : 00000000; +58d6 : 00000000; +58d7 : 00000000; +58d8 : 00000000; +58d9 : 00000000; +58da : 00000000; +58db : 00000000; +58dc : 00000000; +58dd : 00000000; +58de : 00000000; +58df : 00000000; +58e0 : 00000000; +58e1 : 00000000; +58e2 : 00000000; +58e3 : 00000000; +58e4 : 00000000; +58e5 : 00000000; +58e6 : 00000000; +58e7 : 00000000; +58e8 : 00000000; +58e9 : 00000000; +58ea : 00000000; +58eb : 00000000; +58ec : 00000000; +58ed : 00000000; +58ee : 00000000; +58ef : 00000000; +58f0 : 00000000; +58f1 : 00000000; +58f2 : 00000000; +58f3 : 00000000; +58f4 : 00000000; +58f5 : 00000000; +58f6 : 00000000; +58f7 : 00000000; +58f8 : 00000000; +58f9 : 00000000; +58fa : 00000000; +58fb : 00000000; +58fc : 00000000; +58fd : 00000000; +58fe : 00000000; +58ff : 00000000; +5900 : 00000000; +5901 : 00000000; +5902 : 00000000; +5903 : 00000000; +5904 : 00000000; +5905 : 00000000; +5906 : 00000000; +5907 : 00000000; +5908 : 00000000; +5909 : 00000000; +590a : 00000000; +590b : 00000000; +590c : 00000000; +590d : 00000000; +590e : 00000000; +590f : 00000000; +5910 : 00000000; +5911 : 00000000; +5912 : 00000000; +5913 : 00000000; +5914 : 00000000; +5915 : 00000000; +5916 : 00000000; +5917 : 00000000; +5918 : 00000000; +5919 : 00000000; +591a : 00000000; +591b : 00000000; +591c : 00000000; +591d : 00000000; +591e : 00000000; +591f : 00000000; +5920 : 00000000; +5921 : 00000000; +5922 : 00000000; +5923 : 00000000; +5924 : 00000000; +5925 : 00000000; +5926 : 00000000; +5927 : 00000000; +5928 : 00000000; +5929 : 00000000; +592a : 00000000; +592b : 00000000; +592c : 00000000; +592d : 00000000; +592e : 00000000; +592f : 00000000; +5930 : 00000000; +5931 : 00000000; +5932 : 00000000; +5933 : 00000000; +5934 : 00000000; +5935 : 00000000; +5936 : 00000000; +5937 : 00000000; +5938 : 00000000; +5939 : 00000000; +593a : 00000000; +593b : 00000000; +593c : 00000000; +593d : 00000000; +593e : 00000000; +593f : 00000000; +5940 : 00000000; +5941 : 00000000; +5942 : 00000000; +5943 : 00000000; +5944 : 00000000; +5945 : 00000000; +5946 : 00000000; +5947 : 00000000; +5948 : 00000000; +5949 : 00000000; +594a : 00000000; +594b : 00000000; +594c : 00000000; +594d : 00000000; +594e : 00000000; +594f : 00000000; +5950 : 00000000; +5951 : 00000000; +5952 : 00000000; +5953 : 00000000; +5954 : 00000000; +5955 : 00000000; +5956 : 00000000; +5957 : 00000000; +5958 : 00000000; +5959 : 00000000; +595a : 00000000; +595b : 00000000; +595c : 00000000; +595d : 00000000; +595e : 00000000; +595f : 00000000; +5960 : 00000000; +5961 : 00000000; +5962 : 00000000; +5963 : 00000000; +5964 : 00000000; +5965 : 00000000; +5966 : 00000000; +5967 : 00000000; +5968 : 00000000; +5969 : 00000000; +596a : 00000000; +596b : 00000000; +596c : 00000000; +596d : 00000000; +596e : 00000000; +596f : 00000000; +5970 : 00000000; +5971 : 00000000; +5972 : 00000000; +5973 : 00000000; +5974 : 00000000; +5975 : 00000000; +5976 : 00000000; +5977 : 00000000; +5978 : 00000000; +5979 : 00000000; +597a : 00000000; +597b : 00000000; +597c : 00000000; +597d : 00000000; +597e : 00000000; +597f : 00000000; +5980 : 00000000; +5981 : 00000000; +5982 : 00000000; +5983 : 00000000; +5984 : 00000000; +5985 : 00000000; +5986 : 00000000; +5987 : 00000000; +5988 : 00000000; +5989 : 00000000; +598a : 00000000; +598b : 00000000; +598c : 00000000; +598d : 00000000; +598e : 00000000; +598f : 00000000; +5990 : 00000000; +5991 : 00000000; +5992 : 00000000; +5993 : 00000000; +5994 : 00000000; +5995 : 00000000; +5996 : 00000000; +5997 : 00000000; +5998 : 00000000; +5999 : 00000000; +599a : 00000000; +599b : 00000000; +599c : 00000000; +599d : 00000000; +599e : 00000000; +599f : 00000000; +59a0 : 00000000; +59a1 : 00000000; +59a2 : 00000000; +59a3 : 00000000; +59a4 : 00000000; +59a5 : 00000000; +59a6 : 00000000; +59a7 : 00000000; +59a8 : 00000000; +59a9 : 00000000; +59aa : 00000000; +59ab : 00000000; +59ac : 00000000; +59ad : 00000000; +59ae : 00000000; +59af : 00000000; +59b0 : 00000000; +59b1 : 00000000; +59b2 : 00000000; +59b3 : 00000000; +59b4 : 00000000; +59b5 : 00000000; +59b6 : 00000000; +59b7 : 00000000; +59b8 : 00000000; +59b9 : 00000000; +59ba : 00000000; +59bb : 00000000; +59bc : 00000000; +59bd : 00000000; +59be : 00000000; +59bf : 00000000; +59c0 : 00000000; +59c1 : 00000000; +59c2 : 00000000; +59c3 : 00000000; +59c4 : 00000000; +59c5 : 00000000; +59c6 : 00000000; +59c7 : 00000000; +59c8 : 00000000; +59c9 : 00000000; +59ca : 00000000; +59cb : 00000000; +59cc : 00000000; +59cd : 00000000; +59ce : 00000000; +59cf : 00000000; +59d0 : 00000000; +59d1 : 00000000; +59d2 : 00000000; +59d3 : 00000000; +59d4 : 00000000; +59d5 : 00000000; +59d6 : 00000000; +59d7 : 00000000; +59d8 : 00000000; +59d9 : 00000000; +59da : 00000000; +59db : 00000000; +59dc : 00000000; +59dd : 00000000; +59de : 00000000; +59df : 00000000; +59e0 : 00000000; +59e1 : 00000000; +59e2 : 00000000; +59e3 : 00000000; +59e4 : 00000000; +59e5 : 00000000; +59e6 : 00000000; +59e7 : 00000000; +59e8 : 00000000; +59e9 : 00000000; +59ea : 00000000; +59eb : 00000000; +59ec : 00000000; +59ed : 00000000; +59ee : 00000000; +59ef : 00000000; +59f0 : 00000000; +59f1 : 00000000; +59f2 : 00000000; +59f3 : 00000000; +59f4 : 00000000; +59f5 : 00000000; +59f6 : 00000000; +59f7 : 00000000; +59f8 : 00000000; +59f9 : 00000000; +59fa : 00000000; +59fb : 00000000; +59fc : 00000000; +59fd : 00000000; +59fe : 00000000; +59ff : 00000000; +5a00 : 00000000; +5a01 : 00000000; +5a02 : 00000000; +5a03 : 00000000; +5a04 : 00000000; +5a05 : 00000000; +5a06 : 00000000; +5a07 : 00000000; +5a08 : 00000000; +5a09 : 00000000; +5a0a : 00000000; +5a0b : 00000000; +5a0c : 00000000; +5a0d : 00000000; +5a0e : 00000000; +5a0f : 00000000; +5a10 : 00000000; +5a11 : 00000000; +5a12 : 00000000; +5a13 : 00000000; +5a14 : 00000000; +5a15 : 00000000; +5a16 : 00000000; +5a17 : 00000000; +5a18 : 00000000; +5a19 : 00000000; +5a1a : 00000000; +5a1b : 00000000; +5a1c : 00000000; +5a1d : 00000000; +5a1e : 00000000; +5a1f : 00000000; +5a20 : 00000000; +5a21 : 00000000; +5a22 : 00000000; +5a23 : 00000000; +5a24 : 00000000; +5a25 : 00000000; +5a26 : 00000000; +5a27 : 00000000; +5a28 : 00000000; +5a29 : 00000000; +5a2a : 00000000; +5a2b : 00000000; +5a2c : 00000000; +5a2d : 00000000; +5a2e : 00000000; +5a2f : 00000000; +5a30 : 00000000; +5a31 : 00000000; +5a32 : 00000000; +5a33 : 00000000; +5a34 : 00000000; +5a35 : 00000000; +5a36 : 00000000; +5a37 : 00000000; +5a38 : 00000000; +5a39 : 00000000; +5a3a : 00000000; +5a3b : 00000000; +5a3c : 00000000; +5a3d : 00000000; +5a3e : 00000000; +5a3f : 00000000; +5a40 : 00000000; +5a41 : 00000000; +5a42 : 00000000; +5a43 : 00000000; +5a44 : 00000000; +5a45 : 00000000; +5a46 : 00000000; +5a47 : 00000000; +5a48 : 00000000; +5a49 : 00000000; +5a4a : 00000000; +5a4b : 00000000; +5a4c : 00000000; +5a4d : 00000000; +5a4e : 00000000; +5a4f : 00000000; +5a50 : 00000000; +5a51 : 00000000; +5a52 : 00000000; +5a53 : 00000000; +5a54 : 00000000; +5a55 : 00000000; +5a56 : 00000000; +5a57 : 00000000; +5a58 : 00000000; +5a59 : 00000000; +5a5a : 00000000; +5a5b : 00000000; +5a5c : 00000000; +5a5d : 00000000; +5a5e : 00000000; +5a5f : 00000000; +5a60 : 00000000; +5a61 : 00000000; +5a62 : 00000000; +5a63 : 00000000; +5a64 : 00000000; +5a65 : 00000000; +5a66 : 00000000; +5a67 : 00000000; +5a68 : 00000000; +5a69 : 00000000; +5a6a : 00000000; +5a6b : 00000000; +5a6c : 00000000; +5a6d : 00000000; +5a6e : 00000000; +5a6f : 00000000; +5a70 : 00000000; +5a71 : 00000000; +5a72 : 00000000; +5a73 : 00000000; +5a74 : 00000000; +5a75 : 00000000; +5a76 : 00000000; +5a77 : 00000000; +5a78 : 00000000; +5a79 : 00000000; +5a7a : 00000000; +5a7b : 00000000; +5a7c : 00000000; +5a7d : 00000000; +5a7e : 00000000; +5a7f : 00000000; +5a80 : 00000000; +5a81 : 00000000; +5a82 : 00000000; +5a83 : 00000000; +5a84 : 00000000; +5a85 : 00000000; +5a86 : 00000000; +5a87 : 00000000; +5a88 : 00000000; +5a89 : 00000000; +5a8a : 00000000; +5a8b : 00000000; +5a8c : 00000000; +5a8d : 00000000; +5a8e : 00000000; +5a8f : 00000000; +5a90 : 00000000; +5a91 : 00000000; +5a92 : 00000000; +5a93 : 00000000; +5a94 : 00000000; +5a95 : 00000000; +5a96 : 00000000; +5a97 : 00000000; +5a98 : 00000000; +5a99 : 00000000; +5a9a : 00000000; +5a9b : 00000000; +5a9c : 00000000; +5a9d : 00000000; +5a9e : 00000000; +5a9f : 00000000; +5aa0 : 00000000; +5aa1 : 00000000; +5aa2 : 00000000; +5aa3 : 00000000; +5aa4 : 00000000; +5aa5 : 00000000; +5aa6 : 00000000; +5aa7 : 00000000; +5aa8 : 00000000; +5aa9 : 00000000; +5aaa : 00000000; +5aab : 00000000; +5aac : 00000000; +5aad : 00000000; +5aae : 00000000; +5aaf : 00000000; +5ab0 : 00000000; +5ab1 : 00000000; +5ab2 : 00000000; +5ab3 : 00000000; +5ab4 : 00000000; +5ab5 : 00000000; +5ab6 : 00000000; +5ab7 : 00000000; +5ab8 : 00000000; +5ab9 : 00000000; +5aba : 00000000; +5abb : 00000000; +5abc : 00000000; +5abd : 00000000; +5abe : 00000000; +5abf : 00000000; +5ac0 : 00000000; +5ac1 : 00000000; +5ac2 : 00000000; +5ac3 : 00000000; +5ac4 : 00000000; +5ac5 : 00000000; +5ac6 : 00000000; +5ac7 : 00000000; +5ac8 : 00000000; +5ac9 : 00000000; +5aca : 00000000; +5acb : 00000000; +5acc : 00000000; +5acd : 00000000; +5ace : 00000000; +5acf : 00000000; +5ad0 : 00000000; +5ad1 : 00000000; +5ad2 : 00000000; +5ad3 : 00000000; +5ad4 : 00000000; +5ad5 : 00000000; +5ad6 : 00000000; +5ad7 : 00000000; +5ad8 : 00000000; +5ad9 : 00000000; +5ada : 00000000; +5adb : 00000000; +5adc : 00000000; +5add : 00000000; +5ade : 00000000; +5adf : 00000000; +5ae0 : 00000000; +5ae1 : 00000000; +5ae2 : 00000000; +5ae3 : 00000000; +5ae4 : 00000000; +5ae5 : 00000000; +5ae6 : 00000000; +5ae7 : 00000000; +5ae8 : 00000000; +5ae9 : 00000000; +5aea : 00000000; +5aeb : 00000000; +5aec : 00000000; +5aed : 00000000; +5aee : 00000000; +5aef : 00000000; +5af0 : 00000000; +5af1 : 00000000; +5af2 : 00000000; +5af3 : 00000000; +5af4 : 00000000; +5af5 : 00000000; +5af6 : 00000000; +5af7 : 00000000; +5af8 : 00000000; +5af9 : 00000000; +5afa : 00000000; +5afb : 00000000; +5afc : 00000000; +5afd : 00000000; +5afe : 00000000; +5aff : 00000000; +5b00 : 00000000; +5b01 : 00000000; +5b02 : 00000000; +5b03 : 00000000; +5b04 : 00000000; +5b05 : 00000000; +5b06 : 00000000; +5b07 : 00000000; +5b08 : 00000000; +5b09 : 00000000; +5b0a : 00000000; +5b0b : 00000000; +5b0c : 00000000; +5b0d : 00000000; +5b0e : 00000000; +5b0f : 00000000; +5b10 : 00000000; +5b11 : 00000000; +5b12 : 00000000; +5b13 : 00000000; +5b14 : 00000000; +5b15 : 00000000; +5b16 : 00000000; +5b17 : 00000000; +5b18 : 00000000; +5b19 : 00000000; +5b1a : 00000000; +5b1b : 00000000; +5b1c : 00000000; +5b1d : 00000000; +5b1e : 00000000; +5b1f : 00000000; +5b20 : 00000000; +5b21 : 00000000; +5b22 : 00000000; +5b23 : 00000000; +5b24 : 00000000; +5b25 : 00000000; +5b26 : 00000000; +5b27 : 00000000; +5b28 : 00000000; +5b29 : 00000000; +5b2a : 00000000; +5b2b : 00000000; +5b2c : 00000000; +5b2d : 00000000; +5b2e : 00000000; +5b2f : 00000000; +5b30 : 00000000; +5b31 : 00000000; +5b32 : 00000000; +5b33 : 00000000; +5b34 : 00000000; +5b35 : 00000000; +5b36 : 00000000; +5b37 : 00000000; +5b38 : 00000000; +5b39 : 00000000; +5b3a : 00000000; +5b3b : 00000000; +5b3c : 00000000; +5b3d : 00000000; +5b3e : 00000000; +5b3f : 00000000; +5b40 : 00000000; +5b41 : 00000000; +5b42 : 00000000; +5b43 : 00000000; +5b44 : 00000000; +5b45 : 00000000; +5b46 : 00000000; +5b47 : 00000000; +5b48 : 00000000; +5b49 : 00000000; +5b4a : 00000000; +5b4b : 00000000; +5b4c : 00000000; +5b4d : 00000000; +5b4e : 00000000; +5b4f : 00000000; +5b50 : 00000000; +5b51 : 00000000; +5b52 : 00000000; +5b53 : 00000000; +5b54 : 00000000; +5b55 : 00000000; +5b56 : 00000000; +5b57 : 00000000; +5b58 : 00000000; +5b59 : 00000000; +5b5a : 00000000; +5b5b : 00000000; +5b5c : 00000000; +5b5d : 00000000; +5b5e : 00000000; +5b5f : 00000000; +5b60 : 00000000; +5b61 : 00000000; +5b62 : 00000000; +5b63 : 00000000; +5b64 : 00000000; +5b65 : 00000000; +5b66 : 00000000; +5b67 : 00000000; +5b68 : 00000000; +5b69 : 00000000; +5b6a : 00000000; +5b6b : 00000000; +5b6c : 00000000; +5b6d : 00000000; +5b6e : 00000000; +5b6f : 00000000; +5b70 : 00000000; +5b71 : 00000000; +5b72 : 00000000; +5b73 : 00000000; +5b74 : 00000000; +5b75 : 00000000; +5b76 : 00000000; +5b77 : 00000000; +5b78 : 00000000; +5b79 : 00000000; +5b7a : 00000000; +5b7b : 00000000; +5b7c : 00000000; +5b7d : 00000000; +5b7e : 00000000; +5b7f : 00000000; +5b80 : 00000000; +5b81 : 00000000; +5b82 : 00000000; +5b83 : 00000000; +5b84 : 00000000; +5b85 : 00000000; +5b86 : 00000000; +5b87 : 00000000; +5b88 : 00000000; +5b89 : 00000000; +5b8a : 00000000; +5b8b : 00000000; +5b8c : 00000000; +5b8d : 00000000; +5b8e : 00000000; +5b8f : 00000000; +5b90 : 00000000; +5b91 : 00000000; +5b92 : 00000000; +5b93 : 00000000; +5b94 : 00000000; +5b95 : 00000000; +5b96 : 00000000; +5b97 : 00000000; +5b98 : 00000000; +5b99 : 00000000; +5b9a : 00000000; +5b9b : 00000000; +5b9c : 00000000; +5b9d : 00000000; +5b9e : 00000000; +5b9f : 00000000; +5ba0 : 00000000; +5ba1 : 00000000; +5ba2 : 00000000; +5ba3 : 00000000; +5ba4 : 00000000; +5ba5 : 00000000; +5ba6 : 00000000; +5ba7 : 00000000; +5ba8 : 00000000; +5ba9 : 00000000; +5baa : 00000000; +5bab : 00000000; +5bac : 00000000; +5bad : 00000000; +5bae : 00000000; +5baf : 00000000; +5bb0 : 00000000; +5bb1 : 00000000; +5bb2 : 00000000; +5bb3 : 00000000; +5bb4 : 00000000; +5bb5 : 00000000; +5bb6 : 00000000; +5bb7 : 00000000; +5bb8 : 00000000; +5bb9 : 00000000; +5bba : 00000000; +5bbb : 00000000; +5bbc : 00000000; +5bbd : 00000000; +5bbe : 00000000; +5bbf : 00000000; +5bc0 : 00000000; +5bc1 : 00000000; +5bc2 : 00000000; +5bc3 : 00000000; +5bc4 : 00000000; +5bc5 : 00000000; +5bc6 : 00000000; +5bc7 : 00000000; +5bc8 : 00000000; +5bc9 : 00000000; +5bca : 00000000; +5bcb : 00000000; +5bcc : 00000000; +5bcd : 00000000; +5bce : 00000000; +5bcf : 00000000; +5bd0 : 00000000; +5bd1 : 00000000; +5bd2 : 00000000; +5bd3 : 00000000; +5bd4 : 00000000; +5bd5 : 00000000; +5bd6 : 00000000; +5bd7 : 00000000; +5bd8 : 00000000; +5bd9 : 00000000; +5bda : 00000000; +5bdb : 00000000; +5bdc : 00000000; +5bdd : 00000000; +5bde : 00000000; +5bdf : 00000000; +5be0 : 00000000; +5be1 : 00000000; +5be2 : 00000000; +5be3 : 00000000; +5be4 : 00000000; +5be5 : 00000000; +5be6 : 00000000; +5be7 : 00000000; +5be8 : 00000000; +5be9 : 00000000; +5bea : 00000000; +5beb : 00000000; +5bec : 00000000; +5bed : 00000000; +5bee : 00000000; +5bef : 00000000; +5bf0 : 00000000; +5bf1 : 00000000; +5bf2 : 00000000; +5bf3 : 00000000; +5bf4 : 00000000; +5bf5 : 00000000; +5bf6 : 00000000; +5bf7 : 00000000; +5bf8 : 00000000; +5bf9 : 00000000; +5bfa : 00000000; +5bfb : 00000000; +5bfc : 00000000; +5bfd : 00000000; +5bfe : 00000000; +5bff : 00000000; +5c00 : 00000000; +5c01 : 00000000; +5c02 : 00000000; +5c03 : 00000000; +5c04 : 00000000; +5c05 : 00000000; +5c06 : 00000000; +5c07 : 00000000; +5c08 : 00000000; +5c09 : 00000000; +5c0a : 00000000; +5c0b : 00000000; +5c0c : 00000000; +5c0d : 00000000; +5c0e : 00000000; +5c0f : 00000000; +5c10 : 00000000; +5c11 : 00000000; +5c12 : 00000000; +5c13 : 00000000; +5c14 : 00000000; +5c15 : 00000000; +5c16 : 00000000; +5c17 : 00000000; +5c18 : 00000000; +5c19 : 00000000; +5c1a : 00000000; +5c1b : 00000000; +5c1c : 00000000; +5c1d : 00000000; +5c1e : 00000000; +5c1f : 00000000; +5c20 : 00000000; +5c21 : 00000000; +5c22 : 00000000; +5c23 : 00000000; +5c24 : 00000000; +5c25 : 00000000; +5c26 : 00000000; +5c27 : 00000000; +5c28 : 00000000; +5c29 : 00000000; +5c2a : 00000000; +5c2b : 00000000; +5c2c : 00000000; +5c2d : 00000000; +5c2e : 00000000; +5c2f : 00000000; +5c30 : 00000000; +5c31 : 00000000; +5c32 : 00000000; +5c33 : 00000000; +5c34 : 00000000; +5c35 : 00000000; +5c36 : 00000000; +5c37 : 00000000; +5c38 : 00000000; +5c39 : 00000000; +5c3a : 00000000; +5c3b : 00000000; +5c3c : 00000000; +5c3d : 00000000; +5c3e : 00000000; +5c3f : 00000000; +5c40 : 00000000; +5c41 : 00000000; +5c42 : 00000000; +5c43 : 00000000; +5c44 : 00000000; +5c45 : 00000000; +5c46 : 00000000; +5c47 : 00000000; +5c48 : 00000000; +5c49 : 00000000; +5c4a : 00000000; +5c4b : 00000000; +5c4c : 00000000; +5c4d : 00000000; +5c4e : 00000000; +5c4f : 00000000; +5c50 : 00000000; +5c51 : 00000000; +5c52 : 00000000; +5c53 : 00000000; +5c54 : 00000000; +5c55 : 00000000; +5c56 : 00000000; +5c57 : 00000000; +5c58 : 00000000; +5c59 : 00000000; +5c5a : 00000000; +5c5b : 00000000; +5c5c : 00000000; +5c5d : 00000000; +5c5e : 00000000; +5c5f : 00000000; +5c60 : 00000000; +5c61 : 00000000; +5c62 : 00000000; +5c63 : 00000000; +5c64 : 00000000; +5c65 : 00000000; +5c66 : 00000000; +5c67 : 00000000; +5c68 : 00000000; +5c69 : 00000000; +5c6a : 00000000; +5c6b : 00000000; +5c6c : 00000000; +5c6d : 00000000; +5c6e : 00000000; +5c6f : 00000000; +5c70 : 00000000; +5c71 : 00000000; +5c72 : 00000000; +5c73 : 00000000; +5c74 : 00000000; +5c75 : 00000000; +5c76 : 00000000; +5c77 : 00000000; +5c78 : 00000000; +5c79 : 00000000; +5c7a : 00000000; +5c7b : 00000000; +5c7c : 00000000; +5c7d : 00000000; +5c7e : 00000000; +5c7f : 00000000; +5c80 : 00000000; +5c81 : 00000000; +5c82 : 00000000; +5c83 : 00000000; +5c84 : 00000000; +5c85 : 00000000; +5c86 : 00000000; +5c87 : 00000000; +5c88 : 00000000; +5c89 : 00000000; +5c8a : 00000000; +5c8b : 00000000; +5c8c : 00000000; +5c8d : 00000000; +5c8e : 00000000; +5c8f : 00000000; +5c90 : 00000000; +5c91 : 00000000; +5c92 : 00000000; +5c93 : 00000000; +5c94 : 00000000; +5c95 : 00000000; +5c96 : 00000000; +5c97 : 00000000; +5c98 : 00000000; +5c99 : 00000000; +5c9a : 00000000; +5c9b : 00000000; +5c9c : 00000000; +5c9d : 00000000; +5c9e : 00000000; +5c9f : 00000000; +5ca0 : 00000000; +5ca1 : 00000000; +5ca2 : 00000000; +5ca3 : 00000000; +5ca4 : 00000000; +5ca5 : 00000000; +5ca6 : 00000000; +5ca7 : 00000000; +5ca8 : 00000000; +5ca9 : 00000000; +5caa : 00000000; +5cab : 00000000; +5cac : 00000000; +5cad : 00000000; +5cae : 00000000; +5caf : 00000000; +5cb0 : 00000000; +5cb1 : 00000000; +5cb2 : 00000000; +5cb3 : 00000000; +5cb4 : 00000000; +5cb5 : 00000000; +5cb6 : 00000000; +5cb7 : 00000000; +5cb8 : 00000000; +5cb9 : 00000000; +5cba : 00000000; +5cbb : 00000000; +5cbc : 00000000; +5cbd : 00000000; +5cbe : 00000000; +5cbf : 00000000; +5cc0 : 00000000; +5cc1 : 00000000; +5cc2 : 00000000; +5cc3 : 00000000; +5cc4 : 00000000; +5cc5 : 00000000; +5cc6 : 00000000; +5cc7 : 00000000; +5cc8 : 00000000; +5cc9 : 00000000; +5cca : 00000000; +5ccb : 00000000; +5ccc : 00000000; +5ccd : 00000000; +5cce : 00000000; +5ccf : 00000000; +5cd0 : 00000000; +5cd1 : 00000000; +5cd2 : 00000000; +5cd3 : 00000000; +5cd4 : 00000000; +5cd5 : 00000000; +5cd6 : 00000000; +5cd7 : 00000000; +5cd8 : 00000000; +5cd9 : 00000000; +5cda : 00000000; +5cdb : 00000000; +5cdc : 00000000; +5cdd : 00000000; +5cde : 00000000; +5cdf : 00000000; +5ce0 : 00000000; +5ce1 : 00000000; +5ce2 : 00000000; +5ce3 : 00000000; +5ce4 : 00000000; +5ce5 : 00000000; +5ce6 : 00000000; +5ce7 : 00000000; +5ce8 : 00000000; +5ce9 : 00000000; +5cea : 00000000; +5ceb : 00000000; +5cec : 00000000; +5ced : 00000000; +5cee : 00000000; +5cef : 00000000; +5cf0 : 00000000; +5cf1 : 00000000; +5cf2 : 00000000; +5cf3 : 00000000; +5cf4 : 00000000; +5cf5 : 00000000; +5cf6 : 00000000; +5cf7 : 00000000; +5cf8 : 00000000; +5cf9 : 00000000; +5cfa : 00000000; +5cfb : 00000000; +5cfc : 00000000; +5cfd : 00000000; +5cfe : 00000000; +5cff : 00000000; +5d00 : 00000000; +5d01 : 00000000; +5d02 : 00000000; +5d03 : 00000000; +5d04 : 00000000; +5d05 : 00000000; +5d06 : 00000000; +5d07 : 00000000; +5d08 : 00000000; +5d09 : 00000000; +5d0a : 00000000; +5d0b : 00000000; +5d0c : 00000000; +5d0d : 00000000; +5d0e : 00000000; +5d0f : 00000000; +5d10 : 00000000; +5d11 : 00000000; +5d12 : 00000000; +5d13 : 00000000; +5d14 : 00000000; +5d15 : 00000000; +5d16 : 00000000; +5d17 : 00000000; +5d18 : 00000000; +5d19 : 00000000; +5d1a : 00000000; +5d1b : 00000000; +5d1c : 00000000; +5d1d : 00000000; +5d1e : 00000000; +5d1f : 00000000; +5d20 : 00000000; +5d21 : 00000000; +5d22 : 00000000; +5d23 : 00000000; +5d24 : 00000000; +5d25 : 00000000; +5d26 : 00000000; +5d27 : 00000000; +5d28 : 00000000; +5d29 : 00000000; +5d2a : 00000000; +5d2b : 00000000; +5d2c : 00000000; +5d2d : 00000000; +5d2e : 00000000; +5d2f : 00000000; +5d30 : 00000000; +5d31 : 00000000; +5d32 : 00000000; +5d33 : 00000000; +5d34 : 00000000; +5d35 : 00000000; +5d36 : 00000000; +5d37 : 00000000; +5d38 : 00000000; +5d39 : 00000000; +5d3a : 00000000; +5d3b : 00000000; +5d3c : 00000000; +5d3d : 00000000; +5d3e : 00000000; +5d3f : 00000000; +5d40 : 00000000; +5d41 : 00000000; +5d42 : 00000000; +5d43 : 00000000; +5d44 : 00000000; +5d45 : 00000000; +5d46 : 00000000; +5d47 : 00000000; +5d48 : 00000000; +5d49 : 00000000; +5d4a : 00000000; +5d4b : 00000000; +5d4c : 00000000; +5d4d : 00000000; +5d4e : 00000000; +5d4f : 00000000; +5d50 : 00000000; +5d51 : 00000000; +5d52 : 00000000; +5d53 : 00000000; +5d54 : 00000000; +5d55 : 00000000; +5d56 : 00000000; +5d57 : 00000000; +5d58 : 00000000; +5d59 : 00000000; +5d5a : 00000000; +5d5b : 00000000; +5d5c : 00000000; +5d5d : 00000000; +5d5e : 00000000; +5d5f : 00000000; +5d60 : 00000000; +5d61 : 00000000; +5d62 : 00000000; +5d63 : 00000000; +5d64 : 00000000; +5d65 : 00000000; +5d66 : 00000000; +5d67 : 00000000; +5d68 : 00000000; +5d69 : 00000000; +5d6a : 00000000; +5d6b : 00000000; +5d6c : 00000000; +5d6d : 00000000; +5d6e : 00000000; +5d6f : 00000000; +5d70 : 00000000; +5d71 : 00000000; +5d72 : 00000000; +5d73 : 00000000; +5d74 : 00000000; +5d75 : 00000000; +5d76 : 00000000; +5d77 : 00000000; +5d78 : 00000000; +5d79 : 00000000; +5d7a : 00000000; +5d7b : 00000000; +5d7c : 00000000; +5d7d : 00000000; +5d7e : 00000000; +5d7f : 00000000; +5d80 : 00000000; +5d81 : 00000000; +5d82 : 00000000; +5d83 : 00000000; +5d84 : 00000000; +5d85 : 00000000; +5d86 : 00000000; +5d87 : 00000000; +5d88 : 00000000; +5d89 : 00000000; +5d8a : 00000000; +5d8b : 00000000; +5d8c : 00000000; +5d8d : 00000000; +5d8e : 00000000; +5d8f : 00000000; +5d90 : 00000000; +5d91 : 00000000; +5d92 : 00000000; +5d93 : 00000000; +5d94 : 00000000; +5d95 : 00000000; +5d96 : 00000000; +5d97 : 00000000; +5d98 : 00000000; +5d99 : 00000000; +5d9a : 00000000; +5d9b : 00000000; +5d9c : 00000000; +5d9d : 00000000; +5d9e : 00000000; +5d9f : 00000000; +5da0 : 00000000; +5da1 : 00000000; +5da2 : 00000000; +5da3 : 00000000; +5da4 : 00000000; +5da5 : 00000000; +5da6 : 00000000; +5da7 : 00000000; +5da8 : 00000000; +5da9 : 00000000; +5daa : 00000000; +5dab : 00000000; +5dac : 00000000; +5dad : 00000000; +5dae : 00000000; +5daf : 00000000; +5db0 : 00000000; +5db1 : 00000000; +5db2 : 00000000; +5db3 : 00000000; +5db4 : 00000000; +5db5 : 00000000; +5db6 : 00000000; +5db7 : 00000000; +5db8 : 00000000; +5db9 : 00000000; +5dba : 00000000; +5dbb : 00000000; +5dbc : 00000000; +5dbd : 00000000; +5dbe : 00000000; +5dbf : 00000000; +5dc0 : 00000000; +5dc1 : 00000000; +5dc2 : 00000000; +5dc3 : 00000000; +5dc4 : 00000000; +5dc5 : 00000000; +5dc6 : 00000000; +5dc7 : 00000000; +5dc8 : 00000000; +5dc9 : 00000000; +5dca : 00000000; +5dcb : 00000000; +5dcc : 00000000; +5dcd : 00000000; +5dce : 00000000; +5dcf : 00000000; +5dd0 : 00000000; +5dd1 : 00000000; +5dd2 : 00000000; +5dd3 : 00000000; +5dd4 : 00000000; +5dd5 : 00000000; +5dd6 : 00000000; +5dd7 : 00000000; +5dd8 : 00000000; +5dd9 : 00000000; +5dda : 00000000; +5ddb : 00000000; +5ddc : 00000000; +5ddd : 00000000; +5dde : 00000000; +5ddf : 00000000; +5de0 : 00000000; +5de1 : 00000000; +5de2 : 00000000; +5de3 : 00000000; +5de4 : 00000000; +5de5 : 00000000; +5de6 : 00000000; +5de7 : 00000000; +5de8 : 00000000; +5de9 : 00000000; +5dea : 00000000; +5deb : 00000000; +5dec : 00000000; +5ded : 00000000; +5dee : 00000000; +5def : 00000000; +5df0 : 00000000; +5df1 : 00000000; +5df2 : 00000000; +5df3 : 00000000; +5df4 : 00000000; +5df5 : 00000000; +5df6 : 00000000; +5df7 : 00000000; +5df8 : 00000000; +5df9 : 00000000; +5dfa : 00000000; +5dfb : 00000000; +5dfc : 00000000; +5dfd : 00000000; +5dfe : 00000000; +5dff : 00000000; +5e00 : 00000000; +5e01 : 00000000; +5e02 : 00000000; +5e03 : 00000000; +5e04 : 00000000; +5e05 : 00000000; +5e06 : 00000000; +5e07 : 00000000; +5e08 : 00000000; +5e09 : 00000000; +5e0a : 00000000; +5e0b : 00000000; +5e0c : 00000000; +5e0d : 00000000; +5e0e : 00000000; +5e0f : 00000000; +5e10 : 00000000; +5e11 : 00000000; +5e12 : 00000000; +5e13 : 00000000; +5e14 : 00000000; +5e15 : 00000000; +5e16 : 00000000; +5e17 : 00000000; +5e18 : 00000000; +5e19 : 00000000; +5e1a : 00000000; +5e1b : 00000000; +5e1c : 00000000; +5e1d : 00000000; +5e1e : 00000000; +5e1f : 00000000; +5e20 : 00000000; +5e21 : 00000000; +5e22 : 00000000; +5e23 : 00000000; +5e24 : 00000000; +5e25 : 00000000; +5e26 : 00000000; +5e27 : 00000000; +5e28 : 00000000; +5e29 : 00000000; +5e2a : 00000000; +5e2b : 00000000; +5e2c : 00000000; +5e2d : 00000000; +5e2e : 00000000; +5e2f : 00000000; +5e30 : 00000000; +5e31 : 00000000; +5e32 : 00000000; +5e33 : 00000000; +5e34 : 00000000; +5e35 : 00000000; +5e36 : 00000000; +5e37 : 00000000; +5e38 : 00000000; +5e39 : 00000000; +5e3a : 00000000; +5e3b : 00000000; +5e3c : 00000000; +5e3d : 00000000; +5e3e : 00000000; +5e3f : 00000000; +5e40 : 00000000; +5e41 : 00000000; +5e42 : 00000000; +5e43 : 00000000; +5e44 : 00000000; +5e45 : 00000000; +5e46 : 00000000; +5e47 : 00000000; +5e48 : 00000000; +5e49 : 00000000; +5e4a : 00000000; +5e4b : 00000000; +5e4c : 00000000; +5e4d : 00000000; +5e4e : 00000000; +5e4f : 00000000; +5e50 : 00000000; +5e51 : 00000000; +5e52 : 00000000; +5e53 : 00000000; +5e54 : 00000000; +5e55 : 00000000; +5e56 : 00000000; +5e57 : 00000000; +5e58 : 00000000; +5e59 : 00000000; +5e5a : 00000000; +5e5b : 00000000; +5e5c : 00000000; +5e5d : 00000000; +5e5e : 00000000; +5e5f : 00000000; +5e60 : 00000000; +5e61 : 00000000; +5e62 : 00000000; +5e63 : 00000000; +5e64 : 00000000; +5e65 : 00000000; +5e66 : 00000000; +5e67 : 00000000; +5e68 : 00000000; +5e69 : 00000000; +5e6a : 00000000; +5e6b : 00000000; +5e6c : 00000000; +5e6d : 00000000; +5e6e : 00000000; +5e6f : 00000000; +5e70 : 00000000; +5e71 : 00000000; +5e72 : 00000000; +5e73 : 00000000; +5e74 : 00000000; +5e75 : 00000000; +5e76 : 00000000; +5e77 : 00000000; +5e78 : 00000000; +5e79 : 00000000; +5e7a : 00000000; +5e7b : 00000000; +5e7c : 00000000; +5e7d : 00000000; +5e7e : 00000000; +5e7f : 00000000; +5e80 : 00000000; +5e81 : 00000000; +5e82 : 00000000; +5e83 : 00000000; +5e84 : 00000000; +5e85 : 00000000; +5e86 : 00000000; +5e87 : 00000000; +5e88 : 00000000; +5e89 : 00000000; +5e8a : 00000000; +5e8b : 00000000; +5e8c : 00000000; +5e8d : 00000000; +5e8e : 00000000; +5e8f : 00000000; +5e90 : 00000000; +5e91 : 00000000; +5e92 : 00000000; +5e93 : 00000000; +5e94 : 00000000; +5e95 : 00000000; +5e96 : 00000000; +5e97 : 00000000; +5e98 : 00000000; +5e99 : 00000000; +5e9a : 00000000; +5e9b : 00000000; +5e9c : 00000000; +5e9d : 00000000; +5e9e : 00000000; +5e9f : 00000000; +5ea0 : 00000000; +5ea1 : 00000000; +5ea2 : 00000000; +5ea3 : 00000000; +5ea4 : 00000000; +5ea5 : 00000000; +5ea6 : 00000000; +5ea7 : 00000000; +5ea8 : 00000000; +5ea9 : 00000000; +5eaa : 00000000; +5eab : 00000000; +5eac : 00000000; +5ead : 00000000; +5eae : 00000000; +5eaf : 00000000; +5eb0 : 00000000; +5eb1 : 00000000; +5eb2 : 00000000; +5eb3 : 00000000; +5eb4 : 00000000; +5eb5 : 00000000; +5eb6 : 00000000; +5eb7 : 00000000; +5eb8 : 00000000; +5eb9 : 00000000; +5eba : 00000000; +5ebb : 00000000; +5ebc : 00000000; +5ebd : 00000000; +5ebe : 00000000; +5ebf : 00000000; +5ec0 : 00000000; +5ec1 : 00000000; +5ec2 : 00000000; +5ec3 : 00000000; +5ec4 : 00000000; +5ec5 : 00000000; +5ec6 : 00000000; +5ec7 : 00000000; +5ec8 : 00000000; +5ec9 : 00000000; +5eca : 00000000; +5ecb : 00000000; +5ecc : 00000000; +5ecd : 00000000; +5ece : 00000000; +5ecf : 00000000; +5ed0 : 00000000; +5ed1 : 00000000; +5ed2 : 00000000; +5ed3 : 00000000; +5ed4 : 00000000; +5ed5 : 00000000; +5ed6 : 00000000; +5ed7 : 00000000; +5ed8 : 00000000; +5ed9 : 00000000; +5eda : 00000000; +5edb : 00000000; +5edc : 00000000; +5edd : 00000000; +5ede : 00000000; +5edf : 00000000; +5ee0 : 00000000; +5ee1 : 00000000; +5ee2 : 00000000; +5ee3 : 00000000; +5ee4 : 00000000; +5ee5 : 00000000; +5ee6 : 00000000; +5ee7 : 00000000; +5ee8 : 00000000; +5ee9 : 00000000; +5eea : 00000000; +5eeb : 00000000; +5eec : 00000000; +5eed : 00000000; +5eee : 00000000; +5eef : 00000000; +5ef0 : 00000000; +5ef1 : 00000000; +5ef2 : 00000000; +5ef3 : 00000000; +5ef4 : 00000000; +5ef5 : 00000000; +5ef6 : 00000000; +5ef7 : 00000000; +5ef8 : 00000000; +5ef9 : 00000000; +5efa : 00000000; +5efb : 00000000; +5efc : 00000000; +5efd : 00000000; +5efe : 00000000; +5eff : 00000000; +5f00 : 00000000; +5f01 : 00000000; +5f02 : 00000000; +5f03 : 00000000; +5f04 : 00000000; +5f05 : 00000000; +5f06 : 00000000; +5f07 : 00000000; +5f08 : 00000000; +5f09 : 00000000; +5f0a : 00000000; +5f0b : 00000000; +5f0c : 00000000; +5f0d : 00000000; +5f0e : 00000000; +5f0f : 00000000; +5f10 : 00000000; +5f11 : 00000000; +5f12 : 00000000; +5f13 : 00000000; +5f14 : 00000000; +5f15 : 00000000; +5f16 : 00000000; +5f17 : 00000000; +5f18 : 00000000; +5f19 : 00000000; +5f1a : 00000000; +5f1b : 00000000; +5f1c : 00000000; +5f1d : 00000000; +5f1e : 00000000; +5f1f : 00000000; +5f20 : 00000000; +5f21 : 00000000; +5f22 : 00000000; +5f23 : 00000000; +5f24 : 00000000; +5f25 : 00000000; +5f26 : 00000000; +5f27 : 00000000; +5f28 : 00000000; +5f29 : 00000000; +5f2a : 00000000; +5f2b : 00000000; +5f2c : 00000000; +5f2d : 00000000; +5f2e : 00000000; +5f2f : 00000000; +5f30 : 00000000; +5f31 : 00000000; +5f32 : 00000000; +5f33 : 00000000; +5f34 : 00000000; +5f35 : 00000000; +5f36 : 00000000; +5f37 : 00000000; +5f38 : 00000000; +5f39 : 00000000; +5f3a : 00000000; +5f3b : 00000000; +5f3c : 00000000; +5f3d : 00000000; +5f3e : 00000000; +5f3f : 00000000; +5f40 : 00000000; +5f41 : 00000000; +5f42 : 00000000; +5f43 : 00000000; +5f44 : 00000000; +5f45 : 00000000; +5f46 : 00000000; +5f47 : 00000000; +5f48 : 00000000; +5f49 : 00000000; +5f4a : 00000000; +5f4b : 00000000; +5f4c : 00000000; +5f4d : 00000000; +5f4e : 00000000; +5f4f : 00000000; +5f50 : 00000000; +5f51 : 00000000; +5f52 : 00000000; +5f53 : 00000000; +5f54 : 00000000; +5f55 : 00000000; +5f56 : 00000000; +5f57 : 00000000; +5f58 : 00000000; +5f59 : 00000000; +5f5a : 00000000; +5f5b : 00000000; +5f5c : 00000000; +5f5d : 00000000; +5f5e : 00000000; +5f5f : 00000000; +5f60 : 00000000; +5f61 : 00000000; +5f62 : 00000000; +5f63 : 00000000; +5f64 : 00000000; +5f65 : 00000000; +5f66 : 00000000; +5f67 : 00000000; +5f68 : 00000000; +5f69 : 00000000; +5f6a : 00000000; +5f6b : 00000000; +5f6c : 00000000; +5f6d : 00000000; +5f6e : 00000000; +5f6f : 00000000; +5f70 : 00000000; +5f71 : 00000000; +5f72 : 00000000; +5f73 : 00000000; +5f74 : 00000000; +5f75 : 00000000; +5f76 : 00000000; +5f77 : 00000000; +5f78 : 00000000; +5f79 : 00000000; +5f7a : 00000000; +5f7b : 00000000; +5f7c : 00000000; +5f7d : 00000000; +5f7e : 00000000; +5f7f : 00000000; +5f80 : 00000000; +5f81 : 00000000; +5f82 : 00000000; +5f83 : 00000000; +5f84 : 00000000; +5f85 : 00000000; +5f86 : 00000000; +5f87 : 00000000; +5f88 : 00000000; +5f89 : 00000000; +5f8a : 00000000; +5f8b : 00000000; +5f8c : 00000000; +5f8d : 00000000; +5f8e : 00000000; +5f8f : 00000000; +5f90 : 00000000; +5f91 : 00000000; +5f92 : 00000000; +5f93 : 00000000; +5f94 : 00000000; +5f95 : 00000000; +5f96 : 00000000; +5f97 : 00000000; +5f98 : 00000000; +5f99 : 00000000; +5f9a : 00000000; +5f9b : 00000000; +5f9c : 00000000; +5f9d : 00000000; +5f9e : 00000000; +5f9f : 00000000; +5fa0 : 00000000; +5fa1 : 00000000; +5fa2 : 00000000; +5fa3 : 00000000; +5fa4 : 00000000; +5fa5 : 00000000; +5fa6 : 00000000; +5fa7 : 00000000; +5fa8 : 00000000; +5fa9 : 00000000; +5faa : 00000000; +5fab : 00000000; +5fac : 00000000; +5fad : 00000000; +5fae : 00000000; +5faf : 00000000; +5fb0 : 00000000; +5fb1 : 00000000; +5fb2 : 00000000; +5fb3 : 00000000; +5fb4 : 00000000; +5fb5 : 00000000; +5fb6 : 00000000; +5fb7 : 00000000; +5fb8 : 00000000; +5fb9 : 00000000; +5fba : 00000000; +5fbb : 00000000; +5fbc : 00000000; +5fbd : 00000000; +5fbe : 00000000; +5fbf : 00000000; +5fc0 : 00000000; +5fc1 : 00000000; +5fc2 : 00000000; +5fc3 : 00000000; +5fc4 : 00000000; +5fc5 : 00000000; +5fc6 : 00000000; +5fc7 : 00000000; +5fc8 : 00000000; +5fc9 : 00000000; +5fca : 00000000; +5fcb : 00000000; +5fcc : 00000000; +5fcd : 00000000; +5fce : 00000000; +5fcf : 00000000; +5fd0 : 00000000; +5fd1 : 00000000; +5fd2 : 00000000; +5fd3 : 00000000; +5fd4 : 00000000; +5fd5 : 00000000; +5fd6 : 00000000; +5fd7 : 00000000; +5fd8 : 00000000; +5fd9 : 00000000; +5fda : 00000000; +5fdb : 00000000; +5fdc : 00000000; +5fdd : 00000000; +5fde : 00000000; +5fdf : 00000000; +5fe0 : 00000000; +5fe1 : 00000000; +5fe2 : 00000000; +5fe3 : 00000000; +5fe4 : 00000000; +5fe5 : 00000000; +5fe6 : 00000000; +5fe7 : 00000000; +5fe8 : 00000000; +5fe9 : 00000000; +5fea : 00000000; +5feb : 00000000; +5fec : 00000000; +5fed : 00000000; +5fee : 00000000; +5fef : 00000000; +5ff0 : 00000000; +5ff1 : 00000000; +5ff2 : 00000000; +5ff3 : 00000000; +5ff4 : 00000000; +5ff5 : 00000000; +5ff6 : 00000000; +5ff7 : 00000000; +5ff8 : 00000000; +5ff9 : 00000000; +5ffa : 00000000; +5ffb : 00000000; +5ffc : 00000000; +5ffd : 00000000; +5ffe : 00000000; +5fff : 00000000; +6000 : 00000000; +6001 : 00000000; +6002 : 00000000; +6003 : 00000000; +6004 : 00000000; +6005 : 00000000; +6006 : 00000000; +6007 : 00000000; +6008 : 00000000; +6009 : 00000000; +600a : 00000000; +600b : 00000000; +600c : 00000000; +600d : 00000000; +600e : 00000000; +600f : 00000000; +6010 : 00000000; +6011 : 00000000; +6012 : 00000000; +6013 : 00000000; +6014 : 00000000; +6015 : 00000000; +6016 : 00000000; +6017 : 00000000; +6018 : 00000000; +6019 : 00000000; +601a : 00000000; +601b : 00000000; +601c : 00000000; +601d : 00000000; +601e : 00000000; +601f : 00000000; +6020 : 00000000; +6021 : 00000000; +6022 : 00000000; +6023 : 00000000; +6024 : 00000000; +6025 : 00000000; +6026 : 00000000; +6027 : 00000000; +6028 : 00000000; +6029 : 00000000; +602a : 00000000; +602b : 00000000; +602c : 00000000; +602d : 00000000; +602e : 00000000; +602f : 00000000; +6030 : 00000000; +6031 : 00000000; +6032 : 00000000; +6033 : 00000000; +6034 : 00000000; +6035 : 00000000; +6036 : 00000000; +6037 : 00000000; +6038 : 00000000; +6039 : 00000000; +603a : 00000000; +603b : 00000000; +603c : 00000000; +603d : 00000000; +603e : 00000000; +603f : 00000000; +6040 : 00000000; +6041 : 00000000; +6042 : 00000000; +6043 : 00000000; +6044 : 00000000; +6045 : 00000000; +6046 : 00000000; +6047 : 00000000; +6048 : 00000000; +6049 : 00000000; +604a : 00000000; +604b : 00000000; +604c : 00000000; +604d : 00000000; +604e : 00000000; +604f : 00000000; +6050 : 00000000; +6051 : 00000000; +6052 : 00000000; +6053 : 00000000; +6054 : 00000000; +6055 : 00000000; +6056 : 00000000; +6057 : 00000000; +6058 : 00000000; +6059 : 00000000; +605a : 00000000; +605b : 00000000; +605c : 00000000; +605d : 00000000; +605e : 00000000; +605f : 00000000; +6060 : 00000000; +6061 : 00000000; +6062 : 00000000; +6063 : 00000000; +6064 : 00000000; +6065 : 00000000; +6066 : 00000000; +6067 : 00000000; +6068 : 00000000; +6069 : 00000000; +606a : 00000000; +606b : 00000000; +606c : 00000000; +606d : 00000000; +606e : 00000000; +606f : 00000000; +6070 : 00000000; +6071 : 00000000; +6072 : 00000000; +6073 : 00000000; +6074 : 00000000; +6075 : 00000000; +6076 : 00000000; +6077 : 00000000; +6078 : 00000000; +6079 : 00000000; +607a : 00000000; +607b : 00000000; +607c : 00000000; +607d : 00000000; +607e : 00000000; +607f : 00000000; +6080 : 00000000; +6081 : 00000000; +6082 : 00000000; +6083 : 00000000; +6084 : 00000000; +6085 : 00000000; +6086 : 00000000; +6087 : 00000000; +6088 : 00000000; +6089 : 00000000; +608a : 00000000; +608b : 00000000; +608c : 00000000; +608d : 00000000; +608e : 00000000; +608f : 00000000; +6090 : 00000000; +6091 : 00000000; +6092 : 00000000; +6093 : 00000000; +6094 : 00000000; +6095 : 00000000; +6096 : 00000000; +6097 : 00000000; +6098 : 00000000; +6099 : 00000000; +609a : 00000000; +609b : 00000000; +609c : 00000000; +609d : 00000000; +609e : 00000000; +609f : 00000000; +60a0 : 00000000; +60a1 : 00000000; +60a2 : 00000000; +60a3 : 00000000; +60a4 : 00000000; +60a5 : 00000000; +60a6 : 00000000; +60a7 : 00000000; +60a8 : 00000000; +60a9 : 00000000; +60aa : 00000000; +60ab : 00000000; +60ac : 00000000; +60ad : 00000000; +60ae : 00000000; +60af : 00000000; +60b0 : 00000000; +60b1 : 00000000; +60b2 : 00000000; +60b3 : 00000000; +60b4 : 00000000; +60b5 : 00000000; +60b6 : 00000000; +60b7 : 00000000; +60b8 : 00000000; +60b9 : 00000000; +60ba : 00000000; +60bb : 00000000; +60bc : 00000000; +60bd : 00000000; +60be : 00000000; +60bf : 00000000; +60c0 : 00000000; +60c1 : 00000000; +60c2 : 00000000; +60c3 : 00000000; +60c4 : 00000000; +60c5 : 00000000; +60c6 : 00000000; +60c7 : 00000000; +60c8 : 00000000; +60c9 : 00000000; +60ca : 00000000; +60cb : 00000000; +60cc : 00000000; +60cd : 00000000; +60ce : 00000000; +60cf : 00000000; +60d0 : 00000000; +60d1 : 00000000; +60d2 : 00000000; +60d3 : 00000000; +60d4 : 00000000; +60d5 : 00000000; +60d6 : 00000000; +60d7 : 00000000; +60d8 : 00000000; +60d9 : 00000000; +60da : 00000000; +60db : 00000000; +60dc : 00000000; +60dd : 00000000; +60de : 00000000; +60df : 00000000; +60e0 : 00000000; +60e1 : 00000000; +60e2 : 00000000; +60e3 : 00000000; +60e4 : 00000000; +60e5 : 00000000; +60e6 : 00000000; +60e7 : 00000000; +60e8 : 00000000; +60e9 : 00000000; +60ea : 00000000; +60eb : 00000000; +60ec : 00000000; +60ed : 00000000; +60ee : 00000000; +60ef : 00000000; +60f0 : 00000000; +60f1 : 00000000; +60f2 : 00000000; +60f3 : 00000000; +60f4 : 00000000; +60f5 : 00000000; +60f6 : 00000000; +60f7 : 00000000; +60f8 : 00000000; +60f9 : 00000000; +60fa : 00000000; +60fb : 00000000; +60fc : 00000000; +60fd : 00000000; +60fe : 00000000; +60ff : 00000000; +6100 : 00000000; +6101 : 00000000; +6102 : 00000000; +6103 : 00000000; +6104 : 00000000; +6105 : 00000000; +6106 : 00000000; +6107 : 00000000; +6108 : 00000000; +6109 : 00000000; +610a : 00000000; +610b : 00000000; +610c : 00000000; +610d : 00000000; +610e : 00000000; +610f : 00000000; +6110 : 00000000; +6111 : 00000000; +6112 : 00000000; +6113 : 00000000; +6114 : 00000000; +6115 : 00000000; +6116 : 00000000; +6117 : 00000000; +6118 : 00000000; +6119 : 00000000; +611a : 00000000; +611b : 00000000; +611c : 00000000; +611d : 00000000; +611e : 00000000; +611f : 00000000; +6120 : 00000000; +6121 : 00000000; +6122 : 00000000; +6123 : 00000000; +6124 : 00000000; +6125 : 00000000; +6126 : 00000000; +6127 : 00000000; +6128 : 00000000; +6129 : 00000000; +612a : 00000000; +612b : 00000000; +612c : 00000000; +612d : 00000000; +612e : 00000000; +612f : 00000000; +6130 : 00000000; +6131 : 00000000; +6132 : 00000000; +6133 : 00000000; +6134 : 00000000; +6135 : 00000000; +6136 : 00000000; +6137 : 00000000; +6138 : 00000000; +6139 : 00000000; +613a : 00000000; +613b : 00000000; +613c : 00000000; +613d : 00000000; +613e : 00000000; +613f : 00000000; +6140 : 00000000; +6141 : 00000000; +6142 : 00000000; +6143 : 00000000; +6144 : 00000000; +6145 : 00000000; +6146 : 00000000; +6147 : 00000000; +6148 : 00000000; +6149 : 00000000; +614a : 00000000; +614b : 00000000; +614c : 00000000; +614d : 00000000; +614e : 00000000; +614f : 00000000; +6150 : 00000000; +6151 : 00000000; +6152 : 00000000; +6153 : 00000000; +6154 : 00000000; +6155 : 00000000; +6156 : 00000000; +6157 : 00000000; +6158 : 00000000; +6159 : 00000000; +615a : 00000000; +615b : 00000000; +615c : 00000000; +615d : 00000000; +615e : 00000000; +615f : 00000000; +6160 : 00000000; +6161 : 00000000; +6162 : 00000000; +6163 : 00000000; +6164 : 00000000; +6165 : 00000000; +6166 : 00000000; +6167 : 00000000; +6168 : 00000000; +6169 : 00000000; +616a : 00000000; +616b : 00000000; +616c : 00000000; +616d : 00000000; +616e : 00000000; +616f : 00000000; +6170 : 00000000; +6171 : 00000000; +6172 : 00000000; +6173 : 00000000; +6174 : 00000000; +6175 : 00000000; +6176 : 00000000; +6177 : 00000000; +6178 : 00000000; +6179 : 00000000; +617a : 00000000; +617b : 00000000; +617c : 00000000; +617d : 00000000; +617e : 00000000; +617f : 00000000; +6180 : 00000000; +6181 : 00000000; +6182 : 00000000; +6183 : 00000000; +6184 : 00000000; +6185 : 00000000; +6186 : 00000000; +6187 : 00000000; +6188 : 00000000; +6189 : 00000000; +618a : 00000000; +618b : 00000000; +618c : 00000000; +618d : 00000000; +618e : 00000000; +618f : 00000000; +6190 : 00000000; +6191 : 00000000; +6192 : 00000000; +6193 : 00000000; +6194 : 00000000; +6195 : 00000000; +6196 : 00000000; +6197 : 00000000; +6198 : 00000000; +6199 : 00000000; +619a : 00000000; +619b : 00000000; +619c : 00000000; +619d : 00000000; +619e : 00000000; +619f : 00000000; +61a0 : 00000000; +61a1 : 00000000; +61a2 : 00000000; +61a3 : 00000000; +61a4 : 00000000; +61a5 : 00000000; +61a6 : 00000000; +61a7 : 00000000; +61a8 : 00000000; +61a9 : 00000000; +61aa : 00000000; +61ab : 00000000; +61ac : 00000000; +61ad : 00000000; +61ae : 00000000; +61af : 00000000; +61b0 : 00000000; +61b1 : 00000000; +61b2 : 00000000; +61b3 : 00000000; +61b4 : 00000000; +61b5 : 00000000; +61b6 : 00000000; +61b7 : 00000000; +61b8 : 00000000; +61b9 : 00000000; +61ba : 00000000; +61bb : 00000000; +61bc : 00000000; +61bd : 00000000; +61be : 00000000; +61bf : 00000000; +61c0 : 00000000; +61c1 : 00000000; +61c2 : 00000000; +61c3 : 00000000; +61c4 : 00000000; +61c5 : 00000000; +61c6 : 00000000; +61c7 : 00000000; +61c8 : 00000000; +61c9 : 00000000; +61ca : 00000000; +61cb : 00000000; +61cc : 00000000; +61cd : 00000000; +61ce : 00000000; +61cf : 00000000; +61d0 : 00000000; +61d1 : 00000000; +61d2 : 00000000; +61d3 : 00000000; +61d4 : 00000000; +61d5 : 00000000; +61d6 : 00000000; +61d7 : 00000000; +61d8 : 00000000; +61d9 : 00000000; +61da : 00000000; +61db : 00000000; +61dc : 00000000; +61dd : 00000000; +61de : 00000000; +61df : 00000000; +61e0 : 00000000; +61e1 : 00000000; +61e2 : 00000000; +61e3 : 00000000; +61e4 : 00000000; +61e5 : 00000000; +61e6 : 00000000; +61e7 : 00000000; +61e8 : 00000000; +61e9 : 00000000; +61ea : 00000000; +61eb : 00000000; +61ec : 00000000; +61ed : 00000000; +61ee : 00000000; +61ef : 00000000; +61f0 : 00000000; +61f1 : 00000000; +61f2 : 00000000; +61f3 : 00000000; +61f4 : 00000000; +61f5 : 00000000; +61f6 : 00000000; +61f7 : 00000000; +61f8 : 00000000; +61f9 : 00000000; +61fa : 00000000; +61fb : 00000000; +61fc : 00000000; +61fd : 00000000; +61fe : 00000000; +61ff : 00000000; +6200 : 00000000; +6201 : 00000000; +6202 : 00000000; +6203 : 00000000; +6204 : 00000000; +6205 : 00000000; +6206 : 00000000; +6207 : 00000000; +6208 : 00000000; +6209 : 00000000; +620a : 00000000; +620b : 00000000; +620c : 00000000; +620d : 00000000; +620e : 00000000; +620f : 00000000; +6210 : 00000000; +6211 : 00000000; +6212 : 00000000; +6213 : 00000000; +6214 : 00000000; +6215 : 00000000; +6216 : 00000000; +6217 : 00000000; +6218 : 00000000; +6219 : 00000000; +621a : 00000000; +621b : 00000000; +621c : 00000000; +621d : 00000000; +621e : 00000000; +621f : 00000000; +6220 : 00000000; +6221 : 00000000; +6222 : 00000000; +6223 : 00000000; +6224 : 00000000; +6225 : 00000000; +6226 : 00000000; +6227 : 00000000; +6228 : 00000000; +6229 : 00000000; +622a : 00000000; +622b : 00000000; +622c : 00000000; +622d : 00000000; +622e : 00000000; +622f : 00000000; +6230 : 00000000; +6231 : 00000000; +6232 : 00000000; +6233 : 00000000; +6234 : 00000000; +6235 : 00000000; +6236 : 00000000; +6237 : 00000000; +6238 : 00000000; +6239 : 00000000; +623a : 00000000; +623b : 00000000; +623c : 00000000; +623d : 00000000; +623e : 00000000; +623f : 00000000; +6240 : 00000000; +6241 : 00000000; +6242 : 00000000; +6243 : 00000000; +6244 : 00000000; +6245 : 00000000; +6246 : 00000000; +6247 : 00000000; +6248 : 00000000; +6249 : 00000000; +624a : 00000000; +624b : 00000000; +624c : 00000000; +624d : 00000000; +624e : 00000000; +624f : 00000000; +6250 : 00000000; +6251 : 00000000; +6252 : 00000000; +6253 : 00000000; +6254 : 00000000; +6255 : 00000000; +6256 : 00000000; +6257 : 00000000; +6258 : 00000000; +6259 : 00000000; +625a : 00000000; +625b : 00000000; +625c : 00000000; +625d : 00000000; +625e : 00000000; +625f : 00000000; +6260 : 00000000; +6261 : 00000000; +6262 : 00000000; +6263 : 00000000; +6264 : 00000000; +6265 : 00000000; +6266 : 00000000; +6267 : 00000000; +6268 : 00000000; +6269 : 00000000; +626a : 00000000; +626b : 00000000; +626c : 00000000; +626d : 00000000; +626e : 00000000; +626f : 00000000; +6270 : 00000000; +6271 : 00000000; +6272 : 00000000; +6273 : 00000000; +6274 : 00000000; +6275 : 00000000; +6276 : 00000000; +6277 : 00000000; +6278 : 00000000; +6279 : 00000000; +627a : 00000000; +627b : 00000000; +627c : 00000000; +627d : 00000000; +627e : 00000000; +627f : 00000000; +6280 : 00000000; +6281 : 00000000; +6282 : 00000000; +6283 : 00000000; +6284 : 00000000; +6285 : 00000000; +6286 : 00000000; +6287 : 00000000; +6288 : 00000000; +6289 : 00000000; +628a : 00000000; +628b : 00000000; +628c : 00000000; +628d : 00000000; +628e : 00000000; +628f : 00000000; +6290 : 00000000; +6291 : 00000000; +6292 : 00000000; +6293 : 00000000; +6294 : 00000000; +6295 : 00000000; +6296 : 00000000; +6297 : 00000000; +6298 : 00000000; +6299 : 00000000; +629a : 00000000; +629b : 00000000; +629c : 00000000; +629d : 00000000; +629e : 00000000; +629f : 00000000; +62a0 : 00000000; +62a1 : 00000000; +62a2 : 00000000; +62a3 : 00000000; +62a4 : 00000000; +62a5 : 00000000; +62a6 : 00000000; +62a7 : 00000000; +62a8 : 00000000; +62a9 : 00000000; +62aa : 00000000; +62ab : 00000000; +62ac : 00000000; +62ad : 00000000; +62ae : 00000000; +62af : 00000000; +62b0 : 00000000; +62b1 : 00000000; +62b2 : 00000000; +62b3 : 00000000; +62b4 : 00000000; +62b5 : 00000000; +62b6 : 00000000; +62b7 : 00000000; +62b8 : 00000000; +62b9 : 00000000; +62ba : 00000000; +62bb : 00000000; +62bc : 00000000; +62bd : 00000000; +62be : 00000000; +62bf : 00000000; +62c0 : 00000000; +62c1 : 00000000; +62c2 : 00000000; +62c3 : 00000000; +62c4 : 00000000; +62c5 : 00000000; +62c6 : 00000000; +62c7 : 00000000; +62c8 : 00000000; +62c9 : 00000000; +62ca : 00000000; +62cb : 00000000; +62cc : 00000000; +62cd : 00000000; +62ce : 00000000; +62cf : 00000000; +62d0 : 00000000; +62d1 : 00000000; +62d2 : 00000000; +62d3 : 00000000; +62d4 : 00000000; +62d5 : 00000000; +62d6 : 00000000; +62d7 : 00000000; +62d8 : 00000000; +62d9 : 00000000; +62da : 00000000; +62db : 00000000; +62dc : 00000000; +62dd : 00000000; +62de : 00000000; +62df : 00000000; +62e0 : 00000000; +62e1 : 00000000; +62e2 : 00000000; +62e3 : 00000000; +62e4 : 00000000; +62e5 : 00000000; +62e6 : 00000000; +62e7 : 00000000; +62e8 : 00000000; +62e9 : 00000000; +62ea : 00000000; +62eb : 00000000; +62ec : 00000000; +62ed : 00000000; +62ee : 00000000; +62ef : 00000000; +62f0 : 00000000; +62f1 : 00000000; +62f2 : 00000000; +62f3 : 00000000; +62f4 : 00000000; +62f5 : 00000000; +62f6 : 00000000; +62f7 : 00000000; +62f8 : 00000000; +62f9 : 00000000; +62fa : 00000000; +62fb : 00000000; +62fc : 00000000; +62fd : 00000000; +62fe : 00000000; +62ff : 00000000; +6300 : 00000000; +6301 : 00000000; +6302 : 00000000; +6303 : 00000000; +6304 : 00000000; +6305 : 00000000; +6306 : 00000000; +6307 : 00000000; +6308 : 00000000; +6309 : 00000000; +630a : 00000000; +630b : 00000000; +630c : 00000000; +630d : 00000000; +630e : 00000000; +630f : 00000000; +6310 : 00000000; +6311 : 00000000; +6312 : 00000000; +6313 : 00000000; +6314 : 00000000; +6315 : 00000000; +6316 : 00000000; +6317 : 00000000; +6318 : 00000000; +6319 : 00000000; +631a : 00000000; +631b : 00000000; +631c : 00000000; +631d : 00000000; +631e : 00000000; +631f : 00000000; +6320 : 00000000; +6321 : 00000000; +6322 : 00000000; +6323 : 00000000; +6324 : 00000000; +6325 : 00000000; +6326 : 00000000; +6327 : 00000000; +6328 : 00000000; +6329 : 00000000; +632a : 00000000; +632b : 00000000; +632c : 00000000; +632d : 00000000; +632e : 00000000; +632f : 00000000; +6330 : 00000000; +6331 : 00000000; +6332 : 00000000; +6333 : 00000000; +6334 : 00000000; +6335 : 00000000; +6336 : 00000000; +6337 : 00000000; +6338 : 00000000; +6339 : 00000000; +633a : 00000000; +633b : 00000000; +633c : 00000000; +633d : 00000000; +633e : 00000000; +633f : 00000000; +6340 : 00000000; +6341 : 00000000; +6342 : 00000000; +6343 : 00000000; +6344 : 00000000; +6345 : 00000000; +6346 : 00000000; +6347 : 00000000; +6348 : 00000000; +6349 : 00000000; +634a : 00000000; +634b : 00000000; +634c : 00000000; +634d : 00000000; +634e : 00000000; +634f : 00000000; +6350 : 00000000; +6351 : 00000000; +6352 : 00000000; +6353 : 00000000; +6354 : 00000000; +6355 : 00000000; +6356 : 00000000; +6357 : 00000000; +6358 : 00000000; +6359 : 00000000; +635a : 00000000; +635b : 00000000; +635c : 00000000; +635d : 00000000; +635e : 00000000; +635f : 00000000; +6360 : 00000000; +6361 : 00000000; +6362 : 00000000; +6363 : 00000000; +6364 : 00000000; +6365 : 00000000; +6366 : 00000000; +6367 : 00000000; +6368 : 00000000; +6369 : 00000000; +636a : 00000000; +636b : 00000000; +636c : 00000000; +636d : 00000000; +636e : 00000000; +636f : 00000000; +6370 : 00000000; +6371 : 00000000; +6372 : 00000000; +6373 : 00000000; +6374 : 00000000; +6375 : 00000000; +6376 : 00000000; +6377 : 00000000; +6378 : 00000000; +6379 : 00000000; +637a : 00000000; +637b : 00000000; +637c : 00000000; +637d : 00000000; +637e : 00000000; +637f : 00000000; +6380 : 00000000; +6381 : 00000000; +6382 : 00000000; +6383 : 00000000; +6384 : 00000000; +6385 : 00000000; +6386 : 00000000; +6387 : 00000000; +6388 : 00000000; +6389 : 00000000; +638a : 00000000; +638b : 00000000; +638c : 00000000; +638d : 00000000; +638e : 00000000; +638f : 00000000; +6390 : 00000000; +6391 : 00000000; +6392 : 00000000; +6393 : 00000000; +6394 : 00000000; +6395 : 00000000; +6396 : 00000000; +6397 : 00000000; +6398 : 00000000; +6399 : 00000000; +639a : 00000000; +639b : 00000000; +639c : 00000000; +639d : 00000000; +639e : 00000000; +639f : 00000000; +63a0 : 00000000; +63a1 : 00000000; +63a2 : 00000000; +63a3 : 00000000; +63a4 : 00000000; +63a5 : 00000000; +63a6 : 00000000; +63a7 : 00000000; +63a8 : 00000000; +63a9 : 00000000; +63aa : 00000000; +63ab : 00000000; +63ac : 00000000; +63ad : 00000000; +63ae : 00000000; +63af : 00000000; +63b0 : 00000000; +63b1 : 00000000; +63b2 : 00000000; +63b3 : 00000000; +63b4 : 00000000; +63b5 : 00000000; +63b6 : 00000000; +63b7 : 00000000; +63b8 : 00000000; +63b9 : 00000000; +63ba : 00000000; +63bb : 00000000; +63bc : 00000000; +63bd : 00000000; +63be : 00000000; +63bf : 00000000; +63c0 : 00000000; +63c1 : 00000000; +63c2 : 00000000; +63c3 : 00000000; +63c4 : 00000000; +63c5 : 00000000; +63c6 : 00000000; +63c7 : 00000000; +63c8 : 00000000; +63c9 : 00000000; +63ca : 00000000; +63cb : 00000000; +63cc : 00000000; +63cd : 00000000; +63ce : 00000000; +63cf : 00000000; +63d0 : 00000000; +63d1 : 00000000; +63d2 : 00000000; +63d3 : 00000000; +63d4 : 00000000; +63d5 : 00000000; +63d6 : 00000000; +63d7 : 00000000; +63d8 : 00000000; +63d9 : 00000000; +63da : 00000000; +63db : 00000000; +63dc : 00000000; +63dd : 00000000; +63de : 00000000; +63df : 00000000; +63e0 : 00000000; +63e1 : 00000000; +63e2 : 00000000; +63e3 : 00000000; +63e4 : 00000000; +63e5 : 00000000; +63e6 : 00000000; +63e7 : 00000000; +63e8 : 00000000; +63e9 : 00000000; +63ea : 00000000; +63eb : 00000000; +63ec : 00000000; +63ed : 00000000; +63ee : 00000000; +63ef : 00000000; +63f0 : 00000000; +63f1 : 00000000; +63f2 : 00000000; +63f3 : 00000000; +63f4 : 00000000; +63f5 : 00000000; +63f6 : 00000000; +63f7 : 00000000; +63f8 : 00000000; +63f9 : 00000000; +63fa : 00000000; +63fb : 00000000; +63fc : 00000000; +63fd : 00000000; +63fe : 00000000; +63ff : 00000000; +6400 : 00000000; +6401 : 00000000; +6402 : 00000000; +6403 : 00000000; +6404 : 00000000; +6405 : 00000000; +6406 : 00000000; +6407 : 00000000; +6408 : 00000000; +6409 : 00000000; +640a : 00000000; +640b : 00000000; +640c : 00000000; +640d : 00000000; +640e : 00000000; +640f : 00000000; +6410 : 00000000; +6411 : 00000000; +6412 : 00000000; +6413 : 00000000; +6414 : 00000000; +6415 : 00000000; +6416 : 00000000; +6417 : 00000000; +6418 : 00000000; +6419 : 00000000; +641a : 00000000; +641b : 00000000; +641c : 00000000; +641d : 00000000; +641e : 00000000; +641f : 00000000; +6420 : 00000000; +6421 : 00000000; +6422 : 00000000; +6423 : 00000000; +6424 : 00000000; +6425 : 00000000; +6426 : 00000000; +6427 : 00000000; +6428 : 00000000; +6429 : 00000000; +642a : 00000000; +642b : 00000000; +642c : 00000000; +642d : 00000000; +642e : 00000000; +642f : 00000000; +6430 : 00000000; +6431 : 00000000; +6432 : 00000000; +6433 : 00000000; +6434 : 00000000; +6435 : 00000000; +6436 : 00000000; +6437 : 00000000; +6438 : 00000000; +6439 : 00000000; +643a : 00000000; +643b : 00000000; +643c : 00000000; +643d : 00000000; +643e : 00000000; +643f : 00000000; +6440 : 00000000; +6441 : 00000000; +6442 : 00000000; +6443 : 00000000; +6444 : 00000000; +6445 : 00000000; +6446 : 00000000; +6447 : 00000000; +6448 : 00000000; +6449 : 00000000; +644a : 00000000; +644b : 00000000; +644c : 00000000; +644d : 00000000; +644e : 00000000; +644f : 00000000; +6450 : 00000000; +6451 : 00000000; +6452 : 00000000; +6453 : 00000000; +6454 : 00000000; +6455 : 00000000; +6456 : 00000000; +6457 : 00000000; +6458 : 00000000; +6459 : 00000000; +645a : 00000000; +645b : 00000000; +645c : 00000000; +645d : 00000000; +645e : 00000000; +645f : 00000000; +6460 : 00000000; +6461 : 00000000; +6462 : 00000000; +6463 : 00000000; +6464 : 00000000; +6465 : 00000000; +6466 : 00000000; +6467 : 00000000; +6468 : 00000000; +6469 : 00000000; +646a : 00000000; +646b : 00000000; +646c : 00000000; +646d : 00000000; +646e : 00000000; +646f : 00000000; +6470 : 00000000; +6471 : 00000000; +6472 : 00000000; +6473 : 00000000; +6474 : 00000000; +6475 : 00000000; +6476 : 00000000; +6477 : 00000000; +6478 : 00000000; +6479 : 00000000; +647a : 00000000; +647b : 00000000; +647c : 00000000; +647d : 00000000; +647e : 00000000; +647f : 00000000; +6480 : 00000000; +6481 : 00000000; +6482 : 00000000; +6483 : 00000000; +6484 : 00000000; +6485 : 00000000; +6486 : 00000000; +6487 : 00000000; +6488 : 00000000; +6489 : 00000000; +648a : 00000000; +648b : 00000000; +648c : 00000000; +648d : 00000000; +648e : 00000000; +648f : 00000000; +6490 : 00000000; +6491 : 00000000; +6492 : 00000000; +6493 : 00000000; +6494 : 00000000; +6495 : 00000000; +6496 : 00000000; +6497 : 00000000; +6498 : 00000000; +6499 : 00000000; +649a : 00000000; +649b : 00000000; +649c : 00000000; +649d : 00000000; +649e : 00000000; +649f : 00000000; +64a0 : 00000000; +64a1 : 00000000; +64a2 : 00000000; +64a3 : 00000000; +64a4 : 00000000; +64a5 : 00000000; +64a6 : 00000000; +64a7 : 00000000; +64a8 : 00000000; +64a9 : 00000000; +64aa : 00000000; +64ab : 00000000; +64ac : 00000000; +64ad : 00000000; +64ae : 00000000; +64af : 00000000; +64b0 : 00000000; +64b1 : 00000000; +64b2 : 00000000; +64b3 : 00000000; +64b4 : 00000000; +64b5 : 00000000; +64b6 : 00000000; +64b7 : 00000000; +64b8 : 00000000; +64b9 : 00000000; +64ba : 00000000; +64bb : 00000000; +64bc : 00000000; +64bd : 00000000; +64be : 00000000; +64bf : 00000000; +64c0 : 00000000; +64c1 : 00000000; +64c2 : 00000000; +64c3 : 00000000; +64c4 : 00000000; +64c5 : 00000000; +64c6 : 00000000; +64c7 : 00000000; +64c8 : 00000000; +64c9 : 00000000; +64ca : 00000000; +64cb : 00000000; +64cc : 00000000; +64cd : 00000000; +64ce : 00000000; +64cf : 00000000; +64d0 : 00000000; +64d1 : 00000000; +64d2 : 00000000; +64d3 : 00000000; +64d4 : 00000000; +64d5 : 00000000; +64d6 : 00000000; +64d7 : 00000000; +64d8 : 00000000; +64d9 : 00000000; +64da : 00000000; +64db : 00000000; +64dc : 00000000; +64dd : 00000000; +64de : 00000000; +64df : 00000000; +64e0 : 00000000; +64e1 : 00000000; +64e2 : 00000000; +64e3 : 00000000; +64e4 : 00000000; +64e5 : 00000000; +64e6 : 00000000; +64e7 : 00000000; +64e8 : 00000000; +64e9 : 00000000; +64ea : 00000000; +64eb : 00000000; +64ec : 00000000; +64ed : 00000000; +64ee : 00000000; +64ef : 00000000; +64f0 : 00000000; +64f1 : 00000000; +64f2 : 00000000; +64f3 : 00000000; +64f4 : 00000000; +64f5 : 00000000; +64f6 : 00000000; +64f7 : 00000000; +64f8 : 00000000; +64f9 : 00000000; +64fa : 00000000; +64fb : 00000000; +64fc : 00000000; +64fd : 00000000; +64fe : 00000000; +64ff : 00000000; +6500 : 00000000; +6501 : 00000000; +6502 : 00000000; +6503 : 00000000; +6504 : 00000000; +6505 : 00000000; +6506 : 00000000; +6507 : 00000000; +6508 : 00000000; +6509 : 00000000; +650a : 00000000; +650b : 00000000; +650c : 00000000; +650d : 00000000; +650e : 00000000; +650f : 00000000; +6510 : 00000000; +6511 : 00000000; +6512 : 00000000; +6513 : 00000000; +6514 : 00000000; +6515 : 00000000; +6516 : 00000000; +6517 : 00000000; +6518 : 00000000; +6519 : 00000000; +651a : 00000000; +651b : 00000000; +651c : 00000000; +651d : 00000000; +651e : 00000000; +651f : 00000000; +6520 : 00000000; +6521 : 00000000; +6522 : 00000000; +6523 : 00000000; +6524 : 00000000; +6525 : 00000000; +6526 : 00000000; +6527 : 00000000; +6528 : 00000000; +6529 : 00000000; +652a : 00000000; +652b : 00000000; +652c : 00000000; +652d : 00000000; +652e : 00000000; +652f : 00000000; +6530 : 00000000; +6531 : 00000000; +6532 : 00000000; +6533 : 00000000; +6534 : 00000000; +6535 : 00000000; +6536 : 00000000; +6537 : 00000000; +6538 : 00000000; +6539 : 00000000; +653a : 00000000; +653b : 00000000; +653c : 00000000; +653d : 00000000; +653e : 00000000; +653f : 00000000; +6540 : 00000000; +6541 : 00000000; +6542 : 00000000; +6543 : 00000000; +6544 : 00000000; +6545 : 00000000; +6546 : 00000000; +6547 : 00000000; +6548 : 00000000; +6549 : 00000000; +654a : 00000000; +654b : 00000000; +654c : 00000000; +654d : 00000000; +654e : 00000000; +654f : 00000000; +6550 : 00000000; +6551 : 00000000; +6552 : 00000000; +6553 : 00000000; +6554 : 00000000; +6555 : 00000000; +6556 : 00000000; +6557 : 00000000; +6558 : 00000000; +6559 : 00000000; +655a : 00000000; +655b : 00000000; +655c : 00000000; +655d : 00000000; +655e : 00000000; +655f : 00000000; +6560 : 00000000; +6561 : 00000000; +6562 : 00000000; +6563 : 00000000; +6564 : 00000000; +6565 : 00000000; +6566 : 00000000; +6567 : 00000000; +6568 : 00000000; +6569 : 00000000; +656a : 00000000; +656b : 00000000; +656c : 00000000; +656d : 00000000; +656e : 00000000; +656f : 00000000; +6570 : 00000000; +6571 : 00000000; +6572 : 00000000; +6573 : 00000000; +6574 : 00000000; +6575 : 00000000; +6576 : 00000000; +6577 : 00000000; +6578 : 00000000; +6579 : 00000000; +657a : 00000000; +657b : 00000000; +657c : 00000000; +657d : 00000000; +657e : 00000000; +657f : 00000000; +6580 : 00000000; +6581 : 00000000; +6582 : 00000000; +6583 : 00000000; +6584 : 00000000; +6585 : 00000000; +6586 : 00000000; +6587 : 00000000; +6588 : 00000000; +6589 : 00000000; +658a : 00000000; +658b : 00000000; +658c : 00000000; +658d : 00000000; +658e : 00000000; +658f : 00000000; +6590 : 00000000; +6591 : 00000000; +6592 : 00000000; +6593 : 00000000; +6594 : 00000000; +6595 : 00000000; +6596 : 00000000; +6597 : 00000000; +6598 : 00000000; +6599 : 00000000; +659a : 00000000; +659b : 00000000; +659c : 00000000; +659d : 00000000; +659e : 00000000; +659f : 00000000; +65a0 : 00000000; +65a1 : 00000000; +65a2 : 00000000; +65a3 : 00000000; +65a4 : 00000000; +65a5 : 00000000; +65a6 : 00000000; +65a7 : 00000000; +65a8 : 00000000; +65a9 : 00000000; +65aa : 00000000; +65ab : 00000000; +65ac : 00000000; +65ad : 00000000; +65ae : 00000000; +65af : 00000000; +65b0 : 00000000; +65b1 : 00000000; +65b2 : 00000000; +65b3 : 00000000; +65b4 : 00000000; +65b5 : 00000000; +65b6 : 00000000; +65b7 : 00000000; +65b8 : 00000000; +65b9 : 00000000; +65ba : 00000000; +65bb : 00000000; +65bc : 00000000; +65bd : 00000000; +65be : 00000000; +65bf : 00000000; +65c0 : 00000000; +65c1 : 00000000; +65c2 : 00000000; +65c3 : 00000000; +65c4 : 00000000; +65c5 : 00000000; +65c6 : 00000000; +65c7 : 00000000; +65c8 : 00000000; +65c9 : 00000000; +65ca : 00000000; +65cb : 00000000; +65cc : 00000000; +65cd : 00000000; +65ce : 00000000; +65cf : 00000000; +65d0 : 00000000; +65d1 : 00000000; +65d2 : 00000000; +65d3 : 00000000; +65d4 : 00000000; +65d5 : 00000000; +65d6 : 00000000; +65d7 : 00000000; +65d8 : 00000000; +65d9 : 00000000; +65da : 00000000; +65db : 00000000; +65dc : 00000000; +65dd : 00000000; +65de : 00000000; +65df : 00000000; +65e0 : 00000000; +65e1 : 00000000; +65e2 : 00000000; +65e3 : 00000000; +65e4 : 00000000; +65e5 : 00000000; +65e6 : 00000000; +65e7 : 00000000; +65e8 : 00000000; +65e9 : 00000000; +65ea : 00000000; +65eb : 00000000; +65ec : 00000000; +65ed : 00000000; +65ee : 00000000; +65ef : 00000000; +65f0 : 00000000; +65f1 : 00000000; +65f2 : 00000000; +65f3 : 00000000; +65f4 : 00000000; +65f5 : 00000000; +65f6 : 00000000; +65f7 : 00000000; +65f8 : 00000000; +65f9 : 00000000; +65fa : 00000000; +65fb : 00000000; +65fc : 00000000; +65fd : 00000000; +65fe : 00000000; +65ff : 00000000; +6600 : 00000000; +6601 : 00000000; +6602 : 00000000; +6603 : 00000000; +6604 : 00000000; +6605 : 00000000; +6606 : 00000000; +6607 : 00000000; +6608 : 00000000; +6609 : 00000000; +660a : 00000000; +660b : 00000000; +660c : 00000000; +660d : 00000000; +660e : 00000000; +660f : 00000000; +6610 : 00000000; +6611 : 00000000; +6612 : 00000000; +6613 : 00000000; +6614 : 00000000; +6615 : 00000000; +6616 : 00000000; +6617 : 00000000; +6618 : 00000000; +6619 : 00000000; +661a : 00000000; +661b : 00000000; +661c : 00000000; +661d : 00000000; +661e : 00000000; +661f : 00000000; +6620 : 00000000; +6621 : 00000000; +6622 : 00000000; +6623 : 00000000; +6624 : 00000000; +6625 : 00000000; +6626 : 00000000; +6627 : 00000000; +6628 : 00000000; +6629 : 00000000; +662a : 00000000; +662b : 00000000; +662c : 00000000; +662d : 00000000; +662e : 00000000; +662f : 00000000; +6630 : 00000000; +6631 : 00000000; +6632 : 00000000; +6633 : 00000000; +6634 : 00000000; +6635 : 00000000; +6636 : 00000000; +6637 : 00000000; +6638 : 00000000; +6639 : 00000000; +663a : 00000000; +663b : 00000000; +663c : 00000000; +663d : 00000000; +663e : 00000000; +663f : 00000000; +6640 : 00000000; +6641 : 00000000; +6642 : 00000000; +6643 : 00000000; +6644 : 00000000; +6645 : 00000000; +6646 : 00000000; +6647 : 00000000; +6648 : 00000000; +6649 : 00000000; +664a : 00000000; +664b : 00000000; +664c : 00000000; +664d : 00000000; +664e : 00000000; +664f : 00000000; +6650 : 00000000; +6651 : 00000000; +6652 : 00000000; +6653 : 00000000; +6654 : 00000000; +6655 : 00000000; +6656 : 00000000; +6657 : 00000000; +6658 : 00000000; +6659 : 00000000; +665a : 00000000; +665b : 00000000; +665c : 00000000; +665d : 00000000; +665e : 00000000; +665f : 00000000; +6660 : 00000000; +6661 : 00000000; +6662 : 00000000; +6663 : 00000000; +6664 : 00000000; +6665 : 00000000; +6666 : 00000000; +6667 : 00000000; +6668 : 00000000; +6669 : 00000000; +666a : 00000000; +666b : 00000000; +666c : 00000000; +666d : 00000000; +666e : 00000000; +666f : 00000000; +6670 : 00000000; +6671 : 00000000; +6672 : 00000000; +6673 : 00000000; +6674 : 00000000; +6675 : 00000000; +6676 : 00000000; +6677 : 00000000; +6678 : 00000000; +6679 : 00000000; +667a : 00000000; +667b : 00000000; +667c : 00000000; +667d : 00000000; +667e : 00000000; +667f : 00000000; +6680 : 00000000; +6681 : 00000000; +6682 : 00000000; +6683 : 00000000; +6684 : 00000000; +6685 : 00000000; +6686 : 00000000; +6687 : 00000000; +6688 : 00000000; +6689 : 00000000; +668a : 00000000; +668b : 00000000; +668c : 00000000; +668d : 00000000; +668e : 00000000; +668f : 00000000; +6690 : 00000000; +6691 : 00000000; +6692 : 00000000; +6693 : 00000000; +6694 : 00000000; +6695 : 00000000; +6696 : 00000000; +6697 : 00000000; +6698 : 00000000; +6699 : 00000000; +669a : 00000000; +669b : 00000000; +669c : 00000000; +669d : 00000000; +669e : 00000000; +669f : 00000000; +66a0 : 00000000; +66a1 : 00000000; +66a2 : 00000000; +66a3 : 00000000; +66a4 : 00000000; +66a5 : 00000000; +66a6 : 00000000; +66a7 : 00000000; +66a8 : 00000000; +66a9 : 00000000; +66aa : 00000000; +66ab : 00000000; +66ac : 00000000; +66ad : 00000000; +66ae : 00000000; +66af : 00000000; +66b0 : 00000000; +66b1 : 00000000; +66b2 : 00000000; +66b3 : 00000000; +66b4 : 00000000; +66b5 : 00000000; +66b6 : 00000000; +66b7 : 00000000; +66b8 : 00000000; +66b9 : 00000000; +66ba : 00000000; +66bb : 00000000; +66bc : 00000000; +66bd : 00000000; +66be : 00000000; +66bf : 00000000; +66c0 : 00000000; +66c1 : 00000000; +66c2 : 00000000; +66c3 : 00000000; +66c4 : 00000000; +66c5 : 00000000; +66c6 : 00000000; +66c7 : 00000000; +66c8 : 00000000; +66c9 : 00000000; +66ca : 00000000; +66cb : 00000000; +66cc : 00000000; +66cd : 00000000; +66ce : 00000000; +66cf : 00000000; +66d0 : 00000000; +66d1 : 00000000; +66d2 : 00000000; +66d3 : 00000000; +66d4 : 00000000; +66d5 : 00000000; +66d6 : 00000000; +66d7 : 00000000; +66d8 : 00000000; +66d9 : 00000000; +66da : 00000000; +66db : 00000000; +66dc : 00000000; +66dd : 00000000; +66de : 00000000; +66df : 00000000; +66e0 : 00000000; +66e1 : 00000000; +66e2 : 00000000; +66e3 : 00000000; +66e4 : 00000000; +66e5 : 00000000; +66e6 : 00000000; +66e7 : 00000000; +66e8 : 00000000; +66e9 : 00000000; +66ea : 00000000; +66eb : 00000000; +66ec : 00000000; +66ed : 00000000; +66ee : 00000000; +66ef : 00000000; +66f0 : 00000000; +66f1 : 00000000; +66f2 : 00000000; +66f3 : 00000000; +66f4 : 00000000; +66f5 : 00000000; +66f6 : 00000000; +66f7 : 00000000; +66f8 : 00000000; +66f9 : 00000000; +66fa : 00000000; +66fb : 00000000; +66fc : 00000000; +66fd : 00000000; +66fe : 00000000; +66ff : 00000000; +6700 : 00000000; +6701 : 00000000; +6702 : 00000000; +6703 : 00000000; +6704 : 00000000; +6705 : 00000000; +6706 : 00000000; +6707 : 00000000; +6708 : 00000000; +6709 : 00000000; +670a : 00000000; +670b : 00000000; +670c : 00000000; +670d : 00000000; +670e : 00000000; +670f : 00000000; +6710 : 00000000; +6711 : 00000000; +6712 : 00000000; +6713 : 00000000; +6714 : 00000000; +6715 : 00000000; +6716 : 00000000; +6717 : 00000000; +6718 : 00000000; +6719 : 00000000; +671a : 00000000; +671b : 00000000; +671c : 00000000; +671d : 00000000; +671e : 00000000; +671f : 00000000; +6720 : 00000000; +6721 : 00000000; +6722 : 00000000; +6723 : 00000000; +6724 : 00000000; +6725 : 00000000; +6726 : 00000000; +6727 : 00000000; +6728 : 00000000; +6729 : 00000000; +672a : 00000000; +672b : 00000000; +672c : 00000000; +672d : 00000000; +672e : 00000000; +672f : 00000000; +6730 : 00000000; +6731 : 00000000; +6732 : 00000000; +6733 : 00000000; +6734 : 00000000; +6735 : 00000000; +6736 : 00000000; +6737 : 00000000; +6738 : 00000000; +6739 : 00000000; +673a : 00000000; +673b : 00000000; +673c : 00000000; +673d : 00000000; +673e : 00000000; +673f : 00000000; +6740 : 00000000; +6741 : 00000000; +6742 : 00000000; +6743 : 00000000; +6744 : 00000000; +6745 : 00000000; +6746 : 00000000; +6747 : 00000000; +6748 : 00000000; +6749 : 00000000; +674a : 00000000; +674b : 00000000; +674c : 00000000; +674d : 00000000; +674e : 00000000; +674f : 00000000; +6750 : 00000000; +6751 : 00000000; +6752 : 00000000; +6753 : 00000000; +6754 : 00000000; +6755 : 00000000; +6756 : 00000000; +6757 : 00000000; +6758 : 00000000; +6759 : 00000000; +675a : 00000000; +675b : 00000000; +675c : 00000000; +675d : 00000000; +675e : 00000000; +675f : 00000000; +6760 : 00000000; +6761 : 00000000; +6762 : 00000000; +6763 : 00000000; +6764 : 00000000; +6765 : 00000000; +6766 : 00000000; +6767 : 00000000; +6768 : 00000000; +6769 : 00000000; +676a : 00000000; +676b : 00000000; +676c : 00000000; +676d : 00000000; +676e : 00000000; +676f : 00000000; +6770 : 00000000; +6771 : 00000000; +6772 : 00000000; +6773 : 00000000; +6774 : 00000000; +6775 : 00000000; +6776 : 00000000; +6777 : 00000000; +6778 : 00000000; +6779 : 00000000; +677a : 00000000; +677b : 00000000; +677c : 00000000; +677d : 00000000; +677e : 00000000; +677f : 00000000; +6780 : 00000000; +6781 : 00000000; +6782 : 00000000; +6783 : 00000000; +6784 : 00000000; +6785 : 00000000; +6786 : 00000000; +6787 : 00000000; +6788 : 00000000; +6789 : 00000000; +678a : 00000000; +678b : 00000000; +678c : 00000000; +678d : 00000000; +678e : 00000000; +678f : 00000000; +6790 : 00000000; +6791 : 00000000; +6792 : 00000000; +6793 : 00000000; +6794 : 00000000; +6795 : 00000000; +6796 : 00000000; +6797 : 00000000; +6798 : 00000000; +6799 : 00000000; +679a : 00000000; +679b : 00000000; +679c : 00000000; +679d : 00000000; +679e : 00000000; +679f : 00000000; +67a0 : 00000000; +67a1 : 00000000; +67a2 : 00000000; +67a3 : 00000000; +67a4 : 00000000; +67a5 : 00000000; +67a6 : 00000000; +67a7 : 00000000; +67a8 : 00000000; +67a9 : 00000000; +67aa : 00000000; +67ab : 00000000; +67ac : 00000000; +67ad : 00000000; +67ae : 00000000; +67af : 00000000; +67b0 : 00000000; +67b1 : 00000000; +67b2 : 00000000; +67b3 : 00000000; +67b4 : 00000000; +67b5 : 00000000; +67b6 : 00000000; +67b7 : 00000000; +67b8 : 00000000; +67b9 : 00000000; +67ba : 00000000; +67bb : 00000000; +67bc : 00000000; +67bd : 00000000; +67be : 00000000; +67bf : 00000000; +67c0 : 00000000; +67c1 : 00000000; +67c2 : 00000000; +67c3 : 00000000; +67c4 : 00000000; +67c5 : 00000000; +67c6 : 00000000; +67c7 : 00000000; +67c8 : 00000000; +67c9 : 00000000; +67ca : 00000000; +67cb : 00000000; +67cc : 00000000; +67cd : 00000000; +67ce : 00000000; +67cf : 00000000; +67d0 : 00000000; +67d1 : 00000000; +67d2 : 00000000; +67d3 : 00000000; +67d4 : 00000000; +67d5 : 00000000; +67d6 : 00000000; +67d7 : 00000000; +67d8 : 00000000; +67d9 : 00000000; +67da : 00000000; +67db : 00000000; +67dc : 00000000; +67dd : 00000000; +67de : 00000000; +67df : 00000000; +67e0 : 00000000; +67e1 : 00000000; +67e2 : 00000000; +67e3 : 00000000; +67e4 : 00000000; +67e5 : 00000000; +67e6 : 00000000; +67e7 : 00000000; +67e8 : 00000000; +67e9 : 00000000; +67ea : 00000000; +67eb : 00000000; +67ec : 00000000; +67ed : 00000000; +67ee : 00000000; +67ef : 00000000; +67f0 : 00000000; +67f1 : 00000000; +67f2 : 00000000; +67f3 : 00000000; +67f4 : 00000000; +67f5 : 00000000; +67f6 : 00000000; +67f7 : 00000000; +67f8 : 00000000; +67f9 : 00000000; +67fa : 00000000; +67fb : 00000000; +67fc : 00000000; +67fd : 00000000; +67fe : 00000000; +67ff : 00000000; +6800 : 00000000; +6801 : 00000000; +6802 : 00000000; +6803 : 00000000; +6804 : 00000000; +6805 : 00000000; +6806 : 00000000; +6807 : 00000000; +6808 : 00000000; +6809 : 00000000; +680a : 00000000; +680b : 00000000; +680c : 00000000; +680d : 00000000; +680e : 00000000; +680f : 00000000; +6810 : 00000000; +6811 : 00000000; +6812 : 00000000; +6813 : 00000000; +6814 : 00000000; +6815 : 00000000; +6816 : 00000000; +6817 : 00000000; +6818 : 00000000; +6819 : 00000000; +681a : 00000000; +681b : 00000000; +681c : 00000000; +681d : 00000000; +681e : 00000000; +681f : 00000000; +6820 : 00000000; +6821 : 00000000; +6822 : 00000000; +6823 : 00000000; +6824 : 00000000; +6825 : 00000000; +6826 : 00000000; +6827 : 00000000; +6828 : 00000000; +6829 : 00000000; +682a : 00000000; +682b : 00000000; +682c : 00000000; +682d : 00000000; +682e : 00000000; +682f : 00000000; +6830 : 00000000; +6831 : 00000000; +6832 : 00000000; +6833 : 00000000; +6834 : 00000000; +6835 : 00000000; +6836 : 00000000; +6837 : 00000000; +6838 : 00000000; +6839 : 00000000; +683a : 00000000; +683b : 00000000; +683c : 00000000; +683d : 00000000; +683e : 00000000; +683f : 00000000; +6840 : 00000000; +6841 : 00000000; +6842 : 00000000; +6843 : 00000000; +6844 : 00000000; +6845 : 00000000; +6846 : 00000000; +6847 : 00000000; +6848 : 00000000; +6849 : 00000000; +684a : 00000000; +684b : 00000000; +684c : 00000000; +684d : 00000000; +684e : 00000000; +684f : 00000000; +6850 : 00000000; +6851 : 00000000; +6852 : 00000000; +6853 : 00000000; +6854 : 00000000; +6855 : 00000000; +6856 : 00000000; +6857 : 00000000; +6858 : 00000000; +6859 : 00000000; +685a : 00000000; +685b : 00000000; +685c : 00000000; +685d : 00000000; +685e : 00000000; +685f : 00000000; +6860 : 00000000; +6861 : 00000000; +6862 : 00000000; +6863 : 00000000; +6864 : 00000000; +6865 : 00000000; +6866 : 00000000; +6867 : 00000000; +6868 : 00000000; +6869 : 00000000; +686a : 00000000; +686b : 00000000; +686c : 00000000; +686d : 00000000; +686e : 00000000; +686f : 00000000; +6870 : 00000000; +6871 : 00000000; +6872 : 00000000; +6873 : 00000000; +6874 : 00000000; +6875 : 00000000; +6876 : 00000000; +6877 : 00000000; +6878 : 00000000; +6879 : 00000000; +687a : 00000000; +687b : 00000000; +687c : 00000000; +687d : 00000000; +687e : 00000000; +687f : 00000000; +6880 : 00000000; +6881 : 00000000; +6882 : 00000000; +6883 : 00000000; +6884 : 00000000; +6885 : 00000000; +6886 : 00000000; +6887 : 00000000; +6888 : 00000000; +6889 : 00000000; +688a : 00000000; +688b : 00000000; +688c : 00000000; +688d : 00000000; +688e : 00000000; +688f : 00000000; +6890 : 00000000; +6891 : 00000000; +6892 : 00000000; +6893 : 00000000; +6894 : 00000000; +6895 : 00000000; +6896 : 00000000; +6897 : 00000000; +6898 : 00000000; +6899 : 00000000; +689a : 00000000; +689b : 00000000; +689c : 00000000; +689d : 00000000; +689e : 00000000; +689f : 00000000; +68a0 : 00000000; +68a1 : 00000000; +68a2 : 00000000; +68a3 : 00000000; +68a4 : 00000000; +68a5 : 00000000; +68a6 : 00000000; +68a7 : 00000000; +68a8 : 00000000; +68a9 : 00000000; +68aa : 00000000; +68ab : 00000000; +68ac : 00000000; +68ad : 00000000; +68ae : 00000000; +68af : 00000000; +68b0 : 00000000; +68b1 : 00000000; +68b2 : 00000000; +68b3 : 00000000; +68b4 : 00000000; +68b5 : 00000000; +68b6 : 00000000; +68b7 : 00000000; +68b8 : 00000000; +68b9 : 00000000; +68ba : 00000000; +68bb : 00000000; +68bc : 00000000; +68bd : 00000000; +68be : 00000000; +68bf : 00000000; +68c0 : 00000000; +68c1 : 00000000; +68c2 : 00000000; +68c3 : 00000000; +68c4 : 00000000; +68c5 : 00000000; +68c6 : 00000000; +68c7 : 00000000; +68c8 : 00000000; +68c9 : 00000000; +68ca : 00000000; +68cb : 00000000; +68cc : 00000000; +68cd : 00000000; +68ce : 00000000; +68cf : 00000000; +68d0 : 00000000; +68d1 : 00000000; +68d2 : 00000000; +68d3 : 00000000; +68d4 : 00000000; +68d5 : 00000000; +68d6 : 00000000; +68d7 : 00000000; +68d8 : 00000000; +68d9 : 00000000; +68da : 00000000; +68db : 00000000; +68dc : 00000000; +68dd : 00000000; +68de : 00000000; +68df : 00000000; +68e0 : 00000000; +68e1 : 00000000; +68e2 : 00000000; +68e3 : 00000000; +68e4 : 00000000; +68e5 : 00000000; +68e6 : 00000000; +68e7 : 00000000; +68e8 : 00000000; +68e9 : 00000000; +68ea : 00000000; +68eb : 00000000; +68ec : 00000000; +68ed : 00000000; +68ee : 00000000; +68ef : 00000000; +68f0 : 00000000; +68f1 : 00000000; +68f2 : 00000000; +68f3 : 00000000; +68f4 : 00000000; +68f5 : 00000000; +68f6 : 00000000; +68f7 : 00000000; +68f8 : 00000000; +68f9 : 00000000; +68fa : 00000000; +68fb : 00000000; +68fc : 00000000; +68fd : 00000000; +68fe : 00000000; +68ff : 00000000; +6900 : 00000000; +6901 : 00000000; +6902 : 00000000; +6903 : 00000000; +6904 : 00000000; +6905 : 00000000; +6906 : 00000000; +6907 : 00000000; +6908 : 00000000; +6909 : 00000000; +690a : 00000000; +690b : 00000000; +690c : 00000000; +690d : 00000000; +690e : 00000000; +690f : 00000000; +6910 : 00000000; +6911 : 00000000; +6912 : 00000000; +6913 : 00000000; +6914 : 00000000; +6915 : 00000000; +6916 : 00000000; +6917 : 00000000; +6918 : 00000000; +6919 : 00000000; +691a : 00000000; +691b : 00000000; +691c : 00000000; +691d : 00000000; +691e : 00000000; +691f : 00000000; +6920 : 00000000; +6921 : 00000000; +6922 : 00000000; +6923 : 00000000; +6924 : 00000000; +6925 : 00000000; +6926 : 00000000; +6927 : 00000000; +6928 : 00000000; +6929 : 00000000; +692a : 00000000; +692b : 00000000; +692c : 00000000; +692d : 00000000; +692e : 00000000; +692f : 00000000; +6930 : 00000000; +6931 : 00000000; +6932 : 00000000; +6933 : 00000000; +6934 : 00000000; +6935 : 00000000; +6936 : 00000000; +6937 : 00000000; +6938 : 00000000; +6939 : 00000000; +693a : 00000000; +693b : 00000000; +693c : 00000000; +693d : 00000000; +693e : 00000000; +693f : 00000000; +6940 : 00000000; +6941 : 00000000; +6942 : 00000000; +6943 : 00000000; +6944 : 00000000; +6945 : 00000000; +6946 : 00000000; +6947 : 00000000; +6948 : 00000000; +6949 : 00000000; +694a : 00000000; +694b : 00000000; +694c : 00000000; +694d : 00000000; +694e : 00000000; +694f : 00000000; +6950 : 00000000; +6951 : 00000000; +6952 : 00000000; +6953 : 00000000; +6954 : 00000000; +6955 : 00000000; +6956 : 00000000; +6957 : 00000000; +6958 : 00000000; +6959 : 00000000; +695a : 00000000; +695b : 00000000; +695c : 00000000; +695d : 00000000; +695e : 00000000; +695f : 00000000; +6960 : 00000000; +6961 : 00000000; +6962 : 00000000; +6963 : 00000000; +6964 : 00000000; +6965 : 00000000; +6966 : 00000000; +6967 : 00000000; +6968 : 00000000; +6969 : 00000000; +696a : 00000000; +696b : 00000000; +696c : 00000000; +696d : 00000000; +696e : 00000000; +696f : 00000000; +6970 : 00000000; +6971 : 00000000; +6972 : 00000000; +6973 : 00000000; +6974 : 00000000; +6975 : 00000000; +6976 : 00000000; +6977 : 00000000; +6978 : 00000000; +6979 : 00000000; +697a : 00000000; +697b : 00000000; +697c : 00000000; +697d : 00000000; +697e : 00000000; +697f : 00000000; +6980 : 00000000; +6981 : 00000000; +6982 : 00000000; +6983 : 00000000; +6984 : 00000000; +6985 : 00000000; +6986 : 00000000; +6987 : 00000000; +6988 : 00000000; +6989 : 00000000; +698a : 00000000; +698b : 00000000; +698c : 00000000; +698d : 00000000; +698e : 00000000; +698f : 00000000; +6990 : 00000000; +6991 : 00000000; +6992 : 00000000; +6993 : 00000000; +6994 : 00000000; +6995 : 00000000; +6996 : 00000000; +6997 : 00000000; +6998 : 00000000; +6999 : 00000000; +699a : 00000000; +699b : 00000000; +699c : 00000000; +699d : 00000000; +699e : 00000000; +699f : 00000000; +69a0 : 00000000; +69a1 : 00000000; +69a2 : 00000000; +69a3 : 00000000; +69a4 : 00000000; +69a5 : 00000000; +69a6 : 00000000; +69a7 : 00000000; +69a8 : 00000000; +69a9 : 00000000; +69aa : 00000000; +69ab : 00000000; +69ac : 00000000; +69ad : 00000000; +69ae : 00000000; +69af : 00000000; +69b0 : 00000000; +69b1 : 00000000; +69b2 : 00000000; +69b3 : 00000000; +69b4 : 00000000; +69b5 : 00000000; +69b6 : 00000000; +69b7 : 00000000; +69b8 : 00000000; +69b9 : 00000000; +69ba : 00000000; +69bb : 00000000; +69bc : 00000000; +69bd : 00000000; +69be : 00000000; +69bf : 00000000; +69c0 : 00000000; +69c1 : 00000000; +69c2 : 00000000; +69c3 : 00000000; +69c4 : 00000000; +69c5 : 00000000; +69c6 : 00000000; +69c7 : 00000000; +69c8 : 00000000; +69c9 : 00000000; +69ca : 00000000; +69cb : 00000000; +69cc : 00000000; +69cd : 00000000; +69ce : 00000000; +69cf : 00000000; +69d0 : 00000000; +69d1 : 00000000; +69d2 : 00000000; +69d3 : 00000000; +69d4 : 00000000; +69d5 : 00000000; +69d6 : 00000000; +69d7 : 00000000; +69d8 : 00000000; +69d9 : 00000000; +69da : 00000000; +69db : 00000000; +69dc : 00000000; +69dd : 00000000; +69de : 00000000; +69df : 00000000; +69e0 : 00000000; +69e1 : 00000000; +69e2 : 00000000; +69e3 : 00000000; +69e4 : 00000000; +69e5 : 00000000; +69e6 : 00000000; +69e7 : 00000000; +69e8 : 00000000; +69e9 : 00000000; +69ea : 00000000; +69eb : 00000000; +69ec : 00000000; +69ed : 00000000; +69ee : 00000000; +69ef : 00000000; +69f0 : 00000000; +69f1 : 00000000; +69f2 : 00000000; +69f3 : 00000000; +69f4 : 00000000; +69f5 : 00000000; +69f6 : 00000000; +69f7 : 00000000; +69f8 : 00000000; +69f9 : 00000000; +69fa : 00000000; +69fb : 00000000; +69fc : 00000000; +69fd : 00000000; +69fe : 00000000; +69ff : 00000000; +6a00 : 00000000; +6a01 : 00000000; +6a02 : 00000000; +6a03 : 00000000; +6a04 : 00000000; +6a05 : 00000000; +6a06 : 00000000; +6a07 : 00000000; +6a08 : 00000000; +6a09 : 00000000; +6a0a : 00000000; +6a0b : 00000000; +6a0c : 00000000; +6a0d : 00000000; +6a0e : 00000000; +6a0f : 00000000; +6a10 : 00000000; +6a11 : 00000000; +6a12 : 00000000; +6a13 : 00000000; +6a14 : 00000000; +6a15 : 00000000; +6a16 : 00000000; +6a17 : 00000000; +6a18 : 00000000; +6a19 : 00000000; +6a1a : 00000000; +6a1b : 00000000; +6a1c : 00000000; +6a1d : 00000000; +6a1e : 00000000; +6a1f : 00000000; +6a20 : 00000000; +6a21 : 00000000; +6a22 : 00000000; +6a23 : 00000000; +6a24 : 00000000; +6a25 : 00000000; +6a26 : 00000000; +6a27 : 00000000; +6a28 : 00000000; +6a29 : 00000000; +6a2a : 00000000; +6a2b : 00000000; +6a2c : 00000000; +6a2d : 00000000; +6a2e : 00000000; +6a2f : 00000000; +6a30 : 00000000; +6a31 : 00000000; +6a32 : 00000000; +6a33 : 00000000; +6a34 : 00000000; +6a35 : 00000000; +6a36 : 00000000; +6a37 : 00000000; +6a38 : 00000000; +6a39 : 00000000; +6a3a : 00000000; +6a3b : 00000000; +6a3c : 00000000; +6a3d : 00000000; +6a3e : 00000000; +6a3f : 00000000; +6a40 : 00000000; +6a41 : 00000000; +6a42 : 00000000; +6a43 : 00000000; +6a44 : 00000000; +6a45 : 00000000; +6a46 : 00000000; +6a47 : 00000000; +6a48 : 00000000; +6a49 : 00000000; +6a4a : 00000000; +6a4b : 00000000; +6a4c : 00000000; +6a4d : 00000000; +6a4e : 00000000; +6a4f : 00000000; +6a50 : 00000000; +6a51 : 00000000; +6a52 : 00000000; +6a53 : 00000000; +6a54 : 00000000; +6a55 : 00000000; +6a56 : 00000000; +6a57 : 00000000; +6a58 : 00000000; +6a59 : 00000000; +6a5a : 00000000; +6a5b : 00000000; +6a5c : 00000000; +6a5d : 00000000; +6a5e : 00000000; +6a5f : 00000000; +6a60 : 00000000; +6a61 : 00000000; +6a62 : 00000000; +6a63 : 00000000; +6a64 : 00000000; +6a65 : 00000000; +6a66 : 00000000; +6a67 : 00000000; +6a68 : 00000000; +6a69 : 00000000; +6a6a : 00000000; +6a6b : 00000000; +6a6c : 00000000; +6a6d : 00000000; +6a6e : 00000000; +6a6f : 00000000; +6a70 : 00000000; +6a71 : 00000000; +6a72 : 00000000; +6a73 : 00000000; +6a74 : 00000000; +6a75 : 00000000; +6a76 : 00000000; +6a77 : 00000000; +6a78 : 00000000; +6a79 : 00000000; +6a7a : 00000000; +6a7b : 00000000; +6a7c : 00000000; +6a7d : 00000000; +6a7e : 00000000; +6a7f : 00000000; +6a80 : 00000000; +6a81 : 00000000; +6a82 : 00000000; +6a83 : 00000000; +6a84 : 00000000; +6a85 : 00000000; +6a86 : 00000000; +6a87 : 00000000; +6a88 : 00000000; +6a89 : 00000000; +6a8a : 00000000; +6a8b : 00000000; +6a8c : 00000000; +6a8d : 00000000; +6a8e : 00000000; +6a8f : 00000000; +6a90 : 00000000; +6a91 : 00000000; +6a92 : 00000000; +6a93 : 00000000; +6a94 : 00000000; +6a95 : 00000000; +6a96 : 00000000; +6a97 : 00000000; +6a98 : 00000000; +6a99 : 00000000; +6a9a : 00000000; +6a9b : 00000000; +6a9c : 00000000; +6a9d : 00000000; +6a9e : 00000000; +6a9f : 00000000; +6aa0 : 00000000; +6aa1 : 00000000; +6aa2 : 00000000; +6aa3 : 00000000; +6aa4 : 00000000; +6aa5 : 00000000; +6aa6 : 00000000; +6aa7 : 00000000; +6aa8 : 00000000; +6aa9 : 00000000; +6aaa : 00000000; +6aab : 00000000; +6aac : 00000000; +6aad : 00000000; +6aae : 00000000; +6aaf : 00000000; +6ab0 : 00000000; +6ab1 : 00000000; +6ab2 : 00000000; +6ab3 : 00000000; +6ab4 : 00000000; +6ab5 : 00000000; +6ab6 : 00000000; +6ab7 : 00000000; +6ab8 : 00000000; +6ab9 : 00000000; +6aba : 00000000; +6abb : 00000000; +6abc : 00000000; +6abd : 00000000; +6abe : 00000000; +6abf : 00000000; +6ac0 : 00000000; +6ac1 : 00000000; +6ac2 : 00000000; +6ac3 : 00000000; +6ac4 : 00000000; +6ac5 : 00000000; +6ac6 : 00000000; +6ac7 : 00000000; +6ac8 : 00000000; +6ac9 : 00000000; +6aca : 00000000; +6acb : 00000000; +6acc : 00000000; +6acd : 00000000; +6ace : 00000000; +6acf : 00000000; +6ad0 : 00000000; +6ad1 : 00000000; +6ad2 : 00000000; +6ad3 : 00000000; +6ad4 : 00000000; +6ad5 : 00000000; +6ad6 : 00000000; +6ad7 : 00000000; +6ad8 : 00000000; +6ad9 : 00000000; +6ada : 00000000; +6adb : 00000000; +6adc : 00000000; +6add : 00000000; +6ade : 00000000; +6adf : 00000000; +6ae0 : 00000000; +6ae1 : 00000000; +6ae2 : 00000000; +6ae3 : 00000000; +6ae4 : 00000000; +6ae5 : 00000000; +6ae6 : 00000000; +6ae7 : 00000000; +6ae8 : 00000000; +6ae9 : 00000000; +6aea : 00000000; +6aeb : 00000000; +6aec : 00000000; +6aed : 00000000; +6aee : 00000000; +6aef : 00000000; +6af0 : 00000000; +6af1 : 00000000; +6af2 : 00000000; +6af3 : 00000000; +6af4 : 00000000; +6af5 : 00000000; +6af6 : 00000000; +6af7 : 00000000; +6af8 : 00000000; +6af9 : 00000000; +6afa : 00000000; +6afb : 00000000; +6afc : 00000000; +6afd : 00000000; +6afe : 00000000; +6aff : 00000000; +6b00 : 00000000; +6b01 : 00000000; +6b02 : 00000000; +6b03 : 00000000; +6b04 : 00000000; +6b05 : 00000000; +6b06 : 00000000; +6b07 : 00000000; +6b08 : 00000000; +6b09 : 00000000; +6b0a : 00000000; +6b0b : 00000000; +6b0c : 00000000; +6b0d : 00000000; +6b0e : 00000000; +6b0f : 00000000; +6b10 : 00000000; +6b11 : 00000000; +6b12 : 00000000; +6b13 : 00000000; +6b14 : 00000000; +6b15 : 00000000; +6b16 : 00000000; +6b17 : 00000000; +6b18 : 00000000; +6b19 : 00000000; +6b1a : 00000000; +6b1b : 00000000; +6b1c : 00000000; +6b1d : 00000000; +6b1e : 00000000; +6b1f : 00000000; +6b20 : 00000000; +6b21 : 00000000; +6b22 : 00000000; +6b23 : 00000000; +6b24 : 00000000; +6b25 : 00000000; +6b26 : 00000000; +6b27 : 00000000; +6b28 : 00000000; +6b29 : 00000000; +6b2a : 00000000; +6b2b : 00000000; +6b2c : 00000000; +6b2d : 00000000; +6b2e : 00000000; +6b2f : 00000000; +6b30 : 00000000; +6b31 : 00000000; +6b32 : 00000000; +6b33 : 00000000; +6b34 : 00000000; +6b35 : 00000000; +6b36 : 00000000; +6b37 : 00000000; +6b38 : 00000000; +6b39 : 00000000; +6b3a : 00000000; +6b3b : 00000000; +6b3c : 00000000; +6b3d : 00000000; +6b3e : 00000000; +6b3f : 00000000; +6b40 : 00000000; +6b41 : 00000000; +6b42 : 00000000; +6b43 : 00000000; +6b44 : 00000000; +6b45 : 00000000; +6b46 : 00000000; +6b47 : 00000000; +6b48 : 00000000; +6b49 : 00000000; +6b4a : 00000000; +6b4b : 00000000; +6b4c : 00000000; +6b4d : 00000000; +6b4e : 00000000; +6b4f : 00000000; +6b50 : 00000000; +6b51 : 00000000; +6b52 : 00000000; +6b53 : 00000000; +6b54 : 00000000; +6b55 : 00000000; +6b56 : 00000000; +6b57 : 00000000; +6b58 : 00000000; +6b59 : 00000000; +6b5a : 00000000; +6b5b : 00000000; +6b5c : 00000000; +6b5d : 00000000; +6b5e : 00000000; +6b5f : 00000000; +6b60 : 00000000; +6b61 : 00000000; +6b62 : 00000000; +6b63 : 00000000; +6b64 : 00000000; +6b65 : 00000000; +6b66 : 00000000; +6b67 : 00000000; +6b68 : 00000000; +6b69 : 00000000; +6b6a : 00000000; +6b6b : 00000000; +6b6c : 00000000; +6b6d : 00000000; +6b6e : 00000000; +6b6f : 00000000; +6b70 : 00000000; +6b71 : 00000000; +6b72 : 00000000; +6b73 : 00000000; +6b74 : 00000000; +6b75 : 00000000; +6b76 : 00000000; +6b77 : 00000000; +6b78 : 00000000; +6b79 : 00000000; +6b7a : 00000000; +6b7b : 00000000; +6b7c : 00000000; +6b7d : 00000000; +6b7e : 00000000; +6b7f : 00000000; +6b80 : 00000000; +6b81 : 00000000; +6b82 : 00000000; +6b83 : 00000000; +6b84 : 00000000; +6b85 : 00000000; +6b86 : 00000000; +6b87 : 00000000; +6b88 : 00000000; +6b89 : 00000000; +6b8a : 00000000; +6b8b : 00000000; +6b8c : 00000000; +6b8d : 00000000; +6b8e : 00000000; +6b8f : 00000000; +6b90 : 00000000; +6b91 : 00000000; +6b92 : 00000000; +6b93 : 00000000; +6b94 : 00000000; +6b95 : 00000000; +6b96 : 00000000; +6b97 : 00000000; +6b98 : 00000000; +6b99 : 00000000; +6b9a : 00000000; +6b9b : 00000000; +6b9c : 00000000; +6b9d : 00000000; +6b9e : 00000000; +6b9f : 00000000; +6ba0 : 00000000; +6ba1 : 00000000; +6ba2 : 00000000; +6ba3 : 00000000; +6ba4 : 00000000; +6ba5 : 00000000; +6ba6 : 00000000; +6ba7 : 00000000; +6ba8 : 00000000; +6ba9 : 00000000; +6baa : 00000000; +6bab : 00000000; +6bac : 00000000; +6bad : 00000000; +6bae : 00000000; +6baf : 00000000; +6bb0 : 00000000; +6bb1 : 00000000; +6bb2 : 00000000; +6bb3 : 00000000; +6bb4 : 00000000; +6bb5 : 00000000; +6bb6 : 00000000; +6bb7 : 00000000; +6bb8 : 00000000; +6bb9 : 00000000; +6bba : 00000000; +6bbb : 00000000; +6bbc : 00000000; +6bbd : 00000000; +6bbe : 00000000; +6bbf : 00000000; +6bc0 : 00000000; +6bc1 : 00000000; +6bc2 : 00000000; +6bc3 : 00000000; +6bc4 : 00000000; +6bc5 : 00000000; +6bc6 : 00000000; +6bc7 : 00000000; +6bc8 : 00000000; +6bc9 : 00000000; +6bca : 00000000; +6bcb : 00000000; +6bcc : 00000000; +6bcd : 00000000; +6bce : 00000000; +6bcf : 00000000; +6bd0 : 00000000; +6bd1 : 00000000; +6bd2 : 00000000; +6bd3 : 00000000; +6bd4 : 00000000; +6bd5 : 00000000; +6bd6 : 00000000; +6bd7 : 00000000; +6bd8 : 00000000; +6bd9 : 00000000; +6bda : 00000000; +6bdb : 00000000; +6bdc : 00000000; +6bdd : 00000000; +6bde : 00000000; +6bdf : 00000000; +6be0 : 00000000; +6be1 : 00000000; +6be2 : 00000000; +6be3 : 00000000; +6be4 : 00000000; +6be5 : 00000000; +6be6 : 00000000; +6be7 : 00000000; +6be8 : 00000000; +6be9 : 00000000; +6bea : 00000000; +6beb : 00000000; +6bec : 00000000; +6bed : 00000000; +6bee : 00000000; +6bef : 00000000; +6bf0 : 00000000; +6bf1 : 00000000; +6bf2 : 00000000; +6bf3 : 00000000; +6bf4 : 00000000; +6bf5 : 00000000; +6bf6 : 00000000; +6bf7 : 00000000; +6bf8 : 00000000; +6bf9 : 00000000; +6bfa : 00000000; +6bfb : 00000000; +6bfc : 00000000; +6bfd : 00000000; +6bfe : 00000000; +6bff : 00000000; +6c00 : 00000000; +6c01 : 00000000; +6c02 : 00000000; +6c03 : 00000000; +6c04 : 00000000; +6c05 : 00000000; +6c06 : 00000000; +6c07 : 00000000; +6c08 : 00000000; +6c09 : 00000000; +6c0a : 00000000; +6c0b : 00000000; +6c0c : 00000000; +6c0d : 00000000; +6c0e : 00000000; +6c0f : 00000000; +6c10 : 00000000; +6c11 : 00000000; +6c12 : 00000000; +6c13 : 00000000; +6c14 : 00000000; +6c15 : 00000000; +6c16 : 00000000; +6c17 : 00000000; +6c18 : 00000000; +6c19 : 00000000; +6c1a : 00000000; +6c1b : 00000000; +6c1c : 00000000; +6c1d : 00000000; +6c1e : 00000000; +6c1f : 00000000; +6c20 : 00000000; +6c21 : 00000000; +6c22 : 00000000; +6c23 : 00000000; +6c24 : 00000000; +6c25 : 00000000; +6c26 : 00000000; +6c27 : 00000000; +6c28 : 00000000; +6c29 : 00000000; +6c2a : 00000000; +6c2b : 00000000; +6c2c : 00000000; +6c2d : 00000000; +6c2e : 00000000; +6c2f : 00000000; +6c30 : 00000000; +6c31 : 00000000; +6c32 : 00000000; +6c33 : 00000000; +6c34 : 00000000; +6c35 : 00000000; +6c36 : 00000000; +6c37 : 00000000; +6c38 : 00000000; +6c39 : 00000000; +6c3a : 00000000; +6c3b : 00000000; +6c3c : 00000000; +6c3d : 00000000; +6c3e : 00000000; +6c3f : 00000000; +6c40 : 00000000; +6c41 : 00000000; +6c42 : 00000000; +6c43 : 00000000; +6c44 : 00000000; +6c45 : 00000000; +6c46 : 00000000; +6c47 : 00000000; +6c48 : 00000000; +6c49 : 00000000; +6c4a : 00000000; +6c4b : 00000000; +6c4c : 00000000; +6c4d : 00000000; +6c4e : 00000000; +6c4f : 00000000; +6c50 : 00000000; +6c51 : 00000000; +6c52 : 00000000; +6c53 : 00000000; +6c54 : 00000000; +6c55 : 00000000; +6c56 : 00000000; +6c57 : 00000000; +6c58 : 00000000; +6c59 : 00000000; +6c5a : 00000000; +6c5b : 00000000; +6c5c : 00000000; +6c5d : 00000000; +6c5e : 00000000; +6c5f : 00000000; +6c60 : 00000000; +6c61 : 00000000; +6c62 : 00000000; +6c63 : 00000000; +6c64 : 00000000; +6c65 : 00000000; +6c66 : 00000000; +6c67 : 00000000; +6c68 : 00000000; +6c69 : 00000000; +6c6a : 00000000; +6c6b : 00000000; +6c6c : 00000000; +6c6d : 00000000; +6c6e : 00000000; +6c6f : 00000000; +6c70 : 00000000; +6c71 : 00000000; +6c72 : 00000000; +6c73 : 00000000; +6c74 : 00000000; +6c75 : 00000000; +6c76 : 00000000; +6c77 : 00000000; +6c78 : 00000000; +6c79 : 00000000; +6c7a : 00000000; +6c7b : 00000000; +6c7c : 00000000; +6c7d : 00000000; +6c7e : 00000000; +6c7f : 00000000; +6c80 : 00000000; +6c81 : 00000000; +6c82 : 00000000; +6c83 : 00000000; +6c84 : 00000000; +6c85 : 00000000; +6c86 : 00000000; +6c87 : 00000000; +6c88 : 00000000; +6c89 : 00000000; +6c8a : 00000000; +6c8b : 00000000; +6c8c : 00000000; +6c8d : 00000000; +6c8e : 00000000; +6c8f : 00000000; +6c90 : 00000000; +6c91 : 00000000; +6c92 : 00000000; +6c93 : 00000000; +6c94 : 00000000; +6c95 : 00000000; +6c96 : 00000000; +6c97 : 00000000; +6c98 : 00000000; +6c99 : 00000000; +6c9a : 00000000; +6c9b : 00000000; +6c9c : 00000000; +6c9d : 00000000; +6c9e : 00000000; +6c9f : 00000000; +6ca0 : 00000000; +6ca1 : 00000000; +6ca2 : 00000000; +6ca3 : 00000000; +6ca4 : 00000000; +6ca5 : 00000000; +6ca6 : 00000000; +6ca7 : 00000000; +6ca8 : 00000000; +6ca9 : 00000000; +6caa : 00000000; +6cab : 00000000; +6cac : 00000000; +6cad : 00000000; +6cae : 00000000; +6caf : 00000000; +6cb0 : 00000000; +6cb1 : 00000000; +6cb2 : 00000000; +6cb3 : 00000000; +6cb4 : 00000000; +6cb5 : 00000000; +6cb6 : 00000000; +6cb7 : 00000000; +6cb8 : 00000000; +6cb9 : 00000000; +6cba : 00000000; +6cbb : 00000000; +6cbc : 00000000; +6cbd : 00000000; +6cbe : 00000000; +6cbf : 00000000; +6cc0 : 00000000; +6cc1 : 00000000; +6cc2 : 00000000; +6cc3 : 00000000; +6cc4 : 00000000; +6cc5 : 00000000; +6cc6 : 00000000; +6cc7 : 00000000; +6cc8 : 00000000; +6cc9 : 00000000; +6cca : 00000000; +6ccb : 00000000; +6ccc : 00000000; +6ccd : 00000000; +6cce : 00000000; +6ccf : 00000000; +6cd0 : 00000000; +6cd1 : 00000000; +6cd2 : 00000000; +6cd3 : 00000000; +6cd4 : 00000000; +6cd5 : 00000000; +6cd6 : 00000000; +6cd7 : 00000000; +6cd8 : 00000000; +6cd9 : 00000000; +6cda : 00000000; +6cdb : 00000000; +6cdc : 00000000; +6cdd : 00000000; +6cde : 00000000; +6cdf : 00000000; +6ce0 : 00000000; +6ce1 : 00000000; +6ce2 : 00000000; +6ce3 : 00000000; +6ce4 : 00000000; +6ce5 : 00000000; +6ce6 : 00000000; +6ce7 : 00000000; +6ce8 : 00000000; +6ce9 : 00000000; +6cea : 00000000; +6ceb : 00000000; +6cec : 00000000; +6ced : 00000000; +6cee : 00000000; +6cef : 00000000; +6cf0 : 00000000; +6cf1 : 00000000; +6cf2 : 00000000; +6cf3 : 00000000; +6cf4 : 00000000; +6cf5 : 00000000; +6cf6 : 00000000; +6cf7 : 00000000; +6cf8 : 00000000; +6cf9 : 00000000; +6cfa : 00000000; +6cfb : 00000000; +6cfc : 00000000; +6cfd : 00000000; +6cfe : 00000000; +6cff : 00000000; +6d00 : 00000000; +6d01 : 00000000; +6d02 : 00000000; +6d03 : 00000000; +6d04 : 00000000; +6d05 : 00000000; +6d06 : 00000000; +6d07 : 00000000; +6d08 : 00000000; +6d09 : 00000000; +6d0a : 00000000; +6d0b : 00000000; +6d0c : 00000000; +6d0d : 00000000; +6d0e : 00000000; +6d0f : 00000000; +6d10 : 00000000; +6d11 : 00000000; +6d12 : 00000000; +6d13 : 00000000; +6d14 : 00000000; +6d15 : 00000000; +6d16 : 00000000; +6d17 : 00000000; +6d18 : 00000000; +6d19 : 00000000; +6d1a : 00000000; +6d1b : 00000000; +6d1c : 00000000; +6d1d : 00000000; +6d1e : 00000000; +6d1f : 00000000; +6d20 : 00000000; +6d21 : 00000000; +6d22 : 00000000; +6d23 : 00000000; +6d24 : 00000000; +6d25 : 00000000; +6d26 : 00000000; +6d27 : 00000000; +6d28 : 00000000; +6d29 : 00000000; +6d2a : 00000000; +6d2b : 00000000; +6d2c : 00000000; +6d2d : 00000000; +6d2e : 00000000; +6d2f : 00000000; +6d30 : 00000000; +6d31 : 00000000; +6d32 : 00000000; +6d33 : 00000000; +6d34 : 00000000; +6d35 : 00000000; +6d36 : 00000000; +6d37 : 00000000; +6d38 : 00000000; +6d39 : 00000000; +6d3a : 00000000; +6d3b : 00000000; +6d3c : 00000000; +6d3d : 00000000; +6d3e : 00000000; +6d3f : 00000000; +6d40 : 00000000; +6d41 : 00000000; +6d42 : 00000000; +6d43 : 00000000; +6d44 : 00000000; +6d45 : 00000000; +6d46 : 00000000; +6d47 : 00000000; +6d48 : 00000000; +6d49 : 00000000; +6d4a : 00000000; +6d4b : 00000000; +6d4c : 00000000; +6d4d : 00000000; +6d4e : 00000000; +6d4f : 00000000; +6d50 : 00000000; +6d51 : 00000000; +6d52 : 00000000; +6d53 : 00000000; +6d54 : 00000000; +6d55 : 00000000; +6d56 : 00000000; +6d57 : 00000000; +6d58 : 00000000; +6d59 : 00000000; +6d5a : 00000000; +6d5b : 00000000; +6d5c : 00000000; +6d5d : 00000000; +6d5e : 00000000; +6d5f : 00000000; +6d60 : 00000000; +6d61 : 00000000; +6d62 : 00000000; +6d63 : 00000000; +6d64 : 00000000; +6d65 : 00000000; +6d66 : 00000000; +6d67 : 00000000; +6d68 : 00000000; +6d69 : 00000000; +6d6a : 00000000; +6d6b : 00000000; +6d6c : 00000000; +6d6d : 00000000; +6d6e : 00000000; +6d6f : 00000000; +6d70 : 00000000; +6d71 : 00000000; +6d72 : 00000000; +6d73 : 00000000; +6d74 : 00000000; +6d75 : 00000000; +6d76 : 00000000; +6d77 : 00000000; +6d78 : 00000000; +6d79 : 00000000; +6d7a : 00000000; +6d7b : 00000000; +6d7c : 00000000; +6d7d : 00000000; +6d7e : 00000000; +6d7f : 00000000; +6d80 : 00000000; +6d81 : 00000000; +6d82 : 00000000; +6d83 : 00000000; +6d84 : 00000000; +6d85 : 00000000; +6d86 : 00000000; +6d87 : 00000000; +6d88 : 00000000; +6d89 : 00000000; +6d8a : 00000000; +6d8b : 00000000; +6d8c : 00000000; +6d8d : 00000000; +6d8e : 00000000; +6d8f : 00000000; +6d90 : 00000000; +6d91 : 00000000; +6d92 : 00000000; +6d93 : 00000000; +6d94 : 00000000; +6d95 : 00000000; +6d96 : 00000000; +6d97 : 00000000; +6d98 : 00000000; +6d99 : 00000000; +6d9a : 00000000; +6d9b : 00000000; +6d9c : 00000000; +6d9d : 00000000; +6d9e : 00000000; +6d9f : 00000000; +6da0 : 00000000; +6da1 : 00000000; +6da2 : 00000000; +6da3 : 00000000; +6da4 : 00000000; +6da5 : 00000000; +6da6 : 00000000; +6da7 : 00000000; +6da8 : 00000000; +6da9 : 00000000; +6daa : 00000000; +6dab : 00000000; +6dac : 00000000; +6dad : 00000000; +6dae : 00000000; +6daf : 00000000; +6db0 : 00000000; +6db1 : 00000000; +6db2 : 00000000; +6db3 : 00000000; +6db4 : 00000000; +6db5 : 00000000; +6db6 : 00000000; +6db7 : 00000000; +6db8 : 00000000; +6db9 : 00000000; +6dba : 00000000; +6dbb : 00000000; +6dbc : 00000000; +6dbd : 00000000; +6dbe : 00000000; +6dbf : 00000000; +6dc0 : 00000000; +6dc1 : 00000000; +6dc2 : 00000000; +6dc3 : 00000000; +6dc4 : 00000000; +6dc5 : 00000000; +6dc6 : 00000000; +6dc7 : 00000000; +6dc8 : 00000000; +6dc9 : 00000000; +6dca : 00000000; +6dcb : 00000000; +6dcc : 00000000; +6dcd : 00000000; +6dce : 00000000; +6dcf : 00000000; +6dd0 : 00000000; +6dd1 : 00000000; +6dd2 : 00000000; +6dd3 : 00000000; +6dd4 : 00000000; +6dd5 : 00000000; +6dd6 : 00000000; +6dd7 : 00000000; +6dd8 : 00000000; +6dd9 : 00000000; +6dda : 00000000; +6ddb : 00000000; +6ddc : 00000000; +6ddd : 00000000; +6dde : 00000000; +6ddf : 00000000; +6de0 : 00000000; +6de1 : 00000000; +6de2 : 00000000; +6de3 : 00000000; +6de4 : 00000000; +6de5 : 00000000; +6de6 : 00000000; +6de7 : 00000000; +6de8 : 00000000; +6de9 : 00000000; +6dea : 00000000; +6deb : 00000000; +6dec : 00000000; +6ded : 00000000; +6dee : 00000000; +6def : 00000000; +6df0 : 00000000; +6df1 : 00000000; +6df2 : 00000000; +6df3 : 00000000; +6df4 : 00000000; +6df5 : 00000000; +6df6 : 00000000; +6df7 : 00000000; +6df8 : 00000000; +6df9 : 00000000; +6dfa : 00000000; +6dfb : 00000000; +6dfc : 00000000; +6dfd : 00000000; +6dfe : 00000000; +6dff : 00000000; +6e00 : 00000000; +6e01 : 00000000; +6e02 : 00000000; +6e03 : 00000000; +6e04 : 00000000; +6e05 : 00000000; +6e06 : 00000000; +6e07 : 00000000; +6e08 : 00000000; +6e09 : 00000000; +6e0a : 00000000; +6e0b : 00000000; +6e0c : 00000000; +6e0d : 00000000; +6e0e : 00000000; +6e0f : 00000000; +6e10 : 00000000; +6e11 : 00000000; +6e12 : 00000000; +6e13 : 00000000; +6e14 : 00000000; +6e15 : 00000000; +6e16 : 00000000; +6e17 : 00000000; +6e18 : 00000000; +6e19 : 00000000; +6e1a : 00000000; +6e1b : 00000000; +6e1c : 00000000; +6e1d : 00000000; +6e1e : 00000000; +6e1f : 00000000; +6e20 : 00000000; +6e21 : 00000000; +6e22 : 00000000; +6e23 : 00000000; +6e24 : 00000000; +6e25 : 00000000; +6e26 : 00000000; +6e27 : 00000000; +6e28 : 00000000; +6e29 : 00000000; +6e2a : 00000000; +6e2b : 00000000; +6e2c : 00000000; +6e2d : 00000000; +6e2e : 00000000; +6e2f : 00000000; +6e30 : 00000000; +6e31 : 00000000; +6e32 : 00000000; +6e33 : 00000000; +6e34 : 00000000; +6e35 : 00000000; +6e36 : 00000000; +6e37 : 00000000; +6e38 : 00000000; +6e39 : 00000000; +6e3a : 00000000; +6e3b : 00000000; +6e3c : 00000000; +6e3d : 00000000; +6e3e : 00000000; +6e3f : 00000000; +6e40 : 00000000; +6e41 : 00000000; +6e42 : 00000000; +6e43 : 00000000; +6e44 : 00000000; +6e45 : 00000000; +6e46 : 00000000; +6e47 : 00000000; +6e48 : 00000000; +6e49 : 00000000; +6e4a : 00000000; +6e4b : 00000000; +6e4c : 00000000; +6e4d : 00000000; +6e4e : 00000000; +6e4f : 00000000; +6e50 : 00000000; +6e51 : 00000000; +6e52 : 00000000; +6e53 : 00000000; +6e54 : 00000000; +6e55 : 00000000; +6e56 : 00000000; +6e57 : 00000000; +6e58 : 00000000; +6e59 : 00000000; +6e5a : 00000000; +6e5b : 00000000; +6e5c : 00000000; +6e5d : 00000000; +6e5e : 00000000; +6e5f : 00000000; +6e60 : 00000000; +6e61 : 00000000; +6e62 : 00000000; +6e63 : 00000000; +6e64 : 00000000; +6e65 : 00000000; +6e66 : 00000000; +6e67 : 00000000; +6e68 : 00000000; +6e69 : 00000000; +6e6a : 00000000; +6e6b : 00000000; +6e6c : 00000000; +6e6d : 00000000; +6e6e : 00000000; +6e6f : 00000000; +6e70 : 00000000; +6e71 : 00000000; +6e72 : 00000000; +6e73 : 00000000; +6e74 : 00000000; +6e75 : 00000000; +6e76 : 00000000; +6e77 : 00000000; +6e78 : 00000000; +6e79 : 00000000; +6e7a : 00000000; +6e7b : 00000000; +6e7c : 00000000; +6e7d : 00000000; +6e7e : 00000000; +6e7f : 00000000; +6e80 : 00000000; +6e81 : 00000000; +6e82 : 00000000; +6e83 : 00000000; +6e84 : 00000000; +6e85 : 00000000; +6e86 : 00000000; +6e87 : 00000000; +6e88 : 00000000; +6e89 : 00000000; +6e8a : 00000000; +6e8b : 00000000; +6e8c : 00000000; +6e8d : 00000000; +6e8e : 00000000; +6e8f : 00000000; +6e90 : 00000000; +6e91 : 00000000; +6e92 : 00000000; +6e93 : 00000000; +6e94 : 00000000; +6e95 : 00000000; +6e96 : 00000000; +6e97 : 00000000; +6e98 : 00000000; +6e99 : 00000000; +6e9a : 00000000; +6e9b : 00000000; +6e9c : 00000000; +6e9d : 00000000; +6e9e : 00000000; +6e9f : 00000000; +6ea0 : 00000000; +6ea1 : 00000000; +6ea2 : 00000000; +6ea3 : 00000000; +6ea4 : 00000000; +6ea5 : 00000000; +6ea6 : 00000000; +6ea7 : 00000000; +6ea8 : 00000000; +6ea9 : 00000000; +6eaa : 00000000; +6eab : 00000000; +6eac : 00000000; +6ead : 00000000; +6eae : 00000000; +6eaf : 00000000; +6eb0 : 00000000; +6eb1 : 00000000; +6eb2 : 00000000; +6eb3 : 00000000; +6eb4 : 00000000; +6eb5 : 00000000; +6eb6 : 00000000; +6eb7 : 00000000; +6eb8 : 00000000; +6eb9 : 00000000; +6eba : 00000000; +6ebb : 00000000; +6ebc : 00000000; +6ebd : 00000000; +6ebe : 00000000; +6ebf : 00000000; +6ec0 : 00000000; +6ec1 : 00000000; +6ec2 : 00000000; +6ec3 : 00000000; +6ec4 : 00000000; +6ec5 : 00000000; +6ec6 : 00000000; +6ec7 : 00000000; +6ec8 : 00000000; +6ec9 : 00000000; +6eca : 00000000; +6ecb : 00000000; +6ecc : 00000000; +6ecd : 00000000; +6ece : 00000000; +6ecf : 00000000; +6ed0 : 00000000; +6ed1 : 00000000; +6ed2 : 00000000; +6ed3 : 00000000; +6ed4 : 00000000; +6ed5 : 00000000; +6ed6 : 00000000; +6ed7 : 00000000; +6ed8 : 00000000; +6ed9 : 00000000; +6eda : 00000000; +6edb : 00000000; +6edc : 00000000; +6edd : 00000000; +6ede : 00000000; +6edf : 00000000; +6ee0 : 00000000; +6ee1 : 00000000; +6ee2 : 00000000; +6ee3 : 00000000; +6ee4 : 00000000; +6ee5 : 00000000; +6ee6 : 00000000; +6ee7 : 00000000; +6ee8 : 00000000; +6ee9 : 00000000; +6eea : 00000000; +6eeb : 00000000; +6eec : 00000000; +6eed : 00000000; +6eee : 00000000; +6eef : 00000000; +6ef0 : 00000000; +6ef1 : 00000000; +6ef2 : 00000000; +6ef3 : 00000000; +6ef4 : 00000000; +6ef5 : 00000000; +6ef6 : 00000000; +6ef7 : 00000000; +6ef8 : 00000000; +6ef9 : 00000000; +6efa : 00000000; +6efb : 00000000; +6efc : 00000000; +6efd : 00000000; +6efe : 00000000; +6eff : 00000000; +6f00 : 00000000; +6f01 : 00000000; +6f02 : 00000000; +6f03 : 00000000; +6f04 : 00000000; +6f05 : 00000000; +6f06 : 00000000; +6f07 : 00000000; +6f08 : 00000000; +6f09 : 00000000; +6f0a : 00000000; +6f0b : 00000000; +6f0c : 00000000; +6f0d : 00000000; +6f0e : 00000000; +6f0f : 00000000; +6f10 : 00000000; +6f11 : 00000000; +6f12 : 00000000; +6f13 : 00000000; +6f14 : 00000000; +6f15 : 00000000; +6f16 : 00000000; +6f17 : 00000000; +6f18 : 00000000; +6f19 : 00000000; +6f1a : 00000000; +6f1b : 00000000; +6f1c : 00000000; +6f1d : 00000000; +6f1e : 00000000; +6f1f : 00000000; +6f20 : 00000000; +6f21 : 00000000; +6f22 : 00000000; +6f23 : 00000000; +6f24 : 00000000; +6f25 : 00000000; +6f26 : 00000000; +6f27 : 00000000; +6f28 : 00000000; +6f29 : 00000000; +6f2a : 00000000; +6f2b : 00000000; +6f2c : 00000000; +6f2d : 00000000; +6f2e : 00000000; +6f2f : 00000000; +6f30 : 00000000; +6f31 : 00000000; +6f32 : 00000000; +6f33 : 00000000; +6f34 : 00000000; +6f35 : 00000000; +6f36 : 00000000; +6f37 : 00000000; +6f38 : 00000000; +6f39 : 00000000; +6f3a : 00000000; +6f3b : 00000000; +6f3c : 00000000; +6f3d : 00000000; +6f3e : 00000000; +6f3f : 00000000; +6f40 : 00000000; +6f41 : 00000000; +6f42 : 00000000; +6f43 : 00000000; +6f44 : 00000000; +6f45 : 00000000; +6f46 : 00000000; +6f47 : 00000000; +6f48 : 00000000; +6f49 : 00000000; +6f4a : 00000000; +6f4b : 00000000; +6f4c : 00000000; +6f4d : 00000000; +6f4e : 00000000; +6f4f : 00000000; +6f50 : 00000000; +6f51 : 00000000; +6f52 : 00000000; +6f53 : 00000000; +6f54 : 00000000; +6f55 : 00000000; +6f56 : 00000000; +6f57 : 00000000; +6f58 : 00000000; +6f59 : 00000000; +6f5a : 00000000; +6f5b : 00000000; +6f5c : 00000000; +6f5d : 00000000; +6f5e : 00000000; +6f5f : 00000000; +6f60 : 00000000; +6f61 : 00000000; +6f62 : 00000000; +6f63 : 00000000; +6f64 : 00000000; +6f65 : 00000000; +6f66 : 00000000; +6f67 : 00000000; +6f68 : 00000000; +6f69 : 00000000; +6f6a : 00000000; +6f6b : 00000000; +6f6c : 00000000; +6f6d : 00000000; +6f6e : 00000000; +6f6f : 00000000; +6f70 : 00000000; +6f71 : 00000000; +6f72 : 00000000; +6f73 : 00000000; +6f74 : 00000000; +6f75 : 00000000; +6f76 : 00000000; +6f77 : 00000000; +6f78 : 00000000; +6f79 : 00000000; +6f7a : 00000000; +6f7b : 00000000; +6f7c : 00000000; +6f7d : 00000000; +6f7e : 00000000; +6f7f : 00000000; +6f80 : 00000000; +6f81 : 00000000; +6f82 : 00000000; +6f83 : 00000000; +6f84 : 00000000; +6f85 : 00000000; +6f86 : 00000000; +6f87 : 00000000; +6f88 : 00000000; +6f89 : 00000000; +6f8a : 00000000; +6f8b : 00000000; +6f8c : 00000000; +6f8d : 00000000; +6f8e : 00000000; +6f8f : 00000000; +6f90 : 00000000; +6f91 : 00000000; +6f92 : 00000000; +6f93 : 00000000; +6f94 : 00000000; +6f95 : 00000000; +6f96 : 00000000; +6f97 : 00000000; +6f98 : 00000000; +6f99 : 00000000; +6f9a : 00000000; +6f9b : 00000000; +6f9c : 00000000; +6f9d : 00000000; +6f9e : 00000000; +6f9f : 00000000; +6fa0 : 00000000; +6fa1 : 00000000; +6fa2 : 00000000; +6fa3 : 00000000; +6fa4 : 00000000; +6fa5 : 00000000; +6fa6 : 00000000; +6fa7 : 00000000; +6fa8 : 00000000; +6fa9 : 00000000; +6faa : 00000000; +6fab : 00000000; +6fac : 00000000; +6fad : 00000000; +6fae : 00000000; +6faf : 00000000; +6fb0 : 00000000; +6fb1 : 00000000; +6fb2 : 00000000; +6fb3 : 00000000; +6fb4 : 00000000; +6fb5 : 00000000; +6fb6 : 00000000; +6fb7 : 00000000; +6fb8 : 00000000; +6fb9 : 00000000; +6fba : 00000000; +6fbb : 00000000; +6fbc : 00000000; +6fbd : 00000000; +6fbe : 00000000; +6fbf : 00000000; +6fc0 : 00000000; +6fc1 : 00000000; +6fc2 : 00000000; +6fc3 : 00000000; +6fc4 : 00000000; +6fc5 : 00000000; +6fc6 : 00000000; +6fc7 : 00000000; +6fc8 : 00000000; +6fc9 : 00000000; +6fca : 00000000; +6fcb : 00000000; +6fcc : 00000000; +6fcd : 00000000; +6fce : 00000000; +6fcf : 00000000; +6fd0 : 00000000; +6fd1 : 00000000; +6fd2 : 00000000; +6fd3 : 00000000; +6fd4 : 00000000; +6fd5 : 00000000; +6fd6 : 00000000; +6fd7 : 00000000; +6fd8 : 00000000; +6fd9 : 00000000; +6fda : 00000000; +6fdb : 00000000; +6fdc : 00000000; +6fdd : 00000000; +6fde : 00000000; +6fdf : 00000000; +6fe0 : 00000000; +6fe1 : 00000000; +6fe2 : 00000000; +6fe3 : 00000000; +6fe4 : 00000000; +6fe5 : 00000000; +6fe6 : 00000000; +6fe7 : 00000000; +6fe8 : 00000000; +6fe9 : 00000000; +6fea : 00000000; +6feb : 00000000; +6fec : 00000000; +6fed : 00000000; +6fee : 00000000; +6fef : 00000000; +6ff0 : 00000000; +6ff1 : 00000000; +6ff2 : 00000000; +6ff3 : 00000000; +6ff4 : 00000000; +6ff5 : 00000000; +6ff6 : 00000000; +6ff7 : 00000000; +6ff8 : 00000000; +6ff9 : 00000000; +6ffa : 00000000; +6ffb : 00000000; +6ffc : 00000000; +6ffd : 00000000; +6ffe : 00000000; +6fff : 00000000; +7000 : 00000000; +7001 : 00000000; +7002 : 00000000; +7003 : 00000000; +7004 : 00000000; +7005 : 00000000; +7006 : 00000000; +7007 : 00000000; +7008 : 00000000; +7009 : 00000000; +700a : 00000000; +700b : 00000000; +700c : 00000000; +700d : 00000000; +700e : 00000000; +700f : 00000000; +7010 : 00000000; +7011 : 00000000; +7012 : 00000000; +7013 : 00000000; +7014 : 00000000; +7015 : 00000000; +7016 : 00000000; +7017 : 00000000; +7018 : 00000000; +7019 : 00000000; +701a : 00000000; +701b : 00000000; +701c : 00000000; +701d : 00000000; +701e : 00000000; +701f : 00000000; +7020 : 00000000; +7021 : 00000000; +7022 : 00000000; +7023 : 00000000; +7024 : 00000000; +7025 : 00000000; +7026 : 00000000; +7027 : 00000000; +7028 : 00000000; +7029 : 00000000; +702a : 00000000; +702b : 00000000; +702c : 00000000; +702d : 00000000; +702e : 00000000; +702f : 00000000; +7030 : 00000000; +7031 : 00000000; +7032 : 00000000; +7033 : 00000000; +7034 : 00000000; +7035 : 00000000; +7036 : 00000000; +7037 : 00000000; +7038 : 00000000; +7039 : 00000000; +703a : 00000000; +703b : 00000000; +703c : 00000000; +703d : 00000000; +703e : 00000000; +703f : 00000000; +7040 : 00000000; +7041 : 00000000; +7042 : 00000000; +7043 : 00000000; +7044 : 00000000; +7045 : 00000000; +7046 : 00000000; +7047 : 00000000; +7048 : 00000000; +7049 : 00000000; +704a : 00000000; +704b : 00000000; +704c : 00000000; +704d : 00000000; +704e : 00000000; +704f : 00000000; +7050 : 00000000; +7051 : 00000000; +7052 : 00000000; +7053 : 00000000; +7054 : 00000000; +7055 : 00000000; +7056 : 00000000; +7057 : 00000000; +7058 : 00000000; +7059 : 00000000; +705a : 00000000; +705b : 00000000; +705c : 00000000; +705d : 00000000; +705e : 00000000; +705f : 00000000; +7060 : 00000000; +7061 : 00000000; +7062 : 00000000; +7063 : 00000000; +7064 : 00000000; +7065 : 00000000; +7066 : 00000000; +7067 : 00000000; +7068 : 00000000; +7069 : 00000000; +706a : 00000000; +706b : 00000000; +706c : 00000000; +706d : 00000000; +706e : 00000000; +706f : 00000000; +7070 : 00000000; +7071 : 00000000; +7072 : 00000000; +7073 : 00000000; +7074 : 00000000; +7075 : 00000000; +7076 : 00000000; +7077 : 00000000; +7078 : 00000000; +7079 : 00000000; +707a : 00000000; +707b : 00000000; +707c : 00000000; +707d : 00000000; +707e : 00000000; +707f : 00000000; +7080 : 00000000; +7081 : 00000000; +7082 : 00000000; +7083 : 00000000; +7084 : 00000000; +7085 : 00000000; +7086 : 00000000; +7087 : 00000000; +7088 : 00000000; +7089 : 00000000; +708a : 00000000; +708b : 00000000; +708c : 00000000; +708d : 00000000; +708e : 00000000; +708f : 00000000; +7090 : 00000000; +7091 : 00000000; +7092 : 00000000; +7093 : 00000000; +7094 : 00000000; +7095 : 00000000; +7096 : 00000000; +7097 : 00000000; +7098 : 00000000; +7099 : 00000000; +709a : 00000000; +709b : 00000000; +709c : 00000000; +709d : 00000000; +709e : 00000000; +709f : 00000000; +70a0 : 00000000; +70a1 : 00000000; +70a2 : 00000000; +70a3 : 00000000; +70a4 : 00000000; +70a5 : 00000000; +70a6 : 00000000; +70a7 : 00000000; +70a8 : 00000000; +70a9 : 00000000; +70aa : 00000000; +70ab : 00000000; +70ac : 00000000; +70ad : 00000000; +70ae : 00000000; +70af : 00000000; +70b0 : 00000000; +70b1 : 00000000; +70b2 : 00000000; +70b3 : 00000000; +70b4 : 00000000; +70b5 : 00000000; +70b6 : 00000000; +70b7 : 00000000; +70b8 : 00000000; +70b9 : 00000000; +70ba : 00000000; +70bb : 00000000; +70bc : 00000000; +70bd : 00000000; +70be : 00000000; +70bf : 00000000; +70c0 : 00000000; +70c1 : 00000000; +70c2 : 00000000; +70c3 : 00000000; +70c4 : 00000000; +70c5 : 00000000; +70c6 : 00000000; +70c7 : 00000000; +70c8 : 00000000; +70c9 : 00000000; +70ca : 00000000; +70cb : 00000000; +70cc : 00000000; +70cd : 00000000; +70ce : 00000000; +70cf : 00000000; +70d0 : 00000000; +70d1 : 00000000; +70d2 : 00000000; +70d3 : 00000000; +70d4 : 00000000; +70d5 : 00000000; +70d6 : 00000000; +70d7 : 00000000; +70d8 : 00000000; +70d9 : 00000000; +70da : 00000000; +70db : 00000000; +70dc : 00000000; +70dd : 00000000; +70de : 00000000; +70df : 00000000; +70e0 : 00000000; +70e1 : 00000000; +70e2 : 00000000; +70e3 : 00000000; +70e4 : 00000000; +70e5 : 00000000; +70e6 : 00000000; +70e7 : 00000000; +70e8 : 00000000; +70e9 : 00000000; +70ea : 00000000; +70eb : 00000000; +70ec : 00000000; +70ed : 00000000; +70ee : 00000000; +70ef : 00000000; +70f0 : 00000000; +70f1 : 00000000; +70f2 : 00000000; +70f3 : 00000000; +70f4 : 00000000; +70f5 : 00000000; +70f6 : 00000000; +70f7 : 00000000; +70f8 : 00000000; +70f9 : 00000000; +70fa : 00000000; +70fb : 00000000; +70fc : 00000000; +70fd : 00000000; +70fe : 00000000; +70ff : 00000000; +7100 : 00000000; +7101 : 00000000; +7102 : 00000000; +7103 : 00000000; +7104 : 00000000; +7105 : 00000000; +7106 : 00000000; +7107 : 00000000; +7108 : 00000000; +7109 : 00000000; +710a : 00000000; +710b : 00000000; +710c : 00000000; +710d : 00000000; +710e : 00000000; +710f : 00000000; +7110 : 00000000; +7111 : 00000000; +7112 : 00000000; +7113 : 00000000; +7114 : 00000000; +7115 : 00000000; +7116 : 00000000; +7117 : 00000000; +7118 : 00000000; +7119 : 00000000; +711a : 00000000; +711b : 00000000; +711c : 00000000; +711d : 00000000; +711e : 00000000; +711f : 00000000; +7120 : 00000000; +7121 : 00000000; +7122 : 00000000; +7123 : 00000000; +7124 : 00000000; +7125 : 00000000; +7126 : 00000000; +7127 : 00000000; +7128 : 00000000; +7129 : 00000000; +712a : 00000000; +712b : 00000000; +712c : 00000000; +712d : 00000000; +712e : 00000000; +712f : 00000000; +7130 : 00000000; +7131 : 00000000; +7132 : 00000000; +7133 : 00000000; +7134 : 00000000; +7135 : 00000000; +7136 : 00000000; +7137 : 00000000; +7138 : 00000000; +7139 : 00000000; +713a : 00000000; +713b : 00000000; +713c : 00000000; +713d : 00000000; +713e : 00000000; +713f : 00000000; +7140 : 00000000; +7141 : 00000000; +7142 : 00000000; +7143 : 00000000; +7144 : 00000000; +7145 : 00000000; +7146 : 00000000; +7147 : 00000000; +7148 : 00000000; +7149 : 00000000; +714a : 00000000; +714b : 00000000; +714c : 00000000; +714d : 00000000; +714e : 00000000; +714f : 00000000; +7150 : 00000000; +7151 : 00000000; +7152 : 00000000; +7153 : 00000000; +7154 : 00000000; +7155 : 00000000; +7156 : 00000000; +7157 : 00000000; +7158 : 00000000; +7159 : 00000000; +715a : 00000000; +715b : 00000000; +715c : 00000000; +715d : 00000000; +715e : 00000000; +715f : 00000000; +7160 : 00000000; +7161 : 00000000; +7162 : 00000000; +7163 : 00000000; +7164 : 00000000; +7165 : 00000000; +7166 : 00000000; +7167 : 00000000; +7168 : 00000000; +7169 : 00000000; +716a : 00000000; +716b : 00000000; +716c : 00000000; +716d : 00000000; +716e : 00000000; +716f : 00000000; +7170 : 00000000; +7171 : 00000000; +7172 : 00000000; +7173 : 00000000; +7174 : 00000000; +7175 : 00000000; +7176 : 00000000; +7177 : 00000000; +7178 : 00000000; +7179 : 00000000; +717a : 00000000; +717b : 00000000; +717c : 00000000; +717d : 00000000; +717e : 00000000; +717f : 00000000; +7180 : 00000000; +7181 : 00000000; +7182 : 00000000; +7183 : 00000000; +7184 : 00000000; +7185 : 00000000; +7186 : 00000000; +7187 : 00000000; +7188 : 00000000; +7189 : 00000000; +718a : 00000000; +718b : 00000000; +718c : 00000000; +718d : 00000000; +718e : 00000000; +718f : 00000000; +7190 : 00000000; +7191 : 00000000; +7192 : 00000000; +7193 : 00000000; +7194 : 00000000; +7195 : 00000000; +7196 : 00000000; +7197 : 00000000; +7198 : 00000000; +7199 : 00000000; +719a : 00000000; +719b : 00000000; +719c : 00000000; +719d : 00000000; +719e : 00000000; +719f : 00000000; +71a0 : 00000000; +71a1 : 00000000; +71a2 : 00000000; +71a3 : 00000000; +71a4 : 00000000; +71a5 : 00000000; +71a6 : 00000000; +71a7 : 00000000; +71a8 : 00000000; +71a9 : 00000000; +71aa : 00000000; +71ab : 00000000; +71ac : 00000000; +71ad : 00000000; +71ae : 00000000; +71af : 00000000; +71b0 : 00000000; +71b1 : 00000000; +71b2 : 00000000; +71b3 : 00000000; +71b4 : 00000000; +71b5 : 00000000; +71b6 : 00000000; +71b7 : 00000000; +71b8 : 00000000; +71b9 : 00000000; +71ba : 00000000; +71bb : 00000000; +71bc : 00000000; +71bd : 00000000; +71be : 00000000; +71bf : 00000000; +71c0 : 00000000; +71c1 : 00000000; +71c2 : 00000000; +71c3 : 00000000; +71c4 : 00000000; +71c5 : 00000000; +71c6 : 00000000; +71c7 : 00000000; +71c8 : 00000000; +71c9 : 00000000; +71ca : 00000000; +71cb : 00000000; +71cc : 00000000; +71cd : 00000000; +71ce : 00000000; +71cf : 00000000; +71d0 : 00000000; +71d1 : 00000000; +71d2 : 00000000; +71d3 : 00000000; +71d4 : 00000000; +71d5 : 00000000; +71d6 : 00000000; +71d7 : 00000000; +71d8 : 00000000; +71d9 : 00000000; +71da : 00000000; +71db : 00000000; +71dc : 00000000; +71dd : 00000000; +71de : 00000000; +71df : 00000000; +71e0 : 00000000; +71e1 : 00000000; +71e2 : 00000000; +71e3 : 00000000; +71e4 : 00000000; +71e5 : 00000000; +71e6 : 00000000; +71e7 : 00000000; +71e8 : 00000000; +71e9 : 00000000; +71ea : 00000000; +71eb : 00000000; +71ec : 00000000; +71ed : 00000000; +71ee : 00000000; +71ef : 00000000; +71f0 : 00000000; +71f1 : 00000000; +71f2 : 00000000; +71f3 : 00000000; +71f4 : 00000000; +71f5 : 00000000; +71f6 : 00000000; +71f7 : 00000000; +71f8 : 00000000; +71f9 : 00000000; +71fa : 00000000; +71fb : 00000000; +71fc : 00000000; +71fd : 00000000; +71fe : 00000000; +71ff : 00000000; +7200 : 00000000; +7201 : 00000000; +7202 : 00000000; +7203 : 00000000; +7204 : 00000000; +7205 : 00000000; +7206 : 00000000; +7207 : 00000000; +7208 : 00000000; +7209 : 00000000; +720a : 00000000; +720b : 00000000; +720c : 00000000; +720d : 00000000; +720e : 00000000; +720f : 00000000; +7210 : 00000000; +7211 : 00000000; +7212 : 00000000; +7213 : 00000000; +7214 : 00000000; +7215 : 00000000; +7216 : 00000000; +7217 : 00000000; +7218 : 00000000; +7219 : 00000000; +721a : 00000000; +721b : 00000000; +721c : 00000000; +721d : 00000000; +721e : 00000000; +721f : 00000000; +7220 : 00000000; +7221 : 00000000; +7222 : 00000000; +7223 : 00000000; +7224 : 00000000; +7225 : 00000000; +7226 : 00000000; +7227 : 00000000; +7228 : 00000000; +7229 : 00000000; +722a : 00000000; +722b : 00000000; +722c : 00000000; +722d : 00000000; +722e : 00000000; +722f : 00000000; +7230 : 00000000; +7231 : 00000000; +7232 : 00000000; +7233 : 00000000; +7234 : 00000000; +7235 : 00000000; +7236 : 00000000; +7237 : 00000000; +7238 : 00000000; +7239 : 00000000; +723a : 00000000; +723b : 00000000; +723c : 00000000; +723d : 00000000; +723e : 00000000; +723f : 00000000; +7240 : 00000000; +7241 : 00000000; +7242 : 00000000; +7243 : 00000000; +7244 : 00000000; +7245 : 00000000; +7246 : 00000000; +7247 : 00000000; +7248 : 00000000; +7249 : 00000000; +724a : 00000000; +724b : 00000000; +724c : 00000000; +724d : 00000000; +724e : 00000000; +724f : 00000000; +7250 : 00000000; +7251 : 00000000; +7252 : 00000000; +7253 : 00000000; +7254 : 00000000; +7255 : 00000000; +7256 : 00000000; +7257 : 00000000; +7258 : 00000000; +7259 : 00000000; +725a : 00000000; +725b : 00000000; +725c : 00000000; +725d : 00000000; +725e : 00000000; +725f : 00000000; +7260 : 00000000; +7261 : 00000000; +7262 : 00000000; +7263 : 00000000; +7264 : 00000000; +7265 : 00000000; +7266 : 00000000; +7267 : 00000000; +7268 : 00000000; +7269 : 00000000; +726a : 00000000; +726b : 00000000; +726c : 00000000; +726d : 00000000; +726e : 00000000; +726f : 00000000; +7270 : 00000000; +7271 : 00000000; +7272 : 00000000; +7273 : 00000000; +7274 : 00000000; +7275 : 00000000; +7276 : 00000000; +7277 : 00000000; +7278 : 00000000; +7279 : 00000000; +727a : 00000000; +727b : 00000000; +727c : 00000000; +727d : 00000000; +727e : 00000000; +727f : 00000000; +7280 : 00000000; +7281 : 00000000; +7282 : 00000000; +7283 : 00000000; +7284 : 00000000; +7285 : 00000000; +7286 : 00000000; +7287 : 00000000; +7288 : 00000000; +7289 : 00000000; +728a : 00000000; +728b : 00000000; +728c : 00000000; +728d : 00000000; +728e : 00000000; +728f : 00000000; +7290 : 00000000; +7291 : 00000000; +7292 : 00000000; +7293 : 00000000; +7294 : 00000000; +7295 : 00000000; +7296 : 00000000; +7297 : 00000000; +7298 : 00000000; +7299 : 00000000; +729a : 00000000; +729b : 00000000; +729c : 00000000; +729d : 00000000; +729e : 00000000; +729f : 00000000; +72a0 : 00000000; +72a1 : 00000000; +72a2 : 00000000; +72a3 : 00000000; +72a4 : 00000000; +72a5 : 00000000; +72a6 : 00000000; +72a7 : 00000000; +72a8 : 00000000; +72a9 : 00000000; +72aa : 00000000; +72ab : 00000000; +72ac : 00000000; +72ad : 00000000; +72ae : 00000000; +72af : 00000000; +72b0 : 00000000; +72b1 : 00000000; +72b2 : 00000000; +72b3 : 00000000; +72b4 : 00000000; +72b5 : 00000000; +72b6 : 00000000; +72b7 : 00000000; +72b8 : 00000000; +72b9 : 00000000; +72ba : 00000000; +72bb : 00000000; +72bc : 00000000; +72bd : 00000000; +72be : 00000000; +72bf : 00000000; +72c0 : 00000000; +72c1 : 00000000; +72c2 : 00000000; +72c3 : 00000000; +72c4 : 00000000; +72c5 : 00000000; +72c6 : 00000000; +72c7 : 00000000; +72c8 : 00000000; +72c9 : 00000000; +72ca : 00000000; +72cb : 00000000; +72cc : 00000000; +72cd : 00000000; +72ce : 00000000; +72cf : 00000000; +72d0 : 00000000; +72d1 : 00000000; +72d2 : 00000000; +72d3 : 00000000; +72d4 : 00000000; +72d5 : 00000000; +72d6 : 00000000; +72d7 : 00000000; +72d8 : 00000000; +72d9 : 00000000; +72da : 00000000; +72db : 00000000; +72dc : 00000000; +72dd : 00000000; +72de : 00000000; +72df : 00000000; +72e0 : 00000000; +72e1 : 00000000; +72e2 : 00000000; +72e3 : 00000000; +72e4 : 00000000; +72e5 : 00000000; +72e6 : 00000000; +72e7 : 00000000; +72e8 : 00000000; +72e9 : 00000000; +72ea : 00000000; +72eb : 00000000; +72ec : 00000000; +72ed : 00000000; +72ee : 00000000; +72ef : 00000000; +72f0 : 00000000; +72f1 : 00000000; +72f2 : 00000000; +72f3 : 00000000; +72f4 : 00000000; +72f5 : 00000000; +72f6 : 00000000; +72f7 : 00000000; +72f8 : 00000000; +72f9 : 00000000; +72fa : 00000000; +72fb : 00000000; +72fc : 00000000; +72fd : 00000000; +72fe : 00000000; +72ff : 00000000; +7300 : 00000000; +7301 : 00000000; +7302 : 00000000; +7303 : 00000000; +7304 : 00000000; +7305 : 00000000; +7306 : 00000000; +7307 : 00000000; +7308 : 00000000; +7309 : 00000000; +730a : 00000000; +730b : 00000000; +730c : 00000000; +730d : 00000000; +730e : 00000000; +730f : 00000000; +7310 : 00000000; +7311 : 00000000; +7312 : 00000000; +7313 : 00000000; +7314 : 00000000; +7315 : 00000000; +7316 : 00000000; +7317 : 00000000; +7318 : 00000000; +7319 : 00000000; +731a : 00000000; +731b : 00000000; +731c : 00000000; +731d : 00000000; +731e : 00000000; +731f : 00000000; +7320 : 00000000; +7321 : 00000000; +7322 : 00000000; +7323 : 00000000; +7324 : 00000000; +7325 : 00000000; +7326 : 00000000; +7327 : 00000000; +7328 : 00000000; +7329 : 00000000; +732a : 00000000; +732b : 00000000; +732c : 00000000; +732d : 00000000; +732e : 00000000; +732f : 00000000; +7330 : 00000000; +7331 : 00000000; +7332 : 00000000; +7333 : 00000000; +7334 : 00000000; +7335 : 00000000; +7336 : 00000000; +7337 : 00000000; +7338 : 00000000; +7339 : 00000000; +733a : 00000000; +733b : 00000000; +733c : 00000000; +733d : 00000000; +733e : 00000000; +733f : 00000000; +7340 : 00000000; +7341 : 00000000; +7342 : 00000000; +7343 : 00000000; +7344 : 00000000; +7345 : 00000000; +7346 : 00000000; +7347 : 00000000; +7348 : 00000000; +7349 : 00000000; +734a : 00000000; +734b : 00000000; +734c : 00000000; +734d : 00000000; +734e : 00000000; +734f : 00000000; +7350 : 00000000; +7351 : 00000000; +7352 : 00000000; +7353 : 00000000; +7354 : 00000000; +7355 : 00000000; +7356 : 00000000; +7357 : 00000000; +7358 : 00000000; +7359 : 00000000; +735a : 00000000; +735b : 00000000; +735c : 00000000; +735d : 00000000; +735e : 00000000; +735f : 00000000; +7360 : 00000000; +7361 : 00000000; +7362 : 00000000; +7363 : 00000000; +7364 : 00000000; +7365 : 00000000; +7366 : 00000000; +7367 : 00000000; +7368 : 00000000; +7369 : 00000000; +736a : 00000000; +736b : 00000000; +736c : 00000000; +736d : 00000000; +736e : 00000000; +736f : 00000000; +7370 : 00000000; +7371 : 00000000; +7372 : 00000000; +7373 : 00000000; +7374 : 00000000; +7375 : 00000000; +7376 : 00000000; +7377 : 00000000; +7378 : 00000000; +7379 : 00000000; +737a : 00000000; +737b : 00000000; +737c : 00000000; +737d : 00000000; +737e : 00000000; +737f : 00000000; +7380 : 00000000; +7381 : 00000000; +7382 : 00000000; +7383 : 00000000; +7384 : 00000000; +7385 : 00000000; +7386 : 00000000; +7387 : 00000000; +7388 : 00000000; +7389 : 00000000; +738a : 00000000; +738b : 00000000; +738c : 00000000; +738d : 00000000; +738e : 00000000; +738f : 00000000; +7390 : 00000000; +7391 : 00000000; +7392 : 00000000; +7393 : 00000000; +7394 : 00000000; +7395 : 00000000; +7396 : 00000000; +7397 : 00000000; +7398 : 00000000; +7399 : 00000000; +739a : 00000000; +739b : 00000000; +739c : 00000000; +739d : 00000000; +739e : 00000000; +739f : 00000000; +73a0 : 00000000; +73a1 : 00000000; +73a2 : 00000000; +73a3 : 00000000; +73a4 : 00000000; +73a5 : 00000000; +73a6 : 00000000; +73a7 : 00000000; +73a8 : 00000000; +73a9 : 00000000; +73aa : 00000000; +73ab : 00000000; +73ac : 00000000; +73ad : 00000000; +73ae : 00000000; +73af : 00000000; +73b0 : 00000000; +73b1 : 00000000; +73b2 : 00000000; +73b3 : 00000000; +73b4 : 00000000; +73b5 : 00000000; +73b6 : 00000000; +73b7 : 00000000; +73b8 : 00000000; +73b9 : 00000000; +73ba : 00000000; +73bb : 00000000; +73bc : 00000000; +73bd : 00000000; +73be : 00000000; +73bf : 00000000; +73c0 : 00000000; +73c1 : 00000000; +73c2 : 00000000; +73c3 : 00000000; +73c4 : 00000000; +73c5 : 00000000; +73c6 : 00000000; +73c7 : 00000000; +73c8 : 00000000; +73c9 : 00000000; +73ca : 00000000; +73cb : 00000000; +73cc : 00000000; +73cd : 00000000; +73ce : 00000000; +73cf : 00000000; +73d0 : 00000000; +73d1 : 00000000; +73d2 : 00000000; +73d3 : 00000000; +73d4 : 00000000; +73d5 : 00000000; +73d6 : 00000000; +73d7 : 00000000; +73d8 : 00000000; +73d9 : 00000000; +73da : 00000000; +73db : 00000000; +73dc : 00000000; +73dd : 00000000; +73de : 00000000; +73df : 00000000; +73e0 : 00000000; +73e1 : 00000000; +73e2 : 00000000; +73e3 : 00000000; +73e4 : 00000000; +73e5 : 00000000; +73e6 : 00000000; +73e7 : 00000000; +73e8 : 00000000; +73e9 : 00000000; +73ea : 00000000; +73eb : 00000000; +73ec : 00000000; +73ed : 00000000; +73ee : 00000000; +73ef : 00000000; +73f0 : 00000000; +73f1 : 00000000; +73f2 : 00000000; +73f3 : 00000000; +73f4 : 00000000; +73f5 : 00000000; +73f6 : 00000000; +73f7 : 00000000; +73f8 : 00000000; +73f9 : 00000000; +73fa : 00000000; +73fb : 00000000; +73fc : 00000000; +73fd : 00000000; +73fe : 00000000; +73ff : 00000000; +7400 : 00000000; +7401 : 00000000; +7402 : 00000000; +7403 : 00000000; +7404 : 00000000; +7405 : 00000000; +7406 : 00000000; +7407 : 00000000; +7408 : 00000000; +7409 : 00000000; +740a : 00000000; +740b : 00000000; +740c : 00000000; +740d : 00000000; +740e : 00000000; +740f : 00000000; +7410 : 00000000; +7411 : 00000000; +7412 : 00000000; +7413 : 00000000; +7414 : 00000000; +7415 : 00000000; +7416 : 00000000; +7417 : 00000000; +7418 : 00000000; +7419 : 00000000; +741a : 00000000; +741b : 00000000; +741c : 00000000; +741d : 00000000; +741e : 00000000; +741f : 00000000; +7420 : 00000000; +7421 : 00000000; +7422 : 00000000; +7423 : 00000000; +7424 : 00000000; +7425 : 00000000; +7426 : 00000000; +7427 : 00000000; +7428 : 00000000; +7429 : 00000000; +742a : 00000000; +742b : 00000000; +742c : 00000000; +742d : 00000000; +742e : 00000000; +742f : 00000000; +7430 : 00000000; +7431 : 00000000; +7432 : 00000000; +7433 : 00000000; +7434 : 00000000; +7435 : 00000000; +7436 : 00000000; +7437 : 00000000; +7438 : 00000000; +7439 : 00000000; +743a : 00000000; +743b : 00000000; +743c : 00000000; +743d : 00000000; +743e : 00000000; +743f : 00000000; +7440 : 00000000; +7441 : 00000000; +7442 : 00000000; +7443 : 00000000; +7444 : 00000000; +7445 : 00000000; +7446 : 00000000; +7447 : 00000000; +7448 : 00000000; +7449 : 00000000; +744a : 00000000; +744b : 00000000; +744c : 00000000; +744d : 00000000; +744e : 00000000; +744f : 00000000; +7450 : 00000000; +7451 : 00000000; +7452 : 00000000; +7453 : 00000000; +7454 : 00000000; +7455 : 00000000; +7456 : 00000000; +7457 : 00000000; +7458 : 00000000; +7459 : 00000000; +745a : 00000000; +745b : 00000000; +745c : 00000000; +745d : 00000000; +745e : 00000000; +745f : 00000000; +7460 : 00000000; +7461 : 00000000; +7462 : 00000000; +7463 : 00000000; +7464 : 00000000; +7465 : 00000000; +7466 : 00000000; +7467 : 00000000; +7468 : 00000000; +7469 : 00000000; +746a : 00000000; +746b : 00000000; +746c : 00000000; +746d : 00000000; +746e : 00000000; +746f : 00000000; +7470 : 00000000; +7471 : 00000000; +7472 : 00000000; +7473 : 00000000; +7474 : 00000000; +7475 : 00000000; +7476 : 00000000; +7477 : 00000000; +7478 : 00000000; +7479 : 00000000; +747a : 00000000; +747b : 00000000; +747c : 00000000; +747d : 00000000; +747e : 00000000; +747f : 00000000; +7480 : 00000000; +7481 : 00000000; +7482 : 00000000; +7483 : 00000000; +7484 : 00000000; +7485 : 00000000; +7486 : 00000000; +7487 : 00000000; +7488 : 00000000; +7489 : 00000000; +748a : 00000000; +748b : 00000000; +748c : 00000000; +748d : 00000000; +748e : 00000000; +748f : 00000000; +7490 : 00000000; +7491 : 00000000; +7492 : 00000000; +7493 : 00000000; +7494 : 00000000; +7495 : 00000000; +7496 : 00000000; +7497 : 00000000; +7498 : 00000000; +7499 : 00000000; +749a : 00000000; +749b : 00000000; +749c : 00000000; +749d : 00000000; +749e : 00000000; +749f : 00000000; +74a0 : 00000000; +74a1 : 00000000; +74a2 : 00000000; +74a3 : 00000000; +74a4 : 00000000; +74a5 : 00000000; +74a6 : 00000000; +74a7 : 00000000; +74a8 : 00000000; +74a9 : 00000000; +74aa : 00000000; +74ab : 00000000; +74ac : 00000000; +74ad : 00000000; +74ae : 00000000; +74af : 00000000; +74b0 : 00000000; +74b1 : 00000000; +74b2 : 00000000; +74b3 : 00000000; +74b4 : 00000000; +74b5 : 00000000; +74b6 : 00000000; +74b7 : 00000000; +74b8 : 00000000; +74b9 : 00000000; +74ba : 00000000; +74bb : 00000000; +74bc : 00000000; +74bd : 00000000; +74be : 00000000; +74bf : 00000000; +74c0 : 00000000; +74c1 : 00000000; +74c2 : 00000000; +74c3 : 00000000; +74c4 : 00000000; +74c5 : 00000000; +74c6 : 00000000; +74c7 : 00000000; +74c8 : 00000000; +74c9 : 00000000; +74ca : 00000000; +74cb : 00000000; +74cc : 00000000; +74cd : 00000000; +74ce : 00000000; +74cf : 00000000; +74d0 : 00000000; +74d1 : 00000000; +74d2 : 00000000; +74d3 : 00000000; +74d4 : 00000000; +74d5 : 00000000; +74d6 : 00000000; +74d7 : 00000000; +74d8 : 00000000; +74d9 : 00000000; +74da : 00000000; +74db : 00000000; +74dc : 00000000; +74dd : 00000000; +74de : 00000000; +74df : 00000000; +74e0 : 00000000; +74e1 : 00000000; +74e2 : 00000000; +74e3 : 00000000; +74e4 : 00000000; +74e5 : 00000000; +74e6 : 00000000; +74e7 : 00000000; +74e8 : 00000000; +74e9 : 00000000; +74ea : 00000000; +74eb : 00000000; +74ec : 00000000; +74ed : 00000000; +74ee : 00000000; +74ef : 00000000; +74f0 : 00000000; +74f1 : 00000000; +74f2 : 00000000; +74f3 : 00000000; +74f4 : 00000000; +74f5 : 00000000; +74f6 : 00000000; +74f7 : 00000000; +74f8 : 00000000; +74f9 : 00000000; +74fa : 00000000; +74fb : 00000000; +74fc : 00000000; +74fd : 00000000; +74fe : 00000000; +74ff : 00000000; +7500 : 00000000; +7501 : 00000000; +7502 : 00000000; +7503 : 00000000; +7504 : 00000000; +7505 : 00000000; +7506 : 00000000; +7507 : 00000000; +7508 : 00000000; +7509 : 00000000; +750a : 00000000; +750b : 00000000; +750c : 00000000; +750d : 00000000; +750e : 00000000; +750f : 00000000; +7510 : 00000000; +7511 : 00000000; +7512 : 00000000; +7513 : 00000000; +7514 : 00000000; +7515 : 00000000; +7516 : 00000000; +7517 : 00000000; +7518 : 00000000; +7519 : 00000000; +751a : 00000000; +751b : 00000000; +751c : 00000000; +751d : 00000000; +751e : 00000000; +751f : 00000000; +7520 : 00000000; +7521 : 00000000; +7522 : 00000000; +7523 : 00000000; +7524 : 00000000; +7525 : 00000000; +7526 : 00000000; +7527 : 00000000; +7528 : 00000000; +7529 : 00000000; +752a : 00000000; +752b : 00000000; +752c : 00000000; +752d : 00000000; +752e : 00000000; +752f : 00000000; +7530 : 00000000; +7531 : 00000000; +7532 : 00000000; +7533 : 00000000; +7534 : 00000000; +7535 : 00000000; +7536 : 00000000; +7537 : 00000000; +7538 : 00000000; +7539 : 00000000; +753a : 00000000; +753b : 00000000; +753c : 00000000; +753d : 00000000; +753e : 00000000; +753f : 00000000; +7540 : 00000000; +7541 : 00000000; +7542 : 00000000; +7543 : 00000000; +7544 : 00000000; +7545 : 00000000; +7546 : 00000000; +7547 : 00000000; +7548 : 00000000; +7549 : 00000000; +754a : 00000000; +754b : 00000000; +754c : 00000000; +754d : 00000000; +754e : 00000000; +754f : 00000000; +7550 : 00000000; +7551 : 00000000; +7552 : 00000000; +7553 : 00000000; +7554 : 00000000; +7555 : 00000000; +7556 : 00000000; +7557 : 00000000; +7558 : 00000000; +7559 : 00000000; +755a : 00000000; +755b : 00000000; +755c : 00000000; +755d : 00000000; +755e : 00000000; +755f : 00000000; +7560 : 00000000; +7561 : 00000000; +7562 : 00000000; +7563 : 00000000; +7564 : 00000000; +7565 : 00000000; +7566 : 00000000; +7567 : 00000000; +7568 : 00000000; +7569 : 00000000; +756a : 00000000; +756b : 00000000; +756c : 00000000; +756d : 00000000; +756e : 00000000; +756f : 00000000; +7570 : 00000000; +7571 : 00000000; +7572 : 00000000; +7573 : 00000000; +7574 : 00000000; +7575 : 00000000; +7576 : 00000000; +7577 : 00000000; +7578 : 00000000; +7579 : 00000000; +757a : 00000000; +757b : 00000000; +757c : 00000000; +757d : 00000000; +757e : 00000000; +757f : 00000000; +7580 : 00000000; +7581 : 00000000; +7582 : 00000000; +7583 : 00000000; +7584 : 00000000; +7585 : 00000000; +7586 : 00000000; +7587 : 00000000; +7588 : 00000000; +7589 : 00000000; +758a : 00000000; +758b : 00000000; +758c : 00000000; +758d : 00000000; +758e : 00000000; +758f : 00000000; +7590 : 00000000; +7591 : 00000000; +7592 : 00000000; +7593 : 00000000; +7594 : 00000000; +7595 : 00000000; +7596 : 00000000; +7597 : 00000000; +7598 : 00000000; +7599 : 00000000; +759a : 00000000; +759b : 00000000; +759c : 00000000; +759d : 00000000; +759e : 00000000; +759f : 00000000; +75a0 : 00000000; +75a1 : 00000000; +75a2 : 00000000; +75a3 : 00000000; +75a4 : 00000000; +75a5 : 00000000; +75a6 : 00000000; +75a7 : 00000000; +75a8 : 00000000; +75a9 : 00000000; +75aa : 00000000; +75ab : 00000000; +75ac : 00000000; +75ad : 00000000; +75ae : 00000000; +75af : 00000000; +75b0 : 00000000; +75b1 : 00000000; +75b2 : 00000000; +75b3 : 00000000; +75b4 : 00000000; +75b5 : 00000000; +75b6 : 00000000; +75b7 : 00000000; +75b8 : 00000000; +75b9 : 00000000; +75ba : 00000000; +75bb : 00000000; +75bc : 00000000; +75bd : 00000000; +75be : 00000000; +75bf : 00000000; +75c0 : 00000000; +75c1 : 00000000; +75c2 : 00000000; +75c3 : 00000000; +75c4 : 00000000; +75c5 : 00000000; +75c6 : 00000000; +75c7 : 00000000; +75c8 : 00000000; +75c9 : 00000000; +75ca : 00000000; +75cb : 00000000; +75cc : 00000000; +75cd : 00000000; +75ce : 00000000; +75cf : 00000000; +75d0 : 00000000; +75d1 : 00000000; +75d2 : 00000000; +75d3 : 00000000; +75d4 : 00000000; +75d5 : 00000000; +75d6 : 00000000; +75d7 : 00000000; +75d8 : 00000000; +75d9 : 00000000; +75da : 00000000; +75db : 00000000; +75dc : 00000000; +75dd : 00000000; +75de : 00000000; +75df : 00000000; +75e0 : 00000000; +75e1 : 00000000; +75e2 : 00000000; +75e3 : 00000000; +75e4 : 00000000; +75e5 : 00000000; +75e6 : 00000000; +75e7 : 00000000; +75e8 : 00000000; +75e9 : 00000000; +75ea : 00000000; +75eb : 00000000; +75ec : 00000000; +75ed : 00000000; +75ee : 00000000; +75ef : 00000000; +75f0 : 00000000; +75f1 : 00000000; +75f2 : 00000000; +75f3 : 00000000; +75f4 : 00000000; +75f5 : 00000000; +75f6 : 00000000; +75f7 : 00000000; +75f8 : 00000000; +75f9 : 00000000; +75fa : 00000000; +75fb : 00000000; +75fc : 00000000; +75fd : 00000000; +75fe : 00000000; +75ff : 00000000; +7600 : 00000000; +7601 : 00000000; +7602 : 00000000; +7603 : 00000000; +7604 : 00000000; +7605 : 00000000; +7606 : 00000000; +7607 : 00000000; +7608 : 00000000; +7609 : 00000000; +760a : 00000000; +760b : 00000000; +760c : 00000000; +760d : 00000000; +760e : 00000000; +760f : 00000000; +7610 : 00000000; +7611 : 00000000; +7612 : 00000000; +7613 : 00000000; +7614 : 00000000; +7615 : 00000000; +7616 : 00000000; +7617 : 00000000; +7618 : 00000000; +7619 : 00000000; +761a : 00000000; +761b : 00000000; +761c : 00000000; +761d : 00000000; +761e : 00000000; +761f : 00000000; +7620 : 00000000; +7621 : 00000000; +7622 : 00000000; +7623 : 00000000; +7624 : 00000000; +7625 : 00000000; +7626 : 00000000; +7627 : 00000000; +7628 : 00000000; +7629 : 00000000; +762a : 00000000; +762b : 00000000; +762c : 00000000; +762d : 00000000; +762e : 00000000; +762f : 00000000; +7630 : 00000000; +7631 : 00000000; +7632 : 00000000; +7633 : 00000000; +7634 : 00000000; +7635 : 00000000; +7636 : 00000000; +7637 : 00000000; +7638 : 00000000; +7639 : 00000000; +763a : 00000000; +763b : 00000000; +763c : 00000000; +763d : 00000000; +763e : 00000000; +763f : 00000000; +7640 : 00000000; +7641 : 00000000; +7642 : 00000000; +7643 : 00000000; +7644 : 00000000; +7645 : 00000000; +7646 : 00000000; +7647 : 00000000; +7648 : 00000000; +7649 : 00000000; +764a : 00000000; +764b : 00000000; +764c : 00000000; +764d : 00000000; +764e : 00000000; +764f : 00000000; +7650 : 00000000; +7651 : 00000000; +7652 : 00000000; +7653 : 00000000; +7654 : 00000000; +7655 : 00000000; +7656 : 00000000; +7657 : 00000000; +7658 : 00000000; +7659 : 00000000; +765a : 00000000; +765b : 00000000; +765c : 00000000; +765d : 00000000; +765e : 00000000; +765f : 00000000; +7660 : 00000000; +7661 : 00000000; +7662 : 00000000; +7663 : 00000000; +7664 : 00000000; +7665 : 00000000; +7666 : 00000000; +7667 : 00000000; +7668 : 00000000; +7669 : 00000000; +766a : 00000000; +766b : 00000000; +766c : 00000000; +766d : 00000000; +766e : 00000000; +766f : 00000000; +7670 : 00000000; +7671 : 00000000; +7672 : 00000000; +7673 : 00000000; +7674 : 00000000; +7675 : 00000000; +7676 : 00000000; +7677 : 00000000; +7678 : 00000000; +7679 : 00000000; +767a : 00000000; +767b : 00000000; +767c : 00000000; +767d : 00000000; +767e : 00000000; +767f : 00000000; +7680 : 00000000; +7681 : 00000000; +7682 : 00000000; +7683 : 00000000; +7684 : 00000000; +7685 : 00000000; +7686 : 00000000; +7687 : 00000000; +7688 : 00000000; +7689 : 00000000; +768a : 00000000; +768b : 00000000; +768c : 00000000; +768d : 00000000; +768e : 00000000; +768f : 00000000; +7690 : 00000000; +7691 : 00000000; +7692 : 00000000; +7693 : 00000000; +7694 : 00000000; +7695 : 00000000; +7696 : 00000000; +7697 : 00000000; +7698 : 00000000; +7699 : 00000000; +769a : 00000000; +769b : 00000000; +769c : 00000000; +769d : 00000000; +769e : 00000000; +769f : 00000000; +76a0 : 00000000; +76a1 : 00000000; +76a2 : 00000000; +76a3 : 00000000; +76a4 : 00000000; +76a5 : 00000000; +76a6 : 00000000; +76a7 : 00000000; +76a8 : 00000000; +76a9 : 00000000; +76aa : 00000000; +76ab : 00000000; +76ac : 00000000; +76ad : 00000000; +76ae : 00000000; +76af : 00000000; +76b0 : 00000000; +76b1 : 00000000; +76b2 : 00000000; +76b3 : 00000000; +76b4 : 00000000; +76b5 : 00000000; +76b6 : 00000000; +76b7 : 00000000; +76b8 : 00000000; +76b9 : 00000000; +76ba : 00000000; +76bb : 00000000; +76bc : 00000000; +76bd : 00000000; +76be : 00000000; +76bf : 00000000; +76c0 : 00000000; +76c1 : 00000000; +76c2 : 00000000; +76c3 : 00000000; +76c4 : 00000000; +76c5 : 00000000; +76c6 : 00000000; +76c7 : 00000000; +76c8 : 00000000; +76c9 : 00000000; +76ca : 00000000; +76cb : 00000000; +76cc : 00000000; +76cd : 00000000; +76ce : 00000000; +76cf : 00000000; +76d0 : 00000000; +76d1 : 00000000; +76d2 : 00000000; +76d3 : 00000000; +76d4 : 00000000; +76d5 : 00000000; +76d6 : 00000000; +76d7 : 00000000; +76d8 : 00000000; +76d9 : 00000000; +76da : 00000000; +76db : 00000000; +76dc : 00000000; +76dd : 00000000; +76de : 00000000; +76df : 00000000; +76e0 : 00000000; +76e1 : 00000000; +76e2 : 00000000; +76e3 : 00000000; +76e4 : 00000000; +76e5 : 00000000; +76e6 : 00000000; +76e7 : 00000000; +76e8 : 00000000; +76e9 : 00000000; +76ea : 00000000; +76eb : 00000000; +76ec : 00000000; +76ed : 00000000; +76ee : 00000000; +76ef : 00000000; +76f0 : 00000000; +76f1 : 00000000; +76f2 : 00000000; +76f3 : 00000000; +76f4 : 00000000; +76f5 : 00000000; +76f6 : 00000000; +76f7 : 00000000; +76f8 : 00000000; +76f9 : 00000000; +76fa : 00000000; +76fb : 00000000; +76fc : 00000000; +76fd : 00000000; +76fe : 00000000; +76ff : 00000000; +7700 : 00000000; +7701 : 00000000; +7702 : 00000000; +7703 : 00000000; +7704 : 00000000; +7705 : 00000000; +7706 : 00000000; +7707 : 00000000; +7708 : 00000000; +7709 : 00000000; +770a : 00000000; +770b : 00000000; +770c : 00000000; +770d : 00000000; +770e : 00000000; +770f : 00000000; +7710 : 00000000; +7711 : 00000000; +7712 : 00000000; +7713 : 00000000; +7714 : 00000000; +7715 : 00000000; +7716 : 00000000; +7717 : 00000000; +7718 : 00000000; +7719 : 00000000; +771a : 00000000; +771b : 00000000; +771c : 00000000; +771d : 00000000; +771e : 00000000; +771f : 00000000; +7720 : 00000000; +7721 : 00000000; +7722 : 00000000; +7723 : 00000000; +7724 : 00000000; +7725 : 00000000; +7726 : 00000000; +7727 : 00000000; +7728 : 00000000; +7729 : 00000000; +772a : 00000000; +772b : 00000000; +772c : 00000000; +772d : 00000000; +772e : 00000000; +772f : 00000000; +7730 : 00000000; +7731 : 00000000; +7732 : 00000000; +7733 : 00000000; +7734 : 00000000; +7735 : 00000000; +7736 : 00000000; +7737 : 00000000; +7738 : 00000000; +7739 : 00000000; +773a : 00000000; +773b : 00000000; +773c : 00000000; +773d : 00000000; +773e : 00000000; +773f : 00000000; +7740 : 00000000; +7741 : 00000000; +7742 : 00000000; +7743 : 00000000; +7744 : 00000000; +7745 : 00000000; +7746 : 00000000; +7747 : 00000000; +7748 : 00000000; +7749 : 00000000; +774a : 00000000; +774b : 00000000; +774c : 00000000; +774d : 00000000; +774e : 00000000; +774f : 00000000; +7750 : 00000000; +7751 : 00000000; +7752 : 00000000; +7753 : 00000000; +7754 : 00000000; +7755 : 00000000; +7756 : 00000000; +7757 : 00000000; +7758 : 00000000; +7759 : 00000000; +775a : 00000000; +775b : 00000000; +775c : 00000000; +775d : 00000000; +775e : 00000000; +775f : 00000000; +7760 : 00000000; +7761 : 00000000; +7762 : 00000000; +7763 : 00000000; +7764 : 00000000; +7765 : 00000000; +7766 : 00000000; +7767 : 00000000; +7768 : 00000000; +7769 : 00000000; +776a : 00000000; +776b : 00000000; +776c : 00000000; +776d : 00000000; +776e : 00000000; +776f : 00000000; +7770 : 00000000; +7771 : 00000000; +7772 : 00000000; +7773 : 00000000; +7774 : 00000000; +7775 : 00000000; +7776 : 00000000; +7777 : 00000000; +7778 : 00000000; +7779 : 00000000; +777a : 00000000; +777b : 00000000; +777c : 00000000; +777d : 00000000; +777e : 00000000; +777f : 00000000; +7780 : 00000000; +7781 : 00000000; +7782 : 00000000; +7783 : 00000000; +7784 : 00000000; +7785 : 00000000; +7786 : 00000000; +7787 : 00000000; +7788 : 00000000; +7789 : 00000000; +778a : 00000000; +778b : 00000000; +778c : 00000000; +778d : 00000000; +778e : 00000000; +778f : 00000000; +7790 : 00000000; +7791 : 00000000; +7792 : 00000000; +7793 : 00000000; +7794 : 00000000; +7795 : 00000000; +7796 : 00000000; +7797 : 00000000; +7798 : 00000000; +7799 : 00000000; +779a : 00000000; +779b : 00000000; +779c : 00000000; +779d : 00000000; +779e : 00000000; +779f : 00000000; +77a0 : 00000000; +77a1 : 00000000; +77a2 : 00000000; +77a3 : 00000000; +77a4 : 00000000; +77a5 : 00000000; +77a6 : 00000000; +77a7 : 00000000; +77a8 : 00000000; +77a9 : 00000000; +77aa : 00000000; +77ab : 00000000; +77ac : 00000000; +77ad : 00000000; +77ae : 00000000; +77af : 00000000; +77b0 : 00000000; +77b1 : 00000000; +77b2 : 00000000; +77b3 : 00000000; +77b4 : 00000000; +77b5 : 00000000; +77b6 : 00000000; +77b7 : 00000000; +77b8 : 00000000; +77b9 : 00000000; +77ba : 00000000; +77bb : 00000000; +77bc : 00000000; +77bd : 00000000; +77be : 00000000; +77bf : 00000000; +77c0 : 00000000; +77c1 : 00000000; +77c2 : 00000000; +77c3 : 00000000; +77c4 : 00000000; +77c5 : 00000000; +77c6 : 00000000; +77c7 : 00000000; +77c8 : 00000000; +77c9 : 00000000; +77ca : 00000000; +77cb : 00000000; +77cc : 00000000; +77cd : 00000000; +77ce : 00000000; +77cf : 00000000; +77d0 : 00000000; +77d1 : 00000000; +77d2 : 00000000; +77d3 : 00000000; +77d4 : 00000000; +77d5 : 00000000; +77d6 : 00000000; +77d7 : 00000000; +77d8 : 00000000; +77d9 : 00000000; +77da : 00000000; +77db : 00000000; +77dc : 00000000; +77dd : 00000000; +77de : 00000000; +77df : 00000000; +77e0 : 00000000; +77e1 : 00000000; +77e2 : 00000000; +77e3 : 00000000; +77e4 : 00000000; +77e5 : 00000000; +77e6 : 00000000; +77e7 : 00000000; +77e8 : 00000000; +77e9 : 00000000; +77ea : 00000000; +77eb : 00000000; +77ec : 00000000; +77ed : 00000000; +77ee : 00000000; +77ef : 00000000; +77f0 : 00000000; +77f1 : 00000000; +77f2 : 00000000; +77f3 : 00000000; +77f4 : 00000000; +77f5 : 00000000; +77f6 : 00000000; +77f7 : 00000000; +77f8 : 00000000; +77f9 : 00000000; +77fa : 00000000; +77fb : 00000000; +77fc : 00000000; +77fd : 00000000; +77fe : 00000000; +77ff : 00000000; +7800 : 00000000; +7801 : 00000000; +7802 : 00000000; +7803 : 00000000; +7804 : 00000000; +7805 : 00000000; +7806 : 00000000; +7807 : 00000000; +7808 : 00000000; +7809 : 00000000; +780a : 00000000; +780b : 00000000; +780c : 00000000; +780d : 00000000; +780e : 00000000; +780f : 00000000; +7810 : 00000000; +7811 : 00000000; +7812 : 00000000; +7813 : 00000000; +7814 : 00000000; +7815 : 00000000; +7816 : 00000000; +7817 : 00000000; +7818 : 00000000; +7819 : 00000000; +781a : 00000000; +781b : 00000000; +781c : 00000000; +781d : 00000000; +781e : 00000000; +781f : 00000000; +7820 : 00000000; +7821 : 00000000; +7822 : 00000000; +7823 : 00000000; +7824 : 00000000; +7825 : 00000000; +7826 : 00000000; +7827 : 00000000; +7828 : 00000000; +7829 : 00000000; +782a : 00000000; +782b : 00000000; +782c : 00000000; +782d : 00000000; +782e : 00000000; +782f : 00000000; +7830 : 00000000; +7831 : 00000000; +7832 : 00000000; +7833 : 00000000; +7834 : 00000000; +7835 : 00000000; +7836 : 00000000; +7837 : 00000000; +7838 : 00000000; +7839 : 00000000; +783a : 00000000; +783b : 00000000; +783c : 00000000; +783d : 00000000; +783e : 00000000; +783f : 00000000; +7840 : 00000000; +7841 : 00000000; +7842 : 00000000; +7843 : 00000000; +7844 : 00000000; +7845 : 00000000; +7846 : 00000000; +7847 : 00000000; +7848 : 00000000; +7849 : 00000000; +784a : 00000000; +784b : 00000000; +784c : 00000000; +784d : 00000000; +784e : 00000000; +784f : 00000000; +7850 : 00000000; +7851 : 00000000; +7852 : 00000000; +7853 : 00000000; +7854 : 00000000; +7855 : 00000000; +7856 : 00000000; +7857 : 00000000; +7858 : 00000000; +7859 : 00000000; +785a : 00000000; +785b : 00000000; +785c : 00000000; +785d : 00000000; +785e : 00000000; +785f : 00000000; +7860 : 00000000; +7861 : 00000000; +7862 : 00000000; +7863 : 00000000; +7864 : 00000000; +7865 : 00000000; +7866 : 00000000; +7867 : 00000000; +7868 : 00000000; +7869 : 00000000; +786a : 00000000; +786b : 00000000; +786c : 00000000; +786d : 00000000; +786e : 00000000; +786f : 00000000; +7870 : 00000000; +7871 : 00000000; +7872 : 00000000; +7873 : 00000000; +7874 : 00000000; +7875 : 00000000; +7876 : 00000000; +7877 : 00000000; +7878 : 00000000; +7879 : 00000000; +787a : 00000000; +787b : 00000000; +787c : 00000000; +787d : 00000000; +787e : 00000000; +787f : 00000000; +7880 : 00000000; +7881 : 00000000; +7882 : 00000000; +7883 : 00000000; +7884 : 00000000; +7885 : 00000000; +7886 : 00000000; +7887 : 00000000; +7888 : 00000000; +7889 : 00000000; +788a : 00000000; +788b : 00000000; +788c : 00000000; +788d : 00000000; +788e : 00000000; +788f : 00000000; +7890 : 00000000; +7891 : 00000000; +7892 : 00000000; +7893 : 00000000; +7894 : 00000000; +7895 : 00000000; +7896 : 00000000; +7897 : 00000000; +7898 : 00000000; +7899 : 00000000; +789a : 00000000; +789b : 00000000; +789c : 00000000; +789d : 00000000; +789e : 00000000; +789f : 00000000; +78a0 : 00000000; +78a1 : 00000000; +78a2 : 00000000; +78a3 : 00000000; +78a4 : 00000000; +78a5 : 00000000; +78a6 : 00000000; +78a7 : 00000000; +78a8 : 00000000; +78a9 : 00000000; +78aa : 00000000; +78ab : 00000000; +78ac : 00000000; +78ad : 00000000; +78ae : 00000000; +78af : 00000000; +78b0 : 00000000; +78b1 : 00000000; +78b2 : 00000000; +78b3 : 00000000; +78b4 : 00000000; +78b5 : 00000000; +78b6 : 00000000; +78b7 : 00000000; +78b8 : 00000000; +78b9 : 00000000; +78ba : 00000000; +78bb : 00000000; +78bc : 00000000; +78bd : 00000000; +78be : 00000000; +78bf : 00000000; +78c0 : 00000000; +78c1 : 00000000; +78c2 : 00000000; +78c3 : 00000000; +78c4 : 00000000; +78c5 : 00000000; +78c6 : 00000000; +78c7 : 00000000; +78c8 : 00000000; +78c9 : 00000000; +78ca : 00000000; +78cb : 00000000; +78cc : 00000000; +78cd : 00000000; +78ce : 00000000; +78cf : 00000000; +78d0 : 00000000; +78d1 : 00000000; +78d2 : 00000000; +78d3 : 00000000; +78d4 : 00000000; +78d5 : 00000000; +78d6 : 00000000; +78d7 : 00000000; +78d8 : 00000000; +78d9 : 00000000; +78da : 00000000; +78db : 00000000; +78dc : 00000000; +78dd : 00000000; +78de : 00000000; +78df : 00000000; +78e0 : 00000000; +78e1 : 00000000; +78e2 : 00000000; +78e3 : 00000000; +78e4 : 00000000; +78e5 : 00000000; +78e6 : 00000000; +78e7 : 00000000; +78e8 : 00000000; +78e9 : 00000000; +78ea : 00000000; +78eb : 00000000; +78ec : 00000000; +78ed : 00000000; +78ee : 00000000; +78ef : 00000000; +78f0 : 00000000; +78f1 : 00000000; +78f2 : 00000000; +78f3 : 00000000; +78f4 : 00000000; +78f5 : 00000000; +78f6 : 00000000; +78f7 : 00000000; +78f8 : 00000000; +78f9 : 00000000; +78fa : 00000000; +78fb : 00000000; +78fc : 00000000; +78fd : 00000000; +78fe : 00000000; +78ff : 00000000; +7900 : 00000000; +7901 : 00000000; +7902 : 00000000; +7903 : 00000000; +7904 : 00000000; +7905 : 00000000; +7906 : 00000000; +7907 : 00000000; +7908 : 00000000; +7909 : 00000000; +790a : 00000000; +790b : 00000000; +790c : 00000000; +790d : 00000000; +790e : 00000000; +790f : 00000000; +7910 : 00000000; +7911 : 00000000; +7912 : 00000000; +7913 : 00000000; +7914 : 00000000; +7915 : 00000000; +7916 : 00000000; +7917 : 00000000; +7918 : 00000000; +7919 : 00000000; +791a : 00000000; +791b : 00000000; +791c : 00000000; +791d : 00000000; +791e : 00000000; +791f : 00000000; +7920 : 00000000; +7921 : 00000000; +7922 : 00000000; +7923 : 00000000; +7924 : 00000000; +7925 : 00000000; +7926 : 00000000; +7927 : 00000000; +7928 : 00000000; +7929 : 00000000; +792a : 00000000; +792b : 00000000; +792c : 00000000; +792d : 00000000; +792e : 00000000; +792f : 00000000; +7930 : 00000000; +7931 : 00000000; +7932 : 00000000; +7933 : 00000000; +7934 : 00000000; +7935 : 00000000; +7936 : 00000000; +7937 : 00000000; +7938 : 00000000; +7939 : 00000000; +793a : 00000000; +793b : 00000000; +793c : 00000000; +793d : 00000000; +793e : 00000000; +793f : 00000000; +7940 : 00000000; +7941 : 00000000; +7942 : 00000000; +7943 : 00000000; +7944 : 00000000; +7945 : 00000000; +7946 : 00000000; +7947 : 00000000; +7948 : 00000000; +7949 : 00000000; +794a : 00000000; +794b : 00000000; +794c : 00000000; +794d : 00000000; +794e : 00000000; +794f : 00000000; +7950 : 00000000; +7951 : 00000000; +7952 : 00000000; +7953 : 00000000; +7954 : 00000000; +7955 : 00000000; +7956 : 00000000; +7957 : 00000000; +7958 : 00000000; +7959 : 00000000; +795a : 00000000; +795b : 00000000; +795c : 00000000; +795d : 00000000; +795e : 00000000; +795f : 00000000; +7960 : 00000000; +7961 : 00000000; +7962 : 00000000; +7963 : 00000000; +7964 : 00000000; +7965 : 00000000; +7966 : 00000000; +7967 : 00000000; +7968 : 00000000; +7969 : 00000000; +796a : 00000000; +796b : 00000000; +796c : 00000000; +796d : 00000000; +796e : 00000000; +796f : 00000000; +7970 : 00000000; +7971 : 00000000; +7972 : 00000000; +7973 : 00000000; +7974 : 00000000; +7975 : 00000000; +7976 : 00000000; +7977 : 00000000; +7978 : 00000000; +7979 : 00000000; +797a : 00000000; +797b : 00000000; +797c : 00000000; +797d : 00000000; +797e : 00000000; +797f : 00000000; +7980 : 00000000; +7981 : 00000000; +7982 : 00000000; +7983 : 00000000; +7984 : 00000000; +7985 : 00000000; +7986 : 00000000; +7987 : 00000000; +7988 : 00000000; +7989 : 00000000; +798a : 00000000; +798b : 00000000; +798c : 00000000; +798d : 00000000; +798e : 00000000; +798f : 00000000; +7990 : 00000000; +7991 : 00000000; +7992 : 00000000; +7993 : 00000000; +7994 : 00000000; +7995 : 00000000; +7996 : 00000000; +7997 : 00000000; +7998 : 00000000; +7999 : 00000000; +799a : 00000000; +799b : 00000000; +799c : 00000000; +799d : 00000000; +799e : 00000000; +799f : 00000000; +79a0 : 00000000; +79a1 : 00000000; +79a2 : 00000000; +79a3 : 00000000; +79a4 : 00000000; +79a5 : 00000000; +79a6 : 00000000; +79a7 : 00000000; +79a8 : 00000000; +79a9 : 00000000; +79aa : 00000000; +79ab : 00000000; +79ac : 00000000; +79ad : 00000000; +79ae : 00000000; +79af : 00000000; +79b0 : 00000000; +79b1 : 00000000; +79b2 : 00000000; +79b3 : 00000000; +79b4 : 00000000; +79b5 : 00000000; +79b6 : 00000000; +79b7 : 00000000; +79b8 : 00000000; +79b9 : 00000000; +79ba : 00000000; +79bb : 00000000; +79bc : 00000000; +79bd : 00000000; +79be : 00000000; +79bf : 00000000; +79c0 : 00000000; +79c1 : 00000000; +79c2 : 00000000; +79c3 : 00000000; +79c4 : 00000000; +79c5 : 00000000; +79c6 : 00000000; +79c7 : 00000000; +79c8 : 00000000; +79c9 : 00000000; +79ca : 00000000; +79cb : 00000000; +79cc : 00000000; +79cd : 00000000; +79ce : 00000000; +79cf : 00000000; +79d0 : 00000000; +79d1 : 00000000; +79d2 : 00000000; +79d3 : 00000000; +79d4 : 00000000; +79d5 : 00000000; +79d6 : 00000000; +79d7 : 00000000; +79d8 : 00000000; +79d9 : 00000000; +79da : 00000000; +79db : 00000000; +79dc : 00000000; +79dd : 00000000; +79de : 00000000; +79df : 00000000; +79e0 : 00000000; +79e1 : 00000000; +79e2 : 00000000; +79e3 : 00000000; +79e4 : 00000000; +79e5 : 00000000; +79e6 : 00000000; +79e7 : 00000000; +79e8 : 00000000; +79e9 : 00000000; +79ea : 00000000; +79eb : 00000000; +79ec : 00000000; +79ed : 00000000; +79ee : 00000000; +79ef : 00000000; +79f0 : 00000000; +79f1 : 00000000; +79f2 : 00000000; +79f3 : 00000000; +79f4 : 00000000; +79f5 : 00000000; +79f6 : 00000000; +79f7 : 00000000; +79f8 : 00000000; +79f9 : 00000000; +79fa : 00000000; +79fb : 00000000; +79fc : 00000000; +79fd : 00000000; +79fe : 00000000; +79ff : 00000000; +7a00 : 00000000; +7a01 : 00000000; +7a02 : 00000000; +7a03 : 00000000; +7a04 : 00000000; +7a05 : 00000000; +7a06 : 00000000; +7a07 : 00000000; +7a08 : 00000000; +7a09 : 00000000; +7a0a : 00000000; +7a0b : 00000000; +7a0c : 00000000; +7a0d : 00000000; +7a0e : 00000000; +7a0f : 00000000; +7a10 : 00000000; +7a11 : 00000000; +7a12 : 00000000; +7a13 : 00000000; +7a14 : 00000000; +7a15 : 00000000; +7a16 : 00000000; +7a17 : 00000000; +7a18 : 00000000; +7a19 : 00000000; +7a1a : 00000000; +7a1b : 00000000; +7a1c : 00000000; +7a1d : 00000000; +7a1e : 00000000; +7a1f : 00000000; +7a20 : 00000000; +7a21 : 00000000; +7a22 : 00000000; +7a23 : 00000000; +7a24 : 00000000; +7a25 : 00000000; +7a26 : 00000000; +7a27 : 00000000; +7a28 : 00000000; +7a29 : 00000000; +7a2a : 00000000; +7a2b : 00000000; +7a2c : 00000000; +7a2d : 00000000; +7a2e : 00000000; +7a2f : 00000000; +7a30 : 00000000; +7a31 : 00000000; +7a32 : 00000000; +7a33 : 00000000; +7a34 : 00000000; +7a35 : 00000000; +7a36 : 00000000; +7a37 : 00000000; +7a38 : 00000000; +7a39 : 00000000; +7a3a : 00000000; +7a3b : 00000000; +7a3c : 00000000; +7a3d : 00000000; +7a3e : 00000000; +7a3f : 00000000; +7a40 : 00000000; +7a41 : 00000000; +7a42 : 00000000; +7a43 : 00000000; +7a44 : 00000000; +7a45 : 00000000; +7a46 : 00000000; +7a47 : 00000000; +7a48 : 00000000; +7a49 : 00000000; +7a4a : 00000000; +7a4b : 00000000; +7a4c : 00000000; +7a4d : 00000000; +7a4e : 00000000; +7a4f : 00000000; +7a50 : 00000000; +7a51 : 00000000; +7a52 : 00000000; +7a53 : 00000000; +7a54 : 00000000; +7a55 : 00000000; +7a56 : 00000000; +7a57 : 00000000; +7a58 : 00000000; +7a59 : 00000000; +7a5a : 00000000; +7a5b : 00000000; +7a5c : 00000000; +7a5d : 00000000; +7a5e : 00000000; +7a5f : 00000000; +7a60 : 00000000; +7a61 : 00000000; +7a62 : 00000000; +7a63 : 00000000; +7a64 : 00000000; +7a65 : 00000000; +7a66 : 00000000; +7a67 : 00000000; +7a68 : 00000000; +7a69 : 00000000; +7a6a : 00000000; +7a6b : 00000000; +7a6c : 00000000; +7a6d : 00000000; +7a6e : 00000000; +7a6f : 00000000; +7a70 : 00000000; +7a71 : 00000000; +7a72 : 00000000; +7a73 : 00000000; +7a74 : 00000000; +7a75 : 00000000; +7a76 : 00000000; +7a77 : 00000000; +7a78 : 00000000; +7a79 : 00000000; +7a7a : 00000000; +7a7b : 00000000; +7a7c : 00000000; +7a7d : 00000000; +7a7e : 00000000; +7a7f : 00000000; +7a80 : 00000000; +7a81 : 00000000; +7a82 : 00000000; +7a83 : 00000000; +7a84 : 00000000; +7a85 : 00000000; +7a86 : 00000000; +7a87 : 00000000; +7a88 : 00000000; +7a89 : 00000000; +7a8a : 00000000; +7a8b : 00000000; +7a8c : 00000000; +7a8d : 00000000; +7a8e : 00000000; +7a8f : 00000000; +7a90 : 00000000; +7a91 : 00000000; +7a92 : 00000000; +7a93 : 00000000; +7a94 : 00000000; +7a95 : 00000000; +7a96 : 00000000; +7a97 : 00000000; +7a98 : 00000000; +7a99 : 00000000; +7a9a : 00000000; +7a9b : 00000000; +7a9c : 00000000; +7a9d : 00000000; +7a9e : 00000000; +7a9f : 00000000; +7aa0 : 00000000; +7aa1 : 00000000; +7aa2 : 00000000; +7aa3 : 00000000; +7aa4 : 00000000; +7aa5 : 00000000; +7aa6 : 00000000; +7aa7 : 00000000; +7aa8 : 00000000; +7aa9 : 00000000; +7aaa : 00000000; +7aab : 00000000; +7aac : 00000000; +7aad : 00000000; +7aae : 00000000; +7aaf : 00000000; +7ab0 : 00000000; +7ab1 : 00000000; +7ab2 : 00000000; +7ab3 : 00000000; +7ab4 : 00000000; +7ab5 : 00000000; +7ab6 : 00000000; +7ab7 : 00000000; +7ab8 : 00000000; +7ab9 : 00000000; +7aba : 00000000; +7abb : 00000000; +7abc : 00000000; +7abd : 00000000; +7abe : 00000000; +7abf : 00000000; +7ac0 : 00000000; +7ac1 : 00000000; +7ac2 : 00000000; +7ac3 : 00000000; +7ac4 : 00000000; +7ac5 : 00000000; +7ac6 : 00000000; +7ac7 : 00000000; +7ac8 : 00000000; +7ac9 : 00000000; +7aca : 00000000; +7acb : 00000000; +7acc : 00000000; +7acd : 00000000; +7ace : 00000000; +7acf : 00000000; +7ad0 : 00000000; +7ad1 : 00000000; +7ad2 : 00000000; +7ad3 : 00000000; +7ad4 : 00000000; +7ad5 : 00000000; +7ad6 : 00000000; +7ad7 : 00000000; +7ad8 : 00000000; +7ad9 : 00000000; +7ada : 00000000; +7adb : 00000000; +7adc : 00000000; +7add : 00000000; +7ade : 00000000; +7adf : 00000000; +7ae0 : 00000000; +7ae1 : 00000000; +7ae2 : 00000000; +7ae3 : 00000000; +7ae4 : 00000000; +7ae5 : 00000000; +7ae6 : 00000000; +7ae7 : 00000000; +7ae8 : 00000000; +7ae9 : 00000000; +7aea : 00000000; +7aeb : 00000000; +7aec : 00000000; +7aed : 00000000; +7aee : 00000000; +7aef : 00000000; +7af0 : 00000000; +7af1 : 00000000; +7af2 : 00000000; +7af3 : 00000000; +7af4 : 00000000; +7af5 : 00000000; +7af6 : 00000000; +7af7 : 00000000; +7af8 : 00000000; +7af9 : 00000000; +7afa : 00000000; +7afb : 00000000; +7afc : 00000000; +7afd : 00000000; +7afe : 00000000; +7aff : 00000000; +7b00 : 00000000; +7b01 : 00000000; +7b02 : 00000000; +7b03 : 00000000; +7b04 : 00000000; +7b05 : 00000000; +7b06 : 00000000; +7b07 : 00000000; +7b08 : 00000000; +7b09 : 00000000; +7b0a : 00000000; +7b0b : 00000000; +7b0c : 00000000; +7b0d : 00000000; +7b0e : 00000000; +7b0f : 00000000; +7b10 : 00000000; +7b11 : 00000000; +7b12 : 00000000; +7b13 : 00000000; +7b14 : 00000000; +7b15 : 00000000; +7b16 : 00000000; +7b17 : 00000000; +7b18 : 00000000; +7b19 : 00000000; +7b1a : 00000000; +7b1b : 00000000; +7b1c : 00000000; +7b1d : 00000000; +7b1e : 00000000; +7b1f : 00000000; +7b20 : 00000000; +7b21 : 00000000; +7b22 : 00000000; +7b23 : 00000000; +7b24 : 00000000; +7b25 : 00000000; +7b26 : 00000000; +7b27 : 00000000; +7b28 : 00000000; +7b29 : 00000000; +7b2a : 00000000; +7b2b : 00000000; +7b2c : 00000000; +7b2d : 00000000; +7b2e : 00000000; +7b2f : 00000000; +7b30 : 00000000; +7b31 : 00000000; +7b32 : 00000000; +7b33 : 00000000; +7b34 : 00000000; +7b35 : 00000000; +7b36 : 00000000; +7b37 : 00000000; +7b38 : 00000000; +7b39 : 00000000; +7b3a : 00000000; +7b3b : 00000000; +7b3c : 00000000; +7b3d : 00000000; +7b3e : 00000000; +7b3f : 00000000; +7b40 : 00000000; +7b41 : 00000000; +7b42 : 00000000; +7b43 : 00000000; +7b44 : 00000000; +7b45 : 00000000; +7b46 : 00000000; +7b47 : 00000000; +7b48 : 00000000; +7b49 : 00000000; +7b4a : 00000000; +7b4b : 00000000; +7b4c : 00000000; +7b4d : 00000000; +7b4e : 00000000; +7b4f : 00000000; +7b50 : 00000000; +7b51 : 00000000; +7b52 : 00000000; +7b53 : 00000000; +7b54 : 00000000; +7b55 : 00000000; +7b56 : 00000000; +7b57 : 00000000; +7b58 : 00000000; +7b59 : 00000000; +7b5a : 00000000; +7b5b : 00000000; +7b5c : 00000000; +7b5d : 00000000; +7b5e : 00000000; +7b5f : 00000000; +7b60 : 00000000; +7b61 : 00000000; +7b62 : 00000000; +7b63 : 00000000; +7b64 : 00000000; +7b65 : 00000000; +7b66 : 00000000; +7b67 : 00000000; +7b68 : 00000000; +7b69 : 00000000; +7b6a : 00000000; +7b6b : 00000000; +7b6c : 00000000; +7b6d : 00000000; +7b6e : 00000000; +7b6f : 00000000; +7b70 : 00000000; +7b71 : 00000000; +7b72 : 00000000; +7b73 : 00000000; +7b74 : 00000000; +7b75 : 00000000; +7b76 : 00000000; +7b77 : 00000000; +7b78 : 00000000; +7b79 : 00000000; +7b7a : 00000000; +7b7b : 00000000; +7b7c : 00000000; +7b7d : 00000000; +7b7e : 00000000; +7b7f : 00000000; +7b80 : 00000000; +7b81 : 00000000; +7b82 : 00000000; +7b83 : 00000000; +7b84 : 00000000; +7b85 : 00000000; +7b86 : 00000000; +7b87 : 00000000; +7b88 : 00000000; +7b89 : 00000000; +7b8a : 00000000; +7b8b : 00000000; +7b8c : 00000000; +7b8d : 00000000; +7b8e : 00000000; +7b8f : 00000000; +7b90 : 00000000; +7b91 : 00000000; +7b92 : 00000000; +7b93 : 00000000; +7b94 : 00000000; +7b95 : 00000000; +7b96 : 00000000; +7b97 : 00000000; +7b98 : 00000000; +7b99 : 00000000; +7b9a : 00000000; +7b9b : 00000000; +7b9c : 00000000; +7b9d : 00000000; +7b9e : 00000000; +7b9f : 00000000; +7ba0 : 00000000; +7ba1 : 00000000; +7ba2 : 00000000; +7ba3 : 00000000; +7ba4 : 00000000; +7ba5 : 00000000; +7ba6 : 00000000; +7ba7 : 00000000; +7ba8 : 00000000; +7ba9 : 00000000; +7baa : 00000000; +7bab : 00000000; +7bac : 00000000; +7bad : 00000000; +7bae : 00000000; +7baf : 00000000; +7bb0 : 00000000; +7bb1 : 00000000; +7bb2 : 00000000; +7bb3 : 00000000; +7bb4 : 00000000; +7bb5 : 00000000; +7bb6 : 00000000; +7bb7 : 00000000; +7bb8 : 00000000; +7bb9 : 00000000; +7bba : 00000000; +7bbb : 00000000; +7bbc : 00000000; +7bbd : 00000000; +7bbe : 00000000; +7bbf : 00000000; +7bc0 : 00000000; +7bc1 : 00000000; +7bc2 : 00000000; +7bc3 : 00000000; +7bc4 : 00000000; +7bc5 : 00000000; +7bc6 : 00000000; +7bc7 : 00000000; +7bc8 : 00000000; +7bc9 : 00000000; +7bca : 00000000; +7bcb : 00000000; +7bcc : 00000000; +7bcd : 00000000; +7bce : 00000000; +7bcf : 00000000; +7bd0 : 00000000; +7bd1 : 00000000; +7bd2 : 00000000; +7bd3 : 00000000; +7bd4 : 00000000; +7bd5 : 00000000; +7bd6 : 00000000; +7bd7 : 00000000; +7bd8 : 00000000; +7bd9 : 00000000; +7bda : 00000000; +7bdb : 00000000; +7bdc : 00000000; +7bdd : 00000000; +7bde : 00000000; +7bdf : 00000000; +7be0 : 00000000; +7be1 : 00000000; +7be2 : 00000000; +7be3 : 00000000; +7be4 : 00000000; +7be5 : 00000000; +7be6 : 00000000; +7be7 : 00000000; +7be8 : 00000000; +7be9 : 00000000; +7bea : 00000000; +7beb : 00000000; +7bec : 00000000; +7bed : 00000000; +7bee : 00000000; +7bef : 00000000; +7bf0 : 00000000; +7bf1 : 00000000; +7bf2 : 00000000; +7bf3 : 00000000; +7bf4 : 00000000; +7bf5 : 00000000; +7bf6 : 00000000; +7bf7 : 00000000; +7bf8 : 00000000; +7bf9 : 00000000; +7bfa : 00000000; +7bfb : 00000000; +7bfc : 00000000; +7bfd : 00000000; +7bfe : 00000000; +7bff : 00000000; +7c00 : 00000000; +7c01 : 00000000; +7c02 : 00000000; +7c03 : 00000000; +7c04 : 00000000; +7c05 : 00000000; +7c06 : 00000000; +7c07 : 00000000; +7c08 : 00000000; +7c09 : 00000000; +7c0a : 00000000; +7c0b : 00000000; +7c0c : 00000000; +7c0d : 00000000; +7c0e : 00000000; +7c0f : 00000000; +7c10 : 00000000; +7c11 : 00000000; +7c12 : 00000000; +7c13 : 00000000; +7c14 : 00000000; +7c15 : 00000000; +7c16 : 00000000; +7c17 : 00000000; +7c18 : 00000000; +7c19 : 00000000; +7c1a : 00000000; +7c1b : 00000000; +7c1c : 00000000; +7c1d : 00000000; +7c1e : 00000000; +7c1f : 00000000; +7c20 : 00000000; +7c21 : 00000000; +7c22 : 00000000; +7c23 : 00000000; +7c24 : 00000000; +7c25 : 00000000; +7c26 : 00000000; +7c27 : 00000000; +7c28 : 00000000; +7c29 : 00000000; +7c2a : 00000000; +7c2b : 00000000; +7c2c : 00000000; +7c2d : 00000000; +7c2e : 00000000; +7c2f : 00000000; +7c30 : 00000000; +7c31 : 00000000; +7c32 : 00000000; +7c33 : 00000000; +7c34 : 00000000; +7c35 : 00000000; +7c36 : 00000000; +7c37 : 00000000; +7c38 : 00000000; +7c39 : 00000000; +7c3a : 00000000; +7c3b : 00000000; +7c3c : 00000000; +7c3d : 00000000; +7c3e : 00000000; +7c3f : 00000000; +7c40 : 00000000; +7c41 : 00000000; +7c42 : 00000000; +7c43 : 00000000; +7c44 : 00000000; +7c45 : 00000000; +7c46 : 00000000; +7c47 : 00000000; +7c48 : 00000000; +7c49 : 00000000; +7c4a : 00000000; +7c4b : 00000000; +7c4c : 00000000; +7c4d : 00000000; +7c4e : 00000000; +7c4f : 00000000; +7c50 : 00000000; +7c51 : 00000000; +7c52 : 00000000; +7c53 : 00000000; +7c54 : 00000000; +7c55 : 00000000; +7c56 : 00000000; +7c57 : 00000000; +7c58 : 00000000; +7c59 : 00000000; +7c5a : 00000000; +7c5b : 00000000; +7c5c : 00000000; +7c5d : 00000000; +7c5e : 00000000; +7c5f : 00000000; +7c60 : 00000000; +7c61 : 00000000; +7c62 : 00000000; +7c63 : 00000000; +7c64 : 00000000; +7c65 : 00000000; +7c66 : 00000000; +7c67 : 00000000; +7c68 : 00000000; +7c69 : 00000000; +7c6a : 00000000; +7c6b : 00000000; +7c6c : 00000000; +7c6d : 00000000; +7c6e : 00000000; +7c6f : 00000000; +7c70 : 00000000; +7c71 : 00000000; +7c72 : 00000000; +7c73 : 00000000; +7c74 : 00000000; +7c75 : 00000000; +7c76 : 00000000; +7c77 : 00000000; +7c78 : 00000000; +7c79 : 00000000; +7c7a : 00000000; +7c7b : 00000000; +7c7c : 00000000; +7c7d : 00000000; +7c7e : 00000000; +7c7f : 00000000; +7c80 : 00000000; +7c81 : 00000000; +7c82 : 00000000; +7c83 : 00000000; +7c84 : 00000000; +7c85 : 00000000; +7c86 : 00000000; +7c87 : 00000000; +7c88 : 00000000; +7c89 : 00000000; +7c8a : 00000000; +7c8b : 00000000; +7c8c : 00000000; +7c8d : 00000000; +7c8e : 00000000; +7c8f : 00000000; +7c90 : 00000000; +7c91 : 00000000; +7c92 : 00000000; +7c93 : 00000000; +7c94 : 00000000; +7c95 : 00000000; +7c96 : 00000000; +7c97 : 00000000; +7c98 : 00000000; +7c99 : 00000000; +7c9a : 00000000; +7c9b : 00000000; +7c9c : 00000000; +7c9d : 00000000; +7c9e : 00000000; +7c9f : 00000000; +7ca0 : 00000000; +7ca1 : 00000000; +7ca2 : 00000000; +7ca3 : 00000000; +7ca4 : 00000000; +7ca5 : 00000000; +7ca6 : 00000000; +7ca7 : 00000000; +7ca8 : 00000000; +7ca9 : 00000000; +7caa : 00000000; +7cab : 00000000; +7cac : 00000000; +7cad : 00000000; +7cae : 00000000; +7caf : 00000000; +7cb0 : 00000000; +7cb1 : 00000000; +7cb2 : 00000000; +7cb3 : 00000000; +7cb4 : 00000000; +7cb5 : 00000000; +7cb6 : 00000000; +7cb7 : 00000000; +7cb8 : 00000000; +7cb9 : 00000000; +7cba : 00000000; +7cbb : 00000000; +7cbc : 00000000; +7cbd : 00000000; +7cbe : 00000000; +7cbf : 00000000; +7cc0 : 00000000; +7cc1 : 00000000; +7cc2 : 00000000; +7cc3 : 00000000; +7cc4 : 00000000; +7cc5 : 00000000; +7cc6 : 00000000; +7cc7 : 00000000; +7cc8 : 00000000; +7cc9 : 00000000; +7cca : 00000000; +7ccb : 00000000; +7ccc : 00000000; +7ccd : 00000000; +7cce : 00000000; +7ccf : 00000000; +7cd0 : 00000000; +7cd1 : 00000000; +7cd2 : 00000000; +7cd3 : 00000000; +7cd4 : 00000000; +7cd5 : 00000000; +7cd6 : 00000000; +7cd7 : 00000000; +7cd8 : 00000000; +7cd9 : 00000000; +7cda : 00000000; +7cdb : 00000000; +7cdc : 00000000; +7cdd : 00000000; +7cde : 00000000; +7cdf : 00000000; +7ce0 : 00000000; +7ce1 : 00000000; +7ce2 : 00000000; +7ce3 : 00000000; +7ce4 : 00000000; +7ce5 : 00000000; +7ce6 : 00000000; +7ce7 : 00000000; +7ce8 : 00000000; +7ce9 : 00000000; +7cea : 00000000; +7ceb : 00000000; +7cec : 00000000; +7ced : 00000000; +7cee : 00000000; +7cef : 00000000; +7cf0 : 00000000; +7cf1 : 00000000; +7cf2 : 00000000; +7cf3 : 00000000; +7cf4 : 00000000; +7cf5 : 00000000; +7cf6 : 00000000; +7cf7 : 00000000; +7cf8 : 00000000; +7cf9 : 00000000; +7cfa : 00000000; +7cfb : 00000000; +7cfc : 00000000; +7cfd : 00000000; +7cfe : 00000000; +7cff : 00000000; +7d00 : 00000000; +7d01 : 00000000; +7d02 : 00000000; +7d03 : 00000000; +7d04 : 00000000; +7d05 : 00000000; +7d06 : 00000000; +7d07 : 00000000; +7d08 : 00000000; +7d09 : 00000000; +7d0a : 00000000; +7d0b : 00000000; +7d0c : 00000000; +7d0d : 00000000; +7d0e : 00000000; +7d0f : 00000000; +7d10 : 00000000; +7d11 : 00000000; +7d12 : 00000000; +7d13 : 00000000; +7d14 : 00000000; +7d15 : 00000000; +7d16 : 00000000; +7d17 : 00000000; +7d18 : 00000000; +7d19 : 00000000; +7d1a : 00000000; +7d1b : 00000000; +7d1c : 00000000; +7d1d : 00000000; +7d1e : 00000000; +7d1f : 00000000; +7d20 : 00000000; +7d21 : 00000000; +7d22 : 00000000; +7d23 : 00000000; +7d24 : 00000000; +7d25 : 00000000; +7d26 : 00000000; +7d27 : 00000000; +7d28 : 00000000; +7d29 : 00000000; +7d2a : 00000000; +7d2b : 00000000; +7d2c : 00000000; +7d2d : 00000000; +7d2e : 00000000; +7d2f : 00000000; +7d30 : 00000000; +7d31 : 00000000; +7d32 : 00000000; +7d33 : 00000000; +7d34 : 00000000; +7d35 : 00000000; +7d36 : 00000000; +7d37 : 00000000; +7d38 : 00000000; +7d39 : 00000000; +7d3a : 00000000; +7d3b : 00000000; +7d3c : 00000000; +7d3d : 00000000; +7d3e : 00000000; +7d3f : 00000000; +7d40 : 00000000; +7d41 : 00000000; +7d42 : 00000000; +7d43 : 00000000; +7d44 : 00000000; +7d45 : 00000000; +7d46 : 00000000; +7d47 : 00000000; +7d48 : 00000000; +7d49 : 00000000; +7d4a : 00000000; +7d4b : 00000000; +7d4c : 00000000; +7d4d : 00000000; +7d4e : 00000000; +7d4f : 00000000; +7d50 : 00000000; +7d51 : 00000000; +7d52 : 00000000; +7d53 : 00000000; +7d54 : 00000000; +7d55 : 00000000; +7d56 : 00000000; +7d57 : 00000000; +7d58 : 00000000; +7d59 : 00000000; +7d5a : 00000000; +7d5b : 00000000; +7d5c : 00000000; +7d5d : 00000000; +7d5e : 00000000; +7d5f : 00000000; +7d60 : 00000000; +7d61 : 00000000; +7d62 : 00000000; +7d63 : 00000000; +7d64 : 00000000; +7d65 : 00000000; +7d66 : 00000000; +7d67 : 00000000; +7d68 : 00000000; +7d69 : 00000000; +7d6a : 00000000; +7d6b : 00000000; +7d6c : 00000000; +7d6d : 00000000; +7d6e : 00000000; +7d6f : 00000000; +7d70 : 00000000; +7d71 : 00000000; +7d72 : 00000000; +7d73 : 00000000; +7d74 : 00000000; +7d75 : 00000000; +7d76 : 00000000; +7d77 : 00000000; +7d78 : 00000000; +7d79 : 00000000; +7d7a : 00000000; +7d7b : 00000000; +7d7c : 00000000; +7d7d : 00000000; +7d7e : 00000000; +7d7f : 00000000; +7d80 : 00000000; +7d81 : 00000000; +7d82 : 00000000; +7d83 : 00000000; +7d84 : 00000000; +7d85 : 00000000; +7d86 : 00000000; +7d87 : 00000000; +7d88 : 00000000; +7d89 : 00000000; +7d8a : 00000000; +7d8b : 00000000; +7d8c : 00000000; +7d8d : 00000000; +7d8e : 00000000; +7d8f : 00000000; +7d90 : 00000000; +7d91 : 00000000; +7d92 : 00000000; +7d93 : 00000000; +7d94 : 00000000; +7d95 : 00000000; +7d96 : 00000000; +7d97 : 00000000; +7d98 : 00000000; +7d99 : 00000000; +7d9a : 00000000; +7d9b : 00000000; +7d9c : 00000000; +7d9d : 00000000; +7d9e : 00000000; +7d9f : 00000000; +7da0 : 00000000; +7da1 : 00000000; +7da2 : 00000000; +7da3 : 00000000; +7da4 : 00000000; +7da5 : 00000000; +7da6 : 00000000; +7da7 : 00000000; +7da8 : 00000000; +7da9 : 00000000; +7daa : 00000000; +7dab : 00000000; +7dac : 00000000; +7dad : 00000000; +7dae : 00000000; +7daf : 00000000; +7db0 : 00000000; +7db1 : 00000000; +7db2 : 00000000; +7db3 : 00000000; +7db4 : 00000000; +7db5 : 00000000; +7db6 : 00000000; +7db7 : 00000000; +7db8 : 00000000; +7db9 : 00000000; +7dba : 00000000; +7dbb : 00000000; +7dbc : 00000000; +7dbd : 00000000; +7dbe : 00000000; +7dbf : 00000000; +7dc0 : 00000000; +7dc1 : 00000000; +7dc2 : 00000000; +7dc3 : 00000000; +7dc4 : 00000000; +7dc5 : 00000000; +7dc6 : 00000000; +7dc7 : 00000000; +7dc8 : 00000000; +7dc9 : 00000000; +7dca : 00000000; +7dcb : 00000000; +7dcc : 00000000; +7dcd : 00000000; +7dce : 00000000; +7dcf : 00000000; +7dd0 : 00000000; +7dd1 : 00000000; +7dd2 : 00000000; +7dd3 : 00000000; +7dd4 : 00000000; +7dd5 : 00000000; +7dd6 : 00000000; +7dd7 : 00000000; +7dd8 : 00000000; +7dd9 : 00000000; +7dda : 00000000; +7ddb : 00000000; +7ddc : 00000000; +7ddd : 00000000; +7dde : 00000000; +7ddf : 00000000; +7de0 : 00000000; +7de1 : 00000000; +7de2 : 00000000; +7de3 : 00000000; +7de4 : 00000000; +7de5 : 00000000; +7de6 : 00000000; +7de7 : 00000000; +7de8 : 00000000; +7de9 : 00000000; +7dea : 00000000; +7deb : 00000000; +7dec : 00000000; +7ded : 00000000; +7dee : 00000000; +7def : 00000000; +7df0 : 00000000; +7df1 : 00000000; +7df2 : 00000000; +7df3 : 00000000; +7df4 : 00000000; +7df5 : 00000000; +7df6 : 00000000; +7df7 : 00000000; +7df8 : 00000000; +7df9 : 00000000; +7dfa : 00000000; +7dfb : 00000000; +7dfc : 00000000; +7dfd : 00000000; +7dfe : 00000000; +7dff : 00000000; +7e00 : 00000000; +7e01 : 00000000; +7e02 : 00000000; +7e03 : 00000000; +7e04 : 00000000; +7e05 : 00000000; +7e06 : 00000000; +7e07 : 00000000; +7e08 : 00000000; +7e09 : 00000000; +7e0a : 00000000; +7e0b : 00000000; +7e0c : 00000000; +7e0d : 00000000; +7e0e : 00000000; +7e0f : 00000000; +7e10 : 00000000; +7e11 : 00000000; +7e12 : 00000000; +7e13 : 00000000; +7e14 : 00000000; +7e15 : 00000000; +7e16 : 00000000; +7e17 : 00000000; +7e18 : 00000000; +7e19 : 00000000; +7e1a : 00000000; +7e1b : 00000000; +7e1c : 00000000; +7e1d : 00000000; +7e1e : 00000000; +7e1f : 00000000; +7e20 : 00000000; +7e21 : 00000000; +7e22 : 00000000; +7e23 : 00000000; +7e24 : 00000000; +7e25 : 00000000; +7e26 : 00000000; +7e27 : 00000000; +7e28 : 00000000; +7e29 : 00000000; +7e2a : 00000000; +7e2b : 00000000; +7e2c : 00000000; +7e2d : 00000000; +7e2e : 00000000; +7e2f : 00000000; +7e30 : 00000000; +7e31 : 00000000; +7e32 : 00000000; +7e33 : 00000000; +7e34 : 00000000; +7e35 : 00000000; +7e36 : 00000000; +7e37 : 00000000; +7e38 : 00000000; +7e39 : 00000000; +7e3a : 00000000; +7e3b : 00000000; +7e3c : 00000000; +7e3d : 00000000; +7e3e : 00000000; +7e3f : 00000000; +7e40 : 00000000; +7e41 : 00000000; +7e42 : 00000000; +7e43 : 00000000; +7e44 : 00000000; +7e45 : 00000000; +7e46 : 00000000; +7e47 : 00000000; +7e48 : 00000000; +7e49 : 00000000; +7e4a : 00000000; +7e4b : 00000000; +7e4c : 00000000; +7e4d : 00000000; +7e4e : 00000000; +7e4f : 00000000; +7e50 : 00000000; +7e51 : 00000000; +7e52 : 00000000; +7e53 : 00000000; +7e54 : 00000000; +7e55 : 00000000; +7e56 : 00000000; +7e57 : 00000000; +7e58 : 00000000; +7e59 : 00000000; +7e5a : 00000000; +7e5b : 00000000; +7e5c : 00000000; +7e5d : 00000000; +7e5e : 00000000; +7e5f : 00000000; +7e60 : 00000000; +7e61 : 00000000; +7e62 : 00000000; +7e63 : 00000000; +7e64 : 00000000; +7e65 : 00000000; +7e66 : 00000000; +7e67 : 00000000; +7e68 : 00000000; +7e69 : 00000000; +7e6a : 00000000; +7e6b : 00000000; +7e6c : 00000000; +7e6d : 00000000; +7e6e : 00000000; +7e6f : 00000000; +7e70 : 00000000; +7e71 : 00000000; +7e72 : 00000000; +7e73 : 00000000; +7e74 : 00000000; +7e75 : 00000000; +7e76 : 00000000; +7e77 : 00000000; +7e78 : 00000000; +7e79 : 00000000; +7e7a : 00000000; +7e7b : 00000000; +7e7c : 00000000; +7e7d : 00000000; +7e7e : 00000000; +7e7f : 00000000; +7e80 : 00000000; +7e81 : 00000000; +7e82 : 00000000; +7e83 : 00000000; +7e84 : 00000000; +7e85 : 00000000; +7e86 : 00000000; +7e87 : 00000000; +7e88 : 00000000; +7e89 : 00000000; +7e8a : 00000000; +7e8b : 00000000; +7e8c : 00000000; +7e8d : 00000000; +7e8e : 00000000; +7e8f : 00000000; +7e90 : 00000000; +7e91 : 00000000; +7e92 : 00000000; +7e93 : 00000000; +7e94 : 00000000; +7e95 : 00000000; +7e96 : 00000000; +7e97 : 00000000; +7e98 : 00000000; +7e99 : 00000000; +7e9a : 00000000; +7e9b : 00000000; +7e9c : 00000000; +7e9d : 00000000; +7e9e : 00000000; +7e9f : 00000000; +7ea0 : 00000000; +7ea1 : 00000000; +7ea2 : 00000000; +7ea3 : 00000000; +7ea4 : 00000000; +7ea5 : 00000000; +7ea6 : 00000000; +7ea7 : 00000000; +7ea8 : 00000000; +7ea9 : 00000000; +7eaa : 00000000; +7eab : 00000000; +7eac : 00000000; +7ead : 00000000; +7eae : 00000000; +7eaf : 00000000; +7eb0 : 00000000; +7eb1 : 00000000; +7eb2 : 00000000; +7eb3 : 00000000; +7eb4 : 00000000; +7eb5 : 00000000; +7eb6 : 00000000; +7eb7 : 00000000; +7eb8 : 00000000; +7eb9 : 00000000; +7eba : 00000000; +7ebb : 00000000; +7ebc : 00000000; +7ebd : 00000000; +7ebe : 00000000; +7ebf : 00000000; +7ec0 : 00000000; +7ec1 : 00000000; +7ec2 : 00000000; +7ec3 : 00000000; +7ec4 : 00000000; +7ec5 : 00000000; +7ec6 : 00000000; +7ec7 : 00000000; +7ec8 : 00000000; +7ec9 : 00000000; +7eca : 00000000; +7ecb : 00000000; +7ecc : 00000000; +7ecd : 00000000; +7ece : 00000000; +7ecf : 00000000; +7ed0 : 00000000; +7ed1 : 00000000; +7ed2 : 00000000; +7ed3 : 00000000; +7ed4 : 00000000; +7ed5 : 00000000; +7ed6 : 00000000; +7ed7 : 00000000; +7ed8 : 00000000; +7ed9 : 00000000; +7eda : 00000000; +7edb : 00000000; +7edc : 00000000; +7edd : 00000000; +7ede : 00000000; +7edf : 00000000; +7ee0 : 00000000; +7ee1 : 00000000; +7ee2 : 00000000; +7ee3 : 00000000; +7ee4 : 00000000; +7ee5 : 00000000; +7ee6 : 00000000; +7ee7 : 00000000; +7ee8 : 00000000; +7ee9 : 00000000; +7eea : 00000000; +7eeb : 00000000; +7eec : 00000000; +7eed : 00000000; +7eee : 00000000; +7eef : 00000000; +7ef0 : 00000000; +7ef1 : 00000000; +7ef2 : 00000000; +7ef3 : 00000000; +7ef4 : 00000000; +7ef5 : 00000000; +7ef6 : 00000000; +7ef7 : 00000000; +7ef8 : 00000000; +7ef9 : 00000000; +7efa : 00000000; +7efb : 00000000; +7efc : 00000000; +7efd : 00000000; +7efe : 00000000; +7eff : 00000000; +7f00 : 00000000; +7f01 : 00000000; +7f02 : 00000000; +7f03 : 00000000; +7f04 : 00000000; +7f05 : 00000000; +7f06 : 00000000; +7f07 : 00000000; +7f08 : 00000000; +7f09 : 00000000; +7f0a : 00000000; +7f0b : 00000000; +7f0c : 00000000; +7f0d : 00000000; +7f0e : 00000000; +7f0f : 00000000; +7f10 : 00000000; +7f11 : 00000000; +7f12 : 00000000; +7f13 : 00000000; +7f14 : 00000000; +7f15 : 00000000; +7f16 : 00000000; +7f17 : 00000000; +7f18 : 00000000; +7f19 : 00000000; +7f1a : 00000000; +7f1b : 00000000; +7f1c : 00000000; +7f1d : 00000000; +7f1e : 00000000; +7f1f : 00000000; +7f20 : 00000000; +7f21 : 00000000; +7f22 : 00000000; +7f23 : 00000000; +7f24 : 00000000; +7f25 : 00000000; +7f26 : 00000000; +7f27 : 00000000; +7f28 : 00000000; +7f29 : 00000000; +7f2a : 00000000; +7f2b : 00000000; +7f2c : 00000000; +7f2d : 00000000; +7f2e : 00000000; +7f2f : 00000000; +7f30 : 00000000; +7f31 : 00000000; +7f32 : 00000000; +7f33 : 00000000; +7f34 : 00000000; +7f35 : 00000000; +7f36 : 00000000; +7f37 : 00000000; +7f38 : 00000000; +7f39 : 00000000; +7f3a : 00000000; +7f3b : 00000000; +7f3c : 00000000; +7f3d : 00000000; +7f3e : 00000000; +7f3f : 00000000; +7f40 : 00000000; +7f41 : 00000000; +7f42 : 00000000; +7f43 : 00000000; +7f44 : 00000000; +7f45 : 00000000; +7f46 : 00000000; +7f47 : 00000000; +7f48 : 00000000; +7f49 : 00000000; +7f4a : 00000000; +7f4b : 00000000; +7f4c : 00000000; +7f4d : 00000000; +7f4e : 00000000; +7f4f : 00000000; +7f50 : 00000000; +7f51 : 00000000; +7f52 : 00000000; +7f53 : 00000000; +7f54 : 00000000; +7f55 : 00000000; +7f56 : 00000000; +7f57 : 00000000; +7f58 : 00000000; +7f59 : 00000000; +7f5a : 00000000; +7f5b : 00000000; +7f5c : 00000000; +7f5d : 00000000; +7f5e : 00000000; +7f5f : 00000000; +7f60 : 00000000; +7f61 : 00000000; +7f62 : 00000000; +7f63 : 00000000; +7f64 : 00000000; +7f65 : 00000000; +7f66 : 00000000; +7f67 : 00000000; +7f68 : 00000000; +7f69 : 00000000; +7f6a : 00000000; +7f6b : 00000000; +7f6c : 00000000; +7f6d : 00000000; +7f6e : 00000000; +7f6f : 00000000; +7f70 : 00000000; +7f71 : 00000000; +7f72 : 00000000; +7f73 : 00000000; +7f74 : 00000000; +7f75 : 00000000; +7f76 : 00000000; +7f77 : 00000000; +7f78 : 00000000; +7f79 : 00000000; +7f7a : 00000000; +7f7b : 00000000; +7f7c : 00000000; +7f7d : 00000000; +7f7e : 00000000; +7f7f : 00000000; +7f80 : 00000000; +7f81 : 00000000; +7f82 : 00000000; +7f83 : 00000000; +7f84 : 00000000; +7f85 : 00000000; +7f86 : 00000000; +7f87 : 00000000; +7f88 : 00000000; +7f89 : 00000000; +7f8a : 00000000; +7f8b : 00000000; +7f8c : 00000000; +7f8d : 00000000; +7f8e : 00000000; +7f8f : 00000000; +7f90 : 00000000; +7f91 : 00000000; +7f92 : 00000000; +7f93 : 00000000; +7f94 : 00000000; +7f95 : 00000000; +7f96 : 00000000; +7f97 : 00000000; +7f98 : 00000000; +7f99 : 00000000; +7f9a : 00000000; +7f9b : 00000000; +7f9c : 00000000; +7f9d : 00000000; +7f9e : 00000000; +7f9f : 00000000; +7fa0 : 00000000; +7fa1 : 00000000; +7fa2 : 00000000; +7fa3 : 00000000; +7fa4 : 00000000; +7fa5 : 00000000; +7fa6 : 00000000; +7fa7 : 00000000; +7fa8 : 00000000; +7fa9 : 00000000; +7faa : 00000000; +7fab : 00000000; +7fac : 00000000; +7fad : 00000000; +7fae : 00000000; +7faf : 00000000; +7fb0 : 00000000; +7fb1 : 00000000; +7fb2 : 00000000; +7fb3 : 00000000; +7fb4 : 00000000; +7fb5 : 00000000; +7fb6 : 00000000; +7fb7 : 00000000; +7fb8 : 00000000; +7fb9 : 00000000; +7fba : 00000000; +7fbb : 00000000; +7fbc : 00000000; +7fbd : 00000000; +7fbe : 00000000; +7fbf : 00000000; +7fc0 : 00000000; +7fc1 : 00000000; +7fc2 : 00000000; +7fc3 : 00000000; +7fc4 : 00000000; +7fc5 : 00000000; +7fc6 : 00000000; +7fc7 : 00000000; +7fc8 : 00000000; +7fc9 : 00000000; +7fca : 00000000; +7fcb : 00000000; +7fcc : 00000000; +7fcd : 00000000; +7fce : 00000000; +7fcf : 00000000; +7fd0 : 00000000; +7fd1 : 00000000; +7fd2 : 00000000; +7fd3 : 00000000; +7fd4 : 00000000; +7fd5 : 00000000; +7fd6 : 00000000; +7fd7 : 00000000; +7fd8 : 00000000; +7fd9 : 00000000; +7fda : 00000000; +7fdb : 00000000; +7fdc : 00000000; +7fdd : 00000000; +7fde : 00000000; +7fdf : 00000000; +7fe0 : 00000000; +7fe1 : 00000000; +7fe2 : 00000000; +7fe3 : 00000000; +7fe4 : 00000000; +7fe5 : 00000000; +7fe6 : 00000000; +7fe7 : 00000000; +7fe8 : 00000000; +7fe9 : 00000000; +7fea : 00000000; +7feb : 00000000; +7fec : 00000000; +7fed : 00000000; +7fee : 00000000; +7fef : 00000000; +7ff0 : 00000000; +7ff1 : 00000000; +7ff2 : 00000000; +7ff3 : 00000000; +7ff4 : 00000000; +7ff5 : 00000000; +7ff6 : 00000000; +7ff7 : 00000000; +7ff8 : 00000000; +7ff9 : 00000000; +7ffa : 00000000; +7ffb : 00000000; +7ffc : 00000000; +7ffd : 00000000; +7ffe : 00000000; +7fff : 00000000; +END; diff --git a/testbench/tr_simulation/gsi_pexarria5/ref_pll.vhd b/testbench/tr_simulation/gsi_pexarria5/ref_pll.vhd new file mode 100644 index 0000000000..19f0da6ba2 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/ref_pll.vhd @@ -0,0 +1,452 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: ref_pll.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- ************************************************************ + + +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY ref_pll IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + phasecounterselect : IN STD_LOGIC_VECTOR (3 DOWNTO 0) := (OTHERS => '0'); + phasestep : IN STD_LOGIC := '0'; + phaseupdown : IN STD_LOGIC := '0'; + scanclk : IN STD_LOGIC := '1'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC ; + phasedone : OUT STD_LOGIC + ); +END ref_pll; + + +ARCHITECTURE SYN OF ref_pll IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (6 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_fbout : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clk6 : STRING; + port_clk7 : STRING; + port_clk8 : STRING; + port_clk9 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + self_reset_on_loss_lock : STRING; + using_fbmimicbidir_port : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + phasecounterselect : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + phasestep : IN STD_LOGIC ; + phaseupdown : IN STD_LOGIC ; + scanclk : IN STD_LOGIC ; + clk : OUT STD_LOGIC_VECTOR (6 DOWNTO 0); + locked : OUT STD_LOGIC ; + phasedone : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire8_bv(0 DOWNTO 0) <= "0"; + sub_wire8 <= To_stdlogicvector(sub_wire8_bv); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + locked <= sub_wire4; + phasedone <= sub_wire5; + sub_wire6 <= inclk0; + sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "LOW", + clk0_divide_by => 1, + clk0_duty_cycle => 50, + clk0_multiply_by => 1, + clk0_phase_shift => "0", + clk1_divide_by => 5, + clk1_duty_cycle => 50, + clk1_multiply_by => 8, + clk1_phase_shift => "0", + clk2_divide_by => 5, + clk2_duty_cycle => 50, + clk2_multiply_by => 1, + clk2_phase_shift => "0", + inclk0_input_frequency => 8000, + intended_device_family => "Arria II GX", + lpm_hint => "CBX_MODULE_PREFIX=ref_pll", + lpm_type => "altpll", + operation_mode => "NO_COMPENSATION", + pll_type => "Left_Right", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_USED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_fbout => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_USED", + port_phasedone => "PORT_USED", + port_phasestep => "PORT_USED", + port_phaseupdown => "PORT_USED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_USED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_UNUSED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clk6 => "PORT_UNUSED", + port_clk7 => "PORT_UNUSED", + port_clk8 => "PORT_UNUSED", + port_clk9 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + using_fbmimicbidir_port => "OFF", + width_clock => 7 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire7, + phasecounterselect => phasecounterselect, + phasestep => phasestep, + phaseupdown => phaseupdown, + scanclk => scanclk, + clk => sub_wire0, + locked => sub_wire4, + phasedone => sub_wire5 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "1" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "1" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "5" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "1" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "125.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "200.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "25.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "125.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Arria II GX" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "1" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "125.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "200.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "25.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "1" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "ref_pll.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "LOW" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "8" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "8000" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Arria II GX" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NO_COMPENSATION" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "Left_Right" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk6 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk7 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk8 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk9 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: USING_FBMIMICBIDIR_PORT STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "7" +-- Retrieval info: USED_PORT: @clk 0 0 7 0 OUTPUT_CLK_EXT VCC "@clk[6..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: USED_PORT: phasecounterselect 0 0 4 0 INPUT GND "phasecounterselect[3..0]" +-- Retrieval info: USED_PORT: phasedone 0 0 0 0 OUTPUT GND "phasedone" +-- Retrieval info: USED_PORT: phasestep 0 0 0 0 INPUT GND "phasestep" +-- Retrieval info: USED_PORT: phaseupdown 0 0 0 0 INPUT GND "phaseupdown" +-- Retrieval info: USED_PORT: scanclk 0 0 0 0 INPUT_CLK_EXT VCC "scanclk" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: @phasecounterselect 0 0 4 0 phasecounterselect 0 0 4 0 +-- Retrieval info: CONNECT: @phasestep 0 0 0 0 phasestep 0 0 0 0 +-- Retrieval info: CONNECT: @phaseupdown 0 0 0 0 phaseupdown 0 0 0 0 +-- Retrieval info: CONNECT: @scanclk 0 0 0 0 scanclk 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: CONNECT: phasedone 0 0 0 0 @phasedone 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL ref_pll.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ref_pll.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ref_pll.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ref_pll.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ref_pll.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL ref_pll_inst.vhd FALSE +-- Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/testbench/tr_simulation/gsi_pexarria5/ref_pll_5_10.vhd b/testbench/tr_simulation/gsi_pexarria5/ref_pll_5_10.vhd new file mode 100644 index 0000000000..ca85b12b4a --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/ref_pll_5_10.vhd @@ -0,0 +1,84 @@ + --component ref_pll is -- arria2 + -- port( + -- areset : in std_logic; + -- inclk0 : in std_logic := '0'; -- 125 MHz + -- c0 : out std_logic; -- 125 MHz + -- c1 : out std_logic; -- 200 MHz + -- c2 : out std_logic; -- 25 MHz + -- locked : out std_logic; + -- scanclk : in std_logic; + -- phasecounterselect : in std_logic_vector(3 downto 0); + -- phasestep : in std_logic; + -- phaseupdown : in std_logic; + -- phasedone : out std_logic); + --end component; + +library ieee; +use ieee.std_logic_1164.all; +entity ref_pll5 is + port ( + refclk : in std_logic := 'X'; -- 125 MHz + outclk_0 : out std_logic; -- 125 MHz + outclk_1 : out std_logic; -- 200 MHz + outclk_2 : out std_logic; -- 25 MHz + outclk_3 : out std_logic; --1000 MHz + outclk_4 : out std_logic; -- 125 MHz, 1/8 duty cycle, -1.5ns phase + rst : in std_logic := 'X'; + locked : out std_logic; + scanclk : in std_logic; + cntsel : in std_logic_vector(4 downto 0); + phase_en : in std_logic; + updn : in std_logic; + phase_done : out std_logic); +end entity; +architecture simulation of ref_pll5 is + signal phasecounterselect : std_logic_vector(3 downto 0); +begin + phasecounterselect <= cntsel(3 downto 0); + pll: entity work.ref_pll + port map ( + areset => rst, + inclk0 => refclk, + c0 => outclk_0, + c1 => outclk_1, + c2 => outclk_2, + locked => locked, + scanclk => scanclk, + phasecounterselect => phasecounterselect, + phasestep => phase_en, + phaseupdown => updn, + phasedone => phase_done); + outclk_3 <= '0'; + outclk_4 <= '0'; +end architecture; + +--library ieee; +--use ieee.std_logic_1164.all; +--entity ref_pll10 is -- arria10 +--port( +-- refclk : in std_logic := 'X'; -- 125 MHz +-- --outclk_0 : out std_logic; -- 125 MHz +-- --outclk_1 : out std_logic; -- 200 MHz +-- --outclk_2 : out std_logic; -- 25 MHz +-- --outclk_3 : out std_logic; --1000 MHz +-- --outclk_4 : out std_logic; -- 125 MHz, 1/8 duty cycle, -1.5ns phase +-- outclk_2 : out std_logic; -- 125 MHz +-- outclk_3 : out std_logic; -- 200 MHz +-- outclk_4 : out std_logic; -- 25 MHz +-- lvds_clk : out std_logic_vector(1 downto 0); --1000 MHz +-- loaden : out std_logic_vector(1 downto 0); -- 125 MHz, 13% duty cycle, 7000ps phase +-- rst : in std_logic := 'X'; +-- locked : out std_logic; +-- scanclk : in std_logic; +-- cntsel : in std_logic_vector(4 downto 0); +-- phase_en : in std_logic; +-- updn : in std_logic; +-- phase_done : out std_logic); +--end entity; +--architecture simulation of ref_pll10 is +-- signal phasecounterselect : std_logic_vector(3 downto 0); +--begin +----.. +--end architecture; + + diff --git a/testbench/tr_simulation/gsi_pexarria5/single_region.vhd b/testbench/tr_simulation/gsi_pexarria5/single_region.vhd new file mode 100644 index 0000000000..d8555f9039 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/single_region.vhd @@ -0,0 +1,166 @@ +-- megafunction wizard: %ALTCLKCTRL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altclkctrl + +-- ============================================================ +-- File Name: single_region.vhd +-- Megafunction Name(s): +-- altclkctrl +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- ************************************************************ + + +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +--altclkctrl CBX_AUTO_BLACKBOX="ALL" CLOCK_TYPE="Regional Clock" DEVICE_FAMILY="Arria V" ENA_REGISTER_MODE="always enabled" USE_GLITCH_FREE_SWITCH_OVER_IMPLEMENTATION="OFF" ena inclk outclk +--VERSION_BEGIN 18.1 cbx_altclkbuf 2018:09:12:13:04:09:SJ cbx_cycloneii 2018:09:12:13:04:09:SJ cbx_lpm_add_sub 2018:09:12:13:04:09:SJ cbx_lpm_compare 2018:09:12:13:04:09:SJ cbx_lpm_decode 2018:09:12:13:04:09:SJ cbx_lpm_mux 2018:09:12:13:04:09:SJ cbx_mgl 2018:09:12:14:15:07:SJ cbx_nadder 2018:09:12:13:04:09:SJ cbx_stratix 2018:09:12:13:04:09:SJ cbx_stratixii 2018:09:12:13:04:09:SJ cbx_stratixiii 2018:09:12:13:04:09:SJ cbx_stratixv 2018:09:12:13:04:09:SJ VERSION_END + + LIBRARY arriav; + USE arriav.all; + +--synthesis_resources = arriav_clkena 1 + LIBRARY ieee; + USE ieee.std_logic_1164.all; + + ENTITY single_region_altclkctrl_bkh IS + PORT + ( + ena : IN STD_LOGIC := '1'; + inclk : IN STD_LOGIC_VECTOR (3 DOWNTO 0) := (OTHERS => '0'); + outclk : OUT STD_LOGIC + ); + END single_region_altclkctrl_bkh; + + ARCHITECTURE RTL OF single_region_altclkctrl_bkh IS + + SIGNAL wire_sd1_outclk : STD_LOGIC; + SIGNAL clkselect : STD_LOGIC_VECTOR (1 DOWNTO 0); + COMPONENT arriav_clkena + GENERIC + ( + clock_type : STRING := "Auto"; + disable_mode : STRING := "low"; + ena_register_mode : STRING := "always enabled"; + ena_register_power_up : STRING := "high"; + test_syn : STRING := "high"; + lpm_type : STRING := "arriav_clkena" + ); + PORT + ( + ena : IN STD_LOGIC := '1'; + enaout : OUT STD_LOGIC; + inclk : IN STD_LOGIC := '1'; + outclk : OUT STD_LOGIC + ); + END COMPONENT; + BEGIN + + clkselect <= (OTHERS => '0'); + outclk <= wire_sd1_outclk; + sd1 : arriav_clkena + GENERIC MAP ( + clock_type => "Regional Clock", + ena_register_mode => "always enabled" + ) + PORT MAP ( + ena => ena, + inclk => inclk(0), + outclk => wire_sd1_outclk + ); + + END RTL; --single_region_altclkctrl_bkh +--VALID FILE + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +ENTITY single_region IS + PORT + ( + inclk : IN STD_LOGIC ; + outclk : OUT STD_LOGIC + ); +END single_region; + + +ARCHITECTURE RTL OF single_region IS + + SIGNAL sub_wire0 : STD_LOGIC ; + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC_VECTOR (3 DOWNTO 0); + SIGNAL sub_wire4_bv : BIT_VECTOR (2 DOWNTO 0); + SIGNAL sub_wire4 : STD_LOGIC_VECTOR (2 DOWNTO 0); + + + + COMPONENT single_region_altclkctrl_bkh + PORT ( + ena : IN STD_LOGIC ; + inclk : IN STD_LOGIC_VECTOR (3 DOWNTO 0); + outclk : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire1 <= '1'; + sub_wire4_bv(2 DOWNTO 0) <= "000"; + sub_wire4 <= To_stdlogicvector(sub_wire4_bv); + outclk <= sub_wire0; + sub_wire2 <= inclk; + sub_wire3 <= sub_wire4(2 DOWNTO 0) & sub_wire2; + + single_region_altclkctrl_bkh_component : single_region_altclkctrl_bkh + PORT MAP ( + ena => sub_wire1, + inclk => sub_wire3, + outclk => sub_wire0 + ); + + + +END RTL; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Arria V" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: clock_inputs NUMERIC "1" +-- Retrieval info: CONSTANT: ENA_REGISTER_MODE STRING "always enabled" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Arria V" +-- Retrieval info: CONSTANT: USE_GLITCH_FREE_SWITCH_OVER_IMPLEMENTATION STRING "OFF" +-- Retrieval info: CONSTANT: clock_type STRING "Regional Clock" +-- Retrieval info: USED_PORT: inclk 0 0 0 0 INPUT NODEFVAL "inclk" +-- Retrieval info: USED_PORT: outclk 0 0 0 0 OUTPUT NODEFVAL "outclk" +-- Retrieval info: CONNECT: @ena 0 0 0 0 VCC 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 3 1 GND 0 0 3 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk 0 0 0 0 +-- Retrieval info: CONNECT: outclk 0 0 0 0 @outclk 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL single_region.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL single_region.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL single_region.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL single_region.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL single_region_inst.vhd FALSE diff --git a/testbench/tr_simulation/gsi_pexarria5/sys_pll.vhd b/testbench/tr_simulation/gsi_pexarria5/sys_pll.vhd new file mode 100644 index 0000000000..2036ed0ab3 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/sys_pll.vhd @@ -0,0 +1,455 @@ +-- megafunction wizard: %ALTPLL% +-- GENERATION: STANDARD +-- VERSION: WM1.0 +-- MODULE: altpll + +-- ============================================================ +-- File Name: sys_pll.vhd +-- Megafunction Name(s): +-- altpll +-- +-- Simulation Library Files(s): +-- +-- ============================================================ +-- ************************************************************ +-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE! +-- +-- 18.1.0 Build 625 09/12/2018 SJ Standard Edition +-- ************************************************************ + + +--Copyright (C) 2018 Intel Corporation. All rights reserved. +--Your use of Intel Corporation's design tools, logic functions +--and other software and tools, and its AMPP partner logic +--functions, and any output files from any of the foregoing +--(including device programming or simulation files), and any +--associated documentation or information are expressly subject +--to the terms and conditions of the Intel Program License +--Subscription Agreement, the Intel Quartus Prime License Agreement, +--the Intel FPGA IP License Agreement, or other applicable license +--agreement, including, without limitation, that your use is for +--the sole purpose of programming logic devices manufactured by +--Intel and sold by Intel or its authorized distributors. Please +--refer to the applicable agreement for further details. + + +LIBRARY ieee; +USE ieee.std_logic_1164.all; + +LIBRARY altera_mf; +USE altera_mf.all; + +ENTITY sys_pll IS + PORT + ( + areset : IN STD_LOGIC := '0'; + inclk0 : IN STD_LOGIC := '0'; + c0 : OUT STD_LOGIC ; + c1 : OUT STD_LOGIC ; + c2 : OUT STD_LOGIC ; + c3 : OUT STD_LOGIC ; + locked : OUT STD_LOGIC + ); +END sys_pll; + + +ARCHITECTURE SYN OF sys_pll IS + + SIGNAL sub_wire0 : STD_LOGIC_VECTOR (6 DOWNTO 0); + SIGNAL sub_wire1 : STD_LOGIC ; + SIGNAL sub_wire2 : STD_LOGIC ; + SIGNAL sub_wire3 : STD_LOGIC ; + SIGNAL sub_wire4 : STD_LOGIC ; + SIGNAL sub_wire5 : STD_LOGIC ; + SIGNAL sub_wire6 : STD_LOGIC ; + SIGNAL sub_wire7 : STD_LOGIC_VECTOR (1 DOWNTO 0); + SIGNAL sub_wire8_bv : BIT_VECTOR (0 DOWNTO 0); + SIGNAL sub_wire8 : STD_LOGIC_VECTOR (0 DOWNTO 0); + + + + COMPONENT altpll + GENERIC ( + bandwidth_type : STRING; + clk0_divide_by : NATURAL; + clk0_duty_cycle : NATURAL; + clk0_multiply_by : NATURAL; + clk0_phase_shift : STRING; + clk1_divide_by : NATURAL; + clk1_duty_cycle : NATURAL; + clk1_multiply_by : NATURAL; + clk1_phase_shift : STRING; + clk2_divide_by : NATURAL; + clk2_duty_cycle : NATURAL; + clk2_multiply_by : NATURAL; + clk2_phase_shift : STRING; + clk3_divide_by : NATURAL; + clk3_duty_cycle : NATURAL; + clk3_multiply_by : NATURAL; + clk3_phase_shift : STRING; + inclk0_input_frequency : NATURAL; + intended_device_family : STRING; + lpm_hint : STRING; + lpm_type : STRING; + operation_mode : STRING; + pll_type : STRING; + port_activeclock : STRING; + port_areset : STRING; + port_clkbad0 : STRING; + port_clkbad1 : STRING; + port_clkloss : STRING; + port_clkswitch : STRING; + port_configupdate : STRING; + port_fbin : STRING; + port_fbout : STRING; + port_inclk0 : STRING; + port_inclk1 : STRING; + port_locked : STRING; + port_pfdena : STRING; + port_phasecounterselect : STRING; + port_phasedone : STRING; + port_phasestep : STRING; + port_phaseupdown : STRING; + port_pllena : STRING; + port_scanaclr : STRING; + port_scanclk : STRING; + port_scanclkena : STRING; + port_scandata : STRING; + port_scandataout : STRING; + port_scandone : STRING; + port_scanread : STRING; + port_scanwrite : STRING; + port_clk0 : STRING; + port_clk1 : STRING; + port_clk2 : STRING; + port_clk3 : STRING; + port_clk4 : STRING; + port_clk5 : STRING; + port_clk6 : STRING; + port_clk7 : STRING; + port_clk8 : STRING; + port_clk9 : STRING; + port_clkena0 : STRING; + port_clkena1 : STRING; + port_clkena2 : STRING; + port_clkena3 : STRING; + port_clkena4 : STRING; + port_clkena5 : STRING; + self_reset_on_loss_lock : STRING; + using_fbmimicbidir_port : STRING; + width_clock : NATURAL + ); + PORT ( + areset : IN STD_LOGIC ; + inclk : IN STD_LOGIC_VECTOR (1 DOWNTO 0); + clk : OUT STD_LOGIC_VECTOR (6 DOWNTO 0); + locked : OUT STD_LOGIC + ); + END COMPONENT; + +BEGIN + sub_wire8_bv(0 DOWNTO 0) <= "0"; + sub_wire8 <= To_stdlogicvector(sub_wire8_bv); + sub_wire4 <= sub_wire0(3); + sub_wire3 <= sub_wire0(2); + sub_wire2 <= sub_wire0(1); + sub_wire1 <= sub_wire0(0); + c0 <= sub_wire1; + c1 <= sub_wire2; + c2 <= sub_wire3; + c3 <= sub_wire4; + locked <= sub_wire5; + sub_wire6 <= inclk0; + sub_wire7 <= sub_wire8(0 DOWNTO 0) & sub_wire6; + + altpll_component : altpll + GENERIC MAP ( + bandwidth_type => "LOW", + clk0_divide_by => 2, + clk0_duty_cycle => 50, + clk0_multiply_by => 1, + clk0_phase_shift => "0", + clk1_divide_by => 5, + clk1_duty_cycle => 50, + clk1_multiply_by => 2, + clk1_phase_shift => "0", + clk2_divide_by => 25, + clk2_duty_cycle => 50, + clk2_multiply_by => 4, + clk2_phase_shift => "0", + clk3_divide_by => 25, + clk3_duty_cycle => 50, + clk3_multiply_by => 2, + clk3_phase_shift => "0", + inclk0_input_frequency => 8000, + intended_device_family => "Arria II GX", + lpm_hint => "CBX_MODULE_PREFIX=sys_pll", + lpm_type => "altpll", + operation_mode => "NO_COMPENSATION", + pll_type => "Left_Right", + port_activeclock => "PORT_UNUSED", + port_areset => "PORT_USED", + port_clkbad0 => "PORT_UNUSED", + port_clkbad1 => "PORT_UNUSED", + port_clkloss => "PORT_UNUSED", + port_clkswitch => "PORT_UNUSED", + port_configupdate => "PORT_UNUSED", + port_fbin => "PORT_UNUSED", + port_fbout => "PORT_UNUSED", + port_inclk0 => "PORT_USED", + port_inclk1 => "PORT_UNUSED", + port_locked => "PORT_USED", + port_pfdena => "PORT_UNUSED", + port_phasecounterselect => "PORT_UNUSED", + port_phasedone => "PORT_UNUSED", + port_phasestep => "PORT_UNUSED", + port_phaseupdown => "PORT_UNUSED", + port_pllena => "PORT_UNUSED", + port_scanaclr => "PORT_UNUSED", + port_scanclk => "PORT_UNUSED", + port_scanclkena => "PORT_UNUSED", + port_scandata => "PORT_UNUSED", + port_scandataout => "PORT_UNUSED", + port_scandone => "PORT_UNUSED", + port_scanread => "PORT_UNUSED", + port_scanwrite => "PORT_UNUSED", + port_clk0 => "PORT_USED", + port_clk1 => "PORT_USED", + port_clk2 => "PORT_USED", + port_clk3 => "PORT_USED", + port_clk4 => "PORT_UNUSED", + port_clk5 => "PORT_UNUSED", + port_clk6 => "PORT_UNUSED", + port_clk7 => "PORT_UNUSED", + port_clk8 => "PORT_UNUSED", + port_clk9 => "PORT_UNUSED", + port_clkena0 => "PORT_UNUSED", + port_clkena1 => "PORT_UNUSED", + port_clkena2 => "PORT_UNUSED", + port_clkena3 => "PORT_UNUSED", + port_clkena4 => "PORT_UNUSED", + port_clkena5 => "PORT_UNUSED", + self_reset_on_loss_lock => "OFF", + using_fbmimicbidir_port => "OFF", + width_clock => 7 + ) + PORT MAP ( + areset => areset, + inclk => sub_wire7, + clk => sub_wire0, + locked => sub_wire5 + ); + + + +END SYN; + +-- ============================================================ +-- CNX file retrieval info +-- ============================================================ +-- Retrieval info: PRIVATE: ACTIVECLK_CHECK STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH STRING "1.000" +-- Retrieval info: PRIVATE: BANDWIDTH_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: BANDWIDTH_FREQ_UNIT STRING "MHz" +-- Retrieval info: PRIVATE: BANDWIDTH_PRESET STRING "Low" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_AUTO STRING "0" +-- Retrieval info: PRIVATE: BANDWIDTH_USE_PRESET STRING "1" +-- Retrieval info: PRIVATE: CLKBAD_SWITCHOVER_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKLOSS_CHECK STRING "0" +-- Retrieval info: PRIVATE: CLKSWITCH_CHECK STRING "0" +-- Retrieval info: PRIVATE: CNX_NO_COMPENSATE_RADIO STRING "1" +-- Retrieval info: PRIVATE: CREATE_CLKBAD_CHECK STRING "0" +-- Retrieval info: PRIVATE: CREATE_INCLK1_CHECK STRING "0" +-- Retrieval info: PRIVATE: CUR_DEDICATED_CLK STRING "c0" +-- Retrieval info: PRIVATE: CUR_FBIN_CLK STRING "c0" +-- Retrieval info: PRIVATE: DEVICE_SPEED_GRADE STRING "5" +-- Retrieval info: PRIVATE: DIV_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR2 NUMERIC "1" +-- Retrieval info: PRIVATE: DIV_FACTOR3 NUMERIC "25" +-- Retrieval info: PRIVATE: DUTY_CYCLE0 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE1 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE2 STRING "50.00000000" +-- Retrieval info: PRIVATE: DUTY_CYCLE3 STRING "50.00000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE0 STRING "62.500000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE1 STRING "50.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE2 STRING "20.000000" +-- Retrieval info: PRIVATE: EFF_OUTPUT_FREQ_VALUE3 STRING "10.000000" +-- Retrieval info: PRIVATE: EXPLICIT_SWITCHOVER_COUNTER STRING "0" +-- Retrieval info: PRIVATE: EXT_FEEDBACK_RADIO STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_COUNTER_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: GLOCKED_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: GLOCKED_MODE_CHECK STRING "0" +-- Retrieval info: PRIVATE: GLOCK_COUNTER_EDIT NUMERIC "1048575" +-- Retrieval info: PRIVATE: HAS_MANUAL_SWITCHOVER STRING "1" +-- Retrieval info: PRIVATE: INCLK0_FREQ_EDIT STRING "125.000" +-- Retrieval info: PRIVATE: INCLK0_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT STRING "100.000" +-- Retrieval info: PRIVATE: INCLK1_FREQ_EDIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_CHANGED STRING "1" +-- Retrieval info: PRIVATE: INCLK1_FREQ_UNIT_COMBO STRING "MHz" +-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Arria II GX" +-- Retrieval info: PRIVATE: INT_FEEDBACK__MODE_RADIO STRING "1" +-- Retrieval info: PRIVATE: LOCKED_OUTPUT_CHECK STRING "1" +-- Retrieval info: PRIVATE: LONG_SCAN_RADIO STRING "1" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE STRING "Not Available" +-- Retrieval info: PRIVATE: LVDS_MODE_DATA_RATE_DIRTY NUMERIC "0" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: LVDS_PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: MIG_DEVICE_SPEED_GRADE STRING "Any" +-- Retrieval info: PRIVATE: MULT_FACTOR0 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR1 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR2 NUMERIC "1" +-- Retrieval info: PRIVATE: MULT_FACTOR3 NUMERIC "2" +-- Retrieval info: PRIVATE: NORMAL_MODE_RADIO STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ0 STRING "62.50000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ1 STRING "50.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ2 STRING "20.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ3 STRING "100.00000000" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE0 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE1 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE2 STRING "1" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_MODE3 STRING "0" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT0 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT1 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT2 STRING "MHz" +-- Retrieval info: PRIVATE: OUTPUT_FREQ_UNIT3 STRING "MHz" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: PHASE_RECONFIG_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT0 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT1 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT2 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT3 STRING "0.00000000" +-- Retrieval info: PRIVATE: PHASE_SHIFT_STEP_ENABLED_CHECK STRING "0" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT0 STRING "deg" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT1 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT2 STRING "ps" +-- Retrieval info: PRIVATE: PHASE_SHIFT_UNIT3 STRING "ps" +-- Retrieval info: PRIVATE: PLL_ADVANCED_PARAM_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_ARESET_CHECK STRING "1" +-- Retrieval info: PRIVATE: PLL_AUTOPLL_CHECK NUMERIC "1" +-- Retrieval info: PRIVATE: PLL_ENHPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FASTPLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_FBMIMIC_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_LVDS_PLL_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PLL_PFDENA_CHECK STRING "0" +-- Retrieval info: PRIVATE: PLL_TARGET_HARCOPY_CHECK NUMERIC "0" +-- Retrieval info: PRIVATE: PRIMARY_CLK_COMBO STRING "inclk0" +-- Retrieval info: PRIVATE: RECONFIG_FILE STRING "sys_pll.mif" +-- Retrieval info: PRIVATE: SACN_INPUTS_CHECK STRING "0" +-- Retrieval info: PRIVATE: SCAN_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SELF_RESET_LOCK_LOSS STRING "0" +-- Retrieval info: PRIVATE: SHORT_SCAN_RADIO STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FEATURE_ENABLED STRING "0" +-- Retrieval info: PRIVATE: SPREAD_FREQ STRING "50.000" +-- Retrieval info: PRIVATE: SPREAD_FREQ_UNIT STRING "KHz" +-- Retrieval info: PRIVATE: SPREAD_PERCENT STRING "0.500" +-- Retrieval info: PRIVATE: SPREAD_USE STRING "0" +-- Retrieval info: PRIVATE: SRC_SYNCH_COMP_RADIO STRING "0" +-- Retrieval info: PRIVATE: STICKY_CLK0 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK1 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK2 STRING "1" +-- Retrieval info: PRIVATE: STICKY_CLK3 STRING "1" +-- Retrieval info: PRIVATE: SWITCHOVER_COUNT_EDIT NUMERIC "1" +-- Retrieval info: PRIVATE: SWITCHOVER_FEATURE_ENABLED STRING "1" +-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0" +-- Retrieval info: PRIVATE: USE_CLK0 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK1 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK2 STRING "1" +-- Retrieval info: PRIVATE: USE_CLK3 STRING "1" +-- Retrieval info: PRIVATE: USE_MIL_SPEED_GRADE NUMERIC "0" +-- Retrieval info: PRIVATE: ZERO_DELAY_RADIO STRING "0" +-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all +-- Retrieval info: CONSTANT: BANDWIDTH_TYPE STRING "LOW" +-- Retrieval info: CONSTANT: CLK0_DIVIDE_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK0_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK0_MULTIPLY_BY NUMERIC "1" +-- Retrieval info: CONSTANT: CLK0_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK1_DIVIDE_BY NUMERIC "5" +-- Retrieval info: CONSTANT: CLK1_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK1_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK1_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK2_DIVIDE_BY NUMERIC "25" +-- Retrieval info: CONSTANT: CLK2_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK2_MULTIPLY_BY NUMERIC "4" +-- Retrieval info: CONSTANT: CLK2_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: CLK3_DIVIDE_BY NUMERIC "25" +-- Retrieval info: CONSTANT: CLK3_DUTY_CYCLE NUMERIC "50" +-- Retrieval info: CONSTANT: CLK3_MULTIPLY_BY NUMERIC "2" +-- Retrieval info: CONSTANT: CLK3_PHASE_SHIFT STRING "0" +-- Retrieval info: CONSTANT: INCLK0_INPUT_FREQUENCY NUMERIC "8000" +-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Arria II GX" +-- Retrieval info: CONSTANT: LPM_TYPE STRING "altpll" +-- Retrieval info: CONSTANT: OPERATION_MODE STRING "NO_COMPENSATION" +-- Retrieval info: CONSTANT: PLL_TYPE STRING "Left_Right" +-- Retrieval info: CONSTANT: PORT_ACTIVECLOCK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_ARESET STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_CLKBAD0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKBAD1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKLOSS STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CLKSWITCH STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_CONFIGUPDATE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBIN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_FBOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_INCLK0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_INCLK1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_LOCKED STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_PFDENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASECOUNTERSELECT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASESTEP STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PHASEUPDOWN STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_PLLENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANACLR STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLK STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANCLKENA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATA STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDATAOUT STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANDONE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANREAD STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_SCANWRITE STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk0 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk1 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk2 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk3 STRING "PORT_USED" +-- Retrieval info: CONSTANT: PORT_clk4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk6 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk7 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk8 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clk9 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena0 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena1 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena2 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena3 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena4 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: PORT_clkena5 STRING "PORT_UNUSED" +-- Retrieval info: CONSTANT: SELF_RESET_ON_LOSS_LOCK STRING "OFF" +-- Retrieval info: CONSTANT: USING_FBMIMICBIDIR_PORT STRING "OFF" +-- Retrieval info: CONSTANT: WIDTH_CLOCK NUMERIC "7" +-- Retrieval info: USED_PORT: @clk 0 0 7 0 OUTPUT_CLK_EXT VCC "@clk[6..0]" +-- Retrieval info: USED_PORT: @inclk 0 0 2 0 INPUT_CLK_EXT VCC "@inclk[1..0]" +-- Retrieval info: USED_PORT: areset 0 0 0 0 INPUT GND "areset" +-- Retrieval info: USED_PORT: c0 0 0 0 0 OUTPUT_CLK_EXT VCC "c0" +-- Retrieval info: USED_PORT: c1 0 0 0 0 OUTPUT_CLK_EXT VCC "c1" +-- Retrieval info: USED_PORT: c2 0 0 0 0 OUTPUT_CLK_EXT VCC "c2" +-- Retrieval info: USED_PORT: c3 0 0 0 0 OUTPUT_CLK_EXT VCC "c3" +-- Retrieval info: USED_PORT: inclk0 0 0 0 0 INPUT_CLK_EXT GND "inclk0" +-- Retrieval info: USED_PORT: locked 0 0 0 0 OUTPUT GND "locked" +-- Retrieval info: CONNECT: @areset 0 0 0 0 areset 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 1 GND 0 0 0 0 +-- Retrieval info: CONNECT: @inclk 0 0 1 0 inclk0 0 0 0 0 +-- Retrieval info: CONNECT: c0 0 0 0 0 @clk 0 0 1 0 +-- Retrieval info: CONNECT: c1 0 0 0 0 @clk 0 0 1 1 +-- Retrieval info: CONNECT: c2 0 0 0 0 @clk 0 0 1 2 +-- Retrieval info: CONNECT: c3 0 0 0 0 @clk 0 0 1 3 +-- Retrieval info: CONNECT: locked 0 0 0 0 @locked 0 0 0 0 +-- Retrieval info: GEN_FILE: TYPE_NORMAL sys_pll.vhd TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL sys_pll.ppf TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL sys_pll.inc FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL sys_pll.cmp TRUE +-- Retrieval info: GEN_FILE: TYPE_NORMAL sys_pll.bsf FALSE +-- Retrieval info: GEN_FILE: TYPE_NORMAL sys_pll_inst.vhd FALSE +-- Retrieval info: CBX_MODULE_PREFIX: ON diff --git a/testbench/tr_simulation/gsi_pexarria5/sys_pll_5_10.vhd b/testbench/tr_simulation/gsi_pexarria5/sys_pll_5_10.vhd new file mode 100644 index 0000000000..05b6fbdab2 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/sys_pll_5_10.vhd @@ -0,0 +1,91 @@ +--library ieee; +--use ieee.std_logic_1164.all; +--entity sys_pll is +-- port +-- ( +-- areset : in std_logic := '0'; +-- inclk0 : in std_logic := '0'; -- 125 +-- c0 : out std_logic ; --62.5 *1/2 +-- c1 : out std_logic ; --100 *4/5 +-- c2 : out std_logic ; --20 *4/25 +-- c3 : out std_logic ; --10 *2/25 +-- locked : out std_logic +-- ); +--end sys_pll; +--architecture simulation of sys_pll is +-- signal t_rising, t_falling, half_period : time := 1 ns; +-- signal clk : std_logic_vector(0 to 3) := (others => '1'); +-- signal lock : std_logic := '0'; +--begin +-- clk(0) <= not clk(0) after half_period * 2 / 1; +-- clk(1) <= not clk(1) after half_period * 5 / 4; +-- clk(2) <= not clk(2) after half_period * 25 / 4; +-- clk(3) <= not clk(3) after half_period * 25 / 2; +-- c0 <= clk(0); +-- c1 <= clk(1); +-- c2 <= clk(2); +-- c3 <= clk(3); +-- measure: process +-- begin +-- wait until rising_edge(inclk0); +-- t_rising <= now; +-- wait until falling_edge(inclk0); +-- --report "now = " & time'image(now) & " t_rising = " & time'image(t_rising); +-- half_period <= now - t_rising; +-- end process; +-- pll_lock: process +-- begin +-- if areset = '1' then +-- lock <= '0'; +-- wait until falling_edge(areset); +-- else +-- for i in 1 to 10 loop +-- wait until rising_edge(inclk0); +-- end loop; +-- lock <= '1'; +-- end if; +-- end process; +-- locked <= lock; +--end architecture; + +library ieee; +use ieee.std_logic_1164.all; +entity sys_pll5 is -- arria5 + port( + refclk : in std_logic; + outclk_0 : out std_logic; + outclk_1 : out std_logic; + outclk_2 : out std_logic; + outclk_3 : out std_logic; + outclk_4 : out std_logic; + rst : in std_logic; + locked : out std_logic); +end entity; +architecture simulation of sys_pll5 is + signal out1 : std_logic; +begin + pll : entity work.sys_pll port map(rst,refclk,outclk_0,out1,outclk_2,outclk_3,locked); + outclk_1 <= out1; + outclk_4 <= out1; +end architecture; + +library ieee; +use ieee.std_logic_1164.all; +entity sys_pll10 is -- arria5 + port( + refclk : in std_logic; + outclk_0 : out std_logic; + outclk_1 : out std_logic; + outclk_2 : out std_logic; + outclk_3 : out std_logic; + outclk_4 : out std_logic; + rst : in std_logic; + locked : out std_logic); +end entity; +architecture simulation of sys_pll10 is + signal out1 : std_logic; +begin + pll : entity work.sys_pll port map(rst,refclk,outclk_0,out1,outclk_2,outclk_3,locked); + outclk_1 <= out1; + outclk_4 <= out1; +end architecture; diff --git a/testbench/tr_simulation/gsi_pexarria5/testbench.vhd b/testbench/tr_simulation/gsi_pexarria5/testbench.vhd new file mode 100644 index 0000000000..de50c5a14e --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/testbench.vhd @@ -0,0 +1,473 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity testbench is +generic (g_en_simbridge : boolean); +end entity; + +architecture simulation of testbench is + + signal clk_20m_vcxo_i : std_logic := '1'; -- 20MHz VCXO clock + signal clk_125m_pllref_i : std_logic := '1'; -- 125 MHz PLL reference + signal clk_125m_local_i : std_logic := '1'; -- local clk from 125Mhz oszillator + + ----------------------------------------- + -- PCI express pins + ----------------------------------------- + signal pcie_refclk_i : std_logic := '1'; + signal pcie_rx_i : std_logic_vector(3 downto 0) := (others => '0'); + signal pcie_tx_o : std_logic_vector(3 downto 0); + signal nPCI_RESET : std_logic := '0'; + + signal pe_smdat : std_logic := 'Z'; -- !!! + signal pe_snclk : std_logic; -- !!! + signal pe_waken : std_logic; -- !!! + + ------------------------------------------------------------------------ + -- WR DAC signals + ------------------------------------------------------------------------ + signal dac_sclk : std_logic; + signal dac_din : std_logic; + signal ndac_cs : std_logic_vector(2 downto 1); + + ----------------------------------------------------------------------- + -- OneWire + ----------------------------------------------------------------------- + signal rom_data : std_logic := 'Z'; + + ----------------------------------------------------------------------- + -- display + ----------------------------------------------------------------------- + signal di : std_logic_vector(6 downto 0); + signal ai : std_logic_vector(1 downto 0) := (others => '0'); + signal dout_LCD : std_logic := '1'; + signal wrdis : std_logic := '0'; + signal dres : std_logic := '1'; + + ----------------------------------------------------------------------- + -- io + ----------------------------------------------------------------------- + signal fpga_res : std_logic := '0'; + signal nres : std_logic := '1'; + signal pbs2 : std_logic := '0'; -- connected to core_rstn_i of monster + signal hpw : std_logic_vector(15 downto 0) := (others => 'Z'); -- logic analyzer + signal ant : std_logic_vector(26 downto 1) := (others => 'Z'); -- trigger bus + + ----------------------------------------------------------------------- + -- pexaria5db1/2 + ----------------------------------------------------------------------- + signal p1 : std_logic := 'Z'; -- HPWX0 logic analyzer: 3.3V + signal n1 : std_logic := 'Z'; -- HPWX1 + signal p2 : std_logic := 'Z'; -- HPWX2 + signal n2 : std_logic := 'Z'; -- HPWX3 + signal p3 : std_logic := 'Z'; -- HPWX4 + signal n3 : std_logic := 'Z'; -- HPWX5 + signal p4 : std_logic := 'Z'; -- HPWX6 + signal n4 : std_logic := 'Z'; -- HPWX7 + signal p5 : std_logic := 'Z'; -- LED1 1-6: 3.3V (red) 1|Z=off, 0=on + signal n5 : std_logic := 'Z'; -- LED2 (blue) + signal p6 : std_logic := 'Z'; -- LED3 (green) + signal n6 : std_logic := 'Z'; -- LED4 (white) + signal p7 : std_logic := 'Z'; -- LED5 (red) + signal n7 : std_logic := 'Z'; -- LED6 (blue) + signal p8 : std_logic := 'Z'; -- LED7 7-8: 2.5V (green) + signal n8 : std_logic := 'Z'; -- LED8 (white) + + signal p9 : std_logic := 'Z'; -- TERMEN1 = terminate TTLIO1, 1=x, 0|Z=x (Q2 BSH103 -- G pin) + signal n9 : std_logic := 'Z'; -- TERMEN2 = terminate TTLIO2, 1=x, 0|Z=x + signal p10 : std_logic := 'Z'; -- TERMEN3 = terminate TTLIO3, 1=x, 0|Z=x + signal n10 : std_logic := 'Z'; -- TTLEN1 = TTLIO1 output enable, 0=enable, 1|Z=disable + signal p11 : std_logic := 'Z'; -- n/c + signal n11 : std_logic := 'Z'; -- TTLEN3 = TTLIO2 output enable, 0=enable, 1|Z=disable + signal p12 : std_logic := 'Z'; -- n/c + signal n12 : std_logic := 'Z'; -- n/c + signal p13 : std_logic := 'Z'; -- n/c + signal n13 : std_logic := 'Z'; -- n/c + signal p14 : std_logic := 'Z'; -- n/c + signal n14 : std_logic := 'Z'; -- TTLEN5 = TTLIO3 output enable, 0=enable, 1|Z=disable + signal p15 : std_logic := 'Z'; -- n/c + signal n15 : std_logic := 'Z'; -- ROM_DATA + signal p16 : std_logic := 'Z'; -- FPLED5 = TTLIO3 (red) 0=on, Z=off + signal n16 : std_logic := 'Z'; -- FPLED6 (blue) + + signal p17 : std_logic := '0'; -- N_LVDS_1 / SYnIN + signal n17 : std_logic := '1'; -- P_LVDS_1 / SYpIN + signal p18 : std_logic := '0'; -- N_LVDS_2 / TRnIN + signal n18 : std_logic := '1'; -- P_LVDS_2 / TRpIN + signal p19 : std_logic; -- N_LVDS_3 / CK200n + --n19 : out std_logic; -- P_LVDS_3 / CK200p -- NEEDED FOR SERDES(FPGA) TO LVDS BUFFER(BOARD) + signal p21 : std_logic := '0'; -- N_LVDS_6 = TTLIO1 in + signal n21 : std_logic := '1'; -- P_LVDS_6 + signal p22 : std_logic := '0'; -- N_LVDS_8 = TTLIO2 in + signal n22 : std_logic := '1'; -- P_PVDS_8 + signal p23 : std_logic := '0'; -- N_LVDS_10 = TTLIO3 in + signal n23 : std_logic := '1'; -- P_LVDS_10 + signal p24 : std_logic := '0'; -- N_LVDS_4 / SYnOU + --n24 : out std_logic; -- P_LVDS_4 / SYpOU -- NEEDED FOR SERDES(FPGA) TO LVDS BUFFER(BOARD) + signal p25 : std_logic := '0'; -- N_LVDS_5 = TTLIO1 out + signal n25 : std_logic := '1'; -- P_LVDS_5 + signal p26 : std_logic := 'Z'; -- FPLED3 = TTLIO2 (red) 0=on, Z=off + signal n26 : std_logic := 'Z'; -- FPLED4 (blue) + signal p27 : std_logic := '0'; -- N_LVDS_7 = TTLIO2 out + signal n27 : std_logic := '1'; -- P_LVDS_7 + signal p28 : std_logic := '0'; -- N_LVDS_9 = TTLIO3 out + signal n28 : std_logic := '1'; -- P_LVDS_9 + signal p29 : std_logic := 'Z'; -- FPLED1 = TTLIO1 (red) 0=on, Z=off + signal n29 : std_logic := 'Z'; -- FPLED2 (blue) + signal p30 : std_logic := 'Z'; -- n/c + signal n30 : std_logic := 'Z'; -- n/c + + ----------------------------------------------------------------------- + -- connector cpld + ----------------------------------------------------------------------- + signal con : std_logic_vector(5 downto 1); + + ----------------------------------------------------------------------- + -- usb + ----------------------------------------------------------------------- + signal slrd : std_logic; + signal slwr : std_logic; + signal fd : std_logic_vector(7 downto 0) := (others => 'Z'); + signal pa : std_logic_vector(7 downto 0) := (others => 'Z'); + signal ctl : std_logic_vector(2 downto 0) := (others => 'Z'); + signal uclk : std_logic := '0'; + signal ures : std_logic; + + ----------------------------------------------------------------------- + -- leds onboard + ----------------------------------------------------------------------- + signal led : std_logic_vector(8 downto 1) := (others => '1'); + + ----------------------------------------------------------------------- + -- leds SFPs + ----------------------------------------------------------------------- + signal ledsfpr : std_logic_vector(4 downto 1); + signal ledsfpg : std_logic_vector(4 downto 1); + signal sfp234_ref_clk_i : std_logic := '1'; + + ----------------------------------------------------------------------- + -- SFP1 + ----------------------------------------------------------------------- + + signal sfp1_tx_disable_o : std_logic := '0'; + signal sfp1_tx_fault : std_logic := '0'; + signal sfp1_los : std_logic := '0'; + + --sfp1_txp_o : out std_logic; + --sfp1_rxp_i : in std_logic; + + signal sfp1_mod0 : std_logic := 'Z'; -- grounded by module + signal sfp1_mod1 : std_logic := 'Z'; -- SCL + signal sfp1_mod2 : std_logic := 'Z'; -- SDA + + ----------------------------------------------------------------------- + -- SFP2 + ----------------------------------------------------------------------- + + signal sfp2_tx_disable_o : std_logic := '0'; + signal sfp2_tx_fault : std_logic := '0'; + signal sfp2_los : std_logic := '0'; + + --sfp2_txp_o : out std_logic; + --sfp2_rxp_i : in std_logic; + + signal sfp2_mod0 : std_logic := 'Z'; -- grounded by module + signal sfp2_mod1 : std_logic := 'Z'; -- SCL + signal sfp2_mod2 : std_logic := 'Z'; -- SDA + + ----------------------------------------------------------------------- + -- SFP3 + ----------------------------------------------------------------------- + + signal sfp3_tx_disable_o : std_logic := '0'; + signal sfp3_tx_fault : std_logic := '0'; + signal sfp3_los : std_logic := '0'; + + --sfp3_txp_o : out std_logic; + --sfp3_rxp_i : in std_logic; + + signal sfp3_mod0 : std_logic := 'Z'; -- grounded by module + signal sfp3_mod1 : std_logic := 'Z'; -- SCL + signal sfp3_mod2 : std_logic := 'Z'; -- SDA + + ----------------------------------------------------------------------- + -- SFP4 + ----------------------------------------------------------------------- + + signal sfp4_tx_disable_o : std_logic := '0'; + signal sfp4_tx_fault : std_logic := '0'; + signal sfp4_los : std_logic := '0'; + + signal sfp4_txp_o : std_logic; + signal sfp4_rxp_i : std_logic := '0'; + + signal sfp4_mod0 : std_logic := 'Z'; -- grounded by module + signal sfp4_mod1 : std_logic := 'Z'; -- SCL + signal sfp4_mod2 : std_logic := 'Z'; -- SDA + +begin + + simbridge_y: if g_en_simbridge generate + chip : entity work.ez_usb_chip + generic map(g_stop_until_client_connects => false) + port map ( + rstn_i => '0', -- always in reset + wu2_o => pa(3), + readyn_o => pa(7), + fifoadr_i => "00", + fulln_o => ctl(1), + emptyn_o => ctl(2), + sloen_i => '1', + slrdn_i => '1', + slwrn_i => '1', + pktendn_i => pa(6), + fd_io => fd + ); + end generate; + simbridge_n: if not g_en_simbridge generate + chip : entity work.ez_usb_chip + generic map(g_stop_until_client_connects => true) + port map ( + rstn_i => ures, + wu2_o => pa(3), + readyn_o => pa(7), + fifoadr_i => pa(5 downto 4), + fulln_o => ctl(1), + emptyn_o => ctl(2), + sloen_i => pa(2), + slrdn_i => slrd, + slwrn_i => slwr, + pktendn_i => pa(6), + fd_io => fd + ); + end generate; + + + --wrex : entity work.wr_timing + --port map( + -- dac_hpll_load_p1_i => dac_hpll_load_p1, + -- dac_hpll_data_i => dac_hpll_data, + -- dac_dpll_load_p1_i => dac_dpll_load_p1, + -- dac_dpll_data_i => dac_dpll_data, + -- clk_ref_125_o => clk_ref, + -- clk_sys_62_5_o => open, + -- clk_dmtd_20_o => clk_dmtd + --); + + tr : entity work.pci_control + generic map ( + g_simulation => true + -- g_en_simbridge => g_en_simbridge + ) + port map( + clk_20m_vcxo_i => clk_20m_vcxo_i, + clk_125m_pllref_i => clk_125m_pllref_i, + clk_125m_local_i => clk_125m_local_i, + + ----------------------------------------- + -- PCI express pins + ----------------------------------------- + pcie_refclk_i => pcie_refclk_i, + pcie_rx_i => pcie_rx_i, + pcie_tx_o => pcie_tx_o, + nPCI_RESET => nPCI_RESET, + + pe_smdat => pe_smdat, + pe_snclk => pe_snclk, + pe_waken => pe_waken, + + ------------------------------------------------------------------------ + -- WR DAC signals + ------------------------------------------------------------------------ + dac_sclk => dac_sclk, + dac_din => dac_din, + ndac_cs => ndac_cs, + + ----------------------------------------------------------------------- + -- OneWire + ----------------------------------------------------------------------- + rom_data => rom_data, + + ----------------------------------------------------------------------- + -- display + ----------------------------------------------------------------------- + di => di, + ai => ai, + dout_LCD => dout_LCD, + wrdis => wrdis, + dres => dres, + + ----------------------------------------------------------------------- + -- io + ----------------------------------------------------------------------- + fpga_res => fpga_res, + nres => nres, + pbs2 => pbs2, + hpw => hpw, + ant => ant, + + ----------------------------------------------------------------------- + -- pexaria5db1/2 + ----------------------------------------------------------------------- + p1 => p1, + n1 => n1, + p2 => p2, + n2 => n2, + p3 => p3, + n3 => n3, + p4 => p4, + n4 => n4, + p5 => p5, + n5 => n5, + p6 => p6, + n6 => n6, + p7 => p7, + n7 => n7, + p8 => p8, + n8 => n8, + + p9 => p9, + n9 => n9, + p10 => p10, + n10 => n10, + p11 => p11, + n11 => n11, + p12 => p12, + n12 => n12, + p13 => p13, + n13 => n13, + p14 => p14, + n14 => n14, + p15 => p15, + n15 => n15, + p16 => p16, + n16 => n16, + + p17 => p17, + n17 => n17, + p18 => p18, + n18 => n18, + p19 => p19, + --n19 : out std_logic; -- P_LVDS_3 / CK200p -- NEEDED FOR SERDES(FPGA) TO LVDS BUFFER(BOARD) + p21 => p21, + n21 => n21, + p22 => p22, + n22 => n22, + p23 => p23, + n23 => n23, + p24 => p24, + --n24 : out std_logic; -- P_LVDS_4 / SYpOU -- NEEDED FOR SERDES(FPGA) TO LVDS BUFFER(BOARD) + p25 => p25, + n25 => n25, + p26 => p26, + n26 => n26, + p27 => p27, + n27 => n27, + p28 => p28, + n28 => n28, + p29 => p29, + n29 => n29, + p30 => p30, + n30 => n30, + + ----------------------------------------------------------------------- + -- connector cpld + ----------------------------------------------------------------------- + con => con, + + ----------------------------------------------------------------------- + -- usb + ----------------------------------------------------------------------- + slrd => slrd, + slwr => slwr, + fd => fd, + pa => pa, + ctl => ctl, + uclk => uclk, + ures => ures, + + ----------------------------------------------------------------------- + -- leds onboard + ----------------------------------------------------------------------- + led => led, + + ----------------------------------------------------------------------- + -- leds SFPs + ----------------------------------------------------------------------- + ledsfpr => ledsfpr, + ledsfpg => ledsfpg, + sfp234_ref_clk_i => sfp234_ref_clk_i, + + ----------------------------------------------------------------------- + -- SFP1 + ----------------------------------------------------------------------- + + sfp1_tx_disable_o => sfp1_tx_disable_o, + sfp1_tx_fault => sfp1_tx_fault, + sfp1_los => sfp1_los, + + --sfp1_txp_o : out std_logic; + --sfp1_rxp_i : in std_logic; + + sfp1_mod0 => sfp1_mod0, + sfp1_mod1 => sfp1_mod1, + sfp1_mod2 => sfp1_mod2, + + ----------------------------------------------------------------------- + -- SFP2 + ----------------------------------------------------------------------- + + sfp2_tx_disable_o => sfp2_tx_disable_o, + sfp2_tx_fault => sfp2_tx_fault, + sfp2_los => sfp2_los, + + --sfp2_txp_o : out std_logic; + --sfp2_rxp_i : in std_logic; + + sfp2_mod0 => sfp2_mod0, + sfp2_mod1 => sfp2_mod1, + sfp2_mod2 => sfp2_mod2, + + ----------------------------------------------------------------------- + -- SFP3 + ----------------------------------------------------------------------- + + sfp3_tx_disable_o => sfp3_tx_disable_o, + sfp3_tx_fault => sfp3_tx_fault, + sfp3_los => sfp3_los, + + --sfp3_txp_o : out std_logic; + --sfp3_rxp_i : in std_logic; + + sfp3_mod0 => sfp3_mod0, + sfp3_mod1 => sfp3_mod1, + sfp3_mod2 => sfp3_mod2, + + ----------------------------------------------------------------------- + -- SFP4 + ----------------------------------------------------------------------- + + sfp4_tx_disable_o => sfp4_tx_disable_o, + sfp4_tx_fault => sfp4_tx_fault, + sfp4_los => sfp4_los, + + sfp4_txp_o => sfp4_txp_o, + sfp4_rxp_i => sfp4_rxp_i, + + sfp4_mod0 => sfp4_mod0, + sfp4_mod1 => sfp4_mod1, + sfp4_mod2 => sfp4_mod2 + ); + + + clk_20m_vcxo_i <= not clk_20m_vcxo_i after 25 ns; -- 20MHz VCXO clock + clk_125m_pllref_i <= not clk_125m_pllref_i after 4 ns; -- 125 MHz PLL reference + clk_125m_local_i <= not clk_125m_local_i after 4 ns; -- local clk from 125Mhz oszillator + pbs2 <= '1' after 50 ns; -- release reset + + +end architecture; + + + diff --git a/testbench/tr_simulation/gsi_pexarria5/wb_arria_reset.vhd b/testbench/tr_simulation/gsi_pexarria5/wb_arria_reset.vhd new file mode 100644 index 0000000000..fd04a30621 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/wb_arria_reset.vhd @@ -0,0 +1,256 @@ +------------------------------------------------------------------------------- +-- Title : FPGA reset for Arria +-- Project : all Arria platforms +------------------------------------------------------------------------------- +-- File : altera_reset.vhd +-- Author : Stefan Rauch +-- Company : GSI +-- Created : 2013-12-12 +-- Last update: 2014-09-16 +-- Platform : Altera +-- Standard : VHDL'93 +------------------------------------------------------------------------------- +-- Description: resets FPGA with internal logic using alt remote update +-- n: number of user LM32 cores in system +-- +-- Bit 0 => reload FPGA configuration (active high) +-- Bit 1..n => reset_out(1 .. n) +------------------------------------------------------------------------------- +-- +-- Copyright (c) 2013 GSI / Stefan Rauch +-- +-- This source file is free software; you can redistribute it +-- and/or modify it under the terms of the GNU Lesser General +-- Public License as published by the Free Software Foundation; +-- either version 2.1 of the License, or (at your option) any +-- later version. +-- +-- This source is distributed in the hope that it will be +-- useful, but WITHOUT ANY WARRANTY; without even the implied +-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +-- PURPOSE. See the GNU Lesser General Public License for more +-- details. +-- +-- You should have received a copy of the GNU Lesser General +-- Public License along with this source; if not, download it +-- from http://www.gnu.org/licenses/lgpl-2.1.html +-- +-- +------------------------------------------------------------------------------- +-- Revisions : +-- Date Version Author Description +-- 2013-09-13 1.0 stefanrauch first version +------------------------------------------------------------------------------- +-- 2014-09-16 1.1 mkreider - FPGA reset needs DEADBEEF as magic +-- word at address 0x0 +-- - 0x4 - 0xC are now GET, SET, CLR for +-- individual LM32 reset lines +------------------------------------------------------------------------------- +-- 2016-01-7 1.2 srauch - added register for hw version number +-- - read from address offset 0x8 +------------------------------------------------------------------------------- +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.math_real.all; + + +library work; +use work.wishbone_pkg.all; +use work.wb_arria_reset_pkg.all; +use work.aux_functions_pkg.all; +use work.monster_pkg.all; + +--library arria10_reset_altera_remote_update_181; +--use arria10_reset_altera_remote_update_181.arria10_reset_pkg.all; + +entity wb_arria_reset is + generic ( + arria_family : string := "none"; + rst_channels : integer range 1 to 32 := 2; + clk_in_hz : integer; + en_wd_tmr : boolean + ); + port ( + clk_sys_i : in std_logic; + rstn_sys_i : in std_logic; + clk_upd_i : in std_logic; + rstn_upd_i : in std_logic; + + hw_version : in std_logic_vector(31 downto 0); + + slave_o : out t_wishbone_slave_out; + slave_i : in t_wishbone_slave_in; + + phy_rst_o : out std_logic; + phy_aux_rst_o : out std_logic; + phy_dis_o : out std_logic; + phy_aux_dis_o : out std_logic; + + rstn_o : out std_logic_vector(rst_channels-1 downto 0) + ); +end entity; + + +architecture wb_arria_reset_arch of wb_arria_reset is + signal reset_reg : std_logic_vector(31 downto 0); + signal reset : std_logic; + signal en_1ms : std_logic; + signal trigger_reconfig : std_logic; + signal disable_wd : std_logic; + signal retrg_wd : std_logic; + signal phy_rst : std_logic; + signal phy_aux_rst : std_logic; + signal phy_dis : std_logic; + signal phy_aux_dis : std_logic; + signal reset_reg0_or_trigger_reconfig : std_logic; + constant cnt_value : integer := 1000 * 60 * 10; -- 10 min with 1ms granularity + constant cnt_width : integer := integer(ceil(log2(real(cnt_value)))) + 1; +begin + + reset <= not rstn_upd_i; + reset_reg0_or_trigger_reconfig <= reset_reg(0) or trigger_reconfig; + + ruc_gen_a2 : if arria_family = "Arria II" generate + arria_reset_inst : arria_reset PORT MAP ( + clock => clk_upd_i, + param => "000", + read_param => '0', + reconfig => reset_reg0_or_trigger_reconfig, + reset => reset, + reset_timer => '0', + busy => open, + data_out => open + ); + end generate; + + ruc_gen_a5 : if arria_family = "Arria V" generate + arria5_reset_inst : arria5_reset PORT MAP ( + clock => clk_upd_i, + param => "000", + read_param => '0', + reconfig => reset_reg0_or_trigger_reconfig, + reset => reset, + reset_timer => '0', + busy => open, + data_out => open + ); + end generate; + + ruc_gen_a10 : if arria_family(1 to 7) = "Arria 1" generate + arria5_reset_inst : arria10_reset PORT MAP ( + clock => clk_upd_i, + param => "000", + read_param => '0', + reconfig => reset_reg0_or_trigger_reconfig, + reset => reset, + reset_timer => '0', + busy => open, + data_out => open + ); + end generate; + + gen_wd: if en_wd_tmr = true generate + wd_div : div_n generic map ( + n => (clk_in_hz / 1000) + 2 -- 1ms + ) + port map ( + res => reset, + clk => clk_sys_i, + ena => '1', + div_o => en_1ms + ); + + wd_cnt : process(clk_sys_i) + variable cnt : unsigned(cnt_width-1 downto 0) := to_unsigned(cnt_value, cnt_width); + begin + if rising_edge(clk_sys_i) then + if en_1ms = '1' and disable_wd = '0' then + cnt := cnt - 1; + elsif retrg_wd = '1' then + cnt := to_unsigned(cnt_value, cnt_width); + end if; + if cnt(cnt'high) = '1' then + trigger_reconfig <= '1'; + end if; + end if; + end process; + end generate; + + rst_out_gen: for i in 0 to rst_channels-1 generate + rstn_o(i) <= not reset_reg(i+1); + end generate; + + gen_wd_off: if en_wd_tmr = false generate + trigger_reconfig <= '0'; + end generate; + + slave_o.err <= '0'; + slave_o.stall <= '0'; + + phy_rst_o <= phy_rst; + phy_aux_rst_o <= phy_aux_rst; + phy_dis_o <= phy_dis; + phy_aux_dis_o <= phy_aux_dis; + + wb_reg: process(clk_sys_i) + begin + if rising_edge(clk_sys_i) then + slave_o.ack <= slave_i.cyc and slave_i.stb; + slave_o.dat <= (others => '0'); + + if rstn_sys_i = '0' then + disable_wd <= '0'; + retrg_wd <= '0'; + phy_rst <= '0'; + phy_aux_rst <= '0'; + phy_dis <= '0'; + phy_aux_dis <= '0'; + reset_reg <= (others => '0'); + else + retrg_wd <= '0'; + -- Detect a write to the register byte + if slave_i.cyc = '1' and slave_i.stb = '1' and slave_i.sel(0) = '1' then + if(slave_i.we = '1') then + case to_integer(unsigned(slave_i.adr(7 downto 2))) is + when 0 => + if(slave_i.dat = x"DEADBEEF") then + reset_reg(0) <= '1'; + end if; + + when 1 => + -- dis-/enable the watchdog + if(slave_i.dat = x"CAFEBABE") then + disable_wd <= '1'; + elsif(slave_i.dat = x"CAFEBAB0") then + disable_wd <= '0'; + end if; + when 2 => reset_reg(reset_reg'left downto 1) <= reset_reg(reset_reg'left downto 1) OR slave_i.dat(reset_reg'left-1 downto 0); + when 3 => reset_reg(reset_reg'left downto 1) <= reset_reg(reset_reg'left downto 1) AND NOT slave_i.dat(reset_reg'left-1 downto 0); + when 4 => + -- retrigger the watchdog + if(slave_i.dat = x"CAFEBABE") then + retrg_wd <= '1'; + end if; + when 5 => + phy_rst <= slave_i.dat(0); + phy_aux_rst <= slave_i.dat(1); + phy_dis <= slave_i.dat(2); + phy_aux_dis <= slave_i.dat(3); + when others => null; + end case; + else -- read + case to_integer(unsigned(slave_i.adr(7 downto 2))) is + when 1 => slave_o.dat <= '0' & reset_reg(reset_reg'left downto 1); + when 2 => slave_o.dat <= hw_version; + when 3 => slave_o.dat <= x"0000000" & "000" & not disable_wd; + when 5 => slave_o.dat <= x"0000000" & phy_aux_dis & phy_dis & phy_aux_rst & phy_rst; + when others => null; + end case; + end if; + end if; + + end if; -- of sync reset + end if; -- of rising_edge + end process; +end architecture; diff --git a/testbench/tr_simulation/gsi_pexarria5/wb_irq_scu_bus.vhd b/testbench/tr_simulation/gsi_pexarria5/wb_irq_scu_bus.vhd new file mode 100644 index 0000000000..00e8e5e447 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/wb_irq_scu_bus.vhd @@ -0,0 +1,94 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; + +use work.wishbone_pkg.all; +use work.wb_irq_pkg.all; +use work.scu_bus_pkg.all; + +entity wb_irq_scu_bus is + generic ( + g_interface_mode : t_wishbone_interface_mode := PIPELINED; + g_address_granularity : t_wishbone_address_granularity := BYTE; + clk_in_hz : integer := 62_500_000; + time_out_in_ns : integer := 250; + test : integer range 0 to 1 := 0); + port ( + clk_i : std_logic; + rst_n_i : std_logic; + + tag : in std_logic_vector(31 downto 0); + tag_valid : in std_logic; + + irq_master_o : out t_wishbone_master_out; + irq_master_i : in t_wishbone_master_in; + + ctrl_irq_o : out t_wishbone_slave_out; + ctrl_irq_i : in t_wishbone_slave_in; + + scu_slave_o : buffer t_wishbone_slave_out; + scu_slave_i : in t_wishbone_slave_in; + + scub_data : inout std_logic_vector(15 downto 0); + nscub_ds : out std_logic; + nscub_dtack : in std_logic; + scub_addr : out std_logic_vector(15 downto 0); + scub_rdnwr : out std_logic; + nscub_srq_slaves : in std_logic_vector(11 downto 0); + nscub_slave_sel : out std_logic_vector(11 downto 0); + nscub_timing_cycle : out std_logic; + nsel_ext_data_drv : out std_logic); +end entity; + + +architecture wb_irq_scu_bus_arch of wb_irq_scu_bus is + signal scu_srq_active : std_logic_vector(11 downto 0); +begin + scub_master : wb_scu_bus + generic map( + g_interface_mode => g_interface_mode, + g_address_granularity => g_address_granularity, + CLK_in_Hz => 62_500_000, + Test => 0, + Time_Out_in_ns => 350) + port map( + clk => clk_i, + nrst => rst_n_i, + Timing_In => tag, + Start_Timing_Cycle => tag_valid, + slave_i => scu_slave_i, + slave_o => open, + srq_active => scu_srq_active, + + SCUB_Data => scub_data, + nSCUB_DS => nscub_ds, + nSCUB_Dtack => nscub_dtack, + SCUB_Addr => scub_addr, + SCUB_RDnWR => scub_rdnwr, + nSCUB_SRQ_Slaves => nscub_srq_slaves, + nSCUB_Slave_Sel => nscub_slave_sel, + nSCUB_Timing_Cycle => nscub_timing_cycle, + nSel_Ext_Data_Drv => nsel_ext_data_drv); + + scub_irq_master: wb_irq_master + generic map ( + g_channels => 12, + g_round_rb => true, + g_det_edge => true) + port map ( + clk_i => clk_i, + rst_n_i => rst_n_i, + + -- msi if + irq_master_o => irq_master_o, + irq_master_i => irq_master_i, + + -- ctrl if + ctrl_slave_o => ctrl_irq_o, + ctrl_slave_i => ctrl_irq_i, + + -- irq lines + irq_i => scu_srq_active); +end architecture; diff --git a/testbench/tr_simulation/gsi_pexarria5/wb_irq_slave.vhd b/testbench/tr_simulation/gsi_pexarria5/wb_irq_slave.vhd new file mode 100644 index 0000000000..bc6cca5056 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/wb_irq_slave.vhd @@ -0,0 +1,236 @@ +------------------------------------------------------------------------------ +-- Title : WB MSI Core +-- Project : Wishbone +------------------------------------------------------------------------------ +-- File : wb_irq_slave.vhd +-- Author : Mathias Kreider +-- Company : GSI +-- Created : 2013-08-10 +-- Last update: 2018-03-08 +-- Platform : FPGA-generic +-- Standard : VHDL'93 +------------------------------------------------------------------------------- +-- Description: Provide prioritized Message Signaled Interrupt queues for an LM32 +------------------------------------------------------------------------------- +-- Copyright (c) 2013 GSI +------------------------------------------------------------------------------- +-- Revisions : +-- Date Version Author Description +-- 2013-08-10 1.0 mkreider Created +------------------------------------------------------------------------------- + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +library work; +use work.wishbone_pkg.all; +use work.genram_pkg.all; +use work.wb_irq_pkg.all; + + +entity wb_irq_slave is + generic ( g_queues : natural := 4; -- number of int lines & queues + g_depth : natural := 8; -- queues depth + g_datbits : natural := 32; -- data bits from irq wb to store + g_adrbits : natural := 32; -- addr bits from irq wb to store + g_selbits : natural := 4 -- sel bits from irq wb to store + ); + port (clk_i : std_logic; + rst_n_i : std_logic; + + irq_slave_o : out t_wishbone_slave_out_array(g_queues-1 downto 0); -- wb msi interface + irq_slave_i : in t_wishbone_slave_in_array(g_queues-1 downto 0); + irq_o : out std_logic_vector(g_queues-1 downto 0); -- pending irq flags of queues + + ctrl_slave_o : out t_wishbone_slave_out; -- ctrl interface for LM32 irq processing + ctrl_slave_i : in t_wishbone_slave_in + ); +end entity; + +architecture behavioral of wb_irq_slave is +------------------------------------------------------------------------- +--memory map for ctrl wb +------------------------------------------------------------------------- +constant c_RST : natural := 0; --wo +constant c_STATUS : natural := c_RST+4; --ro, 1 bit per queue +constant c_POP : natural := c_STATUS+4; --wo, 1 bit per queue pop +constant c_CLEAR : natural := c_POP+4; --wo, 1 bit per queue clear +constant c_ENA_GET : natural := c_CLEAR+4; --ro, queue enable status (1 bit per queue) default to enabled +constant c_ENA_SET : natural := c_ENA_GET+4; --wo, queue enable set +constant c_ENA_CLR : natural := c_ENA_SET+4; --wo, queue enable clear + +--pages for queues +--queue I is found at: c_QUEUES + I * c_N_QUEUE +constant c_QUEUES : natural := 32; +constant c_N_QUEUE : natural := 16; +constant c_OFFS_DATA : natural := 0; --ro wb data, msi message +constant c_OFFS_ADDR : natural := c_OFFS_DATA+4; --ro wb addr, msi adr low bits ID caller device +constant c_OFFS_SEL : natural := c_OFFS_ADDR+4; --ro wb sel, +------------------------------------------------------------------------- +function f_wb_wr(pval : std_logic_vector; ival : std_logic_vector; sel : std_logic_vector; mode : string := "owr") return std_logic_vector is + variable n_sel : std_logic_vector(pval'range); + variable n_val : std_logic_vector(pval'range); + variable result : std_logic_vector(pval'range); +begin + for i in pval'range loop + n_sel(i) := sel(i / 8); + n_val(i) := ival(i); + end loop; + + if(mode = "set") then + result := pval or (n_val and n_sel); + elsif (mode = "clr") then + result := pval and not (n_val and n_sel); + else + result := (pval and not n_sel) or (n_val and n_sel); + end if; + + return result; +end f_wb_wr; + + +--ctrl wb signals +signal r_rst_n : std_logic; +signal s_rst_n : std_logic_vector(g_queues-1 downto 0); +signal r_status, + r_pop, + r_clr, + r_ena : std_logic_vector(g_queues-1 downto 0); +signal queue_offs : natural; +signal word_offs : natural; +signal adr : unsigned(7 downto 0); + +--queue signals +type t_queue_dat is array(natural range <>) of std_logic_vector(g_datbits+g_adrbits+g_selbits-1 downto 0); +signal irq_push, irq_pop, irq_full, irq_empty : std_logic_vector(g_queues-1 downto 0); +signal irq_d, irq_q : t_queue_dat(g_queues-1 downto 0); +signal ctrl_en : std_logic; + +begin + + + ------------------------------------------------------------------------- + --irq wb and queues + ------------------------------------------------------------------------- + irq_o <= r_status(g_queues-1 downto 0); -- LM32 IRQs are active low! + s_rst_n <= (s_rst_n'range => rst_n_i) and (s_rst_n'range => r_rst_n) and not r_clr; + + G1: for I in 0 to g_queues-1 generate + + irq_d(I) <= irq_slave_i(I).sel & irq_slave_i(I).adr & irq_slave_i(I).dat; + irq_push(I) <= irq_slave_i(I).cyc and irq_slave_i(I).stb and irq_slave_i(I).we and not irq_full(I) and r_ena(I); + irq_slave_o(I).stall <= irq_full(I); + irq_pop(I) <= r_pop(I) and r_status(I); + r_status(I) <= not irq_empty(I); + + irq_slave_o(I).rty <= '0'; + irq_slave_o(I).err <= '0'; + irq_slave_o(I).dat <= (others => '0'); + + p_ack : process(clk_i) -- ack all + begin + if rising_edge(clk_i) then + irq_slave_o(I).ack <= irq_push(I); + end if; + end process; + + irqfifo : generic_sync_fifo + generic map ( + g_data_width => g_datbits + g_adrbits + g_selbits, + g_size => g_depth, + g_show_ahead => true, + g_with_empty => true, + g_with_full => true) + port map ( + rst_n_i => s_rst_n(I), + clk_i => clk_i, + d_i => irq_d(I), + we_i => irq_push(I), + q_o => irq_q(I), + rd_i => irq_pop(I), + empty_o => irq_empty(I), + full_o => irq_full(I), + almost_empty_o => open, + almost_full_o => open, + count_o => open); + + end generate; + ------------------------------------------------------------------------- + + + ------------------------------------------------------------------------- + -- ctrl wb and output + ------------------------------------------------------------------------- + ctrl_en <= ctrL_slave_i.cyc and ctrl_slave_i.stb; + adr <= unsigned(ctrl_slave_i.adr(7 downto 2)) & "00"; + queue_offs <= to_integer(adr(adr'left downto 4)-1); + word_offs <= to_integer(adr(3 downto 0)); + + ctrl_slave_o.rty <= '0'; + ctrl_slave_o.stall <= '0'; + + process(clk_i) + + variable v_dat : std_logic_vector(g_datbits-1 downto 0); + variable v_adr : std_logic_vector(g_adrbits-1 downto 0); + variable v_sel : std_logic_vector(g_selbits-1 downto 0); + + begin + if rising_edge(clk_i) then + if(rst_n_i = '0' or r_rst_n = '0') then + r_rst_n <= '1'; + r_clr <= (others => '0'); + r_pop <= (others => '0'); + r_ena <= (others => '1'); + else + + ctrl_slave_o.ack <= '0'; + ctrl_slave_o.err <= '0'; + r_pop <= (others => '0'); + r_clr <= (others => '0'); + ctrl_slave_o.dat <= (others => '0'); + + if(ctrl_en = '1') then + ctrl_slave_o.ack <= '1'; -- ack is default, we'll change it if an error occurs + if(to_integer(adr) < c_QUEUES) then + -- control registers + if(ctrl_slave_i.we = '1') then + case to_integer(adr) is + when c_RST => r_rst_n <= '0'; + when c_POP => r_pop <= f_wb_wr(r_pop, ctrl_slave_i.dat, ctrl_slave_i.sel, "set"); + when c_CLEAR => r_clr <= f_wb_wr(r_clr, ctrl_slave_i.dat, ctrl_slave_i.sel, "set"); + when c_ENA_SET => r_ena <= f_wb_wr(r_ena, ctrl_slave_i.dat, ctrl_slave_i.sel, "set"); + when c_ENA_CLR => r_ena <= f_wb_wr(r_ena, ctrl_slave_i.dat, ctrl_slave_i.sel, "clr"); + when others => ctrl_slave_o.ack <= '0'; ctrl_slave_o.err <= '1'; + end case; + else + case to_integer(adr) is + when c_STATUS => ctrl_slave_o.dat(r_status'range) <= r_status; + when c_ENA_GET => ctrl_slave_o.dat(r_ena'range) <= r_ena; + when others => ctrl_slave_o.ack <= '0'; ctrl_slave_o.err <= '1'; + end case; + end if; + else -- queues, one mem page per queue + if(adr < c_QUEUES + c_N_QUEUE * g_queues and ctrl_slave_i.we = '0') then + v_dat := irq_q(queue_offs mod irq_q'length)(g_datbits-1 downto 0); + v_adr := irq_q(queue_offs mod irq_q'length)(g_adrbits+g_datbits-1 downto g_datbits); + v_sel := irq_q(queue_offs mod irq_q'length)(g_selbits + g_adrbits + g_datbits-1 downto g_adrbits+g_datbits); + + case word_offs is + when c_OFFS_DATA => ctrl_slave_o.dat <= std_logic_vector(to_unsigned(0, 32-g_datbits)) & v_dat; + when c_OFFS_ADDR => ctrl_slave_o.dat <= std_logic_vector(to_unsigned(0, 32-g_adrbits)) & v_adr; + when c_OFFS_SEL => ctrl_slave_o.dat <= std_logic_vector(to_unsigned(0, 32-g_selbits)) & v_sel; + when others => ctrl_slave_o.ack <= '0'; ctrl_slave_o.err <= '1'; + end case; + else + ctrl_slave_o.ack <= '0'; ctrl_slave_o.err <= '1'; + end if; + end if; + + end if; + end if; -- rst + end if; -- clk edge + end process; + ------------------------------------------------------------------------- +end architecture; diff --git a/testbench/tr_simulation/gsi_pexarria5/wb_mil_scu.vhd b/testbench/tr_simulation/gsi_pexarria5/wb_mil_scu.vhd new file mode 100644 index 0000000000..c0c6ebde96 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/wb_mil_scu.vhd @@ -0,0 +1,2079 @@ +LIBRARY ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.math_real.all; +use work.wishbone_pkg.all; +use work.aux_functions_pkg.all; +use work.mil_pkg.all; +use work.wb_mil_scu_pkg.all; +use work.genram_pkg.all; + + + +--+---------------------------------------------------------------------------------------------------------------------------------+ +--| "wb_mil_scu" stellt in Verbindung mit der SCU-Aufsteck-Karte "FG900170_SCU_MIL1" alle Funktionen bereit, die benoetigt werden, | +--| um SE-Funktionalitaet mit einer SCU realistieren zu koennen. | +--| | +--| Das Rechnerinterface zu den einzelnen SE-Funktionen ist mit dem wishbone bus realisiert. | +--| Je nach angesprochener Funktion ist ein 32 Bit oder 16 Bit Zugriff vorgeschrieben. | +--| Egal ob 32 Bit oder 16 Bit Resource, die Adressen muessen immer auf Modulo-4-Grenzen liegen. | +--| Die Adressoffsets der einzelnen Funktionen sind in der Datei "wb_mil_scu_pkg" abgelegt. Ebenso ist dort die | +--| Component-Deklaration der Entity "wb_mil_scu" abgelegt. Dort ist auch der SDB-Record der wishbone-componente abgelegt. | +--| | +--| Folgende Funktionen sollen zum Abschluss des Projekts bereitstehen: | +--| 1) Mil-(Device)-Bus-Kommunikation. Wird als erstes realisiert. | +--| 2) Timing-Receiver (Manchester-Dekoder im FPGA) | +--| 3) Event-Filter zur Steuerung: | +--| a) welches Event in das Empfangs-Fifo geschreiben wird. | +--| b) welches Event den Event-Timer rueckstzen soll. | +--| c) ob ein Event einen Puls (oder zwei Events einen Rahmenpuls) an den beiden Lemoausgangsbuchsen bereitstellen soll. | +--| 4) Delay-Timer, generiert einen Interrupt nach herunterzaehlen des geladenen Datums. | +--| 5) Event-Timer, 32 Bit breit, kann per Event oder Software auf Null zurueckgestzt werden. Hat keinen Ueberlaufschutz. | +--| 6) Wait-Timer, 24 Bit breit, kann per Software auf null gestzt werden. Hat keinen Ueberlaufschutz. | +--| 7) Interrupt-System. | +--| 8) Test und Auslese ob die SCU-Aufsteck-Karte "FG900170_SCU_MIL1" bestueckt ist. | +--| | +--| Version | Autor | Datum | Grund | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 01 | W.Panschow | 15.08.2013 | Bereitstellung der Mil-(Device)-Bus Funktion. | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 02 | W.Panschow | 14.11.2013 | Timing-Receiver, Event-Filter, Delay-Timer, Event-Timer und Wait-Timer implementiert. | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 03 | W.Panschow | 22.11.2013 | a) Es sind nur noch 32 Bit-Zugriffe auf alle Resourcen der wb_mil_scu erlaubt. | +--| | | | b) Die Led Trm-12-Spannung-okay ist angeschlossen. Die Led wird doppelt genutzt. | +--| | | | Bei Fehlerhaften Zugriffen auf "wb_mil_scu"-Resourcen (z.B. kein 32Bit-Zugriff, oder | +--| | | | Event-Fifo-auslesen, obwohl kein Event im Fifo steht) wird Trm-12 fuer kurze Zeit | +--| | | | dunkel getastet. | +--| | | | c) Die User-1 Led signalisiert, dass das Event-Fifo nicht leer ist. | +--| | | | d) Die Entprellung der Device-Bus-Interrupts ist implementiert. Diese Funktion ist immer | +--| | | | einschaltet. Im Statusregister wird die Funktion immer als eingeschaltet signalisiert. | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 04 | W.Panschow | 28.03.2014 | a) Interrupt-Ausgaenge zum Anschluss an die Mil-Interrupt-Instanz "mil_irq_inst" | +--| | | | eingebaut (Interlock_Intr_o, Data_Rdy_Intr_o, Data_Req_Intr_o, dly_intr_o, | +--| | | | ev_fifo_ne_intr_o). | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 05 | W.Panschow | 22.04.2014 | a) evyer_10ms_intr_o changed to every_ms_intr_o. | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 06 | K.Kaiser | 25.02.2015 | a) generic map: Berechnung fuer every_ms, every_us korrigiert | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 07 | K.Kaiser | 05.05.2015 | Bis zu 4 LEMO Buchsen (SIO) nun über Register auslesbar und kontrollierbar | +--| | | | Die vorherige Funktion (Steuerung beliebiger LEMO Ausgänge per Event) bleibt erhalten | +--| | | | wenn das entsprechende "event_cntrl" Statusbit gesetzt ist. | +--| | | | Ist das entsprechende "event_cntrl" Statusbit gleich '0'(=default), dann sind LEMOs | +--| | | | a1) nach Reset als Inputs geschaltet.Dise sind (transparent)per Input Reg abfragbar | +--| | | | a2) wird Lemo Out Enable Reg.Bit auf 1 gesetzt,dann werden das entsprechen Reg-Bit | +--| | | | auf den entsprechenden LEMO Ausgang übertragen. | +--| | | | Jeder Lemo Buchse sind eigene Bits zugeordnet, sie sind somit einzeln ansteuerbar. | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 08 | K.Kaiser | 07.09.2017 | Zur Durchsatzsteigerung des Devicebusses für die FG Parameterübertragung | +--| | | | Ein One-Hot Timeslotscheduler steuert den DB-Zugriff (TS0=TX_FIFO, TX1..254=TaskRam) | +--| | | | Scheduler in TS0: Alle TX_FIFO Aufträge werden abgewickelt bevor er in TS1 wechselt ! | +--| | | | tx_Fifo (1024x17) Puffer für 1024 CMD oder Daten-Telegramme in Senderichtung | +--| | | | Bei Überfüllung des TX Fifo Puffers wird kein DTACK gegeben | +--| | | | tx_TaskRam (1..254) Puffer für 254 CMD Telegramme (mit Rücklesen) vom DevBus Slave | +--| | | | Rücklesedaten werden in RX_Taskram gespeichert | +--| | | | Avail und ggf Err Bit (Timeout oder Parity) wird gesetzt | +--| | | | Avail und ggf Err Bit wird bei Auslesen RX_Taskramzelle gelöscht | +--| | | | Solange eine Auftrag im TX_TaskRam steht und nicht abgeschlossen | +--| | | | ist, wird ausserdem das tx_req Bit gesetzt | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +--| 08 | K.Kaiser | 07.09.2017 |a) hw6408_rdy Signal erkennt die Bestückung einer MilOption (bzw des Harris Bausteins) | +--| | | | Wenn unbestückt: Registerzugriffe erzeugen eine etherbone cycle Error | +--| | | | | +--| | | |b) Register reset_mil_macro für SW gesteuerten Reset des wb_mil_scu Macros hinzu | +--| | | | | +--| | | 12.01.2018 | n_tx_req_led,n_rx_avail_led hinzu | +--| | | | clr_rx_avail_ps, clr_rx_err_ps bei TX_Taskram Write Access hinzu | +--| | | | | +--| | | 29.01.2018 | clr_rx_err_ps ,clr_rx_avail_ps bei RX_Taskram Read Access wg Performance entfernt | +--| | | | Grund:Die Etherbone Bridge kann (socket-orientiert) ihre Leseaufträge verwürfeln | +--| | | | | +--| | | | | +--| --------+-------------+-------------+---------------------------------------------------------------------------------------- | +ENTITY wb_mil_scu_broken IS + -- the WB-slave implementation is broken (it cannot handle 2 cyles with only one clock tick in between) + -- a fix is provided by wrapping the broken entity together with a state machine that introduces a fixed + -- waiting time between two WB cycles. The wrapper is at the bottom of the file. + -- This should be a temporary solution until someone fixes the slave logic of wb_mil_scu_broken. + +GENERIC ( + Clk_in_Hz: INTEGER := 62_500_000; -- Um die Flanken des Manchester-Datenstroms von 1Mb/s genau genug ausmessen zu koennen + -- (kuerzester Flankenabstand 500 ns), muss das Makro mit mindestens 20 Mhz getaktet werden + -- SCU benutzt 62_500_000, SIO benutzt 125_000_000 Hz + slave_i_adr_max: INTEGER := 14 -- 14 für SCU, 17 für SIO + ); +PORT ( + clk_i: IN STD_LOGIC; + nRst_i: IN STD_LOGIC; + slave_i: IN t_wishbone_slave_in; + slave_o: OUT t_wishbone_slave_out; + + -- encoder (transmitter) signals of HD6408 -------------------------------------------------------------------------------- + nME_BOO: IN STD_LOGIC;-- HD6408-output: transmit bipolar positive. + nME_BZO: IN STD_LOGIC;-- HD6408-output: transmit bipolar negative. + + ME_SD: IN STD_LOGIC;-- HD6408-output: '1' => send data is active. + ME_ESC: IN STD_LOGIC;-- HD6408-output: encoder shift clock for shifting data into the encoder. The + -- encoder samples ME_SDI on low-to-high transition of ME_ESC. + ME_SDI: OUT STD_LOGIC;-- HD6408-input: serial data in accepts a serial data stream at a data rate + -- equal to encoder shift clock. + ME_EE: OUT STD_LOGIC;-- HD6408-input: a high on encoder enable initiates the encode cycle. + -- (Subject to the preceding cycle being completed). + ME_SS: OUT STD_LOGIC;-- HD6408-input: sync select actuates a Command sync for an input high + -- and data sync for an input low. + + -- decoder (receiver) signals of HD6408 --------------------------------------------------------------------------------- + ME_BOI: OUT STD_LOGIC;-- HD6408-input: A high input should be applied to bipolar one in when the bus is in its + -- positive state, this pin must be held low when the Unipolar input is used. + ME_BZI: OUT STD_LOGIC;-- HD6408-input: A high input should be applied to bipolar zero in when the bus is in its + -- negative state. This pin must be held high when the Unipolar input is used. + ME_UDI: OUT STD_LOGIC;-- HD6408-input: With ME_BZI high and ME_BOI low, this pin enters unipolar data in to the + -- transition finder circuit. If not used this input must be held low. + ME_CDS: IN STD_LOGIC;-- HD6408-output: high occurs during output of decoded data which was preced + -- by a command synchronizing character. Low indicares a data sync. + ME_SDO: IN STD_LOGIC;-- HD6408-output: serial data out delivers received data in correct NRZ format. + ME_DSC: IN STD_LOGIC;-- HD6408-output: decoder shift clock delivers a frequency (decoder clock : 12), + -- synchronized by the recovered serial data stream. + ME_VW: IN STD_LOGIC;-- HD6408-output: high indicates receipt of a VALID WORD. + ME_TD: IN STD_LOGIC;-- HD6408-output: take data is high during receipt of data after identification + -- of a sync pulse and two valid Manchester data bits + + -- decoder/encoder signals of HD6408 ------------------------------------------------------------------------------------ + -- ME_12MHz: out std_logic;-- HD6408-input: is connected on layout to ME_DC (decoder clock) and ME_EC (encoder clock) + + + Mil_BOI: IN STD_LOGIC;-- HD6408-input: connect positive bipolar receiver, in FPGA directed to the external + -- manchester en/decoder HD6408 via output ME_BOI or to the internal FPGA + -- vhdl manchester macro. + Mil_BZI: IN STD_LOGIC;-- HD6408-input: connect negative bipolar receiver, in FPGA directed to the external + -- manchester en/decoder HD6408 via output ME_BZI or to the internal FPGA + -- vhdl manchester macro. + Sel_Mil_Drv: BUFFER STD_LOGIC;-- HD6408-output: active high, enable the external open collector driver to the transformer + nSel_Mil_Rcv: OUT STD_LOGIC;-- HD6408-output: active low, enable the external differtial receive circuit. + Mil_nBOO: OUT STD_LOGIC;-- HD6408-output: connect bipolar positive output to external open collector driver of + -- the transformer. Source is the external manchester en/decoder HD6408 via + -- nME_BOO or the internal FPGA vhdl manchester macro. + Mil_nBZO: OUT STD_LOGIC;-- HD6408-output: connect bipolar negative output to external open collector driver of + -- the transformer. Source is the external manchester en/decoder HD6408 via + -- nME_BZO or the internal FPGA vhdl manchester macro. + nLed_Mil_Rcv: OUT STD_LOGIC; + nLed_Mil_Trm: OUT STD_LOGIC; + nLed_Mil_Err: OUT STD_LOGIC; + error_limit_reached: OUT STD_LOGIC; + Mil_Decoder_Diag_p: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); + Mil_Decoder_Diag_n: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); + timing: IN STD_LOGIC; + nLed_Timing: OUT STD_LOGIC; + dly_intr_o: OUT STD_LOGIC; + nLed_Fifo_ne: OUT STD_LOGIC; + ev_fifo_ne_intr_o: OUT STD_LOGIC; + Interlock_Intr_i: IN STD_LOGIC; + Data_Rdy_Intr_i: IN STD_LOGIC; + Data_Req_Intr_i: IN STD_LOGIC; + Interlock_Intr_o: OUT STD_LOGIC; + Data_Rdy_Intr_o: OUT STD_LOGIC; + Data_Req_Intr_o: OUT STD_LOGIC; + nLed_Interl: OUT STD_LOGIC; + nLed_Dry: OUT STD_LOGIC; + nLed_Drq: OUT STD_LOGIC; + every_ms_intr_o: OUT STD_LOGIC; + lemo_data_o: OUT STD_LOGIC_VECTOR(4 DOWNTO 1); + lemo_nled_o: OUT STD_LOGIC_VECTOR(4 DOWNTO 1); + lemo_out_en_o: OUT STD_LOGIC_VECTOR(4 DOWNTO 1); + lemo_data_i: IN STD_LOGIC_VECTOR(4 DOWNTO 1):= (OTHERS => '0'); + nsig_wb_err: OUT STD_LOGIC ; -- '0' => gestretchte wishbone access Fehlermeldung + n_tx_req_led : OUT STD_LOGIC ; -- low solange mindestens ein txreq ansteht + n_rx_avail_led: OUT STD_LOGIC -- low solange mindestens ein rxavail ansteht + ); +END wb_mil_scu_broken; + + +ARCHITECTURE arch_wb_mil_scu OF wb_mil_scu_broken IS + +constant mil_rd_wr_data_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + mil_rd_wr_data_a; --not used for reads anymore, use task registers therefore. + --this address writes data to tx_fifo for block transfers +constant mil_wr_cmd_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + mil_wr_cmd_a; --this address writes cmds to tx_fifo for block transfers +constant mil_wr_rd_status_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + mil_wr_rd_status_a; +constant rd_clr_no_vw_cnt_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + rd_clr_no_vw_cnt_a; +constant rd_wr_not_eq_cnt_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + rd_wr_not_eq_cnt_a; +constant rd_clr_ev_fifo_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + rd_clr_ev_fifo_a; +constant rd_clr_ev_timer_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + rd_clr_ev_timer_a ; +constant rd_wr_dly_timer_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + rd_wr_dly_timer_a; +constant rd_clr_wait_timer_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + rd_clr_wait_timer_a; +constant mil_wr_rd_lemo_conf_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + mil_wr_rd_lemo_conf_a; +constant mil_wr_rd_lemo_dat_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + mil_wr_rd_lemo_dat_a; +constant mil_rd_lemo_inp_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + mil_rd_lemo_inp_a; +constant wr_soft_reset_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + wr_soft_reset_a; + + +-- todo constant rd_status_avail_a_map: unsigned (15 downto 0) := sio_mil_first_reg_a + rd_status_avail_a; --to read corresponding avail bits, bit[31..8] don't care + +signal manchester_fpga: std_logic; -- '1' => fpga manchester endecoder selected, '0' => external hardware manchester endecoder 6408 selected. +signal ev_filt_12_8b: std_logic; -- '1' => event filter is on, '0' => event filter is off. +signal ev_filt_on: std_logic; -- '1' => event filter is on, '0' => event filter is off. +signal debounce_on: std_logic; -- '1' => debounce of device bus interrupt input is on. +signal puls2_frame: std_logic; -- '1' => aus zwei events wird der Rahmenpuls2 gebildet. Vorausgesetzt das Eventfilter ist richtig programmiert. +signal puls1_frame: std_logic; -- '1' => aus zwei events wird der Rahmenpuls1 gebildet. Vorausgesetzt das Eventfilter ist richtig programmiert. +signal ev_reset_on: std_logic; -- '1' => events koennen den event timer auf Null setzen, vorausgesetzt das Eventfilter ist richtig programmiert. +signal clr_mil_rcv_err: std_logic; + +signal Mil_RCV_D: std_logic_vector(15 downto 0); +signal Mil_Cmd_Rcv: std_logic; +signal mil_trm_rdy: std_logic; +signal mil_rcv_rdy: std_logic; +signal mil_rcv_error: std_logic; + +signal clr_no_vw_cnt: std_logic; +signal no_vw_cnt: std_logic_vector(15 downto 0); + +signal clr_not_equal_cnt: std_logic; +signal not_equal_cnt: std_logic_vector(15 downto 0); + +signal ex_stall, ex_ack, ex_err, intr: std_logic; -- dummy + + +signal mil_trm_cmd: std_logic; +signal mil_trm_data: std_logic_vector(15 downto 0); + +signal mil_rd_start: std_logic; + +signal sw_clr_ev_timer: std_logic; +signal ev_clr_ev_timer: std_logic; +signal ev_timer: unsigned(31 downto 0); + +signal ena_led_count: std_logic; + +signal nSel_Mil_Drv: std_logic; + +signal wr_filt_ram: std_logic; +signal rd_filt_ram: std_logic; +signal stall_filter: std_logic; +signal filt_data_i: std_logic_vector(5 downto 0); +signal ev_fifo_ne: std_logic; +signal ev_fifo_full: std_logic; +signal rd_ev_fifo: std_logic; +signal clr_ev_fifo: std_logic; + +signal dly_timer: unsigned(24 downto 0); +signal ld_dly_timer: std_logic; +signal stall_dly_timer: std_logic; + +signal wait_timer: unsigned(23 downto 0); +signal clr_wait_timer: std_logic; + +signal ep_read_port: std_logic_vector(15 downto 0); --event processing read port + +signal timing_received: std_logic; + +signal ena_every_us: std_logic; + +signal db_interlock_intr: std_logic; +signal db_data_rdy_intr: std_logic; +signal db_data_req_intr: std_logic; + +signal dly_intr: std_logic; +signal every_ms: std_logic; + +signal lemo_inp: std_logic_vector (4 downto 1); +signal lemo_i_reg: std_logic_vector (4 downto 1); +signal lemo_dat: std_logic_vector (4 downto 1); +signal lemo_out_en: std_logic_vector (4 downto 1); +signal lemo_event_en: std_logic_vector (4 downto 1); + +signal io_1: std_logic; +signal io_2: std_logic; + +------------------------------------------------------------------- +signal tx_fifo_write_en: std_logic; +signal tx_fifo_wr_pulse: std_logic; +signal tx_fifo_data_in: std_logic_vector (16 downto 0); + +signal tx_fifo_read_en: std_logic; +signal tx_fifo_data_out: std_logic_vector (16 downto 0); + +signal tx_fifo_empty: std_logic; +signal tx_fifo_full: std_logic; + +signal tx_taskram_we: std_logic; +signal tx_taskram_re: std_logic; +signal tx_taskram_wr_a: std_logic_vector (7 downto 0); +signal tx_taskram_rd_a: std_logic_vector (7 downto 0); +signal tx_taskram_wr_d: std_logic_vector (15 downto 0); +signal tx_taskram_rd_d: std_logic_vector (15 downto 0); + +signal tx_req: std_logic_vector (255 downto 1); +signal tx_req_muxed: std_logic_vector ( 15 downto 0); +signal tx_task_ack: std_logic_vector (255 downto 1); + + +signal reset_6408: std_logic; + +signal rx_taskram_we: std_logic; +signal rx_taskram_re: std_logic; +signal rx_taskram_wr_a: std_logic_vector (7 downto 0); +signal rx_taskram_rd_a: std_logic_vector (7 downto 0); +signal rx_taskram_wr_d: std_logic_vector (15 downto 0); +signal rx_taskram_rd_d: std_logic_vector (15 downto 0); + +signal timeslot: integer RANGE 0 to ram_count; --timeslot 0 is for tx_fifo, 1..255 is for tx_taskram +signal set_rx_avail_ps: std_logic_vector (255 downto 1); +signal clr_rx_avail_ps: std_logic_vector (255 downto 1); + +signal avail: std_logic_vector (255 downto 1); +signal avail_muxed: std_logic_vector (15 downto 0); + +constant timeout_cntr_max: integer := 70; --max timeout 50 µs: TX Telegram + RX Telegram + 10µs Gap +signal timeout_cntr: integer := 0; +signal timeout_cntr_en: std_logic; +signal timeout_cntr_clr: std_logic; +signal slave_i_we_del: std_logic; +signal slave_i_stb_dly: std_logic; +signal slave_i_stb_dly2: std_logic; + +signal task_runs: std_logic; signal Rst_i: STD_LOGIC; + +signal mil_trm_start: std_logic; +signal mil_trm_start_dly: std_logic; +signal mil_trm_start_dly2: std_logic; + +signal mil_rd_start_latched: std_logic; +signal mil_rd_start_dly: std_logic; +signal mil_rd_start_dly2: std_logic; +signal mil_rd_start_dly3: std_logic; + +signal set_rx_err_ps: std_logic_vector (255 downto 1); +signal clr_rx_err_ps: std_logic_vector (255 downto 1); +signal rx_err: std_logic_vector (255 downto 0); +signal rx_err_muxed: std_logic_vector ( 15 downto 0); + +signal task_runs_del: std_logic; + +signal hw6408_rdy: std_logic; +signal hw6408_rdy_sync: std_logic; +----------------------------------------------------------------------- + +signal n_rst_mil_macro: std_logic; +signal ex_err_led: std_logic; +signal ex_stall_res: std_logic; +signal ex_ack_res: std_logic; +signal ex_err_res: std_logic; +signal n_modulreset: std_logic; signal modulreset: std_logic; signal tx_req_not_tx_fifo_empty : std_logic_vector(255 downto 0); +signal tx_req_led: std_logic; +signal rx_avail_led: std_logic; + +signal highest_prio_index: std_logic_vector(7 downto 0); +signal prio_index_valid: std_logic; + +function reverse_any_vector (a: in std_logic_vector) +return std_logic_vector is + variable result: std_logic_vector(a'RANGE); + alias aa: std_logic_vector(a'REVERSE_RANGE) is a; +begin + for i in aa'RANGE loop + result(i) := aa(i); + end loop; + return result; +end; -- function reverse_any_vector + + + +BEGIN + + +slave_o.rty <= '0'; +reset_6408 <= '0'; Rst_i <= not nRst_i; + +-- only for reset register access , the ext_xxx_res signals are valid, otherwise take regular ones + +p_mux_slave_o_ctrl: PROCESS (slave_i,ex_stall_res,ex_ack_res,ex_err_res,ex_stall,ex_ack,ex_err) +VARIABLE LA_a_var : UNSIGNED (slave_i_adr_max downto 2); +BEGIN + LA_a_var := UNSIGNED(slave_i.adr(slave_i_adr_max downto 2)); + IF (LA_a_var = wr_soft_reset_a_map) or n_modulreset = '0' THEN + slave_o.stall <= ex_stall_res; + slave_o.ack <= ex_ack_res; + slave_o.err <= ex_err_res; + ex_err_led <= ex_err_res; + ELSE + slave_o.stall <= ex_stall; + slave_o.ack <= ex_ack; + slave_o.err <= ex_err; + ex_err_led <= ex_err; + END IF; +END PROCESS p_mux_slave_o_ctrl; + + + +ena_led_cnt: div_n + GENERIC MAP ( + n => integer(real(clk_in_Hz) * 0.02), -- Vorgabe der Taktuntersetzung: 20 ms + diag_on => 0 -- diag_on = 1 die Breite des Untersetzungzaehlers mit assert .. note ausgegeben + ) + PORT MAP ( + res => '0', + clk => clk_i, + ena => open, -- das untersetzende enable muss in der gleichen Clockdomaene erzeugt werden. + -- ENA sollte nur ein Takt lang sein (z.B.durch eine weitere div_n-Instanz erzeugbar) + div_o => ena_led_count -- Wird nach Erreichen von n-1 fuer einen Takt aktiv. + ); + + +every_1ms_inst: div_n + GENERIC MAP ( + n => 1000, -- KK -- Vorgabe der Taktuntersetzung. 1ms = 0.001 = 1/1000 * ena_every_us (1000) + diag_on => 0 -- diag_on = 1 die Breite des Untersetzungzaehlers mit assert .. note ausgegeben + ) + PORT MAP ( + res => '0', + clk => clk_i, + ena => ena_every_us, -- das untersetzende enable muss in der gleichen Clockdomaene erzeugt werden. + -- ENA sollte nur ein Takt lang sein (z.B.durch eine weitere div_n-Instanz erzeugbar) + div_o => every_ms -- Wird nach Erreichen von n-1 fuer einen Takt aktiv. + ); + +every_ms_intr_o <= every_ms; + +-- LED Signal Stretcher + +led_rcv: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active. + CLK => clk_i, + Sig_In => Mil_Rcv_Rdy, -- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nLed_Mil_Rcv, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + + +led_trm: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active. + CLK => clk_i, + Sig_In => Sel_Mil_Drv, -- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nLed_Mil_Trm, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + + +led_err: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active. + CLK => clk_i, + Sig_In => Mil_Rcv_Error, -- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nLed_Mil_Err, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + +led_interl: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active. + CLK => clk_i, + Sig_In => db_interlock_intr,-- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nLed_Interl, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + +led_dry: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active. + CLK => clk_i, + Sig_In => db_data_rdy_intr,-- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nLed_dry, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + +led_drq: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active. + CLK => clk_i, + Sig_In => db_data_req_intr,-- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nLed_drq, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + + ); + +led_timing: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active. + CLK => clk_i, + Sig_In => timing_received, -- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nLed_Timing, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + + +lemo_nled_i: FOR i IN 1 TO 4 GENERATE + +lemo_nled_o_x: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- if you use ena for a reduction, signal should be generated from the same + -- clock domain and should be only one clock period active. + CLK => clk_i, + Sig_In => lemo_data_i(i), -- '1' holds "nLED" and "nLED_opdrn" on active zero. "Sig_in" changeing to '0' + -- "nLED" and "nLED_opdrn" change to inactive State after stretch_cnt clock periodes. + nLED => OPEN, -- Push-Pull output, active low, inactive high. + nLed_opdrn => lemo_nled_o(i) -- open drain output, active low, inactive tristate. + ); +end generate; + + + +sig_wb_err: led_n + GENERIC MAP ( + stretch_cnt => 6 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active. + CLK => clk_i, + Sig_In => ex_err_led, -- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nsig_wb_err, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + + + +led_fifo_ne: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active + CLK => clk_i, + Sig_In => ev_fifo_ne, -- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero. + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => nLed_Fifo_ne, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + + + -- Debouncer for Input Signals + + +p_deb_intl: debounce + GENERIC MAP ( + DB_Cnt => clk_in_hz / (1_000_000/ 2) -- "DB_Cnt" = fuer 2 us, debounce count gibt die Anzahl von Taktperioden vor, die das + -- Signal "DB_In" mindestens '1' oder '0' sein muss, damit der Ausgang DB_Out diesem Pegel folgt. + ) + PORT MAP ( + DB_In => Interlock_Intr_i, -- Das zu entprellende Signal + Reset => Rst_i, -- Asynchroner reset. Achtung der sollte nicht Stoerungsbehaftet sein. + Clk => clk_i, + DB_Out => db_interlock_intr -- Das entprellte Signal von "DB_In". + ); + +Interlock_Intr_o <= db_interlock_intr; + + +p_deb_drdy: debounce + GENERIC MAP ( + DB_Cnt => clk_in_hz / (1_000_000/ 2) -- "DB_Cnt" = fuer 2 us, debounce count gibt die Anzahl von Taktperioden vor, die das + -- Signal "DB_In" mindestens '1' oder '0' sein muss, damit der Ausgang + -- "DB_Out" diesem Pegel folgt. + ) + PORT MAP ( + DB_In => Data_Rdy_Intr_i, -- Das zu entprellende Signal + Reset => Rst_i, -- Asynchroner reset. Achtung der sollte nicht Stoerungsbehaftet sein. + Clk => clk_i, + DB_Out => db_data_rdy_intr -- Das entprellte Signal von "DB_In" + ); + +Data_Rdy_Intr_o <= db_data_rdy_intr; + + +p_deb_dreq: debounce + GENERIC MAP ( + DB_Cnt => clk_in_hz / (1_000_000/ 2) -- "DB_Cnt" = fuer 2 us, debounce count gibt die Anzahl von Taktperioden vor, die das + -- Signal "DB_In" mindestens '1' oder '0' sein muss, damit der Ausgang + -- "DB_Out" diesem Pegel folgt. + ) + PORT MAP ( + DB_In => Data_Req_Intr_i, -- Das zu entprellende Signal + Reset => Rst_i, -- Asynchroner reset. Achtung der sollte nicht Stoerungsbehaftet sein. + Clk => clk_i, + DB_Out => db_data_req_intr -- Das entprellte Signal von "DB_In". + ); + +Data_Req_Intr_o <= db_data_req_intr; + +p_deb_lemo_i: FOR I IN 1 TO 4 GENERATE +p_deb_lemo_x: debounce + GENERIC MAP ( + DB_Cnt => clk_in_hz / (1_000_000/ 2) -- "DB_Cnt" = fuer 2 us, DB_Cnt gibt die Zahl der Takte vor, die das + -- Signal "DB_In" mindestens '1' oder '0' sein muss,damit "DB_Out" diesem Pegel folgt. + ) + PORT MAP ( + DB_In => lemo_data_i(i), -- Das zu entprellende Signal + Reset => Rst_i, -- Asynchroner reset. Achtung der sollte nicht Stoerungsbehaftet sein. + Clk => clk_i, + DB_Out => lemo_inp(i) -- Das entprellte Signal von "DB_In". + ); +END GENERATE; + + + + + +Mil_1: mil_hw_or_soft_ip + GENERIC MAP ( + Clk_in_Hz => Clk_in_Hz -- Um die Flanken des Manchester-Datenstroms von 1Mb/s genau genug ausmessen zu koennen + -- (kuerzester Flankenabstand 500 ns), muss das Makro mit mindestens 20 Mhz getaktet werden. + -- Die tatsaechlich angelegte Frequenz, muss vor der Synthese in "CLK_in_Hz" in Hz definiert sein. + ) + PORT MAP ( + -- encoder (transmitter) signals of HD6408 -------------------------------------------------------------------------------- + nME_BZO => nME_BZO, -- in: HD6408-output: transmit bipolar positive. + nME_BOO => nME_BOO, -- in: HD6408-output: transmit bipolar negative. + + ME_SD => ME_SD, -- in: HD6408-output: '1' => send data is active. + ME_ESC => ME_ESC, -- in: HD6408-output: encoder shift clock for shifting data into the encoder. The, + -- encoder samples ME_SDI on low-to-high transition of ME_ESC. + ME_SDI => ME_SDI, -- out: HD6408-input: serial data in accepts a serial data stream at a data rate + -- equal to encoder shift clock. + ME_EE => ME_EE, -- out: HD6408-input: a high on encoder enable initiates the encode cycle. + -- (Subject to the preceding cycle being completed). + ME_SS => ME_SS, -- out: HD6408-input: sync select actuates a Command sync for an input high + -- and data sync for an input low. + Reset_Puls => modulreset, + + -- decoder (receiver) signals of HD6408 --------------------------------------------------------------------------------- + ME_BOI => ME_BOI, -- out: HD6408-input: A high input should be applied to bipolar one in when the bus is in its + -- positive state, this pin must be held low when the Unipolar input is used. + ME_BZI => ME_BZI, -- out: HD6408-input: A high input should be applied to bipolar zero in when the bus is in its + -- negative state. This pin must be held high when the Unipolar input is used. + ME_UDI => ME_UDI, -- out: HD6408-input: With ME_BZI high and ME_BOI low, this pin enters unipolar data in to the + -- transition finder circuit. If not used this input must be held low. + ME_CDS => ME_CDS, -- in: HD6408-output: high occurs during output of decoded data which was preced + -- by a command synchronizing character. Low indicares a data sync. + ME_SDO => ME_SDO, -- in: HD6408-output: serial data out delivers received data in correct NRZ format. + ME_DSC => ME_DSC, -- in: HD6408-output: decoder shift clock delivers a frequency (decoder clock : 12), + -- synchronized by the recovered serial data stream. + ME_VW => ME_VW, -- in: HD6408-output: high indicates receipt of a VALID WORD. + ME_TD => ME_TD, -- in: HD6408-output: take data is high during receipt of data after identification + -- of a sync pulse and two valid Manchester data bits + Clk => clk_i, + Rd_Mil => mil_rd_start_latched, + Mil_RCV_D => Mil_RCV_D, + Mil_In_Pos => Mil_BOI, + Mil_In_Neg => Mil_BZI, + Mil_Cmd => mil_trm_cmd, + Wr_Mil => mil_trm_start_dly2, + Mil_TRM_D => mil_trm_data, + EPLD_Manchester_Enc => manchester_fpga, + Reset_6408 => Reset_6408, + Mil_Trm_Rdy => mil_trm_rdy, + nSel_Mil_Drv => nSel_Mil_Drv, + nSel_Mil_Rcv => nSel_Mil_Rcv, + nMil_Out_Pos => Mil_nBOO, + nMil_Out_Neg => Mil_nBZO, + Mil_Cmd_Rcv => Mil_Cmd_Rcv, + Mil_Rcv_Rdy => Mil_Rcv_Rdy, + Mil_Rcv_Err => Mil_Rcv_Error, + No_VW_Cnt => no_vw_cnt, -- Bit[15..8] Fehlerzaehler fuer No Valid Word des positiven Decoders "No_VW_p", + -- Bit[7..0] Fehlerzaehler fuer No Valid Word des negativen Decoders "No_VM_n" + Clr_No_VW_Cnt => clr_no_vw_cnt, -- Loescht die no valid word Fehler-Zaehler des positiven und negativen Dekoders. + -- Muss synchron zur Clock 'Clk' und mindesten eine Periode lang aktiv sein! + Not_Equal_Cnt => not_equal_cnt, -- Bit[15..8] Fehlerzaehler fuer Data_not_equal, + -- Bit[7..0] Fehlerzaehler fuer unterschiedliche Komando-Daten-Kennung (CMD_not_equal). + Clr_Not_Equal_Cnt => clr_not_equal_cnt, -- Loescht die Fehlerzaehler fuer Data_not_equal und den Fehlerzaehler fuer unterschiedliche + -- Komando-Daten-Kennung (CMD_not_equal). + -- Muss synchron zur Clock 'Clk' und mindesten eine Periode lang aktiv sein! + error_limit_reached => error_limit_reached, + Mil_Decoder_Diag_p => Mil_Decoder_Diag_p, + Mil_Decoder_Diag_n => Mil_Decoder_Diag_n, + clr_mil_rcv_err => clr_mil_rcv_err, + hw6408_rdy => hw6408_rdy + ); + +Sel_Mil_Drv <= not nSel_Mil_Drv; + + +event_processing_1: event_processing + generic map ( + clk_in_hz => Clk_in_Hz -- Um die Flanken des Manchester-Datenstroms von 1Mb/s genau genug ausmessen zu koennen + -- (kuerzester Flankenabstand 500 ns), muss das Makro mit mindestens 20 Mhz getaktet werden. + ) + port map ( + ev_filt_12_8b => ev_filt_12_8b, + ev_filt_on => ev_filt_on, + ev_reset_on => ev_reset_on, + puls1_frame => puls1_frame, + puls2_frame => puls2_frame, + timing_i => timing, + clk_i => clk_i, + nRst_i => n_modulreset, + wr_filt_ram => wr_filt_ram, + rd_filt_ram => rd_filt_ram, + rd_ev_fifo => rd_ev_fifo, + clr_ev_fifo => clr_ev_fifo, + filt_addr => slave_i.adr(11+2 DOWNTO 2), + filt_data_i => slave_i.dat(filter_data_width-1 DOWNTO 0), + stall_o => stall_filter, + read_port_o => ep_read_port, + ev_fifo_ne => ev_fifo_ne, + ev_fifo_full => ev_fifo_full, + ev_timer_res => ev_clr_ev_timer, + ev_puls1 => io_1, + ev_puls2 => io_2, + timing_received => timing_received + ); + +ev_fifo_ne_intr_o <= ev_fifo_ne; + +------------------------------------------------------------------------------------------------------------------------------ +-- SW controlled reset mode (For in-depth reset of the wb_mil_scu macro and sub_blocks) +-- +-- All LEDs, delay and event timer and the Dividers e.g. ena_every_us are not in the scope of the SW Modul Reset +-- All other Registers and processes can be influenced by the SW Modul Reset + +-- As long as the n_rst_mil_macro is "0" only the mil macro reset register is accessible. +-- As long as the n_rst_mil_macro is "0" other registers responds with etherbone error. +-- n_rst_mil_macro bit is "1" after Power-on-Reset. +-- After set by SW, it needs to be cleared by SW too after a sufficient reset time depending on faulty devbus telegrams on the fly +-- Reset time should be more than 70µs for telegrams as invoked TX_Task Registers. +-- Reset time for Beam Diagnosis Mode depends on Burst length defined for the Beam Diagnosis job given before. +------------------------------------------------------------------------------------------------------------------------------ + +p_reset_reg: PROCESS (clk_i, nrst_i, slave_i) -- reset register needs a own process, which not depends on n_modulreset +VARIABLE LA_a_var : UNSIGNED (slave_i_adr_max downto 2); +BEGIN + LA_a_var := UNSIGNED(slave_i.adr(slave_i_adr_max downto 2)); -- variables evaluated at each clk edge + + IF nrst_i = '0' THEN + + n_rst_mil_macro <= '1'; + + ex_stall_res <= '1'; + ex_ack_res <= '0'; + ex_err_res <= '0'; + n_modulreset <= '0'; -- on powerup depending on nrst_i + + ELSIF RISING_EDGE(clk_i) THEN + ex_stall_res <= '1'; + ex_ack_res <= '0'; + ex_err_res <= '0'; + n_modulreset <= n_rst_mil_macro; -- otherwise dependig on register bit + + IF slave_i.cyc = '1' AND slave_i.stb = '1' AND ex_stall_res = '1' THEN -- begin of wishbone cycle + IF (LA_a_var = wr_soft_reset_a_map) THEN + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- set_reset_flag + n_rst_mil_macro <= slave_i.dat(0); + ex_stall_res <= '0'; + ex_ack_res <= '1'; + else + ex_stall_res <= '0'; + ex_err_res <= '1'; + end if; + else + -- access to high word or unaligned word is not allowed + ex_stall_res <= '0'; + ex_err_res <= '1'; + end if; --slave_i.sel + ELSE + ex_stall_res <= '0'; + ex_err_res <= '1'; + END IF; --LA_a_var + END IF;--slave_i.cyc + END IF;--clocked_process + + +END PROCESS p_reset_reg; + + + + +------------------------------------------------------------------------------------------------------------------------------ +-- tx_taskreg ram must be a DP RAM (decoupling write and read) +-- If written with a task, a trm_req bit is set on trm_req vector. trm_req is cleared after completing a task. +-- trm_req may not be visible by SW, because DevBus may be faster than SW routines. +-- trm_req bits (0..255 max) are separate reg bits for controling them separately. + +-- 1-Hot Scheduler FSM scans all trm_req bits robin-round and provides related RAM content. +-- If trm_req bit is set, according tx_taskram content is sent as CMD Telegram and DevBus answer is awaited (Timeout Cntr starting as well) + +-- DevBus answer is stored in rx_taskreg RAM and rx_avail bit is set in rx_avail vector +-- If received telegram was faulty or a time-out, a related rx_err bit is set too +-- When rx_taskram data is read , related rx_avail and rx_err bits are cleared. +------------------------------------------------------------------------------------------------------------------------------ + +tx_taskram : generic_simple_dpram + GENERIC MAP( + g_data_width => 16, + g_size => 256, + g_with_byte_enable => false, + g_addr_conflict_resolution => "write_first", + g_dual_clock => false + ) + PORT MAP( + rst_n_i => n_modulreset, + clka_i => clk_i, + wea_i => tx_taskram_we, + aa_i => tx_taskram_wr_a, + da_i => tx_taskram_wr_d, + clkb_i => clk_i, + ab_i => tx_taskram_rd_a, + qb_o => tx_taskram_rd_d + ); + +--Usage "simple dualport ram" SCU Bus Port is r/w, DevBus Port is r/o +-- wr and rd on same address --> new wr data appears 1 clock later on qb_o +--Preference is resolved by SW : +-- SW writes only when tx_req bit not set (SW must not wr 2 times for same task) +-- Scheduler reads tx_ram cell only when tx_req bit is set +-- DPRAM write has preference -- no valid SCU Bus write will be lost + + + +rx_taskram : generic_simple_dpram + GENERIC MAP( + g_data_width => 16, + g_size => 256, + g_with_byte_enable => false, + g_addr_conflict_resolution => "write_first", + g_dual_clock => false) + PORT MAP( + rst_n_i => n_modulreset, + clka_i => clk_i, + wea_i => rx_taskram_we, + aa_i => rx_taskram_wr_a, + da_i => rx_taskram_wr_d, + clkb_i => clk_i, + ab_i => rx_taskram_rd_a, + qb_o => rx_taskram_rd_d + ); + + +------------------------------------------------------------------------------------------------------------------------------ +tx_fifo : generic_sync_fifo + GENERIC MAP( + g_data_width => 17, + g_size => 1024 + ) + PORT MAP( + clk_i => clk_i, + rst_n_i => n_modulreset, + we_i => tx_fifo_write_en, + d_i => tx_fifo_data_in, + rd_i => tx_fifo_read_en, + q_o => tx_fifo_data_out, + empty_o => tx_fifo_empty, + full_o => tx_fifo_full + ); + + +commonclockedlogic_p : PROCESS (clk_i, n_modulreset) +BEGIN + IF n_modulreset = '0' THEN + + timeout_cntr <= 0 ; + slave_i_stb_dly <= '0'; + slave_i_stb_dly2 <= '0'; + + slave_i_we_del <= '0'; + mil_trm_start_dly <= '0'; + mil_trm_start_dly2 <= '0'; + mil_rd_start_latched <= '0'; + mil_rd_start_dly <= '0'; + mil_rd_start_dly2 <= '0'; + mil_rd_start_dly3 <= '0'; + + task_runs_del <= '0'; + + hw6408_rdy_sync <= '0'; + + ELSIF rising_edge (clk_i) THEN + + IF timeout_cntr_clr= '1' then + timeout_cntr <= 0; + ELSIF timeout_cntr_en = '1' AND ena_every_us='1' THEN + timeout_cntr <= timeout_cntr + 1; + ELSE + NULL; + END IF; + + IF mil_rd_start='1' THEN -- min 1 dsc pulse make hd6408 happy for reset of mil_rcv_rdy + mil_rd_start_latched <= mil_rd_start; + ELSIF mil_rd_start_dly2='1' AND mil_rd_start_dly3='1' THEN + mil_rd_start_latched <= '0'; + END IF; + + IF ena_every_us='1' THEN + mil_rd_start_dly <= mil_rd_start_latched; + mil_rd_start_dly2 <= mil_rd_start_dly; + mil_rd_start_dly3 <= mil_rd_start_dly2; + END IF; + + hw6408_rdy_sync <= hw6408_rdy; + slave_i_stb_dly <= slave_i.stb and slave_i.cyc; + slave_i_stb_dly2 <= slave_i_stb_dly; + slave_i_we_del <= slave_i.we; + mil_trm_start_dly <= mil_trm_start; + mil_trm_start_dly2 <= mil_trm_start_dly; + + task_runs_del <= task_runs; + + END IF; +END PROCESS commonclockedlogic_p; + + +-- This registered mux fetches data from TX_FIFO or TX_TASKRAM for DevBus Transmission +-- On Scheduler Timeslot 0 data is got from TX_FIFO +-- On Scheduler Timeslot 1....254 data is got from TX_TaskRam +-- Therefore TX_TaskRAM Address is calculated from Timeslot pointer +-- TX_TaskRAM Read Address must not be applied when Avail bit isn't set +-- This is done to keep TX_TaskRAM ready for new writes from SCU Bus. + + +schedule_mux : PROCESS (clk_i, n_modulreset) +BEGIN + IF n_modulreset = '0' THEN + mil_trm_data <= (others =>'0'); + mil_trm_cmd <= '0'; + tx_taskram_rd_a <= (others =>'0'); + tx_taskram_re <= '0'; + tx_fifo_read_en <= '0'; + ELSIF rising_edge (clk_i) THEN + tx_taskram_re <= '0'; + tx_taskram_rd_a <= (others =>'0'); + tx_fifo_read_en <= '0'; + + IF timeslot = 0 THEN + mil_trm_data <= tx_fifo_data_out(15 DOWNTO 0); + mil_trm_cmd <= tx_fifo_data_out(16); -- tx_fifo cmd or data telegram depends on upper bit + tx_fifo_read_en <= mil_trm_start AND NOT mil_trm_start_dly; -- only one pulse to pop fifo, mil_trm_start_dly used for start transmission + + ELSIF ((timeslot >= 1) AND (timeslot <= ram_count )) THEN + mil_trm_cmd <= '1'; -- tx_taskram sents only cmd telegrams + mil_trm_data <= tx_taskram_rd_d(15 DOWNTO 0); + + IF tx_req (timeslot) = '1' THEN + tx_taskram_rd_a <= std_logic_vector (to_unsigned (timeslot, 8)) ; + tx_taskram_re <= '1'; + end if; + + ELSE + mil_trm_data <= (others =>'0'); + END IF; + END IF;--clk_i + +END PROCESS schedule_mux; + +tx_req_not_tx_fifo_empty <= tx_req & not tx_fifo_empty; + modulreset<=not n_modulreset; +prio_enc: prio_encoder_256_8 +port map ( + input => tx_req_not_tx_fifo_empty, + index => highest_prio_index, + valid => prio_index_valid +); + +schedule_p : PROCESS (clk_i, n_modulreset) +BEGIN + IF n_modulreset = '0' THEN + timeslot <= 0 ; + task_runs <= '0'; + + timeout_cntr_en <= '0'; + timeout_cntr_clr <= '0'; + + mil_rd_start <= '0'; + mil_trm_start <= '0'; + + rx_taskram_we <= '0'; + rx_taskram_wr_d <= (OTHERS => '0'); + rx_taskram_wr_a <= (OTHERS => '0'); + + set_rx_avail_ps <= (OTHERS => '0'); + set_rx_err_ps <= (OTHERS => '0'); + ELSIF rising_edge (clk_i) THEN + -- these 6 register are only high for one pulse + mil_trm_start <= '0'; + mil_rd_start <= '0'; + tx_task_ack <= (OTHERS => '0'); + set_rx_avail_ps <= (OTHERS => '0'); + set_rx_err_ps <= (OTHERS => '0'); + timeout_cntr_clr <= '0'; + rx_taskram_we <= '0'; + -----------------------------------------Timeslot 0 TX_FIFO-------------------------------------------------------------------------------- + IF timeslot= 0 then --Empty whole TX_FIFO on timeslot 0 + + IF tx_fifo_empty='1' AND task_runs='0' THEN --skip if there is nothing to do or fifo task finished + --timeslot <= timeslot + 1 ; + if prio_index_valid = '1' then + timeslot <= to_integer(unsigned(highest_prio_index)); + end if; + timeout_cntr_en <= '0'; + timeout_cntr_clr <= '1'; + task_runs <= '0'; + ELSIF tx_fifo_empty='0' AND mil_trm_rdy = '1' THEN --perform fifo task + mil_trm_start <= '1'; + task_runs <= '1'; + timeout_cntr_en <= '1'; + timeout_cntr_clr <= '1'; + ELSIF tx_fifo_empty='1' AND mil_trm_rdy = '1' AND timeout_cntr=22 THEN --wait for last telegram before exit todo: maybe 21 is ok too + mil_trm_start <= '0'; + task_runs <= '0'; + timeout_cntr_en <= '0'; + timeout_cntr_clr <= '1'; + ELSE + NULL; + END IF; + --------------------------------------------Timeslot 1...254 TX_TaskRam---------------------------------------------------------------------- + ELSIF ((timeslot >= 1) AND (timeslot <= ram_count )) THEN --If not Timeslot 0: Do all taskram slots one after another + --Timeslot 255 reserved for "Beam Transmission Mode" + IF tx_req(timeslot)='0' and task_runs_del='0' then --proceed with scheduler on no task and no request + + IF timeslot < ram_count THEN + --timeslot <= timeslot +1; --jump to next timeslot(or to 0) + if prio_index_valid = '1' then + timeslot <= to_integer(unsigned(highest_prio_index)); + end if; + ELSE + timeslot <= 0; + END IF; + + ELSIF tx_req(timeslot) = '1' or task_runs = '1' THEN --check for taskrequest or running task + + IF mil_trm_rdy = '1' AND task_runs_del = '0' and Mil_Rcv_Rdy = '0' THEN --Case: No Task is running, but transmitter is ready + mil_trm_start <= '1'; -- or pulse for tx start and timeout_cntr + timeout_cntr_en <= '1'; + task_runs <= '1'; + + ELSIF task_runs = '1' THEN --Case Transmitter is already running + + IF timeout_cntr = timeout_cntr_max OR Mil_Rcv_Rdy = '1' THEN --wait 20µs for tx, 20 for rx and 15 for gap + --IF timeslot < ram_count THEN + -- timeslot <= timeslot +1; --jump to next timeslot(or to 0) + --ELSE + -- timeslot <= 0; + --END IF; + tx_task_ack(timeslot) <= '1'; --pulse to clear tx_req, needs 2 clocks to get effective + task_runs <= '0'; + set_rx_avail_ps(timeslot) <= '1'; --todo maybe wait until slave_i.stb=0 + timeout_cntr_en <= '0'; --stop and reset timeout_cntr for next use + timeout_cntr_clr <= '1'; + IF MIL_Rcv_Rdy = '1' AND Mil_Rcv_Error = '0' THEN --prepare data output + rx_taskram_wr_d <= MIL_RCV_D; + rx_taskram_wr_a <= std_logic_vector (to_unsigned ((timeslot), 8)) ; --ram adr from 0..255 , timeslot from 0..255 (0=fifo ts) + rx_taskram_we <= '1'; + set_rx_err_ps(timeslot) <= '0'; + mil_rd_start <= '1'; --to bring hd6408 fsm back to idle + ELSIF MIL_Rcv_Rdy = '1' AND Mil_Rcv_Error = '1' THEN --this case handles hd6408 parity error + rx_taskram_wr_d <= x"beef"; + rx_taskram_wr_a <= std_logic_vector (to_unsigned ((timeslot), 8)) ; + rx_taskram_we <= '1'; + set_rx_err_ps(timeslot) <= '1'; --set rx_err bit + mil_rd_start <= '1'; --to bring hd6408 fsm back to idle + ELSIF timeout_cntr = timeout_cntr_max THEN --this case handles telegram receive timeout + rx_taskram_wr_d <= x"babe"; + rx_taskram_wr_a <= std_logic_vector (to_unsigned ((timeslot), 8)) ; + rx_taskram_we <= '1'; + set_rx_err_ps(timeslot) <= '1'; + mil_rd_start <= '1'; --if a telegram arrives long time later, there is no chance to bring hd6408 fsm back to + --idle condition with behalf of mil_rd_start + ELSE --this case should never be reached + rx_taskram_wr_d <= x"dead"; + rx_taskram_wr_a <= std_logic_vector (to_unsigned ((timeslot), 8)) ; + set_rx_err_ps(timeslot) <= '1'; + rx_taskram_we <= '1'; + END IF;--MIL_Rcv_Rdy + ELSE + NULL; -- wait for timeout or rx data + END IF;--End Case:timeout_cntr=55 or mil_rcv_rdy='1' + + END IF; -- End Case:mil_trm_rdy=1 or Task_runs=1 + + + ELSE + NULL; + END IF; -- tx_req and task_runs + -----------------------------------------------------This ELSE should never be reached--------------------------------------------------------------------------- + ELSE + null; + END IF; -- all timeslots + + END IF;--clocked process +END PROCESS schedule_p; + + +----------------------------------------------------------------------------------------------------- + +-- 254 tx_taskregs are implemented as sychronous ram +-- write is done by a single slave_i.wr pulse on access in ram address range +-- Avail/Err/Req Bits (0..254) are kept as registers due they need to be selective resetable (the sram isn't) + +avail_muxer: PROCESS (avail,slave_i.adr) +VARIABLE LA_a_var : UNSIGNED (slave_i_adr_max DOWNTO 2); +BEGIN + LA_a_var := UNSIGNED(slave_i.adr(slave_i_adr_max DOWNTO 2)); + + IF ( LA_a_var >= rd_status_avail_first_adr) and (LA_a_var <= rd_status_avail_last_adr ) THEN + + IF LA_a_var = (rd_status_avail_first_adr ) THEN avail_muxed <= avail ( 15 DOWNTO 1) & '0'; + ELSIF LA_a_var = (rd_status_avail_first_adr + 1 ) THEN avail_muxed <= avail ( 31 DOWNTO 16); + ELSIF LA_a_var = (rd_status_avail_first_adr + 2 ) THEN avail_muxed <= avail ( 47 DOWNTO 32); + ELSIF LA_a_var = (rd_status_avail_first_adr + 3 ) THEN avail_muxed <= avail ( 63 DOWNTO 48); + ELSIF LA_a_var = (rd_status_avail_first_adr + 4 ) THEN avail_muxed <= avail ( 79 DOWNTO 64); + ELSIF LA_a_var = (rd_status_avail_first_adr + 5 ) THEN avail_muxed <= avail ( 95 DOWNTO 80); + ELSIF LA_a_var = (rd_status_avail_first_adr + 6 ) THEN avail_muxed <= avail (111 DOWNTO 96); + ELSIF LA_a_var = (rd_status_avail_first_adr + 7 ) THEN avail_muxed <= avail (127 DOWNTO 112); + ELSIF LA_a_var = (rd_status_avail_first_adr + 8 ) THEN avail_muxed <= avail (143 DOWNTO 128); + ELSIF LA_a_var = (rd_status_avail_first_adr + 9 ) THEN avail_muxed <= avail (159 DOWNTO 144); + ELSIF LA_a_var = (rd_status_avail_first_adr + 10 ) THEN avail_muxed <= avail (175 DOWNTO 160); + ELSIF LA_a_var = (rd_status_avail_first_adr + 11 ) THEN avail_muxed <= avail (191 DOWNTO 176); + ELSIF LA_a_var = (rd_status_avail_first_adr + 12 ) THEN avail_muxed <= avail (207 DOWNTO 192); + ELSIF LA_a_var = (rd_status_avail_first_adr + 13 ) THEN avail_muxed <= avail (223 DOWNTO 208); + ELSIF LA_a_var = (rd_status_avail_first_adr + 14 ) THEN avail_muxed <= avail (239 DOWNTO 224); + ELSIF LA_a_var = (rd_status_avail_first_adr + 15 ) THEN avail_muxed <= '0'& avail (254 DOWNTO 240); + ELSE + avail_muxed <= x"beef"; -- other addresses out of range + END IF; + ELSE + avail_muxed <= x"dead"; -- other addresses out of range + END IF; + +END PROCESS avail_muxer; + + + +rx_err_muxer: PROCESS (rx_err,slave_i.adr) +VARIABLE LA_a_var : UNSIGNED (slave_i_adr_max DOWNTO 2); +BEGIN + LA_a_var := UNSIGNED(slave_i.adr(slave_i_adr_max DOWNTO 2)); + IF ( LA_a_var >= rd_rx_err_first_adr) and (LA_a_var <= rd_rx_err_last_adr ) THEN + + IF LA_a_var = (rd_rx_err_first_adr ) THEN rx_err_muxed <= rx_err( 15 DOWNTO 1) & '0'; + ELSIF LA_a_var = (rd_rx_err_first_adr + 1 ) THEN rx_err_muxed <= rx_err( 31 DOWNTO 16); + ELSIF LA_a_var = (rd_rx_err_first_adr + 2 ) THEN rx_err_muxed <= rx_err( 47 DOWNTO 32); + ELSIF LA_a_var = (rd_rx_err_first_adr + 3 ) THEN rx_err_muxed <= rx_err( 63 DOWNTO 48); + ELSIF LA_a_var = (rd_rx_err_first_adr + 4 ) THEN rx_err_muxed <= rx_err( 79 DOWNTO 64); + ELSIF LA_a_var = (rd_rx_err_first_adr + 5 ) THEN rx_err_muxed <= rx_err( 95 DOWNTO 80); + ELSIF LA_a_var = (rd_rx_err_first_adr + 6 ) THEN rx_err_muxed <= rx_err(111 DOWNTO 96); + ELSIF LA_a_var = (rd_rx_err_first_adr + 7 ) THEN rx_err_muxed <= rx_err(127 DOWNTO 112); + ELSIF LA_a_var = (rd_rx_err_first_adr + 8 ) THEN rx_err_muxed <= rx_err(143 DOWNTO 128); + ELSIF LA_a_var = (rd_rx_err_first_adr + 9 ) THEN rx_err_muxed <= rx_err(159 DOWNTO 144); + ELSIF LA_a_var = (rd_rx_err_first_adr + 10 ) THEN rx_err_muxed <= rx_err(175 DOWNTO 160); + ELSIF LA_a_var = (rd_rx_err_first_adr + 11 ) THEN rx_err_muxed <= rx_err(191 DOWNTO 176); + ELSIF LA_a_var = (rd_rx_err_first_adr + 12 ) THEN rx_err_muxed <= rx_err(207 DOWNTO 192); + ELSIF LA_a_var = (rd_rx_err_first_adr + 13 ) THEN rx_err_muxed <= rx_err(223 DOWNTO 208); + ELSIF LA_a_var = (rd_rx_err_first_adr + 14 ) THEN rx_err_muxed <= rx_err(239 DOWNTO 224); + ELSIF LA_a_var = (rd_rx_err_first_adr + 15 ) THEN rx_err_muxed <= '0'& rx_err(254 DOWNTO 240); + ELSE + rx_err_muxed <= x"beef"; -- other addresses out of range + END IF; + ELSE + rx_err_muxed <= x"dead"; -- other addresses out of range + END IF; + +END PROCESS rx_err_muxer; + + + +tx_req_muxer: PROCESS (tx_req,slave_i.adr) +VARIABLE LA_a_var : UNSIGNED (slave_i_adr_max DOWNTO 2); +BEGIN + LA_a_var := UNSIGNED(slave_i.adr(slave_i_adr_max DOWNTO 2)); + IF ( LA_a_var >= tx_ram_req_first_adr) and (LA_a_var <= tx_ram_req_last_adr ) THEN + + IF LA_a_var = (tx_ram_req_first_adr ) THEN tx_req_muxed <= tx_req( 15 DOWNTO 1) & '0'; + ELSIF LA_a_var = (tx_ram_req_first_adr + 1 ) THEN tx_req_muxed <= tx_req( 31 DOWNTO 16); + ELSIF LA_a_var = (tx_ram_req_first_adr + 2 ) THEN tx_req_muxed <= tx_req( 47 DOWNTO 32); + ELSIF LA_a_var = (tx_ram_req_first_adr + 3 ) THEN tx_req_muxed <= tx_req( 63 DOWNTO 48); + ELSIF LA_a_var = (tx_ram_req_first_adr + 4 ) THEN tx_req_muxed <= tx_req( 79 DOWNTO 64); + ELSIF LA_a_var = (tx_ram_req_first_adr + 5 ) THEN tx_req_muxed <= tx_req( 95 DOWNTO 80); + ELSIF LA_a_var = (tx_ram_req_first_adr + 6 ) THEN tx_req_muxed <= tx_req(111 DOWNTO 96); + ELSIF LA_a_var = (tx_ram_req_first_adr + 7 ) THEN tx_req_muxed <= tx_req(127 DOWNTO 112); + ELSIF LA_a_var = (tx_ram_req_first_adr + 8 ) THEN tx_req_muxed <= tx_req(143 DOWNTO 128); + ELSIF LA_a_var = (tx_ram_req_first_adr + 9 ) THEN tx_req_muxed <= tx_req(159 DOWNTO 144); + ELSIF LA_a_var = (tx_ram_req_first_adr + 10 ) THEN tx_req_muxed <= tx_req(175 DOWNTO 160); + ELSIF LA_a_var = (tx_ram_req_first_adr + 11 ) THEN tx_req_muxed <= tx_req(191 DOWNTO 176); + ELSIF LA_a_var = (tx_ram_req_first_adr + 12 ) THEN tx_req_muxed <= tx_req(207 DOWNTO 192); + ELSIF LA_a_var = (tx_ram_req_first_adr + 13 ) THEN tx_req_muxed <= tx_req(223 DOWNTO 208); + ELSIF LA_a_var = (tx_ram_req_first_adr + 14 ) THEN tx_req_muxed <= tx_req(239 DOWNTO 224); + ELSIF LA_a_var = (tx_ram_req_first_adr + 15 ) THEN tx_req_muxed <= '0' & tx_req(254 DOWNTO 240); + ELSE + tx_req_muxed <= x"beef"; -- other addresses out of range + END IF; + ELSE + tx_req_muxed <= x"dead"; -- other addresses out of range + END IF; + +END PROCESS tx_req_muxer; +----------------------------------------------------------------------------------------------------- +large_or:PROCESS (tx_req,avail) +BEGIN + + IF tx_req = (tx_req'RANGE => '0') THEN + tx_req_led <= '0'; --no req set, led keeps inactive + ELSE + tx_req_led <= '1'; + END IF; + + IF avail = (avail'RANGE => '0') THEN + rx_avail_led <= '0'; --no avail set, led keeps inactive + ELSE + rx_avail_led <= '1'; + END IF; + +END PROCESS large_or; + + +i_tx_req_led: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active + CLK => clk_i, + Sig_In => tx_req_led, -- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero. + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => n_tx_req_led, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + +i_rx_avail_led: led_n + GENERIC MAP ( + stretch_cnt => 4 + ) + PORT MAP ( + ena => ena_led_count, -- ENA (generated by same clock domain) is for one clock period active + CLK => clk_i, + Sig_In => rx_avail_led, -- SigIn='1' holds "nLED" and "nLED_opdrn" on active zero. + -- Outputs nLED and nLED_opdrn are change to inactive state after "stretch_cnt" clock periodes. + nLED => n_rx_avail_led, -- changed from opendrain to pushpull due to LED Selftest KK 20151015 + nLed_opdrn => OPEN + ); + + +----------------------------------------------------------------------------------------------------- +-- Next Process controls WB Interface +-- Special Treatment for TX Fifo +-- SCU write access is shortened to a single pulse action +-- Address bit 2 is signalling if Access is a Data or a CMD word +-- Special Treatment for TX_TaskRam +-- When written, the tx_req bit is set in the same moment +-- Write accesses to a cell, which has a tx_req bit already set, is not allowed +-- Special Treatment for RX_TaskRam +-- When read, the rx_err and rx_avail bits are cleared +-- Other Registers are implemented straight-forward +-- When Harris chip isn't operational, there maybe no mil piggy. +-- --> therefore no register accesses to MIL Option allowed due to hw6408_rdy_sync='0' +-- --> as a consequence, TX_FIFO will not get be filled, TX_TASKRAM wont be activated +-- --> when both are inactive, scheduler will run in idle mode. + + +p_regs_acc: PROCESS (clk_i, n_modulreset, slave_i) +VARIABLE LA_a_var : UNSIGNED (slave_i_adr_max downto 2); +BEGIN + LA_a_var := UNSIGNED(slave_i.adr(slave_i_adr_max downto 2)); -- variables evaluated at each clk edge + + IF n_modulreset = '0' THEN + ex_stall <= '1'; + ex_ack <= '0'; + ex_err <= '0'; + + manchester_fpga <= '0'; + ev_filt_12_8b <= '0'; + ev_filt_on <= '0'; + debounce_on <= '1'; + puls2_frame <= '0'; + puls1_frame <= '0'; + ev_reset_on <= '0'; + clr_mil_rcv_err <= '1'; + + + rd_ev_fifo <= '0'; + clr_ev_fifo <= '1'; + wr_filt_ram <= '0'; + rd_filt_ram <= '0'; + sw_clr_ev_timer <= '1'; + ld_dly_timer <= '0'; + clr_wait_timer <= '1'; + lemo_out_en <= (others => '0'); + lemo_dat <= (others => '0'); + lemo_i_reg <= (others => '0'); + avail <= (others => '0'); + rx_err <= (others => '0'); + + clr_rx_avail_ps <= (others => '0'); + clr_rx_err_ps <= (others => '0'); + tx_req <= (others => '0'); + tx_taskram_we <= '0'; + rx_taskram_re <= '0'; + + ELSIF RISING_EDGE(clk_i) THEN + + ex_stall <= '1'; + ex_ack <= '0'; + ex_err <= '0'; + + rd_ev_fifo <= '0'; + clr_ev_fifo <= '0'; + wr_filt_ram <= '0'; + rd_filt_ram <= '0'; + + clr_no_VW_cnt <= '0'; + clr_not_equal_cnt <= '0'; + sw_clr_ev_timer <= '0'; + ld_dly_timer <= '0'; + clr_wait_timer <= '0'; + lemo_i_reg <= lemo_inp; + + tx_fifo_write_en <= '0'; + tx_taskram_we <= '0'; + rx_taskram_re <= '0'; + slave_o.dat <= (others => '0'); + + + -- to clear selective request bits when tx_readout was done + FOR I IN 1 TO 255 LOOP + IF tx_task_ack(i)='1' THEN tx_req(i) <= '0'; END IF; + END LOOP; + + -- to clear selective data available bits when rx_readout was done + FOR I IN 1 TO 255 LOOP + IF clr_rx_avail_ps(i)='1'AND set_rx_avail_ps(i)='0' THEN avail(i)<='0'; ELSIF set_rx_avail_ps(i)='1' THEN avail(i)<='1'; ELSE NULL;END IF; + END LOOP; + + FOR I IN 1 TO 255 LOOP + IF clr_rx_err_ps(i)='1' AND set_rx_err_ps(i)='0' THEN rx_err(i)<='0'; ELSIF set_rx_err_ps(i)='1' THEN rx_err(i)<='1'; ELSE NULL;END IF; + END LOOP; + + + clr_rx_avail_ps <= (OTHERS =>'0'); --pulses only set for 1 clk_i period + clr_rx_err_ps <= (others => '0'); + + IF slave_i.cyc = '1' AND slave_i.stb = '1' AND ex_stall = '1' THEN -- begin of wishbone cycle + +--##############################TX FIFO ACCESS############################################# + IF (LA_a_var = mil_wr_cmd_a_map) OR (LA_a_var = mil_rd_wr_data_a_map) THEN -- fifo uses old cmd/data reg address + IF slave_i.sel = "1111" THEN + IF slave_i.we = '1' AND hw6408_rdy_sync = '1' THEN -- only when hw6408 is operational, otherwise no fifo write tasks allowed + IF tx_fifo_full ='0' THEN + tx_fifo_data_in(16) <= slave_i.adr(2); --Addressbit2='1' results in CMD Telegram due to x802 CMD Reg.Address + tx_fifo_data_in(15 downto 0) <= slave_i.dat(15 downto 0); + tx_fifo_write_en <= slave_i.stb and not slave_i_stb_dly; + ex_stall <= '0'; + ex_ack <= '1'; + ELSE + -- write to mil not allowed, because tx_fifo is full + ex_stall <= '0'; + ex_err <= '1'; + END IF;--tx_fifo_full + ELSE + -- read low word not allowed on TX_FIFO + ex_stall <= '0'; + ex_err <= '1'; + END IF;--slave_i.we + ELSE + -- access to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + END IF;--slave_i.sel + + +--##############################TX_TASKRAM write access################################################### + ELSIF (LA_a_var >= tx_taskram_first_adr and LA_a_var <= tx_taskram_last_adr ) THEN + IF slave_i.sel = "1111" THEN + IF slave_i.we = '1' AND slave_i_we_del = '0'AND tx_req(to_integer(unsigned(slave_i.adr(9 downto 2))))='0' AND hw6408_rdy_sync = '1' THEN + tx_taskram_wr_d <= slave_i.dat(15 DOWNTO 0); + tx_taskram_wr_a <= slave_i.adr( 9 DOWNTO 2); --to address 1..xff in range tx_taskreg_first...last_a_var + tx_taskram_we <= '1'; + tx_req(to_integer(unsigned(slave_i.adr(9 downto 2)))) <= '1'; --Tx Requestbit 1..254 set here (cleared on readout) + clr_rx_avail_ps(to_integer(unsigned(slave_i.adr(9 downto 2)))) <= '1'; --kk 20180112 for PK to optimize etherbone accesses + clr_rx_err_ps(to_integer(unsigned(slave_i.adr(9 downto 2)))) <= '1'; --kk 20180112 for PK to optimize etherbone accesses + ex_stall <= '0'; + ex_ack <= '1'; + ELSE + ex_stall <= '0'; --write on existing RAM Task isn't allowed + ex_err <= '1'; + END IF; + ELSE + ex_stall <= '0'; + ex_err <= '1'; + END IF; + + +--##############################RX_TASKRAM############################################################ + ELSIF (LA_a_var >= rx_taskram_first_adr and LA_a_var <= rx_taskram_last_adr ) THEN + IF slave_i.sel = "1111" THEN + + IF slave_i.we = '0' THEN --scu cycle needs 2 clocks for ram access + IF slave_i_stb_dly2 ='0' THEN + rx_taskram_re <= '1'; --first get data out of rx_taskram + rx_taskram_rd_a <= slave_i.adr( 9 DOWNTO 2); + ELSE --second to present it to scu bus + slave_o.dat (15 downto 0) <= rx_taskram_rd_d; + --clr_rx_avail_ps(to_integer(unsigned(slave_i.adr( 9 DOWNTO 2)))) <= '1'; --avail bit will be cleared by scu bus read access + --clr_rx_err_ps (to_integer(unsigned(slave_i.adr( 9 DOWNTO 2)))) <= '1'; --err bit will be cleared by scu bus read access + ex_stall <= '0'; --the 2 clrs were omitted due to performance optimisation + ex_ack <= '1'; --Etherbone may re-arange read tasks in same socket, may cause hazards here + END IF; + ELSE--write attempts result in DTACK Error + ex_stall <= '0'; + ex_err <= '1'; + END IF; + + ELSE --highword/unaligned accesses (others than sel=1111) not allowed + ex_stall <= '0'; + ex_err <= '1'; + END IF;--elsif + + +--##############################status_avail Regs###################################################### + ELSIF (LA_a_var >= rd_status_avail_first_adr AND LA_a_var <= rd_status_avail_last_adr) THEN + IF slave_i.sel = "1111" THEN + IF slave_i.we = '0' THEN + slave_o.dat(15 DOWNTO 0) <= avail_muxed; -- Mux selects 16 bits out of avail Vector 255..1 + ex_stall <= '0'; + ex_ack <= '1'; + ELSE + ex_stall <= '0'; + ex_err <= '1'; + END IF; + ELSE + ex_stall <= '0'; + ex_err <= '1'; + END IF; + +--##############################rx_err Regs###################################################### + ELSIF (LA_a_var >= rd_rx_err_first_adr AND LA_a_var <= rd_rx_err_last_adr) THEN + IF slave_i.sel = "1111" THEN + IF slave_i.we = '0' THEN + slave_o.dat(15 DOWNTO 0) <= rx_err_muxed; -- Mux selects 16 bits out of rx_err Vector 255..1 + ex_stall <= '0'; + ex_ack <= '1'; + ELSE + ex_stall <= '0'; + ex_err <= '1'; + END IF; + ELSE + ex_stall <= '0'; + ex_err <= '1'; + END IF; + +--##############################tx_req Regs###################################################### + ELSIF (LA_a_var >= tx_ram_req_first_adr AND LA_a_var <= tx_ram_req_last_adr) THEN + IF slave_i.sel = "1111" THEN + IF slave_i.we = '0' THEN + slave_o.dat(15 DOWNTO 0) <= tx_req_muxed; -- Mux selects 16 bits out of tx_req Vector 255..1 + ex_stall <= '0'; + ex_ack <= '1'; + ELSE + ex_stall <= '0'; + ex_err <= '1'; + END IF; + ELSE + ex_stall <= '0'; + ex_err <= '1'; + END IF; + +--############################Regs from old MIL Macro)############################################### + ELSIF (LA_a_var = mil_wr_rd_status_a_map) THEN + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- write status register + manchester_fpga <= slave_i.dat(b_sel_fpga_n6408); + ev_filt_12_8b <= slave_i.dat(b_ev_filt_12_8b); + ev_filt_on <= slave_i.dat(b_ev_filt_on); + debounce_on <= '1'; -- slave_i.dat(b_debounce_on); + puls2_frame <= slave_i.dat(b_puls2_frame); + puls1_frame <= slave_i.dat(b_puls1_frame); + ev_reset_on <= slave_i.dat(b_ev_reset_on); + clr_mil_rcv_err <= slave_i.dat(b_mil_rcv_err); + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read status register + slave_o.dat(15 downto 0) <= ( manchester_fpga & ev_filt_12_8b & ev_filt_on & debounce_on -- mil-status[15..12] + & puls2_frame & puls1_frame & ev_reset_on & mil_rcv_error -- mil-status[11..8] + & tx_fifo_full & Mil_Cmd_Rcv & mil_rcv_rdy & ev_fifo_full -- mil-status[7..4] tx_fifo_full instead of mil_trm_rdy + & ev_fifo_ne & db_data_req_intr & db_data_rdy_intr & db_interlock_intr ); -- mil-status[3..0] + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- access to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + end if; + + ELSIF (LA_a_var = mil_wr_rd_lemo_conf_a_map) THEN + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- write lemo config register + lemo_out_en(1) <= slave_i.dat(b_lemo1_out_en); + lemo_out_en(2) <= slave_i.dat(b_lemo2_out_en); + lemo_out_en(3) <= slave_i.dat(b_lemo3_out_en); + lemo_out_en(4) <= slave_i.dat(b_lemo4_out_en); + lemo_event_en(1) <= slave_i.dat(b_lemo1_event_en); + lemo_event_en(2) <= slave_i.dat(b_lemo2_event_en); + lemo_event_en(3) <= slave_i.dat(b_lemo3_event_en); + lemo_event_en(4) <= slave_i.dat(b_lemo4_event_en); + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read lemo config register + slave_o.dat(15 downto 0) <= ( "00000000" & lemo_event_en(4 downto 1) & lemo_out_en(4 downto 1) );-- mil-lemo config[15..0] + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- access to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + end if; + + ELSIF (LA_a_var = mil_wr_rd_lemo_dat_a_map) THEN + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- write lemo data register + lemo_dat(1) <= slave_i.dat(b_lemo1_dat); + lemo_dat(2) <= slave_i.dat(b_lemo2_dat); + lemo_dat(3) <= slave_i.dat(b_lemo3_dat); + lemo_dat(4) <= slave_i.dat(b_lemo4_dat); + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read lemo data register + slave_o.dat(15 downto 0) <= "000000000000" & lemo_dat(4 downto 1 );-- mil lemo data [15..0] + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- access to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + end if; + + + + ELSIF (LA_a_var = mil_rd_lemo_inp_a_map) THEN + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- write to lemo input register is without effect + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read lemo input register register + slave_o.dat(15 downto 0) <= ( "000000000000" & lemo_i_reg (4 downto 1));--lemo input data [15..0] + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- access to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + end if; + + ELSIF (LA_a_var = rd_clr_no_vw_cnt_a_map) THEN + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- write access clears no valid word counters + clr_no_vw_cnt <= '1'; + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read no valid word counters + slave_o.dat(15 downto 0) <= no_vw_cnt; + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- access to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + end if; + + ELSIF (LA_a_var = rd_wr_not_eq_cnt_a_map) THEN + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- write access clears not equal counters + clr_not_equal_cnt <= '1'; + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read not equal counters + slave_o.dat(15 downto 0) <= not_equal_cnt; + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- write to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + end if; + + ELSIF (LA_a_var = rd_clr_ev_fifo_a_map) THEN + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- write access clears event fifo + clr_ev_fifo <= '1'; + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read event fifo + if ev_fifo_ne = '1' then + -- read is okay because fifo is not empty + rd_ev_fifo <= '1'; + slave_o.dat(15 downto 0) <= ep_read_port; + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read is not okay because fifo is empty + ex_stall <= '0'; + ex_err <= '1'; + end if; + end if; + else + -- write to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + end if; + + ELSIF (LA_a_var = rd_clr_ev_timer_a_map) THEN + if slave_i.sel = "1111" then -- only double word access allowed + if slave_i.we = '1' then + -- write access clears event timer + sw_clr_ev_timer <= '1'; + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read complete double word + slave_o.dat(31 downto 0) <= std_logic_vector(ev_timer); + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- no complete double word access + ex_stall <= '0'; + ex_err <= '1'; + end if; + + ELSIF (LA_a_var = rd_wr_dly_timer_a_map) THEN + if slave_i.sel = "1111" then -- only double word access allowed + if slave_i.we = '1' then + -- write access clears event timer + ld_dly_timer <= '1'; + ex_stall <= stall_dly_timer; + ex_ack <= not stall_dly_timer; + else + -- read complete double word + slave_o.dat(31 downto 0) <= "0000000" & std_logic_vector(dly_timer); + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- no complete double word access + ex_stall <= '0'; + ex_err <= '1'; + end if; + + ELSIF (LA_a_var = rd_clr_wait_timer_a_map) THEN + if slave_i.sel = "1111" then -- only double word access allowed + if slave_i.we = '1' then + -- write access clears wait timer + clr_wait_timer <= '1'; + ex_stall <= '0'; + ex_ack <= '1'; + else + -- read complete double word + slave_o.dat(31 downto 0) <= x"00" & std_logic_vector(wait_timer); + ex_stall <= '0'; + ex_ack <= '1'; + end if; + else + -- no complete double word access + ex_stall <= '0'; + ex_err <= '1'; + end if; + + + ELSIF (LA_a_var >= evt_filt_first_a) AND (LA_a_var <= evt_filt_last_a) THEN -- read or write event filter ram + if slave_i.sel = "1111" then -- only word access to modulo-4 address allowed + if slave_i.we = '1' then + -- write event filter ram + wr_filt_ram <= '1'; + ex_stall <= stall_filter; + ex_ack <= not stall_filter; + else + -- read event filter ram + rd_filt_ram <= '1'; + slave_o.dat(15 downto 0) <= ep_read_port; + ex_stall <= stall_filter; + ex_ack <= not stall_filter; + end if; + else + -- write to high word or unaligned word is not allowed + ex_stall <= '0'; + ex_err <= '1'; + end if; + + + ELSE + ex_stall <= '0'; + ex_err <= '1'; + END IF; --LA_a_var + + end if;--slave_i.cyc + end if;--clocked_process +END PROCESS p_regs_acc; + + + +lemo_data_o(1) <= io_1 when (lemo_event_en(1)='1') else lemo_dat(1); -- To be compatible with former SCU solution +lemo_data_o(2) <= io_2 when (lemo_event_en(2)='1') else lemo_dat(2); -- which allows 2 event-driven lemo outputs +lemo_data_o(3) <= lemo_dat(3); -- This is used in SIO (not event drive-able) +lemo_data_o(4) <= lemo_dat(4); -- This is used in SIO (not event drive-able) + +lemo_out_en_o(1) <= '1' when puls1_frame='1' else lemo_out_en(1); -- To be compatible with former SCU solution +lemo_out_en_o(2) <= '1' when puls2_frame='1' else lemo_out_en(2); -- which allows 2 event-driven lemo outputs +lemo_out_en_o(3) <= lemo_out_en(3); -- This is used in SIO +lemo_out_en_o(4) <= lemo_out_en(4); -- This is used in SIO + + + +p_every_us: div_n + generic map ( + n => integer(clk_in_hz/1_000_000), -- KK alle us einen Takt aktiv (ena_every_us * 1000 = 1ms) + diag_on => 0 -- diag_on = 1 die Breite des Untersetzungzaehlers + -- mit assert .. note ausgegeben. + ) + + port map ( + res => '0', + clk => clk_i, + ena => open, -- das untersetzende enable muss in der gleichen Clockdomaene erzeugt werden. + -- Das enable sollte nur ein Takt lang sein. + -- Z.B. koennte eine weitere div_n-Instanz dieses Signal erzeugen. + div_o => ena_every_us -- Wird nach Erreichen von n-1 fuer einen Takt aktiv. + ); + +-- Timer Section + +p_ev_timer: process (clk_i, nRst_i) + begin + if nRst_i = '0' then + ev_timer <= to_unsigned(0, ev_timer'length); + elsif rising_edge(clk_i) then + if sw_clr_ev_timer = '1' or ev_clr_ev_timer = '1' then + ev_timer <= to_unsigned(0, ev_timer'length); + elsif ena_every_us = '1' then + ev_timer <= ev_timer + 1; + end if; + end if; + end process p_ev_timer; + + +p_delay_timer: process (clk_i, nRst_i) + + variable dly_timer_start: std_logic; + + begin + if nRst_i = '0' then + dly_timer <= (others => '1'); --to_unsigned(-1, dly_timer'length); + dly_timer_start := '0'; + dly_intr <= '0'; + + elsif rising_edge(clk_i) then + + stall_dly_timer <= '1'; + + if ld_dly_timer = '1' then + stall_dly_timer <= '0'; + dly_intr <= '0'; -- laden des delay timers setzt delay interrupt zurueck + dly_timer <= unsigned(slave_i.dat(dly_timer'range)); + if dly_timer(dly_timer'high) = '0' then -- laden des delay timers bei dem das oberste bit = 0 ist + dly_timer_start := '1'; -- startet den delay timer. + else + dly_timer_start := '0'; -- stoppt den delay timer. + end if; + end if; + + if dly_timer_start = '1' then + if ena_every_us = '1' then + if dly_timer(dly_timer'high) = '0' then + dly_timer <= dly_timer - 1; + else + dly_intr <= '1'; + end if; + end if; + end if; + end if; + end process p_delay_timer; + +dly_intr_o <= dly_intr; + + +p_wait_timer: process (clk_i, nRst_i) + begin + if nRst_i = '0' then + wait_timer <= to_unsigned(0, wait_timer'length); + elsif rising_edge(clk_i) then + if clr_wait_timer = '1' then + wait_timer <= to_unsigned(0, wait_timer'length); + elsif ena_every_us = '1' then + wait_timer <= wait_timer + 1; + end if; + end if; + end process p_wait_timer; + +end arch_wb_mil_scu; + + + + + + + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.wishbone_pkg.all; + +-- If a WB slave cannot correctly handle a cycle and strobe directly after +-- a previous cycle, this entity can be used enforce a delay between two WB cycles. +-- It causes the master to be stalled a fixed amount of clock ticks after the end of a WB cycle. +-- The number of clock ticks to wait is configurable with the generic g_wait_count. +-- WB signals are not registered. +-- A state machine controls the waiting. +entity wb_cyc_delay is + generic ( + g_wait_count : integer := 3 -- introduce (wait_count+1) additional clock ticks of stall='1' between two wb-cycles + ); + port ( + clk_i : in std_logic; + rst_n_i : in std_logic; + slave_i : in t_wishbone_slave_in; + slave_o : out t_wishbone_slave_out; + master_o : out t_wishbone_master_out; + master_i : in t_wishbone_master_in + ); +end entity; + +architecture rtl of wb_cyc_delay is + type t_state is (s_idle, s_cyc, s_wait); + signal state : t_state := s_idle; + signal count : integer range 0 to g_wait_count; +begin + + slave_o <= (ack=>'0', err=>'0', rty=>'0', stall=>'1', dat=>(others=>'-')) when state = s_wait else master_i; + master_o <= (cyc=>'0', stb=>'0', we=>'0', sel=>(others=>'-'), adr=>(others=>'-'),dat=>(others=>'-')) when state = s_wait else slave_i; + + process(clk_i, rst_n_i) is + begin + if rst_n_i = '0' then + state <= s_idle; + elsif rising_edge(clk_i) then + case state is + when s_idle => + if slave_i.cyc = '1' then + state <= s_cyc; + end if; + when s_cyc => + if slave_i.cyc = '0' then + count <= g_wait_count; + state <= s_wait; + end if; + when s_wait => + if count = 0 then + state <= s_idle; + else + count <= count - 1; + end if; + end case; + end if; + end process; + +end architecture; + + +LIBRARY ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.math_real.all; +use work.wishbone_pkg.all; +use work.aux_functions_pkg.all; +use work.mil_pkg.all; +use work.wb_mil_scu_pkg.all; +use work.genram_pkg.all; + +-- wrapper for wb_mil_scu_broken that makes sure no wishbone cycles follows directly after another. +-- cycle line is low for at least 5 clock tics between two cycles +ENTITY wb_mil_scu IS + +GENERIC ( + Clk_in_Hz: INTEGER := 62_500_000; + slave_i_adr_max: INTEGER := 14 + ); +PORT ( + clk_i: IN STD_LOGIC; + nRst_i: IN STD_LOGIC; + slave_i: IN t_wishbone_slave_in; + slave_o: OUT t_wishbone_slave_out; + nME_BOO: IN STD_LOGIC; + nME_BZO: IN STD_LOGIC; + ME_SD: IN STD_LOGIC; + ME_ESC: IN STD_LOGIC; + ME_SDI: OUT STD_LOGIC; + ME_EE: OUT STD_LOGIC; + ME_SS: OUT STD_LOGIC; + ME_BOI: OUT STD_LOGIC; + ME_BZI: OUT STD_LOGIC; + ME_UDI: OUT STD_LOGIC; + ME_CDS: IN STD_LOGIC; + ME_SDO: IN STD_LOGIC; + ME_DSC: IN STD_LOGIC; + ME_VW: IN STD_LOGIC; + ME_TD: IN STD_LOGIC; + Mil_BOI: IN STD_LOGIC; + Mil_BZI: IN STD_LOGIC; + Sel_Mil_Drv: BUFFER STD_LOGIC; + nSel_Mil_Rcv: OUT STD_LOGIC; + Mil_nBOO: OUT STD_LOGIC; + Mil_nBZO: OUT STD_LOGIC; + nLed_Mil_Rcv: OUT STD_LOGIC; + nLed_Mil_Trm: OUT STD_LOGIC; + nLed_Mil_Err: OUT STD_LOGIC; + error_limit_reached: OUT STD_LOGIC; + Mil_Decoder_Diag_p: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); + Mil_Decoder_Diag_n: OUT STD_LOGIC_VECTOR(15 DOWNTO 0); + timing: IN STD_LOGIC; + nLed_Timing: OUT STD_LOGIC; + dly_intr_o: OUT STD_LOGIC; + nLed_Fifo_ne: OUT STD_LOGIC; + ev_fifo_ne_intr_o: OUT STD_LOGIC; + Interlock_Intr_i: IN STD_LOGIC; + Data_Rdy_Intr_i: IN STD_LOGIC; + Data_Req_Intr_i: IN STD_LOGIC; + Interlock_Intr_o: OUT STD_LOGIC; + Data_Rdy_Intr_o: OUT STD_LOGIC; + Data_Req_Intr_o: OUT STD_LOGIC; + nLed_Interl: OUT STD_LOGIC; + nLed_Dry: OUT STD_LOGIC; + nLed_Drq: OUT STD_LOGIC; + every_ms_intr_o: OUT STD_LOGIC; + lemo_data_o: OUT STD_LOGIC_VECTOR(4 DOWNTO 1); + lemo_nled_o: OUT STD_LOGIC_VECTOR(4 DOWNTO 1); + lemo_out_en_o: OUT STD_LOGIC_VECTOR(4 DOWNTO 1); + lemo_data_i: IN STD_LOGIC_VECTOR(4 DOWNTO 1):= (OTHERS => '0'); + nsig_wb_err: OUT STD_LOGIC; + n_tx_req_led : OUT STD_LOGIC; + n_rx_avail_led: OUT STD_LOGIC + ); +END wb_mil_scu; + +ARCHITECTURE arch_wb_mil_scu OF wb_mil_scu IS + signal mosi: t_wishbone_slave_in; + signal miso: t_wishbone_slave_out; +BEGIN + + bugfix: entity work.wb_cyc_delay + generic map( + g_wait_count => 3 -- introduce (wait_count+1) additional clock ticks of stall='1' between two wb-cycles + ) + port map ( + clk_i => clk_i, + rst_n_i => nRst_i, + slave_i => slave_i, + slave_o => slave_o, + master_o => mosi, + master_i => miso + ); + + + broken_mil_scu : entity work.wb_mil_scu_broken + generic map( + Clk_in_Hz => Clk_in_Hz, + slave_i_adr_max => slave_i_adr_max + ) + port map ( + clk_i => clk_i, + nRst_i => nRst_i, + slave_i => mosi, + slave_o => miso, + nME_BOO => nME_BOO, + nME_BZO => nME_BZO, + ME_SD => ME_SD, + ME_ESC => ME_ESC, + ME_SDI => ME_SDI, + ME_EE => ME_EE, + ME_SS => ME_SS, + ME_BOI => ME_BOI, + ME_BZI => ME_BZI, + ME_UDI => ME_UDI, + ME_CDS => ME_CDS, + ME_SDO => ME_SDO, + ME_DSC => ME_DSC, + ME_VW => ME_VW, + ME_TD => ME_TD, + Mil_BOI => Mil_BOI, + Mil_BZI => Mil_BZI, + Sel_Mil_Drv => Sel_Mil_Drv, + nSel_Mil_Rcv => nSel_Mil_Rcv, + Mil_nBOO => Mil_nBOO, + Mil_nBZO => Mil_nBZO, + nLed_Mil_Rcv => nLed_Mil_Rcv, + nLed_Mil_Trm => nLed_Mil_Trm, + nLed_Mil_Err => nLed_Mil_Err, + error_limit_reached => error_limit_reached, + Mil_Decoder_Diag_p => Mil_Decoder_Diag_p, + Mil_Decoder_Diag_n => Mil_Decoder_Diag_n, + timing => timing, + nLed_Timing => nLed_Timing, + dly_intr_o => dly_intr_o, + nLed_Fifo_ne => nLed_Fifo_ne, + ev_fifo_ne_intr_o => ev_fifo_ne_intr_o, + Interlock_Intr_i => Interlock_Intr_i, + Data_Rdy_Intr_i => Data_Rdy_Intr_i, + Data_Req_Intr_i => Data_Req_Intr_i, + Interlock_Intr_o => Interlock_Intr_o, + Data_Rdy_Intr_o => Data_Rdy_Intr_o, + Data_Req_Intr_o => Data_Req_Intr_o, + nLed_Interl => nLed_Interl, + nLed_Dry => nLed_Dry, + nLed_Drq => nLed_Drq, + every_ms_intr_o => every_ms_intr_o, + lemo_data_o => lemo_data_o, + lemo_nled_o => lemo_nled_o, + lemo_out_en_o => lemo_out_en_o, + lemo_data_i => lemo_data_i, + nsig_wb_err => nsig_wb_err, + n_tx_req_led => n_tx_req_led, + n_rx_avail_led => n_rx_avail_led + ); + +END ARCHITECTURE; diff --git a/testbench/tr_simulation/gsi_pexarria5/wb_mil_scu_pkg.vhd b/testbench/tr_simulation/gsi_pexarria5/wb_mil_scu_pkg.vhd new file mode 100644 index 0000000000..7e68e17a02 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/wb_mil_scu_pkg.vhd @@ -0,0 +1,373 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use ieee.numeric_std.all; +use ieee.math_real.all; +use work.wishbone_pkg.all; + +library work; + + +package wb_mil_scu_pkg is + +constant c_mil_byte_addr_range: integer := 16#2000# * 4; -- all resources (byte, word, double word) are alligned to modulo 4 addresses, + -- so multiply the c_mil_byte_addr_range by 4. +constant c_mil_addr_width: integer := integer(ceil(log2(real(c_mil_byte_addr_range)))); + +constant c_xwb_gsi_mil_scu : t_sdb_device := ( + abi_class => x"0000", -- undocumented device + abi_ver_major => x"01", + abi_ver_minor => x"01", + wbd_endian => c_sdb_endian_big, -- '1' = little, '0' = big + wbd_width => x"4", -- only 32-bit port granularity allowed + sdb_component => ( + addr_first => x"0000000000000000", + addr_last => std_logic_vector(to_unsigned(c_mil_byte_addr_range-1, 16*4)), + product => ( + vendor_id => x"0000000000000651", -- GSI + device_id => x"35aa6b96", + version => x"00000002", + date => x"20170907", + name => "GSI_MIL_SCU "))); -- should be 19 Char + + +constant filter_data_width: integer := 6; +constant filter_ram_size: integer := 4096; +constant filter_addr_width: integer := integer(ceil(log2(real(filter_ram_size)))); + +---------------------------------------------------------------------------------------------------------------------------------------- +-- In Mil-Option WB address offsets are multiplied by 4, eg mil_wr_cmd_a =1 gives real eb-tools address :wb_base plus 4 -- +-- In DevBus Slave SIO3 offsets are multiplied by 2, eg mil_wr_cmd=1 gives real eb-tools address: sio_mil_first_reg_adr + 2 e.g. x802 -- +---------------------------------------------------------------------------------------------------------------------------------------- + +constant mil_rd_wr_data_a: unsigned(15 downto 0) := x"0000"; -- read mil bus wb_mil_scu_offset + 16#00#, read not used anymore, use task registers therefore. + -- write data to mil bus: wb_mil_scu_offset + 16#00#, write for tx block mode fifo, bit[31..16] don't care. +constant mil_wr_cmd_a: unsigned(15 downto 0) := x"0001"; -- write command to mil bus: wb_mil_scu_offset + 16#04#, write for tx block mode fifo, bit[31..16] don't care. + + +constant mil_wr_rd_status_a: unsigned(15 downto 0) := x"0002"; -- read mil status: wb_mil_scu_offset + 16#08#, data[31..16] always zero. + -- write mil control reg: wb_mil_scu_offset + 16#08#, bits 15..0 can be changed. Data[31..16] don't care. +constant rd_clr_no_vw_cnt_a: unsigned(15 downto 0) := x"0003"; -- read no valid counters: wb_mil_scu_offset + 16#0C#. Data[31..16] always zero. + -- write(clears)novalid counter wb_mil_scu_offset + 16#0C#. Data[31..0] don't care +constant rd_wr_not_eq_cnt_a: unsigned(15 downto 0) := x"0004"; -- read not equal counters: wb_mil_scu_offset + 16#10#. Data[31..16] always zero. + -- clears not equal counters: wb_mil_scu_offset + 16#10#. Data[31..0] don't care. +constant rd_clr_ev_fifo_a: unsigned(15 downto 0) := x"0005"; -- read event fifo: wb_mil_scu_offset + 16#14#, only allowed when event fifo is not empty. Data[31..16]= zero. + -- write (clears) event fifo: wb_mil_scu_offset + 16#14#. Data[31..0] don't care. +constant rd_clr_ev_timer_a: unsigned(15 downto 0) := x"0006"; -- read event timer: wb_mil_scu_offset + 16#18#. + -- write (sw-clear) event timer wb_mil_scu_offset + 16#18#. +constant rd_wr_dly_timer_a: unsigned(15 downto 0) := x"0007"; -- read delay timer: wb_mil_scu_offset + 16#1C#. + -- write delay timer: wb_mil_scu_offset + 16#1C#. +constant rd_clr_wait_timer_a: unsigned(15 downto 0) := x"0008"; -- read wait timer: wb_mil_scu_offset + 16#20#. + -- write (clear) wait timer: wb_mil_scu_offset + 16#20#. +constant mil_wr_rd_lemo_conf_a: unsigned(15 downto 0) := x"0009"; -- read mil lemo config: wb_mil_scu_offset + 16#24#, data[31..4] always zero. + -- write mil lemo config: wb_mil_scu_offset + 16#24#, bits 3..0 can be changed.Data[31..4] don't care +constant mil_wr_rd_lemo_dat_a: unsigned(15 downto 0) := x"000A"; -- read mil lemo dat: wb_mil_scu_offset + 16#28#, data[31..4] always zero. + -- write mil lemo dat: wb_mil_scu_offset + 16#28#, bits 3..0 can be changed.Data[31..4] don't car +constant mil_rd_lemo_inp_a: unsigned(15 downto 0) := x"000B"; -- read mil lemo inp: wb_mil_scu_offset + 16#2C#, data[31..4] always zero. + +constant rd_ev_timer_LW_a: unsigned(15 downto 0) := x"000C"; -- read event timer lower Word wb_mil_scu_offset + 16#30#. + -- reserved wb_mil_scu_offset + 16#34#. +constant rd_wait_timer_LW_a: unsigned(15 downto 0) := x"000E"; -- read wait timer lower Word wb_mil_scu_offset + 16#38#. + -- reserved wb_mil_scu_offset + 16#3c#.. +constant rd_wr_dly_timer_LW_a: unsigned(15 downto 0) := x"0010"; -- read event timer latch LW wb_mil_scu_offset + 16#40#. + -- write event timer latch LW wb_mil_scu_offset + 16#40#. +constant rd_wr_dly_timer_HW_a: unsigned(15 downto 0) := x"0011"; -- read event timer latch HW wb_mil_scu_offset + 16#44#. + -- write event timer latch HW wb_mil_scu_offset + 16#44#. +constant wr_soft_reset_a: unsigned(15 downto 0) := x"0012"; -- wr softreset to wb_mil_scu wb_mil_scu_offset + 16#48#. + + +CONSTANT ram_count: integer := 254; -- max 254: aktuelle Version, max 255 zukünftig bei Strahlendiagnosemode. +CONSTANT sio_mil_first_reg_a: unsigned(15 downto 0) := x"0400"; +CONSTANT sio_mil_last_reg_a: unsigned(15 downto 0) := x"0440"; +CONSTANT tx_taskram_first_adr: unsigned(15 downto 0) := x"0C01"; +CONSTANT tx_taskram_last_adr: unsigned(15 downto 0) := x"0CFF"; +CONSTANT rx_taskram_first_adr: unsigned(15 downto 0) := x"0D01"; +CONSTANT rx_taskram_last_adr: unsigned(15 downto 0) := x"0DFF"; +CONSTANT rd_status_avail_first_adr:unsigned(15 downto 0) := x"0E00"; +CONSTANT rd_status_avail_last_adr: unsigned(15 downto 0) := x"0E0F"; +CONSTANT rd_rx_err_first_adr: unsigned(15 downto 0) := x"0E10"; +CONSTANT rd_rx_err_last_adr: unsigned(15 downto 0) := x"0E1F"; +CONSTANT tx_ram_req_first_adr: unsigned(15 downto 0) := x"0E20"; +CONSTANT tx_ram_req_last_adr: unsigned(15 downto 0) := x"0E2F"; +CONSTANT evt_filt_first_a: unsigned(15 downto 0) := x"1000"; +CONSTANT evt_filt_last_a: unsigned(15 downto 0) := x"1FFF"; + + + +-- bit positions of mil control/status register +constant b_sel_fpga_n6408: integer := 15; -- '1' => fpga manchester endecoder selected, '0' => external hardware manchester endecoder 6408 selected. +constant b_ev_filt_12_8b: integer := 14; -- '1' => event filter decode 12 bit of the event, '0' => event filter decode 8 bit of the event. +constant b_ev_filt_on: integer := 13; -- '1' => event filter is on, '0' => event filter is off. +constant b_debounce_on: integer := 12; -- '1' => debounce of device bus interrupt input is on. +constant b_puls2_frame: integer := 11; -- '1' => aus zwei events wird der Rahmenpuls2 gebildet. Vorausgesetzt das Eventfilter ist richtig programmiert. +constant b_puls1_frame: integer := 10; -- '1' => aus zwei events wird der Rahmenpuls1 gebildet. Vorausgesetzt das Eventfilter ist richtig programmiert. +constant b_ev_reset_on: integer := 9; -- '1' => events koennen den event timer auf Null setzen, vorausgesetzt das Eventfilter ist richtig programmiert. +constant b_mil_rcv_err: integer := 8; -- '1' => an receive error okkurs. If this bit is '1', then it holds information + -- until it's cleared by writing a one to this position of thencontrol register. +constant b_mil_trm_rdy: integer := 7; -- '1' => ready to tranmit data or commands. +constant b_mil_cmd_rcv: integer := 6; -- '1' => command received. +constant b_mil_rcv_rdy: integer := 5; -- '1' => command or data received from mil bus. +constant b_ev_fifo_full: integer := 4; -- '1' => event fifo is full. +constant b_ev_fifo_ne: integer := 3; -- '1' => event fifo is not empty. +constant b_data_req: integer := 2; -- '1' => data request interrupt of device bus is active. +constant b_data_rdy: integer := 1; -- '1' => data ready interrupt of device bus is active. +constant b_interlock: integer := 0; -- '1' => Interlock of device bus is active. + + +constant b_lemo1_out_en: integer := 0; -- '1' => MIL Lemo 1 is enabled as output +constant b_lemo2_out_en: integer := 1; -- '1' => MIL Lemo 2 is enabled as output +constant b_lemo3_out_en: integer := 2; -- '1' => MIL Lemo 3 is enabled as output +constant b_lemo4_out_en: integer := 3; -- '1' => MIL Lemo 4 is enabled as output + +constant b_lemo1_event_en: integer := 4; -- '1' => MIL Lemo 1 is in Event driven mode +constant b_lemo2_event_en: integer := 5; -- '1' => MIL Lemo 2 is in Event driven mode +constant b_lemo3_event_en: integer := 6; -- '1' => MIL Lemo 3 is in Event driven mode +constant b_lemo4_event_en: integer := 7; -- '1' => MIL Lemo 4 is in Event driven mode + +constant b_lemo1_dat: integer := 0; -- '1' => MIL Lemo 1 output data (default='0') +constant b_lemo2_dat: integer := 1; -- '1' => MIL Lemo 2 output data (default='0') +constant b_lemo3_dat: integer := 2; -- '1' => MIL Lemo 3 output data (default='0') +constant b_lemo4_dat: integer := 3; -- '1' => MIL Lemo 4 output data (default='0') + +constant b_lemo1_inp: integer := 0; -- '1' => MIL Lemo 1 (debounced) pin input status +constant b_lemo2_inp: integer := 1; -- '1' => MIL Lemo 2 (debounced) pin input status +constant b_lemo3_inp: integer := 2; -- '1' => MIL Lemo 3 (debounced) pin input status +constant b_lemo4_inp: integer := 3; -- '1' => MIL Lemo 4 (debounced) pin input status + + +component wb_mil_scu IS + +generic ( + Clk_in_Hz: integer := 62_500_000; -- Um die Manchester-Flanken bei 1Mb/s genau ausmessen zu koennen + -- (Flankenabstand > 500 ns), muss das Makro mit min. 20 Mhz getaktet werden. + slave_i_adr_max: integer := 14 -- 14 for SCU, 17 for SIO + ); +port ( + clk_i: in std_logic; + nRst_i: in std_logic; + slave_i: in t_wishbone_slave_in; + slave_o: out t_wishbone_slave_out; + + -- encoder (transmiter) signals of HD6408 -------------------------------------------------------------------------------- + nME_BOO: in std_logic; -- HD6408-output: transmit bipolar positive. + nME_BZO: in std_logic; -- HD6408-output: transmit bipolar negative. + + ME_SD: in std_logic; -- HD6408-output: '1' => send data is active. + ME_ESC: in std_logic; -- HD6408-output: encoder shift clock for shifting data into the encoder. The + -- encoder samples ME_SDI on low-to-high transition of ME_ESC. + ME_SDI: out std_logic; -- HD6408-input: serial data in accepts a serial data stream at a data rate + -- equal to encoder shift clock. + ME_EE: out std_logic; -- HD6408-input: a high on encoder enable initiates the encode cycle. + -- (Subject to the preceding cycle being completed). + ME_SS: out std_logic; -- HD6408-input: sync select actuates a Command sync for an input high + -- and data sync for an input low. + + -- decoder (receiver) signals of HD6408 --------------------------------------------------------------------------------- + ME_BOI: out std_logic; -- HD6408-input: A high input should be applied to bipolar one in when the bus is in its + -- positive state, this pin must be held low when the Unipolar input is used. + ME_BZI: out std_logic; -- HD6408-input: A high input should be applied to bipolar zero in when the bus is in its + -- negative state. This pin must be held high when the Unipolar input is used. + ME_UDI: out std_logic; -- HD6408-input: With ME_BZI high and ME_BOI low, this pin enters unipolar data in to the + -- transition finder circuit. If not used this input must be held low. + ME_CDS: in std_logic; -- HD6408-output: high occurs during output of decoded data which was preced + -- by a command synchronizing character. Low indicares a data sync. + ME_SDO: in std_logic; -- HD6408-output: serial data out delivers received data in correct NRZ format. + ME_DSC: in std_logic; -- HD6408-output: decoder shift clock delivers a frequency (decoder clock : 12), + -- synchronized by the recovered serial data stream. + ME_VW: in std_logic; -- HD6408-output: high indicates receipt of a VALID WORD. + ME_TD: in std_logic; -- HD6408-output: take data is high during receipt of data after identification + -- of a sync pulse and two valid Manchester data bits + + -- decoder/encoder signals of HD6408 ------------------------------------------------------------------------------------ + -- ME_12MHz: out std_logic; -- HD6408-input: is connected on layout to ME_DC (decoder clock) and ME_EC (encoder clock) + + + Mil_BOI: in std_logic; -- HD6408-input: connect positive bipolar receiver, in FPGA directed to the external + -- manchester en/decoder HD6408 via output ME_BOI or to the internal FPGA + -- vhdl manchester macro. + Mil_BZI: in std_logic; -- HD6408-input: connect negative bipolar receiver, in FPGA directed to the external + -- manchester en/decoder HD6408 via output ME_BZI or to the internal FPGA + -- vhdl manchester macro. + Sel_Mil_Drv: buffer std_logic; -- HD6408-output: active high, enable the external open collector driver to the transformer + nSel_Mil_Rcv: out std_logic; -- HD6408-output: active low, enable the external differtial receive circuit. + Mil_nBOO: out std_logic; -- HD6408-output: connect bipolar positive output to external open collector driver of + -- the transformer. Source is the external manchester en/decoder HD6408 via + -- nME_BOO or the internal FPGA vhdl manchester macro. + Mil_nBZO: out std_logic; -- HD6408-output: connect bipolar negative output to external open collector driver of + -- the transformer. Source is the external manchester en/decoder HD6408 via + -- nME_BZO or the internal FPGA vhdl manchester macro. + nLed_Mil_Rcv: out std_logic; + nLed_Mil_Trm: out std_logic; + nLed_Mil_Err: out std_logic; + error_limit_reached:out std_logic; + Mil_Decoder_Diag_p: out std_logic_vector(15 downto 0); + Mil_Decoder_Diag_n: out std_logic_vector(15 downto 0); + timing: in std_logic; + nLed_Timing: out std_logic; + dly_intr_o: out std_logic; + nLed_Fifo_ne: out std_logic; + ev_fifo_ne_intr_o: out std_logic; + Interlock_Intr_i: in std_logic; + Data_Rdy_Intr_i: in std_logic; + Data_Req_Intr_i: in std_logic; + Interlock_Intr_o: out std_logic; + Data_Rdy_Intr_o: out std_logic; + Data_Req_Intr_o: out std_logic; + nLed_Interl: out std_logic; + nLed_Dry: out std_logic; + nLed_Drq: out std_logic; + every_ms_intr_o: out std_logic; + lemo_data_o: out std_logic_vector(4 downto 1); + lemo_nled_o: out std_logic_vector(4 downto 1); + lemo_out_en_o: out std_logic_vector(4 downto 1); + lemo_data_i: in std_logic_vector(4 downto 1):= (others => '0'); + nsig_wb_err: out std_logic ; -- '0' => gestretchte wishbone access Fehlermeldung + n_tx_req_led : OUT STD_LOGIC ; -- low solange mindestens ein txreq ansteht + n_rx_avail_led: OUT STD_LOGIC + ); +end component wb_mil_scu; + +-- +-- component wb_mil_scu_v2 IS +-- generic ( +-- Clk_in_Hz: INTEGER := 125_000_000 -- Um die Flanken des Manchester-Datenstroms von 1Mb/s genau genug ausmessen zu koennen +-- -- (kuerzester Flankenabstand 500 ns), muss das Makro mit mindestens 20 Mhz getaktet werden. +-- ); +-- port ( +-- clk_i: in std_logic; +-- nRst_i: in std_logic; +-- slave_i: in t_wishbone_slave_in; +-- slave_o: out t_wishbone_slave_out; +-- +-- -- encoder (transmiter) signals of HD6408 -------------------------------------------------------------------------------- +-- nME_BOO: in std_logic; -- HD6408-output: transmit bipolar positive. +-- nME_BZO: in std_logic; -- HD6408-output: transmit bipolar negative. +-- +-- ME_SD: in std_logic; -- HD6408-output: '1' => send data is active. +-- ME_ESC: in std_logic; -- HD6408-output: encoder shift clock for shifting data into the encoder. The +-- -- encoder samples ME_SDI on low-to-high transition of ME_ESC. +-- ME_SDI: out std_logic; -- HD6408-input: serial data in accepts a serial data stream at a data rate +-- -- equal to encoder shift clock. +-- ME_EE: out std_logic; -- HD6408-input: a high on encoder enable initiates the encode cycle. +-- -- (Subject to the preceding cycle being completed). +-- ME_SS: out std_logic; -- HD6408-input: sync select actuates a Command sync for an input high +-- -- and data sync for an input low. +-- +-- -- decoder (receiver) signals of HD6408 --------------------------------------------------------------------------------- +-- ME_BOI: out std_logic; -- HD6408-input: A high input should be applied to bipolar one in when the bus is in its +-- -- positive state, this pin must be held low when the Unipolar input is used. +-- ME_BZI: out std_logic; -- HD6408-input: A high input should be applied to bipolar zero in when the bus is in its +-- -- negative state. This pin must be held high when the Unipolar input is used. +-- ME_UDI: out std_logic; -- HD6408-input: With ME_BZI high and ME_BOI low, this pin enters unipolar data in to the +-- -- transition finder circuit. If not used this input must be held low. +-- ME_CDS: in std_logic; -- HD6408-output: high occurs during output of decoded data which was preced +-- -- by a command synchronizing character. Low indicares a data sync. +-- ME_SDO: in std_logic; -- HD6408-output: serial data out delivers received data in correct NRZ format. +-- ME_DSC: in std_logic; -- HD6408-output: decoder shift clock delivers a frequency (decoder clock : 12), +-- -- synchronized by the recovered serial data stream. +-- ME_VW: in std_logic; -- HD6408-output: high indicates receipt of a VALID WORD. +-- ME_TD: in std_logic; -- HD6408-output: take data is high during receipt of data after identification +-- -- of a sync pulse and two valid Manchester data bits +-- +-- -- decoder/encoder signals of HD6408 ------------------------------------------------------------------------------------ +-- -- ME_12MHz: out std_logic; -- HD6408-input: is connected on layout to ME_DC (decoder clock) and ME_EC (encoder clock) +-- +-- +-- Mil_BOI: in std_logic; -- connect positive bipolar receiver, in FPGA directed to the external +-- -- manchester en/decoder HD6408 via output ME_BOI or to the internal FPGA +-- -- vhdl manchester macro. +-- Mil_BZI: in std_logic; -- connect negative bipolar receiver, in FPGA directed to the external +-- -- manchester en/decoder HD6408 via output ME_BZI or to the internal FPGA +-- -- vhdl manchester macro. +-- Sel_Mil_Drv: out std_logic; -- HD6408-output: active high, enable the external open collector driver to the transformer +-- nSel_Mil_Rcv: out std_logic; -- HD6408-output: active low, enable the external differtial receive circuit. +-- Mil_nBOO: out std_logic; -- connect bipolar positive output to external open collector driver of +-- -- the transformer. Source is the external manchester en/decoder HD6408 via +-- -- nME_BOO or the internal FPGA vhdl manchester macro. +-- Mil_nBZO: out std_logic; -- connect bipolar negative output to external open collector driver of +-- -- the transformer. Source is the external manchester en/decoder HD6408 via +-- -- nME_BZO or the internal FPGA vhdl manchester macro. +-- nLed_Mil_Rcv: out std_logic; +-- nLed_Mil_Trm: out std_logic; +-- nLed_Mil_Err: out std_logic; +-- error_limit_reached:out std_logic; +-- Mil_Decoder_Diag_p: out std_logic_vector(15 downto 0); +-- Mil_Decoder_Diag_n: out std_logic_vector(15 downto 0); +-- timing: in std_logic; +-- nLed_Timing: out std_logic; +-- dly_intr_o: out std_logic; +-- nLed_Fifo_ne: out std_logic; +-- ev_fifo_ne_intr_o: out std_logic; +-- Interlock_Intr_i: in std_logic; +-- Data_Rdy_Intr_i: in std_logic; +-- Data_Req_Intr_i: in std_logic; +-- Interlock_Intr_o: out std_logic; +-- Data_Rdy_Intr_o: out std_logic; +-- Data_Req_Intr_o: out std_logic; +-- nLed_Interl: out std_logic; +-- nLed_Dry: out std_logic; +-- nLed_Drq: out std_logic; +-- every_ms_intr_o: out std_logic; +-- lemo_data_o: out std_logic_vector(4 downto 1); +-- lemo_nled_o: out std_logic_vector(4 downto 1); +-- lemo_out_en_o: out std_logic_vector(4 downto 1); +-- lemo_data_i: in std_logic_vector(4 downto 1):= (others => '0'); +-- nsig_wb_err: out std_logic -- '0' => gestretchte wishbone access Fehlermeldung +-- +-- ); +-- end component wb_mil_scu_v2; + +component event_processing is + generic ( + clk_in_hz: INTEGER := 125_000_000 -- Um die Flanken des Manchester-Datenstroms von 1Mb/s genau genug ausmessen zu koennen + -- (kuerzester Flankenabstand 500 ns), muss das Makro mit mindestens 20 Mhz getaktet werden. + ); + port ( + ev_filt_12_8b: in std_logic; + ev_filt_on: in std_logic; + ev_reset_on: in std_logic; + puls1_frame: in std_logic; + puls2_frame: in std_logic; + timing_i: in std_logic; + clk_i: in std_logic; + nRst_i: in std_logic; + wr_filt_ram: in std_logic; + rd_filt_ram: in std_logic; + rd_ev_fifo: in std_logic; + clr_ev_fifo: in std_logic; + filt_addr: in std_logic_vector(filter_addr_width-1 downto 0); + filt_data_i: in std_logic_vector(filter_data_width-1 downto 0); + stall_o: out std_logic; + read_port_o: out std_logic_vector(15 downto 0); + ev_fifo_ne: out std_logic; + ev_fifo_full: out std_logic; + ev_timer_res: out std_logic; + ev_puls1: out std_logic; + ev_puls2: out std_logic; + timing_received: out std_logic + ); +end component event_processing; + +component mil_pll is + port( + inclk0: in std_logic; + c0: out std_logic; + locked: out std_logic); +end component mil_pll; + +constant c_mil_irq_ctrl_sdb : t_sdb_device := ( + abi_class => x"0000", -- undocumented device + abi_ver_major => x"01", + abi_ver_minor => x"01", + wbd_endian => c_sdb_endian_big, + wbd_width => x"7", -- 8/16/32-bit port granularity + sdb_component => ( + addr_first => x"0000000000000000", + addr_last => x"00000000000000ff", + product => ( + vendor_id => x"0000000000000651", -- GSI + device_id => x"9602eb72", + version => x"00000001", + date => x"20170131", + name => "IRQ_MASTER_CTRL "))); + +end package wb_mil_scu_pkg; diff --git a/testbench/tr_simulation/gsi_pexarria5/wb_scu_bus.vhd b/testbench/tr_simulation/gsi_pexarria5/wb_scu_bus.vhd new file mode 100644 index 0000000000..4a71648988 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/wb_scu_bus.vhd @@ -0,0 +1,1083 @@ +------------------------------------------------------------------------------- +-- Title : Scalable Control Unit Bus Interface +-- Project : SCU +------------------------------------------------------------------------------- +-- File : scu_bus_master.vhd +-- Author : Wolfgang Panschow +-- Company : GSI +-- Created : 2009-08-17 +-- Last update: 2012-07-19 +-- Platform : FPGA-generics +-- Standard : VHDL '93 +------------------------------------------------------------------------------- +-- Description: +-- +-- Master Bus Interface for the SCU Bus +------------------------------------------------------------------------------- +-- Revisions : +-- Date Version Author Description +-- 2009-08-17 1.0 W.Panschow Created +-- 2009-08-17 1.1 W.Panschow +-- 2009-08-17 2.0 W.Panschow +-- 2012-07-19 2.1 S.Rauch switched to numeric_std +-- 2012-07-19 2.2 W.Panschow a) address decoding of internal registers now 16 bit deep +-- b) multicast slave write implemented +------------------------------------------------------------------------------- + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use ieee.numeric_std.all; + +use work.wishbone_pkg.all; +use work.genram_pkg.all; + + +ENTITY wb_scu_bus IS + + GENERIC( + g_interface_mode : t_wishbone_interface_mode := CLASSIC; + g_address_granularity : t_wishbone_address_granularity := WORD; + CLK_in_Hz : INTEGER := 100000000; + Time_Out_in_ns : INTEGER := 350; + dly_multicast_dt_in_ns : INTEGER := 200; + Sel_dly_in_ns : INTEGER := 30; -- delay to the I/O pins is not included + Sel_release_in_ns : INTEGER := 30; -- delay to the I/O pins is not included + D_Valid_to_DS_in_ns : INTEGER := 30; -- delay to the I/O pins is not included + Timing_str_in_ns : INTEGER := 80; -- delay to the I/O pins is not included + Test : INTEGER RANGE 0 TO 1 := 0 + ); + +PORT( + + -- Wishbone + slave_i : in t_wishbone_slave_in; + slave_o : out t_wishbone_slave_out; + + srq_active : out std_logic_vector(11 downto 0); -- vector of slave service requests + + clk : in std_logic; + nrst : in std_logic; + + Timing_In : in std_logic_vector(31 downto 0) := (others => '0'); + Start_Timing_Cycle : in std_logic := '0'; + + SCUB_Data : INOUT STD_LOGIC_VECTOR(15 DOWNTO 0); + nSCUB_DS : OUT STD_LOGIC; -- SCU_Bus Data Strobe, low active. + nSCUB_Dtack : IN STD_LOGIC; -- SCU_Bus Data Acknowledge, low active. + SCUB_Addr : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); -- Address Bus of SCU_Bus + SCUB_RDnWR : OUT STD_LOGIC; -- Read/Write Signal of SCU_Bus. Read is active high. + -- Direction seen from this marco. + nSCUB_SRQ_Slaves : IN STD_LOGIC_VECTOR(11 DOWNTO 0); -- Input of service requests up to 12 SCU_Bus slaves, active low. + nSCUB_Slave_Sel : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -- Output select one or more of 12 SCU_Bus slaves, active low. + nSCUB_Timing_Cycle : OUT STD_LOGIC; -- Strobe to signal a timing cycle on SCU_Bus, active low. + nSel_Ext_Data_Drv : OUT STD_LOGIC -- select for external data transceiver to the SCU_Bus, active low. + ); + +END wb_scu_bus; + +ARCHITECTURE Arch_SCU_Bus_Master OF wb_scu_bus IS + + + signal Wr_Data : std_logic_vector(15 downto 0); -- IN wite data to SCU_Bus, or internal FPGA register + signal Rd_Data : std_logic_vector(15 downto 0); -- OUT read data from SCU_Bus, or internal FPGA register + signal Adr : std_logic_vector(15 downto 0); -- IN + signal Slave_Nr : std_logic_vector(3 downto 0); -- IN 0x0 => internal access, 0x1 to 0xC => slave 1 to 12 access + signal Start_Cycle : std_logic; -- IN start data access from/to SCU_Bus + signal Wr : std_logic; -- IN direction of SCU_Bus data access, write is active high. + signal Rd : std_logic; -- IN + + signal SCU_Bus_Access_Active : std_logic; -- OUT active high signal: read or write access to SCUB is not finished + -- the access can be terminated bei an error, so look also to the + -- access error bis in the status register + signal Intr : std_logic; -- OUT One or more slave interrupts, or internal Interrupts (like + -- SCU_Bus-busy or SCU_Bus-timeout) are active. Intr is ative high. + signal SCUB_Rd_Err_no_Dtack : STD_LOGIC; + signal SCUB_Rd_Fin : STD_LOGIC; + signal SCUB_Rd_active : STD_LOGIC; + signal SCUB_Wr_Err_no_Dtack : STD_LOGIC; + signal SCUB_Wr_Fin : STD_LOGIC; + signal SCUB_Wr_active : STD_LOGIC; + signal SCUB_Ti_Cyc_Err : STD_LOGIC; + signal SCUB_Ti_Fin : STD_LOGIC; + signal SCU_Wait_Request : STD_LOGIC; -- active high signal: SCU_Bus is busy should be connect to avalon-bus wait. + + + + FUNCTION set_vers_or_revi( vers_or_revi, Test: INTEGER) RETURN INTEGER IS + BEGIN + IF test > 0 THEN + RETURN 0; + ELSE + RETURN vers_or_revi; + END IF; + END set_vers_or_revi; + + CONSTANT C_SCUB_Version : INTEGER RANGE 0 TO 255 := set_vers_or_revi(2, Test); -- define the version of this macro + CONSTANT C_SCUB_Revision : INTEGER RANGE 0 TO 255 := set_vers_or_revi(2, Test); -- define the revision of this macro + + CONSTANT Clk_in_ps : INTEGER := 1000000000 / (Clk_in_Hz / 1000); + CONSTANT Clk_in_ns : INTEGER := 1000000000 / Clk_in_Hz; + + + FUNCTION set_ge_1 (a : INTEGER) RETURN INTEGER IS + BEGIN + IF a > 1 THEN + RETURN a; + ELSE + RETURN 1; + END IF; + END set_ge_1; + + FUNCTION How_many_Bits (int: INTEGER) RETURN INTEGER IS + + VARIABLE i, tmp : INTEGER; + + BEGIN + tmp := int; + i := 0; + WHILE tmp > 0 LOOP + tmp := tmp / 2; + i := i + 1; + END LOOP; + RETURN i; + END How_many_bits; + + + CONSTANT c_multicast_slave_acc : STD_LOGIC_VECTOR(slave_Nr'range) := X"D"; + + CONSTANT C_Sel_dly_cnt : INTEGER := set_ge_1(Sel_dly_in_ns * 1000 / Clk_in_ps)-2; -- -2 because counter needs two more clock for unerflow + SIGNAL S_Sel_dly_cnt : unsigned(How_many_Bits(C_Sel_dly_cnt) DOWNTO 0); + + CONSTANT C_Sel_release_cnt : INTEGER := set_ge_1(Sel_release_in_ns * 1000 / Clk_in_ps)-2; -- -2 because counter needs two more clock for unerflow + SIGNAL S_Sel_release_cnt : unsigned(How_many_Bits(C_Sel_release_cnt) DOWNTO 0); + + CONSTANT C_Timing_str_cnt : INTEGER := set_ge_1(Timing_str_in_ns * 1000 / Clk_in_ps)-2; -- -2 because counter needs two more clock for unerflow + SIGNAL S_Timing_str_cnt : unsigned(How_many_Bits(C_Timing_str_cnt) DOWNTO 0); + + CONSTANT C_D_Valid_to_DS_cnt : INTEGER := set_ge_1(D_Valid_to_DS_in_ns * 1000 / Clk_in_ps)-2; -- -2 because counter needs two more clock for unerflow + SIGNAL S_D_Valid_to_DS_cnt : unsigned(How_many_Bits(C_D_Valid_to_DS_cnt) DOWNTO 0); + + CONSTANT C_time_out_cnt : INTEGER := set_ge_1(time_out_in_ns * 1000 / Clk_in_ps)-2; -- -2 because counter needs two more clock for unerflow + SIGNAL s_time_out_cnt : unsigned(How_many_Bits(C_time_out_cnt) DOWNTO 0); + + CONSTANT c_dly_multicast_dt_cnt : INTEGER := set_ge_1(dly_multicast_dt_in_ns * 1000 / Clk_in_ps)-2; -- -2 because counter needs two more clock for unerflow + SIGNAL s_dly_multicast_dt_cnt : unsigned(How_many_Bits(c_dly_multicast_dt_cnt) DOWNTO 0); + + constant c_adr_width : INTEGER := 16; -- define how many address bits are used to decode the internal FPGA-register + constant C_Status_Adr : unsigned(15 downto 0) := x"0000"; + constant C_Global_Intr_Ena_Adr : unsigned(15 downto 0) := x"0002"; + constant C_Vers_Revi_Adr : unsigned(15 downto 0) := x"0004"; + constant C_SRQ_Ena_Adr : unsigned(15 downto 0) := x"0006"; + constant C_SRQ_Active_Adr : unsigned(15 downto 0) := x"0008"; + constant C_SRQ_In_Adr : unsigned(15 downto 0) := x"000A"; + constant C_Wr_Multi_Slave_Sel_Adr : unsigned(15 downto 0) := x"000C"; + constant C_Bus_master_intern_Echo_1_Adr : unsigned(15 downto 0) := x"000E"; + constant C_Sw_Tag_Low_Adr : unsigned(15 downto 0) := x"0010"; + constant C_Sw_Tag_High_Adr : unsigned(15 downto 0) := x"0012"; + + + + SIGNAL s_reset : STD_LOGIC; + SIGNAL S_First_Sync_Reset : STD_LOGIC; + + SIGNAL S_SCUB_Addr : STD_LOGIC_VECTOR(15 DOWNTO 0); + SIGNAL S_SCUB_RDnWR : STD_LOGIC; + SIGNAL S_SCUB_DS : STD_LOGIC; + + SIGNAL S_Slave_Nr : STD_LOGIC_VECTOR(3 DOWNTO 0); + SIGNAL S_SCUB_Slave_Sel : STD_LOGIC_VECTOR(nSCUB_Slave_Sel'range); + SIGNAL S_Slave_Sel : STD_LOGIC_VECTOR(nSCUB_Slave_Sel'range); + SIGNAL S_Multi_Slave_Sel : STD_LOGIC_VECTOR(nSCUB_Slave_Sel'range); + SIGNAL S_Multi_Wr_Flag : STD_LOGIC; + + SIGNAL S_Start_Cycle : STD_LOGIC; + + SIGNAL S_Sel_Ext_Data_Drv : STD_LOGIC; + + SIGNAL ext_rd_data : STD_LOGIC_VECTOR(15 DOWNTO 0); + signal int_rd_data : std_logic_vector(15 downto 0); + + SIGNAL S_Start_SCUB_Rd : STD_LOGIC; + + SIGNAL S_Start_SCUB_Wr : STD_LOGIC; + SIGNAL S_Wr_Data : STD_LOGIC_VECTOR(15 DOWNTO 0); -- store write pattern + + SIGNAL S_Ti_Cy : STD_LOGIC_VECTOR(1 DOWNTO 0); -- shift reg to generate pulse + SIGNAL S_Start_Ti_Cy : STD_LOGIC; + + SIGNAL S_nSync_Dtack : std_logic_vector(1 downto 0); + SIGNAL S_Last_Cycle_Timing : STD_LOGIC; + SIGNAL S_SCUB_Timing_Cycle : STD_LOGIC; + + SIGNAL S_SCUB_Rd_Err_no_Dtack : STD_LOGIC; + SIGNAL S_SCUB_Wr_Err_no_Dtack : STD_LOGIC; + + SIGNAL S_Ti_Cyc_Err : STD_LOGIC; + SIGNAL S_Timing_In : STD_LOGIC_VECTOR(31 DOWNTO 0); -- store input timing_in + SIGNAL S_SCUB_Ti_Fin : STD_LOGIC; + + SIGNAL S_SRQ_Ena : STD_LOGIC_VECTOR(nSCUB_SRQ_Slaves'range); + SIGNAL S_SRQ_Sync : STD_LOGIC_VECTOR(nSCUB_SRQ_Slaves'range); + SIGNAL S_SRQ_active : STD_LOGIC_VECTOR(nSCUB_SRQ_Slaves'range); + SIGNAL S_one_or_more_SRQs_act : STD_LOGIC; + + SIGNAL S_Status : STD_LOGIC_VECTOR(15 DOWNTO 0); + + SIGNAL S_SCUB_Version : std_logic_vector(7 DOWNTO 0); + SIGNAL S_SCUB_Revision : std_logic_vector(7 DOWNTO 0); + + SIGNAL S_SCU_Bus_Access_Active : STD_LOGIC; + SIGNAL s_stall : STD_LOGIC; + + SIGNAL S_Invalid_Slave_Nr : STD_LOGIC; + SIGNAL S_Invalid_Intern_Acc : STD_LOGIC; + + SIGNAL S_Intern_Echo_1 : STD_LOGIC_VECTOR(15 DOWNTO 0); + + signal s_global_intr_ena : std_logic_vector(15 downto 0); + signal s_sw_tag_low : std_logic_vector(15 downto 0); + signal s_sw_tag_high : std_logic_vector(15 downto 0); + + signal s_int_ack : std_logic; + signal s_ext_ack : std_logic; + signal s_ext_read_err : std_logic; + signal s_adr : std_logic_vector(15 downto 0); + signal s_ack : std_logic; + signal s_err : std_logic; + + signal wr_acc : std_logic; + signal rd_acc : std_logic; + + signal tag_fifo_we : std_logic; + signal tag_fifo_rd : std_logic; + signal tag_fifo_empty : std_logic; + signal tag_fifo_full : std_logic; + signal tag_fifo_q : std_logic_vector(31 downto 0); + signal tag_fifo_in : std_logic_vector(31 downto 0); + + signal s_sw_tag : std_logic; + signal s_adr_c_adr : unsigned(c_adr_width-1 downto 0); + + TYPE T_SCUB_SM IS ( + Idle, + S_Rd_Cyc, -- start read SCU_Bus cycle + Rd_Cyc, -- read SCU_Bus read active + E_Rd_Cyc, -- end read SCU_Bus + F_Rd_Cyc, -- finish read SCU_Bus + TO_Rd_Cyc, -- time out read cycle + S_Wr_Cyc, -- start write SCU_Bus cycle + Wr_Cyc, -- write SCU_Bus active + E_Wr_Cyc, -- end write SCU_Bus + F_Wr_Cyc, -- finish write SCU_Bus + TO_Wr_Cyc, -- time out write cycle + S_Ti_Cyc, -- start Timing cycle + Ti_Cyc, -- Timing cycle active + E_Ti_Cyc, -- end Timing cycle + F_Ti_Cyc -- finish time cycle + ); + + SIGNAL SCUB_SM : T_SCUB_SM; + + type wb_ctrl_type is ( idle, cyc_wait, cyc_start, int_acc, ext_stall, ext_err, ext_acc, invalid_slave); + + signal wb_state : wb_ctrl_type; + + CONSTANT bit_scub_wr_err: INTEGER := 0; + CONSTANT bit_scub_rd_err: INTEGER := 1; + CONSTANT bit_ti_cyc_err: INTEGER := 2; + CONSTANT bit_inval_intern_acc: INTEGER := 3; + CONSTANT bit_inval_slave_nr: INTEGER := 4; + CONSTANT bit_scub_srqs_active: INTEGER := 5; + +BEGIN + +-- mapping of the wishbone signals +Wr_Data <= slave_i.dat(15 downto 0) when slave_i.sel(0) = '1' else slave_i.dat(31 downto 16); +slave_o.dat(31 downto 16) <= Rd_Data; +slave_o.dat(15 downto 0) <= Rd_Data; +Adr <= slave_i.adr(16 downto 1); +Slave_Nr <= slave_i.adr(20 downto 17); +Start_Cycle <= slave_i.cyc and slave_i.stb; +Wr <= slave_i.we; +Rd <= not slave_i.we; +slave_o.stall <= s_stall; +slave_o.ack <= s_ack; +slave_o.err <= s_err; +slave_o.rty <= '0'; + + + + + +S_SCUB_Version <= std_logic_vector(to_unsigned(C_SCUB_Version, S_SCUB_Version'length)); -- set the version of this macro +S_SCUB_Revision <= std_logic_vector(to_unsigned(C_SCUB_Revision, S_SCUB_Revision'length)); -- set the revision of this macro + +ASSERT (False) + REPORT "SCU_Bus_Master_Macro: Version --> " & integer'image(C_SCUB_Version) + & ", Revision is --> " & integer'image(C_SCUB_Revision) +SEVERITY NOTE; + + +ASSERT NOT (Clk_in_Hz < 100000000) + REPORT "Achtung Generic Clk_in_Hz ist auf " & integer'image(Clk_in_Hz) + & " gesetzt. Mit der Periodendauer von " & integer'image(Clk_in_ns) + & " ns lassen sich keine genauen Verzoegerungen erzeugen!" + +SEVERITY Warning; + +ASSERT (c_dly_multicast_dt_cnt+2 <= C_time_out_cnt) + REPORT "Achtung der multicast delay count " & integer'image(c_dly_multicast_dt_cnt+2) + & " muss um mindestens 2 kleiner sein als der time_out_cnt = " & integer'image(C_time_out_cnt+2) +SEVERITY Error; + +ASSERT (False) + REPORT "time_out_in_ns = " & integer'image(time_out_in_ns) + & ", Clk_in_ns = " & integer'image(Clk_in_ns) + & ", C_time_out_cnt = " & integer'image(C_time_out_cnt+2) +SEVERITY NOTE; + +ASSERT (False) + REPORT "Sel_dly_in_ns = " & integer'image(Sel_dly_in_ns) + & ", C_Sel_dly_cnt = " & integer'image(C_Sel_dly_cnt+2) + & ", Sel_release_in_ns = " & integer'image(Sel_release_in_ns) + & ", Sel_release_cnt = " & integer'image(C_Sel_release_cnt+2) +SEVERITY NOTE; + +ASSERT (False) + REPORT "Timing_str_in_ns = " & integer'image(Timing_str_in_ns) + & ", C_Timing_str_cnt = " & integer'image(C_Timing_str_cnt+2) + & ", D_Valid_to_DS_in_ns = " & integer'image(D_Valid_to_DS_in_ns) + & ", C_D_Valid_to_DS_cnt = " & integer'image(C_D_Valid_to_DS_cnt+2) +SEVERITY NOTE; + + +P_Reset: PROCESS (clk, nrst) + BEGIN + IF rising_edge(clk) THEN + S_First_Sync_Reset <= nrst; + s_reset <= S_First_Sync_Reset; + END IF; + END PROCESS P_Reset; + + + +S_Status(15) <= '0'; +S_Status(14) <= '0'; +S_Status(13) <= '0'; +S_Status(12) <= '0'; +S_Status(11) <= '0'; +S_Status(10) <= '0'; +S_Status(9) <= '0'; +S_Status(8) <= '0'; +S_Status(7) <= '0'; +S_Status(6) <= '0'; +S_Status(bit_scub_srqs_active) <= S_one_or_more_SRQs_act; +S_Status(bit_inval_slave_nr) <= S_Invalid_Slave_Nr; +S_Status(bit_inval_intern_acc) <= S_Invalid_Intern_Acc; +S_Status(bit_ti_cyc_err) <= S_Ti_Cyc_Err; +S_Status(bit_scub_rd_err) <= S_SCUB_Rd_Err_no_Dtack; +S_Status(bit_scub_wr_err) <= S_SCUB_Wr_Err_no_Dtack; + + +tag_fifo_in <= s_sw_tag_high & s_sw_tag_low when s_sw_tag = '1' else timing_in; + +tag_fifo: generic_sync_fifo +generic map ( + g_data_width => 32, + g_size => 10) + +port map ( + rst_n_i => s_reset, + clk_i => clk, + d_i => tag_fifo_in, + we_i => tag_fifo_we, + q_o => tag_fifo_q, + rd_i => tag_fifo_rd, + + empty_o => tag_fifo_empty, + full_o => tag_fifo_full); + + + + +p_wb_ctrl: process (clk, s_reset) +begin + if s_reset = '0' then + s_stall <= '0'; + s_ext_read_err <= '0'; + s_ack <= '0'; + s_err <= '0'; + wb_state <= idle; + S_Multi_Wr_Flag <= '0'; + S_Start_SCUB_Rd <= '0'; -- reset start SCU_Bus read + S_Start_SCUB_Wr <= '0'; -- reset start SCU_Bus write + + elsif rising_edge(clk) then + + s_ext_read_err <= '0'; + s_stall <= '0'; + s_ack <= '0'; + s_err <= '0'; + S_Multi_Wr_Flag <= '0'; + S_Start_SCUB_Rd <= '0'; -- reset start SCU_Bus read + S_Start_SCUB_Wr <= '0'; -- reset start SCU_Bus write + + + + case wb_state is + + when idle => + S_Multi_Wr_Flag <= '0'; -- clear signal multicast write + if slave_i.cyc = '1' and slave_i.stb = '1' then -- begin of wishbone cycle + if slave_i.sel(0) = '1' and slave_i.adr(1) = '0' then -- fix for LM32 + s_adr <= std_logic_vector(unsigned(adr) + 1); -- register address and slave_nr + else + s_adr <= adr; + end if; + s_slave_nr <= slave_nr; + if Wr = '1' then + S_Wr_Data <= Wr_Data; -- register data + end if; + s_stall <= '1'; -- no pipelining + if tag_fifo_empty = '1' and SCUB_SM = idle then -- no active or planned timing cycle + wb_state <= cyc_start; + else + wb_state <= cyc_wait; + end if; + end if; + + when cyc_wait => + s_stall <= '1'; + if tag_fifo_empty = '1' and SCUB_SM = idle then -- no active or planned timing cycle + wb_state <= cyc_start; + end if; + + when cyc_start => + s_stall <= '1'; + if s_slave_nr = x"0" then -- internal access + wb_state <= int_acc; + elsif s_slave_nr >= x"1" and s_slave_nr <= x"c" then -- external bus access + if Wr = '1' then + S_Start_SCUB_Wr <= '1'; -- store write request + --S_Wr_Data <= Wr_Data; -- store write pattern + elsif Rd = '1' then + S_Start_SCUB_Rd <= '1'; -- store read request + end if; + wb_state <= ext_stall; + elsif s_slave_nr = c_multicast_slave_acc then + if Wr = '1' then + S_Start_SCUB_Wr <= '1'; -- store write request + --S_Wr_Data <= Wr_Data; -- store write pattern + S_Multi_Wr_Flag <= '1'; -- signal multicast write + wb_state <= ext_stall; -- multicast read not allowed + else + wb_state <= ext_err; -- multicast read not allowed + end if; + else -- slave number invalid + wb_state <= invalid_slave; + end if; + + when int_acc => -- ack/err only for one clock cycle + S_Multi_Wr_Flag <= '0'; -- clear signal multicast write + if S_Invalid_Intern_Acc = '1' then + Rd_Data <= x"dead"; + s_err <= '1'; + elsif s_int_ack = '1' then + Rd_Data <= int_rd_data; + s_ack <= '1'; + end if; + wb_state <= idle; + + when ext_stall => + s_stall <= '1'; -- no pipelining, stall until dtack or timeout + if S_SCUB_Rd_Err_no_Dtack = '1' or S_SCUB_Wr_Err_no_Dtack = '1' then + wb_state <= ext_err; + elsif s_ext_ack = '1' then + Rd_Data <= ext_rd_data; + wb_state <= ext_acc; + end if; + + when ext_acc => + S_Multi_Wr_Flag <= '0'; -- clear signal multicast write + s_ack <= '1'; + wb_state <= idle; + + when ext_err => + S_Multi_Wr_Flag <= '0'; -- clear signal multicast write + Rd_Data <= x"dead"; + s_err <= '1'; + wb_state <= idle; + + when invalid_slave => + Rd_Data <= x"dead"; + s_err <= '1'; + wb_state <= idle; + end case; + + end if; +end process p_wb_ctrl; + s_adr_c_adr <= unsigned(s_adr(c_adr_width-1 downto 0)); + + +wr_acc <= '1' when Wr = '1' and wb_state = cyc_start else '0'; +rd_acc <= '1' when Rd = '1' and wb_state = cyc_start else '0'; + +int_regs: process (clk, s_reset) +begin + if s_reset = '0' then + S_Multi_Slave_Sel <= (others => '0'); -- clear Register which contains the bit_vector + -- to address multible slaves during one SCU write access + S_SRQ_Ena <= (others => '0'); -- all SRQs[12..1] are disabled + S_Intern_Echo_1 <= (others => '0'); + S_Global_Intr_Ena <= (others => '0'); + s_sw_tag_low <= (others => '0'); + s_sw_tag_high <= (others => '0'); + + S_SCUB_Rd_Err_no_Dtack <= '0'; -- reset read timeout flag + S_SCUB_Wr_Err_no_Dtack <= '0'; -- reset write timeout flag + S_Ti_Cyc_Err <= '0'; -- reset timing error flag + S_Start_Ti_Cy <= '0'; -- reset start SCU_Bus timing cycle + S_Ti_Cy(S_Ti_Cy'range) <= (OTHERS => '0'); -- shift reg to generate pulse + + s_Invalid_Intern_Acc <= '0'; + S_Invalid_Slave_Nr <= '0'; + s_int_ack <= '0'; + tag_fifo_we <= '0'; + s_sw_tag <= '0'; + + elsif rising_edge(clk) then + S_SCUB_Rd_Err_no_Dtack <= '0'; + S_SCUB_Wr_Err_no_Dtack <= '0'; + tag_fifo_we <= '0'; + + if wb_state = idle then -- clear ack and err for next cycle + s_int_ack <= '0'; + S_Invalid_Intern_Acc <= '0'; + end if; + + + if SCUB_SM = TO_Rd_Cyc then + S_SCUB_Rd_Err_no_Dtack <= '1'; -- SCU_Bus read error no dtack + end if; + + if SCUB_SM = TO_Wr_Cyc then + S_SCUB_Wr_Err_no_Dtack <= '1'; -- SCU_Bus write error no dtack + end if; + + + case s_adr_c_adr is + when C_Status_Adr => + if wr_acc = '1' then + s_int_ack <= '1'; + if Wr_Data(bit_scub_wr_err) = '1' then -- look to the bit position in status + S_SCUB_Wr_Err_no_Dtack <= '0'; -- reset SCU_Bus write error no dtack. + end if; + if Wr_Data(bit_scub_rd_err) = '1' then -- look to the bit position in status! + S_SCUB_Rd_Err_no_Dtack <= '0'; -- reset SCU_Bus read error no dtack + end if; + if Wr_Data(bit_ti_cyc_err) = '1' then -- look to the bit position in status! + S_Ti_Cyc_Err <= '0'; -- reset SCU_Bus timing error + end if; + if Wr_Data(bit_inval_intern_acc) = '1' then -- look to the bit position in status! + S_Invalid_Intern_Acc <= '0'; -- reset invalid internal register access error + end if; + if Wr_Data(bit_inval_slave_nr) = '1' then -- look to the bit position in status! + S_Invalid_Slave_Nr <= '0'; -- reset invalid slave number error + end if; + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= S_Status; + end if; + + when C_Global_Intr_Ena_Adr => + if wr_acc = '1' then + s_int_ack <= '1'; + S_Global_Intr_Ena(bit_scub_wr_err) <= Wr_Data(bit_scub_wr_err); + S_Global_Intr_Ena(bit_scub_rd_err) <= Wr_Data(bit_scub_rd_err); + S_Global_Intr_Ena(bit_ti_cyc_err) <= Wr_Data(bit_ti_cyc_err); + S_Global_Intr_Ena(bit_inval_intern_acc) <= Wr_Data(bit_inval_intern_acc); + S_Global_Intr_Ena(bit_inval_slave_nr) <= Wr_Data(bit_inval_slave_nr); + S_Global_Intr_Ena(bit_scub_srqs_active) <= Wr_Data(bit_scub_srqs_active); + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= S_Global_Intr_Ena; + end if; + + when C_SRQ_Ena_Adr => + if wr_acc = '1' then + s_int_ack <= '1'; + S_SRQ_Ena <= Wr_Data(nSCUB_SRQ_Slaves'range); + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= ("0000" & S_SRQ_Ena); + end if; + + when C_Srq_active_Adr => + if wr_acc = '1' then + S_Invalid_Intern_Acc <= '1'; + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= ("0000" & S_SRQ_Active); + end if; + + when C_Srq_In_Adr => + if wr_acc = '1' then + S_Invalid_Intern_Acc <= '1'; + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= ("0000" & S_SRQ_Sync); + end if; + + when C_Vers_Revi_Adr => + if wr_acc = '1' then + S_Invalid_Intern_Acc <= '1'; + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= (S_SCUB_Version & S_SCUB_Revision); + end if; + + when C_Wr_Multi_Slave_Sel_Adr => + if wr_acc = '1' then + s_int_ack <= '1'; + S_Multi_Slave_Sel <= Wr_Data(nSCUB_Slave_Sel'range); + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= ("0000" & S_Multi_Slave_Sel); + end if; + + when C_Bus_master_intern_Echo_1_Adr => + if wr_acc = '1' then + s_int_ack <= '1'; + S_Intern_Echo_1 <= Wr_Data; + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= S_Intern_Echo_1; + end if; + + when C_Sw_Tag_Low_Adr => + if wr_acc = '1' then + s_int_ack <= '1'; + s_sw_tag_low <= Wr_Data; -- store the low 16Bit of the software triggered SCUbus tag + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= s_sw_tag_low; + end if; + + when C_Sw_Tag_High_Adr => + if wr_acc = '1' then + s_int_ack <= '1'; + s_sw_tag <= '1'; + s_sw_tag_high <= Wr_Data; -- store the high 16Bit of the software triggered SCUbus tag + elsif rd_acc = '1' then + s_int_ack <= '1'; + int_rd_data <= s_sw_tag_high; + end if; + + when others => + if wb_state = cyc_start then + S_Invalid_Intern_Acc <= '1'; + end if; + end case; + + S_Ti_Cy(S_Ti_Cy'range) <= (S_Ti_Cy(S_Ti_Cy'high-1 DOWNTO 0) & Start_Timing_Cycle); -- shift reg to generate pulse + + + if S_Ti_Cy = "01" or (s_sw_tag = '1' and s_ack = '1') then -- positive edge off start_timing_cycle + if tag_fifo_full = '1' then + S_Ti_Cyc_Err <= '1'; -- FIFO full + else + S_Start_Ti_Cy <= '1'; -- store timing request + tag_fifo_we <= '1'; -- store tag in fifo + end if; + end if; + + if SCUB_SM = E_Ti_Cyc then + S_Start_Ti_Cy <= '0'; + s_sw_tag <= '0'; + end if; + + + end if; +end process; + + + + + +P_SCUB_SM: process (clk, s_reset) +begin + if s_reset = '0' then + SCUB_SM <= Idle; + S_Last_Cycle_Timing <= '0'; + S_SCUB_Timing_Cycle <= '0'; + S_SCUB_RDnWR <= '1'; + S_SCUB_DS <= '0'; + S_SCUB_Slave_Sel <= (others => '0'); + S_Sel_Ext_Data_Drv <= '0'; + tag_fifo_rd <= '0'; + + elsif rising_edge(clk) then + + IF Test = 0 THEN + S_nSync_Dtack(0) <= nSCUB_Dtack; -- SCU_Bus_Dtack is an asynchronous Signal. S_nSync_Dtack is the synchronized nSCU_Bus_Dtack + s_nSync_Dtack(1) <= s_nSync_Dtack(0); + ELSE + S_nSync_Dtack(0) <= not S_SCUB_DS; -- during test mode S_nSync_dtack is gererated with the S_SCUB_DS signal + END IF; + + if S_nSync_Dtack(1) = '0' and s_nSync_Dtack(0) = '1' then -- ack pulse from Dtack + s_ext_ack <= '1'; + else + s_ext_ack <= '0'; + end if; + + tag_fifo_rd <= '0'; + + case SCUB_SM is -- = SCU_Bus State Machine + + when Idle => + S_Sel_dly_cnt <= to_unsigned(C_Sel_dly_cnt, S_Sel_dly_cnt'length); + S_D_Valid_to_DS_cnt <= to_unsigned(C_D_Valid_to_DS_cnt, S_D_Valid_to_DS_cnt'length); + S_Sel_release_cnt <= to_unsigned(C_Sel_release_cnt, S_Sel_release_cnt'length); + S_SCUB_Slave_Sel <= (others => '0'); + S_SCUB_Addr <= (others => '1'); + S_SCUB_RDnWR <= '1'; + S_SCUB_Timing_Cycle <= '0'; + S_SCUB_DS <= '0'; + S_Sel_Ext_Data_Drv <= '0'; + + + --if ((S_Start_SCUB_Rd = '1') and (tag_fifo_empty = '1')) then + if (S_Start_SCUB_Rd = '1') then + S_SCUB_Addr <= s_adr; -- store slave address + SCUB_SM <= S_Rd_Cyc; -- jump to start read cycle + --elsif ((S_Start_SCUB_Wr = '1') and (tag_fifo_empty = '1')) then + elsif (S_Start_SCUB_Wr = '1') then + S_SCUB_Addr <= s_adr; -- store slave address + S_SCUB_RDnWR <= '0'; -- set master writes + SCUB_SM <= S_Wr_Cyc; -- jump to start write cycle + elsif (tag_fifo_empty = '0' and (wb_state = idle or wb_state = cyc_wait)) then + S_SCUB_RDnWR <= '0'; -- set master writes + tag_fifo_rd <= '1'; -- read tag from fifo + SCUB_SM <= S_Ti_Cyc; -- jump to start Timing cycle + else + null; + end if; + + WHEN S_Rd_Cyc => -- start read cycle + S_Sel_Ext_Data_Drv <= '1'; + S_Last_Cycle_Timing <= '0'; -- last SCU_Bus cycle is a data transfer cycle + IF S_Sel_dly_cnt(S_Sel_dly_cnt'high) = '1' THEN + S_SCUB_Slave_Sel <= S_Slave_Sel(11 DOWNTO 0); -- select slave + SCUB_SM <= Rd_Cyc; -- jump to active read cycle + END IF; + + WHEN Rd_Cyc => -- read cycle active + IF S_D_Valid_to_DS_cnt(S_D_Valid_to_DS_cnt'high) = '1' THEN + S_SCUB_DS <= '1'; + IF S_nSync_Dtack(0) = '0' THEN -- wait for Dtack + IF Test = 0 THEN + ext_rd_data <= SCUB_Data; -- during production: read the SCUB_Data bidir buffer + ELSE + ext_rd_data <= S_Wr_Data; -- during test: return the last written data + END IF; + S_SCUB_DS <= '0'; + S_SCUB_Slave_Sel <= (OTHERS => '0'); + SCUB_SM <= E_Rd_Cyc; -- jump to end read cycle + ELSIF s_time_out_cnt(s_time_out_cnt'high) = '1' THEN + S_SCUB_DS <= '0'; + S_SCUB_Slave_Sel <= (OTHERS => '0'); + SCUB_SM <= TO_Rd_Cyc; -- jump to read timeout + END IF; + END IF; + + WHEN TO_Rd_Cyc => -- read timeout + SCUB_SM <= E_Rd_Cyc; -- jump to E_Rd_Cyc + + WHEN E_Rd_Cyc => -- end read cycle + S_Sel_Ext_Data_Drv <= '0'; + IF S_Sel_release_cnt(S_Sel_release_cnt'high) = '1' THEN + SCUB_SM <= F_Rd_Cyc; -- jump to finish read cycle + END IF; + + WHEN F_Rd_Cyc => + SCUB_SM <= Idle; -- jump to Idle + + WHEN S_Wr_Cyc => -- start write cycle + S_Last_Cycle_Timing <= '0'; -- last SCU_Bus cycle is a data transfer cycle + S_Sel_Ext_Data_Drv <= '1'; + IF S_Sel_dly_cnt(S_Sel_dly_cnt'high) = '1' THEN + S_SCUB_Slave_Sel <= S_Slave_Sel(11 DOWNTO 0); -- select slave + SCUB_SM <= Wr_Cyc; -- jump to active write cycle + END IF; + + WHEN Wr_Cyc => -- write cycle active + IF S_D_Valid_to_DS_cnt(S_D_Valid_to_DS_cnt'high) = '1' THEN + S_SCUB_DS <= '1'; + IF (S_Multi_Wr_Flag = '0' and S_nSync_Dtack(0) = '0') -- wait for indivdual slave dtack + OR (S_Multi_Wr_Flag = '1' -- wait for first slave dtack during multicast wr and delay it for slowlier slaves + and s_dly_multicast_dt_cnt(s_dly_multicast_dt_cnt'high) = '1' + and S_nSync_Dtack(0) = '0') + OR (s_time_out_cnt(s_time_out_cnt'high) = '1') -- if no dtack wait for timeout + THEN + S_SCUB_DS <= '0'; + S_Sel_Ext_Data_Drv <= '0'; + S_SCUB_Slave_Sel <= (OTHERS => '0'); + IF s_time_out_cnt(s_time_out_cnt'high) = '0' THEN -- no timeout + SCUB_SM <= E_Wr_Cyc; -- jump to end write cycle + ELSE + SCUB_SM <= TO_Wr_Cyc; -- jump to write timeout + END IF; + END IF; + END IF; + + WHEN TO_Wr_Cyc => -- write timeout + S_SCUB_RDnWR <= '1'; -- set master reades + SCUB_SM <= E_Wr_Cyc; -- jump to Idle + + WHEN E_Wr_Cyc => -- end write cycle + IF S_Sel_release_cnt(S_Sel_release_cnt'high) = '1' THEN + S_SCUB_RDnWR <= '1'; -- set master reades + SCUB_SM <= F_Wr_Cyc; -- jump to finish write cycle + END IF; + + WHEN F_Wr_Cyc => + SCUB_SM <= Idle; -- jump to Idle + + WHEN S_Ti_Cyc => -- start Timing cycle + S_Last_Cycle_Timing <= '1'; -- last SCU_Bus cycle is a timing cycle + + IF S_Sel_dly_cnt(S_Sel_dly_cnt'high) = '1' THEN + + S_Sel_Ext_Data_Drv <= '1'; + S_SCUB_Slave_Sel <= (OTHERS => '1'); -- in this version select all slaves. + S_Timing_str_cnt <= to_unsigned(C_Timing_str_cnt, S_Timing_str_cnt'length); + SCUB_SM <= Ti_Cyc; -- jump to active Timing cycle + END IF; + + WHEN Ti_Cyc => -- Timing cycle active + S_SCUB_Timing_Cycle <= '1'; -- timing cycle signal active + S_SCUB_Addr <= tag_fifo_q(31 downto 16); -- Timing to S_SCUB_Addr + IF S_Timing_str_cnt(S_Timing_str_cnt'high) = '1' THEN + S_SCUB_Timing_Cycle <= '0'; -- timing cycle signal inactive + S_SCUB_Slave_Sel <= (OTHERS => '0'); -- deselect all slaves. + SCUB_SM <= E_Ti_Cyc; -- jump to end Timing cycle + END IF; + + WHEN E_Ti_Cyc => -- end Timing cycle + IF S_Sel_release_cnt(S_Sel_release_cnt'high) = '1' THEN + S_SCUB_RDnWR <= '1'; -- set master reades + S_Sel_Ext_Data_Drv <= '0'; + SCUB_SM <= F_Ti_Cyc; -- jump to finish time cycle + END IF; + + WHEN F_Ti_Cyc => + SCUB_SM <= Idle; -- jump to Idle + + WHEN OTHERS => + SCUB_SM <= Idle; + + END CASE; + + + IF ((SCUB_SM = S_Wr_Cyc) OR (SCUB_SM = S_Rd_Cyc) OR (SCUB_SM = S_Ti_Cyc)) AND S_Sel_dly_cnt(S_Sel_dly_cnt'high) = '0' THEN + S_Sel_dly_cnt <= S_Sel_dly_cnt - 1; + END IF; + + IF ((SCUB_SM = Wr_Cyc) OR (SCUB_SM = Rd_Cyc)) AND S_D_Valid_to_DS_cnt(S_D_Valid_to_DS_cnt'high) = '0' THEN + S_D_Valid_to_DS_cnt <= S_D_Valid_to_DS_cnt - 1; + END IF; + + IF ((SCUB_SM = E_Wr_Cyc) OR (SCUB_SM = E_Rd_Cyc) OR (SCUB_SM = E_Ti_Cyc)) AND S_Sel_release_cnt(S_Sel_release_cnt'high) = '0' THEN + S_Sel_release_cnt <= S_Sel_release_cnt - 1; + END IF; + + IF SCUB_SM = Ti_Cyc AND S_Timing_str_cnt(S_Timing_str_cnt'high) = '0' THEN + S_Timing_str_cnt <= S_Timing_str_cnt - 1; + END IF; + + END IF; +END PROCESS P_SCUB_SM; + + +p_board_sel: PROCESS (clk, s_reset) + BEGIN + IF s_reset = '0' THEN + S_Slave_Sel <= "000000000000"; -- no board select + ELSIF rising_edge(clk) THEN + CASE S_Slave_Nr IS + WHEN X"0" => S_Slave_Sel <= "000000000000"; + WHEN X"1" => S_Slave_Sel <= "000000000001"; -- select board 1 + WHEN X"2" => S_Slave_Sel <= "000000000010"; + WHEN X"3" => S_Slave_Sel <= "000000000100"; + WHEN X"4" => S_Slave_Sel <= "000000001000"; + WHEN X"5" => S_Slave_Sel <= "000000010000"; + WHEN X"6" => S_Slave_Sel <= "000000100000"; + WHEN X"7" => S_Slave_Sel <= "000001000000"; + WHEN X"8" => S_Slave_Sel <= "000010000000"; + WHEN X"9" => S_Slave_Sel <= "000100000000"; + WHEN X"A" => S_Slave_Sel <= "001000000000"; + WHEN X"B" => S_Slave_Sel <= "010000000000"; + WHEN X"C" => S_Slave_Sel <= "100000000000"; -- select board 12 + WHEN c_multicast_slave_acc => + IF S_Start_SCUB_Wr = '1' THEN -- select boardcast + S_Slave_Sel <= S_Multi_Slave_Sel; + ELSE + S_Slave_Sel <= "000000000000"; + END IF; + WHEN OTHERS => S_Slave_Sel <= "000000000000"; -- no board select + END CASE; + END IF; + END PROCESS p_board_sel; + + +irq_deglitch: process(clk, s_reset) + type cnt_array is array (0 to 11) of integer range 0 to 5; + variable cnt : cnt_array; + type regarray is array (0 to 11) of std_logic_vector(4 downto 0); + variable shiftreg : regarray; +begin + if rising_edge(clk) then + + if s_reset = '0' then + for i in 0 to 11 loop + cnt(i) := 0; + shiftreg(i) := (others => '0'); + end loop; + else + for i in 0 to 11 loop + shiftreg(i) := shiftreg(i)(3 downto 0) & S_SRQ_active(i); + + if shiftreg(i)(0) = '1' then + cnt(i) := cnt(i) + 1; + end if; + if shiftreg(i)(4) = '1' then + cnt(i) := cnt(i) - 1; + end if; + + if cnt(i) = 3 then + srq_active(i) <= '1'; + elsif cnt(i) < 3 then + srq_active(i) <= '0'; + end if; + end loop; + end if; + end if; + +end process; + +p_intr: PROCESS (clk, s_reset) + BEGIN + IF s_reset = '0' THEN + S_SRQ_Sync <= "000000000000"; -- clear synchronized SRQs + S_SRQ_active <= "000000000000"; -- clear active SRQs + S_one_or_more_SRQs_act <= '0'; + Intr <= '0'; + + ELSIF rising_edge(clk) THEN + + S_SRQ_Sync <= NOT nSCUB_SRQ_Slaves; -- synchronize and change level of nSCUB_SRQ_Slave signals + -- S_SRQ_Sync(n) = '1' => nSCUB_SRQ_Slaves(n) is active + FOR i IN nSCUB_SRQ_Slaves'range LOOP + IF S_SRQ_Ena(i) = '1' THEN + IF S_SRQ_Sync(i) = '1' THEN + S_SRQ_active(i) <= '1'; + ELSE + S_SRQ_active(i) <= '0'; + END IF; + ELSE + S_SRQ_active(i) <= '0'; -- ??? + END IF; + END LOOP; + + IF S_SRQ_active /= std_logic_vector(to_unsigned( 0, nSCUB_SRQ_Slaves'length)) THEN + S_one_or_more_SRQs_act <= '1'; + ELSE + S_one_or_more_SRQs_act <= '0'; + END IF; + + IF (S_SCUB_Wr_Err_no_Dtack = '1' AND S_Global_Intr_Ena(bit_scub_wr_err) = '1') + OR (S_SCUB_Rd_Err_no_Dtack = '1' AND S_Global_Intr_Ena(bit_scub_rd_err) = '1') + OR (S_Ti_Cyc_Err = '1' AND S_Global_Intr_Ena(bit_ti_cyc_err) = '1') + OR (S_Invalid_Intern_Acc = '1' AND S_Global_Intr_Ena(bit_inval_intern_acc) = '1') + OR (S_Invalid_Slave_Nr = '1' AND S_Global_Intr_Ena(bit_inval_slave_nr) = '1') + OR (S_one_or_more_SRQs_act = '1' AND S_Global_Intr_Ena(bit_scub_srqs_active) = '1') + THEN + Intr <= '1'; + ELSE + Intr <= '0'; + END IF; + + END IF; + END PROCESS p_intr; + + +P_SCUB_Tri_State: PROCESS (SCUB_SM, S_Wr_Data, tag_fifo_q) + BEGIN + IF (SCUB_SM = S_Wr_Cyc) OR (SCUB_SM = Wr_Cyc) THEN + SCUB_Data <= S_Wr_Data; + ELSIF (SCUB_SM = Ti_Cyc) OR (SCUB_SM = E_Ti_Cyc) THEN + SCUB_Data <= tag_fifo_q(15 DOWNTO 0); + ELSE + SCUB_Data <= (OTHERS => 'Z'); + END IF; + END PROCESS P_SCUB_Tri_State; + + +p_time_out: PROCESS (Clk, s_reset) + BEGIN + IF s_reset = '0' THEN + s_time_out_cnt <= to_unsigned(C_time_out_cnt, s_time_out_cnt'length); + ELSIF rising_edge(Clk) THEN + IF NOT ((SCUB_SM = Rd_Cyc) OR (SCUB_SM = Wr_Cyc)) THEN + s_time_out_cnt <= to_unsigned(C_time_out_cnt, s_time_out_cnt'length); + ELSIF s_time_out_cnt(s_time_out_cnt'high) = '0' THEN -- no underflow + s_time_out_cnt <= s_time_out_cnt - 1; -- count down + END IF; + END IF; + END PROCESS p_time_out; + +p_delay_multicast_dt: PROCESS (Clk, s_reset) + BEGIN + IF s_reset = '0' THEN + s_dly_multicast_dt_cnt <= to_unsigned(c_dly_multicast_dt_cnt, s_dly_multicast_dt_cnt'length); + ELSIF rising_edge(Clk) THEN + IF SCUB_SM /= Wr_Cyc or S_Multi_Wr_Flag = '0' THEN + s_dly_multicast_dt_cnt <= to_unsigned(c_dly_multicast_dt_cnt, s_dly_multicast_dt_cnt'length); + ELSIF s_dly_multicast_dt_cnt(s_dly_multicast_dt_cnt'high) = '0' THEN -- no underflow + s_dly_multicast_dt_cnt <= s_dly_multicast_dt_cnt - 1; -- count down + END IF; + END IF; + END PROCESS p_delay_multicast_dt; + + +SCUB_Addr <= S_SCUB_Addr; +SCUB_RDnWR <= S_SCUB_RDnWR; +nSCUB_DS <= NOT S_SCUB_DS; +nSCUB_Slave_Sel <= NOT S_SCUB_Slave_Sel; + +nSCUB_Timing_Cycle <= NOT S_SCUB_Timing_Cycle; + +nSel_Ext_Data_Drv <= NOT S_Sel_Ext_Data_Drv; + +SCUB_Rd_active <= S_Start_SCUB_Rd; +SCUB_Rd_Fin <= '1' WHEN SCUB_SM = F_Rd_Cyc ELSE '0'; +SCUB_Rd_Err_no_Dtack <= S_SCUB_Rd_Err_no_Dtack; + +SCUB_Wr_active <= S_Start_SCUB_Wr; +SCUB_Wr_Fin <= '1' WHEN SCUB_SM = F_Wr_Cyc ELSE '0'; +SCUB_Wr_Err_no_Dtack <= S_SCUB_Wr_Err_no_Dtack; + +S_SCUB_Ti_Fin <= '1' WHEN SCUB_SM = F_Ti_Cyc ELSE '0'; +SCUB_Ti_Fin <= S_SCUB_Ti_Fin; + +SCUB_Ti_Cyc_Err <= S_Ti_Cyc_Err; + +S_SCU_Bus_Access_Active <= '1' WHEN (S_Start_SCUB_Wr = '1') OR (S_Start_SCUB_Rd = '1') ELSE '0'; +SCU_Bus_Access_Active <= S_SCU_Bus_Access_Active; + +SCU_Wait_Request <= s_stall; + +--srq_active <= S_SRQ_active; + +END Arch_SCU_Bus_Master; diff --git a/testbench/tr_simulation/gsi_pexarria5/wr_timing.vhd b/testbench/tr_simulation/gsi_pexarria5/wr_timing.vhd new file mode 100644 index 0000000000..579b07fd80 --- /dev/null +++ b/testbench/tr_simulation/gsi_pexarria5/wr_timing.vhd @@ -0,0 +1,69 @@ +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity wr_timing is + port( + + dac_hpll_load_p1_i : in std_logic; + dac_hpll_data_i : in std_logic_vector(15 downto 0); + + dac_dpll_load_p1_i : in std_logic; + dac_dpll_data_i : in std_logic_vector(15 downto 0); + + clk_ref_125_o : out std_logic; + clk_sys_62_5_o : out std_logic; + clk_dmtd_20_o : out std_logic + ); + +end entity; + +architecture simulation of wr_timing is + signal dac_hpll_set : unsigned(15 downto 0) := ('0', others => '1'); + signal dac_dpll_set : unsigned(15 downto 0) := ('0', others => '1'); + + signal dac_hpll : integer := 0; + signal dac_dpll : integer := 0; + + + signal clk_ref_125 : std_logic := '1'; + signal clk_sys_62_5 : std_logic := '1'; + signal clk_dmtd_20 : std_logic := '1'; + + + constant period_ref : integer := 8000000/2; -- fs + constant period_sys : integer := 16000000/2; -- fs + constant period_dmtd : integer := 50000000/2; -- fs + + constant tau_max : integer := 1024; + constant tau : integer := 1; + constant delta_t : time := 1 ns; +begin + + process begin + wait until rising_edge(dac_hpll_load_p1_i); + dac_hpll_set <= unsigned(dac_hpll_data_i); + report "wr_timing dac_hpll_set <= " & integer'image(to_integer(unsigned(dac_hpll_data_i))); + end process; + + process begin + wait until rising_edge(dac_dpll_load_p1_i); + dac_dpll_set <= unsigned(dac_dpll_data_i); + report "wr_timing dac_dpll_set <= " & integer'image(to_integer(unsigned(dac_dpll_data_i))); + end process; + + dynamics: process begin + dac_hpll <= ((tau_max - tau)*dac_hpll + tau*to_integer(dac_hpll_set)) / tau_max; + dac_dpll <= ((tau_max - tau)*dac_dpll + tau*to_integer(dac_dpll_set)) / tau_max; + wait for delta_t; + end process; + + clk_ref_125 <= not clk_ref_125 after (period_ref + 10*dac_dpll - 327680) * 1 fs; + clk_sys_62_5 <= not clk_sys_62_5 after (period_sys + 10*dac_dpll - 327680) * 1 fs; + clk_dmtd_20 <= not clk_dmtd_20 after (period_dmtd + 10*dac_hpll - 327680) * 1 fs; + + + clk_ref_125_o <= clk_ref_125; + clk_sys_62_5_o <= clk_sys_62_5; + clk_dmtd_20_o <= clk_dmtd_20; +end architecture; diff --git a/top/gsi_pexarria5/control/pci_control.vhd b/top/gsi_pexarria5/control/pci_control.vhd index debfbf8313..f3edb41292 100644 --- a/top/gsi_pexarria5/control/pci_control.vhd +++ b/top/gsi_pexarria5/control/pci_control.vhd @@ -7,6 +7,7 @@ use work.monster_pkg.all; use work.ramsize_pkg.c_lm32_ramsizes; entity pci_control is + generic(g_simulation : boolean := false); port( clk_20m_vcxo_i : in std_logic; -- 20MHz VCXO clock clk_125m_pllref_i : in std_logic; -- 125 MHz PLL reference @@ -256,6 +257,7 @@ begin main : monster generic map( + g_simulation => g_simulation, g_family => c_family, g_project => c_project, g_flash_bits => 25, @@ -331,8 +333,8 @@ begin usb_slwrn_o => slwr, usb_pktendn_o => pa(6), usb_fd_io => fd, - ow_io(0) => n15, - ow_io(1) => 'Z', + --ow_io(0) => n15, + --ow_io(1) => 'Z', lcd_scp_o => di(3), lcd_lp_o => di(1), lcd_flm_o => di(2),