From 010c1d2b6517ee90e70d0fb5c97e022ec02aff0a Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 21 Mar 2021 11:45:58 +0000 Subject: [PATCH] - added git-svn-id: http://moon:8086/svn/vhdl/trunk@1426 cc03376c-175c-47c8-b038-4cd826a8556b --- projects/piso_sipo/sim/tb_piso.fdo | 12 ++ projects/piso_sipo/sim/tb_piso.wdo | 34 ++++ projects/piso_sipo/sim/tb_sipo.fdo | 13 ++ projects/piso_sipo/sim/tb_sipo.wdo | 45 +++++ projects/piso_sipo/src/piso.vhd | 133 +++++++++++++ projects/piso_sipo/src/sipo.vhd | 131 ++++++++++++ projects/piso_sipo/src/tb_piso.vhd | 140 +++++++++++++ projects/piso_sipo/src/tb_sipo.vhd | 187 ++++++++++++++++++ .../syn/ise/project/pepExtractor.prj | 1 + projects/piso_sipo/syn/ise/project/piso.lso | 1 + projects/piso_sipo/syn/ise/project/piso.prj | 1 + projects/piso_sipo/syn/ise/project/piso.xst | 59 ++++++ .../piso_sipo/syn/ise/project/piso_sipo.ise | Bin 0 -> 267559 bytes .../piso_sipo/syn/ise/project/piso_vhdl.prj | 1 + .../piso_sipo/syn/ise/project/prjname.lso | 1 + projects/piso_sipo/syn/ise/project/sipo.lso | 1 + projects/piso_sipo/syn/ise/project/sipo.prj | 1 + projects/piso_sipo/syn/ise/project/sipo.xst | 59 ++++++ .../piso_sipo/syn/ise/project/sipo_vhdl.prj | 1 + 19 files changed, 821 insertions(+) create mode 100644 projects/piso_sipo/sim/tb_piso.fdo create mode 100644 projects/piso_sipo/sim/tb_piso.wdo create mode 100644 projects/piso_sipo/sim/tb_sipo.fdo create mode 100644 projects/piso_sipo/sim/tb_sipo.wdo create mode 100644 projects/piso_sipo/src/piso.vhd create mode 100644 projects/piso_sipo/src/sipo.vhd create mode 100644 projects/piso_sipo/src/tb_piso.vhd create mode 100644 projects/piso_sipo/src/tb_sipo.vhd create mode 100644 projects/piso_sipo/syn/ise/project/pepExtractor.prj create mode 100644 projects/piso_sipo/syn/ise/project/piso.lso create mode 100644 projects/piso_sipo/syn/ise/project/piso.prj create mode 100644 projects/piso_sipo/syn/ise/project/piso.xst create mode 100644 projects/piso_sipo/syn/ise/project/piso_sipo.ise create mode 100644 projects/piso_sipo/syn/ise/project/piso_vhdl.prj create mode 100644 projects/piso_sipo/syn/ise/project/prjname.lso create mode 100644 projects/piso_sipo/syn/ise/project/sipo.lso create mode 100644 projects/piso_sipo/syn/ise/project/sipo.prj create mode 100644 projects/piso_sipo/syn/ise/project/sipo.xst create mode 100644 projects/piso_sipo/syn/ise/project/sipo_vhdl.prj diff --git a/projects/piso_sipo/sim/tb_piso.fdo b/projects/piso_sipo/sim/tb_piso.fdo new file mode 100644 index 0000000..fdfec70 --- /dev/null +++ b/projects/piso_sipo/sim/tb_piso.fdo @@ -0,0 +1,12 @@ +## NOTE: Do not edit this file. +## Autogenerated by ProjNav (creatfdo.tcl) on Sun Apr 08 17:18:15 Westeuropäische Sommerzeit 2007 +## +vlib work +vcom -explicit -93 "../src/piso.vhd" +vcom -explicit -93 "../src/tb_piso.vhd" +vsim -t 1ps -lib work tb_piso_vhd +do tb_piso.wdo +view wave +view structure +view signals +run 5us diff --git a/projects/piso_sipo/sim/tb_piso.wdo b/projects/piso_sipo/sim/tb_piso.wdo new file mode 100644 index 0000000..ec004cb --- /dev/null +++ b/projects/piso_sipo/sim/tb_piso.wdo @@ -0,0 +1,34 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate -format Logic /tb_piso_vhd/rst +add wave -noupdate -format Logic /tb_piso_vhd/prdyo +add wave -noupdate -format Logic /tb_piso_vhd/pvi +add wave -noupdate -format Literal -radix hexadecimal /tb_piso_vhd/pdi +add wave -noupdate -format Logic /tb_piso_vhd/sso +add wave -noupdate -format Logic /tb_piso_vhd/sdo +add wave -noupdate -format Literal /tb_piso_vhd/data +add wave -noupdate -format Logic /tb_piso_vhd/uut/srdyi +add wave -noupdate -format Logic /tb_piso_vhd/rst +add wave -noupdate -format Logic /tb_piso_vhd/prdyo +add wave -noupdate -format Logic /tb_piso_vhd/pvi +add wave -noupdate -format Literal -radix hexadecimal /tb_piso_vhd/pdi +add wave -noupdate -format Logic /tb_piso_vhd/sso +add wave -noupdate -format Logic /tb_piso_vhd/sdo +add wave -noupdate -format Literal /tb_piso_vhd/data +add wave -noupdate -format Logic /tb_piso_vhd/uut/srdyi +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {330000 ps} 0} +configure wave -namecolwidth 150 +configure wave -valuecolwidth 100 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +update +WaveRestoreZoom {0 ps} {5250 ns} diff --git a/projects/piso_sipo/sim/tb_sipo.fdo b/projects/piso_sipo/sim/tb_sipo.fdo new file mode 100644 index 0000000..e81994b --- /dev/null +++ b/projects/piso_sipo/sim/tb_sipo.fdo @@ -0,0 +1,13 @@ +## NOTE: Do not edit this file. +## Autogenerated by ProjNav (creatfdo.tcl) on Sun Apr 08 17:18:15 Westeuropäische Sommerzeit 2007 +## +vlib work +vcom -explicit -93 "../src/piso.vhd" +vcom -explicit -93 "../src/sipo.vhd" +vcom -explicit -93 "../src/tb_sipo.vhd" +vsim -t 1ps -lib work tb_sipo_vhd +do tb_sipo.wdo +view wave +view structure +view signals +run 20us diff --git a/projects/piso_sipo/sim/tb_sipo.wdo b/projects/piso_sipo/sim/tb_sipo.wdo new file mode 100644 index 0000000..c3403d0 --- /dev/null +++ b/projects/piso_sipo/sim/tb_sipo.wdo @@ -0,0 +1,45 @@ +onerror {resume} +quietly WaveActivateNextPane {} 0 +add wave -noupdate -format Logic /tb_sipo_vhd/rst +add wave -noupdate -format Literal /tb_sipo_vhd/width +add wave -noupdate -divider {Parallel IN} +add wave -noupdate -format Literal /tb_sipo_vhd/inst_piso/sstate +add wave -noupdate -format Logic /tb_sipo_vhd/clk +add wave -noupdate -format Literal -radix hexadecimal /tb_sipo_vhd/pdi +add wave -noupdate -format Logic /tb_sipo_vhd/pvi +add wave -noupdate -format Logic /tb_sipo_vhd/prdyo +add wave -noupdate -divider {Serial OUT} +add wave -noupdate -format Logic /tb_sipo_vhd/clk +add wave -noupdate -format Logic /tb_sipo_vhd/sdo +add wave -noupdate -format Logic /tb_sipo_vhd/sso +add wave -noupdate -format Logic /tb_sipo_vhd/inst_piso/srdyi +add wave -noupdate -divider {Serial IN} +add wave -noupdate -format Literal /tb_sipo_vhd/uut/sstate +add wave -noupdate -format Logic /tb_sipo_vhd/clk +add wave -noupdate -format Logic /tb_sipo_vhd/sdi +add wave -noupdate -format Logic /tb_sipo_vhd/ssi +add wave -noupdate -format Logic /tb_sipo_vhd/uut/srdyo +add wave -noupdate -divider {Parallel OUT} +add wave -noupdate -format Logic /tb_sipo_vhd/clk +add wave -noupdate -format Logic /tb_sipo_vhd/pvo +add wave -noupdate -format Literal -radix hexadecimal /tb_sipo_vhd/pdo +add wave -noupdate -format Logic /tb_sipo_vhd/uut/prdyi +add wave -noupdate -divider Debug +add wave -noupdate -format Literal -radix hexadecimal /tb_sipo_vhd/data_out +add wave -noupdate -format Literal -radix hexadecimal /tb_sipo_vhd/data +TreeUpdate [SetDefaultTree] +WaveRestoreCursors {{Cursor 1} {111661 ps} 0} +configure wave -namecolwidth 150 +configure wave -valuecolwidth 79 +configure wave -justifyvalue left +configure wave -signalnamewidth 1 +configure wave -snapdistance 10 +configure wave -datasetprefix 0 +configure wave -rowmargin 4 +configure wave -childrowmargin 2 +configure wave -gridoffset 0 +configure wave -gridperiod 1 +configure wave -griddelta 40 +configure wave -timeline 0 +update +WaveRestoreZoom {0 ps} {328126 ps} diff --git a/projects/piso_sipo/src/piso.vhd b/projects/piso_sipo/src/piso.vhd new file mode 100644 index 0000000..5bfb7f0 --- /dev/null +++ b/projects/piso_sipo/src/piso.vhd @@ -0,0 +1,133 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 15:26:08 04/08/2007 +-- Design Name: +-- Module Name: piso - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +---- Uncomment the following library declaration if instantiating +---- any Xilinx primitives in this code. +--library UNISIM; +--use UNISIM.VComponents.all; + +entity piso is +Generic ( width : integer := 8 ); +Port ( + rst : in STD_LOGIC; + clk : in STD_LOGIC; + pdi : in UNSIGNED (width-1 downto 0); + pvi : in STD_LOGIC; + prdyo : out STD_LOGIC; + sdo : out STD_LOGIC; + sso : out STD_LOGIC; + srdyi : in STD_LOGIC + ); +end piso; + +architecture Behavioral of piso is + +type sstate_t is (reset, idle, ready, sync, active); + +constant idle_pol : std_logic := '0'; +signal reg : UNSIGNED (width-1 downto 0); +signal shift_en, counter_srst, counter_rdy : std_logic; +signal sstate, sstate_next : sstate_t; + +begin + +par_in: +process (rst, clk, pvi, reg, shift_en) +begin + if rst = '1' then + reg <= (others => idle_pol); + elsif rising_edge(clk) then + if pvi = '1' then + reg <= pdi; + elsif shift_en = '1' then + reg <= reg(width-2 downto 0) & idle_pol; + end if; + end if; + sdo <= reg(width-1); +end process; + +counter: +process (rst, counter_srst, clk) +variable counter : integer range 0 to width-1; +begin + if rst = '1' then + counter_rdy <= '0'; + elsif rising_edge(clk) then + if counter_srst = '1' then + counter := width-4; + counter_rdy <= '0'; + elsif counter /= 0 then + counter := counter - 1; + else + counter_rdy <= '1'; + end if; + end if; +end process; + +ser_sm: +process (rst, clk, pvi, sstate, counter_rdy, srdyi) +begin + sstate_next <= sstate; + prdyo <= '0'; + sso <= '0'; + shift_en <= '0'; + counter_srst <= '1'; + + case sstate is + when reset => + sstate_next <= idle; + when idle => + sstate_next <= ready; + when ready => + prdyo <= srdyi; + if pvi = '1' then + sstate_next <= sync; + end if; + when sync => + sso <= '1'; + sstate_next <= active; + shift_en <= '1'; + when active => + shift_en <= '1'; + counter_srst <= '0'; + if counter_rdy = '1' then + sstate_next <= idle; + end if; + when others => + sstate_next <= idle; + + end case; +end process; + +state_proc: +process (rst, clk, sstate_next) +begin + if rst = '1' then + sstate <= reset; + elsif rising_edge(clk) then + sstate <= sstate_next; + end if; +end process; + +end Behavioral; + diff --git a/projects/piso_sipo/src/sipo.vhd b/projects/piso_sipo/src/sipo.vhd new file mode 100644 index 0000000..3da09ee --- /dev/null +++ b/projects/piso_sipo/src/sipo.vhd @@ -0,0 +1,131 @@ +---------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 19:55:49 04/08/2007 +-- Design Name: +-- Module Name: sipo - Behavioral +-- Project Name: +-- Target Devices: +-- Tool versions: +-- Description: +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +---------------------------------------------------------------------------------- +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +---- Uncomment the following library declaration if instantiating +---- any Xilinx primitives in this code. +--library UNISIM; +--use UNISIM.VComponents.all; + +entity sipo is +Generic ( width : integer := 8 ); +Port ( + rst : in STD_LOGIC; + clk : in STD_LOGIC; + srdyo : out STD_LOGIC; + sdi : in STD_LOGIC; + ssi : in STD_LOGIC; + prdyi : in STD_LOGIC; + pvo : out STD_LOGIC; + pdo : out UNSIGNED (width-1 downto 0) + ); +end sipo; + +architecture Behavioral of sipo is + +type sstate_t is (reset, idle, ready, sync, active); + +constant idle_pol : std_logic := '0'; +signal reg : UNSIGNED (width-1 downto 0); +signal pvalid, shift_en, counter_srst, counter_rdy : std_logic; +signal sstate, sstate_next : sstate_t; + +begin + +par_out: +process (rst, clk, sdi, reg, shift_en, pvalid) +begin + if rst = '1' then + reg <= (others => idle_pol); + pvo <= '0'; + elsif rising_edge(clk) then + if shift_en = '1' then + reg <= reg(width-2 downto 0) & sdi; + end if; + pvo <= pvalid; + end if; + pdo <= reg; +end process; + +counter: +process (rst, clk, counter_srst) +variable counter : integer range 0 to width-1; +begin + if rst = '1' then + counter_rdy <= '0'; + elsif rising_edge(clk) then + if counter_srst = '1' then + counter := width-4; + counter_rdy <= '0'; + elsif counter /= 0 then + counter := counter - 1; + else + counter_rdy <= '1'; + end if; + end if; +end process; + +ser_sm: +process (rst, clk, ssi, sstate, counter_rdy, prdyi) +begin + sstate_next <= sstate; + shift_en <= '1'; + pvalid <= '0'; + counter_srst <= ssi; + srdyo <= '0'; + + case sstate is + when reset => + sstate_next <= idle; + when idle => + sstate_next <= ready; + when ready => + srdyo <= prdyi; + if ssi = '1' then + sstate_next <= active; + end if; + when active => + if counter_rdy = '1' then + sstate_next <= sync; + end if; + when sync => + pvalid <= '1'; + sstate_next <= idle; + when others => + sstate_next <= idle; + + end case; +end process; + +state_proc: +process (rst, clk, sstate_next) +begin + if rst = '1' then + sstate <= reset; + elsif rising_edge(clk) then + sstate <= sstate_next; + end if; +end process; + + +end Behavioral; + diff --git a/projects/piso_sipo/src/tb_piso.vhd b/projects/piso_sipo/src/tb_piso.vhd new file mode 100644 index 0000000..8a967ad --- /dev/null +++ b/projects/piso_sipo/src/tb_piso.vhd @@ -0,0 +1,140 @@ + +-------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 17:08:52 04/08/2007 +-- Design Name: piso +-- Module Name: tb_piso.vhd +-- Project Name: piso_sipo +-- Target Device: +-- Tool versions: +-- Description: +-- +-- VHDL Test Bench Created by ISE for module: piso +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-------------------------------------------------------------------------------- +LIBRARY ieee; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +ENTITY tb_piso_vhd IS +GENERIC ( width : integer := 8); +END tb_piso_vhd; + +ARCHITECTURE behavior OF tb_piso_vhd IS + + -- Component Declaration for the Unit Under Test (UUT) + COMPONENT piso + GENERIC ( width : integer ); + PORT( + rst : in STD_LOGIC; + clk : in STD_LOGIC; + pdi : in UNSIGNED (width-1 downto 0); + pvi : in STD_LOGIC; + prdyo : out STD_LOGIC; + sdo : out STD_LOGIC; + sso : out STD_LOGIC; + srdyi : in STD_LOGIC + ); + END COMPONENT; + + CONSTANT CLK_PERIOD : time := 10 ns; + + --Inputs + SIGNAL rst : std_logic := '1'; + SIGNAL clk : std_logic := '1'; + SIGNAL pvi : std_logic := '0'; + SIGNAL srdyi : std_logic := '0'; + SIGNAL pdi : UNSIGNED(width-1 downto 0) := (others=>'0'); + + --Outputs + SIGNAL prdyo : std_logic; + SIGNAL sdo : std_logic; + SIGNAL sso : std_logic; + SIGNAL data : integer := 0; + +BEGIN + + clk_gen: + PROCESS + BEGIN + wait for CLK_PERIOD/2; + clk <= not clk; + END PROCESS; + + -- Instantiate the Unit Under Test (UUT) + uut: piso + GENERIC MAP( width => width ) + PORT MAP( + rst => rst, + clk => clk, + pdi => pdi, + pvi => pvi, + prdyo => prdyo, + sdo => sdo, + sso => sso, + srdyi => srdyi + ); + + tb : PROCESS + BEGIN + + -- Wait 100 ns for global reset to finish + wait for 100 ns; + rst <= '0'; + + + -- Place stimulus here + + wait; -- will wait forever + END PROCESS; + + tb_srdy : process (rst, clk, sso) + variable count : integer := 0; + begin + if rst = '1' then + srdyi <= '0'; + count := 20; + elsif rising_edge(clk) then + if srdyi = '1' then + if sso = '1' then + srdyi <= '0'; + end if; + else + if count /= 0 then + count := count - 1; + else + srdyi <= '1'; + count := 20; + end if; + end if; + end if; + end process; + + tb_sig : process (rst, clk, prdyo) + begin + if rst = '1' then + data <= 0; + elsif rising_edge(clk) then + if prdyo = '1' then + data <= data + 1; + end if; + end if; + pdi <= to_unsigned(data, pdi'length); + pvi <= prdyo; + end process; + +END; diff --git a/projects/piso_sipo/src/tb_sipo.vhd b/projects/piso_sipo/src/tb_sipo.vhd new file mode 100644 index 0000000..b8fed98 --- /dev/null +++ b/projects/piso_sipo/src/tb_sipo.vhd @@ -0,0 +1,187 @@ + +-------------------------------------------------------------------------------- +-- Company: +-- Engineer: +-- +-- Create Date: 17:08:52 04/08/2007 +-- Design Name: piso +-- Module Name: tb_piso.vhd +-- Project Name: piso_sipo +-- Target Device: +-- Tool versions: +-- Description: +-- +-- VHDL Test Bench Created by ISE for module: piso +-- +-- Dependencies: +-- +-- Revision: +-- Revision 0.01 - File Created +-- Additional Comments: +-- +-- Notes: +-- This testbench has been automatically generated using types std_logic and +-- std_logic_vector for the ports of the unit under test. Xilinx recommends +-- that these types always be used for the top-level I/O of a design in order +-- to guarantee that the testbench will bind correctly to the post-implementation +-- simulation model. +-------------------------------------------------------------------------------- +LIBRARY ieee; +use IEEE.STD_LOGIC_1164.ALL; +use IEEE.NUMERIC_STD.ALL; + +ENTITY tb_sipo_vhd IS +GENERIC ( width : integer := 8); +END tb_sipo_vhd; + +ARCHITECTURE behavior OF tb_sipo_vhd IS + + -- Component Declaration for PISO + COMPONENT piso + GENERIC ( width : integer ); + PORT( + rst : in STD_LOGIC; + clk : in STD_LOGIC; + pdi : in UNSIGNED (width-1 downto 0); + pvi : in STD_LOGIC; + prdyo : out STD_LOGIC; + sdo : out STD_LOGIC; + sso : out STD_LOGIC; + srdyi : in STD_LOGIC + ); + END COMPONENT; + + -- Component Declaration for the Unit Under Test (UUT) + COMPONENT sipo + GENERIC ( width : integer ); + PORT( + rst : in STD_LOGIC; + clk : in STD_LOGIC; + srdyo : out STD_LOGIC; + sdi : in STD_LOGIC; + ssi : in STD_LOGIC; + prdyi : in STD_LOGIC; + pvo : out STD_LOGIC; + pdo : out UNSIGNED (width-1 downto 0) + ); + END COMPONENT; + + CONSTANT CLK_PERIOD : time := 10 ns; + + --Inputs + SIGNAL rst : std_logic := '1'; + SIGNAL clk : std_logic := '1'; + SIGNAL sdi : std_logic := '0'; + SIGNAL ssi : std_logic := '0'; + SIGNAL pvi : std_logic := '0'; + SIGNAL srdyi : std_logic := '1'; + SIGNAL prdyi : std_logic := '1'; + SIGNAL pdi : UNSIGNED(width-1 downto 0) := (others=>'0'); + + --Outputs + SIGNAL srdyo : std_logic; + SIGNAL prdyo : std_logic; + SIGNAL sdo : std_logic; + SIGNAL sso : std_logic; + SIGNAL pvo : std_logic; + SIGNAL pdo : UNSIGNED(width-1 downto 0); + SIGNAL data : integer := 0; + SIGNAL data_out : UNSIGNED(width-1 downto 0); + +BEGIN + + clk_gen: + PROCESS + BEGIN + wait for CLK_PERIOD/2; + clk <= not clk; + END PROCESS; + + -- Instantiate the Unit Under Test (UUT) + inst_piso: piso + GENERIC MAP( width => width ) + PORT MAP( + rst => rst, + clk => clk, + pdi => pdi, + pvi => pvi, + prdyo => prdyo, + sdo => sdo, + sso => sso, + srdyi => srdyi + ); + + uut: sipo + GENERIC MAP( width => width ) + PORT MAP( + rst => rst, + clk => clk, + srdyo => srdyo, + sdi => sdi, + ssi => ssi, + pvo => pvo, + pdo => pdo, + prdyi => prdyi + ); + + tb_prdy : process (rst, clk, pvo) + variable count : integer := 0; + begin + if rst = '1' then + prdyi <= '0'; + count := 10; + elsif rising_edge(clk) then + if pvo = '1' then + prdyi <= pdi(0); + end if; + if count /= 0 then + count := count - 1; + else + count := 53; + prdyi <= '1'; + end if; + end if; + end process; + + sdi <= sdo; + ssi <= sso; + srdyi <= srdyo; + + tb : PROCESS + BEGIN + + -- Wait 100 ns for global reset to finish + wait for 100 ns; + rst <= '0'; + + + -- Place stimulus here + + wait; -- will wait forever + END PROCESS; + + tb_sig : process (rst, clk, prdyo) + begin + if rst = '1' then + data <= 85; + elsif rising_edge(clk) then + if prdyo = '1' then + data <= data + 1; + end if; + end if; + pdi <= to_unsigned(data, pdi'length); + pvi <= prdyo; + end process; + + tb_data : process (rst, clk, pvo) + begin + if rst = '1' then + data_out <= (others => '0'); + elsif rising_edge(clk) then + if pvo = '1' then + data_out <= pdo; + end if; + end if; + end process; + +END; diff --git a/projects/piso_sipo/syn/ise/project/pepExtractor.prj b/projects/piso_sipo/syn/ise/project/pepExtractor.prj new file mode 100644 index 0000000..292de5f --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/pepExtractor.prj @@ -0,0 +1 @@ +work "H:/work/vhdl/projects/piso_sipo/src/piso.vhd" diff --git a/projects/piso_sipo/syn/ise/project/piso.lso b/projects/piso_sipo/syn/ise/project/piso.lso new file mode 100644 index 0000000..22de730 --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/piso.lso @@ -0,0 +1 @@ +work diff --git a/projects/piso_sipo/syn/ise/project/piso.prj b/projects/piso_sipo/syn/ise/project/piso.prj new file mode 100644 index 0000000..a7f42d6 --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/piso.prj @@ -0,0 +1 @@ +vhdl work "../src/piso.vhd" diff --git a/projects/piso_sipo/syn/ise/project/piso.xst b/projects/piso_sipo/syn/ise/project/piso.xst new file mode 100644 index 0000000..dd5eaa3 --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/piso.xst @@ -0,0 +1,59 @@ +set -tmpdir "./xst/projnav.tmp" +set -xsthdpdir "./xst" +run +-ifn piso.prj +-ifmt mixed +-ofn piso +-ofmt NGC +-p xc4vsx35-10-ff668 +-top piso +-opt_mode Speed +-opt_level 1 +-power NO +-iuc NO +-lso piso.lso +-keep_hierarchy NO +-rtlview Yes +-glob_opt AllClockNets +-read_cores YES +-write_timing_constraints NO +-cross_clock_analysis NO +-hierarchy_separator / +-bus_delimiter <> +-case maintain +-slice_utilization_ratio 100 +-bram_utilization_ratio 100 +-dsp_utilization_ratio 100 +-verilog2001 YES +-fsm_extract YES -fsm_encoding Auto +-safe_implementation No +-fsm_style lut +-ram_extract Yes +-ram_style Auto +-rom_extract Yes +-mux_style Auto +-decoder_extract YES +-priority_extract YES +-shreg_extract YES +-shift_extract YES +-xor_collapse YES +-rom_style Auto +-auto_bram_packing NO +-mux_extract YES +-resource_sharing YES +-async_to_sync NO +-use_dsp48 auto +-iobuf YES +-max_fanout 500 +-bufg 32 +-bufr 24 +-register_duplication YES +-register_balancing No +-slice_packing YES +-optimize_primitives NO +-use_clock_enable Auto +-use_sync_set Auto +-use_sync_reset Auto +-iob auto +-equivalent_register_removal YES +-slice_utilization_ratio_maxmargin 5 diff --git a/projects/piso_sipo/syn/ise/project/piso_sipo.ise b/projects/piso_sipo/syn/ise/project/piso_sipo.ise new file mode 100644 index 0000000000000000000000000000000000000000..e22870df9be8f77dfd73d3b48b7b8ed9e8423907 GIT binary patch literal 267559 zcmeFa&5vYBlGvBkGea(CcPUaNwIr7x$(|NCyV^JVzCU`o6yIk}ajL6IS=l|c>K&xA zGNY=Kla-N-jOwmturE4@1auJu{R7fXkOZD|(MgbW79c@2m>UHRqq%+1Zs&CJcr{XO~7x4!+|y?1?nl|LRGJ#PNt)5FIH{n62H zKbZvm%eO&K=C5AOFO(<#?!*&6Jew_!7bjnwogANcv#Yb0w~_pX|FihN9`dmK3++gL z*gaXy|IzGZxwrSh2lDU#U4KBacTc|Xk?-Gj-|y`KwD+yOZ*7|RZTtC_`w76C4EcYa z{P+LtuhS&|3jW>T-I^iq7~Yn$qo>Qo;q!Bcd~ffU_P(f_`5l9ue)`vLKmFvQe!ZL@yuK{}yIub6>4%=4EY2>MSGPp)zxn(B!GHSe zJS6{q)BiBNKfXAb9W76omMOWpcXLqx^&k8f|J5J-`Mo{)7u~6g+XC>x-o^2&+12Io z$!vf2gL_m^MH_62(X?85#0Y$RZI z@#WcKe(`E{vHXD`5a`9#^0)R+<`-AX#p{!$gWdt#zXZ2~6;iHdm-`=n{NeBLU^jbl z{Q4aD`TnPm9z5H>T7FG;0H6jCUH8b@i~ZH-;61x|Ne{0sj~BE3;Cy!R5^{_Ek3RmG z={dSQKVH6=FJ66r^TTiKfA|$+n16Nk;ZOE|_jmWhH80lea5Vgmqv6T=(fzZl{p0-~ zj}PsCdAv9~zF<&S^ZnOXLes0W;ADP2zi>o-v*Fx0DUNrL!kEAR?7_nakDmR806_ZZ zXBRK#`?EJ^SIevY5#W>GTZ8;W_{1~`C?Da?4!Y0((Hy>ie$JCJNAQ+*{l7}uP)EeAmF;cvAY{opL{Vp`RT}m)%wA2e*2@1$n6a88t`-G+D+-J zhCTI4KU$fL4?GDX{h|hH=m#>+{5Br0I#|Izpx5pRz7xU%*>1;V$ygIv> zIsQI)+9NYBmS2gSemSnhAGlQo0gKu4_2Oc^%62+G5&kpI`6cpj-T8v9WkAy;%wM0M zIwEd9`SFNky4&yVe{uZfNU&qAJdUiNFeD_v4P;IGKFfUZ_4VT2D3?)FeD#Isht>Yy z`Fw_aIm&m56_G}1&GtWkIfHX!`+5QvvzN0s%>BBb-~Ij%e)Bhw00-{masO)F*YyN` zZ~qXTbo_h{?WgnE)y3aMoh;{5sN!_-545 ztt^#czIcEJ-Cv=!on;n{zLqk1SQO(%rjSnQ^W^nn!AzWgy}x*UaUnz9kP6?$xp{Q_ zrO-D!UYz4Z$#5_B|KaiJY&&xs_|I<`3AfB-noj4-hjZjm497;@z7V~>|KSfl-2Z6( z^cH;mdvna7H{groiuv+=@cg~~>UycICu*GW zHJ{ej=xYCB_SI&L!bqp3m&ZS4GEdw9uqT&`*_SX(n72jcME%8L{%ZgEY&0i}#p}!E z?9?&IG5!<5A`Ex1=!?@}esMm^KLA4WX1ISiV{|=2*Wck*p1(RfKi`N==vLucFN<~D z8nb;?=jN9@{cuD08W#evmeGs(Met8%3;1xnKzK(XI(zY34l!$N{}{!8H9xDf`>-`jtDv9Z9+DN^YW)Bjr&;qO!)k*V8{w*B$Y{{H&6tx(kB>CE80 z3>#Cw5dHERT`?|ho)AJ%Ay>yQXNR*lEQlZ12ag^+y8rR0VK&0~)$!H7Qx#XJ*3scYf;^-iS=T|8{cQap1pKl&hKA{6l~DAAv}YkI!7|6ugu#7mo_>PGiy%?4-KKH3@N4fd>ua{to@8$Rqm zpTCjCa5+at*i~%A=;Mz^N8#g-@k&4b`0#Q6@yF-$AH{AL2nvU)a=i~V6ZIfGkYg4&~UeC@Bp3k2-FZJV(+q319k3SY=hgW)xA1_|i zhC1kZ@bSkFJ{f1VJAe70b2>=`<=X!!i2ojx4W4dG_2PT$=c+TXe1nU1}GZ~v3y z3uFzkobO{d5h77FSRGMk^ZnB`TaNkZ_!Y46ueow_6o+R^X8gkk7fxp_WyYM* z5IOv8y<7PHBT=fqvGEy3T6RVM>&w}Ge4__ozPBGk9k%HT0#BW;IL0zAoQWFg!w{dG z|9EkHDNH|laKXYlxxC!kZ$!^6z1hXD226Y<~n4{Jg{eEg#i zarpRuN5H;W6Z6f!6X%236%NQx-Zl-mCZbg^<+H_NzW6Os63^Mif6b~tIhK71eh3bX z_(7u6_hpHW8?Wv53>Lmi)7GdD)Wlb4z74ZCRP8Wl!;B55-?eBrkI9(UZcp^xZ`^;^ z3(l#7UFSy$CH$?o_RXW4wAGlmw)KE-KfldSH^LB4Za;f^`RZt`YmZ(XpWO~H9DnOS z|BwGF@e%p=Z{Ho+ZR~`VKy>fkZoo-`OM9!dE7LSDnxM#sBuLY~3(BIef;ua*x~`Hm ziTiK%F3+y!M=t)uGanqEEaE+O-^1Hodi|dg+ZT%SsOJ)R}R%TLedATE^WFtZc_lNEJ&Lw3Yxkr zf;P&kG|Iy=k2^5tWu7Kc(*M{$;rYV9n>C2!Vsw9ZI zG#~PzZHggt{Q2IhjPoeW>o`cVjLE6#K^!CTbCu9*iZl z1%1Kaize!`LFkL?c3@Kbps(99Nb@`j>WGfxJkN%#h?=+`01L|o>KX_tORx4c@*$}5s0`YwYLXh6W4-~a>mo*Ehajs%geJ=vci8tq z9A!-wh24OV14b*fA@5Zpo$_1I3~3&OVLL=|S+%8;)~XECl7R<9lra-|)**s*6%1XQ zbxF~|l2SSyXsL!SsB@@K`-q>)K4csrW2jjMxeTGm<02foAwV)2Ul_SLiGwB_s&r`c zI8Iq)tB9%Z!l(%t6rDCz5!6Kwf5Lnyf$GaF1}tx~YG^~&Pgtw)ac zGHQgjD(>noPlupRbLMo2;9DQp&=7~oP&eR|PUEae`>><4Bs=&B-xZ&2CvLlzWS*M?0VWpx(; z#^Y^Wbx>bLb&!_H5R^%s1w-1#MbZ{U-==_dbzKg5)CXBwFj-kde?`p@5Y-xWlOl0| zMGY!uXu_aND&(ykYNWSDeI$7mC4JY`kMAQrgv2o< z&(glmU_+XOGFi-mj5&--gb%@w-JHf{8Z-7bDEkyaLi~cJsfHlRa@1HC)^#V7l_hPJ zm55JOGU4d%8Zgu;$g?4ZDOn^dD^H3v8ucL^;yS zvW>D5Ba%l+HHcNI8fH4o;-E;X28M)v&~#}V#6{evX*wXHvSi|->BEp-kUx||jpAxL zmVTd1w}VXaq9D|`#%00mP98ElIaI1+|flvUD)P1z+$z=DKtMInl{ zjS=Ch%2=r(D{gCe?ybtGf(0zqw(ey0qd)7YW75jLEAq5Pqq4#z>$7t1BwtWRZ++Rc zZ85I~bRM&Yz8DflmDfF*vEWOGrfr5YL5o6e&s@+A3pT4*aTzAQLY5g-Je2iNr$f&) z?|eR5CFonMauO63Gl=d$uVrZ!^l3GqmQZg!_JGf?tiqzqaT98c6iOtG23U*64$y3@ z&$=37u~~fn^;OF{Eh;p8G+=7dCT3+ZM*)VQNW-p(<96iRzqV=;S@LMBIt#&C_7U0~ zAq^W@esxn+C3=L%khzvw&0!pz z;3vEv7#86@L`hU3a1QiuuG(zK6V`B$7X`d6SlLa8t;+JUE4mQbIAa34N`|iLhpG#brjZ3uh+D<7LHn2ZOz^B33HZ(m zJDT=Ql?H7$pgd9(X^k=oSQm^ctJAm{Iq7&KBG6`@##e9f%CxwIZP~8Xh`xl%i9o>FuFS5T{UqPCSe1uObehWirxR(XM6ouf2*JYsBf$a*Nz zZn!@&3p~Ve8A1OHo(L8v9&p_I3If8g!c;a%fZdiY7mG*HrAjb%aU}b%x zHnJgT(N8^8SF}0M{ndbFsG^|=FmK{}q3#$FP8Es+HJ;~jI_iPHvl>`GWzQUCBDDDT zX;8P~c(ifJq~mQ>BLN?-iYUUwvRLsJP)G&C!m1TPfyjx1PXpTGf;4Rw1xZg2c{#*MF*55fu8Kaa zi#Ek(ge;S^V8>E6_{l@Zn(Z*y8$Ix=D=dA+FcM}9&6c)!5Y>=&Sh2of%Y;W7jzair ztGr@X5-~P-?O3>)1=Aro42J>nw=^AP;NO4)xY;>&9=*qg2-SlH?z5nevm!|lgti*x z^{=d&EX{kyjCplys~1OtJx3iy4Gv}A_UnoL%XhO$vT*i3T4C`~wYX0eyhIu^lvgQR z8jN#~)DC!VSf;S=TDFK)kVL4Aw88DfRchEb`?5+xn#>67~4uzobj zl@Zq(YLYu6)MpP44*O>wR3p$NCwDPTQvT`C4oc(nkUt%U$6D+Cwm+H_pXSqncBS9@ z?cu>gt-X7wHh=QzGre~K@bM2K0n?~>qBTA}&{_|lYOPA!gU3pv*5#q{+*DIrKRNuA z+C1M1*ueSLz%97RRj`5ctb?0ilPlpS*yLCr{s^g>l*-mM|8R1(jO_~Yqwc|HQF!pQ z^TT){3`l%9Vgn`dq&zWNH=fu}$)pzB;7ARWq+Uu=KPA%wvK~!tpd|NFlKUx{G*oMz z7$(O%H~y*d&5U7Uyz}Cp7T>HGCdE4^{weXzNa+`i(kB_ES1=|Wk@oSU;lcf>HQlwX zS4DU2gM7;s;$Dd5vG+HMSKYfx;4!i%PZl@k3T(7to z(yBc9M1S;&`s}kw$A(^?OgkRZs?el9IQ^VDPTk)P>Z#?ZkV^-+y=2T%1!r{(KFeQ^3Yomh=lmDEWc zGjtlElXN~99!HbPfB2-Hp2>sylm4hj^?EiE!=bY552shz;bhnMA5E@=`-f3@6ovQu zqe;7Z4Kk^BHy}gnM+1zGr~Z^;=K7fj(+0|dYkHy`;UlV}N%v+KNas@fDQA-=O_#&- z0K@#~K|{>RL)8wTPT3BiPTk`+s$vgYM;M){kK45L5br>AvK@#{@RRnzQUB}-eu%Qf z9ancD^=@||_1>S=pFZ#m(}C#yIS{p@DOJP3BJuA(xqs*Z(VCCEG8r9ppVpJ%5usul z|IvEw7(f&@ZLlb8@($yuKm1{T@Tfo3rtBI>qh^aqqi1-~V42$=67SOnzXPUqxdWzk zy0g@^PIthxPIthxPJQd($hQhc0Hup5`FcR$uX}pbJp7EW@nn>D4c0vvhNH)y9(u4n z><<07q{sf503NXs@?qQp8v&E#4p@`PsMmVjYwj3P+QxolCJ{*QsGs!hLrcF7&WrC; zlQ?KZ-8TxAz*(e9;QV6cpthpoo35MCzR_&t)jw^!cy(59APtLP2h>8TLAtgWEi@YB zYs6;|Fafkk7;x%PkLvrA{t}bM(7~EIw*VOlyaRoHAsj_Vr|#ir z?I(|)Mw5=sD1>V$)n~YWw1)Bs^a!Q<9~)dIvOGEsvYc3YiMI&vh|5pB;Ih%xeHI@@ zCfXdNm$}ljK-y>&NCTZ7<^1q7F$F$BJ3RD&u$jc-st(ZoqY=o%Fo5#hfa#eHN*~!% zRC!dQ%>65J3u?n?N9e~Fn+X(16FwVxpz~u(%+v{_37?HR(5cw8MxRsS^GQrDiPs|$ z0N+>zMjgr4%h27Cqb;0YS>Av(b#4Lj*wIa=!jLZ^Pnj2#n8*5E!qk;eb@3+j$JhXwNb`6Y4wuEj*aCXT2{sdD9`9nZA8O{-dCh6fcnvcd3x3db z2h#{>oFt&@AJ)I8m4QBR5R=bSEuhsJJdk#!*xsQ2QVBdoAwRFWNO{9>S#EMr)6i2V_JUJ0A37UBBpJ&>%tqj z+d}C)_xZ^iG&+{82dsF?4$}tEgiiC#cCm@pxeKhRa|@8_+U`*3^=)s%nmV@t8QG$v zT8FS=SsG?Y&kESV=~)Upke)TMg(Q<_r1R-?t-`1cc5qthd^%lxaucVC#tg3el-im| z2Wq2IKy5q{NZVWrq`i0BTxLg>uE3T65>E@ zJQ7eF;|0>jBZ0K{Zj+GGE+G!o+P_so1gUlORtXWD#?f1J2o(la9WsKNc;rBRuF@!? zBdD2F6FVJFJE10ag43#QMo?@22$OYCM!9qS+i}_nH8RRHnHC_D8&=^QK}|z(pf;Y5 zpk`7{Ja;(lgqnB`POET^pw|Aa!s)P@OoD^7GRmkF9Zn;oe3R*kK(39eWmn;iLGIvE zf{;5Tmh>iZ}C!4z(3ooaii9)y%uXTD0M-qgMv6^*1^6PY*fOp|(y|S3Kld<;hsZ z8y{(SCrucAQWCH9ny7dutqXWl6>qBIowTK&^auAR<>!+JkB%M>lgXG*K7Du?mCvH` z>Gahc*DzB&*+OUlN1QU7ZhzMP-ZXEx$%N*~$#l&M>Vb0;db5UlnDhkbcgS_rxk~jg z>6HoULPuTbs3)%s64a%Ry3|om`eBdstF6Z7$#v(Nr{+l-mD{bxW)*cZeXEmuTI*T4 z;Yyz6#z_6?Nu4l0J-M`9vxZu^=1QLBCQbcml`t;g)t{bR8LsciXCEIZ_n$qI)@iC~ zRq$#O^7ufx|BPNW`Jh$lRg;d#2byq5tB!ek26$GXNfV662bx?+t45P174qz~P|!L> zvH0_bb5LtA{dm&`XnVTJ)2Y-;$?>}BXvPjkr7(OK%7DvrPH2nGb4+Lr=Q|}df@z$X zbRp!?L*wKKoPTy4lxcc)A$6W^AUzYb1+!o?OwowXFh>GtnIzz}Svu5eU))S-wJ#%p z7DeAeOu8l;i0Saz7D6A0k_+5m@DefUii{Y1wJ+CDI;o!8mn|9{%ci77DYY0eZ2|Sb z^4q|+{!LI;B0VKFH)zztS2qAH6lx_kyU2VcHE+S1I=28BS$GEyS{bNQx2;rB^7bQF zb|5F6jkh2@i*^U6XZ3C&mAKih-jx8_TaZ>dm5|y^oF=a88TK0p9jJ{;0iAS=-$H7e zOTlUH-8Pqc+WZ!wTFCV+Q0wTe5+amZM{ku7)%`sr8Ria?y3!lla2%+ON&&SawMmFt zrE_D31kxrUdX>&Cq-F^btk%(6B}8yqd2f{v6OUX$%XF>VE{{e~6O|6s=hTfNI)Yl% zor5$9lY_JqYGss`BE7{Zt1v;Smg;#6t4Z!0QY)j3a_4Xw8D*MG3lP;8{{6)$MkA03}6Mms`3K3_f0I9ef4tLM1^Wg`!Ce(HRMKiB#jYTcNfq|qel~OF9akh(5ib5T&5CeRyF-tF2nf&PH< zHA-KAXBW~qZlh3mgUP#H+s17X3Kt$Wjl@Bk#8x29C{02k7|mUqnB$KjZ}{yXjh!1c zg`hN!+vBV45@{Q^K`30DRSzDo`yC-I%yEz&w`^1uBczo~3mY9qGm#cHg3-5Szvhrp zr#PHe4%r0Fp)_*HCTI?$jYF0hG{6u9^hJ!;tR5jP^Xwo^tR5k)WLjA5Fq(<9uo{d; zVH_ciog-q#@z{jXb#BIJCep?s&kVXM2^v=T8q6mbBbZlm*I*{nd@?)YvJvK+BEe-?%xf@9 zpN3^TV)J=yBb0?1ep52yGB87(AVUz?cfX)pLY{+~8yIf{SiN7+Vc7ooAkyudHT$nR*wf&%FBf629f= zi7`wLU%UG7v2yj{W6#xvu3fph(6#fEKYq@Z?ZC@%EVJPajOa7EL{yq8?3A zPNvA=lF4I?>bVs4Sc-BgMGlrIJt}8X)FUanESIlP4EBj-7^?_S)MKVyf#WpFVupJ^t|{t^L!< zqrkjBGKx7kiUyoQum#Zo@@J9q?m>HzlP{t_j z`WPLAjzJwG&#PmkT^(bd`o`!W6bhwXAESfNF{oo~qWtJ7Z<^qrf@KSpOsWB7W)0=V zW9keb1ENV6eoM~LQv=OMPbW3z4x-9SkPjfX3>_fvuz>Lo3n1^XfbkB?OHG0d`N{D^ zq!#u7WWwYfI*7bO_adn*Bm?9p86Yn?9so`J5@tG2lmO%F zX1e`xOXbMq+&!Ka_Q#{EHvOn`vXtgH!-Z1X@eZ_RG2By6KRtLD<;pcSW4rqFvHzyxKXBPdiucg8i7{3*2pzaa!9UILcLs_y}DeSz51tLp3Gle&M#&c%d0&; z_nt|6tT!jVcKz{GZ_e~)59x*ebg4I2N^|q1?zHBoEpJiZYUOGEHV$yBrHp`yx9g4i z@gdx-OdFimE${zz@2XKS0m8je7&|YF4soD2E3NI1#QT}hV9Q3 zh_3y_1>B~|0785I>626w-TsrhRUY5O)~CDQyckG@(0b5VJUkd4t19RIVH7IJX^xmC z4}{vRG>$Kz*8p5jW12Jax+nGV?Mt0B90H_a;r&a>IkjO2Dn%R)c6ZNMxv%%Av*`Qf78#HTXgJx~*Z7(sDs}QFdcnxL&QemEHj6~h) z@+diH?h2ZwQ~=~QArFM7U2FC%D3>QxdVi$J;bVO%JU&o0kvMuv&j+gOBc7o4uqMIc z4QkJ7^81+dlJ=}7y^jwxpXaexaXis{BA14mrfeq@;e*q zv;bOwi0x?H-}VZe4V@;QJJ@VPkocBiq!M*CfEi#UL}=lM3lsXg1k5y0;4A|L%ra2R z6s*Jj{vnv?mtduZZNORaS@;1u3qLHV#vFj39b+261ZN@5591M9;rtlv*J*Na23&&9 z24;ftiK39@m;DjSCtw2QCyF&>86jW>+70U#s(>=kZs<-%XqX+qd?GI(CaMgG#{7U+ z{9KB_52eqb9vQ;EbgBa+0J&#KPbvS!-T&Ok`1AAhc`CjAnJ_q+KD7W^Gz&)?8?s zwY5#N=0wx1N$tPeA58E4_V&L0FODxx#lZs}8BQ;QxdMQc$luXazdNjF#lH5y4?x$qZ zmaKVVm>loi_@~A#p#LKsQ4y4Iyp$%E>*mjI^s(e^P9;H zjr2Rs28BcFSU{@Kqjq_!^{HZ2#&NpP30f?s#qY)Gq|JVDs!oc+0(GwSsn&R)uwbD{ z7k-!`A=BHF7pIFW^~oz8vBveqHT;hi)3czu77gFzb7gF#2&GG9q z&oCW`-k$?eJDO4^3@keGN>p@o`ucb>xFI-X1M=$SQtJi~t$Dib$iG-OAPSo{APSqj zj5wMtznCp9W=n0#u7NaawwN?}UYtG0z@B_Tyl>LVzFZ#dfN5RsfN7oXEOo8Z9Wbra z9Wbp^-#R$*t%4Ci>0(O0&ItS+9lxBkYp(rdxm2Hjxja8&GvkA~Gy(arsO?`|K?*8m zQoFkGtf3&;4r%Dti0w?+VC&d{T6(tPyG!5p&Mg!gV7|0523PLt2K}lSYK}jsXqTwfV^}Ikcp<#FXN-> zS4iv-?*M%~m2L&lM4tfqX`I~ttZBQPolH6wYmntqhrrw7j=4k?&k;tSKwz{t0yt`b zd1C@nskuT)bK8Jlzia^S0BP#j3ltlP1I|X909tzW!X!q@fU{91fRt_}62&nta-n2jq23M<|_KI@1A6zUj*&vvax& zYU$bMBX00Hz2R}iZory4H}`(0?!7v0OQ^c0w@{X$_}tVDGK-&j1J=~J1xSan_^L0_ zna-nCeTFTR>RD}|bhl~?Wg%YIKY~hpIo&hdLV1Z7Tz=vO%0`#pYu(W1cUyNMZ8Z8F zSBF#eTm{1Cx(bZPcYS$ea9%e+9!WH~uMU&fe;uK8Dcm@wKEwXyxEt)S=?EH^ZT<7YIIY*LgoB5zIfLA z2F&j%ZaeqruQf)SQ@cUx_iA?`?Zo>1+7Yk8vE2dmbHL)-f>0GPt#PuAnz?meb2_GT z4Ko=FK07^KOe3Iil7Q3M`SI6U8R(gVn0%g!0Ii+!x_? z0NP%{0lZLdJRbW1Vlr#JfrzK4W!=m4)T{x#7`#MGJ3Oun->zu`r0<%xP?O@YfzSc` zyC#Qc1XDK|H{hIq=wZYLC$JV83AiYEhuz+7=q!Dzdy$}qwI)^2P>g~TKl(3i1cqAy;VX4r*ZTq2`TLo;y`UY5>OlC z1=7YNfwcE-<56js5C>}Q-zp)3)H-^rga}UK=q(aLY}=|sMo<%v9H`G#8a2}hY9`gh zPKVP@sEM86w5ppC)Y?D7WF3@I?p*(NoOVKuj51B81&F<*RX9gb(@-3!jprk%nN$;2^DxGAc!f)5s{_WV(IDbf|LeQ(1N&V+>n~@$BGI zq82+)p1AXENH0fZ6oS)6qbKgX>3uqIvW8IO&TAOr&ZecmhVzQ^2I*nd1p(oSyuTP&eW}CeUJFOi+cn!@x-vKM{E|J=yT=EPdIrSfjo=em!H^R((@Br zD4lHoJOkmGVgKBE{Ryx8>YYiiv${>1s8Msrwk@cKckAjTKa@9Zvh7wa|JjA|ck0cC zY|*KeJ-bk9r^Nid*$_ddM7*V$1M6xxvm;&cPo4>L5t2#NSF^?GY!dT7T2lFZIeFaY zr?c7RY%zsfTBq91m6Ipu+CfMfm6Ko6I^Csq5Rxag({Zj@!>qJTH>o301~Pf5_WV>i z|3{`Go}3=UWXtO%=R(xh$$Fr3o>iWVRlM<$hIi7=(kG>DO0S8EH&LEURlKQ+ zchca$nk`;V%E+s;i=+9ANsaRA_4zU?-$dor^wk{KFjFJjLTCU-oHCnke{=HnG;g@c zgyzY~bj=Ft7nBw1%^K<#lkN)rzQ}ddxk~kmNykD^7dq-fM?HCEkf1Jg)TNGk(pkJ< zij}La#^%X&=bESHNg9>gt;S{*buxXclY3h0S-Ig#o>i{68k;9|!q_~yv|Y1Cm~zdP zJgeMuH8!h+DK}k>PfxB4*E~u0e4z=6v`$YXtqNXELgowQ{<8~don{8DO0Sx9%omz) zNUM%{S~Pf8p-B^r`9hNmY1L@bq(YvZ77ALYD0WV^a=6a5E0qVXT?=7u046o=8elqd zu>nwrpd?||&-)0NRIcuMPsPCoMlCql0;wZWinJX9Z?(ZLlpe*q1*wv?sWh0bAK1a> zE0DeoYUx=kUD(BUm%i1K#~Vm36dGW(Vu+poe6vqEDH2?U z#k>Zy^l4beBR1a}9-%DE@UPwxmw_4T1bK=ToP2p|6*e&1B_A6YwNhaVq*CmiTCcC* zolXEeB?SNxv4tP>JuEZHh})H$re%{n5T|m+o|W6=q{X%Hm%xW7n_%S&k@lr zE?-T=4M0n;8jPVJLi&@llIkrc8zB8|l3gg>{M5-1h4^K6w+)OQG-Z zmamI3V^DY1i(v#YEYKG>ruwR z5;6D2-5sjQ8j39*eZZ#B`_gtj%Gl)^BW|9hXI}_>)3qf8egoFjxw-c{b??>JTS9Ft zvJAx+h2L~(3B%ujHFa(Q(qXn?Zcor|xw#@G_OI0)oSsFy1L;}4TS$+GvqPsR%60?N zN~g#FxyEVYx<4krMd%O8-vCv;z#EVry}RbSH!gnzr)@6%k@+2@KG*mLsCD#K3Gqhf zZ}e^)y-7k`*xfc92WpdJ0ktEwNr>RI_ip2nKTN-6yaToNZ`C1!)H-_4&gllB#?f0O z#6`FDX#J+^5!A#Z2kLX`M%6Hann^XW)8VueYGNlief#enMp@O3!)j)fQSKa4E2E5Z z=WrSsWtvP25FuLs{$doP5!5v24%Ei;5!6hoiRTWdolq0c!D$uF5!Bj05@#KhQ8-=y zcAR!Xjg0b5razc3%iJH$-#|?t_ZzoeBQ8A@u)*aI=-+_!a>N$W-^FR5Qw{11E?-n% zU?jwAS^8@@uat~%epz0_`GjNy^GfjuW+cu#TY}B9%GYqFZY}G3#OL+*Mlcgk3^r%P zX5ooGSB5D6a(%C&TJhq5d~tpUo4{<-z4Y_I$3ok{P8cN3oXMf{hx z%OOXlx*zb3tmr5cMAklxV(fD89J=7N4IwL*#$NW(oaYLz+5PfsE1rr78UH zp#1UwEttnvnKJ+zg#Hx32x-Ux>;U?yv}6H5s7{2|IN7FMeK=RHKAd~5E_Ch6)rGE| zcg{^GFQkK|hT(Flop_tm{F=9QPP{ZvJ)5E)O;Jv!$l;R7V~py#6!ln&aw7oSh>sE<3Nb7`N`UcoGu=Kvp>At(?&j0NJ|A7R=|`QDr8LJG zE|k(P-iOjGhI^{{YH`jg)SH#dYTVE;mQ_ls?X)~^ZCi->#mn)uVyb7lY1~}z9Ql@iConf%V~}A`f71>d~zahI`@q7 z%V`_?)!Aak6(m!{y^;HXP?%R|uPztFW4=6@zq*`X%r2H!dwlM>_E>LDeC_(fp*??f znQEdtdv$!GJiZAIPj|n0vyBR&^`No%#o3Fws&ZZ~qfkLkbHp@xAk=21QQjL&D1Un7 zx^6mKhdZYctZ$N>1~@-no_wLL0SBOv$n}1j*^t}+ z^rtnm!PA=Apjk5;G;3yqW^L_lZ{d@>{H7Ur4Q2sSVcuwrMBPfBXqpg7*Q)aF^0|Hp zPZwIV%W^3cdIoTz$>CgI3iE}ki6on(5VlZVA4v>p4{H)Emvm{*YVtcLKcYRWN$-52 z`8;#4;<(g&B9}**rfesb;sa8~cllar+{RYN`15o(yMRQ}EPxguf)g6|x4i;qL#K)7 z4mR5mBtT;rse}y;UX-a z0J&#KSJW@)M0h9R%0~ogD6NYzKBw@C5Z!d^71w$ztrA$*{8NJCE_|(^c>RUa0r5jU zpdkUqY2?ernbP`Ncb?yPyl2|AWk$0)bJDI5N3%AqG;1z2&Dz?gS#zRk)};2I%ofVt zk6Vr>qy2B>3gpRPEsc};FL`pZ&5CwG~M?n$RS=83)P{idod#kpHl05C(Ag{wbNZYaw%C1a7eG-VT{Ntgz8-W5TcHeHxCeU(IDd=DK*S>2>vJ_JLX zghAS6Lr|t=AH;3a4Q16d^-#T+j+?lx+9YX$J}v3EZ;PO=!zAdEHt+kQ>*J((FC8ac zRK|Uu1jSIajJQgJvh5P+=({40%Dia8_tJ5d7D?7caZr|3kJMB{(8LH=S;k49b_p`q zy_b&TG9I$J?-+5~1u1eypIIA}RoR_9q6G+obfO1pjt z)2xiL;%*&RQI^Yp0j9lXov=je8g5o)+hk?h6;+7T?5%P>S&d)~NmK$?*FiNzSx_}$ zR7P!66>UDQP`6AyUyQ4GT<}b6U!`Ht*EzG?#84OxbAY_C`P5Qd{oVO&b`SxJfcJA|p#kc^5=YpS6&|Dv#gGh{H0>vK&@7agOeax-2N8B9l1| zn=ZqMgwcEHIH}{NODdLb-$ba8w!=)6EU2cfiaILOxbELe$4$hdK{EzzRv=tMf_;kX zh>1?pyb6aLoAF*c&a(m?RmVZtwk)S2PMG5|M}b8>E1u=vyq}JXJZzDpBxs8P3Co8n zXxfl3Ntf4cm=95n26-PAxoYz|3%elhG8u7N;#_ngvespBGo*1iyq^)*Lrb?s9}Go< z^V6a(%T9cuuI$3LE?8vmM}f2~)htAT)J=<2=LlDs;9ZqaR3}AWRQ>zu7zbx4io6Jl zq{J{rMHOHw+hC~TxaQZUd`}~8hLAxqy>XTdK^pdPP=$FER9)OgeH7Oi<@X|7d5llj zqA|LvL%0%r(gvFu#7P!+X;~-bUH#0A^$_*=Pbr=xE^`(JRT5W0)s}cW$qk9W;AA!^?jXW^ zu+fOauy{Ws#yWLH$s)#;#}#M_4B z$;JXHjE1g$FAFNEyRM5`2Ad?Tfv7~R8*wzDqm9cff+O#xW1PykYm+=EvJ|O~alM)Z zhZi&1M|~LQ>F|D>ANDL|TC}BX5%Id3s>4iR7~`rRilnbYWbD0+xGmgHI1k#sj4=}( z+Im2FR|R|aFpm06eE;`gkkfKFhAigC>jdy85*0yZ7S?^qBmxWb0H# z=qnT~eL9zL$6OoVKdakbh2Wm#oeQ}lK5el!=}WXyhr zbsS@)(t;>V)#7NEO^(OcHBA%UaXIxdh{N1asFP2}-uFkHcd2iK+ISkKRLNX1it&f_Z3G*gk0~-$s%P;KHoxU_wvQdxA zq{ITXOhUrmy{hvZOW4&N*!o<2T0S4GY!U$IUs>6t6wrTjWm`#r{>_zbwFCNnREm2I0rVdj15kiAh_)q2257gk1up?jSD`892WYXf#bN>d z+bdhV7|;(_wwN}ce+_0?;_iS(D_d>=&>tA{7l8hjF~ zc6gXgh714pB;QfiZc~0!+1W}8I0CJj3N`$-&{%#%RZB`e=Bi5AM z#ZAG0#DCdAvrYbVk&F27ZkgzO%2prV#Q zP%a@Mw~Zs)Ib71wLX4T=y_RkxBmj0?Q>wq!dMl%STGm8EC=4Nu zP!|M^f~=?*0^uvcMpn8k$csl6u9F14Q)DJl4blQ^`Bx5|>3sst!{{w54 z-A@lh+80RxRWZqbGLKzMe7coADMlbIC1;=4%zv5}*dme41bHq?Scjh^*it67VXh;f z#ZVEOt6*c4b`ddfqNN#zYL&A;YS@pmHe|P-WkIcCqM0S#1cV^K zR+99?ZD@k7uIsF?EAqUKy?pO-LbF*(P>eN4);X+u_Fu!m455p})UY&(oFOyRJCMyv zqlR2H#06}i$sZEjVfzmlqvVICBJ`BQ5VCM=3=^_YaZ*QZ9HwC+v@y(@y=ossVJo!3 znkpk(*JlNPNZ4=}GN+mFr|-alXd&c8I*5fc=6Yy`aws7WLE>|7MeL)ENGAqamx8e) z&ep(2w!lr^$5n*Tp*kj(^{C-rzk2ocR+0RVZmIv7Klta8#4Oo_)*a~{bRr2wup%iz z&02sDRYH_)qa7WNy}i@ducEzc#j*eF$-_F?Z=XEuuJ)d_6}soyXE%R+c;nagFV`62 z^RHe-uri+Eav-bl>48Y zou6^8`0L%j#_#;={twTBgW35_z=Pw{{loeBY;k>ZwrmcZ^M&(#v<0D|uKwawp+CGB{-JJa!Q4DWj~?lj1E>>%FhIlcqV?)}+$zQa8C z1lLdcD&L8{E*e-RyV3YO7w|sP~G_vV!m{n26>5xaRREGT?TMyj*x+Nt_ zVl++2+c#rGWJ00eG!Wmp_YZ!a2I5Z~x7#6#sg{ii4Y5B+Gi)anXa&x0)PzmU<|iFD z!2fD-drJCt=WhyT6;jGpbP}^8)+ONp_Fpch#-=C=^NLL+{stct&%XWN{kK0)3H=3A zPrqQ~?9RXZY*+h#_$PnCSnvx*j_~z6Pab}H|G}f9{`Bkx(WQ{e35h8XvLkMj6E>>Z zUK1Y-dkVS;SxI&F`jPuHVq?eWcYNy6$>|-Rkp0*B{N-Jr`r_0~+HF3ZpFRH}Pv08n z&A-YxZvJIM=dHgA9qT`>1=%k7zkmX>9)tU4AIR=g^0WQPckk-{bYHlx&|pnP{Vb;bZglJljXWvg&e5taXQ!W?&AyT`^;sTM7T$CO z@;N%i?Byhxo2(~M5p|TY5eon8LI2~U`s(WJ<;9cZlb;^HoIN?axT3=lwdxy<~N8Qo0r-yHI=i9EwDyH6y z%2;Ci)U{FMN42gbbtu(kz0{<`T#kSU~8t{5{I0xk*6G3NTK|H*%JN9OYMw~d;G%@vuP zHY0h{kU&f&H(Qf{ z<$22ah$xg=z&t0~EX;{3j+I48-|!${Q~-09P%=0iDkUihqN?uTG#snRqod=u7R(3l zSb-eJpjtjlsTSoFN=jlHgmK8QsZ`{|B1t9?x)q3+Jz312ZfYj)u>Q!0a;Qn-^^)c) zh!T_y6{$l<#*Y%tqNv7DfeiQFDh^vpZ^=v{jqtQ4^GHNNCV@;Fg_X=PNiRO%S`oXi z!b*~@lz+2IP$CVvyMRJ%(sgkYarA>(l5hn1S_D*5cbovFR)!jCRzXSu3JKZ4Wh(6p zf0dFSEjbJ)M6p;nwM^!KGFt3SM_RY#tSk9NKHoMjdSiOSx)?YNQ5TY@jt5b!`5@VC zif))+YH-K~Q!hWt<%+y%fx@d%5prmQbKa;3QrB77mP04G>zdgaH4XcyWjnvPS}u;y zxYhKKcL>#&mwR{CH7RSYVeVNrQed8=XUT=rCq+dutBY zr|4(5o@Y0CzxS@yoR<~ihfW?iEP)Q>XnmPWzMnHzWbZSU9%AWM^JXdEno|3!rrIPb zd*&pgG((Ip`nDA#!zqxES;TIPOF(#g&$tFRlR+g&HpD5)xlJTBM-5HTkWuIGRzaZy zr{wS$))HdgB8a+1z$l62@IQy5(nOA-b=2LXLt-fv%92vlr&!hg*`XNL4V$D&{BZts zxp;lDd`(>7=*{!R-Q_;c8qNn(G(y#ooJOliIQCRXu`2UCqK>6Y&{upupdhxy9H9l# zXB3FQR5VPCt3z&{VwJvN38C6r&a@NFD5czl8Luf`zy-qUrC21&E4p6FbT*%@Eg}7B zRGynh`Th}VFQkkIN1M7Mdc$QP#Lgf%CmLe!(hPM7QMQUFt1gSOin|)f^di`3Z~CCP zr3eG+=%u`+_c%Z^Oa1_7DiX1D0e*jp@wxAWCDlX(iG3V2% zsG-;-;pliq-5QntGK4tKBK(AsUeHT8PTY6_%aN2GV}wy^W5I^EN6=f!E-Ow8Q0<0F ztICX{LdYp4T6q*o$w%E*IEPds6;vp3T8kPe($$PHNpdP+5=wLcqu7X(PB5x+ z6EvV%N>q*`4Zw29tivbbS_N0elgA82s(so<%6JBsc%slSMAoGA5a&fYMF~@4K<#1P z%MB|vY99H++O{EOS)5ty^E>#P;V{&t)EPFY3+#m)#LpWfWI+FN{XoLG7&>jM1bLTY zsuX*fa?1&`fcF~3c<2;ha`MNCC03ZTf{tZ;=~z@!U5KYk;TT(rg9jMNx{7EX`!Mqdu}7;dFWxhqxzwkvVx|h4BE9+$7{) z6R5%iEE#EnA>^1MbqDiq=&XUv@c2vMh9V2(Wj9aEGrwFkNsh8+6U`!G^PXI5{B83-_);>f0>BT8Sl;N^irU zclPIhn2~eB&~#qG>bp{a0{JC1tiOtH90gOqNIBR$086+~>$ z(2K06v}PlmP!69skENkx6I+dIC)Z(7H!ndYTsT~Kim>^sbK&l^E4s6-ycw30tyCP# zW|gobqe3^b`Z*0E+i>D>McMaNCC7c;qRFz5KrQ#?v7ANn5dw5n>fo>Rk?54S!bc!dMswZzuNQxD^W05*RQ<@%tsXV=mY#bz(Z-8~&=a*A?e zAG(swHAf~mkS(bK&YR(evuDC6mt3Aj1UQAWe9Xp)I4>3nRZX}9jB>FZ2Vqj=oR}mr z1}yuCksSrmVD8z2?Z_y?4V^^0SQ2%Hw$DO#?W}>(I6b=GP6hML=7tz*0VBv?1YEp= zLr{~=;9f;GoC#O|;qj817%dYCsngCJ|Iaq_lQ zyek68x*i(tzY|xDiKm90{XPr6<1W4;iwEwz1gCQ}FJ8U_r&*N@ggw~J5Qrtx!Ga=Z zRN^QSaOSQdA_F;>@@-v^dv_F-6+z!2=O7o`I_H;j@k&j1LC&ch4i=T%pEc%H?vzw( zV-5;PvWHj|H0Nx{Ik?3U0=9<)T)8Ajf;!_mYg?j>u1OtZ-FH}uBqE5M z$QdI7qO30>J59&sHH7GUu8SOS7>Td&xwk3{ECsnUbRyXjGHLj` z=CgI{oGh6%=H^lPzWRBKdsLEdaVDp9X;=v~5N{>H$favpT%*^wZrud)-zD*K7aylg z@rAjF5Zg--1DlDL!F{R(G1z;T8;O51zgh+x!}*T6H48tX782GR>BM2f@WfcVD(9eC zOWLaE7-2=*cA~JOcbc3P8*GlU$>fu(!K}HPO9_P&n2NE2oS|MPZ|)@g5wW*OZeu0% zE$3%2tVBStzu2&h#OL4+*zF2`%`E(pMBg1pC3i}6R02nwjKqiMuwInm-bkXDqoQlk zZzEVKW`}FkutGhX8SVsRr8ap&LXb;x)`#Mp2;UHWn@{n_D*9zrV{p0rEg`!_z=-8v z_Jow#&yZqoDEzJP6-MXYiT-WYzf15@w*%*7QT5JzqEix&*l{ ztnS&~aVB13TNEU9lr#~vh$IQ?u8PC-6EhvS0Wl-bL>+>Fku1pBopAF7jyXkZXkm7_ z#5+j#6_MO*E754lDP*!eQ?5Rw-ymRS%!2iX>qpd|SM+ha+Gimj%5a@44)vgT^toSVl1BNxYx6IGBAgkVl#FJ_9B zTISqc&?Y43*gbLtAB9T19z7)cyaXqM$S^zDtb=;8UR+-S81-s#7-3YILOLzU_;3pZ zJ6ozSh-(m$aC1r-4Cydxg%CO1o&rJq6w1{v@VTHE=A< zoZyux2f*0BpzX;37u-8RfFEorCkzN(F$>f@AxLDCiS&Y(>?PO5QK00MLq`m#6=FKM zX@^QX3>LQ^$ORi5_ovX1v_9Cl-ag~@0)(;R3Qmj}QF89&<_j-sh&U^awgQYxED#me z0+;=xY6wY__#$b=^+6Q(;7le`VF?(LOxTr-7S&m-Qx;Xm(kMt`a{V^f5V+jkz_r`l z62J}yQHO7G`$&iq=!ktuKMX{cGbwY)G*chQeR^Ocqt(=GN4Zs@z}#`Ihs#o;7g#e? ze^PA;fhaK)7n4HKBzbHCqJ+c1#!bnDr)0IDTIGw2vU9}<>W7>jYN!?VM%+_WNf{~k zSTm>Gy$fw5ExE>!`$kgkLyZIsVMFz?Z-wEa9Pr2Lo)t@Kl)YKji&6uOH(GGd2eFer zl6MyjC?j+{8iEU{5s9cHnGIOpvIVA~46%$5%K}xy#f_{}u8T+sZ*l>?tW)lI$PrvL zQY44vWDiJ^m`g0Erl?4=4}XNG&%k~+m9i3FLd~M?(ewY2`wY53hhjptgK`-Ijao=!^)!?H$#@7UYuM> z7=HOGAI{F#sls;^CbFOE350N!uAG%C|)3Ub*`vQBKY{UZ1h3Rl^V&I z>1Txz(w8u}lsn^Tad47+2lWAYP3SNqeB#pNX-7hd0#w`sOk%_ZzxefBW<j<$eXsbw;r(C5r z?u=iYEytKpeQ|vLHSZ=`XASS*@%J#X>u@wEC}FI;p#yV)u#ln5h*0sOl5Pwf-&;|k zPGJDMMane+mAGEhvZQJ*97l*-oCUPd=5u3LY-j%F@w;tBeg^T+u%`-`3iW{XBH0dD zjwLP-BVwUkJw*)vqBLR@I8|a*hLI ziy6%1Win`e>>I8%bvC@X2}82^Tuc40zcFg2&7*w(ORHW^UX!MiYY4@!oyjStNg z+myOdMBwV*{&dgA3o`zs?AbEPdboa$`_MT0f$^04^3eX2-Es#ujyHQY@$df?*t4~^ z<1BZIGW}6iJL{0QZuA6hB@iMds`73ox9&UKSpp^*jx5&KsrE}^ljs<9%O~?wZrgg7 zVrPM}JHV6RW(irNVw^KcRI+d4UVN^1tMPJfDE4>gEVFXI)62BDrOo6Hp=>CLYbk@J zL`mMbg7?XmgPoCNporG?TxQ4heX^~<1(VC}sk7u99D5n+P&r;ghK++X+?_|Ah}1~R zhoV-(8Q8Y<1?eG*O!Cj}gc}=M!pq_4=MZWn#M9>N`>A}zX5o>e|H%LlT@N`J!!|1) zqmp2yvWu6pu#a}HmtY4AR)}S8|%lv^T!iP8Sog`QX@^&Qb^LD z?V}`82xM`$bB3XnRYKtoVF_;4C)y?NO^YN8%IJ9jDdd7R$^m2pV&m(2#CKL1H>~#o_5P)N8$c7I&XMJ$st(OZJx7qL$mm?9m6E|gcwQOb=Ctt9Gbu3QmR;&G z2`~{hme+=D#Kb;Bs8z0b&E%ygWKY>1a2u;^9|@K76P4zi8jRLSR=FoLLa|c*Q%DVq zmPvg|^DiSv7v$oEEZbHu7iOrNqFfSt5vs)srI^ zY?|d12O9w@TL}@bM@3yErd4+JY$7G%##Rb(LJ7vi7zrB=JF{?|MUr)AXY+az|HjX_ zLXbN6HlhSyHY4oX2qBWm;ObU%5oMo5w#S1zgm}r$$fd6wTP7k$Y`w-X5dY+GP{=-+ z!{VqdcF~+wCaTBEB5;TPhhNw{3?D%U%Fo#N1I7ZWNP)2lcVN7~mYp1$korLaHFA8s z5G9!P1m&sXWt-wQ;6&sRMyfLFB$OaAw@6E;lo;clpme$6Nj5j^3#oo1i^LX}m zC)iwVtlX~4 z`3jE6MRMXwg4kSr9WwL0wTA*5@%k}r9MiUYUiTZ8pTFb}+i8)9Ji_t`+YF)g?(2C`NGc0ZDvuSf3g)cW;8#(sM9v zs0dmhV3K&JY8|}9rz+MPN|F~oIrgF&$vv<$9_0FF$~Vx*a{j3tYA#V={c)xmzVRL< z4jqb~#@l3_iV#p)8OBKE>_IvP}s(xNkR6T%AHjr z?|-21f~+R@G*DT}u23>-9LVRU3{I*N8rm4tja#zW$K7^(#yY$^Y$rNkI9jHo8$m|uz#aXtcrBhZ8~;&nqPIWh(e4zdZ5k%`5}=KRLir`fTlY5(+RMpJUIohkzArv0}Q0?ZUv8QV+t5i`Lqo81)NXwS|RzXU0g z+v4Qo5^}sCP%??)aC1BmZATu1{BYcPB0TawJH7UrQ?8kV&UqQB$f&uY*e#X8h{sDe6$#&jHAWkK_ zKG|oIx26(-`W>7-I{i}@^-qwCTA5Un)kXbdaVqa*xc{h5rKFn@-aR14W+*~JOSW=A zRW>GJRIw5=^2(h!G;$r&JDtjR`jU9Xlx=ZvmW()Si(Dex7zt)@G7!9YD+&9P8^-gG z;z)Af9^wfPvD;(&O_qlpBzvNP3pLoH7WhWjfzf-byQyqqIXwego_F< zN+P9tfYYHIMB|03TSrntg!6~X3q6sdC}NaSmK`G85ccK;Z1Ol!`DX7W z#Y1fe?<1nPzaw@-LYHFwh`0jxF5*pd#FM|QW&a%RyDR(N6|H1H#)Wq5T&Uc`*_Pvc zTr(kc$#Q21FCZ?`O&R;-ESh&syvB&PDarek*yrQa$u5x2v8n6><@Oy?Kietc7@ese zW;+GM6R1s+JLh=$E7;{7MwF3?=ftrFUS~yV?^-tQP{B^|XwCsX(1?B^UV)j#ucQ++ z0WU*g8EwOmPS{1THy16A^$m9ybLt`~$|ImieqLfiaw$b6Cl(@3rICRlF}^*uBpV{` zPLpacR)iGOH4;N0u*8;_yT!PGXUo%@{-3QZX~SQ>f3PwZTN>;4e%^V}ip>{qc;d(( zm4>n%Vj88aJSO^3_nhe`n6_Rt%d=Mpm&IyMDXz{T8bHJq<-sfX%8i|onno@gcryQLw&;$R$4752 z&ySP4FFaoIh5HO)aRa}pghNAdJ6Iqu>%yU@>PXJZ^WmaWHfd72Bd5@qAGvpus(eTc z<&YS{Mc8v<;n~UtH*>}J?^@6MbJmTG0r$jkwvQN3%>C*$2VHrmHt*^qp+e|cqSBPs zA*s~(la#Y#y>iDui$qPK3-5S#4^O^KlPU5iAB9As=`v_ck%{P|0mR1^Fai&mfUs zj_zlPxIoqa$KIWQTb|~1VZZmz5(1)+Tg1KOF*q|?GiRxD&OMJyJnPV7Z*=u+Pc%h! z_3iFE)MnMKUO1Q@gE%liP(X-?ah?GO6pe}#x5z4nQ63Z!1rqh)k+@4DiAIef=JS2e za+f-{`~QyBOo&{V>Z?q@sjUfj)V&e&G7^6zQpEk$m)3 z+%+GY+Q3|>g8hYG1k2UX&c_Dbwz8fFZ^@!t(3Uhkr$;WkD>DXdsrKMwV8hDlTnf-_ zd(q7U^n^~J=+W;ggBiIzTMb?40eHBci8ITkodIJfzv8e=Obt>83ns5Q3mQEh?l}iw z+m%l|P9cC7*b4nZb}`_&Nt#Adt#bZSi&%NMC+*kfY&A#w>MAHwWx|4Yw?@%tC7_zG zBa-9qF2%W6{iJ7j6EyAm^VY1D(ARK8d@OB*xQa+kXV4;REItl{#7`Abv!@_7?TH^4Nnr`JFC znpz!E3+}Bjz=LvE5c?QK*?l!yC?pwj)xezWpTg6V7akBG*9k{0B#lE=oh0eQxubz* zzwfs^9=o(YJ=<1t>+xyN=n0BC+X&=tB{@gcZYAt4=^srsyLe5jphmI8SC&>(+Du#;TME-fcyU4jcf{9KVu`3$H@bHV#njk?984 zgd&tK!%3AwR>-VkWl&I4HV);|@^46E9BJcNs3q92e&~~ zp$5Ks1B;NFJ}$Sf*A}*;-~!NS$$Av+!>fQzR_H#U5>VEOkrFli`HxCBkPlQYC~*0 za{APYh?LIh!Z~tj5-G;BfvI#TxhmGT712vhCO6iK98k7d^OF}hMGjpP=^)oHh2Az6 zKgxng^$Sd4^p+m+@_f|oki~RgQI?93N=)*^DS(28xX!h{oe_nxIoD{Cir`d=dCn$C zR;9Ei0~S^(?`BG=EQltNgB`v(d7JoD9_E?DXDR6hP5$xSS>)EjlZugNKniYTAD;^0 zBQ41Yu+BCmilNvQa*%U1i&HHak3N%%g%k$1R3Dw_cxF$Z!)C0WkLMhs+y$9JqlZ!S zP%xR`{a$Avy~V1C?c%h;mDsIVhsB~HAqHRt5Csn^Uxw%a58-3_M0cWL%6}}N5y`R9 zlOwCywE%P1gJz4m%Eb05If~-6mWMca*44SkoQx zd^+6(9jl++hP*Ey$6ZoOglMwRIL87I4iqL>ZtgBc>TZu~UEsfJ>~nNggrxGWoIjcc z_PDw`h{`_1DyKU?ivesAcR;+OP$!Vdfd&S{UZ5a?f2vNoeAWjYMR#ESY&XH@FdSC> zDi|w>vq&}sF@mzn?w4o8Jyz|+bcY2@<=uTq*fD%X2?lYGJ7XP1Uy1cRwQNt`Iu!yu z@z^7)n7ZQl>qyu~pM{aeP-Q7tZ`dYrm>^Ft2WZ*22YwKBcvdtlfuaYwryVXIm1F@a zqi#feS8w^v+Ml)*vgi$0txQY$7c|UR5VC1US4Q==n69r1hOMc%lLb5hHfF4OZtbKw9an4dCkwAIq#%)ZaP(!osThm{R zKsO3GOr4rI5VL!dny)pQ>k0tJEpL3n3anG1IsiS=+z7z$T^f*(b5u(dCa~X!OomQQ zETpDyTWmIheN(mg)Qtz4FmSCY9y0`C`bK8e?-GY0x5}ZH(I51&6}qu)LU{`13G}2H zMo@M36ZR9JtQ_ttdRtJa(BxBse=woUpajEgA>Kmv@*RNvgjE~-!8ylveUcBR2hSf~ zJE%XogtN7C!s5?ju=-3fbqxJ$1Q8>$($Ugeom@V7A4wvfK!Bg{nXC-RF5UC=_;H7> z-z>*(1Mn|#X(O||I<@)78=IcohIl?8W5`CBC|g^W1z=M+9d5VIRuoEb0gEh4IxDn@ zz=N5_jzJ;8j>{ekI*@y%W{dugv_ub!4PJ$yqdOtcjA4hL0TvAVk2s9V!CWZ(xs9TU zjU{5Vs4Y#n@6aZ(c0GMRavA+pn+t76x?&{8ZXU&gC=C(Mmx7D*0G(X%=gM=xa#(Cd zJcc`0Z$zl=$y>Lsmn&qe-Ege9&@vaPq9*;9Sr(kDI+`znhoM->Hgxfr5 z(?J&_{+d=nUAu&c0o&NO!El+ejyOn4MoWuGvVm7JR^iYVigOS>mm$%8{t1yi!lj&!hEaZHyuzfF^&CCpC-m(FtZ`U@OUFl6NzPGmArSIx27<8{`camTCI1KuS{ zfWV?K#%uu9s&8Tstz=AphzGqr7*xNc(g+kmBXC8N=wNIwxMqttS0I zV%6>%U>68M38JFwYh~txMFF*{W7G*Vb?rx+H%8i6s)i4>`h4|Wf11P-Nh$=jjm|qK}JDkLZ}t* z(p{b?zSDI@${C~~Pm_0k@>oIs<5}uvySe7I*ZbjorEay2sPAwe!b4!)lt9$RV)J;c z?Ji7uT!grG*KXZ>{@@NMMtaZgeLOFy+CmCk1mPNUnRV1k6zgm-Wke})CO6fanitGx z&v`k=4IQql7y;2Bzhy6TK$KQteH7@R1*Drpr+f9ieB3c@TV~0SPy>NOCoUp<9hOt7 zMRdF5iw9HOqZ60X2}^lAZsVItoX|sUiSLa^ghNB=q6ex;wu7b$of2X>$5XfvYT}Q| zqbiWu*%JQ|lTC&Nj)eq2A7T0Nil%Kz1)^(4$^;_F&`BH0IHwXAHg8*fFLE1x8uw0v z8EMc2w5iW#+cNawo|0^gBbk(z3{!VJq1-51l^a;ybIOebRX8V7(UU=+d50`I_pE95wwoEhP^Vz$a~ z_AG9et#InUX?zw@mUSkQiJT}TyEbUC^AkYYkZO9;C;Aq-HctG!Zb9mebeI>Ep>T3q zsb=z9!^)oNgF`*0Fn8(s;F7acn&U8B+J-TdAb31BoP4;sWlx;Or(38%Xo{;$zbaz1 z_9Tn1p@qPMQU~{W*;~`IHkRiZ^8!UO%-*uok__RHC>J2hrG*1YM?NqS647!D0Z2 zsTPUjf(ukU9t0QP1Dipa-FnE@-o-IGautA99I?c}*nqlYjVx86#aVcLK*`oAR*`iI z2;WcgfMbm~lIoOXZkw#C#UFbL!b?ZScd4(p5P|VWV~Av;hVT@%czYH9d;aHI7b7gkuM*NDZX6Vx&fcc zw$fZUVVIh)3l;>n+Xwo<=m?8yTp)6i*^p~?Yv_#= z>2y^==?kiZW$Bc^Wh@DmIUFj543G;cXVI+<4uZKT@0!?y(x`PvCB7Yj$1%1OEsYNpYA(S73Ty% zjpDRKrjm@1(B4s+%d<%8Q7NNvkzPoCXger!=)$C$>+IVZL7+u9m0~GnK?2ge%w#fL z(l!vIL>Da{xFUmao`t|waXA2^E=yY(_4xM4$!orB<-hey!-raZd~=}I|M|9mu0OQh z7tLdS{Eqg=@q$%`Z2j!p-s{xgo&Rz$G=NrYy9-><*h;710XzdVlz@6lLSQ2nb0%mc zU9e?GZnH5QUO|HWriCyY6E9Y3F?UMftaKYCr&l&6%)>3CHnuU!%aOx&o%f?K2yUE` z7rYEF8?MazJw~Tq84$N*JKhL?0>d0YHFlI1UKgNp`Ytq%bA+ z3W9^pLk3c;ckU6~^Dzm>_OwvTq8SjB9S!KH4bKRoAj&Bot&E1OG+|X4RTbS_!Q=?I zzIiWsLN2>x{2J&)+jgq(8YE7NJyHGx`~&bRxhYv8O=ec3Dhjn_Ib(owtsob>RwN5x zh@_lF&4dfqrs(9NoGUQX*s>r3_F=R%p-FO^>1lDiA`Hs9a*qJ6@zj@fp1lRSYjRAo zuH%T10w#JR*V9DGl|AV&a9=kt3nspro99kfpwvY zhBAc~^dxu{d~A@U7oI;ncwv0-+|}m~Z|Tk(O_;*hc84_I=IbY|yHEZ-4Pf3=`PykB z^zF{}o=78(gv^GG$6J?Ol|Ej*XAI!!vv8U?yUq4-4j{NC`r(ZXPXrqX(g~%iKssQ* z*U~t2W&7?^Zfb1x99)23whlqumk7ZeW}w-?5y)6*RF`bY>c{zOYJA9`OyM)|d7aI` z-J-1Qa)+t1HAG~BpW!+lXEg}45b2=p!OEu#AX``}(*1}x|K$y>);_SmC3BN)@zQURI9Q?^^U&wdcGdQsAMd8zxDETtt^ReI2qjOpv#!9rZx6q8@cHCm?ED`JEI^!0-AP}q8c zDOU_JLd#| z`Ro7R{8NgIYT+|>t(q|)^hWyn?wN8Ycb}26Pkch*(;NAxKq8JfBcIlj&VkbRZYBi+ zLYz>;VA7H+X#fQmridyptze2owGv5*9j>`V^LdJcI%UbSDn|xuB%_^-pjJhGEPs2f1qqqb#5_61}ZifW0)M!FdG;1xU!^@keD|?@p5E28iV<4AqYlx@6?JiBl zsadTdv%LEG1m&cg&BW>%tIz0Zgk$DK4g~m|AOrVaSV&mfW)c)wI)H3YPYm2uuJ)Xq zGB0s5{C&B0BwLo}@JC1_XCH{yOJiY%@`9 zN;^d90n8$=tY{`7vX3(|MOM_-j@DCxyb=SPGiu{tAR@U$YNh~PNgsxUrEMog#&K_d zhTNeJw8AmlHIQwMif-kj8k0*CNR`Fa76Jf&5Z>MouEEY|Q%6dNzx>E9j7d=kzz@{u zWHL;IbBW(;CnvKIj{WkivySp$`1!P0MWf;dqF_4s@#M#Nmw?w@82Qzx64l}gv~3+R z%%ZM@EMq!6sPpNCD7c;;hsyEtH*@*K!QFe;kM5qyJvX*UQUz&J7bt}TlDkVlzu!V_ z)1VT231*?_+I#iA1xTAUC>Wxks^}zT7Ia_K>rq~yFUywHJ6YawpMoKyMqi8Cu_7V~ z?~4*M2mumrT0Jb^J2QGJ5NN&-`A_})+y|{I*-SV5XR@9@ll6RMne1j~Wx0uWs_p&# zSx>sMxO!Cg@G>1b`G&MdggymH<&~1lne!MnSQZL7tUj&-BU&~A0T(KLH#b;d+8;(%)Piymt} z@qqMN(Uc{LkJImOmtLksvRfgc z2&sd#B!eByT}gYZcui)|>v~+AbCWfn__Yma3Js~cUaJq={gwqTfD;fxW&sAJk2=?j zbA)d1oC!(h_Qidc<=mCqdfd>=M?lpCapqx2wxtoNcSA@6M-E6Vzo#@_X&iED74}orA=_JqgA$+FWP!9&rNxw zja&EnPkB>A{QG(){PR;59DRYa2P4Il2sm9Xh%BZ_v|d5&{&e0|!vXX!s`!ynfQ5xI zQS4(;a4_hUxd2sTInE0Wp<(p-t1|3H3v~twhGH#5uS9kyfw+$?+u$a>oqqD%aJh+8 zjrrhhr7kLuqeSN{pPnQ(D>}Q)O4`pwltP#!M!L_dC*@0F%?2$E9pGuwrE8#Wz-#iy zuHqrUtJXd#7(=YEno>quJeB%`SZd_XnUm8MmP!YlfI|0i>snBxyu&usINf^o~(4o zN*A+6&2Boo{P_F|t3G|`$%h_$bo6lfI;Z-tmEXMaAAg~Le$oSuzH~zge;t&S=}Za9 z>{I$65J9MmM?`07xyQK>IWeH7sfh(Q2IXqYi)6vxcHvgg?D}Cbh&nA?Bid40YWbnpA_{RFHwbr48n6wB)PPgB<&lNR23cZHec)iOYjc#z7)N^`^fSr?^Ft z$;(f)pUPVmnlE|NWLF4TEB{J*7nvxL1r`=4qY1I+A-UZ?(fBgVCFvp(&dYgg zLC5jjX$PiWojR~GvRN4*YDe=SxIYGaMz#eSU-dn_lQ4d|e0rUF*hTrN0)1GJ)j`%o zLu<{m3Uqv2`Jz+LsQ=PpSq@(*UXgeb zc$CosZx7p}h2`H4T6Vq; zL(Vxf-__QSG9AeLJc}h>qM0iZ=vH%srQE`3P&pZ-snGxwr)*1OD_|!<7pkH37C&O( zQj|+n+2|1F94%cufPR2)w@TV@vMBU?;}uC|;^3uE3cT3F?SJ3ddhAGdsSA%BzIgET z&hq!~I=FLq{noSVKji?vYjXMGBkws}eQf=w^#?b9KK|&bPhL3v!R48LbaIgeS$%Hx zhxO;yf6RF62fpy8$7gT5JbUx%zgYiuu@S2WKJ|Ae|J#d?GbCp}l)pRmq03u7l)uY| z9`c)w!MpIL{N3ADBffcM#@5;qSE2@T)+T=Vv&+s<0%KyjLtJbdu{!SyRv^4|4>D^I?3`{2w> ze#$@j7=M`C%vsRkK--1H`rLlrDhUkY$NH1815WHKjJdOuMJ>+(hw|{7m%rVzssw~C z-#&0ON+i0uyx&6ip?tP?~=BK3kgGu+3MJ4VCBHP{a+!-eeN4xbDG4&7>QPVP6tU3C;Ogw!iCI{W=S}@2R&TPn z$BVWSx;nEWG`OrT-&;AZ(L~2 zg)wWih;mtlNRv*ihdYr76s2u7BJZs40GBU1z670Z6p2WEGj;D6&bszEdBGBsQoxV2 zh4mQa@{%loLDK;O64r!|({(pDy6FoqFCJ1ZehSe{C^uq=o+eO`o=A|RC=^-BQ2DZ9 zIN}})m|G=FPB}Ud%02m*7|dTo!WJH=>8G_*=+@#<30kUDR=2DNM@!#}9LaW+vM}u| z9iNS2D(Zq1V=u3`+)amuhKW*mn&;F&W<)7Wo@}Fu%n?LD) zZ?~e8x9m(Ff6LBWc8+btmo-(I=i)ZehHogv+fXdOq0+p`ZX$0lVclsUGrv>PK#Gpp3iuM#B0Y9!DtX?#&aGWl(~z9c#I z|6%neoVK*j)65gX#rE(I-WYPPVn!h!Y97o6IU3Y?NJ9`P*1&GS(a$cGxue6N#u%+= z&lYSkye=PgMwqirz$g6kL?+^luz=9~jTV52Mm`rkF~Vdp!I1)3utfyD1nC2pzmNF@ zr5Fw+f)q8}o|BY4->^+;!=|eZ;ZY5{9ye?m+^|n^!_IRJ`#U$JoiuF&-K_U?!#2Gc!y)t()FKL-W`j`uw=pV`4ZQ^q>`C;bAL`&ImHR+k)k1+WB zCcYUTS~`SeMsn|Qaso!tj737U6L=?F685oMgfz$~yjgX;U8yY)3RJe&xB!yhQj7z*7F%Y;YIw zb8?AK$eGD4rUhwQ$>;ktMN|0GxfUsiXnCZeh};W~U6iIp_19X=2!|5_ z^09_ozJ}Dbwwxc4F;LXh9w8#diX^onh(^0n-|lWnMX6}xBc^T>rjbzH4w=e?QCje6 zFr;a5SEMw1!Td>hadH(@P;YfG61}5ur|&Nr7_UHwNs+`J0=Z1cB$y<}9{rr41t-Y2 zk$PI_3If|C$P_!dr-#CAMsB{s$yh+qpoBl zVTi!Ys-q=usPvSytg52Qzt;18Or5*}Pm0SGP1%zBN+_=UX?{|Q?Wh|mMf#Ze)UAqN zCx*0p)v!Rj^j20x_b~lSL#bmQ<6d$6lA}qdb_Y-#A~29i(wYK+!+$bvyY) ztH9e*DocTJPS%e0QkxAh+LY|5uHQpvBr4j>j)AN~NB@R>GT>wJgO3rF(#zfE;Lte> zoW8I<9WQ|-mVP^E+&mkha4awrqL?Y3iqj~fNfYEL#m`XdOX^d5beZ8~n6g;7gW@!U zr?(;8=s@W+Z_4O6Ln%(m_?VCagp||l5!3{Bh8QS@OSaJ-peh8tU1mkTHN7IF#r5MO zCkEkcG;5L6ifq=p#Gbs2S zcbPESCGMoIVpz9qBnHxzi?G`(>&*dkI??&;Z$x}Dz=%wXHlcr?NdU7$7BR!sK|!U#`2|%D*3q}AE1=L8x%P*8XBE$cgp^QNm@#z9n~l{ zb^zoMxXN(4)Ec+jJ)DyTp~hO`;zMR6w-g4Uik0-J(O|El*JmKD$^7CKe(I~>k zrT4)0vaCax8Xi|me~x4?(|E(jNWLk3N)@JDmt3X|9RWXHDoC5uXEstp_{xJt2f14X zCVVH&cH$lGuibv5KghvIX9*V&>N}2ulcs30sgP zaSJNLPztX!`LrZLBi#9^%(v03DG{`YIQ4logz%BIj7I*zS)q3Xl*Krpl{lxtn%Xb~ zbmZzwl}vDEhJ8yr9a$w&_&44WUn~45<=eq5^VX~pl4SB5{7*qGsb{(itU|V@URFs_ zvzomr*>_3C(F)m`-Y}Ac$t0Ss_~)v@`^d_?EPAs#OT)Ou4mTTdK{^wtgb||->5J0` z#EdZhN>9`UKmgKrUANkf%`X`~7?rS5_S7Rd92SZNcLaM*S;>tze7QsiehboFL$T=R_0MqEVwAMz~OgK|l^#>6|3V`i=y1xW6x}yT9ds1`gvE=;3!Rha5JIE;n%oZZpKF4FO3B(es z-T0g|8IKDA*9U$a9GBlnKa2#F3 zT^t?S8B`&(lp})#+C#1o`6r665X5LWf6Yd0s29Qj|DuMs(`#U>ZPm!Ox!{0~MOf-> zt~<9G09L=%Q(aD*43ILkcWA2^KHhi)r&0YzP|Z~J7#dc63A|{$#?3}-*cN_Kp&!(6 zjhl_QXei}b)$6X2Khtc)MYGOgH5!Et=dYRSVME2KMFr)x;qx^cu_4VDq>Q^+u&D}v z?qQxkwW5|L^i+bhDG+w8u`5lVuhEDE=}>ctk~y_0%_lW5o=MBfc8zs@1O%NX;o0oQ ztg$c6Mr^2ozL0YVV*!^*(3AA88pgiTL%Nh=CTUl@=^EQ`{+f-bkEDdQK~@K?(`I+fPU-z)Mg{<94-$NfHT=>Spu42QoVv==xNXog(D@nJYVyk zC=J)Q*@%l~ZDYu0Htt&7@cEjJsN+(ThONzou^ZpNO?|*dO1p3~joafioWEuxE}C^L zS$x8LRDelhza-&1bLoquUjvckN4Xhhvv9~dvCqvs${PF9Y{Z6Qb)UF6Q?htCr&fJY zjnDik6N@WI%Nq@`7GKV`u)FD*-m0zeXc2nn^)@;__{@ zxHwfx!$}Xz_onU`B;-W(i2mtZGq~i*D>~vfoWEuxhKJOk{pT9%KRvj6`0UMh>Up+7 z?EfI6va?fIX^1$mrQ9GGc6WIXIij@LnnGZ=v=ovSl_}pcmI1c>?HX;p`i5{kUej-& z9q}4}!>7I%ckgH30lN_w<=nmW+OLD2rmxvLoM37GG+*hTf-`;XM_;pbSXzxw{iQGd z%s0HMZN-{@jc4h#JaNmFe(m4kr@$_S+x?najn{sbUi%aGVC>S-Q!hl;@bRm6Hf@C- zy?W!Am$$MXxv~4o?|`-t091hF$dqj%hQZFDYCw?3XF=&i)b# zXrpFL&ElD*JLO?E@Al-?JI@{*J$&`%vu8ZFvLi5WaIx{Y$kcknKJ2URSWqw;uuw|v zqJYX06+3dypleE7q4S=7JAc+f6sEKnOo=ANa1^AtR3xFYWStQ9x~8#^fKr7x9mE=_{?DU-Hs#Io|Q+ugZxba+E}aO17dKlk*O z4N(3Ht#$|;PJ#{1KYIG9xq+OFE@F+%(aJCKh>RWu?C6p8qs&FRnVgR<)ZhjH9#LKC)A{EgjHEoRyK^i*|c1vs}6Pwj&Ic$Yz*LDN7E0sgqH&K-nuwzyESPP!~6g}lnveF8|>=x*>~PO zm|i`)`gTg_XLnG(6^oo#1Y<|&!sUTZ0hbGikK9c*kM_EwwEEVQBe}kpPjc<{^{3~D zN0I^Wx^;bPR%s9v68b+{M^xvB*k7PY$R`6t3&IG{VxR+CN88zX_+67n9=qJ$zwh5a zdFL>f;5{M>^J(}SCL5073t{c%U& z@uPz~H(p`M%nolH$RB&botv!#n9Qxu`7sYh_ z&F2kUW{!N?dht$7+WNP9)Xl+*=L+ZKQMh&^9KGQ_o~MTIZIT7V4lV^O4*98f8i7TP zkK%lUB7$rbp69GZvC7}9VWG{o^ZKFI|6Ho-lzAdYc>BfchfhTUbSeZqeCo{prok!e z(9QI_JzxrLE!9SNej>xv4YgOLrc7CBHA7nlT$}UtzZyMtaQ&PwLZd7CmKO)0sKI+j zsS-R}0UdJyqXn(y%onXkJNqr_5FWO5&KDsZfJd5Cy7G1#?M*imHu5-4-3FJ$l7XC^ znxYc}mO0v6&eVE&PyUl2SR>WYrJY&N%eMHt%s!Yu$Tt-|%$n>6A{0c}+@fvF2V4M@ z(lgImhFb2)ot^Wd?$^~46Nn6*+TZgROT`9HGk*1IwNL znTH2dK(9Ub(ozMq*vO4g?J`mpz)}0-g%oMY;G`7ugv&Ui=$NYULG70>e5H|hcHVn% z_sqxM^Vk#m%-lV=^ZeFV)s0STb0jNrB_(+xWSr7Igrd^)MHe|3owMJ3a>)B$_>rsE z?%aB%Z?qjz;ZdKlHF8mlYKb(ln`Rb7Tv!{9`RR8(J?Q#7kFFlveD?6>!IfLl!kgT9 z`eA>F-M)46?io{5QhOo6W7c5Okmco=*sU~cP&p*12(NNrDkL^BQoJDaiG&j56_>sskp7iKIB7h-gw)PJ3E)}-MDe}&gx!2ym9;L zwWGSEaxwd1-co|$Z!n1u<<$1A9wx2&)vRr zaJ%1hx~FKK16=lt?W956jZ}A#lsp8J86duf)2r!zg@Mm}_tkqxx0H&vPP0zpIyVjw zrNUGK8IBYJ8YIa`SYkbnqRUfOZuNcZ!PehV+)>fQ+pphx>gx5&2S-%j5AO3gN-iC( zMQRZ-zjSCM4B)^ra59j+VGrw{0@->KXG!lLbiIjBf9GTOjyTs#%d~Y5haV0a$PbWK zV$gHTk+29mOW)IJ2a%kiJl>w0FFrl;_HQp{aqHKzd1HNudtoyMEkwO}L>C$bi)uIo z2SJ1F@4FiE)b}mJvdh;GUf8ybg9(iRy53GHShpi zuiiaczI|r>nZqM`fd{|+^3hB88~QAxW~*(?ZuBT5MTQ=Yvw&1v6Ol@E7HGk)zU%(+ z9Lrnx?p!-qexL6WQ?HX5+g^-V2KqVC4Z5;St#-Y9Gf+|zWyyq7O%0K+EZv#G*86ky z3{4LpU?yp5GU0@}UH)kcx=(4F{CHoAvKMaUI<$DDk=NgTB3OGw^Pj_qZ#{c>jn&)s zuD%Sxmk7C#)*?orVz`f7th|B4M6YIaX>+aQyO)c2df4@z$-f^T+&%J{ZC?eCr}G1j z0CqrfqmCjC2?%E`l4tv^_Ke8ji8Wl0w0^62uSWhH_w?b`eBK9N+|aAMw`6v5nlc4Cj7aRRa#Da8}MbsZ9aH)k!0LmG->ZR;eD zDMwRzKXtU1b9OxBdcID4U)1`yeN|H8D3B?}=&*pq<<{?na^{urW084VYe3D}(WE|Z zy|8@U@~;?}hi_eT8*P6nJ>gw{0A+O2Bm<}o+k;*&V!1dmeS+lc*}HGJot@G37p}gv z@@SSu@!jve{Ls7K`}VUh6|c=<4S!p4DINR-WkEy{{KE#*)owf>$FMdWr^njadGyxJ z)iGXzM@mJ*`jtLWCx92kA4s(D1nC)jo2YnD&w(*UY2_L!K!r(O_QI)wZXe#gb>;5i z?OV%#_nyaZy-*^|N3Op3=)D_H9o&iMa@O#c9C{=oXhcMOHk??zeAZBqYw;ke+sM}A z^-G;MYMHCFXb_bDBfr>szvkzZKQ4dSZ74mF|Gd1~=8O2&Pu;qE!1+0|9_7&$UC3vU zAlPS3?dNnai=ox#+M7&d#}Mcvkz#@?VpMN)tY&?d6Y z*PR^gtc`4{!StnKRvv(d41(9U^kslx3)10lv{~kVh<9K%0p=G1&S$ZhDJ* zhu5EOa%VrCa&DFpVB`0Z*hvPHykbo&t`7a!g!I?TJ;5C zEPLrtYs-Z!EAp_BkH_`X!Gt)h{(!{S zr+I~R?ooFZ!-g+-iOrFJ76FkD>yV!v4$wl@xdhwKQ)o=pFWL&zsHeqtv~pdHNw3A% zJiZ+sDxufocW%8;d#J=-XOC>|aY9%4{V)%1Q+9682hYFl=;)=VF1+cTk3MwbFRrft;+>br7dn*ICvV=# zZ`;SeHA?<=^4KF6y2rm=eKvo)`s~AxKe_%ue!KcWe!Kd>NZ@s1CYFbB8HAo!@0d#h z$vvfWCOr@5i9P0U5X6(A)CfnP%C(nq-*B&X!rveruRmDiS`f`0k9bOMm2}OSODl<0 zxYc$8wPSL75&tNH{b?#c>_~FA32co9U?aLG_*h&1gN_+~P)Jtz>P|pd?hd5Lk-m;T z4nC%PPKSC+GDD71`kbh+N3d>gYhqK#X4)_d{Cm4G{Uthd5H3j?MOaYkE2@0+Il;Z5 zFZH7k-+T*lDL&`u*6j<+S-*Fuh+!Rt$R10 zmNd9<`P$W+_pRLc>b+xe^b;kcQL5KN`WC7+yj>|7^FZ}bAGO|uu8=-I>mYi$W@VsP zTdg-P2JGz=q+h~X1VT{{)5M`OI5Rb(wS#t&`E9$^rj$a6?pTJNkiiO>-?Stp_%dPn ze2kZ8k==^S1iLbzUFLRTL8IA5p@TYFM)T>uHpuqGL!7h zhZNGpwLP22{Sc9ur2G0ZL!B-wUA72OaHKVlWehe*sYdIYm<`=3#HJu7!5P&qs-7^d z)(+iiziI>FSHVkb=j?HN>hSIhcMjDhEx}8>>8Brh?5TUtZ2PLHtjK7oC62fZmnP~|Y=}-h zUF*l(JM`-e-p0e*jJN)#l9!#mcyvb=?U8#gZu=f9nYLpb`?Sg~Vu%hviZ50?VjP2L zbe1_fJKBjHZ24DGNSB|}1L{6}Tya^YU!4rVs7P9wK(+_V(~5N`(QL$pi}vO57o8aG z)ay*H-aT-cT;H1MD2qfYQFk2|xm(HR<;#rX+G%1%L~B5?;24#Xy!Gh;Pew@Pt>$-c z%x+%WQs>Th$=GYLNR~-z*&!~;v3N^_u&D17FC~?E@}-Uk6Y=GmS#Q4ay}Q$c>#6!F zdvDo!TpD7RO50SFf=rNM)C|M-67Na^p90V(%W(JT)Mz_9zu`A+zGsu5zkJ~Gy?S(_ zH`2;9=Cx$P>0BjUjZ+AbAe};fExIdOJN2o)xinU<_2S*5Eo1KNylwN9az%;)M+Z+l z`S7C$N7oPUkDl|DL?u+r`7U&?5<;`f!^l_Z?B3QHfz6w)GdR9-%a|v2qYpF<0Y+W^ zDD67VVS*oUYGYovU2RT* z={h;s`n36LNtJD`U)lL&B%LSmgZ>k4xis2HgL2xuv>&6n*>x|ixA%IW6VLzdTX#NZ zdboA7U(z?UWHyFkzj#wFGtHU=5gZqO^WfN<@{sF+c6Q$SHh=3Q6i)?l3gmOb#3y}tx=Ih24<{l5od0s zl}T|?%p~8lnb7dgMEjy=oZh<^-t?BYUb}nr=Fcnt*m=)ne*E_@UVA2g?;p$EP+m}W zc=pUQTSEUF7OG70(kjwvhsC%lwGMS(mAD0?U`{o7Td&TU!EznlxxpJbz8JUUq4OPX zh;E4>q2qo^rVWrg& zZH*KamH8shrHIRbxuYUZ7l_94kyps+v!iY{+!|SZYj*eA)!PS`kt4S|UjivzLVXqY z*QG?9D_|?ohk*CDA?h~`B_cKeZww~%ntC(GglQQ&OH0(kGl;u z%h$u4TBV0>UR%DzLpN7f!g&S&7Kr_lM56xd{Hb#bUo@)e2?o=bk9gYp9$Rm$a|U0n z%I@Y3&itn7sw`n5C%(+0Tt9ru9rLO$!^tHM&(-O~)BD) zGxpARK6%cZxt^LeRLBsg-eBzpZzxLVomN6(B6}$YIy>wSKS%bDTSdA?@vTpAF^xAH zjD7AL1|om|9A@Rngr>6(wunS)Jo|{|3TGAcCC9W;u!evs>{efadzbK8!Ot{TMk;VmOJZyuo(rAYSOLF@!1 zFof$m4BPC7Q)8AvSJ=@|e0E>{cmM9+op_r)eYqR;{b=@{Mt=I#8;%p614z96?j7fC zba%9^T9H+wU(Ai7uiI9xaNEjqXad4oAQ{oCOWOJDs%;;;yzwg&92!wP&g{;+ck<-t z@v(Gnko9sqX^`r)4&*0GFK=Z52{ZK_S?V);&WvnET<$j|(aTRuYKIm}@6% z{cnLYed#%1PpRLL=65O>gA z{bl^#vo}MTrM6=CEFF&B32Yn8o#*BkDkIIc6zz~$UfZ_KPz6P|0`-=0J?W{ndF=Uv zJ0%Nw&Sa588(^vt0UKdCTw=#K+JqbTwNs=>!om*M$>YtJo*WXAef`JNUz|!ujNU*>yBscysrjHQMG3A)jJ7=(FzK=aXn0V@AcPl2w(XX`r0;0 zy->EEP$$%C(p5+^T18m62IrudvOZ$l$6RmI^}jV~Pu#l+7;|t1srbyMDYK?$i>6F6 zlp}T6q+MA;HDcm=U2(GR2xM<0Qw^x02&{dX=GGKE%n~=9Q-op1b<|nJF#{ zC~K>Z&NGr2l&U7ZCJ~WFQZqu{y4C8IeqsSV$d+N3Gkt$ZsE9afgPh1Ysou#AM)h8I zFAd8m%}4JLs^Dbar`fiIzPi47b??2I`PHr#|u1-%HQO{LRqk$9zi3=P3i#oS{ zUC8#wlYVNn^EXr4f3=8$Nrl4@VOe-t5CXrGY|8Utho2gl2!p$okul%`hHA3$O z9dJmxx-VQJcg|+e56~D;OArNMFool{Iy>O2Z6ra9wM5p(UL2)AXuXjk3Nh?6TR51h1}L z-$KM*-EY!j#;y5-z1@uW4(H| z;#!_ljtLMTeHsBR5)YFLW+||@ux&W}T5@d?wTCxWa?O)F&(fZ9QdN!Uj2 zH4qH0s12w=lg2uOA@q^OTkMb0njo3e^qxaVAw}3qSGeAAH0ONatF8<{u( zr%p}w+I=BSd3m5JLAa(buRtjtiFV^Ctouprb4HU|v%-NSXaZE4S*cD0 zPX-c2vc=2KQ9}#~QUfoeZIA0)2^<=5sRp@k^QPTA)6d%tr3I=^oiN%K+JftS5z<*t zxFLIkQybq4ECCEKrF9iX)jm)(sCXX(*}(@A(anh#`2EYuy#RTb@fY;=>S`kc(dJ`GxCKIe zQM&<8)Z*l5tRon4xY5{Q2}=LVuGAK-Zu76h}}`rhZsI zr8|kf*Xav3L05=v@YDZo4?Di%ip#x+$(>RUzfja zU0~RKCciF!+j0u?H~Dq>+t!6=%HQPI{PxVZpE4AYMR>QWYO%YgucJ%pC>NI+%h+B- zm4T_2qQ~$8tPmH#BA>aA)}yVA`8L~7{;ug2blRxFLS8%PSpmohDZpVa(N_}H%VrrM za8d0Xbhy4}o^?IiYxAt{x_amCInSyeDbpmh3fD9{KVXM6t<_5xoKzn3(pgt!J=$yY ztU*eg^Q^KdX_(7SO%e;X^)(*i+N8S`s|#)lHFsuS*Q32Q&$^^Ro%6Iqy;s|5YX<9^ zfak+G=he z@Ut!})#p5|Cf%A_7Nj-g4LuS!w=N2SCMJc1S3f^{%8ti-u+RJaH7Su-=M5M4j2D5! z#E{X+aV@4PH{AI=tpvCT02utY)qy*A*z)v(nDc(>tnc&JZ#~=e>Br;`2v4PPTslmm z9P@Lv6Xf*jP^`}+Ut#_9=MDRSpZ@M)Yx3We>2DIlF)a>4Q57Wc*vkR^5LL$L_zeV z+_>~x2mH(@A9;9r)6TEodSQC-)V*hkjvbr@;Fj+SrVY%cg_TA@LB53%=<)LuF)6}v z1E-yJX5!3X%iUO<522)#lc>HxoMulS%0#2_KXY*B;3kf1`8oZHzDL|5^UnF>21Y*s z-AZRkZn&QGQ@;3`y7Q`oAAj@R3(N0bzI^_}<)4>nBAo1_`=PXD7Sd#1qB6a*x%5(f zsX}@jSX79!OA6%)Z#M6`ZB#FL=HH)~fz#et`O3K#qKLz)0H6}=S;5H%@=6$_uZ)Y? zzxHsBU*yD)J39|uo?UqI;Kid;FD+0kra#aSAbZuYSH)`R2|4mKfYBw=9q`;W*@LH{ zv8Xd|>OW^o^5>1dw6n_v-}dWkg4BTZyL|PT0%1P5ad7iKs@R7WUumSm!iqRGZxsQg zJuK*;?6RvFH5a95lOnipxbjkkFt+`b!uB4ki3Ou<^SF;f7t@V^aATKLiBQN&%I9kb z1ePQqORUlo!67pH1$|o|d06gDvmYthMt$MY4I|mHW*x4Wl_|t+NS0^Idj;g*j<+v^ zM(r{PU4YzB*umU17EXmaQWvYuzI{y3Sho7+YsP?~DVc21;4jHMbX{3p37P>nh#@X_ zx4UGZz35=rfll3!E4PoiTmtl_tx2%gYX~+4-VP3e5Jy5;)EYo>Y4X89s)4*uz?1q< zPBj{Ju2tA%^u_t2|48U|)Gl~KaDe8iK}^#7bE%vOTX zrhst{C6MWi23#0RGU#J>egOEc_OhUZF0Bl=5OjHxG(iz#I7r0mX{?MiC#2#g@^+`^ z)xpoSW_r(JkCyW~6r{s*+i!Zqmge+GE%d)qn%bxM)Ss>|xXrwt8gqGGU(vIOFm53u z7G5AnT+oOx=mn>cE-f4cxwSLT{qU`;Prr-txIZIZHehc!NW)Kgi;`DV{xhcZh+f~a z6CK`MYi)2gk9~5;W5k{~T0AUvzHjQ5)ab{a$(B5O3d-E6RLLS><;zP+49v7&K@8H* z6_0Zy;TbN<=~Hm~==7jv@|N7_^4r~=pELf?vfis77}-Y4?&HfO=jLULV%d||u3x@( z=WsheTFnj$T}ERp$Xwc-QM;HG!eR5CM%Ei4obyKYwWoL6QsraIqLuj~!w|p3##J^p zU$S0G_RQ!Q+tn?Zgv#0ZIx*t$nw|dAtm}Iod3ejWE-AjLj3}wfCB<^+4b6R)!;}Bf zR6Pjo_By+{dC!wWp7`3|^19c5@_K1@p8UW&zV!z`y0er2_5AIXE02xearw!|o|s*^ z^0pO6^UD>cp23BS~lG7idHQpWaN2!gADie1;~S9S)adp{{gx(m;Bb@=eG+axL9`Ao~EY z7B$cM&DSz2ZO^oDo|kN3EUk2@A~}vRit<2IWYhsEZ{%TJiqqUp>KH;sz`++pxRs{p z$ilClb@$o#85IHrsn;;cUPuLkEaL3T)axkRMV#DE3YUB`{=VcWNNsX{#o8)+`CC~f zXo2q7(Jnu`|J`#9+mtqJ$-Nx)J3fehgVrYX>xN0odgNVYHvnb%7u?eU`f{l7aEfxS z7~;~+5PY(lI<&j4E@D679B5oK>n<-5YURCeSdc{q%>mlPTje+NGnVBBrT~Nm2fS1= zaU5GCi*Kp&%o#Z_Zp#UsYqJ|7b^Zq$kEc%3e2)X%)A_F znb(?~HU7H|+pAX1>p%L4N)*Ev6~LrW0nu$md45=Z;fw5b`PuuH4`|@p>iI8t2y|vVtD}H;Y||3qcGCB4 zk({lX)%t?J)vzsW&AjgY+#f-ZSE@>d2c3@{NCRw%!l{TzrDO&mM`E;czy8V(H|>O4 zV_iOPzbTo&X1{*uC8NR#C~c$+B@REe1q5l{1A%!v}=&X1}XSfjruv4 z7K%>lRZu)~2}yx@zoEusXsgPALjpxOT}G`rTVMJqP5Yn^U5$!Av??MX!BbK17%nON zkPpeHq}6Eo+5OUTVKl zv3TqxkaV2pHmq2!y+6`2>I{0t0hqC}yhEX!?VB4^xUT{|BKT(1nw|AMf6=IOx(om( zV@-}(!dUG-_$$YE)Jq8U?d(J0dm>{z$T(pUWUeqOhHc{=eDQ$-nN#k!Y1;%I`+VfeJ@CJN)dE`^ zIz!~eFOAg}azHT=116l(cVI(%t~^^``ge>9*U*(K8x^tIUQx<$C`erodIWumpu`T; zoUQp+8~6mYXAAaXHeduq7CGiIhpN9Z72Ox2=_9=s)Qg__vwhrEU-G{fg^GRa;60 zM8kt*&Ar|CE)+TkyfxuAbfI5_up{6eHVYd`Aw?{e)vEE}zv|x_ zRpv@wk#R(lIQkyCL2Olvi%qZxy%3`_|igB z7gY;U>d+j)eZBGpSMs* zgH?9$S*z>;4h9sgYfK1F%gtR`tV_+a&c4#9q<2FKC`m1lAYMlL69g~34@0IaXXdr$ zj{TAAMg@{=N$Ac=3E2bA?sz7lfppv#h0lhFGe)i0S-T&3&q4-+?qAfJsK1MhiVT%> zZCiZ|{F=WssI{-Z=hqljicN}v+FE3a6!^(JT?=7EdRJCK=L2gBe z@JT_^Lj}&(r4dvFRIF3$zkbT3^)a-tg^qppB)jaFpzq`;l1(_tcefWc`TM%M% zQAZI?V$j**8{r?R8%YdRQ>Q=(%kHyTWA&|4;hW+1auFt~wzc#6 zCBJpiK>?uT<;2cSDW5QQK*-UiS%(oSaL z86b=$eS&)u556KtwEJU!enEdx;)&ufqzUU%QiRC_)4kbe3ffLVav2q?wfiqV&8Xxr zhOU9xG>!iD9b0a)LV)T+&t-1&X0B}pw7Vf6!Mac#a|!^5@ScZJtwe;b^@#q-|F!6H)v>F%Ku$wyMxqTfLg1~x zuhIux-7Yswg{S%D-@Je-fXud4d&AJwF_eOb^h5LY4hG*+*efr(n#JN)n!^OR~iZlL7kl^r>D~&Hmo+LLpZYp@j~X zlej<|5VxV7B{HV_?+aR&iY2VTW&D$0)sUE8We2|XCyeUm5(K)rbG9b7*N9Rtr9I^- z9-T8Bn^m(1e)oY<`EE+Idgal`Q8^8i$GiggO}+I5fi8BS!e;HhY-efiGbN3>Q!oCizDS+z1<;|7kc-dfO(Qt(>EfK`-=bdA-XeM3Vn z@~XVcANqe5UBprCgV_OCba@wrbIu?xqI>}*c$y63_}VqA_5QD2fJ2S>D274BjwOWc zR74UUNfGf0TACA9o`T^v`h7pLaGGXz`UsLWcY%IZc9ukxfGyo&f&d!|T{0w+ zWsYsI)wyuAe3O9yt%e>pYEAC#^Z&I`)eDonP}JrXYxf09!7&UCM@va~sE~-NcGiFV z8AhF|n5Xd^qAp9QdXCXcMvfwuSP4$9)Q+oc*7rh1OI+%{B9R?+BjOYCglWzRgaP~l zV4m*nRrC6tU)&IDU1MMOe(2psO_ohsO!JSdmT+4yJiCF|t{6WmMX}m7d*F+HyHS}Y zXrF-Zj1}0A$jg_IBU0xiB2Zo3`AW}<@GP6;HFGUhr2w$*9nW zZg0V+8vt{iPe{gHs91VfQ(T=FFQYl8boUR?7wzvO{>YTFPv%uVU-r>?kmX@v#~qRj zwbAjvoEVjxiYyo@E)P6Nu6QXc#2}{q^k`6f8~&^>T9`?=ydm!@NiCjc5oQn}khMYm z(6Viq40M&v`o~6PVRKt)vcnSUH6jDe-IXS`%S7KY^hT|@w|@AmjEY8O8>C2NwfbqF zDtwK@jfSY=M@J>kTCrOH;KN3pho)`skIQOt3S?l!u`+NnBs4D4tG>#E|JrZMsG2E9 zXG!tFY8A|rv&HAoxR_#u7{I6%d6(TkVqS*?CgzIpq%YOvXH1N|2&^vlE-;|XX)pdj z&CUHg-G+_&l-KNmy)XGmqsnCjnWCqcXNAsm7ibP7_pFHwGPF{ZXRX--fBvRX8#SA$ z*sptE{~Wb&77$hhnz*QAsLF{1$PUQsr6%3NNAs*TUdH0*EvSyC9{XzIEj7>jvCqt? zNX{~Pyh^^yKz<;-QF*fD{HJ=Jvyh&(=8paP7xXu4({|wk!7N)Xebhv8wAtOQBlR6| z{AuRim%Os*Bq>q%)Y|3(2E0CxnKYIn;Z9HtH2L@=m!>%h+IIs z)D;{1C(wY+agnRh5=Nj!+|LbD;}2Z(tST+Y0co3?iiuh&I}<{N_UsA%drQfknw|Ch zry13>O5ed#OKH0c()~!fz&4hV3Q)1+Uu(|Rx4E|(soYlWtS_(;Ij@5W)T@2&E)w+_mHD9r!DCU5=MyG6R)uJT?#{^#k=>7{8Px^o zbO08Oqx0qB5g2(i(n#9zdL7C&2KqNXZB$uZbDQdRc# z%|_*=>3ZPw+Xd>6bSzLBhfyFl-d%mA=EQX?}wDpo->7%r@A5J(XQJ-G^ zd}_<6Ih)a6D*h`7nAH*|YevZ*RHMRSGHQ+0{@zbBDyc2CJlchLzWmXqGGP^??tSdn8s)mcuko~YQPNZD1`hIZPRpUt$EhHcYM+U z^khiHl~t8zb7*uMe zdRE+pdAMJQ>ftOE-Jf)dhVe&vu|F`V*IC`?eydSQi%#vQs3Tad-5)(!r9dF6m-33k|m3( z4bNk~uiu|oyl%C2U+yjRAp^@)ibeQNyu}DQ05H%>RNzn^H8hW^JND_XT)0Df0c=aO zBnNLA%`54+nP!yqne2(kF4siIyMOz?ZQ9bZ<`jJRTa2nhnf#mdcydI@V1en{L3DUo zeB6s^tw;31Ut?4-tR6zI?2vmaZH@v?6WFs*kYr2cp{mH}&;ICwnzZV<($i3#$I7dC zk5fCL{V)&r0Esa-Ohs*DZ}9C4I3baqUhY>6036$#|*bj zXGHp|?$}@4Z>Zm0br<{(Z!xOtCrScKIYxj#?t@GLl&(cYl_dY>S!-_Y@9G*=rWn$V zU{ShgwHaBIP&_RK<*EFh{A+Dw^aXAhs3c5iS^-4{UwGxVl{a^F&iWozbKuGoySM*0 zjVcwIgf6bFXk%X%4xPJ|@+>njvJpxhrsj_Q*l%6nDaz@IV>|YeQ3IqSSRtQ95R}81 zxvkui=_+P(nRHiWZ5;c1KW)L2 zpdHF#W%ZMLgHkN2nFBXg2Z1~Klvb<4X6^pZZ#OC;jb`PdtYAnYvg!`h?hlYmpE)9? zQ6{OeuY14ovllcm0G%0ZvW8~B8?&!4)+s`z(7!@|R(SBcUwwChYz~Lz08o0gS{T&M zR^Zj(tBO(Z&_y@2#u9$uxu$}uH9PBLzsRV7Sn@<10H{~JEydgf6@|#c5HtaSW3gEk zsD#h{ETaN>!3=7Nq)nFN&bkyDa;HZ?NGFC#K~~p9^1p3C6<5(PRV|q-mayotCQTBn z18v!xD)-w16|1%P>)u~Rl?sq@E?EcpMio9vE>OT!Zh`++^@55Sc>0$%Rq(A^t-eu7 zSU{0Pk=7l137DwlG9s6ug9G-)G&4}Mv%d7BCQOH=guO(2uSecMKlxuKBz0L z)+72G?>4IF4VKWAk}R1dp72ce5ln4DGIuI@98a_6F8H(W&8WCP(nEY$JFCSN7*lLc z3s|XmO$>P%4-hM1r&a*a;=*xLW&1x)o#%>Jy~6`Arx7un2gckDPt9^L(P8u%D-+@fR41G6l?NbJhr*u zy%BqjW{glNs(@8H>wo;GMg{G`C~{Q`4x+&t`~bOL?AU303IRJvbX>EuUiWoI1t6J8 zlDZ1)S4<5TVKOisAt%5to%oDev9tEx@#zaCV#?j_0!R|`3YrJ~$vuG9c1=tt8e3LY zPIv#*KhLPLHo^XoetSm=SPlnb-ZXTydYf8SPkz_Hu7k)Q-RH2aP)F4ExZZflQg#R802OC1V&< zOoiR4WifvEtBp!iJ~ID(l^mzQ?=&_6DAQCLe6vkArPd?5{ux^3L1U`Ca57a3OJuZf zqM0ySZLWg>PO?2v;}!p_KV(#8?TFz+RPwcX-gHO=%Zfd&bbOmuIR!N~>#uy&s0#Y? zDC0XzE>8tss(g@ClHDDmR5N~C-6`08|C<($P$U|8#hqly08|N#fK_5PVlIs-bd-p* z#wWb`twxm>#|)EmOqEyTE&KwF$mF#4V-j_Ys64T{EiU9j6(6xT=}LOmNjgy27b+%2 zp@ar+b?)u`zp$ZpUX>mATjtd^r^l`%1#*;|+eJ%zvu|D}-Pw$efPA;rs-cP0rR#{fy^@Ak^04LjFyzG#*h6g5uv?%cxRsc=Ehpr=Z0jNR~6L|KuOhnLE+z zudyzB|H8-sDpZlRj!v-uhJL_Xi9De0Yze0~0q-yvD(R~W$35-lhNSUv4XZ^~L zEV3oR-6O{*k;7Ya*CZj$Nm56aEmEJX8+G?bZZ8Jue#ax0)lE$Y48dWw5uCW;n1yYZ z22VAoVD}IHL`F?HTko0Z+Q{s?3!vV8RQ}>SEw! zMB-#fXm-wdQ{*se&Dr|)pHyOMk;v5;70KGD1MwV*cz`vVm1W@)RV%ao7yrPhFfK@! zFeFaDI)^H9+)c+Jjp5+yi{f3)v;Mio!o5Q1(!rmq=J7IOSkeLsdkM8@U-D$Ba@0KL z-uwDHMx82kOA*pkbQdW6n^IXgLc}AW%^tvBWe$G#C;rL;1&ks>7;NKcIG6FqfTd$D zjWCvZELq)}8Ti_7HfoQ(vq3d~;%kR!;^szf7J`V4N!s?a2Wn32hdyXjHHVqNcvjk+ z%>h4c(EtHiSEDN9=WNyZE?@q$7F1TpI@PD}60z$P4cu4CGHQ}>-9UD7$JWfi@BdMw zPJyel2SVMlvG8LN7lkwfYU_O%t%9tsnSpowl7$?jObDw@-i6HyofRK4z6;EHx`rvO zde(}#VDFQEfl)Pq#40pabaNmRlOYMZemaxcSN0pFCSNlHe|@@eos296XC=L|WwtmN zZChdv@xV0L2*Y?86*I8=^4~J5gt#I;G+i|R+KvL1V4y{6vYJ`|0vDyLnmhI@e%z>B zE9c!|O3bb7U%9V(hEANW)FO|6FZo8TDh_~SB^rObRz{Td&>`Lr>BUJ{#8{c z_M3misG7+uIYc7WDRA%^>U8s3R~^Q=~QP(URdlyW0A!m^bSLt zodxlOS_4vo&MZ|1Y*(9q{e~ZC*m|_)hS~eBi$+bkpd?39(2J=3*!$W4+^8H^aAm0`RBjbM%P&P3 zgqq|d!CxFqd!QyucE~48_?PCU%(GET|2f%~i#>k*ysuJ*Cu`K2{rV4oXGWdO=&Q3- z$v_XHOBUTT3hxwtxC-C}My)xqANh4gok`|^x(HZh9a<1@}@ z>D1=l{xD0Z5wYefX@d|LawlEdlhz9j)1;E;DLMF>d+YbSH=|lEs4Uqh`&FZwAZ1ld z(1b8#RXK~wJTzFJcYreqBE+~OX3EWWv1-AsCpk(&UPx z-k;hu_IyvW*aWp>vud98_w|g5wBK?7gct6D2y)Tu7AO&?hT@gsD_(KU9{6j&+o%&M za##myk75{ zjfSpl)>v*2j*xh-J`l9pBsNQape9fFDIZzL;k2~xRXYZmVhLgP_i2x4Z;2*k(p4t2 zS~Yv%TmF?%+5c!82`-H)J04FHQBc{86a#EoS_)NJ?JHM|y5EDA5nib6n^!jsL>-uM zdMr_rk%mfiT$9cDp=(A3!h@T4uOzb%GqUVM%k5%d!K>!`mAT^G|K=wagh@w;Pz*N3 z(s&tWz|E3!6sV?*Z|S&J6Upy>?w1?Y4XEfu&ctoSsYu<>&gIN;USYiX%yp}^`||r1 z#D^GtPM|=WC6pVK&52t?|5ADn20VR|s%+MOH8QGnK+8p?`f3j(Fy0SrT{cUgp&67S zXWg^zedzyKn7RNZum;uo1+jF!cXRLWw}4gAjS53JDh&-) zW4@0iRLP9$H9sq9Xck#)CHR~L zGSixoSH@d=ANo5+^-vHv=%C>n!jhX;r8&$S=uc$`4nf_{+WkL&^+KT-aa*?u9LRV? zen;KJ_%b}SwP0aN6jzhc`|x)fRRq)y@RNOt&2kr5Glr2ns5@a_w>i&RW^H&0o$WJqf6*w1~`s8gi}Zg7;ucyA1g%##yqwRGN;FYjb$ z)r@-Y&n%$bM@}aoh9;(F0G>vAI6%OC`(HU#_9Zh=k<0kv*Bdq1>Ue_0gl)dI7qe`$!#Te(`_ z_!o?d5R`@mTA!K$o_ACaEg5#B6QJGTtYph8V#81RjSHJyRm2|X(nEH`(B&B_JeUUA zUf4IO!>^%0dZQTWk+AoE%=>h5>{K#~-y$L5t5 zUG6P=fLS2{2=oH8BjH&%CN(GaD?e*7)CW+Rlk7(EGUB_qx3r#SA9Nc-LMrvGn(FyC ze78{*HB!z2b$Yl|O9oY>cz%+p`|lSWl*unFWeqbLdsE=wl-f{LHft5q?Y*T#ll_O1m+;ebFr$gi-~ ze&rF#H6;z5a)F7Rlxk$n41D-^F5rY@?%)YwP|PchS@RmVOT|adxI>btw!Zbpf38s{ zN-+_9)si}ico~wYD6!Y5(i|;5vw5wt+Q0XEHPZ&H4*nHded?9Ix$qDe4`cO^*gB|Jau0nxge;>*)K4FE;+Ux$d1+y$? zBSFTWN}W4;8N4KmmquY+r!)KKh`qpe3B%QdTey` z?6Y710iQ;x7HGxQo#k0;eC>lzU3i>*@(oHP?nLgU+BEP7J0qH*fh${FRAXwM^`Rd% zs{Yh;Q$%2DW08cndtA>OZXrgu&@SI$RYG+3cwZ{z?f9Ec! z@U!+VeU?#as3Cp?hTz0T2Anb%PgAl)H4gK-R*z`!p?_plIboUGpg%opi&i611E~#V z@4+NW>%;0j@P@@m?gN+CrJAydHL|nZSxh&6fo}8isI|A@_&baW-IVqc-TmaVN)Emy z_<%@|B2kc4ORYSyU;F4n2a8L>UbEn-3RkSu1i zScAG#u=~UN%TWt9F}>%C6v%Lrc8I!pBaQY1$F=^z;Hj@66rVc6+)z-95`LZ3HD6QbrLIjfzH8 zsHi1sqNoX0%BsjC4~$YMd0ECX8WSr@C0M1HV1DPjkG{|D`wa`b=#JIW+kNl3r@zPf z&N=_{pi}QCyPqzc*jq$T;UtA?dU8_dV4MV^XmJ2RI6lJIqv_m51OqNtU##M*cw>|<@oSFPk z`kIMGGzrj&TZl5|cq1uoGBX2Kr@02+{c)Bz7LfF0#kNFdP2+-OKnaJXNGCpBG#Axt zL5J6yz6VvDLlYwWC3pg#CUSsSW5NkWF_1Bi$QFTD4e8Q%%PCL=lpn*3g(HWRB~?Ht zX)hqCnRNN#cc}UUI^LYaE3(0YXZocz0v$f7oI@C->b0OVuD|m|s1nhT;oK@>!y;Xz{(v-yrXd2cRm6s> z2GLq8>+l0@IK>MuR+j2}j%J1Kg1U*@ggW-50w5PP<-poGZTf(0&KEEVq(>xLG3Y$N zFHtn4Vv;aAP8_7B&E0?INl?Y>NP`_het`<;y@bpnLx%b;;~eR@Q72XYmd0t=Km3nS zrH6(1@y0~iVvPzei3%rqTf~$BN{{NEFmGqQ5=AEw9Ta#Io14HYlp#rB0^Ox#d4_a3 zL8Nu`*Xc*0N>?~);1f(Pl?1U{(Y3*2b7}MpBEUrn(VVTT`=Kh8EdcrP=rLQkTR0cR zuqR{_AxMua)pbUP*ZdpX(j^yL!C^C;D;SM>dybe02;fGIyDoJ1>u0YV)u_RWZ6B0i_sSLu2h^fMS z)}5`-DykrSQq+eSI`X;EG{;z8_|UT`1mue;KcSArdCSRdVjIb{MQV@Z)nE;vYT%Y9 z1PYY~>=4XoOt-GXC$EDlzf_7TPXg(oy%7zKs~fJzrKT*!g(sD+ts`H5`*lzys#wZ; zAOo@D==3K#As%RwVrXH(woB`d>#bjcDsYB^_9;in%mZ-bSi|(;CMgbsoM;-6E;{4- zca=5`?9z0}p|%GIJm(e%0zJ#AB9||q(6Sdslt)iPy7YbeRc*n=SOY+%#5JG~5Sqm) zLoNhOlW>+2V3858gU;T%?^#eKs)Zju2tL3WOE`|0+ZbKhX?h(}u?n}8-rnlJ_~}r^ zdqr70&~1qTrnWq`A@SM(1w_RbC$dD|Lse%D9J;nmhO}g^5=|$?$#BHuf504~?+$gD z=g-s8 z5P}`xRY!Mu+aExc)JQVxuv|E_>G&*FI^|R#I2@NA3a5(t(izv=u4r>^BVCYLRM!>T z5KWVk16cASq}OEe$dHBwuR2t3`ZK6fI4g^+Ci|GvkhoppnkF=$Q#kbK%$3u`x%+S1 z*T!g}qCR1d)GUTqI1>*EXe54|F;*Rka&mI(oQD7T0;mG&qNn4$kp2aNb4&K3#OxEQ zMEVLPiJ+>p3$FbPR4EuXE~LwZR*a?irTn5{SrKP!EZ~UfE zCG?wUV&c6-%fK5?U=46ro+@Zm^=BN!hS3?(vlqyQ0v{0{9NmyewWRq-^V22*MQ zr|c4dD4){WzQ2}H-o@oTy^ZN z*R2WF33A$r$jM4v#%7@kI3*A|t*6l5z$Brnv9kKl{I_-3>~Rmd=6Ce6euJNfn*K*10+8X?!-Ix9F7x0-)JDHN%gN@302A^A`Pj4 zOED4v60Eo^!wAKfK|8{9I)}QXvO#qG17BdafLn+img-TGcT6@X zHVmpUJ_SrqyAj3z?cMbzoiO6FU}FBZp=FH zx+FpksZCuUJh7aHl+`YPNaBD{7^luIILNr-Un6CcHIS7qpA!26dMF_%J{xSO$nxXK3X>{FlsO>YmX1E6z3J!!?|czdsp*Cb1LRb?e2N!t z0-=a>AvhjEKt7_JTOF-nO1S~)o(dv` zR*d6R()Yl*GkD2HfPRSDgQ||q`iE4TehNio9!XFVR!(&jW{ZeFa2Vp$2-2dIulNUa z_SP-mhAR2sBo_- z1p3dp9IEtiq#w0Z=VKSB`hXywi5 zE^G_B?qsNgsJR9{^654$?ukDl34rJk#+4jgKq#aOS&=klr4BAyB2;yB!asRER0$}} zkZVR;2+pk${JR3bq0Hr|rO8_gFGE#F629kLsNx%>Ocpi_vYPkES5!~TBXMUEU`am* zOzNOK{k*l1&+nirb;2FAqOE|4GGpHpcu~^De21dlza{J{mc8IDp^Ky!bmOIQ3w{jXoKZu396LR z0Ft>v5GmRl!XQ63jol1#Oes0p1sYWE{U4~3%}YmmaXGWM=sF+~z!F)Fhk*8p1ZjwT z)v;qg|8A%fJe!emgVs@xtMTL=ymrA&`|3(2=j7`ymUF?p@PN6p8`kDn3)}4`6R{mzY2% zQ)O7__y_**4ya0w1!^_{gxCdaV2Mz}ilex8j^tM2t8~}EXK!gstz(Q$^Z|ezv^RDE zx;7(#BZDfdW5mSkdUbC&r7iVM@vaa)r*s#Aje%ovaZ<1mEi_B=jmQC=tlR4ULX|4& z6v>7|sT?#W8N#Zx;zW^bUMwz>0idcgt~YOMQ&gH<8p4rCJY;1NOHQliX73A?KX$Vx%#kD$FkoJ=5udj9uRH^Ql#^*?I6Kf!k=Sf0} znJpsUNJiy9x@YXyzt_gIG?~R#gH1vBqyrfW7E{KLC)Nd&Pg{e(Z7)0Y(1Jne{VO)u##5yLtkVNS$Pa|1h)z8v6Vfx=)d(bs1n)35gRk<>b}{I43?+jsA5(-x4LZfF@}L{veQBm;bJ z6px@T1-Zz(+XrELbMyHuX%%kEEWfzv2~R4d5x2kT(fgEs`lGvz0tUxPMC?s^AxbLrd*QuZYz}95^Xss%xUoxW412Hme7A@V#ZwE1`-fmPkcZV=M$VEB$Pyb-j0Hu2_=dkR&_F`;QYS_bMDfZRBd5AdqvCA;%}sM2l(ER$$A zfKICS<9#F%nGr@IB4#B`P^sP;=~VemN+97LqPOI60%+;V1q90RPj`q z02)zW`^KTFx=-O|kR(|UZ-7>b{M(FE3zZ*WQekmAav=XXs1^!TgkZ-~`w$M9GQ#ay z15^?bgpdDe>e~H%tXHDdN!&)J5U>re*d;Wi#``!niOYoG91>a?R~=q2e<4&esPLq2 zk%7(LBHmS^5=QV5kqJO!1JcsvgwfGm?)m^!QCcKvkMLr23mm+dg#iB~GSJ#?gov6^ zU4PaMqL>mxNUkA8sKl>L$xiXX6J5_>%n)3TA6}%kj%|3ukD)5n=}3MciWYr<>f)#Z z1ZiQTdkO*u4JCTV$Iol=<4>&7%~46 z@=M4RyMXHF;&&lsnz{^B7pC~3s=}dT#l7c`pgKyO4bCl`!)Wk%rfgCg=n-c?<3}83 zLc+IRgys6v!Lv_b05Fak6vg;x?T$PuKT4jDMa7eiI&H2m3Wn^TmO67=>ArVLcE zk!Z1iU%LoBjzbduWf$n^E?>P6sxz1hVDjXwV#SfCASXA55@F?OKtEWO^{T_`SDw}e z;DcR)MyMdlY~dUvo0(0))Du&bX2w)C9-Z}iBYTU&WK^d{s$~ zJjH}t6S%<$=$wWhXAR^@gTj!37J+(%y5WPDP#W;FnQ3~pZpIAPr23i9w`ns+*=L*= zlnX;@OP?qys4Nvl$(E$y1_*`bZ0-9DR2fF;rjApKaV0d5Xb&RR!OKP{k4&VV%IDS@ zf!klxMv4;UD0%VIhyMBDuW*~ZhLhY537cx6)G8T9U!S~wVgEtFI9dMB;A8#{ zmqwN^9=!Ns^^d^6tk1mv@4Z^6C>nhQvsqrPruMYTm2#_WHsy{U-?*2A--OBe2W0OD z9vv$}US3&l?>V0S0a;pTH5T_(CG zkbkEJQ{6sET{JW_+-xil%e6y?4y?S~sF$1myWDH!8|#|G%cF;yho!L2=KcG#*$Jai zT-dX?bj4+b9ZR|S{AII?#r)!)`JxdT-tA`9Y?NANig{jbl-AbD)z#EYxndf#YxRn` zW>#A%>n3C2NVRo<>ABYAM_jeAINZ6n)@%(rUpG?=<+b%nsa393Q#)%bX2sakG#jaW zt=eogO66*+X{e96%(=AIF#Ho^ji~ki&*eY9iCJhY=Ua_RU~zkI8Hl@Op>)Vx*J@RnFtk)W?z%6gsR=DSdJW5_;!ACl`Y+qiQKQymyzoKkjV>Sl!>x~BEI>;!j zGtfqVzr4J=O09UKuUQKW%ir8R`i?Vski52R^nt-u+piX8;7NPG|NYPY{tFC4Uen2+ zWc{Q;krsn9rDdehk->twzqDRyiR6%1_;(t{)mtt-yjDpaG8;`Cvf?k*U$K)ZD`2mSNwea#YTZTQK z@t|S%Nn7^SR*tAA3RA0%+Il@zDeW^WTLwx|6fmG{Aoqx{EZO<*NudS6DM+Q>+*{53vE?86RXsHUX7c4ccFNY4a z)+z%I7w#RxB#&>^mIo12YpGVbB_u*zwn~jvvla2haCZtyZeMHdefOaOVv*Ox(Va6J z`)iH0Qgzu(g$PD|8AoZR#F4^U^2i|u)&8B4U&c`?m@R0TD=BMNH#=m)-&i!Z49kS8 zp$km?TB+`z@5M%`+C+MqE6$Y9?w&?C*Ug5UhtZP`m7%o;llr86&XEruQZ(#`E|%5d;kj=hwUGzUm8-S&R<~y|H1;#CYwd~H*yHk* z+Va6>x5qI|_T$vG{-;?}tM+`f1SmEdwMH{ls;;E2EH$buK_)S3DI9LLoGIUFHk+kY zb4OV|vUd5>;kD*!bC`>U)H|1_&be#f1^ENz6*FI}tgls@h>UWjWj2`D$jPX#uIyVc zR~S;S)NzPj+gT6sJUJu+j5#Y==>gUc(qk>b-taNyA1T=r{*hvRr#3W3J$6bLCb%=e z#9XC>D3jGN&nh=J#!#!VZ2Bim5pzXG7mnoC08949-O$kNE4Nn7YGPh|YuUOtz|6EF zxUpdgo}=dbv|{Mj`M*#jm`(1QFK1>{}}IHvemuFz3pGJ7YD{7 zSE;1zyORw_Phk{3pn6Cm>xgrNkWbYZY98rGMn_;YZRv=XVN1ENw$ZuP*2KdnJGaMP zrAS+{EKD1VhZBCSUbYO70WNm_oU@*P2d?51=j@24n5&j5N1A2Cm+vn?(YdN8Irpde z=>^ESS9PVATR9}k(Te&_?k$S2hhFqmT?y}~U6a~j9x^MPnQ++k5RSO2E7h4YL+PHN zT-y2bQ1xEL1A0oJGDWXlN$n_CxyrfC`{`8t&DIEoG~!*`3)6dMcNA=!9j2O?UYO*T zRp1hgAISuVt}`B%F!#xXB@vxoO;pZY=lYoOTfki+!rz`2Z%bqAV_>H5%Da;5->y@g5LiIiDwfLABXd~oxO%UH0I-ph)+zV z@bs;i?$Y)0+j$@4d?FF?$*EMXVU|+cm7l=f!X2{KyCCt&M8wmZr&7vIft$m&>Z6_z zB%a=!j5>SN))t*j9b{Yn9ipC2Mx9NH^|-&hx{gayL<0U*G1+Bv;RBG5SfC;5$u?=4 zU7A~2!K+-8BdA~=Dx-)aAZzQW#5{N%&tyjqJDW7^-KFtjvxkY`j8=rm^x4os>%h4$ zMs(Ug!sAit`~dsAb@8Oz9+_s~6bPSX>iG@-fV<<(o0d$6by2*`RklbkBGyImMEs_< z!-MT|R(>3@+uaQscgVV{Rh@&K(Xl^YSgtip_f!mzN6axhXO<44k+0$2Ozja%-6avf zLVDS3&QwP&k=8XHO&h-;r-1vz#4kM%vpzPenus?fwQ#^RTkZfmGtl`ee(s#Xb^Mgh zz4qt9Wf(tZy{*e`qqc7qabfFowpnRkew2sHCT?3ZokeC#UeONym$=I%@ro0+NsIHajf$`*%@JK2q1NfW981^{E z=1MDpIS&k8X=SK&7@wu%o-H{}a?b7EgVf{ci6(Gpy{hJq6>c-J$Nu2)41+qYT=!Zs zMpi07G&T>p=8@|1fkq9_b`#a3QgSw;^40cOJE39O2sg`>gG&vMKy=R6RoQCEH`!6) zWwp`S|Bjw**{R7HiP})f#>L)H{F1w=rk@x-oAo7>j(f$GE}>jN8rkT|Duj^9@5@+crLKK|KCS<7lAa8Fj+PqT$j% zp1gC~nk}ZYQ)8K_(aG*0xXf?>0k;75*(xSg2^#~9-J(iG;7OsH8JWtASya6j9Y@f) z{HPO%d7SMO35q+qeB_sLl)|usLni!9P`9;%C4AaLeCUJ~C2`r}&K-Vv>xNNSB34a2 zCjjveoPSM!w8WhAxhrXHp8WVZ`j`J1t`_Sm3X#ygdbTKUUO#EjQ5N|`81_FAZO^0N zdXRT7oGs7uIT>s-%yYSGQTTshkLQJfdizlwH~JHT&xd}Hqsu5$*fNfM2caEs;|t6= zeqedWn)8o+VnoA-^;)Yt65MokQD>Pd8>kVn!f&B7!NR84BB=enl^yqYk3nnJ6ouW@DW6cAdoYV%-}UAlrkX#f>b-V*|h^ zimmI0%=>oI;{oQag`ylSJ^>Uy`Jy~Bo}eJVk)VX&Qv!i^j(UKBjpObCA{&9)10)=9 zxCvj*`4@J_MFZy@7auoAU(%Io1ZwUh8S#BrdUGL-#q(o>UqY$dFZN>ZKBl~1cqjy2 zh)LtgB9`-034rg6s`v!gIVYSU?|kEi&@1RlIS=K+I4wB_Y)Fjh`xS@;hje%fjuL+F z31`BW57OB%lpZ9c37ZFR-ykp^ zB(o6+T!LUao5qE!gQOon03M{canw6RDcK57CqlSG#FMT4qXKaIWk|id!5NkxK07n0 zQahK&pl>I@Y-fPt4hY+Dw}ZMmCyxF3(Fe2rtD%>1c}0gPJgsHK(zS%+1%Zwn6Rn4Ko2CT7 z^F|o(`;WRZkPvWwg1JZpG(W*S^ahwC8R)$~lFf#_KUiAU{@5t69Lc1GCC6_QKZ_9u zRXm_9&wJ7!W65y;m4l4WKi@DPCuA(+cFZB;@u`uqsnJY#$XGblf{a0-M?sB`Ysgp) zza7EohYelBHBP0qN?UYN!5up?`jU+4+jH$+94SEWgMkQ zRM?>u`DGlXuzTDg6aL1c5eg&q%g9(nAR%O|CLWP~EFfd`Y|*lwB*<8v=QHJ>ILO$3 z)DsLDhknor$T%{++(DfK*q>troq&wV!FTc5pnppX8g<1{FRw~GOnU+{W;UGsYmtsB ztibsIQSJYrGhEIkew^E#kzg9R*VFJ+hK!XEJOLSZ13v|zc7frJgB7^b_l*bs3~Oo8 zc(9LH^d()XMnJ+ok`do`r8nnjGOq8<(XY5I_$4288#OO7>|@INg@?k?fsEC1J^>k% z%jjAj&J;dbkg-g`3CNfo6q%px%mz+7g@T`ej3rgkjgxSO%8Mr-&jy2gEcjm?$XKZs z$0ua0SUYYZW5wO^3>hm1j}OS$8mnUh8Ox)ODP*h|IOdSC;^G)X#)^mI2Qn6RmW~_9 zSPjn6fQ(6yb^lVl^Of{onxlBVoPD!ZYL!x-hjR9@mG93`ch48M&n_&^zeXzG$6orJ z;H8$!FL1{vZ_l1J#Fg?oFXoPhxq8q%(#%)Nl|XZfb7Q zU~HLcaJ6cHv3p)QIC=*R$t%Q|eTU81Y<0Pz%C(m&7I)OhDOOASs8hUYf2q$q5z*FAH)T(7L`F9$2H-}U*0Z%79Nd69k1Vv4vW*_7E2uzbZ`d3#>) zK`ZNPbr6$sEii3=zU!aX(_AbssSWSru5(i|{@m*maQLj?!}hN?%>Z*3WbZ!t60Vci zxslf=<4Z^;%->4y>4xm)lvw=bW&LgGYjTN2t9nNre z7oFC{3072Sk&~af7GUe=r+?r(v5Qdzt^| zlQHDNTwNtq=-9I(()_b+elYvS*txUsNXC_Qae{$5JNV11tIH!M9U20owR_Lqw`}HG zdC`Hwzjxhx5;A8$VuS3d>gWOX-dFs}ce}A?-IJI-b@|5Fvx>I|*t_BKyAO9^&%P%q zd)DO%*bD6fAlLwBpZMyzr^fCAxjY$DT$zBM(9vt36K;p30CQJgaM5`$W3kEWrNKoP zy4U7(cA>a*MR9&%cK5EO9l3?YrG?xT#lq5+vx}E)njE5yNv7O&t6tFSK@>;|@W~zS z-$lIh9c)29<#wA@|L%85@FpZL8tYa10tKG?@zd+$vGT&cBiZ~}7blp)kUH4A_fJS2 zbZ+T63L)XtDw)+)PXE9-{NP6qJQlmX+;Ghlpl&UAe>v0 zF=k(#fVa>BJ5;HyMlkpDtIz*n>;iM|Nywf3hy?6~hR$hW6)!kKo6Wh!W-k8Dkm+&N z!j46R*D@7J0xRhKk3INX8KjiFQoMZf&U;(35%JuSU{FGb8WkA={GEH}%|DMl)a3GH zd~sz0enJD#({*y&-9P*3T@0JNLY6_q-8Q%0gDpQ_%q=>n+Qd*=jx_K0@dw|IQnMv~ zokF>>>B_0SbhNANty|_=bFa$S5eL)Wa?{)kO}Cq&eWGrns}~=;wteU0wEB2%_rfgQ z4`1V)z+5k1_*dPV+aLShc7D6Op2o}WGB#ff-hGDLen#kN_Qyfq$%d*@c#k%j=8}A literal 0 HcmV?d00001 diff --git a/projects/piso_sipo/syn/ise/project/piso_vhdl.prj b/projects/piso_sipo/syn/ise/project/piso_vhdl.prj new file mode 100644 index 0000000..f9a6470 --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/piso_vhdl.prj @@ -0,0 +1 @@ +vhdl work "W:\vhdl\projects\piso_sipo\src\piso.vhd" diff --git a/projects/piso_sipo/syn/ise/project/prjname.lso b/projects/piso_sipo/syn/ise/project/prjname.lso new file mode 100644 index 0000000..22de730 --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/prjname.lso @@ -0,0 +1 @@ +work diff --git a/projects/piso_sipo/syn/ise/project/sipo.lso b/projects/piso_sipo/syn/ise/project/sipo.lso new file mode 100644 index 0000000..22de730 --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/sipo.lso @@ -0,0 +1 @@ +work diff --git a/projects/piso_sipo/syn/ise/project/sipo.prj b/projects/piso_sipo/syn/ise/project/sipo.prj new file mode 100644 index 0000000..daca32f --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/sipo.prj @@ -0,0 +1 @@ +vhdl work "../src/sipo.vhd" diff --git a/projects/piso_sipo/syn/ise/project/sipo.xst b/projects/piso_sipo/syn/ise/project/sipo.xst new file mode 100644 index 0000000..e3d46f5 --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/sipo.xst @@ -0,0 +1,59 @@ +set -tmpdir "./xst/projnav.tmp" +set -xsthdpdir "./xst" +run +-ifn sipo.prj +-ifmt mixed +-ofn sipo +-ofmt NGC +-p xc4vsx35-10-ff668 +-top sipo +-opt_mode Speed +-opt_level 1 +-power NO +-iuc NO +-lso sipo.lso +-keep_hierarchy NO +-rtlview Yes +-glob_opt AllClockNets +-read_cores YES +-write_timing_constraints NO +-cross_clock_analysis NO +-hierarchy_separator / +-bus_delimiter <> +-case maintain +-slice_utilization_ratio 100 +-bram_utilization_ratio 100 +-dsp_utilization_ratio 100 +-verilog2001 YES +-fsm_extract YES -fsm_encoding Auto +-safe_implementation No +-fsm_style lut +-ram_extract Yes +-ram_style Auto +-rom_extract Yes +-mux_style Auto +-decoder_extract YES +-priority_extract YES +-shreg_extract YES +-shift_extract YES +-xor_collapse YES +-rom_style Auto +-auto_bram_packing NO +-mux_extract YES +-resource_sharing YES +-async_to_sync NO +-use_dsp48 auto +-iobuf YES +-max_fanout 500 +-bufg 32 +-bufr 24 +-register_duplication YES +-register_balancing No +-slice_packing YES +-optimize_primitives NO +-use_clock_enable Auto +-use_sync_set Auto +-use_sync_reset Auto +-iob auto +-equivalent_register_removal YES +-slice_utilization_ratio_maxmargin 5 diff --git a/projects/piso_sipo/syn/ise/project/sipo_vhdl.prj b/projects/piso_sipo/syn/ise/project/sipo_vhdl.prj new file mode 100644 index 0000000..3deb63c --- /dev/null +++ b/projects/piso_sipo/syn/ise/project/sipo_vhdl.prj @@ -0,0 +1 @@ +vhdl work "W:\vhdl\projects\piso_sipo\src\sipo.vhd"