From: palka Date: Fri, 29 May 2009 09:44:09 +0000 (+0000) Subject: new files for more flexibility X-Git-Url: https://jspc29.x-matter.uni-frankfurt.de/git/?a=commitdiff_plain;h=6448632c5e6715344babd37be4a9b98ee5c1e094;p=trbv2.git new files for more flexibility --- diff --git a/DCM_100MHz_to_200MHz.vhd b/DCM_100MHz_to_200MHz.vhd new file mode 100644 index 0000000..3219f42 --- /dev/null +++ b/DCM_100MHz_to_200MHz.vhd @@ -0,0 +1,115 @@ +-------------------------------------------------------------------------------- +-- Copyright (c) 1995-2007 Xilinx, Inc. All rights reserved. +-------------------------------------------------------------------------------- +-- ____ ____ +-- / /\/ / +-- /___/ \ / Vendor: Xilinx +-- \ \ \/ Version : 9.2i +-- \ \ Application : xaw2vhdl +-- / / Filename : DCM_100MHz_to_200MHz.vhd +-- /___/ /\ Timestamp : 03/04/2009 13:55:52 +-- \ \ / \ +-- \___\/\___\ +-- +--Command: xaw2vhdl-st /home/marek/trbv2/coregen/DCM_100MHz_to_200MHz.xaw /home/marek/trbv2/coregen/DCM_100MHz_to_200MHz +--Design Name: DCM_100MHz_to_200MHz +--Device: xc4vlx40-10ff1148 +-- +-- Module DCM_100MHz_to_200MHz +-- Generated by Xilinx Architecture Wizard +-- Written for synthesis tool: XST + +library ieee; +use ieee.std_logic_1164.ALL; +use ieee.numeric_std.ALL; +library UNISIM; +use UNISIM.Vcomponents.ALL; + +entity DCM_100MHz_to_200MHz is + port ( CLKIN_N_IN : in std_logic; + CLKIN_P_IN : in std_logic; + RST_IN : in std_logic; + CLKDV_OUT : out std_logic; + CLKIN_IBUFGDS_OUT : out std_logic; + CLK0_OUT : out std_logic; + CLK2X_OUT : out std_logic; + LOCKED_OUT : out std_logic); +end DCM_100MHz_to_200MHz; + +architecture BEHAVIORAL of DCM_100MHz_to_200MHz is + signal CLKDV_BUF : std_logic; + signal CLKFB_IN : std_logic; + signal CLKIN_IBUFGDS : std_logic; + signal CLK0_BUF : std_logic; + signal CLK2X_BUF : std_logic; + signal GND_BIT : std_logic; + signal GND_BUS_7 : std_logic_vector (6 downto 0); + signal GND_BUS_16 : std_logic_vector (15 downto 0); +begin + GND_BIT <= '0'; + GND_BUS_7(6 downto 0) <= "0000000"; + GND_BUS_16(15 downto 0) <= "0000000000000000"; + CLKIN_IBUFGDS_OUT <= CLKIN_IBUFGDS; + CLK0_OUT <= CLKFB_IN; + CLKDV_BUFG_INST : BUFG + port map (I=>CLKDV_BUF, + O=>CLKDV_OUT); + + CLKIN_IBUFGDS_INST : IBUFGDS + port map (I=>CLKIN_P_IN, + IB=>CLKIN_N_IN, + O=>CLKIN_IBUFGDS); + + CLK0_BUFG_INST : BUFG + port map (I=>CLK0_BUF, + O=>CLKFB_IN); + + CLK2X_BUFG_INST : BUFG + port map (I=>CLK2X_BUF, + O=>CLK2X_OUT); + + DCM_ADV_INST : DCM_ADV + generic map( CLK_FEEDBACK => "1X", + CLKDV_DIVIDE => 2.0, + CLKFX_DIVIDE => 1, + CLKFX_MULTIPLY => 4, + CLKIN_DIVIDE_BY_2 => FALSE, + CLKIN_PERIOD => 10.000, + CLKOUT_PHASE_SHIFT => "NONE", + DCM_AUTOCALIBRATION => TRUE, + DCM_PERFORMANCE_MODE => "MAX_SPEED", + DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS", + DFS_FREQUENCY_MODE => "LOW", + DLL_FREQUENCY_MODE => "LOW", + DUTY_CYCLE_CORRECTION => TRUE, + FACTORY_JF => x"F0F0", + PHASE_SHIFT => 0, + STARTUP_WAIT => FALSE) + port map (CLKFB=>CLKFB_IN, + CLKIN=>CLKIN_IBUFGDS, + DADDR(6 downto 0)=>GND_BUS_7(6 downto 0), + DCLK=>GND_BIT, + DEN=>GND_BIT, + DI(15 downto 0)=>GND_BUS_16(15 downto 0), + DWE=>GND_BIT, + PSCLK=>GND_BIT, + PSEN=>GND_BIT, + PSINCDEC=>GND_BIT, + RST=>RST_IN, + CLKDV=>CLKDV_BUF, + CLKFX=>open, + CLKFX180=>open, + CLK0=>CLK0_BUF, + CLK2X=>CLK2X_BUF, + CLK2X180=>open, + CLK90=>open, + CLK180=>open, + CLK270=>open, + DO=>open, + DRDY=>open, + LOCKED=>LOCKED_OUT, + PSDONE=>open); + +end BEHAVIORAL; + + diff --git a/optical_ctu.vhd b/optical_ctu.vhd new file mode 100644 index 0000000..c1f4545 --- /dev/null +++ b/optical_ctu.vhd @@ -0,0 +1,349 @@ +library IEEE; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.all; +library ieee; +library work; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.all; + +entity optical_ctu is + + port ( + CLK : in std_logic; + RESET : in std_logic; + RX_CLK : in std_logic; + TX_CLK : in std_logic; + OPT_DATA_IN : in std_logic_vector(15 downto 0); + OPT_DATA_OUT : out std_logic_vector; + OPT_DATA_VALID_IN : in std_logic; + OPT_DATA_ERR : in std_logic; + OPT_DATA_SEND : out std_logic; + LVL1_TRIGGER : in std_logic; + LVL1_CODE : in std_logic_vector(3 downto 0); + LVL1_TAG : in std_logic_vector(7 downto 0); + LVL1_BUSY : out std_logic; + LVL2_TRIGGER : in std_logic; + LVL2_CODE : in std_logic; + LVL2_TAG : in std_logic_vector(7 downto 0); + LVL2_BUSY : out std_logic; + OPT_CTU_DEBUG_00 : out std_logic_vector(31 downto 0); + OPT_CTU_DEBUG_01 : out std_logic_vector(31 downto 0) + ); + +end optical_ctu; + +architecture optical_ctu of optical_ctu is + + component edge_to_pulse + port ( + clock : in std_logic; + en_clk : in std_logic; + signal_in : in std_logic; + pulse : out std_logic + ); + end component; + + component up_down_counter + generic ( + NUMBER_OF_BITS : positive); + port ( + CLK : in std_logic; + RESET : in std_logic; + COUNT_OUT : out std_logic_vector(NUMBER_OF_BITS-1 downto 0); + UP_IN : in std_logic; + DOWN_IN : in std_logic); + end component; + + type CTU_LVL1_FSM is (IDLE, SEND_LVL1); + signal CTU_LVL1_CURRENT, CTU_LVL1_NEXT : CTU_LVL1_FSM; + type CTU_LVL2_FSM is (IDLE, SEND_LVL2); + signal CTU_LVL2_CURRENT, CTU_LVL2_NEXT : CTU_LVL2_FSM; + type CTU_TO_OPT_FSM is (IDLE, OPT_SEND_LVL1_A, OPT_SEND_LVL1_B,OPT_SEND_LVL2_A,OPT_SEND_LVL2_B); + signal CTU_TO_OPT_CURRENT, CTU_TO_OPT_NEXT : CTU_TO_OPT_FSM; + + signal opt_data_send_i : std_logic; + signal opt_data_out_i : std_logic_vector(15 downto 0); + + signal lvl1_busy_i : std_logic; + signal lvl1_busy_end : std_logic; + signal lvl1_busy_end_pulse : std_logic; + + signal lvl2_busy_i : std_logic; + signal lvl2_busy_end : std_logic; + signal lvl2_busy_end_pulse : std_logic; + signal opt_ctu_debug_00_i : std_logic_vector(31 downto 0); + signal opt_ctu_debug_01_i : std_logic_vector(31 downto 0); + signal opt_data_in_synch : std_logic_vector(15 downto 0); + signal opt_data_valid_in_synch : std_logic; + signal counter_lvl1_up : std_logic; + signal counter_lvl2_up : std_logic; + +begin +------------------------------------------------------------------------------- +-- lvl1 send and wait for optical fsm +------------------------------------------------------------------------------- + CTU_LVL1_CLK : process (CLK, RESET) + begin + if rising_edge(CLK) then + if RESET = '1' then + CTU_LVL1_CURRENT <= IDLE; + OPT_CTU_DEBUG_00 <= (others => '0'); + else + CTU_LVL1_CURRENT <= CTU_LVL1_NEXT; + OPT_CTU_DEBUG_00 <= opt_ctu_debug_00_i; + end if; + end if; + end process CTU_LVL1_CLK; + CTU_LVL1_PROC: process (CLK,RESET,CTU_LVL1_CURRENT) + begin -- process CTU_LVL1_PROC + case (CTU_LVL1_CURRENT) is + when IDLE => + opt_ctu_debug_00_i(3 downto 0) <= x"1"; + if LVL1_TRIGGER = '1' then + CTU_LVL1_NEXT <= SEND_LVL1; + else + CTU_LVL1_NEXT <= IDLE; + end if; + when SEND_LVL1 => + opt_ctu_debug_00_i(3 downto 0) <= x"2"; + if CTU_TO_OPT_CURRENT = OPT_SEND_LVL1_B then + CTU_LVL1_NEXT <= IDLE; + else + CTU_LVL1_NEXT <= SEND_LVL1; + end if; + when others => + opt_ctu_debug_00_i(3 downto 0) <= x"0"; + CTU_LVL1_NEXT <= IDLE; + end case; + end process CTU_LVL1_PROC; +------------------------------------------------------------------------------- +-- lvl2 send and wait for optical fsm +------------------------------------------------------------------------------- + CTU_LVL2_CLK : process (CLK, RESET) + begin + if rising_edge(CLK) then + if RESET = '1' then + CTU_LVL2_CURRENT <= IDLE; + else + CTU_LVL2_CURRENT <= CTU_LVL2_NEXT; + end if; + end if; + end process CTU_LVL2_CLK; + CTU_LVL2_PROC: process (CLK,RESET,CTU_LVL2_CURRENT) + begin -- process CTU_LVL2_PROC + case (CTU_LVL2_CURRENT) is + when IDLE => + opt_ctu_debug_00_i(7 downto 4) <= x"1"; +-- if LVL2_TRIGGER = '1' then + if lvl1_busy_end_pulse = '1' then + CTU_LVL2_NEXT <= SEND_LVL2; + else + CTU_LVL2_NEXT <= IDLE; + end if; + when SEND_LVL2 => + opt_ctu_debug_00_i(7 downto 4) <= x"2"; + if CTU_TO_OPT_CURRENT = OPT_SEND_LVL2_B then + CTU_LVL2_NEXT <= IDLE; + else + CTU_LVL2_NEXT <= SEND_LVL2; + end if; + when others => + opt_ctu_debug_00_i(7 downto 4) <= x"0"; + CTU_LVL2_NEXT <= IDLE; + end case; + end process CTU_LVL2_PROC; +------------------------------------------------------------------------------- +-- optical fsm for sending +------------------------------------------------------------------------------- + CTU_OPT_SEND : process (TX_CLK, RESET) + begin + if falling_edge(TX_CLK) then + if RESET = '1' then + CTU_TO_OPT_CURRENT <= IDLE; + OPT_DATA_SEND <= opt_data_send_i; + OPT_DATA_OUT <= opt_data_out_i; + else + CTU_TO_OPT_CURRENT <= CTU_TO_OPT_NEXT; + OPT_DATA_SEND <= opt_data_send_i; + OPT_DATA_OUT <= opt_data_out_i; + end if; + end if; + end process CTU_OPT_SEND; + + CTU_OPT_SEND_PROC: process (TX_CLK,CTU_LVL1_CURRENT,CTU_LVL2_CURRENT) + begin + case CTU_TO_OPT_CURRENT is + when IDLE => + opt_ctu_debug_00_i(11 downto 8) <= x"1"; + opt_data_out_i <= x"0000"; + opt_data_send_i <= '0'; + counter_lvl1_up <= '0'; + counter_lvl2_up <= '0'; + if CTU_LVL1_CURRENT = SEND_LVL1 then + CTU_TO_OPT_NEXT <= OPT_SEND_LVL1_A; + elsif CTU_LVL2_CURRENT = SEND_LVL2 then + CTU_TO_OPT_NEXT <= OPT_SEND_LVL2_A; + else + CTU_TO_OPT_NEXT <= IDLE; + end if; + when OPT_SEND_LVL1_A => + opt_ctu_debug_00_i(11 downto 8) <= x"2"; + opt_data_out_i <= x"1" & LVL1_CODE & LVL1_TAG; + opt_data_send_i <= '1'; + counter_lvl1_up <= '1'; + counter_lvl2_up <= '0'; + CTU_TO_OPT_NEXT <= OPT_SEND_LVL1_B; + when OPT_SEND_LVL1_B => + opt_ctu_debug_00_i(11 downto 8) <= x"2"; + opt_data_out_i <= x"0" & LVL1_CODE & LVL1_TAG; + opt_data_send_i <= '0'; + counter_lvl1_up <= '0'; + counter_lvl2_up <= '0'; + if CTU_LVL1_CURRENT = IDLE then + CTU_TO_OPT_NEXT <= IDLE; + else + CTU_TO_OPT_NEXT <= OPT_SEND_LVL1_B; + end if; + when OPT_SEND_LVL2_A => + opt_ctu_debug_00_i(11 downto 8) <= x"3"; + opt_data_out_i <= x"2" &"000" & LVL2_CODE & LVL2_TAG; + opt_data_send_i <= '1'; + counter_lvl1_up <= '0'; + counter_lvl2_up <= '1'; + CTU_TO_OPT_NEXT <= OPT_SEND_LVL2_B; + when OPT_SEND_LVL2_B => + opt_ctu_debug_00_i(11 downto 8) <= x"3"; + opt_data_out_i <= x"0" &"000" & LVL2_CODE & LVL2_TAG; + opt_data_send_i <= '0'; + counter_lvl1_up <= '0'; + counter_lvl2_up <= '0'; + if CTU_LVL2_CURRENT = IDLE then + CTU_TO_OPT_NEXT <= IDLE; + else + CTU_TO_OPT_NEXT <= OPT_SEND_LVL2_B; + end if; + when others => + opt_ctu_debug_00_i(11 downto 8) <= x"0"; + opt_data_out_i <= x"0000"; + opt_data_send_i <= '0'; + counter_lvl1_up <= '0'; + counter_lvl2_up <= '0'; + CTU_TO_OPT_NEXT <= IDLE; + end case; + + end process CTU_OPT_SEND_PROC; + + LVL1_TAG_COUNT: up_down_counter + generic map ( + NUMBER_OF_BITS => 16) + port map ( + CLK => TX_CLK, + RESET => RESET, + COUNT_OUT => opt_ctu_debug_01_i(15 downto 0), + UP_IN => counter_lvl1_up, + DOWN_IN => '0'); + + LVL2_TAG_COUNT: up_down_counter + generic map ( + NUMBER_OF_BITS => 16) + port map ( + CLK => TX_CLK, + RESET => RESET, + COUNT_OUT => opt_ctu_debug_01_i(31 downto 16), + UP_IN => counter_lvl2_up, + DOWN_IN => '0'); + OPT_CTU_DEBUG_01 <= opt_ctu_debug_01_i; +-- SYNCH_WITCH_FALL : process (TX_CLK,RESET,opt_data_send_i,opt_data_out_i) +-- begin +-- if falling_edge(TX_CLK) then +-- if RESET = '1' then +-- OPT_DATA_SEND <= opt_data_send_i;--'0'; +-- OPT_DATA_OUT <= opt_data_out_i;--x"0000"; +-- else +-- OPT_DATA_SEND <= opt_data_send_i; +-- OPT_DATA_OUT <= opt_data_out_i; +-- end if; +-- end if; +-- end process SYNCH_WITCH_FALL; +------------------------------------------------------------------------------- +-- LVL1 busy +------------------------------------------------------------------------------- + DATA_IN_SYNCH: process (RX_CLK, RESET) + begin + if rising_edge(RX_CLK) then + if RESET = '1' then + opt_data_valid_in_synch <= '0'; + opt_data_in_synch <= (others => '0'); + else + opt_data_valid_in_synch <= OPT_DATA_VALID_IN; + opt_data_in_synch <= OPT_DATA_IN; + end if; + end if; + end process DATA_IN_SYNCH; + LVL1_BUSY_PROC: process (CLK, RESET,lvl1_busy_end_pulse,CTU_LVL1_CURRENT) + begin + if rising_edge(CLK) then + if RESET = '1' or lvl1_busy_end_pulse = '1' then + lvl1_busy_i <= '0'; + elsif CTU_LVL1_CURRENT = SEND_LVL1 then + lvl1_busy_i <= '1' ; + end if; + end if; + end process LVL1_BUSY_PROC; + + LVL1_BUSY_END_PROC: process (RX_CLK, RESET,opt_data_in_synch,opt_data_valid_in_synch,lvl1_busy_i) + begin + if rising_edge(RX_CLK) then + if RESET = '1' or lvl1_busy_i = '0' then + lvl1_busy_end <= '0'; + elsif opt_data_in_synch = x"1000" and opt_data_valid_in_synch='1' then + lvl1_busy_end <= '1'; + end if; + end if; + end process LVL1_BUSY_END_PROC; + LVL1_BUSY_END_PULSE_INST : edge_to_pulse + port map ( + clock => CLK, + en_clk => '1', + signal_in => lvl1_busy_end, + pulse => lvl1_busy_end_pulse); + LVL1_BUSY <= lvl1_busy_i; + opt_ctu_debug_00_i(12) <= lvl1_busy_i; +------------------------------------------------------------------------------- +-- LVL2 busy +------------------------------------------------------------------------------- + LVL2_BUSY_PROC: process (CLK, RESET,lvl2_busy_end_pulse,CTU_LVL2_CURRENT) + begin + if rising_edge(CLK) then + if RESET = '1' or lvl2_busy_end_pulse = '1' then + lvl2_busy_i <= '0'; + elsif CTU_LVL2_CURRENT = SEND_LVL2 then + lvl2_busy_i <= '1' ; + end if; + end if; + end process LVL2_BUSY_PROC; + + LVL2_BUSY_END_PROC: process (RX_CLK, RESET,opt_data_in_synch,opt_data_valid_in_synch,lvl2_busy_i) + begin + if rising_edge(RX_CLK) then + if RESET = '1' or lvl2_busy_i = '0' then + lvl2_busy_end <= '0'; + elsif opt_data_in_synch = x"2000" and opt_data_valid_in_synch='1' then + lvl2_busy_end <= '1'; + end if; + end if; + end process LVL2_BUSY_END_PROC; + + LVL2_BUSY_END_PULSE_INST : edge_to_pulse + port map ( + clock => CLK, + en_clk => '1', + signal_in => lvl2_busy_end, + pulse => lvl2_busy_end_pulse); + LVL2_BUSY <= lvl2_busy_i; + opt_ctu_debug_00_i(13) <= lvl2_busy_i; + opt_ctu_debug_00_i(19 downto 16) <= opt_data_in_synch(15 downto 12); + opt_ctu_debug_00_i(20) <= opt_data_valid_in_synch; +end optical_ctu; diff --git a/optical_dtu.vhd b/optical_dtu.vhd new file mode 100644 index 0000000..527e3fd --- /dev/null +++ b/optical_dtu.vhd @@ -0,0 +1,432 @@ +library IEEE; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.all; +library ieee; +library work; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.all; + +entity optical_dtu is + port ( + CLK : in std_logic; + RX_CLK : in std_logic; + TX_CLK : in std_logic; + RESET : in std_logic; + OPT_DATA_IN : in std_logic_vector(15 downto 0); + OPT_DATA_OUT : out std_logic_vector; + OPT_DATA_VALID_IN : in std_logic; + OPT_DATA_ERR : in std_logic; + OPT_DATA_SEND : out std_logic; + LVL1_TRIGGER : out std_logic; + LVL1_TRIGGER_CODE : out std_logic_vector(3 downto 0); + LVL1_TRIGGER_TAG : out std_logic_vector(7 downto 0); + LVL2_TRIGGER : out std_logic; + LVL2_TRIGGER_CODE : out std_logic; + LVL2_TRIGGER_TAG : out std_logic_vector(7 downto 0); + LVL1_BUSY : in std_logic; + LVL2_BUSY : in std_logic; + OPT_DTU_DEBUG_REGISTER_00 : out std_logic_vector(31 downto 0); + OPT_DTU_DEBUG_REGISTER_01 : out std_logic_vector(31 downto 0) + ); +end optical_dtu; + +architecture optical_dtu of optical_dtu is + component edge_to_pulse + port ( + clock : in std_logic; + en_clk : in std_logic; + signal_in : in std_logic; + pulse : out std_logic + ); + end component; + + component up_down_counter + generic ( + NUMBER_OF_BITS : positive); + port ( + CLK : in std_logic; + RESET : in std_logic; + COUNT_OUT : out std_logic_vector(NUMBER_OF_BITS-1 downto 0); + UP_IN : in std_logic; + DOWN_IN : in std_logic); + end component; + + --debug + signal opt_dtu_debug_register_00_i : std_logic_vector(31 downto 0); + signal opt_dtu_debug_register_01_i : std_logic_vector(31 downto 0); + --lvl1 + type DTU_LVL1_FSM is (IDLE, SEND_LVL1_A, SEND_LVL1_B, WAIT_FOR_LVL1_BUSY_END, SEND_LVL1_ACK); + signal DTU_LVL1_CURRENT, DTU_LVL1_NEXT : DTU_LVL1_FSM; + signal not_lvl1_busy : std_logic; + signal lvl1_busy_end_pulse : std_logic; + signal lvl1_trigger_i : std_logic; + signal lvl1_trigger_pulse : std_logic; + signal lvl1_data_saved : std_logic_vector(15 downto 0); + + --lvl2 + type DTU_LVL2_FSM is (IDLE, SEND_LVL2_A, SEND_LVL2_B, WAIT_FOR_LVL2_BUSY_END, SEND_LVL2_ACK); + signal DTU_LVL2_CURRENT, DTU_LVL2_NEXT : DTU_LVL2_FSM; + signal not_lvl2_busy : std_logic; + signal lvl2_busy_end_pulse : std_logic; + signal lvl2_trigger_i : std_logic; + signal lvl2_trigger_pulse : std_logic; + signal lvl2_data_saved : std_logic_vector(15 downto 0); + + --lvl1 & lvl2 + signal opt_data_valid_in_synch : std_logic; + signal opt_data_in_synch : std_logic_vector(15 downto 0); + + --dtu to opt + type DTU_TO_OPT_FSM is (IDLE, OPT_SEND_LVL1_ACK, OPT_SEND_LVL2_ACK); + signal DTU_TO_OPT_CURRENT, DTU_TO_OPT_NEXT : DTU_TO_OPT_FSM; + signal lvl1_busy_end_pulse_clk : std_logic; + signal lvl1_busy_end_saved : std_logic; + signal lvl2_busy_end_pulse_clk : std_logic; + signal lvl2_busy_end_saved : std_logic; + signal opt_data_out_i : std_logic_vector(15 downto 0); + signal opt_data_send_i : std_logic; + + --opt to dtu + +begin + + +------------------------------------------------------------------------------- +-- error counter +------------------------------------------------------------------------------- + COUNT_ERRORS : process (RX_CLK, RESET,OPT_DATA_ERR) + begin + if rising_edge(RX_CLK) then + if RESET = '1' then + opt_dtu_debug_register_00_i(19 downto 12) <= (others => '0'); + OPT_DTU_DEBUG_REGISTER_00(19 downto 12) <= (others => '0'); + + elsif OPT_DATA_ERR = '1' then + opt_dtu_debug_register_00_i(19 downto 12) <= opt_dtu_debug_register_00_i(19 downto 12) +1; + OPT_DTU_DEBUG_REGISTER_00(19 downto 12) <= opt_dtu_debug_register_00_i(19 downto 12); + else + opt_dtu_debug_register_00_i(19 downto 12) <= opt_dtu_debug_register_00_i(19 downto 12); + OPT_DTU_DEBUG_REGISTER_00(19 downto 12) <= opt_dtu_debug_register_00_i(19 downto 12); + end if; + end if; + end process COUNT_ERRORS; + +------------------------------------------------------------------------------- +-- dtu sends data +------------------------------------------------------------------------------- + LVL1_BUSY_END_PULSE_CLK_PROC : edge_to_pulse + port map ( + clock => TX_CLK, + en_clk => '1', + signal_in => not_lvl1_busy, + pulse => lvl1_busy_end_pulse_clk); + + SAVE_BUSY_END_FOR_LVL1_ACK : process (TX_CLK, RESET,lvl1_busy_end_pulse_clk,DTU_TO_OPT_CURRENT) + begin + if rising_edge(TX_CLK) then + if RESET = '1' or DTU_TO_OPT_CURRENT = OPT_SEND_LVL1_ACK then + lvl1_busy_end_saved <= '0'; + elsif lvl1_busy_end_pulse_clk = '1' then + lvl1_busy_end_saved <= '1'; + end if; + end if; + end process SAVE_BUSY_END_FOR_LVL1_ACK; + + LVL2_BUSY_END_PULSE_CLK_PROC : edge_to_pulse + port map ( + clock => TX_CLK, + en_clk => '1', + signal_in => not_lvl2_busy, + pulse => lvl2_busy_end_pulse_clk); + + SAVE_BUSY_END_FOR_LVL2_ACK : process (TX_CLK, RESET,DTU_TO_OPT_CURRENT,lvl2_busy_end_pulse_clk) + begin + if rising_edge(TX_CLK) then + if RESET = '1' or DTU_TO_OPT_CURRENT = OPT_SEND_LVL2_ACK then + lvl2_busy_end_saved <= '0'; + elsif lvl2_busy_end_pulse_clk = '1' then + lvl2_busy_end_saved <= '1'; + end if; + end if; + end process SAVE_BUSY_END_FOR_LVL2_ACK; + + DTU_TO_OPT_CLK : process (TX_CLK, RESET) + begin + if falling_edge(TX_CLK) then + if RESET = '1' then + DTU_TO_OPT_CURRENT <= IDLE; + OPT_DTU_DEBUG_REGISTER_00(3 downto 0) <= (others => '0'); + OPT_DATA_SEND <= opt_data_send_i; + OPT_DATA_OUT <= opt_data_out_i; + + else + DTU_TO_OPT_CURRENT <= DTU_TO_OPT_NEXT; + OPT_DTU_DEBUG_REGISTER_00(3 downto 0) <= opt_dtu_debug_register_00_i(3 downto 0); + OPT_DATA_SEND <= opt_data_send_i; + OPT_DATA_OUT <= opt_data_out_i; + + end if; + end if; + end process DTU_TO_OPT_CLK; + + DTU_TO_OPT_PROC : process (TX_CLK, RESET,lvl1_busy_end_saved,lvl2_busy_end_saved) + begin + case (DTU_TO_OPT_CURRENT) is + when IDLE => + opt_dtu_debug_register_00_i(3 downto 0) <= x"1"; + opt_data_out_i <= x"0000"; + opt_data_send_i <= '0'; + if lvl1_busy_end_saved = '1' then + DTU_TO_OPT_NEXT <= OPT_SEND_LVL1_ACK; + elsif lvl2_busy_end_saved = '1' then + DTU_TO_OPT_NEXT <= OPT_SEND_LVL2_ACK; + else + DTU_TO_OPT_NEXT <= IDLE; + end if; + when OPT_SEND_LVL1_ACK => + opt_dtu_debug_register_00_i(3 downto 0) <= x"2"; + opt_data_out_i <= x"1000"; + opt_data_send_i <= '1'; + DTU_TO_OPT_NEXT <= IDLE; + when OPT_SEND_LVL2_ACK => + opt_dtu_debug_register_00_i(3 downto 0) <= x"3"; + opt_data_out_i <= x"2000"; + opt_data_send_i <= '1'; + DTU_TO_OPT_NEXT <= IDLE; + when others => + opt_dtu_debug_register_00_i(3 downto 0) <= x"0"; + opt_data_out_i <= x"0000"; + opt_data_send_i <= '0'; + DTU_TO_OPT_NEXT <= IDLE; + end case; + end process DTU_TO_OPT_PROC; + +-- SYNCH_WITCH_FALL : process (TX_CLK, RESET) +-- begin +-- if falling_edge(TX_CLK) then +-- if RESET = '1' then +-- OPT_DATA_SEND <= '0'; +-- OPT_DATA_OUT <= x"0000"; +-- else +-- OPT_DATA_SEND <= opt_data_send_i; +-- OPT_DATA_OUT <= opt_data_out_i; +-- end if; +-- end if; +-- end process SYNCH_WITCH_FALL; + +------------------------------------------------------------------------------- +-- lvl1 +------------------------------------------------------------------------------- + not_lvl1_busy <= not LVL1_BUSY; + + LVL1_BUSY_END_PULSE_PROC: edge_to_pulse + port map ( + clock => RX_CLK, + en_clk => '1', + signal_in => not_lvl1_busy, + pulse => lvl1_busy_end_pulse); + + SYNCH_RX: process (RX_CLK, RESET, OPT_DATA_VALID_IN) + begin + if rising_edge(RX_CLK) then + if RESET = '1' then + opt_data_valid_in_synch <= '0'; + opt_data_in_synch <= (others => '0'); + else + opt_data_valid_in_synch <= OPT_DATA_VALID_IN; + opt_data_in_synch <= OPT_DATA_IN; + end if; + end if; + end process SYNCH_RX; + + DTU_LVL1_CLK : process (RX_CLK, RESET) + begin + if rising_edge(RX_CLK) then + if RESET = '1' then + DTU_LVL1_CURRENT <= IDLE; + OPT_DTU_DEBUG_REGISTER_00(7 downto 4) <= (others => '0'); + OPT_DTU_DEBUG_REGISTER_01 <= (others => '0'); + else + DTU_LVL1_CURRENT <= DTU_LVL1_NEXT; + OPT_DTU_DEBUG_REGISTER_00(7 downto 4) <= opt_dtu_debug_register_00_i(7 downto 4); + OPT_DTU_DEBUG_REGISTER_01 <= opt_dtu_debug_register_01_i; + end if; + end if; + end process DTU_LVL1_CLK; + + DTU_LVL1_PROC : process (RX_CLK, RESET,opt_data_valid_in_synch ,opt_data_in_synch,LVL1_BUSY,lvl1_busy_end_pulse) + begin + case (DTU_LVL1_CURRENT) is + when IDLE => + opt_dtu_debug_register_00_i(7 downto 4) <= x"1"; + lvl1_trigger_i <= '0'; + if opt_data_valid_in_synch = '1' and opt_data_in_synch(15 downto 12) = x"1" then + DTU_LVL1_NEXT <= SEND_LVL1_A; + else + DTU_LVL1_NEXT <= IDLE; + end if; + when SEND_LVL1_A => + opt_dtu_debug_register_00_i(7 downto 4) <= x"2"; + lvl1_trigger_i <= '1'; + DTU_LVL1_NEXT <= SEND_LVL1_B; + when SEND_LVL1_B => + opt_dtu_debug_register_00_i(7 downto 4) <= x"3"; + lvl1_trigger_i <= '1'; + if LVL1_BUSY = '1' then + DTU_LVL1_NEXT <= WAIT_FOR_LVL1_BUSY_END; + else + DTU_LVL1_NEXT <= SEND_LVL1_B; + end if; + when WAIT_FOR_LVL1_BUSY_END => + opt_dtu_debug_register_00_i(7 downto 4) <= x"4"; + lvl1_trigger_i <= '0'; + if lvl1_busy_end_pulse = '1' then +-- if LVL1_BUSY = '0' then + DTU_LVL1_NEXT <= IDLE; + else + DTU_LVL1_NEXT <= WAIT_FOR_LVL1_BUSY_END; + end if; + when others => + opt_dtu_debug_register_00_i(7 downto 4) <= x"0"; + lvl1_trigger_i <= '0'; + DTU_LVL1_NEXT <= IDLE; + end case; + end process DTU_LVL1_PROC; + + LVL1_TRIGGER_PULSE_PROC : edge_to_pulse + port map ( + clock => CLK, + en_clk => '1', + signal_in => lvl1_trigger_i, + pulse => lvl1_trigger_pulse); + + LVL1_TRIGGER <= lvl1_trigger_pulse; + + LVL1_TAG_COUNT: up_down_counter + generic map ( + NUMBER_OF_BITS => 16) + port map ( + CLK => CLK, + RESET => RESET, + COUNT_OUT => opt_dtu_debug_register_01_i(15 downto 0), + UP_IN => lvl1_trigger_pulse, + DOWN_IN => '0'); + + LVL1_DATA_SAVE: process (RX_CLK, RESET, opt_data_valid_in_synch,opt_data_in_synch) + begin + if rising_edge(RX_CLK) then + if RESET = '1' then + lvl1_data_saved <= (others => '0'); + elsif opt_data_valid_in_synch = '1' and opt_data_in_synch(15 downto 12) = x"1" then + lvl1_data_saved <= opt_data_in_synch; + else + lvl1_data_saved <= lvl1_data_saved; + end if; + end if; + end process LVL1_DATA_SAVE; + + LVL1_TRIGGER_CODE <= lvl1_data_saved(11 downto 8); + LVL1_TRIGGER_TAG <= lvl1_data_saved(7 downto 0); + + +------------------------------------------------------------------------------- +-- lvl2 +------------------------------------------------------------------------------- + not_lvl2_busy <= not LVL2_BUSY; + + LVL2_BUSY_END_PULSE_PROC: edge_to_pulse + port map ( + clock => RX_CLK, + en_clk => '1', + signal_in => not_lvl2_busy, + pulse => lvl2_busy_end_pulse); + + DTU_LVL2_CLK : process (RX_CLK, RESET) + begin + if rising_edge(RX_CLK) then + if RESET = '1' then + DTU_LVL2_CURRENT <= IDLE; + OPT_DTU_DEBUG_REGISTER_00(11 downto 8) <= (others => '0'); + else + DTU_LVL2_CURRENT <= DTU_LVL2_NEXT; + OPT_DTU_DEBUG_REGISTER_00(11 downto 8) <= opt_dtu_debug_register_00_i(11 downto 8); + end if; + end if; + end process DTU_LVL2_CLK; + + DTU_LVL2_PROC : process (RX_CLK, RESET, LVL2_BUSY, lvl2_busy_end_pulse, opt_data_valid_in_synch, opt_data_in_synch) + begin + case (DTU_LVL2_CURRENT) is + when IDLE => + opt_dtu_debug_register_00_i(11 downto 8) <= x"1"; + lvl2_trigger_i <= '0'; + if opt_data_valid_in_synch = '1' and opt_data_in_synch(15 downto 12) = x"2" then + DTU_LVL2_NEXT <= SEND_LVL2_A; + else + DTU_LVL2_NEXT <= IDLE; + end if; + when SEND_LVL2_A => + opt_dtu_debug_register_00_i(11 downto 8) <= x"2"; + lvl2_trigger_i <= '1'; + DTU_LVL2_NEXT <= SEND_LVL2_B; + when SEND_LVL2_B => + opt_dtu_debug_register_00_i(11 downto 8) <= x"3"; + lvl2_trigger_i <= '1'; + if LVL2_BUSY = '1' then + DTU_LVL2_NEXT <= WAIT_FOR_LVL2_BUSY_END; + else + DTU_LVL2_NEXT <= SEND_LVL2_B; + end if; + when WAIT_FOR_LVL2_BUSY_END => + opt_dtu_debug_register_00_i(11 downto 8) <= x"4"; + lvl2_trigger_i <= '0'; + if lvl2_busy_end_pulse = '1' then + DTU_LVL2_NEXT <= IDLE; + else + DTU_LVL2_NEXT <= WAIT_FOR_LVL2_BUSY_END; + end if; + when others => + opt_dtu_debug_register_00_i(11 downto 8) <= x"0"; + lvl2_trigger_i <= '0'; + DTU_LVL2_NEXT <= IDLE; + end case; + end process DTU_LVL2_PROC; + + LVL2_TRIGGER_PULSE_PROC : edge_to_pulse + port map ( + clock => CLK, + en_clk => '1', + signal_in => lvl2_trigger_i, + pulse => lvl2_trigger_pulse); + LVL2_TRIGGER <= lvl2_trigger_i;--pulse; + + LVL2_TAG_COUNT: up_down_counter + generic map ( + NUMBER_OF_BITS => 16) + port map ( + CLK => CLK, + RESET => RESET, + COUNT_OUT => opt_dtu_debug_register_01_i(31 downto 16), + UP_IN => lvl2_trigger_pulse, + DOWN_IN => '0'); + + LVL2_DATA_SAVE: process (RX_CLK, RESET,opt_data_valid_in_synch,opt_data_in_synch) + begin + if rising_edge(RX_CLK) then + if RESET = '1' then + lvl2_data_saved <= (others => '0'); + elsif opt_data_valid_in_synch = '1' and opt_data_in_synch(15 downto 12) = x"2" then + lvl2_data_saved <= opt_data_in_synch; + else + lvl2_data_saved <= lvl2_data_saved; + end if; + end if; + end process LVL2_DATA_SAVE; + + LVL2_TRIGGER_CODE <= lvl2_data_saved(8); + LVL2_TRIGGER_TAG <= lvl2_data_saved(7 downto 0); + + +end optical_dtu; diff --git a/simulation.pl b/simulation.pl new file mode 100755 index 0000000..4575681 --- /dev/null +++ b/simulation.pl @@ -0,0 +1,98 @@ +#!/usr/bin/perl +########################################### +# Script file to compy vhd files to the simulation directory and to make +# all needed changes: +# uncomments lines where at the beginning is --sim +# comments lines where at the end is --no_sim-- +########################################### +# +# M.Palka +# +use FileHandle; +use strict; +use warnings; + +my $c="cp -u *.vhd simulation/"; +system($c); +$c="cp -u ~/trbnet/optical_link/*.vhd simulation/"; +system($c); +$c="cp -u ~/vulom3/*.vhd simulation/"; +system($c); +chdir "simulation"; +$c="cp trb_v2b_fpga.vhd trb_v2b_fpga_cts.vhd"; +system($c); +$c="cp trb_v2b_fpga.vhd trb_v2b_fpga_mdc_or_shower.vhd"; +system($c); +my $fh = new FileHandle("< trb_v2b_fpga_cts.vhd"); +my $fh1 = new FileHandle("> temp_perl.vhd"); +my $exchange_a ="trb_v2b_fpga"; +my $exchange_to_a = "trb_v2b_fpga_cts"; +my $exchange_to_b = "trb_v2b_fpga_mdc_or_shower"; +my $exchange_b = "--*no sim"; +my $temptext; + +while(<$fh>) +{ + $temptext = $_; + $temptext =~ s/TRBV2_TYPE : integer range 0 to 5 := /TRBV2_TYPE : integer range 0 to 5 := 5;--/; + $temptext =~ s/$exchange_a/$exchange_to_a/g; + print {$fh1} $temptext; +} +$fh1 -> close; +$fh -> close; +$c="cp temp_perl.vhd trb_v2b_fpga_cts.vhd"; +system($c); + +my $fh2 = new FileHandle("< trb_v2b_fpga_mdc_or_shower.vhd"); +my $fh3 = new FileHandle("> temp_perl.vhd"); + +while(<$fh2>) +{ + $temptext = $_; + $temptext =~ s/TRBV2_TYPE : integer range 0 to 5 := /TRBV2_TYPE : integer range 0 to 5 := 1;--/; + $temptext =~ s/$exchange_a/$exchange_to_b/g; + print {$fh3} $temptext; +} +$fh2 -> close; +$fh3 -> close; +$c="cp temp_perl.vhd trb_v2b_fpga_mdc_or_shower.vhd"; +system($c); + +my $fh4 = new FileHandle("< hub.vhd"); +my $fh5 = new FileHandle("> temp_perl.vhd"); + +while(<$fh4>) +{ + $temptext = $_; + $temptext =~ s/--sim--//; + if($temptext =~ /--no_sim--/) + { + $temptext = "--".$temptext; + } + print {$fh5} $temptext; +} +$fh4 -> close; +$fh5 -> close; +$c="cp temp_perl.vhd hub.vhd"; +system($c); + +my $fh6 = new FileHandle("< flexi_PCS_channel_synch.vhd"); +my $fh7 = new FileHandle("> temp_perl.vhd"); + +while(<$fh6>) +{ + $temptext = $_; + $temptext =~ s/--sim--//; + if($temptext =~ /--no_sim--/) + { + $temptext = "--".$temptext; + } + print {$fh7} $temptext; +} +$fh6 -> close; +$fh7 -> close; +$c="cp temp_perl.vhd flexi_PCS_channel_synch.vhd"; +system($c); + + + diff --git a/simulation/system_tb.vhd b/simulation/system_tb.vhd new file mode 100644 index 0000000..2ff9c45 --- /dev/null +++ b/simulation/system_tb.vhd @@ -0,0 +1,1837 @@ +library IEEE; +use IEEE.STD_LOGIC_UNSIGNED.ALL; +library UNISIM; +use UNISIM.VCOMPONENTS.all; + +use ieee.std_logic_arith.all; + + +library ieee; +library work; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use work.all; + +entity system is + +end system; +architecture system of system is + component hub + port ( + LVDS_CLK_200P : in std_logic; + ADO_TTL : inout std_logic_vector(46 downto 0); + DBAD : out std_logic; + DGOOD : out std_logic; + DINT : out std_logic; + DWAIT : out std_logic; + LOK : out std_logic_vector(16 downto 1); + RT : out std_logic_vector(16 downto 1); + TX_DIS : out std_logic_vector(16 downto 1); + IPLL : out std_logic; + OPLL : out std_logic; + SFP_INP_N : in std_logic_vector(15 downto 0); + SFP_INP_P : in std_logic_vector(15 downto 0); + SFP_OUT_N : out std_logic_vector(15 downto 0); + SFP_OUT_P : out std_logic_vector(15 downto 0); + FS_PE_11 : inout std_logic; + FS_PE : inout std_logic_vector(9 downto 8); + SFP_LOS : in std_logic_vector(16 downto 1); + OPT_DATA_IN : in std_logic_vector(255 downto 0); + OPT_DATA_OUT : out std_logic_vector(255 downto 0); + OPT_DATA_VALID_IN : in std_logic_vector(15 downto 0); + OPT_DATA_VALID_OUT : out std_logic_vector(15 downto 0)); + end component; + component trb_v2b_fpga + generic ( + RW_SYSTEM : integer range 0 to 5:=1; + TRBV2_TYPE : integer range 0 to 5:=0; + TRBNET_ENABLE : integer range 0 to 1:=0; + DTU_ENABLE : integer range 0 to 2:=2; + CTU_ENABLE : integer range 0 to 1:=0; + HADES_OLD_BUS_ENABLE : integer range 0 to 1:=0; + DSP_INT_ENABLE : integer range 0 to 1:=0; + SDRAM_INT_ENABLE : integer range 0 to 1:=0; + SCALERS_ENABLE : integer range 0 to 1:=0); + port ( + VIRT_CLK : in std_logic; + VIRT_CLKB : in std_logic; + RESET_VIRT : in std_logic; + DBAD : out std_logic; + DGOOD : out std_logic; + DINT : out std_logic; + DWAIT : out std_logic; + A_RESERVED : in std_logic; + A_TEMP : in std_logic; + B_RESERVED : in std_logic; + B_TEMP : in std_logic; + C_RESERVED : in std_logic; + C_TEMP : in std_logic; + D_RESERVED : in std_logic; + D_TEMP : in std_logic; + VIR_TRIG : in std_logic; + VIR_TRIGB : in std_logic; + A_TDC_ERROR : in std_logic; + B_TDC_ERROR : in std_logic; + C_TDC_ERROR : in std_logic; + D_TDC_ERROR : in std_logic; + A_TDC_POWERUP : out std_logic; + B_TDC_POWERUP : out std_logic; + C_TDC_POWERUP : out std_logic; + D_TDC_POWERUP : out std_logic; + TOKEN_IN : in std_logic; + TOKEN_OUT : out std_logic; + C_TOKEN_OUT_TTL : in std_logic; + GET_DATA : out std_logic; + A_DATA_READY : in std_logic; + B_DATA_READY : in std_logic; + C_DATA_READY : in std_logic; + D_DATA_READY : in std_logic; + REF_TDC_CLK : in std_logic; + REF_TDC_CLKB : in std_logic; + A_TDC_BU_RESET : out std_logic; + A_TDC_BU_RESETB : out std_logic; + A_TDC_EV_RESET : out std_logic; + A_TDC_EV_RESETB : out std_logic; + B_TDC_BU_RESET : out std_logic; + B_TDC_BU_RESETB : out std_logic; + B_TDC_EV_RESET : out std_logic; + B_TDC_EV_RESETB : out std_logic; + C_TDC_BU_RESET : out std_logic; + C_TDC_BU_RESETB : out std_logic; + C_TDC_EV_RESET : out std_logic; + C_TDC_EV_RESETB : out std_logic; + D_TDC_BU_RESET : out std_logic; + D_TDC_BU_RESETB : out std_logic; + D_TDC_EV_RESET : out std_logic; + D_TDC_EV_RESETB : out std_logic; + TDC_OUT : in std_logic_vector (31 downto 0); + TDC_RESET : out std_logic; + A_TRIGGER : out std_logic; + A_TRIGGERB : out std_logic; + B_TRIGGER : out std_logic; + B_TRIGGERB : out std_logic; + C_TRIGGER : out std_logic; + C_TRIGGERB : out std_logic; + D_TRIGGER : out std_logic; + D_TRIGGERB : out std_logic; + FS_PB : inout std_logic_vector (16 downto 0); + FS_PB_17 : in std_logic; + FS_PC : inout std_logic_vector (17 downto 0); + ETRAX_IRQ : out std_logic; + A_SCK : out std_logic; + A_SCKB : out std_logic; + A_SDI : in std_logic; + A_SDIB : in std_logic; + A_SDO : out std_logic; + A_SDOB : out std_logic; + A_CSB : out std_logic; + A_CS : out std_logic; + B_SCK : out std_logic; + B_SCKB : out std_logic; + B_SDI : in std_logic; + B_SDIB : in std_logic; + B_SDO : out std_logic; + B_SDOB : out std_logic; + B_CSB : out std_logic; + B_CS : out std_logic; + C_SCK : out std_logic; + C_SCKB : out std_logic; + C_SDI : in std_logic; + C_SDIB : in std_logic; + C_SDO : out std_logic; + C_SDOB : out std_logic; + C_CSB : out std_logic; + C_CS : out std_logic; + D_SCK : out std_logic; + D_SCKB : out std_logic; + D_SDI : in std_logic; + D_SDIB : in std_logic; + D_SDO : out std_logic; + D_SDOB : out std_logic; + D_CSB : out std_logic; + D_CS : out std_logic; + A_TEST1 : out std_logic; + A_TEST1B : out std_logic; + A_TEST2 : out std_logic; + A_TEST2B : out std_logic; + B_TEST1 : out std_logic; + B_TEST1B : out std_logic; + B_TEST2 : out std_logic; + B_TEST2B : out std_logic; + C_TEST1 : out std_logic; + C_TEST1B : out std_logic; + C_TEST2 : out std_logic; + C_TEST2B : out std_logic; + D_TEST1 : out std_logic; + D_TEST1B : out std_logic; + D_TEST2 : out std_logic; + D_TEST2B : out std_logic; + DSPADDR : out std_logic_vector (31 downto 0); + DSPDAT : inout std_logic_vector (31 downto 0); + DSP_ACK : in std_logic; + DSP_BM : inout std_logic; + DSP_BMS : out std_logic; + DSP_BOFF : out std_logic; + DSP_BRST : inout std_logic; + DSP_HBG : in std_logic; + DSP_HBR : out std_logic; + DSP_IRQ : out std_logic_vector (3 downto 0); + DSP_RD : out std_logic; + DSP_RESET : out std_logic; + DSP_RESET_OUT : in std_logic; + DSP_WRH : out std_logic; + DSP_WRL : out std_logic; + VSD_A : out std_logic_vector (12 downto 0); + VSD_BA : out std_logic_vector (1 downto 0); + VSD_CAS : out std_logic; + VSD_CKE : out std_logic; + VSD_CLOCK : out std_logic; + VSD_CSEH : out std_logic; + VSD_CSEL : out std_logic; + VSD_D : inout std_logic_vector (31 downto 0); + VSD_DQML : out std_logic_vector (3 downto 0); + VSD_RAS : out std_logic; + VSD_WE : out std_logic; + TLK_CLK : in std_logic; + TLK_ENABLE : out std_logic; + TLK_LCKREFN : out std_logic; + TLK_LOOPEN : out std_logic; + TLK_PRBSEN : out std_logic; + TLK_RXD : in std_logic_vector (15 downto 0); + TLK_RX_CLK : in std_logic; + TLK_RX_DV : in std_logic; + TLK_RX_ER : in std_logic; + TLK_TXD : out std_logic_vector (15 downto 0); + TLK_TX_EN : out std_logic; + TLK_TX_ER : out std_logic; + SFP_LOS : in std_logic; + SFP_TX_DIS : out std_logic; + SFP_TX_FAULT : in std_logic; + ADDON_TO_TRB_CLKINN : in std_logic; + ADDON_TO_TRB_CLKINP : in std_logic; + ADO_LV : in std_logic_vector(51 downto 0); + ADO_TTL : inout std_logic_vector(46 downto 0); + VIRT_TCK : out std_logic; + VIRT_TDI : out std_logic; + VIRT_TDO : in std_logic; + VIRT_TMS : out std_logic; + VIRT_TRST : out std_logic); + end component; + component trb_v2b_fpga_cts + generic ( + RW_SYSTEM : integer range 0 to 5:=1; + TRBV2_TYPE : integer range 0 to 5:=5; + TRBNET_ENABLE : integer range 0 to 1:=0; + DTU_ENABLE : integer range 0 to 2:=2; + CTU_ENABLE : integer range 0 to 1:=0; + HADES_OLD_BUS_ENABLE : integer range 0 to 1:=0; + DSP_INT_ENABLE : integer range 0 to 1:=0; + SDRAM_INT_ENABLE : integer range 0 to 1:=0; + SCALERS_ENABLE : integer range 0 to 1:=0); + port ( + VIRT_CLK : in std_logic; + VIRT_CLKB : in std_logic; + RESET_VIRT : in std_logic; + DBAD : out std_logic; + DGOOD : out std_logic; + DINT : out std_logic; + DWAIT : out std_logic; + A_RESERVED : in std_logic; + A_TEMP : in std_logic; + B_RESERVED : in std_logic; + B_TEMP : in std_logic; + C_RESERVED : in std_logic; + C_TEMP : in std_logic; + D_RESERVED : in std_logic; + D_TEMP : in std_logic; + VIR_TRIG : in std_logic; + VIR_TRIGB : in std_logic; + A_TDC_ERROR : in std_logic; + B_TDC_ERROR : in std_logic; + C_TDC_ERROR : in std_logic; + D_TDC_ERROR : in std_logic; + A_TDC_POWERUP : out std_logic; + B_TDC_POWERUP : out std_logic; + C_TDC_POWERUP : out std_logic; + D_TDC_POWERUP : out std_logic; + TOKEN_IN : in std_logic; + TOKEN_OUT : out std_logic; + C_TOKEN_OUT_TTL : in std_logic; + GET_DATA : out std_logic; + A_DATA_READY : in std_logic; + B_DATA_READY : in std_logic; + C_DATA_READY : in std_logic; + D_DATA_READY : in std_logic; + REF_TDC_CLK : in std_logic; + REF_TDC_CLKB : in std_logic; + A_TDC_BU_RESET : out std_logic; + A_TDC_BU_RESETB : out std_logic; + A_TDC_EV_RESET : out std_logic; + A_TDC_EV_RESETB : out std_logic; + B_TDC_BU_RESET : out std_logic; + B_TDC_BU_RESETB : out std_logic; + B_TDC_EV_RESET : out std_logic; + B_TDC_EV_RESETB : out std_logic; + C_TDC_BU_RESET : out std_logic; + C_TDC_BU_RESETB : out std_logic; + C_TDC_EV_RESET : out std_logic; + C_TDC_EV_RESETB : out std_logic; + D_TDC_BU_RESET : out std_logic; + D_TDC_BU_RESETB : out std_logic; + D_TDC_EV_RESET : out std_logic; + D_TDC_EV_RESETB : out std_logic; + TDC_OUT : in std_logic_vector (31 downto 0); + TDC_RESET : out std_logic; + A_TRIGGER : out std_logic; + A_TRIGGERB : out std_logic; + B_TRIGGER : out std_logic; + B_TRIGGERB : out std_logic; + C_TRIGGER : out std_logic; + C_TRIGGERB : out std_logic; + D_TRIGGER : out std_logic; + D_TRIGGERB : out std_logic; + FS_PB : inout std_logic_vector (16 downto 0); + FS_PB_17 : in std_logic; + FS_PC : inout std_logic_vector (17 downto 0); + ETRAX_IRQ : out std_logic; + A_SCK : out std_logic; + A_SCKB : out std_logic; + A_SDI : in std_logic; + A_SDIB : in std_logic; + A_SDO : out std_logic; + A_SDOB : out std_logic; + A_CSB : out std_logic; + A_CS : out std_logic; + B_SCK : out std_logic; + B_SCKB : out std_logic; + B_SDI : in std_logic; + B_SDIB : in std_logic; + B_SDO : out std_logic; + B_SDOB : out std_logic; + B_CSB : out std_logic; + B_CS : out std_logic; + C_SCK : out std_logic; + C_SCKB : out std_logic; + C_SDI : in std_logic; + C_SDIB : in std_logic; + C_SDO : out std_logic; + C_SDOB : out std_logic; + C_CSB : out std_logic; + C_CS : out std_logic; + D_SCK : out std_logic; + D_SCKB : out std_logic; + D_SDI : in std_logic; + D_SDIB : in std_logic; + D_SDO : out std_logic; + D_SDOB : out std_logic; + D_CSB : out std_logic; + D_CS : out std_logic; + A_TEST1 : out std_logic; + A_TEST1B : out std_logic; + A_TEST2 : out std_logic; + A_TEST2B : out std_logic; + B_TEST1 : out std_logic; + B_TEST1B : out std_logic; + B_TEST2 : out std_logic; + B_TEST2B : out std_logic; + C_TEST1 : out std_logic; + C_TEST1B : out std_logic; + C_TEST2 : out std_logic; + C_TEST2B : out std_logic; + D_TEST1 : out std_logic; + D_TEST1B : out std_logic; + D_TEST2 : out std_logic; + D_TEST2B : out std_logic; + DSPADDR : out std_logic_vector (31 downto 0); + DSPDAT : inout std_logic_vector (31 downto 0); + DSP_ACK : in std_logic; + DSP_BM : inout std_logic; + DSP_BMS : out std_logic; + DSP_BOFF : out std_logic; + DSP_BRST : inout std_logic; + DSP_HBG : in std_logic; + DSP_HBR : out std_logic; + DSP_IRQ : out std_logic_vector (3 downto 0); + DSP_RD : out std_logic; + DSP_RESET : out std_logic; + DSP_RESET_OUT : in std_logic; + DSP_WRH : out std_logic; + DSP_WRL : out std_logic; + VSD_A : out std_logic_vector (12 downto 0); + VSD_BA : out std_logic_vector (1 downto 0); + VSD_CAS : out std_logic; + VSD_CKE : out std_logic; + VSD_CLOCK : out std_logic; + VSD_CSEH : out std_logic; + VSD_CSEL : out std_logic; + VSD_D : inout std_logic_vector (31 downto 0); + VSD_DQML : out std_logic_vector (3 downto 0); + VSD_RAS : out std_logic; + VSD_WE : out std_logic; + TLK_CLK : in std_logic; + TLK_ENABLE : out std_logic; + TLK_LCKREFN : out std_logic; + TLK_LOOPEN : out std_logic; + TLK_PRBSEN : out std_logic; + TLK_RXD : in std_logic_vector (15 downto 0); + TLK_RX_CLK : in std_logic; + TLK_RX_DV : in std_logic; + TLK_RX_ER : in std_logic; + TLK_TXD : out std_logic_vector (15 downto 0); + TLK_TX_EN : out std_logic; + TLK_TX_ER : out std_logic; + SFP_LOS : in std_logic; + SFP_TX_DIS : out std_logic; + SFP_TX_FAULT : in std_logic; + ADDON_TO_TRB_CLKINN : in std_logic; + ADDON_TO_TRB_CLKINP : in std_logic; + ADO_LV : in std_logic_vector(51 downto 0); + ADO_TTL : inout std_logic_vector(46 downto 0); + VIRT_TCK : out std_logic; + VIRT_TDI : out std_logic; + VIRT_TDO : in std_logic; + VIRT_TMS : out std_logic; + VIRT_TRST : out std_logic); + end component; + constant HOW_MANY_ACTIVE_TRBS : integer := 15; + --hub + signal LVDS_CLK_200P_i : std_logic; + signal HUB_ADO_TTL_i : std_logic_vector(46 downto 0); + signal DBAD_i : std_logic; + signal DGOOD_i : std_logic; + signal DINT_i : std_logic; + signal DWAIT_i : std_logic; + signal LOK_i : std_logic_vector(16 downto 1); + signal RT_i : std_logic_vector(16 downto 1); + signal TX_DIS_i : std_logic_vector(16 downto 1); + signal IPLL_i : std_logic; + signal OPLL_i : std_logic; + signal SFP_INP_N_i : std_logic_vector(15 downto 0); + signal SFP_INP_P_i : std_logic_vector(15 downto 0); + signal SFP_OUT_N_i : std_logic_vector(15 downto 0); + signal SFP_OUT_P_i : std_logic_vector(15 downto 0); + signal OPT_DATA_IN_i : std_logic_vector(255 downto 0); + signal OPT_DATA_OUT_i : std_logic_vector(255 downto 0); + signal OPT_DATA_VALID_IN_i : std_logic_vector(15 downto 0); + signal OPT_DATA_VALID_OUT_i : std_logic_vector(15 downto 0); + + --trb + signal VIRT_CLK_i : std_logic; + signal VIRT_CLKB_i : std_logic; + signal RESET_VIRT_i : std_logic; +-- signal DBAD_i : std_logic; +-- signal DGOOD_i : std_logic; +-- signal DINT_i : std_logic; +-- signal DWAIT_i : std_logic; + signal A_RESERVED_i : std_logic; + signal A_TEMP_i : std_logic; + signal B_RESERVED_i : std_logic; + signal B_TEMP_i : std_logic; + signal C_RESERVED_i : std_logic; + signal C_TEMP_i : std_logic; + signal D_RESERVED_i : std_logic; + signal D_TEMP_i : std_logic; + signal VIR_TRIG_i : std_logic; + signal VIR_TRIGB_i : std_logic; + signal A_TDC_ERROR_i : std_logic; + signal B_TDC_ERROR_i : std_logic; + signal C_TDC_ERROR_i : std_logic; + signal D_TDC_ERROR_i : std_logic; + signal A_TDC_POWERUP_i : std_logic; + signal B_TDC_POWERUP_i : std_logic; + signal C_TDC_POWERUP_i : std_logic; + signal D_TDC_POWERUP_i : std_logic; + signal TOKEN_IN_i : std_logic_vector(HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal TOKEN_OUT_i : std_logic_vector(HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal C_TOKEN_OUT_TTL_i : std_logic; + signal GET_DATA_i : std_logic; + signal A_DATA_READY_i : std_logic_vector(HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal B_DATA_READY_i : std_logic_vector(HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal C_DATA_READY_i : std_logic_vector(HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal D_DATA_READY_i : std_logic_vector(HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal REF_TDC_CLK_i : std_logic; + signal REF_TDC_CLKB_i : std_logic; + signal A_TDC_BU_RESET_i : std_logic; + signal A_TDC_BU_RESETB_i : std_logic; + signal A_TDC_EV_RESET_i : std_logic; + signal A_TDC_EV_RESETB_i : std_logic; + signal B_TDC_BU_RESET_i : std_logic; + signal B_TDC_BU_RESETB_i : std_logic; + signal B_TDC_EV_RESET_i : std_logic; + signal B_TDC_EV_RESETB_i : std_logic; + signal C_TDC_BU_RESET_i : std_logic; + signal C_TDC_BU_RESETB_i : std_logic; + signal C_TDC_EV_RESET_i : std_logic; + signal C_TDC_EV_RESETB_i : std_logic; + signal D_TDC_BU_RESET_i : std_logic; + signal D_TDC_BU_RESETB_i : std_logic; + signal D_TDC_EV_RESET_i : std_logic; + signal D_TDC_EV_RESETB_i : std_logic; + signal TDC_OUT_i : std_logic_vector (HOW_MANY_ACTIVE_TRBS*32-1 downto 0); + signal TDC_RESET_i : std_logic; + signal A_TRIGGER_i : std_logic; + signal A_TRIGGERB_i : std_logic; + signal B_TRIGGER_i : std_logic; + signal B_TRIGGERB_i : std_logic; + signal C_TRIGGER_i : std_logic; + signal C_TRIGGERB_i : std_logic; + signal D_TRIGGER_i : std_logic; + signal D_TRIGGERB_i : std_logic; + signal FS_PB_i : std_logic_vector (17*HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal FS_PB_17_i : std_logic_vector(HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal FS_PC_i : std_logic_vector (18*HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal ETRAX_IRQ_i : std_logic; + signal A_SCK_i : std_logic; + signal A_SCKB_i : std_logic; + signal A_SDI_i : std_logic; + signal A_SDIB_i : std_logic; + signal A_SDO_i : std_logic; + signal A_SDOB_i : std_logic; + signal A_CSB_i : std_logic; + signal A_CS_i : std_logic; + signal B_SCK_i : std_logic; + signal B_SCKB_i : std_logic; + signal B_SDI_i : std_logic; + signal B_SDIB_i : std_logic; + signal B_SDO_i : std_logic; + signal B_SDOB_i : std_logic; + signal B_CSB_i : std_logic; + signal B_CS_i : std_logic; + signal C_SCK_i : std_logic; + signal C_SCKB_i : std_logic; + signal C_SDI_i : std_logic; + signal C_SDIB_i : std_logic; + signal C_SDO_i : std_logic; + signal C_SDOB_i : std_logic; + signal C_CSB_i : std_logic; + signal C_CS_i : std_logic; + signal D_SCK_i : std_logic; + signal D_SCKB_i : std_logic; + signal D_SDI_i : std_logic; + signal D_SDIB_i : std_logic; + signal D_SDO_i : std_logic; + signal D_SDOB_i : std_logic; + signal D_CSB_i : std_logic; + signal D_CS_i : std_logic; + signal A_TEST1_i : std_logic; + signal A_TEST1B_i : std_logic; + signal A_TEST2_i : std_logic; + signal A_TEST2B_i : std_logic; + signal B_TEST1_i : std_logic; + signal B_TEST1B_i : std_logic; + signal B_TEST2_i : std_logic; + signal B_TEST2B_i : std_logic; + signal C_TEST1_i : std_logic; + signal C_TEST1B_i : std_logic; + signal C_TEST2_i : std_logic; + signal C_TEST2B_i : std_logic; + signal D_TEST1_i : std_logic; + signal D_TEST1B_i : std_logic; + signal D_TEST2_i : std_logic; + signal D_TEST2B_i : std_logic; + signal DSPADDR_i : std_logic_vector (31 downto 0); + signal DSPDAT_i : std_logic_vector (31 downto 0); + signal DSP_ACK_i : std_logic; + signal DSP_BM_i : std_logic; + signal DSP_BMS_i : std_logic; + signal DSP_BOFF_i : std_logic; + signal DSP_BRST_i : std_logic; + signal DSP_HBG_i : std_logic; + signal DSP_HBR_i : std_logic; + signal DSP_IRQ_i : std_logic_vector (3 downto 0); + signal DSP_RD_i : std_logic; + signal DSP_RESET_i : std_logic; + signal DSP_RESET_OUT_i : std_logic; + signal DSP_WRH_i : std_logic; + signal DSP_WRL_i : std_logic; + signal VSD_A_i : std_logic_vector (12 downto 0); + signal VSD_BA_i : std_logic_vector (1 downto 0); + signal VSD_CAS_i : std_logic; + signal VSD_CKE_i : std_logic; + signal VSD_CLOCK_i : std_logic; + signal VSD_CSEH_i : std_logic; + signal VSD_CSEL_i : std_logic; + signal VSD_D_i : std_logic_vector (31 downto 0); + signal VSD_DQML_i : std_logic_vector (3 downto 0); + signal VSD_RAS_i : std_logic; + signal VSD_WE_i : std_logic; + signal TLK_CLK_i : std_logic; + signal TLK_ENABLE_i : std_logic; + signal TLK_LCKREFN_i : std_logic; + signal TLK_LOOPEN_i : std_logic; + signal TLK_PRBSEN_i : std_logic; + signal TLK_RXD_i : std_logic_vector (15 downto 0); + signal TLK_RX_CLK_i : std_logic; + signal TLK_RX_DV_i : std_logic; + signal TLK_RX_ER_i : std_logic; + signal TLK_TXD_i : std_logic_vector (15 downto 0); + signal TLK_TX_EN_i : std_logic; + signal TLK_TX_ER_i : std_logic; + signal SFP_LOS_i : std_logic; + signal SFP_TX_DIS_i : std_logic; + signal SFP_TX_FAULT_i : std_logic; + signal ADDON_TO_TRB_CLKINN_i : std_logic; + signal ADDON_TO_TRB_CLKINP_i : std_logic; + signal ADO_LV_i : std_logic_vector(51 downto 0); + signal ADO_TTL_i : std_logic_vector(46 downto 0); + signal VIRT_TCK_i : std_logic; + signal VIRT_TDI_i : std_logic; + signal VIRT_TDO_i : std_logic; + signal VIRT_TMS_i : std_logic; + signal VIRT_TRST_i : std_logic; + + --cts + signal CTS_VIRT_CLK_i : std_logic; + signal CTS_VIRT_CLKB_i : std_logic; + signal CTS_RESET_VIRT_i : std_logic; + signal CTS_DBAD_i : std_logic; + signal CTS_DGOOD_i : std_logic; + signal CTS_DINT_i : std_logic; + signal CTS_DWAIT_i : std_logic; + signal CTS_A_RESERVED_i : std_logic; + signal CTS_A_TEMP_i : std_logic; + signal CTS_B_RESERVED_i : std_logic; + signal CTS_B_TEMP_i : std_logic; + signal CTS_C_RESERVED_i : std_logic; + signal CTS_C_TEMP_i : std_logic; + signal CTS_D_RESERVED_i : std_logic; + signal CTS_D_TEMP_i : std_logic; + signal CTS_VIR_TRIG_i : std_logic; + signal CTS_VIR_TRIGB_i : std_logic; + signal CTS_A_TDC_ERROR_i : std_logic; + signal CTS_B_TDC_ERROR_i : std_logic; + signal CTS_C_TDC_ERROR_i : std_logic; + signal CTS_D_TDC_ERROR_i : std_logic; + signal CTS_A_TDC_POWERUP_i : std_logic; + signal CTS_B_TDC_POWERUP_i : std_logic; + signal CTS_C_TDC_POWERUP_i : std_logic; + signal CTS_D_TDC_POWERUP_i : std_logic; + signal CTS_TOKEN_IN_i : std_logic; + signal CTS_TOKEN_OUT_i : std_logic; + signal CTS_C_TOKEN_OUT_TTL_i : std_logic; + signal CTS_GET_DATA_i : std_logic; + signal CTS_A_DATA_READY_i : std_logic; + signal CTS_B_DATA_READY_i : std_logic; + signal CTS_C_DATA_READY_i : std_logic; + signal CTS_D_DATA_READY_i : std_logic; + signal CTS_REF_TDC_CLK_i : std_logic; + signal CTS_REF_TDC_CLKB_i : std_logic; + signal CTS_A_TDC_BU_RESET_i : std_logic; + signal CTS_A_TDC_BU_RESETB_i : std_logic; + signal CTS_A_TDC_EV_RESET_i : std_logic; + signal CTS_A_TDC_EV_RESETB_i : std_logic; + signal CTS_B_TDC_BU_RESET_i : std_logic; + signal CTS_B_TDC_BU_RESETB_i : std_logic; + signal CTS_B_TDC_EV_RESET_i : std_logic; + signal CTS_B_TDC_EV_RESETB_i : std_logic; + signal CTS_C_TDC_BU_RESET_i : std_logic; + signal CTS_C_TDC_BU_RESETB_i : std_logic; + signal CTS_C_TDC_EV_RESET_i : std_logic; + signal CTS_C_TDC_EV_RESETB_i : std_logic; + signal CTS_D_TDC_BU_RESET_i : std_logic; + signal CTS_D_TDC_BU_RESETB_i : std_logic; + signal CTS_D_TDC_EV_RESET_i : std_logic; + signal CTS_D_TDC_EV_RESETB_i : std_logic; + signal CTS_TDC_OUT_i : std_logic_vector (31 downto 0); + signal CTS_TDC_RESET_i : std_logic; + signal CTS_A_TRIGGER_i : std_logic; + signal CTS_A_TRIGGERB_i : std_logic; + signal CTS_B_TRIGGER_i : std_logic; + signal CTS_B_TRIGGERB_i : std_logic; + signal CTS_C_TRIGGER_i : std_logic; + signal CTS_C_TRIGGERB_i : std_logic; + signal CTS_D_TRIGGER_i : std_logic; + signal CTS_D_TRIGGERB_i : std_logic; + signal CTS_FS_PB_i : std_logic_vector (16 downto 0); + signal CTS_FS_PB_17_i : std_logic; + signal CTS_FS_PC_i : std_logic_vector (17 downto 0); + signal CTS_ETRAX_IRQ_i : std_logic; + signal CTS_A_SCK_i : std_logic; + signal CTS_A_SCKB_i : std_logic; + signal CTS_A_SDI_i : std_logic; + signal CTS_A_SDIB_i : std_logic; + signal CTS_A_SDO_i : std_logic; + signal CTS_A_SDOB_i : std_logic; + signal CTS_A_CSB_i : std_logic; + signal CTS_A_CS_i : std_logic; + signal CTS_B_SCK_i : std_logic; + signal CTS_B_SCKB_i : std_logic; + signal CTS_B_SDI_i : std_logic; + signal CTS_B_SDIB_i : std_logic; + signal CTS_B_SDO_i : std_logic; + signal CTS_B_SDOB_i : std_logic; + signal CTS_B_CSB_i : std_logic; + signal CTS_B_CS_i : std_logic; + signal CTS_C_SCK_i : std_logic; + signal CTS_C_SCKB_i : std_logic; + signal CTS_C_SDI_i : std_logic; + signal CTS_C_SDIB_i : std_logic; + signal CTS_C_SDO_i : std_logic; + signal CTS_C_SDOB_i : std_logic; + signal CTS_C_CSB_i : std_logic; + signal CTS_C_CS_i : std_logic; + signal CTS_D_SCK_i : std_logic; + signal CTS_D_SCKB_i : std_logic; + signal CTS_D_SDI_i : std_logic; + signal CTS_D_SDIB_i : std_logic; + signal CTS_D_SDO_i : std_logic; + signal CTS_D_SDOB_i : std_logic; + signal CTS_D_CSB_i : std_logic; + signal CTS_D_CS_i : std_logic; + signal CTS_A_TEST1_i : std_logic; + signal CTS_A_TEST1B_i : std_logic; + signal CTS_A_TEST2_i : std_logic; + signal CTS_A_TEST2B_i : std_logic; + signal CTS_B_TEST1_i : std_logic; + signal CTS_B_TEST1B_i : std_logic; + signal CTS_B_TEST2_i : std_logic; + signal CTS_B_TEST2B_i : std_logic; + signal CTS_C_TEST1_i : std_logic; + signal CTS_C_TEST1B_i : std_logic; + signal CTS_C_TEST2_i : std_logic; + signal CTS_C_TEST2B_i : std_logic; + signal CTS_D_TEST1_i : std_logic; + signal CTS_D_TEST1B_i : std_logic; + signal CTS_D_TEST2_i : std_logic; + signal CTS_D_TEST2B_i : std_logic; + signal CTS_DSPADDR_i : std_logic_vector (31 downto 0); + signal CTS_DSPDAT_i : std_logic_vector (31 downto 0); + signal CTS_DSP_ACK_i : std_logic; + signal CTS_DSP_BM_i : std_logic; + signal CTS_DSP_BMS_i : std_logic; + signal CTS_DSP_BOFF_i : std_logic; + signal CTS_DSP_BRST_i : std_logic; + signal CTS_DSP_HBG_i : std_logic; + signal CTS_DSP_HBR_i : std_logic; + signal CTS_DSP_IRQ_i : std_logic_vector (3 downto 0); + signal CTS_DSP_RD_i : std_logic; + signal CTS_DSP_RESET_i : std_logic; + signal CTS_DSP_RESET_OUT_i : std_logic; + signal CTS_DSP_WRH_i : std_logic; + signal CTS_DSP_WRL_i : std_logic; + signal CTS_VSD_A_i : std_logic_vector (12 downto 0); + signal CTS_VSD_BA_i : std_logic_vector (1 downto 0); + signal CTS_VSD_CAS_i : std_logic; + signal CTS_VSD_CKE_i : std_logic; + signal CTS_VSD_CLOCK_i : std_logic; + signal CTS_VSD_CSEH_i : std_logic; + signal CTS_VSD_CSEL_i : std_logic; + signal CTS_VSD_D_i : std_logic_vector (31 downto 0); + signal CTS_VSD_DQML_i : std_logic_vector (3 downto 0); + signal CTS_VSD_RAS_i : std_logic; + signal CTS_VSD_WE_i : std_logic; + signal CTS_TLK_CLK_i : std_logic; + signal CTS_TLK_ENABLE_i : std_logic; + signal CTS_TLK_LCKREFN_i : std_logic; + signal CTS_TLK_LOOPEN_i : std_logic; + signal CTS_TLK_PRBSEN_i : std_logic; + signal CTS_TLK_RXD_i : std_logic_vector (15 downto 0); + signal CTS_TLK_RX_CLK_i : std_logic; + signal CTS_TLK_RX_DV_i : std_logic; + signal CTS_TLK_RX_ER_i : std_logic; + signal CTS_TLK_TXD_i : std_logic_vector (15 downto 0); + signal CTS_TLK_TX_EN_i : std_logic; + signal CTS_TLK_TX_ER_i : std_logic; + signal CTS_SFP_LOS_i : std_logic; + signal CTS_SFP_TX_DIS_i : std_logic; + signal CTS_SFP_TX_FAULT_i : std_logic; + signal CTS_ADDON_TO_TRB_CLKINN_i : std_logic; + signal CTS_ADDON_TO_TRB_CLKINP_i : std_logic; + signal CTS_ADO_LV_i : std_logic_vector(51 downto 0); + signal CTS_ADO_TTL_i : std_logic_vector(46 downto 0); + signal CTS_VIRT_TCK_i : std_logic; + signal CTS_VIRT_TDI_i : std_logic; + signal CTS_VIRT_TDO_i : std_logic; + signal CTS_VIRT_TMS_i : std_logic; + signal CTS_VIRT_TRST_i : std_logic; + + -- + signal vulom_lvl1_tag : std_logic_vector(15 downto 0); + signal cts_etrax_busy : std_logic; + signal cts_rw_mode : std_logic_vector(15 downto 0); + signal cts_address : std_logic_vector(31 downto 0); + signal cts_data : std_logic_vector(31 downto 0); + + signal hub_rw_mode : std_logic_vector(15 downto 0); + signal hub_address : std_logic_vector(31 downto 0); + signal hub_data : std_logic_vector(31 downto 0); + signal hub_sfp_los_i : std_logic_vector(16 downto 1); + + signal etrax_busy : std_logic_vector(HOW_MANY_ACTIVE_TRBS-1 downto 0); + signal tdc_data_i : std_logic_vector(31 downto 0); + + signal HUB_FS_PE_i : std_logic_vector(9 downto 8); + signal enable_channels : std_logic_vector(15 downto 0); + + +begin + + ----------------------------------------------------------------------------- + -- -------------------------------------------------------------------------- + -- -------------------------------------------------------------------------- + -- hub + ----------------------------------------------------------------------------- + ----------------------------------------------------------------------------- + ----------------------------------------------------------------------------- + HUB_INST: hub + port map ( + LVDS_CLK_200P => LVDS_CLK_200P_i, + ADO_TTL => open, + DBAD => DBAD_i, + DGOOD => DGOOD_i, + DINT => DINT_i, + DWAIT => DWAIT_i, + LOK => LOK_i, + RT => RT_i, + TX_DIS => TX_DIS_i, + IPLL => IPLL_i, + OPLL => OPLL_i, + SFP_INP_N => SFP_INP_N_i, + SFP_INP_P => SFP_INP_P_i, + SFP_OUT_N => SFP_OUT_N_i, + SFP_OUT_P => SFP_OUT_P_i, + FS_PE_11 => open, + FS_PE => HUB_FS_PE_i, + SFP_LOS => hub_sfp_los_i, + OPT_DATA_IN => OPT_DATA_IN_i, + OPT_DATA_OUT => OPT_DATA_OUT_i, + OPT_DATA_VALID_IN => OPT_DATA_VALID_IN_i, + OPT_DATA_VALID_OUT => OPT_DATA_VALID_OUT_i); + hub_sfp_los_i <= (others => '0'); + --------------------------------------------------------------------------- + -- writing register + --------------------------------------------------------------------------- + CONVERT: process + begin -- process CONVERT + case HOW_MANY_ACTIVE_TRBS is + when 0 => + hub_data <= x"0000" & x"0000"; + when 1 => + hub_data <= x"0000" & x"0002"; + when 2 => + hub_data <= x"0000" & x"0006"; + when 3 => + hub_data <= x"0000" & x"000e"; + when 4 => + hub_data <= x"0000" & x"001e"; + when 5 => + hub_data <= x"0000" & x"003e"; + when 6 => + hub_data <= x"0000" & x"007e"; + when 7 => + hub_data <= x"0000" & x"00fe"; + when 8 => + hub_data <= x"0000" & x"01fe"; + when 9 => + hub_data <= x"0000" & x"03fe"; + when 10 => + hub_data <= x"0000" & x"07fe"; + when 11 => + hub_data <= x"0000" & x"0ffe"; + when 12 => + hub_data <= x"0000" & x"1ffe"; + when 13 => + hub_data <= x"0000" & x"3ffe"; + when 14 => + hub_data <= x"0000" & x"7ffe"; + when 15 => + hub_data <= x"0000" & x"fffe"; + when others => + hub_data <= x"0000" & x"fffe"; + end case; + wait; + end process CONVERT; + + hub_etrax_int_test: process + begin + + hub_rw_mode <= x"0000"; + hub_address <= x"00000006"; +-- hub_data <= conv_std_logic_vector(HOW_MANY_ACTIVE_TRBS, 32);--(to_std_logic_vector)HOW_MANY_ACTIVE_TRBS*2;--x"00000100"; +-- hub_data <= x"0000" & enable_channels; + HUB_FS_PE_i(9) <= '0'; + HUB_FS_PE_i(8) <= '0'; + wait for 200 ns; + for rw_mode_counter in 0 to 15 loop + wait for 30 ns; + HUB_FS_PE_i(9) <= '0'; + HUB_FS_PE_i(8) <= hub_rw_mode(rw_mode_counter); + wait for 30 ns; + HUB_FS_PE_i(9) <= '1'; + HUB_FS_PE_i(8) <= hub_rw_mode(rw_mode_counter); + end loop; + wait for 30 ns; + for address_counter in 0 to 31 loop + wait for 30 ns; + HUB_FS_PE_i(9) <= '0'; + HUB_FS_PE_i(8) <= hub_address(address_counter); + wait for 30 ns; + HUB_FS_PE_i(9) <= '1'; + HUB_FS_PE_i(8) <= hub_address(address_counter); + end loop; + wait for 30 ns; + for data_counter in 0 to 31 loop + wait for 30 ns; + HUB_FS_PE_i(9) <= '0'; + HUB_FS_PE_i(8) <= hub_data(data_counter); + wait for 30 ns; + HUB_FS_PE_i(9) <= '1'; + HUB_FS_PE_i(8) <= hub_data(data_counter); + end loop; + wait for 30 ns; + HUB_FS_PE_i(9) <= '0'; + HUB_FS_PE_i(8) <= '0'; + wait for 100 ns; + HUB_FS_PE_i(9) <= '1'; + wait for 100 ns; + HUB_FS_PE_i(9) <= '0'; + wait; + end process hub_etrax_int_test; + +------------------------------------------------------------------------------- +-- ---------------------------------------------------------------------------- +-- ---------------------------------------------------------------------------- +-- cts +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- + ext_trigger: process + begin + wait for 3 ns; + loop + CTS_VIR_TRIG_i <= '1'; + CTS_VIR_TRIGB_i <= '0'; + wait for 10 ns; + CTS_VIR_TRIG_i <= '0'; + CTS_VIR_TRIGB_i <= '1'; + wait for 10 ns; + end loop; + end process; +-- CTS_VIR_TRIG_i <= '0'; +-- CTS_VIR_TRIGB_i <= '1'; + CTS_INST: trb_v2b_fpga_cts +-- generic map ( +-- RW_SYSTEM => RW_SYSTEM, +-- TRBV2_TYPE => TRBV2_TYPE, +-- TRBNET_ENABLE => TRBNET_ENABLE, +-- DTU_ENABLE => DTU_ENABLE, +-- CTU_ENABLE => CTU_ENABLE, +-- HADES_OLD_BUS_ENABLE => HADES_OLD_BUS_ENABLE, +-- DSP_INT_ENABLE => DSP_INT_ENABLE, +-- SDRAM_INT_ENABLE => SDRAM_INT_ENABLE, +-- SCALERS_ENABLE => SCALERS_ENABLE) + port map ( + VIRT_CLK => VIRT_CLK_i, + VIRT_CLKB => VIRT_CLKB_i, + RESET_VIRT => CTS_RESET_VIRT_i, + DBAD => CTS_DBAD_i, + DGOOD => CTS_DGOOD_i, + DINT => CTS_DINT_i, + DWAIT => CTS_DWAIT_i, + A_RESERVED => CTS_A_RESERVED_i, + A_TEMP => CTS_A_TEMP_i, + B_RESERVED => CTS_B_RESERVED_i, + B_TEMP => CTS_B_TEMP_i, + C_RESERVED => CTS_C_RESERVED_i, + C_TEMP => CTS_C_TEMP_i, + D_RESERVED => CTS_D_RESERVED_i, + D_TEMP => CTS_D_TEMP_i, + VIR_TRIG => CTS_VIR_TRIG_i, + VIR_TRIGB => CTS_VIR_TRIGB_i, + A_TDC_ERROR => CTS_A_TDC_ERROR_i, + B_TDC_ERROR => CTS_B_TDC_ERROR_i, + C_TDC_ERROR => CTS_C_TDC_ERROR_i, + D_TDC_ERROR => CTS_D_TDC_ERROR_i, + A_TDC_POWERUP => CTS_A_TDC_POWERUP_i, + B_TDC_POWERUP => CTS_B_TDC_POWERUP_i, + C_TDC_POWERUP => CTS_C_TDC_POWERUP_i, + D_TDC_POWERUP => CTS_D_TDC_POWERUP_i, + TOKEN_IN => CTS_TOKEN_IN_i, + TOKEN_OUT => CTS_TOKEN_OUT_i, + C_TOKEN_OUT_TTL => CTS_C_TOKEN_OUT_TTL_i, + GET_DATA => CTS_GET_DATA_i, + A_DATA_READY => CTS_A_DATA_READY_i, + B_DATA_READY => CTS_B_DATA_READY_i, + C_DATA_READY => CTS_C_DATA_READY_i, + D_DATA_READY => CTS_D_DATA_READY_i, + REF_TDC_CLK => CTS_REF_TDC_CLK_i, + REF_TDC_CLKB => CTS_REF_TDC_CLKB_i, + A_TDC_BU_RESET => CTS_A_TDC_BU_RESET_i, + A_TDC_BU_RESETB => CTS_A_TDC_BU_RESETB_i, + A_TDC_EV_RESET => CTS_A_TDC_EV_RESET_i, + A_TDC_EV_RESETB => CTS_A_TDC_EV_RESETB_i, + B_TDC_BU_RESET => CTS_B_TDC_BU_RESET_i, + B_TDC_BU_RESETB => CTS_B_TDC_BU_RESETB_i, + B_TDC_EV_RESET => CTS_B_TDC_EV_RESET_i, + B_TDC_EV_RESETB => CTS_B_TDC_EV_RESETB_i, + C_TDC_BU_RESET => CTS_C_TDC_BU_RESET_i, + C_TDC_BU_RESETB => CTS_C_TDC_BU_RESETB_i, + C_TDC_EV_RESET => CTS_C_TDC_EV_RESET_i, + C_TDC_EV_RESETB => CTS_C_TDC_EV_RESETB_i, + D_TDC_BU_RESET => CTS_D_TDC_BU_RESET_i, + D_TDC_BU_RESETB => CTS_D_TDC_BU_RESETB_i, + D_TDC_EV_RESET => CTS_D_TDC_EV_RESET_i, + D_TDC_EV_RESETB => CTS_D_TDC_EV_RESETB_i, + TDC_OUT => CTS_TDC_OUT_i, + TDC_RESET => CTS_TDC_RESET_i, + A_TRIGGER => CTS_A_TRIGGER_i, + A_TRIGGERB => CTS_A_TRIGGERB_i, + B_TRIGGER => CTS_B_TRIGGER_i, + B_TRIGGERB => CTS_B_TRIGGERB_i, + C_TRIGGER => CTS_C_TRIGGER_i, + C_TRIGGERB => CTS_C_TRIGGERB_i, + D_TRIGGER => CTS_D_TRIGGER_i, + D_TRIGGERB => CTS_D_TRIGGERB_i, + FS_PB => CTS_FS_PB_i, + FS_PB_17 => CTS_FS_PB_17_i, + FS_PC => CTS_FS_PC_i, + ETRAX_IRQ => CTS_ETRAX_IRQ_i, + A_SCK => CTS_A_SCK_i, + A_SCKB => CTS_A_SCKB_i, + A_SDI => CTS_A_SDI_i, + A_SDIB => CTS_A_SDIB_i, + A_SDO => CTS_A_SDO_i, + A_SDOB => CTS_A_SDOB_i, + A_CSB => CTS_A_CSB_i, + A_CS => CTS_A_CS_i, + B_SCK => CTS_B_SCK_i, + B_SCKB => CTS_B_SCKB_i, + B_SDI => CTS_B_SDI_i, + B_SDIB => CTS_B_SDIB_i, + B_SDO => CTS_B_SDO_i, + B_SDOB => CTS_B_SDOB_i, + B_CSB => CTS_B_CSB_i, + B_CS => CTS_B_CS_i, + C_SCK => CTS_C_SCK_i, + C_SCKB => CTS_C_SCKB_i, + C_SDI => CTS_C_SDI_i, + C_SDIB => CTS_C_SDIB_i, + C_SDO => CTS_C_SDO_i, + C_SDOB => CTS_C_SDOB_i, + C_CSB => CTS_C_CSB_i, + C_CS => CTS_C_CS_i, + D_SCK => CTS_D_SCK_i, + D_SCKB => CTS_D_SCKB_i, + D_SDI => CTS_D_SDI_i, + D_SDIB => CTS_D_SDIB_i, + D_SDO => CTS_D_SDO_i, + D_SDOB => CTS_D_SDOB_i, + D_CSB => CTS_D_CSB_i, + D_CS => CTS_D_CS_i, + A_TEST1 => CTS_A_TEST1_i, + A_TEST1B => CTS_A_TEST1B_i, + A_TEST2 => CTS_A_TEST2_i, + A_TEST2B => CTS_A_TEST2B_i, + B_TEST1 => CTS_B_TEST1_i, + B_TEST1B => CTS_B_TEST1B_i, + B_TEST2 => CTS_B_TEST2_i, + B_TEST2B => CTS_B_TEST2B_i, + C_TEST1 => CTS_C_TEST1_i, + C_TEST1B => CTS_C_TEST1B_i, + C_TEST2 => CTS_C_TEST2_i, + C_TEST2B => CTS_C_TEST2B_i, + D_TEST1 => CTS_D_TEST1_i, + D_TEST1B => CTS_D_TEST1B_i, + D_TEST2 => CTS_D_TEST2_i, + D_TEST2B => CTS_D_TEST2B_i, + DSPADDR => CTS_DSPADDR_i, + DSPDAT => CTS_DSPDAT_i, + DSP_ACK => CTS_DSP_ACK_i, + DSP_BM => CTS_DSP_BM_i, + DSP_BMS => CTS_DSP_BMS_i, + DSP_BOFF => CTS_DSP_BOFF_i, + DSP_BRST => CTS_DSP_BRST_i, + DSP_HBG => CTS_DSP_HBG_i, + DSP_HBR => CTS_DSP_HBR_i, + DSP_IRQ => CTS_DSP_IRQ_i, + DSP_RD => CTS_DSP_RD_i, + DSP_RESET => CTS_DSP_RESET_i, + DSP_RESET_OUT => CTS_DSP_RESET_OUT_i, + DSP_WRH => CTS_DSP_WRH_i, + DSP_WRL => CTS_DSP_WRL_i, + VSD_A => CTS_VSD_A_i, + VSD_BA => CTS_VSD_BA_i, + VSD_CAS => CTS_VSD_CAS_i, + VSD_CKE => CTS_VSD_CKE_i, + VSD_CLOCK => CTS_VSD_CLOCK_i, + VSD_CSEH => CTS_VSD_CSEH_i, + VSD_CSEL => CTS_VSD_CSEL_i, + VSD_D => CTS_VSD_D_i, + VSD_DQML => CTS_VSD_DQML_i, + VSD_RAS => CTS_VSD_RAS_i, + VSD_WE => CTS_VSD_WE_i, + TLK_CLK => TLK_CLK_i, + TLK_ENABLE => CTS_TLK_ENABLE_i, + TLK_LCKREFN => CTS_TLK_LCKREFN_i, + TLK_LOOPEN => CTS_TLK_LOOPEN_i, + TLK_PRBSEN => CTS_TLK_PRBSEN_i, + TLK_RXD => OPT_DATA_OUT_i(15 downto 0), + TLK_RX_CLK => TLK_RX_CLK_i, + TLK_RX_DV => OPT_DATA_VALID_OUT_i(0), + TLK_RX_ER => CTS_TLK_RX_ER_i, + TLK_TXD => OPT_DATA_IN_i(15 downto 0), + TLK_TX_EN => OPT_DATA_VALID_IN_i(0), + TLK_TX_ER => CTS_TLK_TX_ER_i, + SFP_LOS => CTS_SFP_LOS_i, + SFP_TX_DIS => CTS_SFP_TX_DIS_i, + SFP_TX_FAULT => CTS_SFP_TX_FAULT_i, + ADDON_TO_TRB_CLKINN => CTS_ADDON_TO_TRB_CLKINN_i, + ADDON_TO_TRB_CLKINP => CTS_ADDON_TO_TRB_CLKINP_i, + ADO_LV => CTS_ADO_LV_i, + ADO_TTL => CTS_ADO_TTL_i, + VIRT_TCK => CTS_VIRT_TCK_i, + VIRT_TDI => CTS_VIRT_TDI_i, + VIRT_TDO => CTS_VIRT_TDO_i, + VIRT_TMS => CTS_VIRT_TMS_i, + VIRT_TRST => CTS_VIRT_TRST_i); + + + + ----------------------------------------------------------------------------- + -- clocks + ----------------------------------------------------------------------------- + clock_tlk_clk : process + begin + wait for 7 ns; + loop + TLK_CLK_i <= '0'; + wait for 5 ns; + TLK_CLK_i <= '1'; + wait for 5 ns; + end loop; + end process; + clock_tlk_rx_clk : process + begin + wait for 3 ns; + loop + TLK_RX_CLK_i <= '0'; + wait for 5 ns; + TLK_RX_CLK_i <= '1'; + wait for 5 ns; + end loop; + end process; + clock_gclk : process + begin + VIRT_CLK_i <= '0'; + VIRT_CLKB_i <= '1'; + wait for 5 ns; + VIRT_CLK_i <= '1'; + VIRT_CLKB_i <= '0'; + wait for 5 ns; + end process; + clock_hub_clk : process + begin + LVDS_CLK_200P_i<= '0'; + wait for 5 ns; + LVDS_CLK_200P_i <= '1'; + wait for 5 ns; + end process; + clock_tdcclk : process + begin + wait for 12 ns; + loop + REF_TDC_CLK_i <= '0'; + REF_TDC_CLKB_i <= '1'; + wait for 12.5 ns; + REF_TDC_CLK_i <= '1'; + REF_TDC_CLKB_i <= '0'; + wait for 12.5 ns; + end loop; + end process; + + cts_clock_tdcclk : process + begin + wait for 12 ns; + loop + CTS_REF_TDC_CLK_i <= '0'; + CTS_REF_TDC_CLKB_i <= '1'; + wait for 12.5 ns; + CTS_REF_TDC_CLK_i <= '1'; + CTS_REF_TDC_CLKB_i <= '0'; + wait for 12.5 ns; + end loop; + end process; + ---------------------------------------------------------------------------- + -- ------------------------------------------------------------------------- + -- ------------------------------------------------------------------------- + -- CTS + ---------------------------------------------------------------------------- + ---------------------------------------------------------------------------- + ---------------------------------------------------------------------------- + + ----------------------------------------------------------------------------- + -- vulom to cts + ----------------------------------------------------------------------------- + + + CTS_ADO_TTL_i(4) <= 'Z'; + + VULOM_SENDS_TRIGGER: process + variable i,y : integer; + begin + vulom_lvl1_tag <= (others => '0'); + CTS_ADO_TTL_i(46) <= '0'; + CTS_ADO_TTL_i(42 downto 41) <= "00"; + wait for 2000 ns; + + loop + y := 0; + CTS_ADO_TTL_i(42 downto 41) <= "01"; + CTS_ADO_TTL_i(46) <= '1'; + wait for 10 ns; + CTS_ADO_TTL_i(46) <= '0'; + wait for 10 ns; + CTS_ADO_TTL_i(42 downto 41) <= "10"; + CTS_ADO_TTL_i(46) <= '1'; + wait for 10 ns; + CTS_ADO_TTL_i(46) <= '0'; + wait for 10 ns; + CTS_ADO_TTL_i(42 downto 41) <= "01"; + CTS_ADO_TTL_i(46) <= '1'; + wait for 10 ns; + CTS_ADO_TTL_i(46) <= '0'; + wait for 10 ns; + CTS_ADO_TTL_i(42 downto 41) <= "10"; + CTS_ADO_TTL_i(46) <= '1'; + wait for 10 ns; + CTS_ADO_TTL_i(46) <= '0'; + wait for 10 ns; + CTS_ADO_TTL_i(42 downto 41) <= "00"; + CTS_ADO_TTL_i(46) <= '0'; + wait for 10 ns; + CTS_ADO_TTL_i(46) <= '0'; + CTS_ADO_TTL_i(46) <= '1'; + wait for 10 ns; + CTS_ADO_TTL_i(46) <= '0'; + + + wait for 10 ns; + for i in 0 to 161 loop + CTS_ADO_TTL_i(42 downto 41) <= vulom_lvl1_tag (((y mod 15)+1) downto (y mod 15)); + CTS_ADO_TTL_i(46) <= '1'; + wait for 10 ns; + CTS_ADO_TTL_i(46) <= '0'; + wait for 10 ns; + y := y + 2; + end loop; -- 40ns; + wait on VIRT_CLK_i until CTS_ADO_TTL_i(34) = '1'; + wait on VIRT_CLK_i until CTS_ADO_TTL_i(34) = '0'; + vulom_lvl1_tag <= vulom_lvl1_tag + 1; + end loop; + end process VULOM_SENDS_TRIGGER; + + --etrax cts readout --dma + ETRAX_BUSY_PROC: process + variable etrax_busy_time : integer :=0; + begin -- process ETRAX_BUSY + CTS_FS_PB_17_i <= '0'; + wait on VIRT_CLK_i until CTS_FS_PB_i(16) ='1'; + wait for 20 ns; + CTS_FS_PB_17_i <= '1'; + wait for 80 ns; + wait on VIRT_CLK_i until cts_etrax_busy ='0'; + etrax_busy_time := etrax_busy_time*3/2 +1; + end process ETRAX_BUSY_PROC; + + WAIT_FOR_TRANSFER_END: process + variable wait_int : integer range 0 to 65535; + begin + cts_etrax_busy <= '0'; + wait on VIRT_CLK_i until CTS_FS_PB_i(16) ='1'; + cts_etrax_busy <= '1'; + wait for 37*10 ns; + end process WAIT_FOR_TRANSFER_END; +-- write fpga register + etrax_int_test: process + begin + cts_rw_mode <= x"0000"; + cts_address <= x"00000006"; + cts_data <= x"00000082"; + CTS_FS_PC_i(17) <= '0'; + CTS_FS_PC_i(16) <= '0'; + wait for 1000 ns; + for rw_mode_counter in 0 to 15 loop + wait for 100 ns; + CTS_FS_PC_i(17) <= '0'; + CTS_FS_PC_i(16) <= cts_rw_mode(rw_mode_counter); + wait for 100 ns; + CTS_FS_PC_i(17) <= '1'; + CTS_FS_PC_i(16) <= cts_rw_mode(rw_mode_counter); + end loop; + wait for 300 ns; + for address_counter in 0 to 31 loop + wait for 100 ns; + CTS_FS_PC_i(17) <= '0'; + CTS_FS_PC_i(16) <= cts_address(address_counter); + wait for 100 ns; + CTS_FS_PC_i(17) <= '1'; + CTS_FS_PC_i(16) <= cts_address(address_counter); + end loop; + wait for 300 ns; + for data_counter in 0 to 31 loop + wait for 100 ns; + CTS_FS_PC_i(17) <= '0'; + CTS_FS_PC_i(16) <= cts_data(data_counter); + wait for 100 ns; + CTS_FS_PC_i(17) <= '1'; + CTS_FS_PC_i(16) <= cts_data(data_counter); + end loop; + wait for 300 ns; + CTS_FS_PC_i(17) <= '0'; + CTS_FS_PC_i(16) <= '0'; + wait for 400 ns; + CTS_FS_PC_i(17) <= '1'; + wait for 100 ns; + CTS_FS_PC_i(17) <= '0'; + end process etrax_int_test; + ------------------------------------------------------------------------------- + -- cts to hub + ------------------------------------------------------------------------------- + + +------------------------------------------------------------------------------- +-- ---------------------------------------------------------------------------- +-- ---------------------------------------------------------------------------- +-- trb +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- + VIR_TRIG_i <= CTS_ADO_TTL_i(7); + VIR_TRIGB_i <= not CTS_ADO_TTL_i(7); + + GENERATE_TRBS: for next_trb in 0 to HOW_MANY_ACTIVE_TRBS-1 generate + + + TRB_INST: trb_v2b_fpga +-- generic map( +-- RW_SYSTEM <= 1; --1 -trb, 2 -addon with portE 10 9 as rw +-- TRBV2_TYPE <= 0; +-- -- 0 - trbv2 + RPC or TOF or FWALL or Start or Veto, +-- -- 1 - MDC, +-- -- 2 - SHOWER, +-- -- 3 - RICH +-- -- 4 - CTS +-- TRBNET_ENABLE <= 0; -- 0 - disable, +-- -- 1 - enable +-- DTU_ENABLE <= 0; -- 0 - disable, 1 - old +-- -- HADES bus, 2 - opt +-- -- without trbnet +-- CTU_ENABLE <= 0; +-- HADES_OLD_BUS_ENABLE <= 0; +-- DSP_INT_ENABLE <= 0; -- dsp interface enable +-- SDRAM_INT_ENABLE <= 0; -- sdram interface enable +-- SCALERS_ENABLE <= 0 +-- ); + port map ( + VIRT_CLK => VIRT_CLK_i, + VIRT_CLKB => VIRT_CLKB_i, + RESET_VIRT => RESET_VIRT_i, + DBAD => DBAD_i, + DGOOD => DGOOD_i, + DINT => DINT_i, + DWAIT => DWAIT_i, + A_RESERVED => A_RESERVED_i, + A_TEMP => A_TEMP_i, + B_RESERVED => B_RESERVED_i, + B_TEMP => B_TEMP_i, + C_RESERVED => C_RESERVED_i, + C_TEMP => C_TEMP_i, + D_RESERVED => D_RESERVED_i, + D_TEMP => D_TEMP_i, + VIR_TRIG => VIR_TRIG_i, + VIR_TRIGB => VIR_TRIGB_i, + A_TDC_ERROR => A_TDC_ERROR_i, + B_TDC_ERROR => B_TDC_ERROR_i, + C_TDC_ERROR => C_TDC_ERROR_i, + D_TDC_ERROR => D_TDC_ERROR_i, + A_TDC_POWERUP => A_TDC_POWERUP_i, + B_TDC_POWERUP => B_TDC_POWERUP_i, + C_TDC_POWERUP => C_TDC_POWERUP_i, + D_TDC_POWERUP => D_TDC_POWERUP_i, + TOKEN_IN => TOKEN_IN_i(next_trb), + TOKEN_OUT => TOKEN_OUT_i(next_trb), + C_TOKEN_OUT_TTL => C_TOKEN_OUT_TTL_i, + GET_DATA => GET_DATA_i, + A_DATA_READY => A_DATA_READY_i(next_trb), + B_DATA_READY => B_DATA_READY_i(next_trb), + C_DATA_READY => C_DATA_READY_i(next_trb), + D_DATA_READY => D_DATA_READY_i(next_trb), + REF_TDC_CLK => REF_TDC_CLK_i, + REF_TDC_CLKB => REF_TDC_CLKB_i, + A_TDC_BU_RESET => A_TDC_BU_RESET_i, + A_TDC_BU_RESETB => A_TDC_BU_RESETB_i, + A_TDC_EV_RESET => A_TDC_EV_RESET_i, + A_TDC_EV_RESETB => A_TDC_EV_RESETB_i, + B_TDC_BU_RESET => B_TDC_BU_RESET_i, + B_TDC_BU_RESETB => B_TDC_BU_RESETB_i, + B_TDC_EV_RESET => B_TDC_EV_RESET_i, + B_TDC_EV_RESETB => B_TDC_EV_RESETB_i, + C_TDC_BU_RESET => C_TDC_BU_RESET_i, + C_TDC_BU_RESETB => C_TDC_BU_RESETB_i, + C_TDC_EV_RESET => C_TDC_EV_RESET_i, + C_TDC_EV_RESETB => C_TDC_EV_RESETB_i, + D_TDC_BU_RESET => D_TDC_BU_RESET_i, + D_TDC_BU_RESETB => D_TDC_BU_RESETB_i, + D_TDC_EV_RESET => D_TDC_EV_RESET_i, + D_TDC_EV_RESETB => D_TDC_EV_RESETB_i, + TDC_OUT => TDC_OUT_i((next_trb+1)*32-1 downto next_trb*32), + TDC_RESET => TDC_RESET_i, + A_TRIGGER => A_TRIGGER_i, + A_TRIGGERB => A_TRIGGERB_i, + B_TRIGGER => B_TRIGGER_i, + B_TRIGGERB => B_TRIGGERB_i, + C_TRIGGER => C_TRIGGER_i, + C_TRIGGERB => C_TRIGGERB_i, + D_TRIGGER => D_TRIGGER_i, + D_TRIGGERB => D_TRIGGERB_i, + FS_PB => FS_PB_i((next_trb+1)*17-1 downto next_trb*17), + FS_PB_17 => FS_PB_17_i(next_trb), + FS_PC => FS_PC_i((next_trb+1)*18-1 downto next_trb*18), + ETRAX_IRQ => ETRAX_IRQ_i, + A_SCK => A_SCK_i, + A_SCKB => A_SCKB_i, + A_SDI => A_SDI_i, + A_SDIB => A_SDIB_i, + A_SDO => A_SDO_i, + A_SDOB => A_SDOB_i, + A_CSB => A_CSB_i, + A_CS => A_CS_i, + B_SCK => B_SCK_i, + B_SCKB => B_SCKB_i, + B_SDI => B_SDI_i, + B_SDIB => B_SDIB_i, + B_SDO => B_SDO_i, + B_SDOB => B_SDOB_i, + B_CSB => B_CSB_i, + B_CS => B_CS_i, + C_SCK => C_SCK_i, + C_SCKB => C_SCKB_i, + C_SDI => C_SDI_i, + C_SDIB => C_SDIB_i, + C_SDO => C_SDO_i, + C_SDOB => C_SDOB_i, + C_CSB => C_CSB_i, + C_CS => C_CS_i, + D_SCK => D_SCK_i, + D_SCKB => D_SCKB_i, + D_SDI => D_SDI_i, + D_SDIB => D_SDIB_i, + D_SDO => D_SDO_i, + D_SDOB => D_SDOB_i, + D_CSB => D_CSB_i, + D_CS => D_CS_i, + A_TEST1 => A_TEST1_i, + A_TEST1B => A_TEST1B_i, + A_TEST2 => A_TEST2_i, + A_TEST2B => A_TEST2B_i, + B_TEST1 => B_TEST1_i, + B_TEST1B => B_TEST1B_i, + B_TEST2 => B_TEST2_i, + B_TEST2B => B_TEST2B_i, + C_TEST1 => C_TEST1_i, + C_TEST1B => C_TEST1B_i, + C_TEST2 => C_TEST2_i, + C_TEST2B => C_TEST2B_i, + D_TEST1 => D_TEST1_i, + D_TEST1B => D_TEST1B_i, + D_TEST2 => D_TEST2_i, + D_TEST2B => D_TEST2B_i, + DSPADDR => DSPADDR_i, + DSPDAT => DSPDAT_i, + DSP_ACK => DSP_ACK_i, + DSP_BM => DSP_BM_i, + DSP_BMS => DSP_BMS_i, + DSP_BOFF => DSP_BOFF_i, + DSP_BRST => DSP_BRST_i, + DSP_HBG => DSP_HBG_i, + DSP_HBR => DSP_HBR_i, + DSP_IRQ => DSP_IRQ_i, + DSP_RD => DSP_RD_i, + DSP_RESET => DSP_RESET_i, + DSP_RESET_OUT => DSP_RESET_OUT_i, + DSP_WRH => DSP_WRH_i, + DSP_WRL => DSP_WRL_i, + VSD_A => VSD_A_i, + VSD_BA => VSD_BA_i, + VSD_CAS => VSD_CAS_i, + VSD_CKE => VSD_CKE_i, + VSD_CLOCK => VSD_CLOCK_i, + VSD_CSEH => VSD_CSEH_i, + VSD_CSEL => VSD_CSEL_i, + VSD_D => VSD_D_i, + VSD_DQML => VSD_DQML_i, + VSD_RAS => VSD_RAS_i, + VSD_WE => VSD_WE_i, + TLK_CLK => TLK_CLK_i, + TLK_ENABLE => TLK_ENABLE_i, + TLK_LCKREFN => TLK_LCKREFN_i, + TLK_LOOPEN => TLK_LOOPEN_i, + TLK_PRBSEN => TLK_PRBSEN_i, + TLK_RXD => OPT_DATA_OUT_i((next_trb+2)*16-1 downto (next_trb+1)*16), + TLK_RX_CLK => TLK_RX_CLK_i, + TLK_RX_DV => OPT_DATA_VALID_OUT_i(next_trb+1), + TLK_RX_ER => TLK_RX_ER_i, + TLK_TXD => OPT_DATA_IN_i((next_trb+2)*16-1 downto (next_trb+1)*16), + TLK_TX_EN => OPT_DATA_VALID_IN_i(next_trb+1), + TLK_TX_ER => TLK_TX_ER_i, + SFP_LOS => SFP_LOS_i, + SFP_TX_DIS => SFP_TX_DIS_i, + SFP_TX_FAULT => SFP_TX_FAULT_i, + ADDON_TO_TRB_CLKINN => ADDON_TO_TRB_CLKINN_i, + ADDON_TO_TRB_CLKINP => ADDON_TO_TRB_CLKINP_i, + ADO_LV => ADO_LV_i, + ADO_TTL => ADO_TTL_i, + VIRT_TCK => VIRT_TCK_i, + VIRT_TDI => VIRT_TDI_i, + VIRT_TDO => VIRT_TDO_i, + VIRT_TMS => VIRT_TMS_i, + VIRT_TRST => VIRT_TRST_i); + + + TDC_OUT_i((next_trb+1)*32-1 downto next_trb*32) <= tdc_data_i;--x"00000000";--tdc_data_i; + + TDC_DATA_CHANGE: process(REF_TDC_CLKB_i, RESET_VIRT_i) + begin + if rising_edge(REF_TDC_CLKB_i) then + if RESET_VIRT_i = '1' then + tdc_data_i <= x"00000000"; + else + tdc_data_i <= tdc_data_i + 1; + end if; + end if; + end process TDC_DATA_CHANGE; + + trigger_lvl1 : process + variable valid_time : integer :=0; + begin + A_DATA_READY_i(next_trb) <= '0'; + B_DATA_READY_i(next_trb) <= '0'; + C_DATA_READY_i(next_trb) <= '0'; + D_DATA_READY_i(next_trb) <= '0'; + TOKEN_IN_i(next_trb) <= '0'; + wait on REF_TDC_CLK_i until TOKEN_OUT_i(next_trb) = '1'; + wait on REF_TDC_CLK_i until TOKEN_OUT_i(next_trb) = '0'; + wait for 10 ns; + A_DATA_READY_i(next_trb) <= '1'; + wait for ((valid_time mod 2)*50*3+2*25)*ns; + A_DATA_READY_i(next_trb) <= '0'; + B_DATA_READY_i(next_trb) <= '1'; + wait for ((valid_time mod 3 )*50*2+2*25)*ns; + B_DATA_READY_i(next_trb) <= '0'; + C_DATA_READY_i(next_trb) <= '1'; + wait for ((valid_time mod 5 )*50+2*25+next_trb*25)*ns; + C_DATA_READY_i(next_trb) <= '0'; + D_DATA_READY_i(next_trb) <= '1'; + wait for ((valid_time mod 7 )*50+2*25+next_trb*25)*ns; + D_DATA_READY_i(next_trb) <= '0'; + wait for 0 ns; + TOKEN_IN_i(next_trb) <= '1'; + wait for 25 ns; + TOKEN_IN_i(next_trb) <= '0'; + + valid_time := valid_time*3/2 +1; + end process; + ETRAX_BUSY_PROC_TRB: process + variable etrax_busy_time : integer :=0; + begin -- process ETRAX_BUSY + FS_PB_17_i(next_trb) <= '0'; + wait on VIRT_CLKB_i until FS_PB_i(16+(next_trb*17)) ='1'; + wait for 20 ns; + FS_PB_17_i(next_trb) <= '1'; + wait for 80 ns; + wait on VIRT_CLK_i until etrax_busy(next_trb) ='0'; + + + etrax_busy_time := etrax_busy_time*3/2 +1; + end process ETRAX_BUSY_PROC_TRB; + + WAIT_FOR_TRANSFER_END_TRB: process + variable wait_int : integer range 0 to 65535; + begin + etrax_busy(next_trb) <= '0'; + wait on VIRT_CLK_i until FS_PB_i(16+(next_trb*17)) ='1'; + etrax_busy(next_trb) <= '1'; + wait for 37*10 ns; + end process WAIT_FOR_TRANSFER_END_TRB; + end generate GENERATE_TRBS; + + + +------------------------------------------------------------------------------- +-- DTU only lvl2 +------------------------------------------------------------------------------ +-- clock_dtu : process +-- begin +-- wait for 34 ns; +-- loop +-- dtu_clk <= '0'; +-- wait for 50 ns; +-- dtu_clk <= '1'; +-- wait for 50 ns; +-- end loop; +-- end process; +-- ADO_TTL_i(34) <= 'Z'; +-- ADO_TTL_i(7) <= 'Z'; +-- LVL2_COUNT : process +-- begin +-- wait for 100 ns; +-- dtu_lvl2_tag <= x"00"; +-- wait on dtu_clk until ADO_TTL_i(8) = '0'; +-- loop +-- wait on dtu_clk until lvl2_trig = '1'; +-- wait for 500 ns; +-- dtu_lvl2_tag <= dtu_lvl2_tag +1; +-- wait on dtu_clk until ADO_TTL_i(8) = '0'; +-- end loop; +-- end process LVL2_COUNT; +-- -- ADO_TTL_i(9) <= lvl2_trig; +-- DTU_EMULATION_LVL2 : process +-- begin +-- ADO_TTL_i(9) <= '0'; +-- ADO_TTL_i(13 downto 10) <= x"1"; +-- lvl2_trig <= '0'; +-- wait for 4000 ns; +-- loop +-- for number_of_normal_triggers in 0 to 9 loop +-- ADO_TTL_i(9) <= '0'; +-- wait on VIRT_CLK_i until ADO_TTL_i(7) = '1'; --after lvl1 +-- -- -- wait on dtu_clk until dtu_lvl1_tag > dtu_lvl2_tag + 1; +-- -- wait on VIRT_CLK_i until ADO_TTL_i(7) = '0'; --after lvl1 +-- wait for 3000 ns; +-- wait on VIRT_CLK_i until ADO_TTL_i(15) = '0'; +-- -- wait for 6000 ns; +-- ADO_TTL_i(13 downto 10) <= x"1"; +-- ADO_TTL_i(8) <= '1'; +-- wait for 100 ns; +-- ADO_TTL_i(8) <= '0'; +-- ADO_TTL_i(13 downto 10) <= dtu_lvl2_tag(3 downto 0); +-- lvl2_trig <= '1'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '1'; +-- lvl2_trig <= '0'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '0'; +-- ADO_TTL_i(13 downto 10) <= dtu_lvl2_tag(7 downto 4); +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '1'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '0'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '1'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '0'; +-- end loop; -- number_of_normal_triggers +-- ADO_TTL_i(9) <= '0'; +-- wait on VIRT_CLK_i until ADO_TTL_i(7) = '1'; --after lvl1 +-- -- -- wait on dtu_clk until dtu_lvl1_tag > dtu_lvl2_tag + 1; +-- -- wait on VIRT_CLK_i until ADO_TTL_i(7) = '0'; --after lvl1 +-- wait for 3000 ns; +-- wait on VIRT_CLK_i until ADO_TTL_i(15) = '0'; +-- -- wait for 6000 ns; +-- ADO_TTL_i(13 downto 10) <= x"9"; +-- ADO_TTL_i(8) <= '1'; +-- wait for 100 ns; +-- ADO_TTL_i(8) <= '0'; +-- lvl2_trig <= '1'; +-- ADO_TTL_i(13 downto 10) <= dtu_lvl2_tag(3 downto 0); +-- wait for 100 ns; +-- lvl2_trig <= '0'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '1'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '0'; +-- ADO_TTL_i(13 downto 10) <= dtu_lvl2_tag(7 downto 4); +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '1'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '0'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '1'; +-- wait for 100 ns; +-- ADO_TTL_i(9) <= '0'; +-- end loop; +-- end process DTU_EMULATION_LVL2; + +-- ----------------------------------------------------------------------------- +-- -- etrax trb_0 +-- ----------------------------------------------------------------------------- +-- ETRAX_BUSY_0: process +-- variable etrax_busy_time : integer :=0; +-- begin -- process ETRAX_BUSY +-- FS_PB_0(17) <= '0'; +-- wait on VIRT_CLK_i until FS_PB_0(16) ='1'; +-- wait for 30 ns; +-- FS_PB_0(17) <= '1'; +-- wait for 80 ns; +-- wait for ((etrax_busy_time mod 7 )*5+20)*ns; +-- etrax_busy_time := etrax_busy_time*3/2 +1; +-- end process ETRAX_BUSY_0; +-- ----------------------------------------------------------------------------- +-- -- etrax trb_1 +-- ----------------------------------------------------------------------------- +-- ETRAX_BUSY_1: process +-- variable etrax_busy_time : integer :=0; +-- begin -- process ETRAX_BUSY +-- FS_PB_1(17) <= '0'; +-- wait on VIRT_CLK_i until FS_PB_1(16) ='1'; +-- wait for 30 ns; +-- FS_PB_1(17) <= '1'; +-- wait for 80 ns; +-- wait for ((etrax_busy_time mod 9 )*5+20)*ns; +-- etrax_busy_time := etrax_busy_time*3/2 +1; +-- end process ETRAX_BUSY_1; +-- -- etrax_intf_trb0 : PROCESS +-- -- BEGIN +-- -- loop +-- -- wait on VIRT_CLK_i until FS_PB_0(16) = '1'; +-- -- wait for 50 ns; +-- -- FS_PB_0(17) <= '1'; +-- -- wait for 50 ns; +-- -- FS_PB_0(17) <= '0'; +-- -- wait for 50 ns; +-- -- end loop; +-- -- wait; -- will wait forever +-- -- end process; +-- ----------------------------------------------------------------------------- +-- -- etrax cts +-- ----------------------------------------------------------------------------- +-- etrax_intf_cts : PROCESS +-- BEGIN +-- loop +-- wait on VIRT_CLK_i until FS_PB_CTS_i(16) = '1'; +-- wait for 50 ns; +-- FS_PB_CTS_i(17) <= '1'; +-- wait for 50 ns; +-- FS_PB_CTS_i(17) <= '0'; +-- wait for 50 ns; +-- end loop; +-- wait; -- will wait forever +-- end process; +-- ----------------------------------------------------------------------- +-- -- TDC_trb_0 +-- ----------------------------------------------------------------------- +-- TDC_OUT_0 <= tdc_data_i;--x"00000000";--tdc_data_i; + +-- TDC_DATA_CHANGE_0: process(REF_TDC_CLK_i, RESET_VIRT_0) +-- begin +-- if rising_edge(REF_TDC_CLK_i) then +-- if RESET_VIRT_0 = '1' then +-- tdc_data_i <= x"00000000"; +-- else +-- tdc_data_i <= tdc_data_i + 1; +-- end if; +-- end if; +-- end process TDC_DATA_CHANGE_0; + + +-- trigger_lvl1_0 : process +-- variable valid_time : integer :=0; +-- begin +-- -- ADO_TTL(7) <= '0'; +-- A_DATA_READY_0 <= '0'; +-- B_DATA_READY_0 <= '0'; +-- C_DATA_READY_0 <= '0'; +-- D_DATA_READY_0 <= '0'; +-- TOKEN_IN_0 <= '0'; +-- -- A_TEMP <= '0'; +-- -- wait for 50 ns; +-- -- A_TEMP <= '1'; +-- -- wait for 10 ns; +-- -- A_TEMP <= '0'; +-- -- wait for 10 ns; +-- wait on REF_TDC_CLK_i until TOKEN_OUT_0 = '1'; +-- wait on REF_TDC_CLK_i until TOKEN_OUT_0 = '0'; +-- wait for 10 ns; +-- -- ADO_TTL(7) <= '0'; +-- A_DATA_READY_0 <= '1'; +-- -- wait for 50 ns; +-- wait for ((valid_time mod 3)*50*3+2*25)*ns; +-- A_DATA_READY_0 <= '0'; +-- B_DATA_READY_0 <= '1'; +-- -- wait for 50 ns; +-- wait for ((valid_time mod 5 )*50*2+2*25)*ns; +-- B_DATA_READY_0 <= '0'; +-- C_DATA_READY_0 <= '1'; +-- -- wait for 50 ns; +-- wait for ((valid_time mod 7 )*50+2*25)*ns; +-- -- ADO_TTL(7) <= '0'; +-- C_DATA_READY_0 <= '0'; +-- D_DATA_READY_0 <= '1'; +-- --wait for 50 ns; +-- wait for ((valid_time mod 9 )*50+2*25)*ns; +-- D_DATA_READY_0 <= '0'; +-- wait for 0 ns; +-- -- ADO_TTL(6) <= '1'; +-- TOKEN_IN_0 <= '1'; +-- wait for 25 ns; +-- -- ADO_TTL(6) <= '0'; +-- TOKEN_IN_0 <= '0'; +-- -- wait on REF_TDC_CLK until DBAD = '0'; +-- valid_time := valid_time*3/2 +1; +-- end process; +-- ----------------------------------------------------------------------- +-- -- TDC_trb_1 +-- ----------------------------------------------------------------------- +-- TDC_OUT_1 <= tdc_data_i;--x"00000000";--tdc_data_i; + +-- -- TDC_DATA_CHANGE: process(REF_TDC_CLK_i, RESET_VIRT_1) +-- -- begin +-- -- if rising_edge(REF_TDC_CLK_i) then +-- -- if RESET_VIRT_1 = '1' then +-- -- tdc_data_i <= x"00000000"; +-- -- else +-- -- tdc_data_i <= tdc_data_i + 1; +-- -- end if; +-- -- end if; +-- -- end process TDC_DATA_CHANGE; + + +-- trigger_lvl1_1 : process +-- variable valid_time : integer :=0; +-- begin +-- -- ADO_TTL(7) <= '0'; +-- A_DATA_READY_1 <= '0'; +-- B_DATA_READY_1 <= '0'; +-- C_DATA_READY_1 <= '0'; +-- D_DATA_READY_1 <= '0'; +-- TOKEN_IN_1 <= '0'; +-- -- A_TEMP <= '0'; +-- -- wait for 50 ns; +-- -- A_TEMP <= '1'; +-- -- wait for 10 ns; +-- -- A_TEMP <= '0'; +-- -- wait for 10 ns; +-- wait on REF_TDC_CLK_i until TOKEN_OUT_1 = '1'; +-- wait on REF_TDC_CLK_i until TOKEN_OUT_1 = '0'; +-- wait for 10 ns; +-- -- ADO_TTL(7) <= '0'; +-- A_DATA_READY_1 <= '1'; +-- -- wait for 50 ns; +-- wait for ((valid_time mod 11)*50*3+2*25)*ns; +-- A_DATA_READY_1 <= '0'; +-- B_DATA_READY_1 <= '1'; +-- -- wait for 50 ns; +-- wait for ((valid_time mod 3 )*50*2+2*25)*ns; +-- B_DATA_READY_1 <= '0'; +-- C_DATA_READY_1 <= '1'; +-- -- wait for 50 ns; +-- wait for ((valid_time mod 5 )*50+2*25)*ns; +-- -- ADO_TTL(7) <= '0'; +-- C_DATA_READY_1 <= '0'; +-- D_DATA_READY_1 <= '1'; +-- --wait for 50 ns; +-- wait for ((valid_time mod 7 )*50+2*25)*ns; +-- D_DATA_READY_1 <= '0'; +-- wait for 0 ns; +-- -- ADO_TTL(6) <= '1'; +-- TOKEN_IN_1 <= '1'; +-- wait for 25 ns; +-- -- ADO_TTL(6) <= '0'; +-- TOKEN_IN_1 <= '0'; +-- -- wait on REF_TDC_CLK until DBAD = '0'; +-- valid_time := valid_time*3/2 +1; +-- end process; + + + +end system; diff --git a/trbv2_cross_clk.ngc b/trbv2_cross_clk.ngc new file mode 100644 index 0000000..25a72ec --- /dev/null +++ b/trbv2_cross_clk.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.4e +$3gb41<,[o}e~g`n;"2*447&;:%>-*6;123456789>;7=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<>5>.130?64=AGZ^X7jfn`>05?699:18>7GAPTV9`lhe4:;1<3?:;209KPRW]]0ocxzn<2394;723:81CXZ_UU8gkpre4:;1<3?=;28JJUSS2hno~l2=:1<26>5=AGZ^X7okds`?6?69n2>}`u:?fg320=+6:11JHI\N<1<:?DBCZH6:<374AEFQE976601JHI\N<00==>GCL[K7=>06;@FGVD:6<720MIJ]A=3=<>GCL[K7>364AEFQE95902KOH_O34?:8EABUI5?546OKDSC?2;>GCL[H7<374AEFQF977601JHI\M<03==>GCL[H7=?06;@FGVG:6;730MIJ]B=37:==FLMXI0<07;@FGVG:5611JHI\M<2<;?DBCZK6?255NDEPA808?3HNO^O29>99B@ATE4>437LJKRC>;:==FLMXI040<;CW6<>DR[VCEJBo4C@Q@EACNFHk0OL]LAEGJJGd69GMD:697=0HDO313<4?AOF4895;6JFA=37:2=CAH6:9394DHC?53803MCJ0<917:FJE97?6>1OEL2>9?48@LG;97=0HDO321<4?AOF4;;5;6JFA=01:2=CAH69?394DHC?61803MCJ0?;17:FJE9416>1OEL2=7?58@LG;:14<7IGN<3;=2>BNI585;6JFA=13:2=CAH68=384DHC?7;01OEO2>3?58@LD;9=4<7IGM<07=3>BNJ5;=2:5KIC>23;12NBN1?17:FJF9476>1OEO2=1?58@LD;:;4<7IGM<31=3>BNJ58?2:5KIC>11;1;08;EKA8719?2NBN1<7>69GMG:517<0HDL32?58@LD;;94<7IGM<23=2>BNJ595:6JFB=6=2>BNJ5?5:6JFB=4=2>BNJ5=5:6JFB=:=2>BNJ535;6JFP@>3:2=CAYK7=394DHRB87803MC[M1=17:FJTG:76>1OE]L31?58@LVE4;4<7IG_B=1=2>BHI5:5;6J@A=33:2=CGH6:=394DNC?57803MEJ0<=17:FLE9736>1OCL2>5?58@JG;9?4<7IAN<05=3>BHI5;32:5KO@>2=;01OCL2=3?58@JG;:=4<7IAN<37=3>BHI58=2:5KO@>13;1508;EMB87?9>2NDM1<17:FLE9576>1OCL2<1?48@JG;;7<0HBO34?48@JG;=7<0HBO36?48@JG;?7<0HBO38?48@JG;17=0HBOPRDE5?AIE494<7IAM<02=3>BHJ5;:2:5KOC>26;108;EMA8429?2NDN1?:>69GKG:6>7=0HBL316<4?AIE4825;6J@B=3::3=CGK6:2:5KOC>14;1<08;EMA8749?2NDN1<<>69GKG:5<7=0HBL324<4?AIE4;<5;6J@B=04:2=CGK694394DN@?6<813MEI0?08;EMA8669?2NDN1=>>79GKG:46?1OCO2;>79GKG:26?1OCO29>79GKG:06?1OCO27>79GKG:>6>1OCOQ]EF58@JVF494<7IA_A=3=3>BHXH692:5KOQC?7;169GKUD;;790ICO<;DLA5>A43NDO46GAIUR\45>>8:KMMQVX8;20ECG[P^20<>OIA]ZT<964IOKWTZ6202CEEY^P07:8MKOSXV:<;6GAIU]342=NF@^T<<94IOKW[5403@DBXR><7:KMMQY7<>1BBDZP0458MKOSW9<<7D@FT^243>OIA]U;4:5FNHV\4<11BBDZP1458MKOSW8<<7D@FT^343>OIA]U:4:5FNHV\5<1C69JJLRX9M=0ECG[_0G4?LHN\V;M;6GAIU]142=NF@^T><94IOKW[7403@DBXR<<7:KMMQY5<>1BBDZP2458MKOSW;<<7D@FT^043>OIA]U94:5FNHV\6<11BBDZP3458MKOSW:<<7D@FT^143>OIA]U84:5FNHV\7<1O8;HLJPZ5E?2CEEYQOIA]UI:6B@AEGG3>JHO@IJ@n5BakmqR`ttafdh7@gaosTfvvohf;1E0068J465<2D:<>:4N0270>H68<>0B<>94:L24220818J4733G;:<95A1037?K76:=1E=<=;;O3201=I98??7C?>659M54133G;:495A10;0?K75<2D:>=:4N0020>H6:;>0B<<<4:L261286@>2768J440<2D:>5:4N00:7>H6;=1E=>>;;O3051=I9:8?7C?<359M56233G;8995A1247?K74?:1E=9:4N06;0>H6<090B<;<;O357>H6?:1E=5=4N0;1?K443G8;?6@=129M675H51;1E?>5A3118J6743G99?6@<329M7157=;O60?K27;2D?=>5A4318J1543G>??6@;529M035?>5A5518J0343G?=?6@:729M1=5H19:1E:?=4N710?K03;2D=9>5A6718J3143G<3?6@9939M36=I?990B:?<;O517>H0;:1E;9=4N670?K11;2D<;>5A7918J2?53G287C6?3:L;56=I0;90B5=<;O:77>H?=:1E4;=4N950?K>?;2D35?5A929M=55H>?:1E55=4N8;4?KCS_FX@86@@ND38T1=WI[^j7]GA_CWPMA^e3YCESO[\N@OF2>TFEK;=j6\NM^G[P@HTAFDTMk5]AL]F\QCI[@EESOm4RDCG[ROC\AUJo6\JAE]TMAROWK<0^HILE@48V@ADMK;87^GB_BMOHLUNGGUHDHMD6:QLQWEB?2YYZLBPA69PVSGKWK>0_^\N4:QPVG2<\PZNm6[\ES]BHLGTk2_XI_QYIRKAH@5<^JI27[GJW^VZT@0<_LK7<384WDC?5;0<_LK7>384WDC?7;0<_LH7<384WD@?5;0<_LH7>384WD@?7;d<_[C_IRHFRRV`?RTN\LUFCIKPAb9TVLRBWDEOIRLk;VPJP@YPAM^CSLj4WSKWAZQNL]BTNgcl{k7=3o4aefqe94=8720mij}a=0=<>gcl{h#<$64aefqf-7.02kohl'2(:8eabuj5:546okds`?5;g0oaen4:aoog4?3jeyijka_gkek*rjx&Uhk"z}bw0\gwit{Vigg#`ho69gmkg/8 =0hd`n(0+;?aoii!;;%55kioc+54/?3mcem%?=)99gmkg/9:#37igaa)37-==cagk#=8'7;ekme-71!11oeco'16+;?aoii!;3%55kioc+5bnfh"9>$64dhlb,75.02nbbl&=4(:8`lhf ;?"46jfn`*12,>bnfh"8%55kioc+75/?3mcem%=>)69gmkg/< =0hd`n(4+4?aoii!<";6jfn`*4-2=cagk#4$94dhlb,18:fjjd:68720hd`n<03=<>bnfh6:>364dhlb845902nbbl2>4?:8`lhf48?546jfn`>22;>bnfh6:255kioc?658?3mcem1<>>99gmkg;:;437igaa=00:==cagk7>907;ekme942611oeco327<;?aoii58<255kioc?6=8?3mcem1<6>69gmkg;:720hd`n<22=e>bnfh68=7>18:fjjd:497=0hd`n<2<4?aoii5>5;6jfn`>6:2=cagk7:394dhlb82803mcem1617:fjjd:>6>1oecl'0(58`lhe 8#37igab)33-==cagh#=<'7;ekmf-75!11oecl'12+;?aoij!;?%55kio`+50/?3mcen%?9)99gmkd/9>#37igab)3;-==cagh#=4'8;ekmf-4.02nbbo&=0(:8`lhe ;;"46jfnc*16,>bnfk"9:$64dhla,71.02nbbo&=8(:8`lhe ;3";6jfnc*0-==cagh#?='7;ekmf-56!>1oecl'4(58`lhe <#<7igab)4*3>bnfk"<%:5kio`+<,10?:8`lhe48;546jfnc>26;>bnfk6::364dhla841902nbbo2>8?:8`lhe4835;6jfnc>2:==cagh7>=07;ekmf946611oecl323<;?aoij588255kio`?618?3mcen1<:>99gmkd;:?437igab=04:==cagh7>507;ekmf94>6>1oecl32?:8`lhe4::5m6jfnc>05?6902nbbo2<1?58`lhe4:4<7igab=6=3>bnfk6>2:5kio`?2;19?2nbbo26>99gkprf 9#37iazt`*2-<=cg|~j$<>&9:flqqg/98#27iazt`*26,?"56j`uuc+50/>3me~xl&>6(;8`jssi!;<%45kotvb,4>.12ndyyo'18+;?air|h"9%45kotvb,76.12ndyyo'20+:?air|h"9>$74dnwwe-44!01ocxzn(36*=>bh}}k#>8'6;emvpd.5> 30hb{{a)04-<=cg|~j$?6&9:flqqg/:0#37iazt`*0-<=cg|~j$>>&9:flqqg/;8#37iazt`*7-==cg|~j$8'7;emvpd.1!11ocxzn(6+;?air|h"3%55kotvb,89gkprf48:556j`uuc?548>3me~xl2>2?;8`jssi5;8245kotvb842912ndyyo314<:?air|h6::374dnwwe970601ocxzn<0:==>bh}}k7=407;emvpd:6601ocxzn<32==>bh}}k7><06;emvpd:5:730hb{{a=00:<=cg|~j0?:19:flqqg;:<427iazt`>12;?89gkprf4;2556j`uuc?6<8?3me~xl2=>89gkprf4::5n6j`uuc?74<7601ocxzn<23=<>bh}}k7?364dnwwe92902ndyyo35?:8`jssi5<546j`uuc?3;>bh}}h#=$74dnwwf-77!01ocxzm(03*=>bh}}h#=?'6;emvpg.6; 30hb{{b)37-<=cg|~i$<;&9:flqqd/9?#27iaztc*23,?3me~xo&=3(;8`jssj!8?%45kotva,73.12ndyyl'27+:?air|k"9;$74dnwwf-4?!01ocxzm(3;*<>bh}}h#?$74dnwwf-57!01ocxzm(23*<>bh}}h#8$64dnwwf-3.02ndyyl'6(:8`jssj!="46j`uu`+<,>27;?89gkpre48?556j`uu`?538>3me~xo2>7?;8`jssj5;3245kotva84?902ndyyl31?;8`jssj58;245kotva877912ndyyl323<:?air|k69?374dnwwf943601ocxzm<37==>bh}}h7>;06;emvpg:5?730hb{{b=0;:<=cg|~i0?718:flqqd;:730hb{{b=13:g=cg|~i0>?50?;8`jssj59:255kotva868?3me~xo2;>99gkpre4<437iaztc>5:==cg|~i0:07;emvpg:?611ocxzm<8<;?`bnn;dlh55agb`vmiba3}xiz?Qlrnqp[fjl;2}nm>5xecCDu40<2JKt4}T;;09i84<:011<`?528kn>nua1bf95>h6kl0?7)?lb;3`<>{T;809i84<:011<`?528kn>n5\10196`0=83;8>5k62;3ba7e<[:;1>h850;306=c>:3;ji>>4d3g4>5<628qX??4=e480>4550l3964550l3960Z58`80>=e|@8h37W<<12>0?684r$0`5>7c03-;h57?kd:X2gd<6s8no6pg=e983>>o5m00;66g>d083>!7f03;o86`>a683?>o6l90;6)?n8;3g0>h6i>0:76g>cg83>!7f03;o86`>a681?>o6l10;6)?n8;3gf>h6i>0;76g>d683>!7f03;on6`>a682?>o6l?0;6)?n8;3gf>h6i>0976a=7b83>!7f0382n6`>a683?>i5?k0;6)?n8;0:f>h6i>0:76a=7883>!7f0382n6`>a681?>i5?10;6)?n8;0:f>h6i>0876a=7683>!7f0382n6`>a687?>i5??0;6)?n8;0:f>h6i>0>76a=7483>!7f0382n6`>a685?>i5?=0;6)?n8;0:f>h6i>0<76a=7283>!7f0382n6`>a68;?>i5?;0;6)?n8;0:f>h6i>0276a=7083>!7f0382n6`>a68b?>i5?90;6)?n8;0:f>h6i>0i76a=6d83>!7f0382n6`>a68`?>i5>m0;6)?n8;0:f>h6i>0o76a=6b83>!7f0382n6`>a68f?>i5>k0;6)?n8;0:f>h6i>0m76a=6`83>!7f0382n6`>a6824>=h:?31<7*>a981=g=i9h=1=<54o34;>5<#9h21>4l4n0c4>44<3f8=;7>5$0c;>7?e3g;j;7?<;:m123<72-;j47<6b:l2e2<6<21d>;;50;&2e=<51k1e=l951498k7>5290/=l6528`8j4g028<07b<71;29 4g?2;3i7c?n7;34?>i5090;6)?n8;0:f>h6i>0:465`26d94?"6i1095o5a1`595<=j2d:m:4>c:9l63`=83.:m54=9c9m5d1=9m10c?8;:18'5d>=:0h0b!7f038oo6`>a683?>i5jj0;6)?n8;0gg>h6i>0:76a=b`83>!7f038oo6`>a681?>i5j00;6)?n8;0gg>h6i>0876a=b983>!7f038oo6`>a687?>i5j>0;6)?n8;0gg>h6i>0>76a=b783>!7f038oo6`>a685?>i5j<0;6)?n8;0gg>h6i>0<76a=b583>!7f038oo6`>a68;?>i5j:0;6)?n8;0gg>h6i>0276a=b383>!7f038oo6`>a68b?>i5j80;6)?n8;0gg>h6i>0i76a=ag83>!7f038oo6`>a68`?>i5il0;6)?n8;0gg>h6i>0o76a=ae83>!7f038oo6`>a68f?>i5ij0;6)?n8;0gg>h6i>0m76a=ac83>!7f038oo6`>a6824>=h:hk1<7*>a981`f=i9h=1=<54o3c:>5<#9h21>im4n0c4>44<3f8j47>5$0c;>7bd3g;j;7?<;:m1e2<72-;j47l850;&2e=<5lj1e=l951498k7e4290/=l652ea8j4g028<07bi5k80;6)?n8;0gg>h6i>0:465`2b294?"6i109hn5a1`595<=c:9l6g6=83.:m54=db9m5d1=9m10c?o::18'5d>=:mi0bdd83>>o6lo0;66g>f`83>!7f038:56`>a683?>o6n00;6)?n8;02=>h6i>0:76g>f683>!7f038:56`>a681?>o6n?0;6)?n8;02=>h6i>0876g>f483>!7f038:56`>a687?>o6n=0;6)?n8;02=>h6i>0>76g>f283>!7f038:56`>a685?>o6n;0;6)?n8;02=>h6i>0<76g>f083>!7f038:56`>a68;?>o6n90;6)?n8;02=>h6i>0276g>eg83>!7f038:56`>a68b?>o6ml0;6)?n8;02=>h6i>0i76g>eb83>!7f038:56`>a68`?>o6mk0;6)?n8;02=>h6i>0o76g>e`83>!7f038:56`>a68f?>o6m00;6)?n8;02=>h6i>0m76g>e983>!7f038:56`>a6824>=n9l=1<7*>a9815<=i9h=1=<54i0g5>5<#9h21><74n0c4>44<3`;n97>5$0c;>77>3g;j;7?<;:k2a1<72-;j47<>9:l2e2<6<21b=h=50;&2e=<5901e=l951498m767290/=l6520;8j4g028<07d?if;29 4g?2;;27c?n7;34?>o6nl0;6)?n8;02=>h6i>0:465f1gf94?"6i109=45a1`595<=c:9j5`b=83.:m54=189m5d1=9m10e=:830b!7f038>m6`>a683?>o5;h0;6)?n8;06e>h6i>0:76g=3983>!7f038>m6`>a681?>o5;>0;6)?n8;06e>h6i>0876g=3783>!7f038>m6`>a687?>o5;<0;6)?n8;06e>h6i>0>76g=3583>!7f038>m6`>a685?>o5;:0;6)?n8;06e>h6i>0<76g=3383>!7f038>m6`>a68;?>o5;80;6)?n8;06e>h6i>0276g=3183>!7f038>m6`>a68b?>o5:o0;6)?n8;06e>h6i>0i76g=2e83>!7f038>m6`>a68`?>o5:j0;6)?n8;06e>h6i>0o76g=2c83>!7f038>m6`>a68f?>o5:h0;6)?n8;06e>h6i>0m76g=2883>!7f038>m6`>a6824>=n:;21<7*>a9811d=i9h=1=<54i304>5<#9h21>8o4n0c4>44<3`89:7>5$0c;>73f3g;j;7?<;:k160<72-;j47<:a:l2e2<6<21b>?:50;&2e=<5=h1e=l951498m726290/=l6524c8j4g028<07d<;0;29 4g?2;?j7c?n7;34?>o5;o0;6)?n8;06e>h6i>0:465f22g94?"6i1099l5a1`595<=c:9j67c=83.:m54=5`9m5d1=9m10e?<<:18'5d>=:b883>4<729qC=o64$0`5>4d>3f;j97>5;|``b99'5g0=k11do:4?::a6<<72j81<7>tH0`;?!7e>3;j56*>b182e1=i1k0;7cll:19'`4<53-n96?5+d281?!b32;1/h84=;%f5>7=#l>097)j7:39'`<<53-nj6?5+dc81?!bd2;1/hi4=;%ff>7=#lo097)k?:39'a4<53-o96?5+e281?!c32;1/i84=;%g5>7=#m>097)k7:39'a<<53-oj6?5+ec81?!cd2;1/ii4=;%gf>7=#mo097)h?:39'b4<53-l96?5+f281?!`32;1/j84=;%d5>7=#n>097)h7:39'b<<53-lj6?5+fc81?!`d2;1/ji4=;%df>7=#no097)??0;08 4662;1/==<52:&246<53-;;87<4$026>7=#99<1>6*>0681?!770380(<>6:39'55g=:2.:"68o097)?>0;08 476281/=<<51:&`=?4<,jk1>6*lb;08 fe=:2.hh7<4$bg96>"dn380(i>52:&2ed<6i=1/=ll51`68j4gd2;>0b0bk4?::k04?6=3`;j6=44i4194?=n:90;66g:e;29?l462900c4m50;9j2<<722c9>7>5;nc4>5<5<ag83>>ie:3:17d8k:188m72=831dn84?::k5a?6=3`8>6=44ib83>>ie>3:17dl50;9j2c<722c9:7>5;hf94?=n;:0;66am7;29?l762900e:>50;9j62<722cn6=44i2g94?=hj10;66g>2;29?l162900c:l50;9j6=<722cm6=44i5;94?=hj00;66g>3;29?l152900e>:50;9l<3<722c:<7>5;h6`>5<>i>93:17d=::188m1b=831b;:4?::maf?6=3`;>6=44i2494?=h1=0;66g;e;29?l1?2900e<850;9j5g`=831b?:4?::m:1?6=3`>m6=44i6;94?=n9>0;66g>c183>>o403:17b79:188k7b=831b9=4?::m1a?6=3`=j6=44i0:94?=n9j;1<75f3883>>i>?3:17d;>:188m4?=831b=o4?::k2g7<722c8m7>5;n;;>5<>o4j3:17d=i:188ke;29?l132900e>j50;9j04<722c:no4?::k2b?6=3`??6=44i6794?=n<;0;66g>bb83>>o2=3:17d99:188m15=831b=oj50;9j13<722c9n7>5;h0`>5<1<75f1cg94?=n=>0;66a8c;29?l222900e8650;9l3a<722c?:7>5;h6b>5<>i0m3:17d:8:188m1d=831do?4?::k6e?6=3f=m6=44i5:94?=hk:0;66g:b;29?l3a2900c5>50;9lg1<722c>o7>5;h43>5<>o193:17b6=:188m34=831d4>4?::m;3?6=3`<86=44ocf94?=h0=0;66a78;29?l032900cok50;9l<0<722e357>5;n;g>5<>i?i3:17b7j:188m30=831b:l4?::m`4?6=3f2i6=44o8d94?=n>>0;66g9b;29?j>d2900e;650;9le5<722e3h7>5;nc2>5<>if:3:17b6i:188k<5=831dm>4?::m:4?6=3fk?6=44o`:94?=hi<0;66an9;29?jg12900clo50;9leg<722ejo7>5;ncg>5<>od>3:17boi:188kg5=831dn=4?::ma0?6=3ty:=:4?:37x9f>=k>16>44=b:?1=?4d348264d234826o5228825>;513;970<6:01897?=9=16>44>8:?1=?7>34826n52288g?84>2l16>44i;<0:>46<5;31=l5228814>;5138:70<6:30897?=::16>44=7:?1=?4?3482628l01?75729>6<<0<279579:;<0:>20<5;31;:522884<>;513=270<6:6c8yv7603:19v3>b882e0=::00h963=9;3ba>;513i=70<6:0ce?xu6l<0;6?uQ1e3897?=9>1/=o9515`8yv7c;3:1>vP>d19>6<<6>2.:n:4>579~w4b52909wS?lf:?1=?723-;i;7?91:p5ae=838pR70<,8h<6<8l;|q2`d<72;qU=i94=3;960=#9k=1=:94}r3g=?6=:rT:h;5228810>"6j>0:4?5rs0ff>5<5sW;oi63=9;0e?!7e?3;3h6s|1ed94?4|V8nm70<6:228 4d028337p}=1`83>7}Y9ok01?754c9'5g1=9830q~<>8;296~X6n016>44;a:&2f2<6:=1v??9:181[7a?27957:7;%3a3?75n2wx><;50;0xZ4`134826994$0`4>45f3ty9=94?:3y]5c3<5;318;5+1c5951552z\2b1=::00?96*>b68203=z{;;96=4={_3e7>;513>?7)?m7;373>{t:8;1<72=90(vP>f19>6<<392.:n:4>4`9~w76b2909wS?jf:?1=?273-;i;7?;c:p65b=838pR6`<,8h<6<:k;|q14g<72;qU=hm4=3;97a=#9k=1=9k4}r03e?6=:rT:io522880g>"6j>0:8k5rs32:>5<5sW;nm63=9;1a?!7e?3;><6s|21:94?4|V8o270<6:2c8 4d028?:7p}=0683>7}Y9l201?75389'5g1=9<80q~16>44<8:&2f2<6=:1v?>::181[7b>27957=8;%3a3?72<2wx>=:50;0xZ4c234826>84$0`4>4323ty9<>4?:3y]5`2<5;31?85+1c595017>52z\2a6=::00886*>b6821==z{;8:6=4={_034>;513?97)?m7;36=>{t:;:1<72<;0(vP>fe9>6<<3n2.:n:4>5b9~w77c2909wS?ic:?1=?2b3-;i;7?:d:p64e=838pR1b<,8h<6<;j;|q15g<72;qU=k64=3;90f=#9k=1=8h4}r023?6=:rT:ii522887=>"6j>0::=5rs32`>5<5sW;n>63=9;1f?!7e?3;=>6s|21394?4|V8o:70<6:218 4d028<87p}=5c83>7}Y::h01?756c9'5g1=9?>0q~<:9;296~X5;h16>449a:&2f2<6><1v?;8:181[4402795787;%3a3?71>2wx>8850;0xZ75034826;94$0`4>4003ty9984?:3y]660<5;31:;5+1c5953>87>52z\170=::00=96*>b6822<=z{;?86=4={_000>;513{t:<81<72?90(;1/=o9517f8yv4283:1>vP=309>6<<192.:n:4>6d9~w72a2909wS<<0:?1=?073-;i;7?9f:p61c=838pR?0`<,8h<6<9?;|q10f<72;qU>?j4=3;91a=#9k=1=:?4}r07f?6=:rT9>n522886g>"6j>0:;?5rs36b>5<5sW89n63=9;7a?!7e?3;7}Y:;301?75589'5g1=9>?0q~<;7;296~X5:116>44:8:&2f2<6??1v?:9:181[45?27957;8;%3a3?7002wx>9;50;0xZ74134826884$0`4>41>3ty9894?:3y]673<5;31985+1c5952g52z\161=::00>86*>b6823g=z{;<96=4={_075>;513=97)?m7;34g>{t:?;1<72>;0(90;6?uQ22d897?=?91/=o9516g8yv42n3:1>vP=3d9>6<<1n2.:n:4>7g9~w73b2909wS<3b<,8h<6<6>;|q11f<72;qU>>74=3;92f=#9k=1=5=4}r06h522885=>"6j>0:495rs36g>5<5sW89?63=9;7f?!7e?3;396s|25094?4|V;8970<6:418 4d0282=7p}=9b83>7}Y:>i01?75929'5g1=91=0q~<6a;296~X5?k16>4462:&2f2<6011v?77:181[401279577?;%3a3?7?12wx>4950;0xZ71?348265h4$0`4>4>f3ty95;4?:3y]621<5;314h5+1c595=d52z\133=::003h6*>b682;5132h7)?m7;3;a>{t:091<721h0(93:1>vP=739>6<909~w7?72909wS<81:?1=?>?3-;i;7?62:p6=`=838pR?9?;<0:>=1<,8h<6<7<;|q1;k4=3;9<0=#9k=1=4:4}r0;g?6=:rT9:i52288;0>"6j>0:585rs3:a>5<5sW8=o63=9;:0?!7e?3;2:6s|29c94?4|V;7}Y:?k01?75809'5g1=9030q~<78;296~X5>016>4470:&2f2<61h1v?68:181[410279579i;%3a3?7>j2wx>5850;0xZ70034826:k4$0`4>4?d3ty9484?:3y]630<5;31;i5+1c59552z\120=::00b682=`=z{;k86=4={_0;6>;5133j7)?m7;3:b>{t:h81<72030(vP=7g9>6<<>?2.:n:4>a39~w7?a2909wS<8e:?1=??13-;i;7?>a:p6<3<,8h<6:o4=3;9=1=#9k=1="6j>0:=i5rs3:f>5<5sW8=863=9;:5?!7e?3;:i6s|29194?4|V;<870<6:6`8 4d028;m7p}=de83>7}Y:kn01?75b59'5g1=9;:0q~44m3:&2f2<6:81v?j6:181[4ei27957l>;%3a3?75:2wx>i650;0xZ7d>34826o>4$0`4>4443ty9h:4?:3y]6g><5;31mk5+1c5957352z\1f2=::00ji6*>b68263=z{;n>6=4={_0a2>;513ko7)?m7;313>{t:m>1<72hi0(vP=b29>6<2`9~w7b62909wS3-;i;7?=b:p6a6=838pR?l>;<0:>d><,8h<6<lh4=3;9e3=#9k=1=?j4}r0``?6=:rT9mh52288b1>"6j>0:>h5rs3a`>5<5sW8jh63=9;c7?!7e?3;8<6s|2b`94?4|V;kh70<6:`18 4d0289:7p}=c`83>7}Y:hh01?75a39'5g1=9:80q~44n1:&2f2<6;:1v?m7:181[4f127957o?;%3a3?74<2wx>n950;0xZ7g?348264h4$0`4>4523ty9o;4?:3y]6d1<5;315h5+1c5956052z\1e3=::002h6*>b68272=z{;o?6=4={_0`7>;513hi7)?m7;30<>{t:l91<72kk0(vP=c19>6<3b9~w7c72909wSg0<,8h<6<=j;|q1``<72;qU>ol4=3;9f0=#9k=1=>h4}r0ge?6=:rT9n=52288a6>"6j>0:8=5rs3ae>5<5sW8j963=9;c4?!7e?3;?=6s|2b694?4|V;k?70<6:8a8 4d028>97p}=e983>0}Y:l201?751c`897?=9ki01?751cf897?=9ko0(>7psa14a94?7|@8h37p`>5e83>4}O9k20qc?:e;295~N6j11vb<;i:182M7e02we=;>50;3xL4d?3td::<4?:0yK5g>7>51zJ2f==zf8<86=4>{I3a<>{i9?>1<7?tH0`;?xh6><0;63:1=vF>b99~j400290:wE?m8:m53>=83;pD5<6sA;i46sa17a94?7|@8h37p`>6e83>4}O9k20qc?9e;295~N6j11vb<8i:182M7e02we=:>50;3xL4d?3td:;<4?:0yK5g>7>51zJ2f==zf8=86=4>{I3a<>{i9>>1<7?tH0`;?xh6?<0;63:1=vF>b99~j410290:wE?m8:m52>=83;pD5<6sA;i46sa16a94?7|@8h37p`>7e83>4}O9k20qc?8e;295~N6j11vb<9i:182M7e02we=5>50;3xL4d?3td:4<4?:0yK5g>7>51zJ2f==zf8286=4>{I3a<>{i91>1<7?tH0`;?xh60<0;63:1=vF>b99~j4>0290:wE?m8:m5=>=83;pD5<6sA;i46sa19a94?7|@8h37p`>8e83>4}O9k20qc?7e;295~N6j11vb<6i:182M7e02we=4>50;3xL4d?3td:5<4?:0yK5g>7>51zJ2f==zf8386=4>{I3a<>{i90>1<7?tH0`;?xh61<0;6>3:1=vF>b99~j4?0290:wE?m8:m5<>=83;pD5<6sA;i46sa18a94?7|@8h37p`>9e83>4}O9k20qc?6e;295~N6j11vb<7i:182M7e02we=l>50;3xL4d?3td:m<4?:0yK5g>7>51zJ2f==zf8k86=4>{I3a<>{i9h>1<7?tH0`;?xh6i<0;63:1=vF>b99~j4g0290:wE?m8:m5d>=83;pD5<6sA;i46sa1`a94?7|@8h37p`>ae83>4}O9k20qc?ne;295~N6j11vb50;3xL4d?3td:n<4?:0yK5g>7>51zJ2f==zf8h86=4>{I3a<>{i9k>1<7?tH0`;?xh6j<0;63:1=vF>b99~j4d0290:wE?m8:m5g>=83;pD5<6sA;i46sa1ca94?7|@8h37p`>be83>4}O9k20qc?me;295~N6j11vb50;3xL4d?3td:o<4?:0yK5g>7>51zJ2f==zf8i86=4>{I3a<>{i9j>1<7?tH0`;?xh6k<0;63:1=vF>b99~j4e0290:wE?m8:m5f>=83;pD5<6sA;i46sa1ba94?7|@8h37p`>ce83>4}O9k20qc?le;295~N6j11vb50;3xL4d?3td:h<4?:0yK5g>7>51zJ2f==zf8n86=4>{I3a<>{i9m>1<7?tH0`;?xh6l<0;63:1=vF>b99~j4b0290:wE?m8:m5a>=83;pD5<6sA;i46sa1ea94?7|@8h37p`>de83>4}O9k20qc?ke;295~N6j11vb50;3xL4d?3td:i<4?:0yK5g>7>51zJ2f==zf8o86=4>{I3a<>{i9l>1<7?tH0`;?xh6m<0;63:1=vF>b99~j4c0290:wE?m8:~yxFGKr8<876ka54bb6{GHKq;qMN_{|BC \ No newline at end of file diff --git a/trbv2_cross_clk.vhd b/trbv2_cross_clk.vhd new file mode 100644 index 0000000..510953c --- /dev/null +++ b/trbv2_cross_clk.vhd @@ -0,0 +1,146 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used -- +-- solely for design, simulation, implementation and creation of -- +-- design files limited to Xilinx devices or technologies. Use -- +-- with non-Xilinx devices or technologies is expressly prohibited -- +-- and immediately terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" -- +-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR -- +-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION -- +-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION -- +-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS -- +-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, -- +-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE -- +-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY -- +-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -- +-- FOR A PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support -- +-- appliances, devices, or systems. Use in such applications are -- +-- expressly prohibited. -- +-- -- +-- (c) Copyright 1995-2007 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file trbv2_cross_clk.vhd when simulating +-- the core, trbv2_cross_clk. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +Library XilinxCoreLib; +-- synthesis translate_on +ENTITY trbv2_cross_clk IS + port ( + addra: IN std_logic_VECTOR(2 downto 0); + addrb: IN std_logic_VECTOR(2 downto 0); + clka: IN std_logic; + clkb: IN std_logic; + dina: IN std_logic_VECTOR(31 downto 0); + dinb: IN std_logic_VECTOR(31 downto 0); + douta: OUT std_logic_VECTOR(31 downto 0); + doutb: OUT std_logic_VECTOR(31 downto 0); + wea: IN std_logic; + web: IN std_logic); +END trbv2_cross_clk; + +ARCHITECTURE trbv2_cross_clk_a OF trbv2_cross_clk IS +-- synthesis translate_off +component wrapped_trbv2_cross_clk + port ( + addra: IN std_logic_VECTOR(2 downto 0); + addrb: IN std_logic_VECTOR(2 downto 0); + clka: IN std_logic; + clkb: IN std_logic; + dina: IN std_logic_VECTOR(31 downto 0); + dinb: IN std_logic_VECTOR(31 downto 0); + douta: OUT std_logic_VECTOR(31 downto 0); + doutb: OUT std_logic_VECTOR(31 downto 0); + wea: IN std_logic; + web: IN std_logic); +end component; + +-- Configuration specification + for all : wrapped_trbv2_cross_clk use entity XilinxCoreLib.blkmemdp_v6_3(behavioral) + generic map( + c_reg_inputsb => 0, + c_reg_inputsa => 0, + c_has_ndb => 0, + c_has_nda => 0, + c_ytop_addr => "1024", + c_has_rfdb => 0, + c_has_rfda => 0, + c_ywea_is_high => 1, + c_yena_is_high => 1, + c_yclka_is_rising => 1, + c_yhierarchy => "hierarchy1", + c_ysinita_is_high => 1, + c_ybottom_addr => "0", + c_width_b => 32, + c_width_a => 32, + c_sinita_value => "0", + c_sinitb_value => "0", + c_limit_data_pitch => 18, + c_write_modeb => 0, + c_write_modea => 0, + c_has_rdyb => 0, + c_yuse_single_primitive => 0, + c_has_rdya => 0, + c_addra_width => 3, + c_addrb_width => 3, + c_has_limit_data_pitch => 0, + c_default_data => "0", + c_pipe_stages_b => 0, + c_yweb_is_high => 1, + c_yenb_is_high => 1, + c_pipe_stages_a => 0, + c_yclkb_is_rising => 1, + c_yydisable_warnings => 1, + c_enable_rlocs => 0, + c_ysinitb_is_high => 1, + c_has_web => 1, + c_has_default_data => 1, + c_has_sinitb => 0, + c_has_wea => 1, + c_has_sinita => 0, + c_has_dinb => 1, + c_has_dina => 1, + c_ymake_bmm => 0, + c_sim_collision_check => "NONE", + c_has_enb => 0, + c_has_ena => 0, + c_depth_b => 8, + c_mem_init_file => "mif_file_16_1", + c_depth_a => 8, + c_has_doutb => 1, + c_has_douta => 1, + c_yprimitive_type => "32kx1"); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_trbv2_cross_clk + port map ( + addra => addra, + addrb => addrb, + clka => clka, + clkb => clkb, + dina => dina, + dinb => dinb, + douta => douta, + doutb => doutb, + wea => wea, + web => web); +-- synthesis translate_on + +END trbv2_cross_clk_a; + diff --git a/trbv2_link_fifo.ngc b/trbv2_link_fifo.ngc new file mode 100644 index 0000000..f0d1ee3 --- /dev/null +++ b/trbv2_link_fifo.ngc @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.4e +$7g441<,[o}e~g`n;"2*447&;:%>-*>;1;8456789:;<9>40123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?1:30?4(79o1:<7GAPTV9TWI@WLG[XTQ[HSGPL9?=878=7<>5IORVP?VUGNUNA]ZV_UJQAVNXIZYN^Y26:1<12>772@D[YY4_RNE\AHVSQV^C^H]G_OGDEQC;13:5=h5>0;KMTPR=X[ELSK[CL^VKV@UO400;2?;4118JJUSS2YXDKRHZLM]WLWCT@VKX_H\[<883:73<990BB][[:QPLCZ@RDEU_D_K\H^LFCDRB400;2LHW]]0{~biPelrw}ZrozlycSl}|esv?=?69:?1:<7GAPTV9twi`Wlg{xtQ{hsgplZhboh~n044?>0g8557<>5IORVP?vugnUmyabPtipfwmYimnki1750?3`?46=G\^[YY4KECWD[WBXXG^Y044?>0a85511b924?IR\Y__6_JPD@VB[FIRF]626=0>c:33>JSSX\^1[_QKAUC\GJSI\531<3?6;029KPRW]]0omyoPcnwmp9?=878?7<>5OTVSQQ0g855772F__\XZ5dd`vcZquWyd~R~cur3\s9?=878?7<>5OTVSQQ0g855772F__\XZ5re]geqgXkfex1750?3`?46=G\^[YY4xr^fbpdYdg|d044?>0685020?699=1:97GAPTV9EABUJ5;?6=0>2:3;>LHW]]0OEC2>7;2=57=603CE\XZ5dhl?52<768>0=54@UURVP?BH]]6:;7>115925863;;97><5IORVP?BNI59:6=0>2:11>LHW]]0OEO2<1;2=56=4:3E^X][[:EMB867=87;87><5OTVSQQ11:625>2=AGZ^X7JFP@>0>58692>1EC^ZT;FJTG:4294:<6:5IORVP?QBI591<3??;58JJUSS2^OI0>4?>0080?IR\Y__6IA_A=194;753=0DYY^ZT;FLTG:4294m79xcx52eb4730$;9=68=;7;7?3?>>=12<=7=;847?<01111JHI\N<1<:?DBCZH6:<374AEFQE976601JHI\N<00==>GCL[K7=>0m;@FGVD:6<3:556OKDSC?518?3HNO^L2>>99B@ATF4;437LJKR@>0:==FLMXJ0907;@FGVD:2611JHI\N<7<;?DBCZH6<255NDEPB8=8?3HNO^L26>99B@ATE49427LJKRC>24;?>89B@ATE488556OKDS@?568e3HNO^O2>4;2==>GCL[H7=907;@FGVG:6611JHI\M<3<;?DBCZK68255NDEPA818?3HNO^O2:>99B@ATE4?437LJKRC>4:==FLMXI0507;@FGVG:>6j1J@@A\T^GNTQ_e3HFFC^ZPFTNO=>GTQGIT^HI<;CW1<>DR[VCEJB?4C`9@EVEFLLCEMl5LARAB@@OIJk1HM^MNDDMVPDdBBJ\MT^LCPFTNOb>BBJ\MT^LCPRE]FJc=CMK_LS_OB_VP\AK773MOIYJQ]D^RMPW:768:0HHLZG^PG[UHSZ5;5==5KECWD[WBXXG^Y0?0>0:FFFPAXZMU[BY\33?33?ACE]NUYHR^ATS>7:46008@@DROVXOS]@[R=;94;773MOIYJQ]D^RMPW:>68:0HHLZG^UQ[UHSZ5:5==5KECWD[RTXXG^Y0<0>0:FFFPAX_[U[BY\32?33?ACE]NU\^R^ATS>0:46028@@DROV]YS]@[R=:=57=CMK_LSZ\PPOVQ8<<768:0HHLZG^UQ[UHSZ535>6JF6:FJE969?2NBM1??>69GMD:697=0HDO313<4?AOF4895;6JFA=37:2=CAH6:9394DHC?53803MCJ0<917:FJE97?6>1OEL2>9?48@LG;97=0HDO321<4?AOF4;;5;6JFA=01:2=CAH69?394DHC?61803MCJ0?;17:FJE9416>1OEL2=7?58@LG;:14<7IGN<3;=2>BNI585;6JFA=13:<=CAH68=7>17:FJE9566?1OEL2<>79GMD:36?1OEL2:>79GMD:16?1OEL28>79GMD:?6?1OEL26>79GMG:76>1OEO2>0?58@LD;984<7IGM<00=3>BNJ5;82:5KIC>20;169GMG:607=0HDL318<5?AOE484<7IGM<32=3>BNJ58:2:5KIC>16;1>08;EKA8729?2NBN1<:>69GMG:5>7=0HDL326<4?AOE4;25;6JFB=0::3=CAK692:5KIC>04;?69GMG:497<0HDL33?48@LD;<7<0HDL35?48@LD;>7<0HDL37?48@LD;07<0HDL39?48@LH;87=0HD@311<4?AOI48;5;6JFN=31:2=CAG6:?394DHL?51803MCE0<;17:FJJ971601OEC2>7;2=3>BNF5;<2;5KIO>2:3=CAG692;5KIO>0:3=CAG6?2;5KIO>6:3=CAG6=2;5KIO>4:3=CAG632;5KIO>::2=CAYK7<394DHRB84803MC[M1<19:FJTD:4294<7IG_A=1=3>BNXK6;2:5KIQ@?5;1BHI5;:2:5KO@>26;108;EMB8429?2NDM1?:>69GKD:6>7=0HBO316<4?AIF4825;6J@A=3::3=CGH6:2:5KO@>14;1<08;EMB8749?2NDM1<<>69GKD:5<7=0HBO324<4?AIF4;<5;6J@A=04:2=CGH694394DNC?6<813MEJ0?08;EMB866912NDM1=>:1<4?AIF4:;5:6J@A=1=2>BHI5>5:6J@A=7=2>BHI5<5:6J@A=5=2>BHI525:6J@A=;=3>BHIVXNK;5KOC>3:2=CGK6:<394DN@?54803MEI0<<17:FLF9746>1OCO2>4?58@JD;9<4<7IAM<04=3>BHJ5;<2:5KOC>2<;117:FLF9466>1OCO2=2?58@JD;::4<7IAM<36=3>BHJ58>2:5KOC>12;1:08;EMA87>9?2NDN1<6>79GKG:56>1OCO2<0?;8@JD;;80;2:5KOC>05;017:FLTD:66>1OC]O32?;8@JVF4:0;2:5KOQC?7;189GKUD;;3:5;6J@PC>0:2=CG\^7<364DNWW846902NDYY2>1?:8@JSS488546J@UU>27;>BH]]6:;7>18:FLQQ:6?7=0HB[[<0<4?AIR\585;6J@UU>0:2=CG\^78394DNWW80803ME^X1817:FLQQ:06>1OCXZ38?58@JSS404>7HC_TX18AKG43LDI>6H=4:D1B535IDB68BAEB;2LO\95IDQG7?C@58=1MYAB:;Gcow`7?5F399JJLRWW9:37D@FTQ]35==NF@^[S=<7;HLJPUY7;11BBDZ__16;?LHN\YU;955FNHVS[50?3@DBX]Q?789JJLRT\H^N;6GAIU]342=NF@^T<<94IOKW[5403@DBXR><7:KMMQY7<>1BBDZP0458MKOSW9<<7D@FT^243>OIA]U;4:5FNHV\4<11BBDZP1458MKOSW8<<7D@FT^343>OIA]U:4:5FNHV\5<1C69JJLRX9M=0ECG[_0G4?LHN\V;M;6GAIU]142=NF@^T><94IOKW[7403@DBXR<<7:KMMQY5<>1BBDZP2458MKOSW;<<7D@FT^043>OIA]U94:5FNHV\6<11BBDZP3458MKOSW:<<7D@FT^143>OIA]U84:5FNHV\7<1O8;HLJPZ5E?2CEEYQOIA]UI56GAIU]EMIC43@D]=?5FNWGQPZEKCVNDMR\JG008MKPBZ]UH@FQKOC]QAB5H68:>0B<>;4:L24020668J46?<2D:<4=4N037?K768=1E=459M54333G;::95A1057?K760=1E=<7<;O310>H6:9>0B<<>4:L2675H61;1E>>5A2118J7743G89>6@:2:L56>H0:2D3?6@7329M<155A9618J0\_AH_DOSP\YS@[OXD1<1159SVJAXMDZ_URZGRDQK8686<2ZYCJQJMQVZ[QNUMZB783?;;QPLCZCJX]STXE\JSI>6:42VUGNUNA]ZV_UJQAVN;07;=7]\@G^GNTQ_X\AXN_E26:1<20>VUGNUNA]ZV_UJQAVN;17;i7]\@G^GNTQ_X\AXN_EQNSRGQP9699k1[^BIPELRW]ZROZLYCSL]\ESV?5;7e3YXDKRKBPU[\PMTB[AUJ_^K]T=0=5g=WZFMTI@^[Y^VKV@UOWHYXI_Z33?3a?UTHOVOF\YWPTIPFWMYF[ZOYX1:11c9SVJAXMDZ_URZGRDQK[DUTM[^793?m;QPLCZCJX]STXE\JSI]BWVCU\5<5=o5_RNE\AHVSQV^C^H]G_@QPAWR;?7;i7]\@G^GNTQ_X\AXN_EQNSRGQP9>99m1[^BIPELRW]ZROZLYCSL]\ESV?=?699k1[^BIPELRW]ZROZLYCSL]\ESV?=;7e3YXDKRKBPU[\PMTB[AUEIJO[E=2=5g=WZFMTI@^[Y^VKV@UOWGOLMYK31?3a?UTHOVOF\YWPTIPFWMYIMNK_I1<11c9SVJAXMDZ_URZGRDQK[KC@I]O7?3?m;QPLCZCJX]STXE\JSI]MABGSM5>5=o5_RNE\AHVSQV^C^H]G_OGDEQC;=7;i7]\@G^GNTQ_X\AXN_EQAEFCWA9099k1[^BIPELRW]ZROZLYCSCKHAUG?3;7e3YXDKRKBPU[\PMTB[AUEIJO[E=:=5a=WZFMTI@^[Y^VKV@UOWGOLMYK39;2=5g=WZFMTI@^[Y^VKV@UOWGOLMYK39?;8TWI@WO_G@<=4PSMD[CSKDV^C^H]G<1<27>VUGNUMYABPTIPFWM:66890\_AH_GWOHZROZLYC0?0>3:RQKBYA]EFTXE\JSI>0:45018TWI@WO_G@RZGRDQK8386;2ZYCJQIUMN\PMTB[A6<2<=4PSMD[CSKDV^C^H]G<9<21>VUGNUMYABPTIPFWM:>294:?6^]OF]EQIJX\AXN_E26>0c8TWI@WO_G@RZGRDQK[DUTM[^7<3?n;QPLCZ@RDEU_D_K\H^CPW@TS484:m6^]OF]EQIJX\AXN_EQNSRGQP9499h1[^BIPFTNO[QNUMZBTM^]JRU>0:4ga:RQKBYA]EFTXE\JSI]BWVCU\5<5=l5_RNE\BPJKW]BYI^FPARQFVQ:068k0\_AH_GWOHZROZLYCSL]\ESV?<;7d3YXDKRHZLM]WLWCT@VKX_H\[<883:4ga:RQKBYA]EFTXE\JSI]MABGSM5;5=l5_RNE\BPJKW]BYI^FPNDEBP@:568k0\_AH_GWOHZROZLYCSCKHAUG?7;7f3YXDKRHZLM]WLWCT@VDNKLZJ<5<2e>VUGNUMYABPTIPFWMYIMNK_I1;11`9SVJAXN\FGSYF]ERJ\J@AF\L6=2028VAYCI]KTOB[AT=1=55=ULVNJXLQLOTLW818682XOSIO[A^ALQKR;=7;;7_JPD@VB[FIRF]6=2<>4RE]GEQGXKF_EX191119Q@ZBF\HUHCX@[<9<26>TCWMK_MRM@UOV?=?69991YHRJNT@]@KPHS404>7_JPEOa8V@GCW^COXEQNc:PFEAYPAM^CSO84RDE@AD0<[H\NHLZN129PMHYDGEFB_DAA_BJFGN0<[F_YOH94SSTBHZG03ZX]MAQM4:QPVD2<[ZXI86ZVPDg8Q5)`mgUj#hhar;8QKBBZOFD[l5ZSDP\EIOF[j1^_H\PVHQJFIC23_KGEI=4VBA:?SOB_V^R\H84WDC?4;0<_LK7=384WDC?6;><_LK7?7>16:UFE959>2]NN1>16:UFF979>2]NN1<18:UFF95=87<0[HL33?`8SWOSMVLB^^Zl;VPJP@YJGMOTMn5XRHVF[HICMVHo7Z\FTD]TMAROWHn0[_G[E^UJ@QNXJ?1\^ROLK79TVZEKC8:0[_QKAUC\GJSI\5:5==5XR^FBPDYDG\D_0<0>0:UQ[AGSIVIDYCZ32?33?RTXLH^JSNAZNU>0:46<_[UOMYOPCNWMP929991\^RJNT@]@KPHS4<4:<6Y]_ECWEZEH]G^7:3??;VP\@DRFWJE^BY28>028SWYCI]KTOB[AT=:=57=PZVNJXLQLOTLW8<<768:0[_QKAUC\GJSI\53596Y]_DL2`>^ND@DS!UJM 1,2$VRRJ):%=-O\CHK6?]IUKP<0T^ZCIC58\VRXOGN<7U][_WA@f>^XKFXNSD@IO028\ZEHZLUBBKAPLHQW2>^cjVCoj6Vkh^RqmhPbzzcdb<>4Xeo\Idlhz_oydaa119[`hYJageyZh||inl`?djjgz~Ti`~{yc9bhhit|Vl~`a84b`ahqub3:c=ci}kTob{at=;94;18:fffpaXzmU{by|Ppmwp5Zt;87;37ikmuf]q`Zvi|{U{`x}>_s>2:4>0:8``droVxoS}`{r^roqv7Xz5<5=55kecwd[wbXxg~yS}bzs0]q828602nnnxiPre]sjqtXxex=R|38?3b?ace}nUyhR~ats]shpu6W{626=0>8:fffpaXzmU{by|Ppmwp5Zt;17;97ikmuf]q`Zvi|{Uy0=0>2:fffpaXzmU{by|Pr=3=57=cmklSjPpovq[w:56880hhlzg^pg[uhszVx7?3?=;egaqbYulVzexQ}<5<26>bbj|mT~iQnup\v9399;1oio{h_sf\tkruW{6=2<<4dd`vcZtcWyd~R|37?31?ace}nUyhR~ats]q8=86<2nnnxiPre]sjqtXz531<3?=;egaqbYulVzexQ}<8<26>bbj|mT~iQnup\s9699;1oio{h_sf\tkruW~6:2<<4dd`vcZtcWyd~Ry32?31?ace}nUyhR~ats]t8686:2nnnxiPre]sjqtX5>5=?5kecwd[wbXxg~ySz2:>008``droVxoS}`{r^u?2;753moiyjQ}d^rmpwYp4>4:>6jjbte\vaYwf}xT{161159gags`W{nT|cz}_v>:>586:2nnnxiPre]sjqtX535=55kecwd[rtXxg~yS}bzs0]t858602nnnxiPws]sjqtXxex=Ry31?3;?ace}nU|~R~ats]shpu6W~692<64dd`vcZquWyd~R~cur3\s959911oio{h_vp\tkruWyf~bbj|mT{Qnup\tist9V}793?7;egaqbYpzVzexQltq2[r:16820hhlzg^uq[uhszVzgy~?Pw=5=5==cmklSz|Ppovq[ujr{8U|050>a:fffpaX{U{by|Ppmwp5Zq;13:5=55kecwd[rtXxg~yS}bzs0]t8<8602nnnxiPws]sjqtXxex>Ry30?3;?ace}nU|~R~ats]shpu5W~6:2<64dd`vcZquWyd~R~cur0\s949911oio{h_vp\tkruWyf~?Qx<2<2<>bbj|mT{Qnup\tist:V}783?7;egaqbYpzVzexQltq1[r:26820hhlzg^uq[uhszVzgy~8:fffpaX{U{by|Ppmwp6Zq;07;j7ikmuf]tvZvi|{U{`x}=_v>:>58602nnnxiPws]sjqtXxex>Ry39?31?ace}nU|~R~ats]q8586:2nnnxiPws]sjqtXz5;5=?5kecwd[rtXxg~yS2=>008``droV}yS}`{r^p?7;753moiyjQxr^rmpwYu4=4:>6jjbte\swYwf}xT~1;1139gags`W~xT|cz}_s>5:444:fffpaX{U{by|Pr=;94;753moiyjQxr^rmpwYu404:>6jjbte\swYwf}xT{1>1139gags`W~xT|cz}_v>2:440>2:fffpaX{U{by|Pw=6=57=cmklSz|Ppovq[r:26880hhlzg^uq[uhszV}7:3?=;egaqbYpzVzexQx<6<26>bbj|mT{Qnup\s9>99=1oio{h_vp\tkruW~626=0>2:fffpaX{U{by|Pw=;=2>bnf!:":6jfn)3*3>bnf!;;%:5kio*25,1bnf!?":6jfn)4*2>bnf!=":6jfn):*2>bnf!3":6jfn=2=3>bnf5;;2:5kio>25;169gmk:6=7=0hd`317<:?aoi48=1<394dhl?52813mce0<09;ekm87813mce0>09;ekm81813mce0809;ekm83813mce0:09;ekm8=813mce0408;emvp-6.?2ndyy&>)99gkpr/99#37iazt)32-==cg|~#=?'7;emvp-74!11ocxz'15+;?air|!;>%55kotv+53/?3me~x%?8)69gkpr/: =0hb{{(2+4?air|!>";6j`uu*6-2=cg|~#:$94dnww,2/03me~x%6&7:flqq.>!>1ocxz30?:8`jss48:546j`uu>25;>bh}}6:9364dnww8409i2ndyy2>7;2=<>bh}}6:;394dnww84803me~x1<17:flqq:46>1ocxz34?58`jss4<4<7iazt=4=3>bh}}6<2:5kotv?<;1hhzdmnb#matcnh+bciWjd~#ijn^pg[fhsz&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.O`kphsWje~byQly=0=34=ig{glic lnu`oo*abfViex heo]q`Zei|{%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPcx>1:Zts>l1eccheo,`jqdkc&mnbRmats,dakYulViex!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\g|:46>;0bb|bgdl-gkredb%licQlnup-c`hXzmUhby| gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Eje~byQlotlw[f;;7Uyx;k4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$Anaznu]`kphsWjs7839>;omqibci&jdnae gdl\gkru&noeSjPcovq+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vir090Pru4f?kiuenoe"n`{bmi,c`hXkg~y"jka_sf\gkru'noeSoga_blw[qiw&kceSn`{_ums+bciWkyhSoga_blw*gjcWkceSn`{/LalqkrXkfexRmv<4<45>hhzdmnb#matcnh+bciWjd~#ijn^pg[fhsz&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.O`kphsWje~byQly=7=[wr1m2dd~`ijn/ampgjl'noeSn`{r/efjZtcWjd~"ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Kdg|dSnaznu]`}909?81eccheo,`jqdkc&mnbRmats,dakYulViex!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\g|:16Vx:h5aosodak(df}hgg"ijn^ampw(`mgUyhRmats-dakYeagUhbyQ{oq,amkYdf}Uc}!heo]awfYeagUhby mle]amkYdf}%Fob{at^alqkrXkp6<2:?4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$Anaznu]`kphsWjs7;3Q}t7g8jjtjold%oczmlj-dakYdf}x%kh`Pre]`jqt(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz MbmvjqYdg|dSnw38?52?kiuenoe"n`{bmi,c`hXkg~y"jka_sf\gkru'noeSoga_blw[qiw&kceSn`{_ums+bciWkyhSoga_blw*gjcWkceSn`{/LalqkrXkfexRmv<9<\vq123geyajka.blwfim(oldTocz}.fgm[wbXkg~y#jka_ckm[fhsW}e{"oga_blw[qiw'noeSo}l_ckm[fhs&kfoSoga_blw+Heh}g~Tob{at^nvp969W@D]S=8i;omqibci&jdnae gdl\gkru&noeSjPcovq+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vrd~1?16g9mkwk`mg$hbylck.efjZei|{$licQ}d^ampw)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Ttb|32?4e?kiuenoe"n`{bmi,c`hXkg~y"jka_sf\gkru'noeSoga_blw[qiw&kceSn`{_ums+bciWkyhSoga_blw*gjcWkceSn`{/LalqkrXkfexRv`r=1=2c=ig{glic lnu`oo*abfViex heo]q`Zei|{%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPxnp?0;0a3geyajka.blwfim(oldTocz}.fgm[wbXkg~y#jka_ckm[fhsW}e{"oga_blw[qiw'noeSo}l_ckm[fhs&kfoSoga_blw+Heh}g~Tob{at^zlv939>o1eccheo,`jqdkc&mnbRmats,dakYulViex!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\|jt;>72:330:336:334:33::35hhzdmnb#matcnh+bciWjd~#ijn^pg[fhsz&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.alqkrX=?90bb|bgdl-gkredb%licQlnup-c`hXzmUhby| gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR893:llvhabf'iexobd/fgm[fhsz'mnbR|k_blwv*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"m`uov\335658jjtjold%oczmlj-dakYdf}x%kh`Pre]`jqtXxex="ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Kdg|dSnaznu]`}959W{~<86``rlefj+ei|kf`#jka_blwv+abfVxoSn`{r^roqv7(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz MbmvjqYdg|dSnw34?54?kiuenoe"n`{bmi,c`hXkg~y"jka_sf\gkruWyf~hhzdmnb#matcnh+bciWjd~#ijn^pg[fhszVzgy~? gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Eje~byQlotlw[f;=7Uyx::4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist9&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.O`kphsWje~byQly=4=32=ig{glic lnu`oo*abfViex heo]q`Zei|{U{`x}>/fgm[goiWjdSya.ckm[fhsW}e{#jka_cq`[goiWjd"obk_ckm[fhs'DidyczPcnwmpZe~4?4T~y9;;omqibci&jdnae gdl\gkru&noeSjPcovq[ujr{8%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPcx>4:2139:;omqibci&jdnae gdl\gkru&noeSjPcovq[ujr{8%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPxnp?7;123geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs0-dakYeagUhbyQ{oq,amkYdf}Uc}!heo]awfYeagUhby mle]amkYdf}%Fob{at^alqkrXpfx7839:;omqibci&jdnae gdl\gkru&noeSjPcovq[ujr{8%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPxnp?1;123geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs0-dakYeagUhbyQ{oq,amkYdf}Uc}!heo]awfYeagUhby mle]amkYdf}%Fob{at^alqkrXpfx7:39:;omqibci&jdnae gdl\gkru&noeSjPcovq[ujr{8%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPxnp?3;123geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs0-dakYeagUhbyQ{oq,amkYdf}Uc}!heo]awfYeagUhby mle]amkYdf}%Fob{at^alqkrXpfx7439:;omqibci&jdnae gdl\gkru&noeSjPcovq[ujr{8%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPxnp?=;1?3geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs0-dakYeagUhbyQ{oq,amkYdf}Uc}!heo]awfYeagUhby mle]amkYdf}%Fob{at^alqkrXpfx753Q}t7`8jjtjold%oczmlj-dakYdf}x%kh`Pre]`jqtXxex="ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Tb{|f0=09b:llvhabf'iexobd/fgm[fhsz'mnbR|k_blwvZvk}z;$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}6:2;l4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist9&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.Pfwpjs4;4=n6``rlefj+ei|kf`#jka_blwv+abfVxoSn`{r^roqv7(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz Rdqvhq:46?h0bb|bgdl-gkredb%licQlnup-c`hXzmUhby|Ppmwp5*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"\jstnw8181j2dd~`ijn/ampgjl'noeSn`{r/efjZtcWjd~R~cur3,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$^h}zlu>6:3dhhzdmnb#matcnh+bciWjd~#ijn^pg[fhszVzgy~? gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Zly~`y28>7`8jjtjold%oczmlj-dakYdf}x%kh`Pre]`jqtXxex="ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Tb{|f0509b:llvhabf'iexobd/fgm[fhsz'mnbR|k_blwvZvk}z;$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}622;74nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist9&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.alqkrX8?30bb|bgdl-gkredb%licQlnup-c`hXzmUhby|Ppmwp5*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"m`uov\53?hhzdmnb#matcnh+bciWjd~#ijn^pg[fhszVzgy~1:Zts0?1eccheo,`jqdkc&mnbRmats,dakYulViexQltq1*gjcW{nTocz}_qnvw7)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Tot2<>9;8jjtjold%oczmlj-dakYdf}x%kh`Pre]`jqtXxex>#lcd^pg[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Eje~byQlotlw[f;;7Uyx584nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,Ifirf}Uhcx`{_b{?0;>>3geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs3,ahaYulViexQltq1+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vir090Pru:5?kiuenoe"n`{bmi,c`hXkg~y"jka_sf\gkruWyf~? mle]q`Zei|{U{`x}=/fgm[goiWjdSya.ckm[fhsW}e{#jka_cq`[goiWjd"obk_ckm[fhs'DidyczPcnwmpZe~4<4356``rlefj+ei|kf`#jka_blwv+abfVxoSn`{r^roqv4)jenT~iQlnup\tist:&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.O`kphsWje~byQly=7=[wr?>2dd~`ijn/ampgjl'noeSn`{r/efjZtcWjd~R~cur0-fibXzmUhby|Ppmwp6*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"Clotlw[firf}Uhu181889mkwk`mg$hbylck.efjZei|{$licQ}d^ampwYwd|y9"obk_sf\gkruWyf~?!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\g|:16Vx4;5aosodak(df}hgg"ijn^ampw(`mgUyhRmats]shpu5&kfoSjPcovq[ujr{;%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPcx>4:=?#lcd^pg[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Eje~byQlotlw[f;07227ca}mfgm*fhsjea$kh`Pcovq*bciW{nTocz}_qnvw7(edmUyhRmats]shpu5'noeSoga_blw[qiw&kceSn`{_ums+bciWkyhSoga_blw*gjcWkceSn`{/LalqkrXkfexRmv<9<\vq>c3geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs3,ahaYulViexQltq1+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vf~x1>1_HLU[5>03geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs3,ahaYulViexQltq1+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vrd~1?1869mkwk`mg$hbylck.efjZei|{$licQ}d^ampwYwd|y9"obk_sf\gkruWyf~?!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\|jt;:72<7ca}mfgm*fhsjea$kh`Pcovq*bciW{nTocz}_qnvw7(edmUyhRmats]shpu5'noeSoga_blw[qiw&kceSn`{_ums+bciWkyhSoga_blw*gjcWkceSn`{/LalqkrXkfexRv`r=1=<2=ig{glic lnu`oo*abfViex heo]q`Zei|{U{`x}=.cng[wbXkg~yS}bzs3-dakYeagUhbyQ{oq,amkYdf}Uc}!heo]awfYeagUhby mle]amkYdf}%Fob{at^alqkrXpfx78368;omqibci&jdnae gdl\gkru&noeSjPcovq[ujr{;$i`iQ}d^ampwYwd|y9#jka_ckm[fhsW}e{"oga_blw[qiw'noeSo}l_ckm[fhs&kfoSoga_blw+Heh}g~Tob{at^zlv9390>1eccheo,`jqdkc&mnbRmats,dakYulViexQltq1*gjcW{nTocz}_qnvw7)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Ttb|36?:4?kiuenoe"n`{bmi,c`hXkg~y"jka_sf\gkruWyf~? mle]q`Zei|{U{`x}=/fgm[goiWjdSya.ckm[fhsW}e{#jka_cq`[goiWjd"obk_ckm[fhs'DidyczPcnwmpZ~hz5=54:5aosodak(df}hgg"ijn^ampw(`mgUyhRmats]shpu5&kfoSjPcovq[ujr{;%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPxnp?<;>03geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs3,ahaYulViexQltq1+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vrd~1718`9mkwk`mg$hbylck.efjZei|{$licQ}d^ampwYwd|y9"obk_sf\gkruWyf~?!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\|jt;17Uyx:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}6;2:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}6:2:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}692:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}682:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}6?2:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}6>2:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}6=2:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}6<2:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}632:j4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}622:m4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|5:5;n5aosodak(df}hgg"ijn^ampw(`mgUyhRmats]shpu5&kfoSjPcovq[ujr{;%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-`kphs484i0bb|bgdl-gkredb%licQlnup-c`hXzmUhby|Ppmwp6+dklVxoSn`{r^roqv4(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmp929?j1eccheo,`jqdkc&mnbRmats,dakYulViexQltq1*gjcW{nTocz}_qnvw7)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!lotlw8080k2dd~`ijn/ampgjl'noeSn`{r/efjZtcWjd~R~cur0-fibXzmUhby|Ppmwp6*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"m`uov?2;1d3geyajka.blwfim(oldTocz}.fgm[wbXkg~yS}bzs3,ahaYulViexQltq1+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#naznu>4:2ehhzdmnb#matcnh+bciWjd~#ijn^pg[fhszVzgy~#lcd^pg[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR?8b:llvhabf'iexobd/fgm[fhsz'mnbR|k_blwvZvk}z8%najPre]`jqtXxex>"ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*eh}g~T>:l4nnpnc`h)kg~i`f!heo]`jqt)oldT~iQlnup\tist:'hghR|k_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|V9h0bb|bgdl-gkredb%licQlnup-c`hXzmUhby|Ppmwp6+dklVxoSn`{r^roqv4(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmpZ30j2dd~`ijn/ampgjl'noeSn`{r/efjZtcWjd~R~cur0-fibXzmUhby|Ppmwp6*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"m`uov\22dhhzdmnb#matcnh+bciWjd~#ijn^pg[fhszVzgy~#lcd^pg[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR79e:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwv*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"Clotlw[firf}Uhu1>16d9mkwk`mg$hbylck.efjZei|{$licQxr^ampw)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Tot2>>638jjtjold%oczmlj-dakYdf}x%kh`Pws]`jqt(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz MbmvjqYdg|dSnw31?]qp3c^pw2`=ig{glic lnu`oo*abfViex heo]tvZei|{%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPcx>6:277=:7ca}mfgm*fhsjea$kh`Pcovq*bciW~xTocz}/fgm[goiWjdSya.ckm[fhsW}e{#jka_cq`[goiWjd"obk_ckm[fhs'DidyczPcnwmpZe~4?4T~y8j;omqibci&jdnae gdl\gkru&noeSz|Pcovq+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vir0:081:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwv*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"Clotlw[firf}Uhu191_sv5a>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhsz&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.O`kphsWje~byQly=:=34=ig{glic lnu`oo*abfViex heo]tvZei|{%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPcx>;:Zts?<1eccheo,`jqdkc&mnbRmats,dakYpzViex!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\hpr;87UBB[Q?6g9mkwk`mg$hbylck.efjZei|{$licQxr^ampw)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Ttb|31?4e?kiuenoe"n`{bmi,c`hXkg~y"jka_vp\gkru'noeSoga_blw[qiw&kceSn`{_ums+bciWkyhSoga_blw*gjcWkceSn`{/LalqkrXkfexRv`r=0=2c=ig{glic lnu`oo*abfViex heo]tvZei|{%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPxnp?7;0a3geyajka.blwfim(oldTocz}.fgm[rtXkg~y#jka_ckm[fhsW}e{"oga_blw[qiw'noeSo}l_ckm[fhs&kfoSoga_blw+Heh}g~Tob{at^zlv929>o1eccheo,`jqdkc&mnbRmats,dakYpzViex!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\|jt;=7hhzdmnb#matcnh+bciWjd~#ijn^uq[fhsz&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.alqkrX:?90bb|bgdl-gkredb%licQlnup-c`hX{Uhby| gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR=93:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwv*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"m`uov\035hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~? gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Eje~byQlotlw[f;87=?7ca}mfgm*fhsjea$kh`Pcovq*bciW~xTocz}_qnvw4)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Tot2>>658jjtjold%oczmlj-dakYdf}x%kh`Pws]`jqtXxex="ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Kdg|dSnaznu]`}979W{~<86``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv7(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz MbmvjqYdg|dSnw32?54?kiuenoe"n`{bmi,c`hXkg~y"jka_vp\gkruWyf~hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~? gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Eje~byQlotlw[f;;7Uyx::4nnpnc`h)kg~i`f!heo]`jqt)oldT{Qlnup\tist9&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.O`kphsWje~byQly=6=32=ig{glic lnu`oo*abfViex heo]tvZei|{U{`x}>/fgm[goiWjdSya.ckm[fhsW}e{#jka_cq`[goiWjd"obk_ckm[fhs'DidyczPcnwmpZe~4=4T~y9;;omqibci&jdnae gdl\gkru&noeSz|Pcovq[ujr{8%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPcx>6:21hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~? gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Zly~`y2?>7`8jjtjold%oczmlj-dakYdf}x%kh`Pws]`jqtXxex="ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Tb{|f0<09b:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z;$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}692;l4nnpnc`h)kg~i`f!heo]`jqt)oldT{Qlnup\tist9&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.Pfwpjs4:4=n6``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv7(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz Rdqvhq:36?h0bb|bgdl-gkredb%licQlnup-c`hX{Uhby|Ppmwp5*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"\jstnw8081j2dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur3,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$^h}zlu>5:3dhhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~? gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Zly~`y27>7`8jjtjold%oczmlj-dakYdf}x%kh`Pws]`jqtXxex="ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Tb{|f04099:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z;$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|V:=56``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv7(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmpZ7112dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur3,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$ob{at^05=>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~? gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR=99:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z;$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|V>=56``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv7(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmpZ3112dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur3,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$ob{at^45=>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~? gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR999:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z;$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|V2=56``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv7(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmpZ?0<2dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur0,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$Anaznu]`kphsWjs7<39;;omqibci&jdnae gdl\gkru&noeSz|Pcovq[ujr{;%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPcx>2:21"ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Kdg|dSnaznu]`}929?>1eccheo,`jqdkc&mnbRmats,dakYpzViexQltq1+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vir090Pru57?kiuenoe"n`{bmi,c`hXkg~y"jka_vp\gkruWyf~?!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\g|:26>=0bb|bgdl-gkredb%licQlnup-c`hX{Uhby|Ppmwp6*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"Clotlw[firf}Uhu1;1_sv40>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Eje~byQlotlw[f;>7=<7ca}mfgm*fhsjea$kh`Pcovq*bciW~xTocz}_qnvw7)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Tot29>^pw31=ig{glic lnu`oo*abfViex heo]tvZei|{U{`x}=/fgm[goiWjdSya.ckm[fhsW}e{#jka_cq`[goiWjd"obk_ckm[fhs'DidyczPcnwmpZe~4>4<;6``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv4(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz MbmvjqYdg|dSnw37?]qp223:3dhhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Zly~`y2=>7`8jjtjold%oczmlj-dakYdf}x%kh`Pws]`jqtXxex>"ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*Tb{|f0>09b:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,V`urd}6?2;l4nnpnc`h)kg~i`f!heo]`jqt)oldT{Qlnup\tist:&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.Pfwpjs4<4=n6``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv4(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz Rdqvhq:16?h0bb|bgdl-gkredb%licQlnup-c`hX{Uhby|Ppmwp6*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"\jstnw8281j2dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur0,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$^h}zlu>;:3dhhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR>99:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|V;=56``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv4(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmpZ4112dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur0,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$ob{at^15=>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR:99:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|V?=56``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv4(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmpZ0112dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur0,c`hXj`dToczPtnr-flhXkg~Txb~ gdl\fveXj`dTocz!bmf\flhXkg~$ob{at^55=>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~< gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR699:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z8$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|V33:6``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv5)jenT{Qlnup\tist;&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.O`kphsWje~byQly=2=<3=ig{glic lnu`oo*abfViex heo]tvZei|{U{`x}<.cng[rtXkg~yS}bzs2-dakYeagUhbyQ{oq,amkYdf}Uc}!heo]awfYeagUhby mle]amkYdf}%Fob{at^alqkrXkp6:2574nnpnc`h)kg~i`f!heo]`jqt)oldT{Qlnup\tist;'hghRy}_blwvZvk}z9$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,Ifirf}Uhcx`{_b{?5;Yu|1<0bb|bgdl-gkredb%licQlnup-c`hX{Uhby|Ppmwp7+dklV}ySn`{r^roqv5(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz MbmvjqYdg|dSnw32?::?kiuenoe"n`{bmi,c`hXkg~y"jka_vp\gkruWyf~> mle]tvZei|{U{`x}hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Ghcx`{_bmvjqYdq5>5445aosodak(df}hgg"ijn^ampw(`mgU|~Rmats]shpu4&kfoSz|Pcovq[ujr{:%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPcx>7:Zts0?1eccheo,`jqdkc&mnbRmats,dakYpzViexQltq0*gjcW~xTocz}_qnvw6)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Tot2:>9;8jjtjold%oczmlj-dakYdf}x%kh`Pws]`jqtXxex?#lcd^uq[fhszVzgy~= gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(Eje~byQlotlw[f;=7Uyx584nnpnc`h)kg~i`f!heo]`jqt)oldT{Qlnup\tist;'hghRy}_blwvZvk}z9$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,Ifirf}Uhcx`{_b{?2;>>3geyajka.blwfim(oldTocz}.fgm[rtXkg~yS}bzs2,ahaYpzViexQltq0+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vir0;0Pru:5?kiuenoe"n`{bmi,c`hXkg~y"jka_vp\gkruWyf~> mle]tvZei|{U{`x}4356``rlefj+ei|kf`#jka_blwv+abfV}ySn`{r^roqv5)jenT{Qlnup\tist;&mnbRlfn^ampZrhx'hbbRmat^vlt*abfVhxoRlfn^amp+dklVhbbRmat.O`kphsWje~byQly=5=[wr?>2dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur1-fibX{Uhby|Ppmwp7*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"Clotlw[firf}Uhu161889mkwk`mg$hbylck.efjZei|{$licQxr^ampwYwd|y8"obk_vp\gkruWyf~>!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\g|:?6Vx4i5aosodak(df}hgg"ijn^ampw(`mgU|~Rmats]shpu4&kfoSz|Pcovq[ujr{:%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPltv?4;YNF_U;4:5aosodak(df}hgg"ijn^ampw(`mgU|~Rmats]shpu4&kfoSz|Pcovq[ujr{:%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-Ngjsi|VidyczPxnp?5;>03geyajka.blwfim(oldTocz}.fgm[rtXkg~yS}bzs2,ahaYpzViexQltq0+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vrd~1<1869mkwk`mg$hbylck.efjZei|{$licQxr^ampwYwd|y8"obk_vp\gkruWyf~>!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)JkfexRm`uov\|jt;;72<7ca}mfgm*fhsjea$kh`Pcovq*bciW~xTocz}_qnvw6(edmU|~Rmats]shpu4'noeSoga_blw[qiw&kceSn`{_ums+bciWkyhSoga_blw*gjcWkceSn`{/LalqkrXkfexRv`r=6=<2=ig{glic lnu`oo*abfViex heo]tvZei|{U{`x}<.cng[rtXkg~yS}bzs2-dakYeagUhbyQ{oq,amkYdf}Uc}!heo]awfYeagUhby mle]amkYdf}%Fob{at^alqkrXpfx79368;omqibci&jdnae gdl\gkru&noeSz|Pcovq[ujr{:$i`iQxr^ampwYwd|y8#jka_ckm[fhsW}e{"oga_blw[qiw'noeSo}l_ckm[fhs&kfoSoga_blw+Heh}g~Tob{at^zlv9090>1eccheo,`jqdkc&mnbRmats,dakYpzViexQltq0*gjcW~xTocz}_qnvw6)`mgUiecQlnu]wku(eagUhbyQ{oq-dakYe{jUiecQlnu,ahaYeagUhby!BcnwmpZeh}g~Ttb|37?:4?kiuenoe"n`{bmi,c`hXkg~y"jka_vp\gkruWyf~> mle]tvZei|{U{`x}f3geyajka.blwfim(oldTocz}.fgm[rtXkg~yS}bzs2,ahaYpzViexQltq0+bciWkceSn`{_ums*goiWjdSya/fgm[gudWkceSn`{.cng[goiWjd#@m`uov\gjsi|Vrd~171_sv4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<1<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<0<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<3<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<2<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<5<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<4<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<7<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<6<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<9<4`>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&Xnxb{<8<4g>hhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&idycz30?5`?kiuenoe"n`{bmi,c`hXkg~y"jka_vp\gkruWyf~> mle]tvZei|{U{`x}>6a8jjtjold%oczmlj-dakYdf}x%kh`Pws]`jqtXxex?#lcd^uq[fhszVzgy~= gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfex1<17b9mkwk`mg$hbylck.efjZei|{$licQxr^ampwYwd|y8"obk_vp\gkruWyf~>!heo]amkYdf}Uc} mio]`jqYsgy%licQmsb]amkYdf}$i`iQmio]`jq)dg|d0>08c:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z9%najPws]`jqtXxex?"ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*eh}g~7839l;omqibci&jdnae gdl\gkru&noeSz|Pcovq[ujr{:$i`iQxr^ampwYwd|y8#jka_ckm[fhsW}e{"oga_blw[qiw'noeSo}l_ckm[fhs&kfoSoga_blw+firf}6>2:m4nnpnc`h)kg~i`f!heo]`jqt)oldT{Qlnup\tist;'hghRy}_blwvZvk}z9$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|5<5;n5aosodak(df}hgg"ijn^ampw(`mgU|~Rmats]shpu4&kfoSz|Pcovq[ujr{:%licQmio]`jqYsgy$iecQlnu]wku)`mgUinQmio]`jq(edmUiecQlnu-`kphs4>46>h0bb|bgdl-gkredb%licQlnup-c`hX{Uhby|Ppmwp7+dklV}ySn`{r^roqv5(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmpZ60j2dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur1-fibX{Uhby|Ppmwp7*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"m`uov\52dhhzdmnb#matcnh+bciWjd~#ijn^uq[fhszVzgy~=!bmf\swYdf}xT|a{|3.efjZdnfViexRz`p/`jjZei|V~d|"ijn^`pgZdnfViex#lcd^`jjZei|&idyczP36`8jjtjold%oczmlj-dakYdf}x%kh`Pws]`jqtXxex?#lcd^uq[fhszVzgy~= gdl\flhXkg~Txb~!bhl\gkrX|fz$kh`Pbra\flhXkg~%najPbhl\gkr(kfexR:8b:llvhabf'iexobd/fgm[fhsz'mnbRy}_blwvZvk}z9%najPws]`jqtXxex?"ijn^`jjZei|V~d|#lfn^ampZrhx&mnbRl|c^`jjZei|'hghRlfn^amp*eh}g~T9:l4nnpnc`h)kg~i`f!heo]`jqt)oldT{Qlnup\tist;'hghRy}_blwvZvk}z9$kh`Pbhl\gkrX|fz%nd`Pcov\pjv(oldTn~mPbhl\gkr)jenTnd`Pcov,gjsi|V<h0bb|bgdl-gkredb%licQlnup-c`hX{Uhby|Ppmwp7+dklV}ySn`{r^roqv5(oldTnd`Pcov\pjv)j`dToczPtnr,c`hXjziTnd`Pcov-fibXj`dTocz cnwmpZ>0j2dd~`ijn/ampgjl'noeSn`{r/efjZquWjd~R~cur1-fibX{Uhby|Ppmwp7*abfVhbbRmat^vlt+dnfViexRz`p.efjZdtkVhbbRmat/`o`ZdnfViex"m`uov\=6>399mkwk`mg$m`obd/bnhijb(kq$yhu!Bxnp\tkruWniTtb|?013\V`urd};846``rlefj+`kjea$oaeboe-`|+tcp&GscQnup\cfYg{:;64nnpnc`h)nehgg"mcklmg+f~)zmr$Aua}_qlwvZadWqey<=>7_Sgpqir6:=1eccheo,ehgjl'jf`abj cy,q`})WF]XTNR>=4:llvhabf'lgnae cminka)dp'xot"^ATS]A[4433geyajka.gnahn)ddbgdh"mw.sf{+UHSZVHT>?:4nnpnc`h)nehgg"mcklmg+f~)zmr$\CZ]_C]061=ig{glic ilcnh+fjlefn$ou }dy-SJQTXJV>986``rlefj+`kjea$oaeboe-`|+tcp&ZEX_QM_407?kiuenoe"kbmlj-`hnkhl&is"jw/QLWVZDX>;>0bb|bgdl-bidkc&igg`ak/bz-va~(XG^YSOQ8259mkwk`mg$m`obd/bnhijb(kq$yhu!_NUP\FZ>5<2dd~`ijn/dofim(keafci!lx/pg|*VI\[UIS4?23`8jjtjold%jalck.aoohic'jr%~iv POVQ[GYg{:;o5aosodak(adkf`#nbdmnf,g}(ulq%[BY\PB^zlv567;;8j7ca}mfgm*cjedb%h`fc`d.a{*wb'YD_^RLPxnp34525j2dd~`ijn/dofim(keafci!lx/pg|*VI\[UISua}012757g?040a?kiuenoe"kbmlj-`hnkhl&is"jw/QLWVZDXpfx;<=;>2`9mkwk`mg$m`obd/bnhijb(kq$yhu!_NUP\FZ~hz9:;:>>4nnpnc`h)nehgg"mcklmg+f~)zmr$\CZ]_C]{kw678?;:S^Y?319mkwk`mg$m`obd/bnhijb(kq$yhu!_NUP\FZ~hz9:;:hhzdmnb#hcbmi,gimjgm%ht#|kx.RMPWYEWqey<=>910]PS74e3geyajka.gnahn)ddbgdh"mw.sf{+UHSZVHTtb|?01416d=ig{glic ilcnh+fjlefn$ou }dy-SJQTXJVrd~=>?73`8jjtjold%jalck.aoohic'jr%~iv POVQ[GYg{:;<:?=a:llvhabf'lgnae cminka)dp'xot"^ATS]A[}iu89:3>o5aosodak(adkf`#nbdmnf,g}(ulq%[BY\PB^zlv567088=7ca}mfgm*cjedb%h`fc`d.a{*wb'yd~Ril<1<12>hhzdmnb#hcbmi,gimjgm%ht#|kx.rmpwY`k5;5>;5aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb>1:702dd~`ijn/dofim(keafci!lx/pg|*vi|{Ulo1;1279mkwk`mg$m`obd/bnhijb(kq$yhu!nup\cf:16;<0bb|bgdl-bidkc&igg`ak/bz-va~(xg~ySjm37?05?kiuenoe"kbmlj-`hnkhl&is"jw/qlwvZad4149:6``rlefj+`kjea$oaeboe-`|+tcp&zexQhc=;=60=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojU;>85aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]260=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojU9>85aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]060=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojU?>85aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]660=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojU=>85aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]460=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojU3>85aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]:6<=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojUs>1>1289mkwk`mg$m`obd/bnhijb(kq$yhu!nup\cfY:5;5>45aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]{6949:01eccheo,ehgjl'jf`abj cy,q`})wf}xTknQw2=1=6<=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojUs>1:1289mkwk`mg$m`obd/bnhijb(kq$yhu!nup\cfY:5?5>45aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]{6909:01eccheo,ehgjl'jf`abj cy,q`})wf}xTknQw2=5=6<=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojUs>161289mkwk`mg$m`obd/bnhijb(kq$yhu!nup\cfY:535>55aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]{6Z6502dd~`ijn/dofim(keafci!lx/pg|*vi|{UloRv=_00;?kiuenoe"kbmlj-`hnkhl&is"jw/qlwvZadWq8T>?64nnpnc`h)nehgg"mcklmg+f~)zmr$|cz}_fa\|7Y4:11eccheo,ehgjl'jf`abj cy,q`})wf}xTknQw2^61<>hhzdmnb#hcbmi,gimjgm%ht#|kx.rmpwY`kVr9S8<7;omqibci&ofi`f!lljol`*e&{ns#}`{r^e`[}4X>;20bb|bgdl-bidkc&igg`ak/bz-va~(xg~ySjmPx3]46==ig{glic ilcnh+fjlefn$ou }dy-sjqtXojUs>R6=8:llvhabf'lgnae cminka)dp'xot"~ats]dgZ~5W0837ca}mfgm*cjedb%h`fc`d.a{*wb'yd~Ril_y>3:7>3:8jjtjold%jalck.aoohic'jr%~iv povq[beXp5?5>55aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]{838502dd~`ijn/dofim(keafci!lx/pg|*vi|{UloRv37?0;?kiuenoe"kbmlj-`hnkhl&is"jw/qlwvZadWq632?64nnpnc`h)nehgg"mcklmg+f~)zmr$|cz}_fa\|9?9:>1eccheo,ehgjl'jf`abj cy,q`})wf}xTknQw_104?kiuenoe"kbmlj-`hnkhl&is"jw/qlwvZadWqU:>:5aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]{[7403geyajka.gnahn)ddbgdh"mw.sf{+uhszVmhSuQ<269mkwk`mg$m`obd/bnhijb(kq$yhu!nup\cfYW=8<7ca}mfgm*cjedb%h`fc`d.a{*wb'yd~Ril_y]662=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojUsS;<8;omqibci&ofi`f!lljol`*e&{ns#}`{r^e`[}Y0:>1eccheo,ehgjl'jf`abj cy,q`})wf}xTknQw_904?kiuenoe"kbmlj-`hnkhl&is"jw/qlwvZadWqU2>o5aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]{kw67898i7ca}mfgm*cjedb%h`fc`d.a{*wb'yd~Ril_ymq4566:k1eccheo,ehgjl'jf`abj cy,q`})wf}xTknQwos23474e3geyajka.gnahn)ddbgdh"mw.sf{+uhszVmhSua}01206g=ig{glic ilcnh+fjlefn$ou }dy-sjqtXojUsc>?050a?kiuenoe"kbmlj-`hnkhl&is"jw/qlwvZadWqey<=>:2c9mkwk`mg$m`obd/bnhijb(kq$yhu!nup\cfYg{:;<;o5aosodak(adkf`#nbdmnf,g}(ulq%{by|Pgb]{kw6781937ca}mfgm*cjedb%h`fc`d.a{*rt'Drd~R~ats]dgZ~hz9:;399mkwk`mg$m`obd/bnhijb(kq$|~u!Bxnp\tkruWniTtb|?010\V`urd};846``rlefj+`kjea$oaeboe-`|+qup&GscQnup\cfYg{:;<>Q]erwop45?3geyajka.gnahn)ddbgdh"mw.vp{+H~hzVzexQhc^zlv567UYi~{ct01;?kiuenoe"kbmlj-`hnkhl&is"z|w/LzlvZvi|{UloRv`r1230bb|bgdl-bidkc&igg`ak/bz-sw~(XG^YSOQ;259mkwk`mg$m`obd/bnhijb(kq$|~u!_NUP\FZ35<2dd~`ijn/dofim(keafci!lx/uq|*VI\[UIS;<;;omqibci&ofi`f!lljol`*e&~xs#]@[R^@\37295aosodak(adkf`#nbdmnf,g}(pzq%[BY\PB^;1e>hhzdmnb#hcbmi,gimjgm%ht#y}x.RMPWYEWqey<=>?2c9mkwk`mg$m`obd/bnhijb(kq$|~u!_NUP\FZ~hz9:;<<?33`8jjtjold%jalck.aoohic'jr%{v POVQ[GYg{:;<><=a:llvhabf'lgnae cminka)dp'}yt"^ATS]A[}iu89:?>o5aosodak(adkf`#nbdmnf,g}(pzq%[BY\PB^zlv567<88j7ca}mfgm*cjedb%h`fc`d.a{*rt'YD_^RLPxnp34535j2dd~`ijn/dofim(keafci!lx/uq|*VI\[UISua}012657g?0713?kiuenoe"kbmlj-`hnkhl&is"z|w/QLWVZDXpfx;<=8>1^QT466?0732[VQ6;91eccheo,ehgjl'jf`abj cy,tv})WF]XTNRv`r123247X[^89n6``rlefj+`kjea$oaeboe-`|+qup&ZEX_QM_ymq4561:;k0bb|bgdl-bidkc&igg`ak/bz-sw~(XG^YSOQwos23424e3geyajka.gnahn)ddbgdh"mw.vp{+UHSZVHTtb|?01526d=ig{glic ilcnh+fjlefn$ou xry-SJQTXJVrd~=>?83`8jjtjold%jalck.aoohic'jr%{v POVQ[GYg{:;<5?=6:llvhabf'lgnae cminka)dp'}yt"~ats]dg969:?1eccheo,ehgjl'jf`abj cy,tv})wf}xTkn2>>348jjtjold%jalck.aoohic'jr%{v povq[be;:78=7ca}mfgm*cjedb%h`fc`d.a{*rt'yd~Ril<2<12>hhzdmnb#hcbmi,gimjgm%ht#y}x.rmpwY`k5>5>;5aosodak(adkf`#nbdmnf,g}(pzq%{by|Pgb>6:702dd~`ijn/dofim(keafci!lx/uq|*vi|{Ulo161279mkwk`mg$m`obd/bnhijb(kq$|~u!nup\cf:>6;?0bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmP0378jjtjold%jalck.aoohic'jr%{v povq[beX9;?0bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmP2378jjtjold%jalck.aoohic'jr%{v povq[beX;;?0bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmP4378jjtjold%jalck.aoohic'jr%{v povq[beX=;?0bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmP6378jjtjold%jalck.aoohic'jr%{v povq[beX?;?0bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmP8378jjtjold%jalck.aoohic'jr%{v povq[beX1;30bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmPx3>3:7?>3;8jjtjold%jalck.aoohic'jr%{v povq[beXp;692?74nnpnc`h)nehgg"mcklmg+f~){r$|cz}_fa\|7:46;30bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmPx3>7:7?3;8jjtjold%jalck.aoohic'jr%{v povq[beXp;6=2?74nnpnc`h)nehgg"mcklmg+f~){r$|cz}_fa\|7:06;30bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmPx3>;:7?3:8jjtjold%jalck.aoohic'jr%{v povq[beXp;U;>55aosodak(adkf`#nbdmnf,g}(pzq%{by|Pgb]{6Z7502dd~`ijn/dofim(keafci!lx/uq|*vi|{UloRv=_30;?kiuenoe"kbmlj-`hnkhl&is"z|w/qlwvZadWq8T??64nnpnc`h)nehgg"mcklmg+f~){r$|cz}_fa\|7Y3:11eccheo,ehgjl'jf`abj cy,tv})wf}xTknQw2^71<>hhzdmnb#hcbmi,gimjgm%ht#y}x.rmpwY`kVr9S;<7;omqibci&ofi`f!lljol`*e&~xs#}`{r^e`[}4X?;20bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmPx3];6==ig{glic ilcnh+fjlefn$ou xry-sjqtXojUs>R7=8:llvhabf'lgnae cminka)dp'}yt"~ats]dgZ~;87837ca}mfgm*cjedb%h`fc`d.a{*rt'yd~Ril_y>2:7>3:8jjtjold%jalck.aoohic'jr%{v povq[beXp5<5>55aosodak(adkf`#nbdmnf,g}(pzq%{by|Pgb]{828502dd~`ijn/dofim(keafci!lx/uq|*vi|{UloRv38?0;?kiuenoe"kbmlj-`hnkhl&is"z|w/qlwvZadWq622?94nnpnc`h)nehgg"mcklmg+f~){r$|cz}_fa\|Z65?2dd~`ijn/dofim(keafci!lx/uq|*vi|{UloRvP1358jjtjold%jalck.aoohic'jr%{v povq[beXpV89;6``rlefj+`kjea$oaeboe-`|+qup&zexQhc^z\771hhzdmnb#hcbmi,gimjgm%ht#y}x.rmpwY`kVrT;?94nnpnc`h)nehgg"mcklmg+f~){r$|cz}_fa\|Z>5?2dd~`ijn/dofim(keafci!lx/uq|*vi|{UloRvP93`8jjtjold%jalck.aoohic'jr%{v povq[beXpfx;<=>=b:llvhabf'lgnae cminka)dp'}yt"~ats]dgZ~hz9:;=?l4nnpnc`h)nehgg"mcklmg+f~){r$|cz}_fa\|jt78989n6``rlefj+`kjea$oaeboe-`|+qup&zexQhc^zlv567;;h0bb|bgdl-bidkc&igg`ak/bz-sw~(xg~ySjmPxnp34525j2dd~`ijn/dofim(keafci!lx/uq|*vi|{UloRv`r12317dhhzdmnb#hcbmi,gimjgm%ht#y}x.rmpwY`kVrd~=>?73`8jjtjold%jalck.aoohic'jr%{v povq[beXpfx;<=6=0:llvhabf'lgnae rqpfijb(ZHGT^IQJN005?kiuenoe"kbmlj-wlwkhl&kn`bifc.GNTQ_Xag|9h6``rlefj+`kjea$xe|boe-baii`aj%NA]ZV_hlu5ZOI^V:9n6``rlefj+`kjea$xe|boe-baii`aj%j``a|t^gntqXa:80bb|bgdl-bidkc&~c~`ak/`gokbod'hffc~zPelrw}ZoXg{:;<==<;omqibci&ofi`f!{hsol`*gbdfmbo"ocmnqw[`kw|pUbSb|?01226a=ig{glic ilcnh+qnuefn$mhb`gha,gdc6'jky~t`jt=2=6a=ig{glic ilcnh+qnuefn$mhb`gha,gdc6'jky~t`jt=3=6a=ig{glic ilcnh+qnuefn$mhb`gha,gdc6'jky~t`jt=0=6a=ig{glic ilcnh+qnuefn$mhb`gha,gdc6'jky~t`jt=1=7`=ig{glic ilcnh+qnuefn$mhb`gha,gdc6'l{hm~k!bhe-iiv\8T$my bfhppp6dhhzdmnb#hcbmi,pmtjgm%jiaahib-`e`7(mxijh mif,nhu]5U'gbh#cly2`8jjtjold%jalck.vkvhic'hogcjgl/bcf5*cvkhyn"ogh.lns_6[)e`n%anw>358jjtjold%jalck.vkvhic'hogcjgl/bcf5*p64;49;6``rlefj+`kjea$xe|boe-baii`aj%hmh? v0>0:71?13d8jjtjold%jalck.vkvhic'hogcjgl/bcf5*p6W8Ujbi>?0131b>hhzdmnb#hcbmi,pmtjgm%jiaahib-`e`7(~8U9Sl`k012357`Qnne234575n2dd~`ijn/dofim(|axfci!nemmdmf)dil;$z"mnrs{maq:76;n0bb|bgdl-bidkc&~c~`ak/`gokbod'jkn>"mnrs{maq:66;n0bb|bgdl-bidkc&~c~`ak/`gokbod'jkn>"mnrs{maq:56;n0bb|bgdl-bidkc&~c~`ak/`gokbod'jkn>"mnrs{maq:46:o0bb|bgdl-bidkc&~c~`ak/`gokbod'jkn>"k~c`qf*go`&df{W=S!frv-icou{}9i7ca}mfgm*cjedb%dc`d.cfhjank&iji?!jqbcpa+dno'gg|V?R.lkg*he~;k1eccheo,ehgjl'}byabj adnlcle(kho9#hlarg-fla)eezP>P bie,ng|5e3geyajka.gnahn)s`{gdh"ojlnejg*efm;%n}no|e/`jc+kkxR9V"`gk.laz7g=ig{glic ilcnh+qnuefn$mhb`gha,gdc5'l{hm~k!bhe-iiv\:5aosodak(adkf`#yf}mnf,e`jho`i$olk=/w3?5;403geyajka.gnahn)s`{gdh"ojlnejg*efm;%}=1<1269mkwk`mg$m`obd/ujqijb(ilfdkdm c`g1+s7;;78<7ca}mfgm*cjedb%dc`d.cfhjank&iji?!y1=6=6c=ig{glic ilcnh+qnuefn$mhb`gha,gdc5';Tk5aosodak(adkf`#yf}mnf,e`jho`i$olk=/w3\0Zgil9:;<<<:;omqibci&ofi`f!{hsol`*gbdfmbo"m`mq]ba4423geyajka.gnahn)s`{gdh"ojlnejg*eheyUji?<:;omqibci&ofi`f!{hsol`*gadfmbo"HZLM]jjs4d3geyajka.gnahn)s`{gdh"oilnejg*@RDEUbb{?PIOT\47g/ds`evc)j`m%aa~T1\,nma(jkp9i7ca}mfgm*cjedb%dc`d.cehjank&ijjV"`gk.laz62=ig{glic ilcnh+qnuefn$mkb`gha,gd`6';7<3<8;omqibci&ofi`f!{hsol`*gadfmbo"mnf0-u5979:>1eccheo,ehgjl'}byabj agnlcle(khl:#{?32?04?kiuenoe"kbmlj-wlwkhl&km`bifc.abb4)q9595>:5aosodak(adkf`#yf}mnf,ecjho`i$olh>/w3?0;4a3geyajka.gnahn)s`{gdh"oilnejg*efn8%}=R>Paof34566:o1eccheo,ehgjl'}byabj agnlcle(khl:#{?P1^cm`567888m7ca}mfgm*cjedb%dc`d.cehjank&ijjk5aosodak(adkf`#yf}mnf,ecjho`i$olh>/w3\7Zgil9:;<<>2e9mkwk`mg$m`obd/ujqijb(iofdkdm c`d1+fguzpdnx1>12e9mkwk`mg$m`obd/ujqijb(iofdkdm c`d1+fguzpdnx1?12e9mkwk`mg$m`obd/ujqijb(iofdkdm c`d1+fguzpdnx1<12e9mkwk`mg$m`obd/ujqijb(iofdkdm c`d1+fguzpdnx1=13d9mkwk`mg$m`obd/ujqijb(iofdkdm c`d1+`wdizo%ndi!mmrX4X(a{}$fjd||t2`8jjtjold%jalck.vkvhic'hlgcjgl/bce6*cvkhyn"ogh.lns_4[)e`n%anwl4nnpnc`h)nehgg"zgrlmg+d`kgnch#noi2.grgdub&kcl"`b[2_-ilb)ejs8n6``rlefj+`kjea$xe|boe-bbii`aj%hmk< epabw`(ean$f`}U;]/oj`+kdq;=0bb|bgdl-bidkc&~c~`ak/`dokbod'jkm>"x><1<13>hhzdmnb#hcbmi,pmtjgm%jjaahib-`ec4(~86:2?94nnpnc`h)nehgg"zgrlmg+d`kgnch#noi2.t28785?2dd~`ijn/dofim(|axfci!nfmmdmf)dio8$z<2<>358jjtjold%jalck.vkvhic'hlgcjgl/bce6*p64=49j6``rlefj+`kjea$xe|boe-bbii`aj%hmk< v0]3[dhc89:;=?h4nnpnc`h)nehgg"zgrlmg+d`kgnch#noi2.t2[4Yffm:;<=?=f:llvhabf'lgnae tipnka)fneelen!lag0,r4Y5Whdo<=>?13d8jjtjold%jalck.vkvhic'hlgcjgl/bce6*p6W:Ujbi>?0131b>hhzdmnb#hcbmi,pmtjgm%jjaahib-`ec4(~8U?Sl`k01235733:7g/bcqv|hb|595?o5aosodak(adkf`#yf}mnf,aii`aj%h="k~c`qf*go`&df{W=S!frv-icou{}937ca}mfgm*cjedb%dc`d.gokbod'j;$i|mnsd,amb(jdyQ:Q#cfd/o`}6>Paof34566:j1eccheo,ehgjl'}byabj emmdmf)d9&|:SRoad123444d3geyajka.gnahn)s`{gdh"kcofk`+f7(~8U8Sl`k012357eTmcj?01226d=ig{glic ilcnh+qnuefn$iaahib-`6*efz{seiy2?>3c8jjtjold%jalck.vkvhic'lfdkdm c3-`ewt~fl~7=3"k~c`qf*go`&df{W>S!mhf-if402dd~`ijn/dofim(|axfci!jlnejg*e5'l{hm~k!bhe-iiv\0bb|bgdl-bidkc&~c~`ak/dnlcle(k;%}=1?1259mkwk`mg$m`obd/ujqijb(meelen!l2.t28785<2dd~`ijn/dofim(|axfci!jlnejg*e5';7?3<;;omqibci&ofi`f!{hsol`*ckgnch#n< v0>7:7e?0131g>hhzdmnb#hcbmi,pmtjgm%n`bifc.a1+s7X:Vkeh=>?000`?kiuenoe"kbmlj-wlwkhl&ogcjgl/b0,r4Y4Whdo<=>?13a8jjtjold%jalck.vkvhic'lfdkdm c3-u5Z2Xign;<=>>259mkwk`mg$m`obd/ujqijb(meelen!lolr2kpr5<2dd~`ijn/dofim(|axfci!jlnejg*ehey8dyy<8;omqibci&ofi`f!{hsol`*`kgnch#K[CL^LLJWC@:h1eccheo,ehgjl'}byabj fmmdmf)A]EFTBB@]EF]j5703l4nnpnc`h)nehgg"zgrlmg+cjho`i$obc1.grgdub&kcl"`b[3_-ilb)ejs8n6``rlefj+`kjea$xe|boe-ehjank&ida}? epabw`(ean$f`}U<]/oj`+kdq:h0bb|bgdl-bidkc&~c~`ak/gnlcle(kfg{="k~c`qf*go`&df{W9S!mhf-if5?2dd~`ijn/dofim(|axfci!ilnejg*ehey;$z<2?>358jjtjold%jalck.vkvhic'ofdkdm cnos5*p64849;6``rlefj+`kjea$xe|boe-ehjank&ida}? v0>1:710=7:llvhabf'lgnae tipnka)adfmbo"m`mq3,r4:36;l0bb|bgdl-bidkc&~c~`ak/gnlcle(kfg{="x>_1]bja6789;9j6``rlefj+`kjea$xe|boe-ehjank&ida}? v0]2[dhc89:;=?h4nnpnc`h)nehgg"zgrlmg+cjho`i$obc1.t2[7Yffm:;<=?=f:llvhabf'lgnae tipnka)adfmbo"m`mq3,r4Y4Whdo<=>?13d8jjtjold%jalck.vkvhic'ofdkdm cnos5*p6W=Ujbi>?0131`>hhzdmnb#hcbmi,pmtjgm%m`bifc.aliu4(khxyuck{<1<1`>hhzdmnb#hcbmi,pmtjgm%m`bifc.aliu4(khxyuck{<0<1`>hhzdmnb#hcbmi,pmtjgm%m`bifc.aliu4(khxyuck{<3<1`>hhzdmnb#hcbmi,pmtjgm%m`bifc.aliu4(khxyuck{<2<0a>hhzdmnb#hcbmi,pmtjgm%m`bifc.aliu4(mxijh mif,nhu]7U'lxx#ciisqw7g=ig{glic ilcnh+qnuefn$jaahib-`khv5'l{hm~k!bhe-iiv\9T$fei bcx1a?kiuenoe"kbmlj-wlwkhl&lgcjgl/bmnt7)byjkxi#lfg/oot^4Z&dco"`mv3c9mkwk`mg$m`obd/ujqijb(neelen!lolr1+`wdizo%ndi!mmrX7X(jam$fot=m;omqibci&ofi`f!{hsol`*`kgnch#nabp3-fufgtm'hbk#ccpZ6^*hoc&dir>:5aosodak(adkf`#yf}mnf,bii`aj%hc`~=/w3?4;403geyajka.gnahn)s`{gdh"hcofk`+fijx;%}=1?1269mkwk`mg$m`obd/ujqijb(neelen!lolr1+s7;:78<7ca}mfgm*cjedb%dc`d.dokbod'jef|?!y1=1=62=ig{glic ilcnh+qnuefn$jaahib-`khv5';783>2g9mkwk`mg$m`obd/ujqijb(neelen!lolr1+s7X9Vkeh=>?000e?kiuenoe"kbmlj-wlwkhl&lgcjgl/bmnt7)q9V8Tmcj?01226c=ig{glic ilcnh+qnuefn$jaahib-`khv5';T?Road123444a3geyajka.gnahn)s`{gdh"hcofk`+fijx;%}=R:Paof34566:?1eccheo,ehgjl'}byabj fmmdmf)dgdzTjxbc1348jjtjold%jalck.vkvhic'ofdkdm cnos[cskd;8;7ca}mfgm*cjedb%||kboe-QEHYPZVOE=<94nnpnc`h)aghgg"|k_sqw[cd6i2dd~`ijn/kmfim(zmUyyQfnu]35==ig{glic fncnh+wbXzz~T~hi>7:llvhabf'cenae ws]qwqYaj820bb|bgdl-mkdkc&}yS}{_sgd2<=ig{glic bel`oo*djmd$iaj mmf]jjvr(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjdfe{W=S!r`o-v*p3&{kf#^J_.RKMCICXX[CF"^J_1b9mkwk`mg$fi`lck.vntZtfeVxoSh`>d:llvhabf'gnaobd/uos[wgjW{nTic?7;ntfvcjhh1{~biPelrw}42vugnUna}zv_ujqavn/: ;?7}|`g^gntqX|axne&<)068twi`Wlg{xtQ{hsgpl-2.9=1{~biPelrw}Zrozlyc$8'>4:rqkbYbey~rSyf}erj+2,733yxdkRkbpu{\pmtb{a"<%<:4psmd[`kw|pUdk|h):*51=wzfmTi`~{y^vkv`uo 0#:86~}of]fiur~W}byi~f30?37?uthoVof|ywPtipfwm:668>0|ah_dosp|Ys`{oxd1<1159svjaXmdzuRzgrdqk8686<2zycjQjmqvz[qnumzb783?;;qplcZcjx}sTxe|jsi>6:42vugnUna}zv_ujqavn;07;=7}|`g^gntqX|axne26:1<20>vugnUna}zv_ujqavn;17;i7}|`g^gntqX|axneQnsrgqp-6.9k1{~biPelrw}ZrozlycSl}|esv+5,7e3yxdkRkbpu{\pmtb{aUj~k}t)0*5g=wzfmTi`~{y^vkv`uoWhyxiz'3(3a?uthoVof|ywPtipfwmYf{zoyx%:&1c9svjaXmdzuRzgrdqk[dutm{~#9$?m;qplcZcjx}sTxe|jsi]bwvcu|!<"=o5rne\ahvsqV~c~h}g_`qpawr/? ;i7}|`g^gntqX|axneQnsrgqp->.9k1{~biPelrw}ZrozlycSl}|esv+=,7e3yxdkRkbpu{\pmtb{aUj~k}t=2=5g=wzfmTi`~{y^vkv`uoWhyxiz31?3a?uthoVof|ywPtipfwmYf{zoyx1<11c9svjaXmdzuRzgrdqk[dutm{~7?3?m;qplcZcjx}sTxe|jsi]bwvcu|5>5=o5rne\ahvsqV~c~h}g_`qpawr;=7;i7}|`g^gntqX|axneQnsrgqp9099k1{~biPelrw}ZrozlycSl}|esv?3;7e3yxdkRkbpu{\pmtb{aUj~k}t=:=5a=wzfmTi`~{y^vkv`uoWhyxiz39;2=5g=wzfmTi`~{y^vkv`uoWhyxiz39?3a?uthoVof|ywPtipfwmYimnki%>&1c9svjaXmdzuRzgrdqk[kc`i}o#=$?m;qplcZcjx}sTxe|jsi]mabgsm!8"=o5rne\ahvsqV~c~h}g_ogdeqc/; ;i7}|`g^gntqX|axneQaefcwa-2.9k1{~biPelrw}ZrozlycSckhaug+1,7e3yxdkRkbpu{\pmtb{aUeijo{e)4*5g=wzfmTi`~{y^vkv`uoWgolmyk'7(3a?uthoVof|ywPtipfwmYimnki%6&1c9svjaXmdzuRzgrdqk[kc`i}o#5$?m;qplcZcjx}sTxe|jsi]mabgsm5:5=o5rne\ahvsqV~c~h}g_ogdeqc;97;i7}|`g^gntqX|axneQaefcwa9499k1{~biPelrw}ZrozlycSckhaug?7;7e3yxdkRkbpu{\pmtb{aUeijo{e=6=5g=wzfmTi`~{y^vkv`uoWgolmyk35?3a?uthoVof|ywPtipfwmYimnki1811c9svjaXmdzuRzgrdqk[kc`i}o7;3?m;qplcZcjx}sTxe|jsi]mabgsm525=i5rne\ahvsqV~c~h}g_ogdeqc;13:5=o5rne\ahvsqV~c~h}g_ogdeqc;1730|ah_gwoh45)018twi`Wog`Rzgrdqk,7/6;2zycjQiumn\pmtb{a"8%<=4psmd[cskdV~c~h}g(5+27>vugnUmyabPtipfwm.2!890|ah_gwohZrozlyc$;'>3:rqkbYa}efTxe|jsi*4-45vugnUmyabPtipfwm:46890|ah_gwohZrozlyc090>3:rqkbYa}efTxe|jsi>6:45018twi`Wog`Rzgrdqk8=86=2zycjQiumn\pmtb{a626=0>3:rqkbYa}efTxe|jsi>::4ga:rqkbYa}efTxe|jsi]bwvcu|!8"=l5rne\bpjkW}byi~fParqfvq.4!8k0|ah_gwohZrozlycSl}|esv+0,7f3yxdkRhzlm]wlwct`Vkxh|{(4+2e>vugnUmyabPtipfwmYf{zoyx%8&1`9svjaXn|fgSyf}erj\evubz}"<%>0c8twi`Wog`Rzgrdqk[dutm{~7>3?n;qplcZ`rdeUdk|h^cpw`ts4:4:m6~}of]eqijX|axneQnsrgqp9299h1{~biPftno[qnumzbTm~}jru>6:4ga:rqkbYa}efTxe|jsi]bwvcu|525=n5rne\bpjkW}byi~fParqfvq:>294:m6~}of]eqijX|axneQnsrgqp9?99h1{~biPftno[qnumzbTbhintd*3-4ga:rqkbYa}efTxe|jsi]mabgsm!9"=l5rne\bpjkW}byi~fPndebp`.3!8k0|ah_gwohZrozlycSckhaug+1,7f3yxdkRhzlm]wlwct`Vdnklzj(7+2e>vugnUmyabPtipfwmYimnki%9&1`9svjaXn|fgSyf}erj\j`af|l"3%0c8twi`Wog`Rzgrdqk[kc`i}o7?3?n;qplcZ`rdeUdk|h^lfcdrb4=4:m6~}of]eqijX|axneQaefcwa9399h1{~biPftno[qnumzbTbhintd>5:4gc:rqkbYa}efTxe|jsi]mabgsm531<3?n;qplcZ`rdeUdk|h^lfcdrb404=7jPcmi24>tcWmkmRm`uov+4,773{nThlzn_bmvjq.6!8:0~iQkauc\gjsi|!8"==5}d^fbpdYdg|d$>'>0:pg[agsiVidycz'4(33?wbXlh~jSnaznu*6-46#:<6|k_ecweZeh}g~#4$??;sf\`drfWje~by&6)028vaYci}kTob{at=2=55=ulVnjxlQlotlw848682xoSio{a^alqkr;:7;;7jPd`vb[firf}682<>4re]geqgXkfex1:1119q`Zbf|hUhcx`{<4<24>tcWmkmRm`uov?2;773{nThlzn_bmvjq:068:0~iQkauc\gjsi|525=?5}d^fbpdYdg|d044?>028vaYci}kTob{at=;=1>tcWld=7jPrrv0?wus?2yieyk}r59pvvra3}xiz?Qcioi\bl`h:01~ox=_mkmoZ`nnfUmekaPgdlfvdrhzV|8S>Qwsu]2=>sillxm`by:;wcoma0<{Ujof84ws]`hn773~xThlzn_bmvjq.7!8:0{Qkauc\gjsi|!;"==5xr^fbpdYdg|d$?'>0:uq[agsiVidycz'3(33?rtXlh~jSnaznu*7-46<{UomyoPcnwmp-3.991|~Rjnt`]`kphs ?#:<6y}_ecweZeh}g~#;$??;vp\`drfWje~by&7)028swYci}kTob{at);*55=pzVnjxlQlotlw858682}ySio{a^alqkr;97;;7z|Pd`vb[firf}692<>4ws]geqgXkfex1=1119tvZbf|hUhcx`{<5<24>quWmkmRm`uov?1;773~xThlzn_bmvjq:168:0{Qkauc\gjsi|5=5==5xr^fbpdYdg|d050>2:uq[agsiVidycz39;2=55=pzVnjxlQlotlw8<823~xTic84ws]qwq763ÊÁ¶±Ë°ØÌżĸºÖ¿»³o0ÝϱßÌ¿ÕÆ¿ÌÆ»ÍÌwKL}??a09CD}4?13L187?tS7;977c==3;8>5k66;35027|f;296<5a29190>"50909;45rS7:977c==3;8>5k66;35027<[8ki6>=<:18277>b1?0::99>;R4;>654290:??6j978221123m51;3xW3?=;;o197?<29g:2?71<>;0(?9j:213?sR5:36fV0>2:8n684>33:f=3<6>==:7)<:b;3bg>P50809wx?m2;38q4d4291v(v<::319y!42<3l1>v=<0;104?{h:1>1<75f6b194?=n>l91<75`32094?=h;;l1<75f6bf94?=n>j?1<75`30094?"6n908>>5a1dd94>=h;8;1<7*>f18066=i9ll1=65`30294?"6n908>>5a1dd96>=h;9l1<7*>f18066=i9ll1?65`31g94?"6n908>>5a1dd90>=h;9n1<7*>f18066=i9ll1965`31a94?"6n908>>5a1dd92>=h;9h1<7*>f18066=i9ll1;65`30c94?"6n908>>5a1dd9<>=h;831<7*>f18066=i9ll1565`30:94?"6n908>>5a1dd9e>=h;8=1<7*>f18066=i9ll1n65`30494?"6n908>>5a1dd9g>=h;8?1<7*>f18066=i9ll1h65`30694?"6n908>>5a1dd9a>=h;891<7*>f18066=i9ll1j65`31c94?"6n908>>5a1dd955=5$0d3>7`b3g;nj7?4;h0ff?6=,8l;6?hj;o3fb?4<3`8nm7>5$0d3>7`b3g;nj7=4;h0f=?6=,8l;6?hj;o3fb?2<3`8n47>5$0d3>7`b3g;nj7;4;h0f3?6=,8l;6?hj;o3fb?0<3`8n:7>5$0d3>7`b3g;nj794;h0e1?6=,8l;6?hj;o3fb?><3`8m87>5$0d3>7`b3g;nj774;h0e7?6=,8l;6?hj;o3fb?g<3`8m>7>5$0d3>7`b3g;nj7l4;h0e5?6=,8l;6?hj;o3fb?e<3`8m<7>5$0d3>7`b3g;nj7j4;h0fb?6=,8l;6?hj;o3fb?c<3`8ni7>5$0d3>7`b3g;nj7h4;h0f1?6=,8l;6?hj;o3fb?7732c9i94?:%3e4?4am2d:ik4>1:9l6=3=831b:lj50;9a60g=83;1<7>tH37;?!42<38>m6a>ee83>>{e9<>1<7?50;2xL73?3-8>87?:4:m216<722wi9n4?:8797?>2sA8>46T:d;35f<683;n6i4>f;d960<5;3;:6<85e;35>4`=:<0:i7j522825?772o0n6n4r$377>3e>3-;j57?:2:&13`<4;91/=h951d`8k7>32900e;m;:188m350290/=k>56538j4ca2910e;=9:18'5c6=>=;0b56538j4ca2;10e;=;:18'5c6=>=;0b56538j4ca2=10e;==:18'5c6=>=;0b56538j4ca2?10e;=?:18'5c6=>=;0b56538j4ca2110e;=;0b0<0be290/=k>56848j4ca2810e;6n:18'5c6=>0<0b>290/=k>56848j4ca2:10e;67:18'5c6=>0<0b0290/=k>56848j4ca2<10e;69:18'5c6=>0<0b2290/=k>56848j4ca2>10e;6;:18'5c6=>0<0b4290/=k>56848j4ca2010e;m<:188k34c2900c;02900c;l8:18'5c6=>j;0b56b38j4ca2810c;l::18'5c6=>j;0b56b38j4ca2:10c;l<:18'5c6=>j;0b56b38j4ca2<10c;l>:18'5c6=>j;0b56b38j4ca2>10c;oi:18'5c6=>j;0b56b38j4ca2010e;:l:18'5c6=><<0b56448j4ca2810e;:n:18'5c6=><<0b290/=k>56448j4ca2:10e;:7:18'5c6=><<0b56448j4ca2<10e;:9:18'5c6=><<0b56448j4ca2>10e;:;:18'5c6=><<0b56448j4ca2010e;k<:188k3b0290/=k>56d38j4ca2910c;j9:18'5c6=>l;0b56d38j4ca2;10c;j;:18'5c6=>l;0b56d38j4ca2=10c;j=:18'5c6=>l;0b56d38j4ca2?10c;j?:18'5c6=>l;0b56d38j4ca2110c;mj:18'5c6=>l;0b1;0b56938j4ca2810e;9::18'5c6=>1;0b56938j4ca2:10e;9<:18'5c6=>1;0b56938j4ca2<10e;9>:18'5c6=>1;0b56938j4ca2>10e;8i:18'5c6=>1;0b56938j4ca2010e?67:188m3c32900c;m9:188k3ed2900c;mn:188m3e22900c>?=:18'5c6=;;90b53318j4ca2810c>??:18'5c6=;;90b53318j4ca2:10c>>j:18'5c6=;;90b53318j4ca2<10c>>l:18'5c6=;;90b53318j4ca2>10c>?n:18'5c6=;;90b290/=k>53318j4ca2010c>?7:18'5c6=;;90b53318j4ca2k10c>?9:18'5c6=;;90b53318j4ca2m10c>?;:18'5c6=;;90b53318j4ca2o10c>>n:18'5c6=;;90b!7a838mi6`>eg83?>o5mj0;6)?i0;0ea>h6mo0:76g=ec83>!7a838mi6`>eg81?>o5mh0;6)?i0;0ea>h6mo0876g=e883>!7a838mi6`>eg87?>o5m10;6)?i0;0ea>h6mo0>76g=e683>!7a838mi6`>eg85?>o5m?0;6)?i0;0ea>h6mo0<76g=f483>!7a838mi6`>eg8;?>o5n=0;6)?i0;0ea>h6mo0276g=f283>!7a838mi6`>eg8b?>o5n;0;6)?i0;0ea>h6mo0i76g=f083>!7a838mi6`>eg8`?>o5n90;6)?i0;0ea>h6mo0o76g=eg83>!7a838mi6`>eg8f?>o5ml0;6)?i0;0ea>h6mo0m76g=e483>!7a838mi6`>eg824>=n:l>1<7*>f181b`=i9ll1=<54o3:6>5<5<#9o:1:ll4n0ge>5=5<#9o:1:ll4n0ge>7=54i7;g>5<#9o:1:ll4n0ge>1=5<#9o:1:ll4n0ge>3=5<#9o:1:ll4n0ge>==5<#9o:1>4;4n0ge>5=5<#9o:1>4;4n0ge>7=54o3:e>5<#9o:1>4;4n0ge>1=5<#9o:1>4;4n0ge>3=5<#9o:1>4;4n0ge>==5<5<#9o:1:;l4n0ge>4=5<#9o:1:;l4n0ge>6=5<#9o:1:;l4n0ge>0=5<#9o:1:;l4n0ge>2=5<#9o:1:;l4n0ge><=5<6290;w)<:4;360>N5?k1C>864o070>5<97>5e082a=<599qC>864$377>6563S?o6<=t1b82`?702821=44>3;36>4g=9;0:n7<;:0693?452k0j6447:78~ 3c12?o>7b8k:188k3e=831b>9850;9l1d<722c98o4?::m5f?6=3f5<=6=44i35;>5<1<75`2e:94?"6n909h:5a1dd94>=h:m<1<7*>f181`2=i9ll1=65`2e794?"6n909h:5a1dd96>=h:m>1<7*>f181`2=i9ll1?65`2e194?"6n909h:5a1dd90>=h:m81<7*>f181`2=i9ll1965`2e394?"6n909h:5a1dd92>=h:m:1<7*>f181`2=i9ll1;65`2bd94?"6n909h:5a1dd9<>=h:jo1<7*>f181`2=i9ll1565`2d194?"6n909i?5a1dd94>=h:l;1<7*>f181a7=i9ll1=65`2d294?"6n909i?5a1dd96>=h:ml1<7*>f181a7=i9ll1?65`2eg94?"6n909i?5a1dd90>=h:mn1<7*>f181a7=i9ll1965`2ea94?"6n909i?5a1dd92>=h:mh1<7*>f181a7=i9ll1;65`2ec94?"6n909i?5a1dd9<>=h:m31<7*>f181a7=i9ll1565`2`394?"6n909m=5a1dd94>=h:0l1<7*>f181e5=i9ll1=65`28g94?"6n909m=5a1dd96>=h:0n1<7*>f181e5=i9ll1?65`28a94?"6n909m=5a1dd90>=h:0h1<7*>f181e5=i9ll1965`28c94?"6n909m=5a1dd92>=h:031<7*>f181e5=i9ll1;65`28:94?"6n909m=5a1dd9<>=h:0=1<7*>f181e5=i9ll1565`2`a94?"6n909mo5a1dd94>=h:hk1<7*>f181eg=i9ll1=65`2`;94?"6n909mo5a1dd96>=h:h21<7*>f181eg=i9ll1?65`2`594?"6n909mo5a1dd90>=h:h<1<7*>f181eg=i9ll1965`2`794?"6n909mo5a1dd92>=h:h>1<7*>f181eg=i9ll1;65`2`194?"6n909mo5a1dd9<>=h:h81<7*>f181eg=i9ll1565`2c594?"6n909n;5a1dd94>=h:k?1<7*>f181f3=i9ll1=65`2c694?"6n909n;5a1dd96>=h:k91<7*>f181f3=i9ll1?65`2c094?"6n909n;5a1dd90>=h:k;1<7*>f181f3=i9ll1965`2c294?"6n909n;5a1dd92>=h:hl1<7*>f181f3=i9ll1;65`2`g94?"6n909n;5a1dd9<>=h:hn1<7*>f181f3=i9ll1565`8583>!7a83287c?jf;28?j>5290/=k>5829m5``=921d4<4?:%3e4?>43g;nj7<4;n:3>5<#9o:14>5a1dd97>=h?o0;6)?i0;:0?k7bn3>07b9j:18'5c6=0:1e=hh55:9l3a<72-;m<76<;o3fb?0<3f=h6=4+1g29<6=i9ll1;65`7c83>!7a83287c?jf;:8?j1f290/=k>5829m5``=121d>:950;&2b5<5??1e=hh50:9l623=83.:j=4=779m5``=921d>::50;&2b5<5??1e=hh52:9l625=83.:j=4=779m5``=;21d>:<50;&2b5<5??1e=hh54:9l627=83.:j=4=779m5``==21d>:>50;&2b5<5??1e=hh56:9l63`=83.:j=4=779m5``=?21d>;k50;&2b5<5??1e=hh58:9l63b=83.:j=4=779m5``=121d>n<50;&2b5<5k81e=hh50:9l6f6=83.:j=4=c09m5``=921d>oh50;&2b5<5k81e=hh52:9l6gc=83.:j=4=c09m5``=;21d>oj50;&2b5<5k81e=hh54:9l6ge=83.:j=4=c09m5``==21d>ol50;&2b5<5k81e=hh56:9l6gg=83.:j=4=c09m5``=?21d>o750;&2b5<5k81e=hh58:9l6g>=83.:j=4=c09m5``=121d;44?:%3e4?1?3g;nj7>4;n54>5<#9o:1;55a1dd95>=h??0;6)?i0;5;?k7bn3807b9::18'5c6=?11e=hh53:9l31<72-;m<797;o3fb?2<3f=86=4+1g293==i9ll1965`7383>!7a83=37c?jf;48?j16290/=k>5799m5``=?21d;=4?:%3e4?1?3g;nj764;n4e>5<#9o:1;55a1dd9=>=h:jn1<7*>f181gf=i9ll1<65`2b`94?"6n909on5a1dd95>=h:jk1<7*>f181gf=i9ll1>65`2b;94?"6n909on5a1dd97>=h:j21<7*>f181gf=i9ll1865`2b594?"6n909on5a1dd91>=h:j<1<7*>f181gf=i9ll1:65`2b794?"6n909on5a1dd93>=h:j>1<7*>f181gf=i9ll1465`2b194?"6n909on5a1dd9=>=h9:i1<7*>f1827g=i9ll1<65`12c94?"6n90:?o5a1dd95>=h9:31<7*>f1827g=i9ll1>65`12:94?"6n90:?o5a1dd97>=h9:=1<7*>f1827g=i9ll1865`12494?"6n90:?o5a1dd91>=h9:?1<7*>f1827g=i9ll1:65`12694?"6n90:?o5a1dd93>=h9=?1<7*>f1827g=i9ll1465`15694?"6n90:?o5a1dd9=>=h9=91<7*>f1827g=i9ll1m65`15094?"6n90:?o5a1dd9f>=h9=;1<7*>f1827g=i9ll1o65`15294?"6n90:?o5a1dd9`>=h9:l1<7*>f1827g=i9ll1i65`12g94?"6n90:?o5a1dd9b>=h9:n1<7*>f1827g=i9ll1==54o010>5<#9o:1=>l4n0ge>47<3f8?97>5$0d3>7233g;nj7>4;n077?6=,8l;6?:;;o3fb?7<3f8?>7>5$0d3>7233g;nj7<4;n075?6=,8l;6?:;;o3fb?5<3f8?<7>5$0d3>7233g;nj7:4;n00b?6=,8l;6?:;;o3fb?3<3f88i7>5$0d3>7233g;nj784;n00`?6=,8l;6?:;;o3fb?1<3f88o7>5$0d3>7233g;nj764;n00f?6=,8l;6?:;;o3fb??<3`8;47>5$0d3>7603g;nj7>4;h032?6=,8l;6?>8;o3fb?7<3`8;97>5$0d3>7603g;nj7<4;h030?6=,8l;6?>8;o3fb?5<3`8;?7>5$0d3>7603g;nj7:4;h036?6=,8l;6?>8;o3fb?3<3`8;=7>5$0d3>7603g;nj784;h034?6=,8l;6?>8;o3fb?1<3`;mj7>5$0d3>7603g;nj764;h3ea?6=,8l;6?>8;o3fb??<3`n:6=4+1g29`5=i9ll1<65fcg83>!7a83n;7c?jf;38?leb290/=k>5d19m5``=:21boi4?:%3e4?b73g;nj7=4;ha`>5<#9o:1h=5a1dd90>=nkk0;6)?i0;f3?k7bn3?07dmn:18'5c6=l91e=hh56:9jg<<72-;m<7j?;o3fb?1<3`nj6=4+1g29`5=i9ll1465fd883>!7a83n;7c?jf;;8?lb?290/=k>5d19m5``=i21bh:4?:%3e4?b73g;nj7l4;hf5>5<#9o:1h=5a1dd9g>=nl<0;6)?i0;f3?k7bn3n07dj;:18'5c6=l91e=hh5e:9j`6<72-;m<7j?;o3fb?`<3`n96=4+1g29`5=i9ll1==54ib:94?"6n90o<6`>eg825>=n::?1<7*>f18171=i9ll1<65f22194?"6n909?95a1dd95>=n::81<7*>f18171=i9ll1>65f22394?"6n909?95a1dd97>=n:::1<7*>f18171=i9ll1865f23d94?"6n909?95a1dd91>=n:;o1<7*>f18171=i9ll1:65f23f94?"6n909?95a1dd93>=n:;i1<7*>f18171=i9ll1465f23`94?"6n909?95a1dd9=>=n:;k1<7*>f1816<=i9ll1<65f23:94?"6n909>45a1dd95>=n:;=1<7*>f1816<=i9ll1>65f23494?"6n909>45a1dd97>=n:;?1<7*>f1816<=i9ll1865f23694?"6n909>45a1dd91>=n:;91<7*>f1816<=i9ll1:65f23094?"6n909>45a1dd93>=n:;;1<7*>f1816<=i9ll1465f23294?"6n909>45a1dd9=>=n:8l1<7*>f1815`=i9ll1<65f20f94?"6n909=h5a1dd95>=n:8i1<7*>f1815`=i9ll1>65f20`94?"6n909=h5a1dd97>=n:8k1<7*>f1815`=i9ll1865f20;94?"6n909=h5a1dd91>=n:821<7*>f1815`=i9ll1:65f20594?"6n909=h5a1dd93>=n:8<1<7*>f1815`=i9ll1465f20794?"6n909=h5a1dd9=>=n:891<7*>f18157=i9ll1<65f20394?"6n909=?5a1dd95>=n:8:1<7*>f18157=i9ll1>65f21d94?"6n909=?5a1dd97>=n:9o1<7*>f18157=i9ll1865f21f94?"6n909=?5a1dd91>=n:9i1<7*>f18157=i9ll1:65f21`94?"6n909=?5a1dd93>=n:9k1<7*>f18157=i9ll1465f21;94?"6n909=?5a1dd9=>=n9on1<7*>f182bf=i9ll1<65f1g`94?"6n90:jn5a1dd95>=n9ok1<7*>f182bf=i9ll1>65f1g;94?"6n90:jn5a1dd97>=n9o21<7*>f182bf=i9ll1865f1g594?"6n90:jn5a1dd91>=n9o<1<7*>f182bf=i9ll1:65f1g794?"6n90:jn5a1dd93>=n9o>1<7*>f182bf=i9ll1465f1g194?"6n90:jn5a1dd9=>=e:>i1<7?50;2x 73328??7E<8b:J11==h9<91<75rb35g>5<6290;w)<:4;06e>N5?k1C>864o0gg>5<54;294~"5==0:8h5G26`8L73?3A?i7)?92;38m0c=831b:l4?::k2b4<722e9?;4?::a27>=83?1<7>t$377>42a3A8>850;9~f340290?6=4?{%060?73m2B9;o5G24:8L0d<,8<96<5f5d83>>o1i3:17d?i1;29?j44>3:17pl92783>0<729q/>8:515d8L71e3A8>46F:b:&227<63`?n6=44i7194?=n>h0;66g>f083>>i5;?0;66sm49d94?3=83:p(?;;:06e?M40j2B9955+17090>o2m3:17d8<:188m3g=831b=k?50;9l660=831vn96j:186>5<7s-8>87?;f:J13g=O:<20(<8=:59j1`<722c=?7>5;h4b>5<5<2>7>55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg2>83:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo:65;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<2?7>55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg2><3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo:67;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<>i7>54;294~"5==0:n<5G26`8L73?3`1<75f8483>>o5e`83>>{e<>:1<7=50;2x 7332;=j7E<8b:J11==n>=0;66g>a`83>>i6mh0;66sm47394?2=83:p(?;;:0`2?M40j2B9955f6583>>o?=3:17d<;c;29?j7bi3:17pl;7083>6<729q/>8:526c8L71e3A8>46g94;29?l7fi3:17b?ja;29?xd3>:0;694?:1y'602=9k;0D?9m;I06<>o1<3:17d6::188m72d2900c50z&111<5?h1C>:l4H37;?l032900eb09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn99<:180>5<7s-8>87<8a:J13g=O:<20e;:50;9j5dg=831d=ho50;9~f100290?6=4?{%060?7e92B9;o5G24:8m32=831b484?::k10f<722e:il4?::a022=8391<7>t$377>71f3A8;I04f>N5=11b:94?::k;1?6=3`8?o7>5;n3fe?6=3th?;84?:283>5}#:<>1>:o4H35a?M4202c=87>5;h3be?6=3f;nm7>5;|`72g<72=0;6=u+24695g7<@;=i7E<:8:k50?6=3`2>6=44i36`>5<h0D?;7;h47>5<5<=h7>54;294~"5==0:n<5G26`8L73?3`1<75f1`c94?=h9lk1<75rb55;>5<4290;w)<:4;04e>N5?k1C>864i7694?=n9hk1<75`1dc94?=zj=?>6=4::183!42<3;?j6F=7c9K60><,8<9695f5d83>>o1;3:17d8n:188m4`62900c?=9:188yg22<3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo::6;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<>;7>55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg22j3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo::a;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<>o7>55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg22l3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;h47>5<5<3290;w)<:4;3a5>N5?k1C>864i7694?=n0<0;66g=4b83>>i6mh0;66sm45294?5=83:p(?;;:35b?M40j2B9955f6583>>o6ih0;66a>e`83>>{e<:;1<7:50;2x 73328h:7E<8b:J11==n>=0;66g75;29?l43k3:17b?ja;29?xd3<80;6>4?:1y'602=:>k0D?9m;I06<>o1<3:17d?na;29?j7bi3:17pl;3283>1<729q/>8:51c38L71e3A8>46g94;29?l>22900e?:l:188k4cf2900qo:;2;297?6=8r.9994=7`9K62d<@;?37d8;:188m4gf2900c50z&111<6j81C>:l4H37;?l032900e5;50;9j61e=831d=ho50;9~f12429086=4?{%060?40i2B9;o5G24:8m32=831b=lo50;9l5`g=831vn9=8:187>5<7s-8>87?m1:J13g=O:<20e;:50;9j<0<722c98n4?::m2ad<722wi89:50;194?6|,;??6?9n;I04f>N5=11b:94?::k2ed<722e:il4?::a06?=83>1<7>t$377>4d63A85;h07g?6=3f;nm7>5;|`700<72:0;6=u+246962g<@;=i7E<:8:k50?6=3`;jm7>5;n3fe?6=3th??o4?:583>5}#:<>1=o?4H35a?M4202c=87>5;h:6>5<h6=44o0gb>5<?:7>53;294~"5==09;l5G26`8L73?3`5<h0D?;7;h47>5<5<4290;w)<:4;04e>N5?k1C>864i7694?=n9hk1<75`1dc94?=zj=>36=4<:183!42<381<75f1`c94?=h9lk1<75rb2a6>5<2290;w)<:4;37b>N5?k1C>864$041>1=n=l0;66g93;29?l0f2900e:188k7512900qo=l4;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg5d>3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo=lb;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg5di3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo=ld;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<54;294~"5==0:n<5G26`8L73?3`6=4;:183!42<3;i=6F=7c9K60>1<75f8483>>o5e`83>>{e;h<1<7=50;2x 7332;=j7E<8b:J11==n>=0;66g>a`83>>i6mh0;66sm38594?2=83:p(?;;:0`2?M40j2B9955f6583>>o?=3:17d<;c;29?j7bi3:17pl6<729q/>8:526c8L71e3A8>46g94;29?l7fi3:17b?ja;29?xd4100;694?:1y'602=9k;0D?9m;I06<>o1<3:17d6::188m72d2900c50z&111<5?h1C>:l4H37;?l032900eb09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn>o6:180>5<7s-8>87<8a:J13g=O:<20e;:50;9j5dg=831d=ho50;9~f6?c290?6=4?{%060?7e92B9;o5G24:8m32=831b484?::k10f<722e:il4?::a7dg=8391<7>t$377>71f3A8;I04f>N5=11b:94?::k;1?6=3`8?o7>5;n3fe?6=3th8mo4?:283>5}#:<>1>:o4H35a?M4202c=87>5;h3be?6=3f;nm7>5;|`0e4<72=0;6=u+24695g7<@;=i7E<:8:k50?6=3`2>6=44i36`>5<h0D?;7;h47>5<5<54;294~"5==0:n<5G26`8L73?3`1<75f1`c94?=h9lk1<75rb2cf>5<4290;w)<:4;04e>N5?k1C>864i7694?=n9hk1<75`1dc94?=zj=8>6=4::183!42<3;?h6F=7c9K60><,8<96<5f5d83>>o1;3:17d88:188m3g=831d>>850;9~f143290>6=4?{%060?73n2B9;o5G24:8 4052=1b9h4?::k57?6=3`5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo:=6;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<9;7>55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg25j3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo:=a;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<9o7>55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg25l3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;h47>5<5<3290;w)<:4;3a5>N5?k1C>864i7694?=n0<0;66g=4b83>>i6mh0;66sm40294?5=83:p(?;;:35b?M40j2B9955f6583>>o6ih0;66a>e`83>>{e<9;1<7:50;2x 73328h:7E<8b:J11==n>=0;66g75;29?l43k3:17b?ja;29?xd3980;6>4?:1y'602=:>k0D?9m;I06<>o1<3:17d?na;29?j7bi3:17pl;0283>1<729q/>8:51c38L71e3A8>46g94;29?l>22900e?:l:188k4cf2900qo:>2;297?6=8r.9994=7`9K62d<@;?37d8;:188m4gf2900c50z&111<6j81C>:l4H37;?l032900e5;50;9j61e=831d=ho50;9~f17429086=4?{%060?40i2B9;o5G24:8m32=831b=lo50;9l5`g=831vn9>8:187>5<7s-8>87?m1:J13g=O:<20e;:50;9j<0<722c98n4?::m2ad<722wi8<:50;194?6|,;??6?9n;I04f>N5=11b:94?::k2ed<722e:il4?::a05?=83>1<7>t$377>4d63A85;h07g?6=3f;nm7>5;|`750<72:0;6=u+246962g<@;=i7E<:8:k50?6=3`;jm7>5;n3fe?6=3th?5}#:<>1=o?4H35a?M4202c=87>5;h:6>5<h6=44o0gb>5<::7>53;294~"5==09;l5G26`8L73?3`5<h0D?;7;h47>5<5<4290;w)<:4;04e>N5?k1C>864i7694?=n9hk1<75`1dc94?=zj=;36=4<:183!42<381<75f1`c94?=h9lk1<75rb2:a>5<2290;w)<:4;37`>N5?k1C>864$041>4=n=l0;66g93;29?l002900e;o50;9l660=831vn>6n:186>5<7s-8>87?;f:J13g=O:<20(<8=:59j1`<722c=?7>5;h4b>5<5<55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg5?k3:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo=61;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<55;294~"5==0:8i5G26`8L73?3-;=>7?4i4g94?=n>:0;66g97;29?l0f2900c?=9:188yg5>83:197>50z&111<6:l4H37;?!71:3;0e8k50;9j26<722c=;7>5;h4b>5<h0D?;7;%356?7>o1?3:17d8n:188k7512900qo=63;291?6=8r.9994>4e9K62d<@;?37)?92;38m0c=831b:>4?::k53?6=3`5<54;294~"5==0:n<5G26`8L73?3`6=4;:183!42<3;i=6F=7c9K60>1<75f8483>>o5e`83>>{e;><1<7=50;2x 7332;=j7E<8b:J11==n>=0;66g>a`83>>i6mh0;66sm37594?2=83:p(?;;:0`2?M40j2B9955f6583>>o?=3:17d<;c;29?j7bi3:17pl<7683>6<729q/>8:526c8L71e3A8>46g94;29?l7fi3:17b?ja;29?xd4>00;694?:1y'602=9k;0D?9m;I06<>o1<3:17d6::188m72d2900c50z&111<5?h1C>:l4H37;?l032900eb09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn>96:180>5<7s-8>87<8a:J13g=O:<20e;:50;9j5dg=831d=ho50;9~f60c290?6=4?{%060?7e92B9;o5G24:8m32=831b484?::k10f<722e:il4?::a72g=8391<7>t$377>71f3A8;I04f>N5=11b:94?::k;1?6=3`8?o7>5;n3fe?6=3th8;o4?:283>5}#:<>1>:o4H35a?M4202c=87>5;h3be?6=3f;nm7>5;|`034<72=0;6=u+24695g7<@;=i7E<:8:k50?6=3`2>6=44i36`>5<h0D?;7;h47>5<5<54;294~"5==0:n<5G26`8L73?3`1<75f1`c94?=h9lk1<75rb25f>5<4290;w)<:4;04e>N5?k1C>864i7694?=n9hk1<75`1dc94?=zj:l?6=4::183!42<3;?h6F=7c9K60><,8<96<5f5d83>>o1;3:17d88:188m3g=831d>>850;9~f6`2290>6=4?{%060?73l2B9;o5G24:8 405281b9h4?::k57?6=3`<<6=44i7c94?=h::<1<75rb2d5>5<2290;w)<:4;37`>N5?k1C>864$041>4=n=l0;66g93;29?l002900e;o50;9l660=831vn>h8:186>5<7s-8>87?;d:J13g=O:<20(<8=:09j1`<722c=?7>5;h44>5<<,8<96<5f5d83>>o1;3:17d88:188m3g=831d>>850;9~f6`>290>6=4?{%060?73l2B9;o5G24:8 405281b9h4?::k57?6=3`<<6=44i7c94?=h::<1<75rb2db>5<2290;w)<:4;37`>N5?k1C>864$041>4=n=l0;66g93;29?l002900e;o50;9l660=831vn>hm:186>5<7s-8>87?;d:J13g=O:<20(<8=:09j1`<722c=?7>5;h44>5<<,8<96<5f5d83>>o1;3:17d88:188m3g=831d>>850;9~f6`c290>6=4?{%060?73l2B9;o5G24:8 405281b9h4?::k57?6=3`<<6=44i7c94?=h::<1<75rb2af>5<3290;w)<:4;3a5>N5?k1C>864i7694?=n0<0;66g=4b83>>i6mh0;66sm3bd94?2=83:p(?;;:0`2?M40j2B9955f6583>>o?=3:17d<;c;29?j7bi3:17pl6<729q/>8:526c8L71e3A8>46g94;29?l7fi3:17b?ja;29?xd4l80;694?:1y'602=9k;0D?9m;I06<>o1<3:17d6::188m72d2900c50z&111<5?h1C>:l4H37;?l032900eb09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn>k=:180>5<7s-8>87<8a:J13g=O:<20e;:50;9j5dg=831d=ho50;9~f6b2290?6=4?{%060?7e92B9;o5G24:8m32=831b484?::k10f<722e:il4?::a7`5=8391<7>t$377>71f3A8;I04f>N5=11b:94?::k;1?6=3`8?o7>5;n3fe?6=3th8i94?:283>5}#:<>1>:o4H35a?M4202c=87>5;h3be?6=3f;nm7>5;|`0`<<72=0;6=u+24695g7<@;=i7E<:8:k50?6=3`2>6=44i36`>5<h0D?;7;h47>5<5<54;294~"5==0:n<5G26`8L73?3`1<75f1`c94?=h9lk1<75rb2fg>5<3290;w)<:4;3a5>N5?k1C>864i7694?=n0<0;66g=4b83>>i6mh0;66sm3d594?5=83:p(?;;:35b?M40j2B9955f6583>>o6ih0;66a>e`83>>{e;l21<7=50;2x 7332;=j7E<8b:J11==n>=0;66g>a`83>>i6mh0;66sm34c94?3=83:p(?;;:06g?M40j2B9955+17095>o2m3:17d8<:188m31=831b:l4?::m173<722wi?8l50;794?6|,;??6<:k;I04f>N5=11/=;<51:k6a?6=3`<86=44i7594?=n>h0;66a=3783>>{e;o7E<8b:J11==#9?81=6g:e;29?l042900e;950;9j2d<722e9?;4?::a70b=83?1<7>t$377>42c3A8i7>5;h40>5<>i5;?0;66sm34g94?3=83:p(?;;:06g?M40j2B9955+17095>o2m3:17d8<:188m31=831b:l4?::m173<722wi?8h50;794?6|,;??6<:k;I04f>N5=11/=;<51:k6a?6=3`<86=44i7594?=n>h0;66a=3783>>{e;?:1<7;50;2x 73328>o7E<8b:J11==#9?81=6g:e;29?l042900e;950;9j2d<722e9?;4?::a737=83?1<7>t$377>42c3A8i7>5;h40>5<>i5;?0;66sm37094?3=83:p(?;;:06g?M40j2B9955+17095>o2m3:17d8<:188m31=831b:l4?::m173<722wi?;=50;794?6|,;??6<:k;I04f>N5=11/=;<51:k6a?6=3`<86=44i7594?=n>h0;66a=3783>>{e;:>1<7:50;2x 73328h:7E<8b:J11==n>=0;66g75;29?l43k3:17b?ja;29?xd4;<0;694?:1y'602=9k;0D?9m;I06<>o1<3:17d6::188m72d2900c3:1?7>50z&111<5?h1C>:l4H37;?l032900eb09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn>:8:180>5<7s-8>87<8a:J13g=O:<20e;:50;9j5dg=831d=ho50;9~f65>290?6=4?{%060?7e92B9;o5G24:8m32=831b484?::k10f<722e:il4?::a71>=8391<7>t$377>71f3A8l50;694?6|,;??6;I04f>N5=11b:94?::k;1?6=3`8?o7>5;n3fe?6=3th8844?:283>5}#:<>1>:o4H35a?M4202c=87>5;h3be?6=3f;nm7>5;|`07a<72=0;6=u+24695g7<@;=i7E<:8:k50?6=3`2>6=44i36`>5<h0D?;7;h47>5<5<54;294~"5==0:n<5G26`8L73?3`i6=4<:183!42<381<75f1`c94?=h9lk1<75rb262>5<3290;w)<:4;3a5>N5?k1C>864i7694?=n0<0;66g=4b83>>i6mh0;66sm35a94?5=83:p(?;;:35b?M40j2B9955f6583>>o6ih0;66a>e`83>>{e;=91<7:50;2x 73328h:7E<8b:J11==n>=0;66g75;29?l43k3:17b?ja;29?xd44?:1y'602=:>k0D?9m;I06<>o1<3:17d?na;29?j7bi3:17pl<4d83>6<729q/>8:526c8L71e3A8>46g94;29?l7fi3:17b?ja;29?xd2l=0;694?:1y'602=9k;0D?9m;I06<>o1<3:17d6::188m72d2900c50z&111<6j81C>:l4H37;?l032900e5;50;9j61e=831d=ho50;9~f0b1290?6=4?{%060?7e92B9;o5G24:8m32=831b484?::k10f<722e:il4?::a1a1=83>1<7>t$377>4d63A85;h07g?6=3f;nm7>5;|`6`=<72=0;6=u+24695g7<@;=i7E<:8:k50?6=3`2>6=44i36`>5<h0D?;7;h47>5<5<3290;w)<:4;3a5>N5?k1C>864i7694?=n0<0;66g=4b83>>i6mh0;66sm5d;94?2=83:p(?;;:0`2?M40j2B9955f6583>>o?=3:17d<;c;29?j7bi3:17pl:e`83>1<729q/>8:51c38L71e3A8>46g94;29?l>22900e?:l:188k4cf2900qo;jb;290?6=8r.9994>b09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn8mi:187>5<7s-8>87?;e:J13g=O:<20(<8=:59j1`<722c=m7>5;h3e5?6=3f88:7>5;|`6bc<72=0;6=u+24695g7<@;=i7E<:8:k50?6=3`2>6=44i36`>5<h0D?;7;h47>5<5<3290;w)<:4;3a5>N5?k1C>864i7694?=n0<0;66g=4b83>>i6mh0;66sm61094?2=83:p(?;;:0`2?M40j2B9955f6583>>o?=3:17d<;c;29?j7bi3:17pl90283>1<729q/>8:51c38L71e3A8>46g94;29?l>22900e?:l:188k4cf2900qo8>2;290?6=8r.9994>b09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn;?<:187>5<7s-8>87?m1:J13g=O:<20e;:50;9j<0<722c98n4?::m2ad<722wi:<:50;694?6|,;??6;I04f>N5=11b:94?::k;1?6=3`8?o7>5;n3fe?6=3th==84?:583>5}#:<>1=o?4H35a?M4202c=87>5;h:6>5<h6=44o0gb>5<54;294~"5==0:n<5G26`8L73?3`<,8<96<5f5d83>>o1i3:17d?i1;29?j44>3:17pl:7b83>1<729q/>8:51c38L71e3A8>46g94;29?l>22900e?:l:188k4cf2900qo;8d;290?6=8r.9994>b09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn89j:187>5<7s-8>87?m1:J13g=O:<20e;:50;9j<0<722c98n4?::m2ad<722wi9:h50;694?6|,;??6;I04f>N5=11b:94?::k;1?6=3`8?o7>5;n3fe?6=3th>4=4?:583>5}#:<>1=o?4H35a?M4202c=87>5;h:6>5<h6=44o0gb>5<54;294~"5==0:n<5G26`8L73?3`1<75f8483>>o5e`83>>{e=0;1<7:50;2x 73328h:7E<8b:J11==n>=0;66g75;29?l43k3:17b?ja;29?xd21;0;694?:1y'602=9k;0D?9m;I06<>o1<3:17d6::188m72d2900c;3:187>50z&111<6j81C>:l4H37;?l032900e5;50;9j61e=831d=ho50;9~f012290>6=4?{%060?73n2B9;o5G24:8 4052=1b9h4?::k57?6=3`5<h0D?;7;h47>5<5<3290;w)<:4;3a5>N5?k1C>864i7694?=n0<0;66g=4b83>>i6mh0;66sm5``94?2=83:p(?;;:0`2?M40j2B9955f6583>>o?=3:17d<;c;29?j7bi3:17pl:ab83>1<729q/>8:51c38L71e3A8>46g94;29?l>22900e?:l:188k4cf2900qo;nd;290?6=8r.9994>b09K62d<@;?37d8;:188m=3=831b>9m50;9l5`g=831vn8ll:187>5<7s-8>87?m1:J13g=O:<20e;:50;9j<0<722c98n4?::m2ad<722wi9oj50;694?6|,;??6;I04f>N5=11b:94?::k;1?6=3`8?o7>5;n3fe?6=3th>nh4?:583>5}#:<>1=o?4H35a?M4202c=87>5;h:6>5<h6=44o0gb>5<54;294~"5==0:n<5G26`8L73?3`1<75f8483>>o5e`83>>{e=h81<7;50;2x 73328>m7E<8b:J11==#9?81=6g:e;29?l042900e;o50;9j5c7=831d>>850;9~f1gf290?6=4?{%060?73k2B9;o5G24:8 405281b9h4?::k53?6=3`5<j57>54;294~"5==0:8n5G26`8L73?3-;=>7?4i4g94?=n>>0;66g9a;29?j44>3:17pl;a983>1<729q/>8:515a8L71e3A8>46*>6382?l3b2900e;950;9j2d<722e9?;4?::a0d1=83>1<7>t$377>42d3A8i7>5;h44>5<<,8<96<5f5d83>>o1?3:17d8n:188k7512900qo:n5;290?6=8r.9994>4b9K62d<@;?37)?92;38m0c=831b::4?::k5e?6=3f88:7>5;|`7e1<72=0;6=u+246951e<@;=i7E<:8:&227<63`?n6=44i7594?=n>h0;66a=3783>>{eh7E<8b:J11==#9?81=6g:e;29?l002900e;o50;9l660=831vn9o=:187>5<7s-8>87?;c:J13g=O:<20(<8=:09j1`<722c=;7>5;h4b>5<h0D?;7;%356?7>o1i3:17b<<6;29?xd3m>0;694?:1y'602=9=i0D?9m;I06<>"6>;0:7d;j:188m31=831b:l4?::m173<722wi8h850;694?6|,;??6<:l;I04f>N5=11/=;<51:k6a?6=3`<<6=44i7c94?=h::<1<75rb5g6>5<3290;w)<:4;37g>N5?k1C>864$041>4=n=l0;66g97;29?l0f2900c?=9:188yg2b<3:187>50z&111<6:l4H37;?!71:3;0e8k50;9j22<722c=m7>5;n002?6=3th?i>4?:583>5}#:<>1=9m4H35a?M4202.::?4>;h7f>5<>i5;?0;66sm4d094?2=83:p(?;;:06`?M40j2B9955+17095>o2m3:17d88:188m3g=831d>>850;9~f1c6290?6=4?{%060?73k2B9;o5G24:8 405281b9h4?::k53?6=3`5<n<7>54;294~"5==0:8n5G26`8L73?3-;=>7?4i4g94?=n>>0;66g9a;29?j44>3:17pl;dg83>1<729q/>8:515a8L71e3A8>46*>6382?l3b2900e;950;9j2d<722e9?;4?::a0ac=83>1<7>t$377>42d3A8i7>5;h44>5<<@5;h4b>5<h0D?;7;I7a?!71:3;0e8k50;9j22<722c=m7>5;n002?6=3th?j44?:583>5}#:<>1=9m4H35a?M4202B>n6*>6382?l3b2900e;950;9j2d<722e9?;4?::a0c>=83>1<7>t$377>42d3A85<7s-8>87?;c:J13g=O:<20D8l4$041>4=n=l0;66g97;29?l0f2900c?=9:188yg2a>3:187>50z&111<6:l4H37;?M3e3-;=>7?4i4g94?=n>>0;66g9a;29?j44>3:17pl;f483>1<729q/>8:515a8L71e3A8>46F:b:&227<63`?n6=44i7594?=n>h0;66a=3783>>{e1<7:50;2x 73328>h7E<8b:J11==O=k1/=;<51:k6a?6=3`<<6=44i7c94?=h::<1<75rb5d0>5<3290;w)<:4;37g>N5?k1C>864H4`8 405281b9h4?::k53?6=3`5<m>7>54;294~"5==0:8n5G26`8L73?3A?i7)?92;38m0c=831b::4?::k5e?6=3f88:7>5;|`7`6<72=0;6=u+246951e<@;=i7E<:8:&227<63`?n6=44i7594?=n>h0;66a=3783>>{eh7E<8b:J11==#9?81=6g:e;29?l002900e;o50;9l660=831vn9j>:187>5<7s-8>87?;c:J13g=O:<20(<8=:09j1`<722c=;7>5;h4b>5<h0D?;7;%356?7>o1i3:17b<<6;29?xd3ko0;694?:1y'602=9=i0D?9m;I06<>"6>;0:7d;j:188m31=831b:l4?::m173<722wi8nk50;694?6|,;??6<:l;I04f>N5=11/=;<51:k6a?6=3`<<6=44i7c94?=h::<1<75rb5ag>5<3290;w)<:4;37g>N5?k1C>864$041>4=n=l0;66g97;29?l0f2900c?=9:188yg2dk3:187>50z&111<6:l4H37;?!71:3;0e8k50;9j22<722c=m7>5;n002?6=3th?oo4?:583>5}#:<>1=9m4H35a?M4202.::?4>;h7f>5<>i5;?0;66sm4bc94?2=83:p(?;;:06`?M40j2B9955+17095>o2m3:17d88:188m3g=831d>>850;9~f070290?6=4?{%060?73k2B9;o5G24:8 405281b9h4?::k53?6=3`5<54;294~"5==0:8n5G26`8L73?3-;=>7?4i4g94?=n>>0;66g9a;29?j44>3:17pl:1483>1<729q/>8:515a8L71e3A8>46*>6382?l3b2900e;950;9j2d<722e9?;4?::a142=83>1<7>t$377>42d3A8i7>5;h44>5<<,8<96<5f5d83>>o1?3:17d8n:188k7512900qo;>2;290?6=8r.9994>4b9K62d<@;?37)?92;38m0c=831b::4?::k5e?6=3f88:7>5;|`654<72=0;6=u+246951e<@;=i7E<:8:&227<63`?n6=44i7594?=n>h0;66a=3783>>{e=8:1<7:50;2x 73328>h7E<8b:J11==#9?81=6g:e;29?l002900e;o50;9l660=831vn8>i:187>5<7s-8>87?;c:J13g=O:<20(<8=:09j1`<722c=;7>5;h4b>5<h0D?;7;%356?7>o1i3:17b<<6;29?xd2==0;694?:1y'602=9=i0D?9m;I06<>"6>;0:7d;j:188m31=831b:l4?::m173<722wi98=50;694?6|,;??6<:l;I04f>N5=11/=;<51:k6a?6=3`<<6=44i7c94?=h::<1<75rb471>5<3290;w)<:4;37g>N5?k1C>864$041>4=n=l0;66g97;29?l0f2900c?=9:188yg3293:187>50z&111<6:l4H37;?!71:3;0e8k50;9j22<722c=m7>5;n002?6=3th>9=4?:583>5}#:<>1=9m4H35a?M4202.::?4>;h7f>5<>i5;?0;66sm55d94?2=83:p(?;;:06`?M40j2B9955+17095>o2m3:17d88:188m3g=831d>>850;9~f02b290?6=4?{%060?73k2B9;o5G24:8 405281b9h4?::k53?6=3`5<54;294~"5==0:8n5G26`8L73?3-;=>7?4i4g94?=n>>0;66g9a;29?j44>3:17pl:4b83>1<729q/>8:515a8L71e3A8>46*>6382?l3b2900e;950;9j2d<722e9?;4?::a11d=83>1<7>t$377>42d3A8i7>5;h44>5<<@5;h4b>5<h0D?;7;I7a?!71:3;0e8k50;9j22<722c=m7>5;n002?6=3th>:;4?:583>5}#:<>1=9m4H35a?M4202B>n6*>6382?l3b2900e;950;9j2d<722e9?;4?::a133=83>1<7>t$377>42d3A85<7s-8>87?;c:J13g=O:<20D8l4$041>4=n=l0;66g97;29?l0f2900c?=9:188yg31;3:187>50z&111<6:l4H37;?M3e3-;=>7?4i4g94?=n>>0;66g9a;29?j44>3:17pl:6383>1<729q/>8:515a8L71e3A8>46F:b:&227<63`?n6=44i7594?=n>h0;66a=3783>>{e=?;1<7:50;2x 73328>h7E<8b:J11==O=k1/=;<51:k6a?6=3`<<6=44i7c94?=h::<1<75rb443>5<3290;w)<:4;37g>N5?k1C>864H4`8 405281b9h4?::k53?6=3`5<j7>54;294~"5==0:8n5G26`8L73?3A?i7)?92;38m0c=831b::4?::k5e?6=3f88:7>5;|`605<72=0;6=u+246951e<@;=i7E<:8:&227<63`?n6=44i7594?=n>h0;66a=3783>>{e=:l1<7:50;2x 73328>h7E<8b:J11==#9?81=6g:e;29?l002900e;o50;9l660=831vn8=j:187>5<7s-8>87?;c:J13g=O:<20(<8=:09j1`<722c=;7>5;h4b>5<h0D?;7;%356?7>o1i3:17b<<6;29?xd2;j0;694?:1y'602=9=i0D?9m;I06<>"6>;0:7d;j:188m31=831b:l4?::m173<722wi9>l50;694?6|,;??6<:l;I04f>N5=11/=;<51:k6a?6=3`<<6=44i7c94?=h::<1<75rb41b>5<3290;w)<:4;37g>N5?k1C>864$041>4=n=l0;66g97;29?l0f2900c?=9:188yg3413:187>50z&111<6:l4H37;?!71:3;0e8k50;9j22<722c=m7>5;n002?6=3th>?54?:583>5}#:<>1=9m4H35a?M4202.::?4>;h7f>5<>i5;?0;66sm52594?2=83:p(?;;:06`?M40j2B9955+17095>o2m3:17d88:188m3g=831d>>850;9~f07>29086=4?{%060?7fm2B9;o5G24:8 4052:90e<;9:188m4302900c50z&111<6il1C>:l4H37;?!71:3987d?:6;29?l72?3:17b?ja;29?xd28m0;6>4?:1y'602=9ho0D?9m;I06<>"6>;08?6g>5783>>o6=>0;66a>e`83>>{e=9i1<7=50;2x 73328kn7E<8b:J11==#9?81?>5f14494?=n9<=1<75`1dc94?=zj<:i6=4<:183!42<3;ji6F=7c9K60><,8<96>=4i075>5<5<53;294~"5==0:mh5G26`8L73?3-;=>7=<;h362?6=3`;>;7>5;n3fe?6=3th><44?:283>5}#:<>1=lk4H35a?M4202.::?4<3:k213<722c:9:4?::m2ad<722wi9=650;194?6|,;??6N5=11/=;<5329j500=831b=8950;9l5`g=831vn8>8:180>5<7s-8>87?ne:J13g=O:<20(<8=:218m4312900e<;8:188k4cf2900qo;?6;297?6=8r.9994>ad9K62d<@;?37)?92;10?l72>3:17d?:7;29?j7bi3:17pl:0483>6<729q/>8:51`g8L71e3A8>46*>63807>o6=?0;66g>5683>>i6mh0;66sm4`294?5=83:p(?;;:0cf?M40j2B9955+170976=n9<<1<75f14594?=h9lk1<75rb5;e>5<4290;w)<:4;3ba>N5?k1C>864$041>655<h0D?;7;%356?543`;>:7>5;h363?6=3f;nm7>5;|`7=a<72:0;6=u+24695dc<@;=i7E<:8:&227<4;2c:9;4?::k212<722e:il4?::a0t$377>4gb3A8i3:1?7>50z&111<6il1C>:l4H37;?!71:3987d?:6;29?l72?3:17b?ja;29?xd3100;6>4?:1y'602=9ho0D?9m;I06<>"6>;08?6g>5783>>o6=>0;66a>e`83>>{e<021<7=50;2x 73328kn7E<8b:J11==#9?81?>5f14494?=n9<=1<75`1dc94?=zj<;i6=4;:183!42<3;jj6F=7c9K60><,8<96>94i075>5<5<h0D?;7;%356?503`;>:7>5;h363?6=3`;>47>5;n3fe?6=3th>=i4?:483>5}#:<>1=o>4H35a?M4202.::?4<5:k213<722c:9:4?::k21=<722c:944?::m2ad<722wi8o>50;794?6|,;??6N5=11/=;<5349j500=831b=8950;9j50>=831b=8750;9l5`g=831vn8?i:180>5<7s-8>87?ne:J13g=O:<20(<8=:218m4312900e<;8:188k4cf2900qo:m2;297?6=8r.9994>ad9K62d<@;?37)?92;10?l72>3:17d?:7;29?j7bi3:17pl:2083>1<729q/>8:51`d8L71e3A8>46*>63803>o6=?0;66g>5683>>o6=10;66a>e`83>>{e1<7:50;2x 73328km7E<8b:J11==#9?81?:5f14494?=n9<=1<75f14:94?=h9lk1<75rb400>5<2290;w)<:4;3a4>N5?k1C>864$041>635<5<h0D?;7;%356?523`;>:7>5;h363?6=3`;>47>5;h36=?6=3f;nm7>5;|`566<72:0;6=u+24695dc<@;=i7E<:8:&227<5j2c:9;4?::k212<722e:il4?::a276=83?1<7>t$377>4d73A86=4?{%060?7e82B9;o5G24:8 4052:<0e<;9:188m4302900e<;7:188m43>2900c50z&111<6j91C>:l4H37;?!71:39=7d?:6;29?l72?3:17d?:8;29?l7213:17b?ja;29?xd2m;0;684?:1y'602=9k:0D?9m;I06<>"6>;08:6g>5783>>o6=>0;66g>5983>>o6=00;66a>e`83>>{e=jk1<7;50;2x 73328h;7E<8b:J11==#9?81?;5f14494?=n9<=1<75f14:94?=n9<31<75`1dc94?=zj<,8<96>84i075>5<5<5<55;294~"5==0:n=5G26`8L73?3-;=>7=9;h362?6=3`;>;7>5;h3657>5;n3fe?6=3th>4l4?:483>5}#:<>1=o>4H35a?M4202.::?4<6:k213<722c:9:4?::k21=<722c:944?::m2ad<722wi:N5=11/=;<5379j500=831b=8950;9j50>=831b=8750;9l5`g=831vn;>l:186>5<7s-8>87?m0:J13g=O:<20(<8=:248m4312900e<;8:188m43?2900e<;6:188k4cf2900qo;i4;291?6=8r.9994>b19K62d<@;?37)?92;15?l72>3:17d?:7;29?l7203:17d?:9;29?j7bi3:17pl:e083>0<729q/>8:51c28L71e3A8>46*>63802>o6=?0;66g>5683>>o6=10;66g>5883>>i6mh0;66sm5b;94?3=83:p(?;;:0`3?M40j2B9955+170973=n9<<1<75f14594?=n9<21<75f14;94?=h9lk1<75rb4`5>5<2290;w)<:4;3a4>N5?k1C>864$041>605<5<h0D?;7;%356?513`;>:7>5;h363?6=3`;>47>5;h36=?6=3f;nm7>5;|`6<<<72<0;6=u+24695g6<@;=i7E<:8:&227<4>2c:9;4?::k212<722c:954?::k21<<722e:il4?::a24c=83?1<7>t$377>4d73A86=4?{%060?7e82B9;o5G24:8 4052:<0e<;9:188m4302900e<;7:188m43>2900c50z&111<6j91C>:l4H37;?!71:39=7d?:6;29?l72?3:17d?:8;29?l7213:17b?ja;29?xd2m90;684?:1y'602=9k:0D?9m;I06<>"6>;08:6g>5783>>o6=>0;66g>5983>>o6=00;66a>e`83>>{e=j21<7;50;2x 73328h;7E<8b:J11==#9?81?;5f14494?=n9<=1<75f14:94?=n9<31<75`1dc94?=zj6=4::183!42<3;i<6F=7c9K60><,8<96>84i075>5<5<5<55;294~"5==0:n=5G26`8L73?3-;=>7=9;h362?6=3`;>;7>5;h3657>5;n3fe?6=3th>454?:483>5}#:<>1=o>4H35a?M4202.::?4<6:k213<722c:9:4?::k21=<722c:944?::m2ad<722wi:N5=11/=;<5379j500=831b=8950;9j50>=831b=8750;9l5`g=831vn;>n:186>5<7s-8>87?m0:J13g=O:<20(<8=:248m4312900e<;8:188m43?2900e<;6:188k4cf2900qo;i2;291?6=8r.9994>b19K62d<@;?37)?92;15?l72>3:17d?:7;29?l7203:17d?:9;29?j7bi3:17pl:dg83>0<729q/>8:51c28L71e3A8>46*>63802>o6=?0;66g>5683>>o6=10;66g>5883>>i6mh0;66sm5b594?3=83:p(?;;:0`3?M40j2B9955+170973=n9<<1<75f14594?=n9<21<75f14;94?=h9lk1<75rb4`7>5<2290;w)<:4;3a4>N5?k1C>864$041>605<5<h0D?;7;%356?513`;>:7>5;h363?6=3`;>47>5;h36=?6=3f;nm7>5;|`6<2<72<0;6=u+24695g6<@;=i7E<:8:&227<4>2c:9;4?::k212<722c:954?::k21<<722e:il4?::a124=8391<7>t$377>4gb3A86=4?{%060?7e82B9;o5G24:8 4052:<0e<;9:188m4302900e<;7:188m43>2900c50z&111<6j91C>:l4H37;?!71:39=7d?:6;29?l72?3:17d?:8;29?l7213:17b?ja;29?xd2n80;684?:1y'602=9k:0D?9m;I06<>"6>;08:6g>5783>>o6=>0;66g>5983>>o6=00;66a>e`83>>{e=mo1<7;50;2x 73328h;7E<8b:J11==#9?81?;5f14494?=n9<=1<75f14:94?=n9<31<75`1dc94?=zj<,8<96>84i075>5<5<5<55;294~"5==0:n=5G26`8L73?3-;=>7=9;h362?6=3`;>;7>5;h3657>5;n3fe?6=3th>544?:483>5}#:<>1=o>4H35a?M4202.::?4<6:k213<722c:9:4?::k21=<722c:944?::m2ad<722wi95850;794?6|,;??6N5=11/=;<5379j500=831b=8950;9j50>=831b=8750;9l5`g=831vn98?:181>5<7s-8>87?nd:J13g=O:<20(<8=:348m4312900c7>50z&111<6im1C>:l4H37;?!71:38=7d?:6;29?j7bi3:17pl;6583>7<729q/>8:51`f8L71e3A8>46*>63812>o6=?0;66a>e`83>>{e;5f14494?=h9lk1<75rb54;>5<5290;w)<:4;3b`>N5?k1C>864$041>705<=m7>52;294~"5==0:mi5G26`8L73?3-;=>7<9;h362?6=3f;nm7>5;|`72f<72;0;6=u+24695db<@;=i7E<:8:&227<5>2c:9;4?::m2ad<722wi8;k50;094?6|,;??6N5=11/=;<5279j500=831d=ho50;9~f15729096=4?{%060?7fl2B9;o5G24:8 4052;<0e<;9:188k4cf2900qo:<2;296?6=8r.9994>ae9K62d<@;?37)?92;05?l72>3:17b?ja;29?xd3;=0;6?4?:1y'602=9hn0D?9m;I06<>"6>;09:6g>5783>>i6mh0;66sm42494?4=83:p(?;;:0cg?M40j2B9955+170963=n9<<1<75`1dc94?=zj=936=4=:183!42<3;jh6F=7c9K60><,8<96?84i075>5<h0D?;7;%356?413`;>:7>5;n3fe?6=3th??n4?:383>5}#:<>1=lj4H35a?M4202.::?4=6:k213<722e:il4?::a06c=8381<7>t$377>4gc3A879:181>5<7s-8>87?nd:J13g=O:<20(<8=:348m4312900c03:1>7>50z&111<6im1C>:l4H37;?!71:38=7d?:6;29?j7bi3:17pl<9`83>7<729q/>8:51`f8L71e3A8>46*>63812>o6=?0;66a>e`83>>{e;0i1<7<50;2x 73328ko7E<8b:J11==#9?81>;5f14494?=h9lk1<75rb2;f>5<5290;w)<:4;3b`>N5?k1C>864$041>705<52;294~"5==0:mi5G26`8L73?3-;=>7<9;h362?6=3f;nm7>5;|`0e7<72;0;6=u+24695db<@;=i7E<:8:&227<5>2c:9;4?::m2ad<722wi?l:50;094?6|,;??6N5=11/=;<5279j500=831d=ho50;9~f16729096=4?{%060?7fl2B9;o5G24:8 4052;<0e<;9:188k4cf2900qo:?2;296?6=8r.9994>ae9K62d<@;?37)?92;05?l72>3:17b?ja;29?xd38=0;6?4?:1y'602=9hn0D?9m;I06<>"6>;09:6g>5783>>i6mh0;66sm41494?4=83:p(?;;:0cg?M40j2B9955+170963=n9<<1<75`1dc94?=zj=:36=4=:183!42<3;jh6F=7c9K60><,8<96?84i075>5<h0D?;7;%356?413`;>:7>5;n3fe?6=3th?5}#:<>1=lj4H35a?M4202.::?4=6:k213<722e:il4?::a05c=8381<7>t$377>4gc3A889:181>5<7s-8>87?nd:J13g=O:<20(<8=:348m4312900c7>50z&111<6im1C>:l4H37;?!71:38=7d?:6;29?j7bi3:17pl<6`83>7<729q/>8:51`f8L71e3A8>46*>63812>o6=?0;66a>e`83>>{e;?i1<7<50;2x 73328ko7E<8b:J11==#9?81>;5f14494?=h9lk1<75rb24f>5<5290;w)<:4;3b`>N5?k1C>864$041>705<52;294~"5==0:mi5G26`8L73?3-;=>7<9;h362?6=3f;nm7>5;|`037<72;0;6=u+24695db<@;=i7E<:8:&227<5>2c:9;4?::m2ad<722wi?::50;094?6|,;??6N5=11/=;<5279j500=831d=ho50;9~f6b729096=4?{%060?7fl2B9;o5G24:8 4052;<0e<;9:188k4cf2900qo=k2;296?6=8r.9994>ae9K62d<@;?37)?92;05?l72>3:17b?ja;29?xd4l=0;6?4?:1y'602=9hn0D?9m;I06<>"6>;09:6g>5783>>i6mh0;66sm3e494?4=83:p(?;;:0cg?M40j2B9955+170963=n9<<1<75`1dc94?=zj:n36=4=:183!42<3;jh6F=7c9K60><,8<96?84i075>5<h0D?;7;%356?413`;>:7>5;n3fe?6=3th8hn4?:383>5}#:<>1=lj4H35a?M4202.::?4=6:k213<722e:il4?::a7ac=8381<7>t$377>4gc3A8=9:181>5<7s-8>87?nd:J13g=O:<20(<8=:348m4312900c7>50z&111<6im1C>:l4H37;?!71:38=7d?:6;29?j7bi3:17pl<3`83>7<729q/>8:51`f8L71e3A8>46*>63812>o6=?0;66a>e`83>>{e;:i1<7<50;2x 73328ko7E<8b:J11==#9?81>;5f14494?=h9lk1<75rb21f>5<5290;w)<:4;3b`>N5?k1C>864$041>705<52;294~"5==0:mi5G26`8L73?3-;=>7<9;h362?6=3f;nm7>5;|`007<72;0;6=u+24695db<@;=i7E<:8:&227<5>2c:9;4?::m2ad<722wi?9:50;094?6|,;??6N5=11/=;<5279j500=831d=ho50;9~f11>29096=4?{%060?7fl2B9;o5G24:8 4052;<0e<;9:188k4cf2900qo:;9;296?6=8r.9994>ae9K62d<@;?37)?92;05?l72>3:17b?ja;29?xd4io0;6?4?:1y'602=9hn0D?9m;I06<>"6>;09:6g>5783>>i6mh0;66sm40;94?4=83:p(?;;:0cg?M40j2B9955+170963=n9<<1<75`1dc94?=zj:=m6=4=:183!42<3;jh6F=7c9K60><,8<96?84i075>5<h0D?;7;%356?413`;>:7>5;n3fe?6=3th88k4?:383>5}#:<>1=lj4H35a?M4202.::?4=6:k213<722e:il4?::a27d=83>1<7>t$377>4ga3A8ad9K62d<@;?37)?92;10?l72>3:17d?:7;29?j7bi3:17pl;bc83>0<729q/>8:51c28L71e3A8>46*>63801>o6=?0;66g>5683>>o6=10;66g>5883>>i6mh0;66sm4c;94?2=83:p(?;;:0ce?M40j2B9955+170971=n9<<1<75f14594?=n9<21<75`1dc94?=zj=ho6=4::183!42<3;i<6F=7c9K60><,8<96>64i075>5<5<5<im7>55;294~"5==0:n=5G26`8L73?3-;=>7=:;h362?6=3`;>;7>5;h3657>5;n3fe?6=3th?nk4?:483>5}#:<>1=o>4H35a?M4202.::?4<5:k213<722c:9:4?::k21=<722c:944?::m2ad<722wi9?;50;194?6|,;??6N5=11/=;<5329j500=831b=8950;9l5`g=831vn8<7:186>5<7s-8>87?m0:J13g=O:<20(<8=:278m4312900e<;8:188m43?2900e<;6:188k4cf2900qo;=6;290?6=8r.9994>ag9K62d<@;?37)?92;17?l72>3:17d?:7;29?l7203:17b?ja;29?xd2:h0;684?:1y'602=9k:0D?9m;I06<>"6>;0846g>5783>>o6=>0;66g>5983>>o6=00;66a>e`83>>{e=;=1<7;50;2x 73328h;7E<8b:J11==#9?81?85f14494?=n9<=1<75f14:94?=n9<31<75`1dc94?=zj<8h6=4::183!42<3;i<6F=7c9K60><,8<96>;4i075>5<5<5<55;294~"5==0:n=5G26`8L73?3-;=>7?:0:k213<722c:9:4?::k21=<722c:944?::m2ad<722wi9nk50;794?6|,;??6N5=11/=;<51428m4312900e<;8:188m43?2900e<;6:188k4cf2900qo;n4;291?6=8r.9994>b19K62d<@;?37)?92;37e>o6=?0;66g>5683>>o6=10;66g>5883>>i6mh0;66sm56594?3=83:p(?;;:0`3?M40j2B9955+170951g5<5<h0D?;7;h361?6=3f;nm7>5;|`77c<72;0;6=u+24695d0<@;=i7E<:8:k210<722e:il4?::a7d3=8381<7>t$377>4g13A82B9;o5G24:8m4322900c7>50z&111<6i?1C>:l4H37;?l72=3:17b?ja;29?xd4lo0;6?4?:1y'602=9h<0D?9m;I06<>o6=<0;66a>e`83>>{e;=?1<7<50;2x 73328k=7E<8b:J11==n96=44o0gb>5<52;294~"5==0:m;5G26`8L73?3`;>97>5;n3fe?6=3th=>44?:b094?6|,;??6?=8;I04f>N5=11Q9i4l{32964<5?3836?m52e81a?4a2;31>l4<0;12>xh68?0;7c?=8;28 72c28>i7)<:0;08 4042:1/=;:53:&220<43-;=:7=4$044>6=#9?21?6*>6880?!71i390(<8m:29'53e=;2.::i4<;%35a?5<,85+16297>"6?8087)?82;18 4142:1/=::53:&230<43-;<:7=4$054>6=#9>21?6*>7880?!70i390(<9m:29'52e=;2.:;i4<;%34a?5<,8=m6>5+19297>"608087)?72;18 4>42:1/=5:53:&2<0<43-;3:7=4$0:4>6=#9121?6*>8880?!7?i390(<6m:29'5=e=;2.:4i4<;%3;a?5<,82m6>5+18297>"618087)?62;18 4?42:1/=4:53:&2=0<43-;2:7=4$0;4>6=#9021?6*>9880?!7>i390(<7m:29'55+1`297>"6i8087)?n2;18 4g228o27)?n3;08 4g32;1/=8o53:&21g<43-;>o7=4$07g>6=#95g80?!7f?3;?n6*>a9820g=#::21=h74$31:>4c>3g8?;7?=;o077013-8=47<96:l12<<6:2d9:l4>2:&114<53`?m6=44i7294?=n><0;66g96;29?l73?3:17d<;9;29?l43i3:17d?;8;29?l42:3:17d<:3;29?j062900c;<50;9j7c<72-;m<7=j;o3fb?6<3`9o6=4+1g297`=i9ll1=65f3b83>!7a839n7c?jf;08?l5e290/=k>53d9m5``=;21b?l4?:%3e4?5b3g;nj7:4;h6;>5<#9o:1?h5a1dd91>=n<>0;6)?i0;1f?k7bn3<07d:9:18'5c6=;l1e=hh57:9j00<72-;m<7=j;o3fb?><3`>?6=4+1g297`=i9ll1565f4283>!7a839n7c?jf;c8?l25290/=k>53d9m5``=j21b8<4?:%3e4?5b3g;nj7m4;h63>5<#9o:1?h5a1dd9`>=n;00;6)?i0;1f?k7bn3o07d:i:18'5c6=h6=4+1g290`=i9ll1>65f4c83>!7a83>n7c?jf;18?l2f290/=k>54d9m5``=<21b954?:%3e4?2b3g;nj7;4;h74>5<#9o:18h5a1dd92>=n=?0;6)?i0;6f?k7bn3=07d;::18'5c6=!7a83>n7c?jf;`8?l36290/=k>54d9m5``=k21b9=4?:%3e4?2b3g;nj7j4;h6:>5<#9o:18h5a1dd9a>=n1o0;6)?i0;;f?k7bn3:07d7k:18'5c6=1l1e=hh51:9j=g<72-;m<77j;o3fb?4<3`3j6=4+1g29=`=i9ll1?65f9883>!7a833n7c?jf;68?l??290/=k>59d9m5``==21b5:4?:%3e4??b3g;nj784;h;5>5<#9o:15h5a1dd93>=n1<0;6)?i0;;f?k7bn3207d7;:18'5c6=1l1e=hh59:9j=6<72-;m<77j;o3fb?g<3`396=4+1g29=`=i9ll1n65f9183>!7a833n7c?jf;a8?l>a290/=k>59d9m5``=l21b4h4?:%3e4??b3g;nj7k4;h:g>5<#9o:15h5a1dd9b>=n0j0;6)?i0;;f?k7bn3;;76g7b;29 4`720o0bf290/=k>59d9m5``=9;10e5750;&2b5<>m2d:ik4>3:9j<=<72-;m<77j;o3fb?7332c3;7>5$0d3>5<#9o:15h5a1dd953=f18:a>h6mo0:;65fa583>!7a833n7c?jf;3;?>of;3:1(4b<3`3:6=4+1g29=`=i9ll1=h54i9494?"6n902i6`>eg82b>=nk90;6)?i0;`e?k7bn3:07dlj:18'5c6=jo1e=hh51:9jff<72-;m<7li;o3fb?4<3`hi6=4+1g29fc=i9ll1?65fb`83>!7a83hm7c?jf;68?ld>290/=k>5bg9m5``==21bn54?:%3e4?da3g;nj784;h`4>5<#9o:1nk5a1dd93>=nj?0;6)?i0;`e?k7bn3207dl::18'5c6=jo1e=hh59:9jf1<72-;m<7li;o3fb?g<3`h86=4+1g29fc=i9ll1n65fb083>!7a83hm7c?jf;a8?ld7290/=k>5bg9m5``=l21bmk4?:%3e4?da3g;nj7k4;hcf>5<#9o:1nk5a1dd9b>=nim0;6)?i0;`e?k7bn3;;76gnc;29 4`72kl0b5bg9m5``=9;10elo50;&2b53:9je<<72-;m<7li;o3fb?7332cj47>5$0d3>g`5<#9o:1nk5a1dd953=f18ab>h6mo0:;65fc483>!7a83hm7c?jf;3;?>od<3:1(4b<3`h96=4+1g29fc=i9ll1=h54i`594?"6n90ij6`>eg82b>=nlo0;6)?i0;ff?k7bn3:07djk:18'5c6=ll1e=hh51:9j`f<72-;m<7jj;o3fb?4<3`ni6=4+1g29``=i9ll1?65fe583>!7a83o87c?jf;28?lc5290/=k>5e29m5``=921bi<4?:%3e4?c43g;nj7<4;hg3>5<#9o:1i>5a1dd97>=n:?:1<7*>f1811c=i9ll1<65f24g94?"6n9099k5a1dd95>=n:f1811c=i9ll1>65f24a94?"6n9099k5a1dd97>=n:??1<7*>f18121=i9ll1<65f27194?"6n909:95a1dd95>=n:?81<7*>f18121=i9ll1>65f27394?"6n909:95a1dd97>=hnl0;6)?i0;dg?k7bn3:07bhl:18'5c6=nm1e=hh51:9lbd<72-;m<7hk;o3fb?4<3fl26=4+1g29ba=i9ll1?65`f983>!7a83lo7c?jf;68?j`0290/=k>5fe9m5``==21dj;4?:%3e4?`c3g;nj784;nd6>5<#9o:1ji5a1dd93>=hn=0;6)?i0;dg?k7bn3207bh<:18'5c6=nm1e=hh59:9lb7<72-;m<7hk;o3fb?g<3fl:6=4+1g29ba=i9ll1n65`eg83>!7a83lo7c?jf;a8?jcb290/=k>5fe9m5``=l21dii4?:%3e4?`c3g;nj7k4;ng`>5<#9o:1ji5a1dd9b>=hmk0;6)?i0;dg?k7bn3;;76aja;29 4`72on0b290/=k>5fe9m5``=9;10ch650;&2b53:9la2<72-;m<7hk;o3fb?7332en:7>5$0d3>cb40<3f;;87>5$0d3>cb4><3f;;>7>5$0d3>cb4g<3f;;<7>5$0d3>cb5<#9o:1ji5a1dd95f=f18e`>h6mo0:h65`f183>!7a83lo7c?jf;3f?>ib=3:1(c;29 4`728;m7c?jf;08?j76j3:1(a;29 4`728;m7c?jf;68?j7613:1(8;29 4`728;m7c?jf;48?j76?3:1(6;29 4`728;m7c?jf;:8?j76=3:1(4;29 4`728;m7c?jf;c8?j76;3:1(1;29 4`728;m7c?jf;a8?j7683:1(i68j0;6)?i0;32b>h6mo0:=65`11`94?"6n90:=k5a1dd957=5:9l571=83.:j=4>1g9m5``=9?10c<<9:18'5c6=98l0b2583>!7a83;:j6`>eg82=>=h9;91<7*>f1825c=i9ll1=l54o001>5<#9o:1=4d<3f;9=7>5$0d3>47a3g;nj7?l;:m25a<72-;m<7?>f:l2ac<6l21d=<<50;&2b5<69o1e=hh51d98k460290/=k>510d8j4ca28l07b?=d;29 4`7288h7c?jf;28?j75j3:1(m16?n;5629>7f2=>:16?n65629>7f0=>:16?n95629>7fd=>:16?n75629>7fg=>:16?nm5629>7fb=>:16?5l5629>7=g=>:16?5k5629>7=e=>:16?5j5629>7<7=>:16?5h5629>7<6=>:16?4<5629>7<5=>:16?8o5629>70d=>:16?8m5629>70b=>:16?8k5629>70`=>:16?;>5629>737=>:16?;<5629>735=>:169:<51dc8yv7293:1;vP9c:\214=:=ok1>>84=700>43134?m57?:7:?6e1<6=>169l?51478yv43>3:19vP=479>124=9<=01;:63:768213=z{0}Y:=h01;<::0d2?80503;m=6392682b4=:>;<1=k?4}r372?6=0rT=n6P>479>1f`=::<0189=:075?805j3;>;63:cd8212=:=>=1=894=457>4323ty=i7>52dy]2`=:<1l1:>5249g926=:<081:>52482926=:<0;1:>52487926=:<091:>52486926=:<0<1:>52485926=:<52446926=:<<21:>52444926=:<<=1:>5244`926=:<<31:>5244c926=:<5244f926=:<;?1:>52436926=:<;21:>52434926=:<;=1:>5243`926=:<;31:>5243c926=:<;i1:>5243f926=:;o>1:>523g7926=:;o<1:>523g5926=:;o21:>523g;926=:;ok1:>523g`926=:;oi1:>523gf926=:>;91=ho4=70:>70734<957<:e:?56<<5=m16:?7524a8yv44j3:1onuQ27`8Z7313W;no6P=589]5c4>0R?9<;_046>X5?81U>:>4^34e?[41m2T9:i5Q2578Z7243W8?>6P=409]616549a:?563<1i27?9h494:?71ck475:?774475:?770475:?0b`<1<278jk475:?744475:?740475:?0g`<1<278ok475:?0`4475:?0`0475:?6`1h8475:?6`3h:475:?6`=i:475:?6a=i4475:?6adio475:?6bc;i475:?63`;k475:?6<54k475:?6=55<475:?6=75>475:?6e<ml475:?6egmn475:?6eann475:?6fanh475:?6fco=475:?56<<2n27=>4490:?56<<5<016:?7525c8934>2:l01;<6:508934>2=;01;<6:528934>2:301;<6:5d8934>2<801;<6:438934>2<:01;<6:5;8934>20l01;<6:8f8934>20h01;<6:8c8934>20301;<6:8:8934>20=01;<6:848934>20?01;<6:868934>20901;<6:808934>20:01;<6:9d8934>21o01;<6:9f8934>2j:01;<6:cg8934>2ki01;<6:c`8934>2kk01;<6:c;8934>2k201;<6:c58934>2k<01;<6:c78934>2k>01;<6:c18934>2k;01;<6:c28934>2hl01;<6:`g8934>2hn01;<6:`a8934>2hh01;<6:`c8934>2h301;<6:`:8934>2j=01;<6:b48934>2j?01;<6:b68934>2j901;<6:b08934>2j;01;<6:cf8934>2k801;<6:`58934>2ml01;<6:ef8934>2l>01;<6:d08934>2l;01;<6:d28934>2;<>708=9;057>;1:009:?5263;963754z\13==:>;91=894=4d:>43134?j87?:6:p1<<72;qU9452567966054by]66g<5?8>68k4=705>0c<5:i>68k4=2a7>0c<5:i368k4=2a5>0c<5:i<68k4=2aa>0c<5:i268k4=2ab>0c<5:ih68k4=2ag>0c<5:2i68k4=2:b>0c<5:2n68k4=2:`>0c<5:2o68k4=2;2>0c<5:2m68k4=2;3>0c<5:3968k4=2;0>0c<5:?j68k4=27a>0c<5:?h68k4=27g>0c<5:?n68k4=27e>0c<5:<;68k4=242>0c<5:<968k4=240>0c<50c<5=n868k4=5f1>0c<5=n:68k4=5f3>0c<5=im68k4=5af>0c<5=io68k4=5a`>0c<5=ii68k4=5ab>0c<5<;<68k4=435>0c<5<;>68k4=437>0c<5<;868k4=431>0c<5<;:68k4=433>0c<5<:m68k4=42f>0c<50c<50c<50c<5<>n68k4=46g>0c<5<>h68k4=46a>0c<5<<368k4=444>0c<5<<=68k4=446>0c<5<0c<5<<968k4=442>0c<5<<;68k4=47e>0c<5?826;84}r05g?6==?qU>;m4=70;>0c<5?8<68k4=5:e>0c<5=2n68k4=5;1>0c<5=3;68k4=5;2>0c<5=3>68k4=5;0>0c<5=3?68k4=5;5>0c<5=3<68k4=576>0c<5=??68k4=57;>0c<5=?=68k4=574>0c<5=?i68k4=57:>0c<5=?j68k4=57`>0c<5=?o68k4=506>0c<5=8?68k4=50;>0c<5=8=68k4=504>0c<5=8i68k4=50:>0c<5=8j68k4=50`>0c<5=8o68k4=2d7>0c<5:l>68k4=2d5>0c<5:l<68k4=2d;>0c<5:l268k4=2db>0c<5:li68k4=2d`>0c<5:lo68k4=4db>0c<50c<5=k268k4=5c;>0c<5=k<68k4=5c5>0c<5=k>68k4=5c7>0c<5=k868k4=5c1>0c<5=k:68k4=5g4>0c<5=o=68k4=5g6>0c<5=o?68k4=5g0>0c<5=o968k4=5g2>0c<5=o;68k4=5fe>0c<5=nn68k4=5da>0c<5=lj68k4=5d:>0c<5=l368k4=5d4>0c<5=l=68k4=5d6>0c<5=l?68k4=5d0>0c<5=l968k4=463>0c<5<9m68k4=41f>0c<5<9o68k4=41`>0c<5<9i68k4=41b>0c<5<9268k4=41;>0c<5<9<68k4=70:>3356z\1`==:=8=1>>84=4d6>43?34?n>7?:8:?6=a<6=01695o514;8yv4c>3:1:vP=d79>140=::<018h::075?83b:3;>:63:9e8212=:=1k1=894}r0g1?6=>rT9h8525079660<55n4>589>1=?=9<30q~;21j0:9:5259;950156z\1`6=:=891>>84=4d0>43?34?n<7?:8:?6=g<6=016956514;8yv4c:3:1:vP=d39>144=::<018h<:075?83b83;>:63:9c8212=:=121=894}r0g5?6=>rT9h<525039660<55l4>589>1=1=9<30q~5224890`528?=70;kf;362>;21h0:9:52595950156z\1gc=:=9l1>>84=4d2>43?34?oi7?:8:?6=<<6=016958514;8yv4dm3:1:vP=cd9>15c=::<018h>:075?83cm3;>:63:988212=:=1<1=894}r:7>5<0sW8n?6P74:?0ba<5;?1699>56`9>153=9<<01>k6:075?805139o7p}72;293~X5m81U4?523ga9660<5<:=6<;9;<731?72?278hh4>579>27?=;j1v5?50;5xZ7c73W2:70=ib;002>;28>0:9;525149501<5:nh6<;9;<41=?5e3ty3<7>57z\1`c=Y0916?ko52248906?28?=70;?7;363>;4lh0:9;5263;97d=z{>l1<79t^3ff?[1a349m57<<6:?64<<6=?169=65145896b?28?=708=9;6;?xu0m3:1;vP=de9]3`=:;o21>>84=42b>43134?;57?:7:?0`3<6=?16:?75469~w2b=83=pR?jl;_5g?85a?388:63:0c8213=:=9k1=894=2f7>43134<957:9;|q4g?6=?rT9ho5Q7b9>7c0=::<018>l:075?837j3;>;63;31885rs6`94?1|V;nj7S9m;<1e1?44>27>579>15e=9<=01>j?:075?80513>?7p}8a;292~X5l01U;l523g69660<5<:o6<;8;<1gb?72=27=>44;3:p6d7=83?pR?o>;<1:7?44>27>j84>589>1=g=9<201>9i:075?xu51o0;68uQ28d896?52;9=70;i5;363>;20h0:9;52366950055z\1=`=:;0;1>>84=4d7>43>34?357?:8:?037<6=?1v?7k:186[4>l2785=4=379>1c2=9<=01866:075?85083;>:6s|28a94?3|V;3h70=7f;002>;2n:0:945259:950><5:4l4=2:f>75134?m?7?:7:?6<=<6=?16?;m51448yv4>i3:19vP=9`9>7=b=::<018h=:07:?83??3;>463<6`8213=z{;326=4:{_0:=>;40j09?;525g09501<5<2<6<;9;<152wx>4650;7xZ7??3493n7<<6:?6b4<6=016958514:8960128?=7p}=9683>0}Y:0=01>6n:315?83a93;>;63:878213=:;>?1=8;4}r5:>50<>=9<<018k=:07:?853n3;>:6392887`>{t?>0;65uQ2`c8Z21<5:<96?=9;<6:=?72>27?554>569>1`4=9<=01>:;:075?80513>h7p}86;29<~X5i01U;;523739660<5=3j6<;9;<6:=?72?27>i<4>589>714=9<<01;<6:5`8yv122903wS;4>909?;5248`9500<5=3j6<;8;<7f5?72?2788=4>579>27?=;31j0:9;5248`9501<527=>44:8:p36<721qU>l84^618963b2;9=70:6d;362>;31j0:9:525d29501<5:9h6<;9;<41=?303ty<>7>58z\1e0=Y?;16?8j5224891?b28?=70:6d;363>;2lo0:945232c9500<5?826884}r52>5;4;10:9;5263;910=z{>:1<76t^3c0?[17349>n7<<6:?7e5<6=?1684h5145890bb28?270=<6;362>;1:00>86s|6g83>2}Y:h80R;h4=27b>75134>j<7?:7:?6``<6=>16?9;51478934>2<90q~168lo52248934728?2708?d;36=>;2kh0:94525c5950?56z\1f0=:>84=703>43034<;h7?:7:?6gd<6=>169o951458yv4e<3:1:vP=b59>0d>=::<01;?i:07:?807k3;>563:c8821<=:=k<1=874}r0a7?6=>rT9n>524`59660<5?;m6<;8;<43g?72?27>o44>569>1g0=9<=0q~;2k10:94525c7950?56z\1f4=:>84=73f>43034<;n7?:7:?6g=<6=>169o;51458yv4e83:1:vP=b19>0d2=::<01;?k:07:?807i3;>563:c6821<=:=k>1=874}r0bb?6=>rT9mk524`19660<5?;o6<;8;<43e?72?27>o:4>569>1g2=9<=0q~;2k?0:94525c1950?56z\1ea=:>84=73`>43034<;57?:7:?6g3<6=>169o=51458yv4d:3:18vP=c39>07b=::<01;>k:07;?82613;>:6s|2b294?2|V;i;70:=c;002>;18m0:9;5241g950054z\1fc=:<;h1>>84=72`>43?34>;o7?:6:p6gc=83>pR?lj;<61e?44>27=579>05g=9<<0q~{t:ki1<7:t^3``?8250388:6390c8213=:<9<1=884}r0af?6=2wx>oo50;6xZ7df34>9:7<<6:?54d<6=?168=<51448yv4e13:18vP=b89>073=::<01;>6:07;?82783;>:6s|2c:94?2|V;h370:=4;002>;1800:9;5241d950355z\1ga=:<>84=703>43?34?i;7?:8:?70<<6=?1v?mm:186[4dj27?9n4=379>276=9<<018l8:075?824m3;>:6s|2bc94?3|V;ij70::b;002>;19o0:95525c4950><5=9h6<;9;|q1g<<72n74=57b>75134<:j7?:6:?6f3<6=?168>o51448yv4d03:19vP=c99>00?=::<01;?j:07;?83e=3;>463;398213=z{;i<6=4:{_0`3>;3=109?;5260g9500<56<;9;<602?72>2wx>n850;7xZ7e134>>;7<<6:?55a<6=1169o:514:8915328?=7p}=c483>0}Y:j?019;9:315?806l3;>:63:b58213=:<:81=884}r0`0?6==rT9o9524479660<5?;h6<;7;<7a7?72027??=4>579~w7e4290>wS{t9:i1<7{t9:31<7{t9:=1<7{t9:?1<7{t9=?1<7?708=9;31a>{t9=91<79708=9;310>{t9=;1<7;708=9;316>{t9:l1<7{t9:n1<76s|12194?4|V898708=9;333>{tl80;6?uQd09>27?=lj1vnh50;0xZf`<5?8265m4}raf>5<5sWin708=9;:a?xudl3:1>vPld:?56<;31445rsb`94?4|Vjh01;<6:9:8yvef2909wSmn;<41=?>03tyh57>52z\`=>;1:00j:6s|d`83>7}Ylh16:?75a49~wa?=838pRi74=70:>ad44n3:p`3<72;qUh;5263;9e7=z{m?1<72h;0q~j;:181[b334<957o?;|qg7?6=:rTo?639288:g>{tl;0;6?uQd39>27?=181vn650;0xZf><5?826584}r3a0?6=98q6>:j51df8913b21?019hj:978960321?01>mj:978965321?018j;:76890c02?>018hi:76893752?>0189l:76890>a2?>018o6:76890dd2?>01;<6:064?xu1:?0;6?u263792d=:>;<1>>84}r410?6=m::0d2?85d<3<<70=l8;44?85d>3<<70=l7;44?85dj3<<70=l9;44?85di3<<70=lc;44?85dl3<<70=7b;44?85?i3;m=63<8d853>;40j0=;63<8e853>;4180=;63<8g853>;4190=;63<93853>;41:0=;63<5`853>;4=k0=;63<5b853>;4=m0=;63<5d853>;4=o0=;63<61853>;4>80=;63<63853>;4>:0=;63:cg82b4=:=>?1=k?4=5f0>31<5=n96;94=5f2>31<5=n;6;94=5ae>31<5=in6;94=5ag>31<5=ih6;94=5aa>31<5=ij6;94=434>31<5<;=6;94=436>31<5<;?6;94=430>31<5<;96;94=432>31<5<;;6;94=42e>31<5<:n6;94=477>31<531<531<5<>m6;94=46f>31<5<>o6;94=46`>31<5<>i6;94=44;>31<5<<<6;94=445>31<5<<>6;94=447>31<5<<86;94=441>31<5<<:6;94=443>31<543?34<957<:3:p271=83?>w08=8;40?805?388:63;8g82b4=:<1o1=k?4=5;1>31<5=3;6;94=5;2>31<5=3>6;94=5;0>31<5=3?6;94=5;5>31<5=3<6;94=576>4`634>>8788;<66>:788;<663?0034>>n788;<66=?0034>>m788;<66g?0034>>h788;<611?0034>987?i1:?76=<1?27?>;497:?762<1?27?>o497:?76<<1?27?>l497:?76f<1?27?>i497:?0b1<1?278j8497:?0b3<1?278j:497:?0b=<1?278j4497:?0bd<1?278jo497:?0bf<1?278ji497:?6bd<6n8169l<51g3891gf2?=019o6:75891g?2?=019o8:75891g12?=019o::75891g32?=019o<:75891g52?=019o>:75891c02?=019k9:75891c22?=019k;:75891c42?=019k=:75891c62?=019k?:75891ba2?=019jj:75891`e2?=019hn:75891`>2?=019h7:75891`02?=019h9:75891`22?=019h;:75891`42?=019h=:75890272?=018=i:758905b2?=018=k:758905d2?=018=m:758905f2?=018=6:758905?2?=018=8:758934>2;?97p}92983>7}:>;21>>84=704>3g52z?7e`9~w1>22908w0:7f;002>;2k?0:9552472950053z?7<`<1i27?9h4=4b9>03`=9lk0q~:74;297~;30l09?;525b49500<5=025=9lk0q~:78;297~;31;09?;525b:9500<5=<=6<;9;|q73f<72;q684>56`9>027=9lk0q~:76;297~;31909?;525b59500<5=<96<;9;|q73a<72;q684?56`9>024=9lk0q~:77;297~;31809?;525b5950><5=020=9lk0q~:7b;297~;31<09?;525b;950><5=022=9lk0q~:79;297~;31:09?;525b:950><5=<36<;9;|q7<5<72;q684:56`9>023=9lk0q~:7a;297~;31=09?;525b;9500<5=021=9lk0q~:7c;297~;31?09?;525bc9500<5=02>=9lk0q~:7d;297~;31>09?;525bc950><5==26<;9;|q71`<72:q688k51dc8913a2?>0199?:768yv2183:1?v3;5g810f=:<>:1=lo4=543>4cf3ty?9k4?:2y>00`=9lk0198>:76891162?>0q~:92;297~;3>8098n5246395dg<5=<960199=:768yv21<3:1?v3;62810f=:<>81=lo4=547>4cf3ty?:>4?:2y>035=9lk0198::76891142?>0q~:96;297~;3><098n5246195dg<5=<=60199;:768yv2103:1?v3;66810f=:<>>1=lo4=54;>4cf3ty?::4?:2y>031=9lk01986:76891122?>0q~:9a;297~;3>0098n5246795dg<5=01999:768yv21k3:1?v3;6c810f=:<><1=lo4=54`>4cf3ty?:o4?:2y>03d=9lk0198k:76891102?>0q~:9e;297~;3>m098n5246595dg<5=0q~:89;296~;3?10:ml5246;95`g?n7>52z?710<1i27?8=4>e`9~w12f2908w0::4;4b?825m38?o63;3g82ad=z{=>n6=4={<66??7?ja:p01e=838p19;9:7c8912628oj7p};4e83>7}:<<=1:l5245095`g>=7>52z?71g<1i27?8;4>e`9~w12a2909w0::9;4b?823<3;nm6s|44294?4|5=?j6;o4=566>4cf3ty?9?4?:3y>00e=>h1689951dc8yv22;3:1>v3;5e85e>;3<10:il5rs50f>5<4s4>9i7?ja:?76c<1<27?8=494:p066=839p19<50;1x91562;>h70:;1;3be>;3;;0:il5rs512>5<4s4>8=7?ja:?776<1<27?8?494:p062=839p19=<:36`?823:3;jm63;3582ad=z{=986=4<{<607?7bi27??8494:?706<1<2wx8>850;1x91522;>h70:;3;3be>;3;?0:il5rs516>5<4s4>897?ja:?772<1<27?89494:p06>=839p19=8:36`?823<3;jm63;3982ad=z{=9<6=4<{<603?7bi27??4494:?700<1<2wx8>o50;1x915>2;>h70:;5;3be>;3;h0:il5rs51:>5<4s4>857?ja:?77g<1<27?8;494:p06e=839p19=m:36`?823>3;jm63;3b82ad=z{=9i6=4<{<60f?7bi27??i494:?702<1<2wx8>k50;1x915c2;>h70:;7;3be>;3;l0:il5rs51g>5<5s4>8h7?ja:?70=<1<2wx89750;0x912?28kj70:;9;3fe>{t;k;1<73g<5:k=628?370=66;362>{t;k:1<7=t=2a7>3g<5:3?6?:l;<1b1?7bi2wx?oo50;1x96e32;9=70;69;362>;4i<0:985rs2`7>5<5s49h478n;<1b=?7bi2wx?ok50;1x96e?2;9=70;6b;362>;41j0:9;5rs2`1>5<5s49h:78n;<1b3?7bi2wx?om50;1x96e12;9=70;6a;362>;4110:9;5rs2`0>5<5s49h;78n;<1b;41h0:9;5rs2`4>5<5s49hn78n;<1bg?7bi2wx?n?50;1x96ee2;9=70;6c;36<>;4i;0:9;5rs2`6>5<5s49h578n;<1be?7bi2wx?oh50;1x96e>2;9=70;6b;36<>;41l0:9;5rs2`5>5<5s49hm78n;<1bf?7bi2wx?n>50;1x96ef2;9=70;6c;362>;4i90:9;5rs2`;>5<5s49ho78n;<1b`?7bi2wx?n<50;1x96ed2;9=70;6d;362>;4i=0:9;5rs2`:>5<5s49hh78n;<1ba?7bi2wx?n=50;1x96ec2;9=70;6d;36<>;4io0:9;5rs2;7>5<4s49287?ja:?0=0<1<278m;494:p7<0=839p1>7::36`?85f>3;jm63<9782ad=z{:3>6=4<{<1:1?7bi2785:494:?0e2<1<2wx?4650;1x96?02;>h70=n7;3be>;4110:il5rs2;4>5<4s492;7?ja:?0=<<1<278m5494:p776:36`?85f03;jm63<9`82ad=z{:326=4<{<1:=?7bi2785o494:?0e<<1<2wx?4m50;1x96?e2;>h70=n9;3be>;41j0:il5rs2;a>5<4s492n7?ja:?0=a<1<278ml494:p77k:36`?85fi3;jm63<9d82ad=z{:3o6=4<{<1:`?7bi2785k494:?0eg<1<2wx?l>50;1x96?a2;>h70=nb;3be>;4i90:il5rs2;e>5<4s492j7?ja:?0e4<1<278mn494:p7d4=839p1>o>:36`?85fk3;jm63494:?0ea<1<2wx?l:50;1x96g42;>h70=nd;3be>;4i=0:il5rs2c0>5<5s49j?7?ja:?0e`<1<2wx?lh50;0x96gb28kj70=nf;3fe>{t<8h1<73g<5=;;67cc=:=i019>i:0gb?xu39l0;6?u243:92d=:<891=ho4}r62g?6=:r7?>;49a:?754<6mh1v9?k:181825?32;3fe>{t<;;1<73g<5=;=6042=9lk0q~:=0;296~;3:h0=m63;1482ad=z{=896=4={<61g?0f34>:;7?ja:p075=838p196}:;oo1=ho4=2de>32<5=;;6;:4}r634?6=;r78jk4=4b9>046=9hk019>?:0gb?xu4no0;6>u23gd95`g<5=::6;:4=532>32;>7>53z?744<56}:<9;1=ho4=520>32<5=;96;:4}r630?6=;r7?<>4=4b9>044=9hk019>;:0gb?xu38:0;6>u241195`g<5=:>6;:4=530>32;:7>53z?740<56}:<9?1=ho4=524>32<5=;?6;:4}r63042=9hk019>7:0gb?xu38>0;6>u241595`g<5=:26;:4=536>32;m7>53z?74<<56}:<931=ho4=52a>32<5=;=6;:4}r63g?6=;r7?040=9hk019>l:0gb?xu38k0;6>u241`95`g<5=:o6;:4=534>32;i7>53z?74a<57}:<9n1=ho4=53;>32:57>52z?75=<6ih168<751dc8yv5?93:1>v3<8c85e>;4??0:il5rs2:3>5<4s493m78n;<150?43k278;84>e`9~w6>32909w0=7e;4b?85013;nm6s|39094?4|5:2h6;o4=254>4cf3ty84>4?:3y>7=b=>h16?:651dc8yv5??3:1>v3<9085e>;4?j0:il5rs2:6>5<5s493j78n;<14e?7bi2wx?5850;0x96?72?k01>9m:0gb?xu4010;6?u238092d=:;>n1=ho4}r1;=?6=:r785>49a:?03`<6mh1v>8;:180851<3;nm63<64850>;4??0=86s|37494?5|5:<>6?:l;<142?7fi278:;4>e`9~w6022908w0=95;3fe>;4>>0=863<76850>{t;?21<7=t=244>72d349<;7?na:?02=<6mh1v>88:180851?3;nm63<68850>;4?10=86s|37c94?5|5:<26?:l;<14e`9~w60>2908w0=99;3fe>;4>k0=863<78850>{t;?i1<7=t=24a>72d349<57?na:?02f<6mh1v>8m:180851j3;nm63<6e850>;4?h0=86s|37g94?5|5:e`9~w60c2908w0=9d;3fe>;4>o0=863<7c850>{t;>:1<7=t=24e>72d3498i:180851n3;nm63<70850>;4?j0=86s|36094?5|5:=:6?:l;<14g?7fi278;?4>e`9~w6162908w0=81;3fe>;4?:0=863<7e850>{t;>>1<7=t=250>72d3499<:181850;3;nm63<7d850>{t;>l1<74gf349h;:7c896eb2;>h70=kf;3fe>{t;lh1<73g<5:o;67`7=9lk0q~=jd;296~;4n>0=m63h6:7c896c328oj7p}7}:;ok1:l523d795`g52z?0bg<1i278i;4>e`9~w6`52909w0=ic;4b?85b?3;nm6s|3g194?4|5:lo6;o4=2g;>4cf3ty8oh4?:2y>7fc=9lk01>mi:76896c72?>0q~=k0;297~;4ko098n523d295dg<5:n;601>k>:768yv5c:3:1?v34cf3ty8h<4?:2y>7a7=9lk01>j<:76896c52?>0q~=k4;297~;4l:098n523d095dg<5:n?601>k<:768yv5c>3:1?v34cf3ty8h84?:2y>7a3=9lk01>j8:76896c32?>0q~=k8;297~;4l>098n523d695dg<5:n362?>01>k::768yv5ci3:1?v34cf3ty8h44?:2y>7a?=9lk01>jm:76896c12?>0q~=kc;297~;4lk098n523d495dg<5:nh601>k8:768yv5cm3:1?v34cf3ty8hi4?:3y>7ab=9lk01>k7:768yv5b13:1>v3v3<5c85e>;45<5s49>o78n;<173?7bi2wx?8=50;0x963c2?k01>:7:0gb?xu4==0;6?u234g92d=:;=31=ho4}r161?6=:r789k49a:?00d<6mh1v>;9:18185183{t;<=1<73g<5:>h671b=9lk0q~=:9;296~;4>:0=m63<4d82ad=z{:9?6=4<{<100?7bi278?8494:?003<1<2wx?>850;1x96522;>h70=;6;3be>;4;?0:il5rs216>5<4s49897?ja:?072<1<2788:494:p76>=839p1>=8:36`?853?3;jm63<3982ad=z{:9<6=4<{<103?7bi278?4494:?00=<1<2wx?>o50;1x965>2;>h70=;8;3be>;4;h0:il5rs21:>5<4s49857?ja:?07g<1<27884494:p76e=839p1>=m:36`?85313;jm63<3b82ad=z{:9i6=4<{<10f?7bi278?i494:?00d<1<2wx?>k50;1x965c2;>h70=;a;3be>;4;l0:il5rs21g>5<4s498h7?ja:?07c<1<2788o494:p716=839p1>=i:36`?853j3;jm63<4182ad=z{:9m6=4<{<10b?7bi2788<494:?00f<1<2wx?9<50;1x96262;>h70=;c;3be>;4<;0:il5rs262>5<4s49?=7?ja:?006<1<2788i494:p712=839p1>:<:36`?853l3;jm63<4582ad=z{:>86=4={<177?7bi2788h494:p71`=838p1>:j:0cb?853n3;nm6s|5e;94?4|550;0x90b328oj70;k5;47?xu2lh0;6?u25e7961e<50q~;kb;296~;2l?098n525d295`g7>52z?6`3<6mh169i95659~w0bd2909w0;k7;07g>;2m80:il5rs4f0>5<5s4?o;7?ja:?6`=<1<2wx9ij50;0x90b?2;>h70;j2;3fe>{t=o<1<74cf34?hi7?:9:p1`e=838p18k8:36`?83a93;nm6s|5d194?4|5ii4?:3y>1`>=:=i018h=:0gb?xu2m=0;6?u25d:95`g<5i44=4b9>1c5=9lk0q~;j5;296~;2m00:il525dc921=z{j94>e`9~w0c12909w0;ja;3fe>;2mk0=86s|5g294?4|5{t=jn1<73g<528oj7p}:fc83>7}:=ol1=ho4=723>3252z?545<5v390182ad=:>9;1:95rs725>5<5s4<;=7<;c:?54g<6mh1v8hk:18180793;nm63903850>{t>9=1<772d34<;o7?ja:p1cc=838p1;>=:0gb?807;37}:>991>9m4=72g>4cf3ty=><4?:3y>255=9lk018h6:07:?xu19>0;6?u2600961e<5?;h60q~8>8;296~;19:098n5260f95`g52z?556<6mh16:<:5659~w37>2909w08>4;07g>;19l0:il5rs733>5<5s4<:87?ja:?550<1<2wx:h708>f;3fe>{t>8;1<74cf34<::78;;|q55g<72;q6:<8525a8934728oj7p}92383>7}:>8<1=ho4=4d:>43?3ty>j54?:3y>1cg=>h169k751dc8yv3?93:1>v3:7b810f=:=1<1=ho4}r74;n4>e`9>12b=>=1v86=:181830l38?o63:8682ad=z{<=26=4={<74`?7bi27>;h494:p1=5=838p189j:36`?83?03;nm6s|56c94?4|5<=n6494?:3y>12`=:=i01866:0gb?xu2?k0;6?u256d95`g<5<2;6;:4}r7;1?6=:r7>4=4=4b9>1=g=9lk0q~;6e;296~;2090:il52565950>52z?6v3:8g82ad=:=0:1:95rs4;6>5<5s4?2<7<;c:?6=d<6mh1v86l:18183>83;nm63:90850>{t=0<1<772d34?2n7?ja:p1=b=838p187>:0gb?83>:37}:=081>9m4=4;`>4cf3ty>4h4?:3y>1<4=9lk0187<:768yv3>03:1>v3:92810f=:=0n1=ho4}r7:b?6=:r7>5>4>e`9>121=9<30q~;83;296~;2?<0=?63:7582ad=z{<==6=4={<741?0f34?<;7?ja:p1dc=838p18o6:36`?83e;3;nm6s|5`794?4|5mk4?:3y>1dg=:=i018l;:0gb?xu2i?0;6?u25`c95`g<5mo4=4b9>1g3=9lk0q~;n7;296~;2ik0:il525`a921=z{n;4>e`9~w0g?2909w0;nc;3fe>;2im0=86s|5c094?4|5{t=j;1<772d34?h:7?ja:p1g>=838p18ll:0gb?83el37}:=kn1>9m4=4a4>4cf3ty>n44?:3y>1gb=9lk018lj:768yv3d;3:1>v3:bd810f=:=j21=ho4}r7ae?6=:r7>nh4>e`9>1g`=>=1v8m;:18183en38?o63:c882ad=z{o=494:p1f3=838p18m?:36`?83di3;nm6s|5ba94?4|550;0x90g52?9018o>:0gb?xu2i:0;6?u25`092d=:=h>1=ho4}r6g`?6==r7?ml49a:?7a2<5;?168lm5145891gb28?=70:m0;36<>{t3g<5=kh60dc=9lk0q~:nf;29<~;3i>0=m63;b182ad=:43134>i:7?:8:?7fg<6=0168oj514;891da28?27p};b083>7}:i?7>52z?7e0<1i27?n94>e`9~w1d22909w0:n4;4b?82e>3;nm6s|4c594?4|5=k86;o4=5`a>4cf3ty?nn4?:3y>0d4=>h168oj51dc8yv2em3:1>v3;a085e>;3jo0:il5rs5d2>5<5s4>n;78n;<6ef?44>2wx8k>50;0x91c12?k019hn:315?xu3lj0;69u24d49660<5=kh6<;9;<6ba?72?27?n=4>589~w1ca2909w0:j5;4b?82a1388:6s|4e`94?5|5=o>6?=9;<6ba?72027?n=4>579~w1cb2909w0:j4;4b?82a0388:6s|4ec94?4|5=o?6?=9;<6a4?72?2wx8hj50;0x91c42?k019h8:315?xu3l00;6:u24d19660<5=h96<;9;<6a0?72?27?n;4>589>0gd=9<=019lk:074?82en3;>;6s|4da94?4|5=o96;o4=5d5>7513ty?h54?:7y>0`4=::<019l;:07;?82e>3;>:63;bc8213=:4313ty?io4?:3y>0`7=>h168k;52248yv2c?3:19v3;e08173=:43134>i57?:6:?7fd<6=?1v9kn:18182b83{t75134>i47?:7:?7f<<6=>168oo51458yv2b13:1>v3;dg85e>;3n:09?;5rs5f6>5<4s4>oj7<<6:?7f<<6=1168oo514:8yv2b03:1>v3;dd85e>;3n;09?;5rs5f7>5<5s4>oi7<<6:?7fd<6=01v9m6:18182aj3{t3g<5=n96?=9;|q7g2<72;q68k756`9>0a7=::<0q~:l6;296~;3n10=m63;d18173=z{=i>6=4={<6e3?0f34>hj7<<6:p0f2=838p19h9:7c891eb2;9=7p};c283>7}:h>7>52z?7b1<1i27?on4=379~w1e62909w0:i3;4b?82dj388:6s|4b294?4|5=l96;o4=5ab>7513ty?jn4?:3y>0a4=>h1684651dc8yv2al3:1>v3;d085e>;3100:il5rs5df>5<5s4>o<78n;<6:e?7bi2wx8kh50;0x91ea2?k0197m:0gb?xu2890;6?u24bg92d=:<0i1=ho4}r735?6=:r7?oi49a:?7=a<6mh1v8>=:18182dk3{t=991<73g<5=3m60d6=9lk0q~;;a;291~;29>0=m63:558173=:=831=894=43a>43134?:h7?:8:p14>=838p18?9:7c8907>28oj7p}:1`83>7}:=8?1:l5250`95`g58z?651<1i27>=i4>e`9>14`=9<=018<>:075?835;3;>463:29821<=:=;k1=874=40`>43>3ty>=h4?:3y>145=>h169v3:1385e>;2:80:il5rs401>5<5s4?:=78n;<717?7bi2wx9?:50;0x90772?k018<7:0gb?xu2:00;6?u251d92d=:=;k1=ho4}r71f?6=:r7>{t=3g<5<<<6?=9;|q60<<72=q698=52248907>28?=70;>b;363>;29m0:945rs47`>5<5s4?>>78n;<752?44>2wx99650;1x90352;9=70;>b;36<>;29m0:9;5rs47a>5<5s4?>=78n;<751?44>2wx99950;0x90362;9=70;>d;363>{t=3g<5<q698>52248907a28?=70;=1;363>;2::0:945253:9501<5<8j6<;8;<71g?72?2wx98750;0x902a2?k0188<:315?xu2<<0;6;u255d9660<5<8:6<;7;<717?72>27>>54>579>17g=9<<018>84}r770?6==r7>8h4=379>175=9<=018<::075?835>3;>:63:268213=z{p18:k:315?835=3;>;63:278212=:=;=1=894}r762?6=:r7>8n49a:?625<5;?1v8:=:180833k388:63:27821==:=;=1=864}r761?6=:r7>8o49a:?61c<5;?1v8:>:181833j388:63:26821<=z{<9=6=4={<757}:=?<1:l5252g966052z?620<1i27>?i4=379~w0552909w0;94;4b?834k388:6s|52394?4|5<<86;o4=41a>7513ty>?=4?:3y>134=>h169>o52248yv35n3:1>v3:6085e>;2;009?;5rs40f>5<5s4?=<78n;<702wx9?j50;0x903a2?k018=8:315?xu2>00;6?u252d92d=:=9?1=ho4}r75e?6=:r7>?h49a:?643<6mh1v88m:181834l3{t=?i1<73g<5<:36l56`9>15?=9lk0q~;9e;296~;2;h0=m63:0`82ad=z{<7}:=:=1:l5251f95`g52z?56g<6mh16:?7515:8yv7cn3:1>v3;b982ad=:e`9>0gb=9<20q~?j3;296~;3jh0:il524cd950>52z?660<6mh169?6514:8yv7b=3:1>v3:2782ad=:=;k1=864}r3f2?6=:r7>>:4>e`9>17e=9<20qpl=7e83>4<729q/>8:524c8L71e3A8>46a>ee83>>{t>j91<7;_0:4>X50o1U>5k4^3:g?[4?k2T94o5Q29c8971d28?87p}=8483>7}Y:1?01?;::4c8yv0d=3:1>vP9c49>603=:=h0q~8lc;296~X1kj16>8;527`8yv55n3:1>vP<2g9>603=9=<0q~8j3;296~X1m:16>8;526:8yv0di3:1>vP9c`9>603=:<<0q~<74;296~X50=16>8;5589~w3gc2909wS8nd:?110<5;h1v;eb9~w3ee2909wS8lb:?110<5=01v>==:181[54:279984>509~w34c2909wS8=d:?110<6n;1v;mk:181[0dl279984=6b9~w30c2909wS89d:?110<59=1v;k=:181[0c?279984=769~w3c72909wS8k6:?110<5?<1v;ji:181[0c=279984=759~w3bb2909wS8k4:?110<5?:1v;jk:181[0c;279984=739~w3bd2909wS8k2:?110<5?81v;jm:181[0c9279984=719~w3bf2909wS8k0:?110<5>o1v;j6:181[0dn279984=6d9~w3b?2909wS8le:?110<5>m1v><;:181[56:279984>3b9~w6452909wS=>1:?110<6;h1v><>:181[568279984>389~w6472909wS=?f:?110<6;11v>?i:181[57m279984>369~w67b2909wS=?d:?110<6;?1v>?k:181[57k279984>349~w67d2909wS=?b:?110<6;=1v>449~w64d2909wS=>9:?110<6<=1v>429~w64f2909wS=>7:?110<6<;1v><6:181[56>279984>409~w64?2909wS=>5:?110<6<91v><8:181[56<279984>3g9~w6412909wS=>3:?110<6;l1v><::181[57i279984>3e9~w67e2909wS=?9:?110<6;:1v;m=:181[0e?279984=449~w3e72909wS8m6:?110<5<:1v;li:181[0e=279984=439~w3db2909wS8m4:?110<5<81v;lk:181[0e;279984=419~w3dd2909wS8m2:?110<5;o1v;lm:181[0e9279984=3d9~w3df2909wS8m0:?110<5;m1v;l6:181[0fn279984=3b9~w3d?2909wS8ne:?110<5;k1v;;8:181[03k279984=099~w3322909wS8;b:?110<58?1v;;;:181[03i279984=049~w3342909wS8;9:?110<58=1v;;=:181[030279984=029~w3362909wS8;7:?110<58;1v;;?:181[03>279984=009~w32a2909wS8;5:?110<5891v;:j:181[03<279984>fg9~w32c2909wS8;3:?110<6nl1v?hi:181[4bl279984k1:p6cb=838pR?kl;<061?ea3ty9jn4?:3y]6`d<5;?>6nk4}r0ef?6=:rT9il522479ga=z{;lj6=4={_0f=>;5=<0ho6s|2g;94?4|V;o370<:5;aa?xu5n10;6?uQ2d5897322jk0q~8;5c89~w66?2909wS97j6;|q043<72;qU>k=4=376>a>52z\1b7=::5<5sW8m=63=548g2>{t;991<77p}<0383>7}Y:ll01?;::e68yv5793:1>vP=ed9>603=l:1v>>?:181[4b=279984k2:p6c0=838pR?k;;<061?e?3ty=mn4?:3y]2d7<5;?>6?=:;|q5ed<72;qU:l>4=376>7543ty=m44?:3y]2<`<5;?>6?==;|q5e=<72;qU:4k4=376>7563ty=m:4?:3y]26?=?;|q5e3<72;qU:4m4=376>74a3ty=m84?:3y]26?74c3ty=m>4?:3y]26?74e3ty=5:4?:3y]2=e<5;?>6?74?3ty=594?:3y]2=g<5;?>6?<8;|q5=6<72;qU:574=376>7413ty=5?4?:3y]2=><5;?>6?<:;|q5=4<72;qU:594=376>7433ty=5=4?:3y]2=0<5;?>6?<<;|q57453ty=4h4?:3y]2=2<5;?>6?<>;|q57473ty=4?4?:3y]221<5;?>6??i;|q5<5<72;qU::84=376>77c3ty=;k4?:3y]223<5;?>6??l;|q53`<72;qU:::4=376>77e3ty=;i4?:3y]225<5;?>6??n;|q53f<72;qU::<4=376>77>3ty=;o4?:3y]227<5;?>6??7;|q53d<72;qU::>4=376>7703ty=;44?:3y]23`<5;?>6??9;|q53=<72;qU:;k4=376>7723ty=:n4?:3y]237<5;?>6??<;|q52d<72;qU:;>4=376>7763ty=:44?:3y]20`<5;?>6???;|q52=<72;qU:8k4=376>76a3ty=::4?:3y]20b<5;?>6?>j;|q523<72;qU:8m4=376>76c3ty=:84?:3y]20d<5;?>6?>l;|q521<72;qU:8o4=376>76e3ty=:>4?:3y]20?<5;?>6?>n;|q527<72;qU:864=376>76>3ty=8?4?:3y]261<5;?>684=376>4`e3ty=?k4?:3y]263<5;?>6:4=376>4`>3ty=?i4?:3y]265<5;?>6<4=376>4`03ty=?o4?:3y]267<5;?>6>4=376>4`23ty=?44?:3y]27`<5;?>64`43ty:h>4?:0y>62b=9ln0qp}=fg83>7}Y:ln018m52df8 73028n<7p}=fe83>7}Y:li018m52da8 73028n37p}=fb83>7}Y:lh018m52d`8 73028n27p}=fc83>7}Y:lk018m52dc8 73028nj7p}=f`83>7}Y:l3018m52d;8 73028o;7p}=f883>7}Y:l2018m52d:8 73028h>7p}=f983>7}Y:l=018m52d58 73028ho7p}=f683>7}Y:l<018m52d48 73028i37p}<0983>7}Y:o?018m52g78 73028ih7p}<0683>7}Y:o>018m52g68 73028io7p}<0783>7}Y:o9018m52g18 73028in7p}<0483>7}Y:o8018m52g08 73028im7p}<0583>7}Y:o;018m52g38 73028n;7p}<0283>7}Y:o:018m52g28 73028n:7p}<0383>7}Y:ll018m52dd8 73028n97p}<0083>7}Y:lo018m52dg8 73028n?7p}<0183>7}Y:l?018m52d78 73028n>7p}=f783>7}Y:l>018m52d68 73028n=7p}9ae83>7}Y>hn018m56`f8 73028ni7p}9c283>7}Y>j9018m56b18 73028nh7p}9c483>7}Y>j?018m56b78 73028no7p}9ce83>7}Y>jn018m56bf8 73028nn7p}9e283>7}Y>l9018m56d18 73028nm7p}=8583>7}Y:1>018m52968 73028o:7p}=8483>7}Y:1?018m52978 73028o97p}<2583>7}Y;88018m53008 73028h=7p}<2383>7}Y;8;018m53038 73028h<7p}<2083>7}Y;8:018m53028 73028h37p}<2183>7}Y;9l018m531d8 73028h27p}<1g83>7}Y;9o018m531g8 73028hj7p}<1d83>7}Y;9n018m531f8 73028hi7p}<1e83>7}Y;9i018m531a8 73028hh7p}<1b83>7}Y;9h018m531`8 73028hn7p}<2e83>7}Y;8k018m530c8 73028hm7p}<2b83>7}Y;83018m530;8 73028i;7p}<2c83>7}Y;82018m530:8 73028i:7p}<2`83>7}Y;8=018m53058 73028i97p}<2883>7}Y;8<018m53048 73028i87p}<2983>7}Y;8?018m53078 73028i?7p}<2683>7}Y;8>018m53068 73028i>7p}<2783>7}Y;89018m53018 73028i=7p}<2483>7}Y;9k018m531c8 73028i<7p}<1c83>7}Y;93018m531;8 73028i27p}<2g83>7}Y;;l018m533d8 73028ij7p}<3383>7}Y;:8018m53208 73028ii7psae3494?5|@;?37p`j2683>6}O:<20qck=8;297~N5=11vbh<6:180M4202wei?o50;1xL73?3tdn>o4?:2yK60>53zJ11==zfl8o6=4<{I06<>{im;o1<7=tH37;?xhb:o0;6>uG24:8ykc483:1?vF=599~j`562908wE<:8:ma64=839pD?;7;|lf76<72:qC>864}og00?6=;rB9955rnd16>5<4sA8>46sae2494?5|@;?37p`j3683>6}O:<20qck<8;297~N5=11vbh=6:180M4202wei>o50;1xL73?3tdn?o4?:2yK60>53zJ11==zfl9o6=4<{I06<>{im:o1<7=tH37;?xhb;o0;6>uG24:8ykc383:1?vF=599~j`262908wE<:8:ma14=839pD?;7;|lf06<72:qC>864}og70?6=;rB9955rnd66>5<4sA8>46sae5494?5|@;?37p`j4683>6}O:<20qck;8;297~N5=11vbh:6:180M4202wei9o50;1xL73?3tdn8o4?:2yK60>53zJ11==zfl>o6=4<{I06<>{im=o1<7=tH37;?xhbuG24:8ykc283:1?vF=599~j`362908wE<:8:ma04=839pD?;7;|lge7<728qC>864}ofbf?6=9kqC>864}ofg3?6=9rB9955rnef;>5<6sA8>46sade;94?7|@;?37p`kd`83>4}O:<20qcjkb;295~N5=11vbijl:182M4202wehij50;3xL73?3tdohh4?:0yK60>51zJ11==zfmo;6=4>{I06<>{ilo91<7?tH37;?xhcn=0;6864}ofe=?6=9rB9955rnedb>5<6sA8>46sadg`94?7|@;?37p`kfb83>4}O:<20qcjid;295~N5=11vbihj:182M4202wehkh50;3xL73?3tdn<=4?:0yK60>51zJ11==zfl:96=4>{I06<>{im991<7?tH37;?xhb8=0;6864}og3=?6=9rB9955rnd2b>5<6sA8>46sae1`94?7|@;?37p`j0b83>4}O:<20qck?d;295~N5=11vbh>j:182M4202wei=h50;3xL73?3tdn==4?:0yK60>51zJ11==zfl;96=4>{I06<>{im891<7?tH37;?xhb9=0;6864}og2=?6=9rB9955rnd3b>5<6sA8>46sae0`94?7|@;?37p`j1b83>4}O:<20qck>d;295~N5=11vbh?j:182M4202wei=4?:0yK60>51zJ11==zfl896=4>{I06<>{im;91<7?tH37;?xhb:=0;6864}o`:`?6=9rB9955rnc;f>5<6sA8>46sab8d94?7|@;?37p`ma183>4}O:<20qcln1;295~N5=11vboo=:182M4202wenl=50;3xL73?3tdim94?:0yK60>51zJ11==zfkk=6=4>{I06<>{ijh=1<7?tH37;?xhei10;6864}o`b`?6=9rB9955rnccf>5<6sA8>46sab`d94?7|@;?37p`mb183>4}O:<20qclm1;295~N5=11vbol=:182M4202weno=50;3xL73?3tdin94?:0yK60>51zJ11==zfkh=6=4>{I06<>{ijk=1<7?tH37;?xhej10;6864}o`a`?6=9rB9955rnc`f>5<6sA8>46sabcd94?7|@;?37p`mc183>4}O:<20qcll1;295~N5=11vbom=:182M4202wenn=50;3xL73?3tdio94?:0yK60>51zJ11==zfki=6=4>{I06<>{ijj=1<7?tH37;?xhek10;6864}o```?6=9rB9955rncaf>5<6sA8>46sabbd94?7|@;?37p`md183>4}O:<20qclk1;295~N5=11vboj=:182M4202weni=50;3xL73?3tdih94?:0yK60>51zJ11==zfkn=6=4>{I06<>{ijm=1<7?tH37;?xhel10;6864}o`g`?6=9rB9955rncff>5<6sA8>46sabed94?7|@;?37p`me183>4}O:<20qcm?5;295~N5=11vbn>9:182M4202weo=950;3xL73?3tdh<54?:0yK60>51zJ11==zfj:j6=4>{I06<>{ik9h1<7?tH37;?xhd8j0;6864}oa25?6=9rB9955rnb31>5<6sA8>46sac0194?7|@;?37p`l1583>4}O:<20qcm>5;295~N5=11vbn?9:182M4202weo<950;3xL73?3tdh=54?:0yK60>51zJ11==zfj;j6=4>{I06<>{ik8h1<7?tH37;?xhd9j0;6864}oa15?6=9rB9955rnb01>5<6sA8>46sac3194?7|@;?37p`l2583>4}O:<20qcm=5;295~N5=11vbn<9:182M4202weo?950;3xL73?3tdh>54?:0yK60>51zJ11==zfj8j6=4>{I06<>{ik;h1<7?tH37;?xhd:j0;6864}oa05?6=9rB9955rnb11>5<6sA8>46sac2194?7|@;?37p`l3583>4}O:<20qcm<5;295~N5=11vbn=9:182M4202weo>950;3xL73?3tdh?54?:0yK60>51zJ11==zfj9j6=4>{I06<>{ik:h1<7?tH37;?xhd;j0;6864}oa75?6=9rB9955rnb61>5<6sA8>46sac5194?7|@;?37p`l4583>4}O:<20qcm;5;295~N5=11vbn:9:182M4202weo9950;3xL73?3tdh854?:0yK60>51zJ11==zfj>j6=4>{I06<>{ik=h1<7?tH37;?xhd864}oa65?6=9rB9955rnb71>5<6sA8>46sac4194?7|@;?37p`l5583>4}O:<20qcm:5;295~N5=11vbn;9:182M4202weo8950;3xL73?3tdh954?:0yK60>57>51zJ11==zfj?j6=4>{I06<>{ik864}oa55?6=9rB9955rnb41>5<6sA8>46sac7194?7|@;?37p`l6583>4}O:<20qcm95;295~N5=11vbn89:182M4202weo;950;3xL73?3tdh:54?:0yK60>51zJ11==zfj{I06<>{ik?h1<7?tH37;?xhd>j0;6864}oa45?6=9rB9955rnb51>5<6sA8>46sac6194?7|@;?37p`l7583>4}O:<20qcm85;295~N5=11vbn99:182M4202weo:950;3xL73?3tdh;54?:0yK60>51zJ11==zfj=j6=4>{I06<>{ik>h1<7?tH37;?xhd?j0;6864}oa;5?6=9rB9955rnb:1>5<6sA8>46sac9194?7|@;?37p`l8583>4}O:<20qcm75;295~N5=11vbn69:182M4202weo5950;3xL73?3tdh454?:0yK60>51zJ11==zfj2j6=4>{I06<>{ik1h1<7?tH37;?xhd0j0;6b290:wE<:8:mg=`=83;pD?;7;|l`=5<728qC>864}oa:5?6=9rB9955rnb;1>5<6sA8>46sac8194?7|@;?37p`l9583>4}O:<20qcm65;295~N5=11vbn79:182M4202weo4950;3xL73?3tdh554?:0yK60>51zJ11==zfj3j6=4>{I06<>{ik0h1<7?tH37;?xhd1j0;6l3:1=vF=599~jf?b290:wE<:8:mg<`=83;pD?;7;|l`e5<728qC>864}oab5?6=9rB9955rnbc1>5<6sA8>46sac`194?7|@;?37p`la583>4}O:<20qcmn5;295~N5=11vbno9:182M4202weol950;3xL73?3tdhm54?:0yK60>51zJ11==zfjkj6=4>{I06<>{ikhh1<7?tH37;?xhdij0;6864}oaa5?6=9rB9955rnb`1>5<6sA8>46sacc194?7|@;?37p`lb583>4}O:<20qcmm5;295~N5=11vbnl9:182M4202weoo950;3xL73?3tdhn54?:0yK60>51zJ11==zfjhj6=4>{I06<>{ikkh1<7?tH37;?xhdjj0;6864}oa`5?6=9rB9955rnba1>5<6sA8>46sacb194?7|@;?37p`lc583>4}O:<20qcml5;295~N5=11vbnm9:182M4202weon950;3xL73?3tdho54?:0yK60>51zJ11==zfjij6=4>{I06<>{ikjh1<7?tH37;?xhdkj0;6864}oag5?6=9rB9955rnbf1>5<6sA8>46sace194?7|@;?37p`ld583>4}O:<20qcmk5;295~N5=11vbnj9:182M4202weoi950;3xL73?3tdhh54?:0yK60>51zJ11==zfjnj6=4>{I06<>{ikmh1<7?tH37;?xhdlj0;6864}oaf5?6=9rB9955rnbg1>5<6sA8>46sacd194?7|@;?37p`le583>4}O:<20qcmj5;295~N5=11vbnk9:182M4202weoh950;3xL73?3tdhi54?:0yK60>51zJ11==zfjoj6=4>{I06<>{iklh1<7?tH37;?xhdmj0;6864}oae5?6=9rB9955rnbd1>5<6sA8>46sacg194?7|@;?37p`lf583>4}O:<20qcmi5;295~N5=11vbnh9:182M4202weok950;3xL73?3tdhj54?:0yK60>51zJ11==zfjlj6=4>{I06<>{ikoh1<7?tH37;?xhdnj0;6864}of35?6=9rB9955rne21>5<6sA8>46sad1194?7|@;?37p`k0583>4}O:<20qcj?5;295~N5=11vbi>9:182M4202weh=950;3xL73?3tdo<54?:0yK60>51zJ11==zfm:j6=4>{I06<>{il9h1<7?tH37;?xhc8j0;6864}of25?6=9rB9955rne31>5<6sA8>46sad0194?7|@;?37p`k1583>4}O:<20qcj>5;295~N5=11vbi?9:182M4202weh<950;3xL73?3tdo=54?:0yK60>51zJ11==zfm;j6=4>{I06<>{il8h1<7?tH37;?xhc9j0;6864}of15?6=9rB9955rne01>5<6sA8>46sad3194?7|@;?37p`k2583>4}O:<20qcj=5;295~N5=11vbi<9:182M4202weh?950;3xL73?3tdo>54?:0yK60>51zJ11==zfm8j6=4>{I06<>{il;h1<7?tH37;?xhc:j0;6864}of05?6=9rB9955rne11>5<6sA8>46sad2194?7|@;?37p`k3583>4}O:<20qcj<5;295~N5=11vbi=9:182M4202weh>950;3xL73?3tdo?54?:0yK60>51zJ11==zfm9j6=4>{I06<>{il:h1<7?tH37;?xhc;j0;6864}of75?6=9rB9955rne61>5<6sA8>46sad5194?7|@;?37p`k4583>4}O:<20qcj;5;295~N5=11vbi:9:182M4202weh9950;3xL73?3tdo854?:0yK60>51zJ11==zfm>j6=4>{I06<>{il=h1<7?tH37;?xhc864}of65?6=9rB9955rne71>5<6sA8>46sad4194?7|@;?37p`k5583>4}O:<20qcj:5;295~N5=11vbi;9:182M4202weh8950;3xL73?3tdo954?:0yK60>57>51zJ11==zfm?j6=4>{I06<>{il864}of55?6=9rB9955rne41>5<6sA8>46sad7194?7|@;?37p`k6583>4}O:<20qcj95;295~N5=11vbi89:182M4202weh;950;3xL73?3tdo:54?:0yK60>51zJ11==zfm{I06<>{il?h1<7?tH37;?xhc>j0;6864}of45?6=9rB9955rne51>5<6sA8>46sad6194?7|@;?37p`k7583>4}O:<20qcj85;295~N5=11vbi99:182M4202weh:950;3xL73?3tdo;54?:0yK60>51zJ11==zfm=j6=4>{I06<>{il>h1<7?tH37;?xhc?j0;6864}of;5?6=9rB9955rne:1>5<6sA8>46sad9194?7|@;?37p`k8583>4}O:<20qcj75;295~N5=11vbi69:182M4202weh5950;3xL73?3tdo454?:0yK60>51zJ11==zfm2j6=4>{I06<>{il1h1<7?tH37;?xhc0j0;6b290:wE<:8:m`=`=83;pD?;7;|lg=5<728qC>864}of:5?6=9rB9955rne;1>5<6sA8>46sad8194?7|@;?37p`k9583>4}O:<20qcj65;295~N5=11vbi79:182M4202weh4950;3xL73?3tdo554?:0yK60>51zJ11==zfm3j6=4>{I06<>{il0h1<7?tH37;?xhc1j0;6l3:1=vF=599~ja?b290:wE<:8:ma73=83;pD?;7;|~yEFDs8:j=7l?fd5g45{GHKq;qMN_{|BC \ No newline at end of file diff --git a/trbv2_link_fifo.vhd b/trbv2_link_fifo.vhd new file mode 100644 index 0000000..06c35fd --- /dev/null +++ b/trbv2_link_fifo.vhd @@ -0,0 +1,150 @@ +-------------------------------------------------------------------------------- +-- This file is owned and controlled by Xilinx and must be used -- +-- solely for design, simulation, implementation and creation of -- +-- design files limited to Xilinx devices or technologies. Use -- +-- with non-Xilinx devices or technologies is expressly prohibited -- +-- and immediately terminates your license. -- +-- -- +-- XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" -- +-- SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR -- +-- XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION -- +-- AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION -- +-- OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS -- +-- IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT, -- +-- AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE -- +-- FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY -- +-- WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE -- +-- IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR -- +-- REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF -- +-- INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -- +-- FOR A PARTICULAR PURPOSE. -- +-- -- +-- Xilinx products are not intended for use in life support -- +-- appliances, devices, or systems. Use in such applications are -- +-- expressly prohibited. -- +-- -- +-- (c) Copyright 1995-2007 Xilinx, Inc. -- +-- All rights reserved. -- +-------------------------------------------------------------------------------- +-- You must compile the wrapper file trbv2_link_fifo.vhd when simulating +-- the core, trbv2_link_fifo. When compiling the wrapper file, be sure to +-- reference the XilinxCoreLib VHDL simulation library. For detailed +-- instructions, please refer to the "CORE Generator Help". + +-- The synthesis directives "translate_off/translate_on" specified +-- below are supported by Xilinx, Mentor Graphics and Synplicity +-- synthesis tools. Ensure they are correct for your synthesis tool(s). + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +-- synthesis translate_off +Library XilinxCoreLib; +-- synthesis translate_on +ENTITY trbv2_link_fifo IS + port ( + din: IN std_logic_VECTOR(17 downto 0); + rd_clk: IN std_logic; + rd_en: IN std_logic; + rst: IN std_logic; + wr_clk: IN std_logic; + wr_en: IN std_logic; + almost_empty: OUT std_logic; + almost_full: OUT std_logic; + dout: OUT std_logic_VECTOR(17 downto 0); + empty: OUT std_logic; + full: OUT std_logic); +END trbv2_link_fifo; + +ARCHITECTURE trbv2_link_fifo_a OF trbv2_link_fifo IS +-- synthesis translate_off +component wrapped_trbv2_link_fifo + port ( + din: IN std_logic_VECTOR(17 downto 0); + rd_clk: IN std_logic; + rd_en: IN std_logic; + rst: IN std_logic; + wr_clk: IN std_logic; + wr_en: IN std_logic; + almost_empty: OUT std_logic; + almost_full: OUT std_logic; + dout: OUT std_logic_VECTOR(17 downto 0); + empty: OUT std_logic; + full: OUT std_logic); +end component; + +-- Configuration specification + for all : wrapped_trbv2_link_fifo use entity XilinxCoreLib.fifo_generator_v3_3(behavioral) + generic map( + c_rd_freq => 100, + c_wr_response_latency => 1, + c_has_srst => 0, + c_has_rd_data_count => 0, + c_din_width => 18, + c_has_wr_data_count => 0, + c_implementation_type => 2, + c_family => "virtex4", + c_has_wr_rst => 0, + c_wr_freq => 100, + c_underflow_low => 0, + c_has_meminit_file => 0, + c_has_overflow => 0, + c_preload_latency => 1, + c_dout_width => 18, + c_rd_depth => 1024, + c_default_value => "BlankString", + c_mif_file_name => "BlankString", + c_has_underflow => 0, + c_has_rd_rst => 0, + c_has_almost_full => 1, + c_has_rst => 1, + c_data_count_width => 10, + c_has_wr_ack => 0, + c_use_ecc => 0, + c_wr_ack_low => 0, + c_common_clock => 0, + c_rd_pntr_width => 10, + c_has_almost_empty => 1, + c_rd_data_count_width => 10, + c_enable_rlocs => 0, + c_wr_pntr_width => 10, + c_overflow_low => 0, + c_prog_empty_type => 0, + c_optimization_mode => 0, + c_wr_data_count_width => 10, + c_preload_regs => 0, + c_dout_rst_val => "0", + c_has_data_count => 0, + c_prog_full_thresh_negate_val => 1021, + c_wr_depth => 1024, + c_prog_empty_thresh_negate_val => 3, + c_prog_empty_thresh_assert_val => 2, + c_has_valid => 0, + c_init_wr_pntr_val => 0, + c_prog_full_thresh_assert_val => 1022, + c_use_fifo16_flags => 0, + c_has_backup => 0, + c_valid_low => 0, + c_prim_fifo_type => "1kx18", + c_count_type => 0, + c_prog_full_type => 0, + c_memory_type => 1); +-- synthesis translate_on +BEGIN +-- synthesis translate_off +U0 : wrapped_trbv2_link_fifo + port map ( + din => din, + rd_clk => rd_clk, + rd_en => rd_en, + rst => rst, + wr_clk => wr_clk, + wr_en => wr_en, + almost_empty => almost_empty, + almost_full => almost_full, + dout => dout, + empty => empty, + full => full); +-- synthesis translate_on + +END trbv2_link_fifo_a; +