Bee2 branch landing: step 1
authorAdam Megacz <adam@megacz.com>
Sun, 30 Aug 2009 07:34:51 +0000 (00:34 -0700)
committerAdam Megacz <adam@megacz.com>
Sun, 30 Aug 2009 07:34:51 +0000 (00:34 -0700)
Makefile
src/edu/berkeley/fleet/fpga/Bee2.java
src/edu/berkeley/fleet/fpga/Client.java
src/edu/berkeley/fleet/fpga/Server.java
src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128.edn [new file with mode: 0644]
src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128.v [new file with mode: 0644]
src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128_fifo_generator_v2_2_xst_1.ngc [new file with mode: 0644]
src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst.edn [new file with mode: 0644]
src/edu/berkeley/fleet/fpga/bee2/user_fifo.v [new file with mode: 0644]

index e2f407b..cf1f3eb 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -6,13 +6,26 @@ java              = java -Xmx500m -Dfleet.impl='edu.berkeley.fleet.fpga.ML509$$L
 effort = high
 opt_for = area
 xil_ver=10.1
+remote_ise = /tools/xilinx/${xil_ver}/ISE
+remote_edk = /tools/xilinx/${xil_ver}/EDK
+speed_grade = 1
+part = xc5vlx110t
+package = ff1136
+board = ml505   # ??
+runhost=goliath
 else
 ifeq ($(impl),bee2)
 java              = java -Xmx500m -Dfleet.impl=edu.berkeley.fleet.fpga.Bee2
 # BEE2 does not work with ISE 10.1
 xil_ver=9.1i
+remote_ise = /tools/xilinx/ISE${xil_ver}_lin/
+remote_edk = /tools/xilinx/EDK${xil_ver}/
 effort = high
 opt_for = area
+part = xc2vp70
+package = ff1704
+speed_grade=6
+runhost=bee2-tunnel
 else
 ifeq ($(impl),java)
 java              = java -Xmx500m -Dfleet.impl=edu.berkeley.fleet.interpreter.Interpreter
@@ -22,6 +35,13 @@ java              = java -Xmx500m -Dfleet.impl='edu.berkeley.fleet.fpga.ML509$$S
 effort = std
 opt_for = area
 xil_ver=10.1
+remote_ise = /tools/xilinx/${xil_ver}/ISE
+remote_edk = /tools/xilinx/${xil_ver}/EDK
+speed_grade = 1
+part = xc5vlx110t
+package = ff1136
+board = ml505   # ??
+runhost=goliath
 else
 java              = java -Xmx500m
 endif
@@ -68,8 +88,6 @@ host = intel2950-5.eecs.berkeley.edu
 #host = amdr905-1.eecs.berkeley.edu
 
 remote_dir = /scratch/megacz/fleet/
-remote_ise = /tools/xilinx/${xil_ver}/ISE
-remote_edk = /tools/xilinx/${xil_ver}/EDK
 
 
 #host = mm2.millennium.berkeley.edu
@@ -90,29 +108,20 @@ xilinx += XILINX_EDK=$(remote_edk)
 xilinx_ise = $(xilinx) $(remote_ise)/bin/lin/
 xilinx_edk = $(xilinx) $(remote_edk)/bin/lin/
 
-# ML50X
-speed_grade = 1
-part = xc5vlx110t
-package = ff1136
-board = ml505   # ??
-
 # ML410
 #part = xc4vfx60
 #package = ff1152
 #speed_grade = 11
 #board = ml410
+#runhost=goliath
 
-# BEE2
-#part = xc2vp70
-#package = 7ff1704
-
-device = ${part}${package}-${speed_grade}
+device = ${part}-${package}-${speed_grade}
 rsync = rsync --exclude=.git --exclude=chips/marina/images -zare ssh --progress --verbose
 
 upload: fleet.jar build/fpga/main.bit
        mkdir -p build
        chmod +x misc/program.sh
-       ${rsync} ./ root@goliath:fleet/
+       ${rsync} fleet.jar build/fpga/main.bit misc root@${runhost}:fleet/
 
 build/fpga/main.bit: $(java_files) $(ship_files)
        make fleet.jar impl=${impl}
@@ -126,7 +135,7 @@ build/fpga/main.bit: $(java_files) $(ship_files)
        ${rsync} --delete ./ ${host}:${remote_dir}
        time ssh ${host} 'make -C ${remote_dir} synth XILINX=${remote_ise} remote_ise=${remote_ise} remote_edk=${remote_edk} impl=${impl}'
        scp ${host}:${remote_dir}/build/fpga/main.bit build/fpga/
-       scp ${host}:${remote_dir}/build/fpga/main.ace build/fpga/
+       scp ${host}:${remote_dir}/build/fpga/main.ace build/fpga/ || true
 
 pcore = ${remote_edk}/hw/XilinxProcessorIPLib/pcores
 intstyle = -intstyle xflow
@@ -136,6 +145,7 @@ synth:
        cd build/fpga; ln -sf ../../src/edu/berkeley/fleet/fpga/ddr2/* .
        cd build/fpga; ln -sf ../../src/edu/berkeley/fleet/fpga/dvi/* .
        cd build/fpga; ln -sf ../../src/edu/berkeley/fleet/fpga/zbt/* .
+       cd build/fpga; ln -sf ../../src/edu/berkeley/fleet/fpga/bee2/* .
        rm -f build/fpga/main.lso
        echo work                        >> build/fpga/main.lso
        rm -f build/fpga/main.prj
@@ -207,6 +217,7 @@ synth:
        echo >> build/fpga/main.xst
 
        rm -f build/fpga/main.ut
+ifneq ($(impl),bee2)
        echo '-w' >> build/fpga/main.ut
        echo '-g CclkPin:PULLUP' >> build/fpga/main.ut
        echo '-g TdoPin:PULLNONE' >> build/fpga/main.ut
@@ -227,7 +238,39 @@ synth:
        echo '-g LCK_cycle:NoWait' >> build/fpga/main.ut
        echo '-g Security:NONE' >> build/fpga/main.ut
        echo '-g Persist:No' >> build/fpga/main.ut
-
+endif
+ifeq ($(impl),bee2)
+       echo '-w' >> build/fpga/main.ut
+       echo '-g DebugBitstream:No' >> build/fpga/main.ut
+       echo '-g Binary:no' >> build/fpga/main.ut
+       echo '-g CRC:Enable' >> build/fpga/main.ut
+       echo '-g ConfigRate:4' >> build/fpga/main.ut
+       echo '-g CclkPin:PullUp' >> build/fpga/main.ut
+       echo '-g M0Pin:PullUp' >> build/fpga/main.ut
+       echo '-g M1Pin:PullUp' >> build/fpga/main.ut
+       echo '-g M2Pin:PullUp' >> build/fpga/main.ut
+       echo '-g ProgPin:PullUp' >> build/fpga/main.ut
+       echo '-g DonePin:PullUp' >> build/fpga/main.ut
+       echo '-g PowerdownPin:PullUp' >> build/fpga/main.ut
+       echo '-g TckPin:PullUp' >> build/fpga/main.ut
+       echo '-g TdiPin:PullUp' >> build/fpga/main.ut
+       echo '-g TdoPin:PullNone' >> build/fpga/main.ut
+       echo '-g TmsPin:PullUp' >> build/fpga/main.ut
+       echo '-g UnusedPin:PullDown' >> build/fpga/main.ut
+       echo '-g UserID:0xFFFFFFFF' >> build/fpga/main.ut
+       echo '-g DCMShutdown:Disable' >> build/fpga/main.ut
+       echo '-g DisableBandgap:No' >> build/fpga/main.ut
+       echo '-g DCIUpdateMode:AsRequired' >> build/fpga/main.ut
+       echo '-g StartUpClk:CClk' >> build/fpga/main.ut
+       echo '-g DONE_cycle:4' >> build/fpga/main.ut
+       echo '-g GTS_cycle:5' >> build/fpga/main.ut
+       echo '-g GWE_cycle:6' >> build/fpga/main.ut
+       echo '-g LCK_cycle:NoWait' >> build/fpga/main.ut
+       echo '-g Security:None' >> build/fpga/main.ut
+       echo '-g DonePipe:No' >> build/fpga/main.ut
+       echo '-g DriveDone:No' >> build/fpga/main.ut
+       echo '-g Encrypt:No' >> build/fpga/main.ut
+endif
        $(xilinx_ise)xst      ${intstyle} -ifn main.xst -ofn main.syr < main.xst \
          | grep --line-buffered -v 'been backward balanced into' \
          | grep --line-buffered -v 'IDDR has been replaced by IDDR_2CLK' \
@@ -238,9 +281,10 @@ synth:
        $(xilinx_ise)par      ${intstyle} -pl ${effort} -ol ${effort} -w main_map.ncd main.ncd main.pcf
        $(xilinx_ise)trce     ${intstyle} -e 3 -l 3 -s ${speed_grade} -xml main main.ncd -o main.twr main.pcf
        $(xilinx_ise)bitgen   ${intstyle} -f main.ut main.ncd
+ifneq ($(impl),bee2)
        $(xilinx) tcl $(remote_edk)/data/xmd/genace.tcl -jprog -hw main.bit -board ${board} -ace mainx.ace
        mv build/fpga/mainx.ace build/fpga/main.ace   # genace throws a fit if the filename prefix is the same?
-
+endif
 
 runserver: fleet.jar
        $(java) -Djava.library.path=lib -cp fleet.jar:lib/RXTXcomm.jar edu.berkeley.fleet.fpga.Server
index 701f262..e0af6b6 100644 (file)
@@ -2,22 +2,138 @@ package edu.berkeley.fleet.fpga;
 import edu.berkeley.fleet.fpga.*;
 import edu.berkeley.fleet.api.*;
 import java.io.*;
+import gnu.io.*;
+import java.io.*;
+import java.net.*;
+import java.util.*;
+import java.util.concurrent.Semaphore;
 
 public class Bee2 extends Fpga {
 
     public Bee2() throws IOException {
-        for(int i=0; i<2; i++)  createShip("Memory");
-        for(int i=0; i<8; i++)  createShip("Alu");
-        for(int i=0; i<1; i++)  createShip("Fifo");
-        for(int i=0; i<12; i++) createShip("Counter");
-        
-        //createShip("CarrySaveAdder");
-        //createShip("Rotator");
+        for(int i=0; i<2; i++) createShip("Alu");
+        for(int i=0; i<1; i++) createShip("Memory");
+        for(int i=0; i<2; i++) createShip("Fifo");
         createShip("Random");
-        createShip("Button");
-        createShip("Timer");
+        createShip("Counter");
+        //createShip("CarrySaveAdder");
+        createShip("Rotator");
+        createShip("Lut3");
+        /*
+          for(int i=0; i<2; i++)  createShip("Memory");
+          for(int i=0; i<6; i++)  createShip("Alu");
+          for(int i=0; i<1; i++)  createShip("Fifo");
+          for(int i=0; i<12; i++) createShip("Counter");
         
+          //createShip("CarrySaveAdder");
+          //createShip("Rotator");
+          createShip("Random");
+          createShip("Button");
+          createShip("Timer");
+        */
         init();
     }
 
+
+    // Server //////////////////////////////////////////////////////////////////////////////
+
+    private static class Gobbler extends Thread {
+        private final BufferedReader br;
+        public Gobbler(InputStream is) {
+            this.br = new BufferedReader(new InputStreamReader(is));
+        }
+        public void run() {
+            try {
+                for(String s = br.readLine(); s!=null; s=br.readLine())
+                    System.err.println(s);
+            } catch (Exception e) { throw new RuntimeException(e); }
+        }
+    }
+
+    private static RandomAccessFile raf;
+    private static OutputStream fos;
+    private static InputStream fis;
+
+    public static String pass_string = "password=security_is_for_wimps ";
+
+    public static void main(String[] args) throws Exception {
+        int idx = Integer.parseInt(args[0]);
+
+        Process proc;
+        System.err.println("== unprogramming fpga " + idx);
+        proc = Runtime.getRuntime().exec("user_unprogram "+idx);
+        new Gobbler(proc.getInputStream()).start();
+        proc.waitFor();
+        System.err.println("== programming fpga " + idx);
+        proc = Runtime.getRuntime().exec("user_program "+idx+" main.bit");
+        new Gobbler(proc.getInputStream()).start();
+        int ret = proc.waitFor();
+        if (ret!=0) System.exit(ret);
+
+        raf = new RandomAccessFile(new File("/dev/selectmap"+idx), "rw");
+        fos = new FileOutputStream(raf.getFD());
+        fis = new BufferedInputStream(new FileInputStream(raf.getFD()));
+        ServerSocket ss = new ServerSocket(3133);
+
+        while(true) {
+            System.out.println("listening...");
+            Socket socket = ss.accept();
+            try {
+                socket.setKeepAlive(true);
+                System.out.println("accept!");
+                
+                //final InputStream is = new BufferedInputStream(socket.getInputStream());
+                final InputStream is = socket.getInputStream();
+                final OutputStream os = socket.getOutputStream(); //new BufferedOutputStream(socket.getOutputStream());
+                
+                // read login string
+                byte[] buf = new byte[1024];
+                StringBuffer sb = new StringBuffer();
+                while(true) {
+                    int i = is.read();
+                    if (i==-1) return;
+                    if (((char)i)=='\n') break;
+                    sb.append((char)i);
+                }
+                System.err.println("login string: " + sb.toString());
+                if (!sb.toString().startsWith(pass_string)) return;
+
+                socket.setSoTimeout(10);
+                while(true) {
+                    boolean ok = false;
+                    while (fis.available() > 0) {
+                        ok = true;
+                        int val = fis.read();
+                        if (val==-1) break;
+                        System.err.println("fpga->host: 0x"+Integer.toString(val & 0xff, 16));
+                        if ((val & (3<<6)) == 0)
+                            fos.write( (1<<6) | 1);
+                        os.write((byte)val);
+                        os.flush();
+                    }
+                    try {
+                        int r = is.read();
+                        if (r == -1) break;
+                        ok = true;
+                        System.err.println("host->fpga: 0x"+Integer.toString(r & 0xff, 16));
+                        fos.write(r);
+                    } catch (SocketTimeoutException _) { }
+                    if (!ok) {
+                        if (socket.isOutputShutdown() || socket.isInputShutdown() || socket.isClosed() || !socket.isConnected()) {
+                            socket.close();
+                            break;
+                        }
+                        System.err.println("flushing os...");
+                        os.flush();
+                        System.err.println("flushing fos...");
+                        fos.flush();
+                        System.err.println("sleeping...");
+                        Thread.sleep(10);                    
+                    }
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
 }
index 4c223fd..269181e 100644 (file)
@@ -50,8 +50,9 @@ public class Client extends FleetProcess {
     public Client(Fpga fpga, String bitfile, Instruction[] instructions) throws Exception {
         this.fpga = fpga;
 
-        s = new Socket(InetAddress.getByName("goliath.megacz.com"), 3133);
-        //s = new Socket(InetAddress.getByName("localhost"), 3133);
+        s = fpga instanceof Bee2
+            ? new Socket(InetAddress.getByName("megacz.com"), 3133)
+            : new Socket(InetAddress.getByName("goliath.megacz.com"), 3133);
         this.os = new BufferedOutputStream(s.getOutputStream());
         final InputStream is = new BufferedInputStream(s.getInputStream());
         PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
index 623da49..d6b90e1 100644 (file)
@@ -15,7 +15,7 @@ public class Server {
     static {
         try {
             jarFileTime = new File("fleet.jar").lastModified();
-            bitFileTime = new File("build/fpga/main.bit").lastModified();
+            bitFileTime = new File("./main.bit").lastModified();
         } catch (Exception e) { throw new RuntimeException(e); }
     }
 
@@ -23,8 +23,8 @@ public class Server {
     public static void main(String[] args) throws Exception {
         System.err.println("programming...");
         Process proc = Runtime.getRuntime().exec(new String[] {
-                "misc/program.sh",
-                "build/fpga/main.bit"
+                "./program.sh",
+                "./main.bit"
             });
         BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
         String str = null;
@@ -46,7 +46,7 @@ public class Server {
                             System.err.println("jarfile modified; exiting...");
                             System.exit(0);
                         }
-                        if (bitFileTime != new File("build/fpga/main.bit").lastModified()) {
+                        if (bitFileTime != new File("./main.bit").lastModified()) {
                             System.err.println("bitfile modified; exiting...");
                             System.exit(0);
                         }
diff --git a/src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128.edn b/src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128.edn
new file mode 100644 (file)
index 0000000..5562d7c
--- /dev/null
@@ -0,0 +1,402 @@
+(edif test (edifVersion 2 0 0) (edifLevel 0) (keywordMap (keywordLevel 0))
+(status (written (timeStamp 2006 2 18 19 6 14)
+   (author "Xilinx, Inc.")
+   (program "Xilinx CORE Generator" (version "Xilinx CORE Generator 7.1.04i; Cores Update # 3"))))
+   (comment "                                                                                
+      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-2005 Xilinx, Inc.                                      
+      All rights reserved.                                                      
+                                                                                
+   ")
+   (comment "Core parameters: ")
+       (comment "c_wr_response_latency = 1 ")
+       (comment "c_has_rd_data_count = 1 ")
+       (comment "c_din_width = 8 ")
+       (comment "c_has_wr_data_count = 1 ")
+       (comment "InstanceName = async_fifo_8_8_128 ")
+       (comment "c_implementation_type = 2 ")
+       (comment "c_family = virtex2p ")
+       (comment "c_has_wr_rst = 0 ")
+       (comment "c_underflow_low = 0 ")
+       (comment "c_has_meminit_file = 0 ")
+       (comment "c_has_overflow = 0 ")
+       (comment "c_preload_latency = 0 ")
+       (comment "c_dout_width = 8 ")
+       (comment "c_rd_depth = 128 ")
+       (comment "c_default_value = BlankString ")
+       (comment "c_mif_file_name = BlankString ")
+       (comment "c_has_underflow = 0 ")
+       (comment "c_has_rd_rst = 0 ")
+       (comment "c_has_almost_full = 0 ")
+       (comment "c_has_rst = 1 ")
+       (comment "c_data_count_width = 2 ")
+       (comment "c_has_wr_ack = 0 ")
+       (comment "c_wr_ack_low = 0 ")
+       (comment "c_common_clock = 0 ")
+       (comment "c_rd_pntr_width = 7 ")
+       (comment "c_has_almost_empty = 0 ")
+       (comment "c_rd_data_count_width = 8 ")
+       (comment "c_enable_rlocs = 0 ")
+       (comment "c_wr_pntr_width = 7 ")
+       (comment "c_overflow_low = 0 ")
+       (comment "c_prog_empty_type = 0 ")
+       (comment "c_optimization_mode = 0 ")
+       (comment "c_wr_data_count_width = 8 ")
+       (comment "c_preload_regs = 1 ")
+       (comment "c_dout_rst_val = 0 ")
+       (comment "c_has_data_count = 0 ")
+       (comment "c_prog_full_thresh_negate_val = 96 ")
+       (comment "c_wr_depth = 128 ")
+       (comment "c_prog_empty_thresh_negate_val = 32 ")
+       (comment "c_prog_empty_thresh_assert_val = 32 ")
+       (comment "c_has_valid = 0 ")
+       (comment "c_init_wr_pntr_val = 0 ")
+       (comment "c_prog_full_thresh_assert_val = 96 ")
+       (comment "c_use_fifo16_flags = 0 ")
+       (comment "c_has_backup = 0 ")
+       (comment "c_valid_low = 0 ")
+       (comment "c_prim_fifo_type = 512 ")
+       (comment "c_count_type = 0 ")
+       (comment "c_prog_full_type = 0 ")
+       (comment "c_memory_type = 1 ")
+   (external xilinxun (edifLevel 0)
+      (technology (numberDefinition))
+       (cell VCC (cellType GENERIC)
+           (view view_1 (viewType NETLIST)
+               (interface
+                   (port P (direction OUTPUT))
+               )
+           )
+       )
+       (cell GND (cellType GENERIC)
+           (view view_1 (viewType NETLIST)
+               (interface
+                   (port G (direction OUTPUT))
+               )
+           )
+       )
+   )
+   (external async_fifo_8_8_128_fifo_generator_v2_2_xst_1_lib (edifLevel 0)
+       (technology (numberDefinition))
+       (cell async_fifo_8_8_128_fifo_generator_v2_2_xst_1 (cellType GENERIC)
+           (view view_1 (viewType NETLIST)
+               (interface
+                   (port clk (direction INPUT))
+                   (port backup (direction INPUT))
+                   (port backup_marker (direction INPUT))
+                   (port ( array ( rename din "din<7:0>") 8 ) (direction INPUT))
+                   (port ( array ( rename prog_empty_thresh "prog_empty_thresh<6:0>") 7 ) (direction INPUT))
+                   (port ( array ( rename prog_empty_thresh_assert "prog_empty_thresh_assert<6:0>") 7 ) (direction INPUT))
+                   (port ( array ( rename prog_empty_thresh_negate "prog_empty_thresh_negate<6:0>") 7 ) (direction INPUT))
+                   (port ( array ( rename prog_full_thresh "prog_full_thresh<6:0>") 7 ) (direction INPUT))
+                   (port ( array ( rename prog_full_thresh_assert "prog_full_thresh_assert<6:0>") 7 ) (direction INPUT))
+                   (port ( array ( rename prog_full_thresh_negate "prog_full_thresh_negate<6:0>") 7 ) (direction INPUT))
+                   (port rd_clk (direction INPUT))
+                   (port rd_en (direction INPUT))
+                   (port rd_rst (direction INPUT))
+                   (port rst (direction INPUT))
+                   (port wr_clk (direction INPUT))
+                   (port wr_en (direction INPUT))
+                   (port wr_rst (direction INPUT))
+                   (port almost_empty (direction OUTPUT))
+                   (port almost_full (direction OUTPUT))
+                   (port ( array ( rename data_count "data_count<1:0>") 2 ) (direction OUTPUT))
+                   (port ( array ( rename dout "dout<7:0>") 8 ) (direction OUTPUT))
+                   (port empty (direction OUTPUT))
+                   (port full (direction OUTPUT))
+                   (port overflow (direction OUTPUT))
+                   (port prog_empty (direction OUTPUT))
+                   (port prog_full (direction OUTPUT))
+                   (port valid (direction OUTPUT))
+                   (port ( array ( rename rd_data_count "rd_data_count<7:0>") 8 ) (direction OUTPUT))
+                   (port underflow (direction OUTPUT))
+                   (port wr_ack (direction OUTPUT))
+                   (port ( array ( rename wr_data_count "wr_data_count<7:0>") 8 ) (direction OUTPUT))
+               )
+           )
+       )
+   )
+(library test_lib (edifLevel 0) (technology (numberDefinition (scale 1 (E 1 -12) (unit Time))))
+(cell async_fifo_8_8_128
+ (cellType GENERIC) (view view_1 (viewType NETLIST)
+  (interface
+   (port ( array ( rename din "din<7:0>") 8 ) (direction INPUT))
+   (port ( rename rd_clk "rd_clk") (direction INPUT))
+   (port ( rename rd_en "rd_en") (direction INPUT))
+   (port ( rename rst "rst") (direction INPUT))
+   (port ( rename wr_clk "wr_clk") (direction INPUT))
+   (port ( rename wr_en "wr_en") (direction INPUT))
+   (port ( array ( rename dout "dout<7:0>") 8 ) (direction OUTPUT))
+   (port ( rename empty "empty") (direction OUTPUT))
+   (port ( rename full "full") (direction OUTPUT))
+   (port ( array ( rename rd_data_count "rd_data_count<7:0>") 8 ) (direction OUTPUT))
+   (port ( array ( rename wr_data_count "wr_data_count<7:0>") 8 ) (direction OUTPUT))
+   )
+  (contents
+   (instance VCC (viewRef view_1 (cellRef VCC  (libraryRef xilinxun))))
+   (instance GND (viewRef view_1 (cellRef GND  (libraryRef xilinxun))))
+   (instance BU2
+      (viewRef view_1 (cellRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1 (libraryRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_lib)))
+   )
+   (net (rename N5 "din<7>")
+    (joined
+      (portRef (member din 0))
+      (portRef (member din 0) (instanceRef BU2))
+    )
+   )
+   (net (rename N6 "din<6>")
+    (joined
+      (portRef (member din 1))
+      (portRef (member din 1) (instanceRef BU2))
+    )
+   )
+   (net (rename N7 "din<5>")
+    (joined
+      (portRef (member din 2))
+      (portRef (member din 2) (instanceRef BU2))
+    )
+   )
+   (net (rename N8 "din<4>")
+    (joined
+      (portRef (member din 3))
+      (portRef (member din 3) (instanceRef BU2))
+    )
+   )
+   (net (rename N9 "din<3>")
+    (joined
+      (portRef (member din 4))
+      (portRef (member din 4) (instanceRef BU2))
+    )
+   )
+   (net (rename N10 "din<2>")
+    (joined
+      (portRef (member din 5))
+      (portRef (member din 5) (instanceRef BU2))
+    )
+   )
+   (net (rename N11 "din<1>")
+    (joined
+      (portRef (member din 6))
+      (portRef (member din 6) (instanceRef BU2))
+    )
+   )
+   (net (rename N12 "din<0>")
+    (joined
+      (portRef (member din 7))
+      (portRef (member din 7) (instanceRef BU2))
+    )
+   )
+   (net (rename N55 "rd_clk")
+    (joined
+      (portRef rd_clk)
+      (portRef rd_clk (instanceRef BU2))
+    )
+   )
+   (net (rename N56 "rd_en")
+    (joined
+      (portRef rd_en)
+      (portRef rd_en (instanceRef BU2))
+    )
+   )
+   (net (rename N58 "rst")
+    (joined
+      (portRef rst)
+      (portRef rst (instanceRef BU2))
+    )
+   )
+   (net (rename N59 "wr_clk")
+    (joined
+      (portRef wr_clk)
+      (portRef wr_clk (instanceRef BU2))
+    )
+   )
+   (net (rename N60 "wr_en")
+    (joined
+      (portRef wr_en)
+      (portRef wr_en (instanceRef BU2))
+    )
+   )
+   (net (rename N66 "dout<7>")
+    (joined
+      (portRef (member dout 0))
+      (portRef (member dout 0) (instanceRef BU2))
+    )
+   )
+   (net (rename N67 "dout<6>")
+    (joined
+      (portRef (member dout 1))
+      (portRef (member dout 1) (instanceRef BU2))
+    )
+   )
+   (net (rename N68 "dout<5>")
+    (joined
+      (portRef (member dout 2))
+      (portRef (member dout 2) (instanceRef BU2))
+    )
+   )
+   (net (rename N69 "dout<4>")
+    (joined
+      (portRef (member dout 3))
+      (portRef (member dout 3) (instanceRef BU2))
+    )
+   )
+   (net (rename N70 "dout<3>")
+    (joined
+      (portRef (member dout 4))
+      (portRef (member dout 4) (instanceRef BU2))
+    )
+   )
+   (net (rename N71 "dout<2>")
+    (joined
+      (portRef (member dout 5))
+      (portRef (member dout 5) (instanceRef BU2))
+    )
+   )
+   (net (rename N72 "dout<1>")
+    (joined
+      (portRef (member dout 6))
+      (portRef (member dout 6) (instanceRef BU2))
+    )
+   )
+   (net (rename N73 "dout<0>")
+    (joined
+      (portRef (member dout 7))
+      (portRef (member dout 7) (instanceRef BU2))
+    )
+   )
+   (net (rename N74 "empty")
+    (joined
+      (portRef empty)
+      (portRef empty (instanceRef BU2))
+    )
+   )
+   (net (rename N75 "full")
+    (joined
+      (portRef full)
+      (portRef full (instanceRef BU2))
+    )
+   )
+   (net (rename N80 "rd_data_count<7>")
+    (joined
+      (portRef (member rd_data_count 0))
+      (portRef (member rd_data_count 0) (instanceRef BU2))
+    )
+   )
+   (net (rename N81 "rd_data_count<6>")
+    (joined
+      (portRef (member rd_data_count 1))
+      (portRef (member rd_data_count 1) (instanceRef BU2))
+    )
+   )
+   (net (rename N82 "rd_data_count<5>")
+    (joined
+      (portRef (member rd_data_count 2))
+      (portRef (member rd_data_count 2) (instanceRef BU2))
+    )
+   )
+   (net (rename N83 "rd_data_count<4>")
+    (joined
+      (portRef (member rd_data_count 3))
+      (portRef (member rd_data_count 3) (instanceRef BU2))
+    )
+   )
+   (net (rename N84 "rd_data_count<3>")
+    (joined
+      (portRef (member rd_data_count 4))
+      (portRef (member rd_data_count 4) (instanceRef BU2))
+    )
+   )
+   (net (rename N85 "rd_data_count<2>")
+    (joined
+      (portRef (member rd_data_count 5))
+      (portRef (member rd_data_count 5) (instanceRef BU2))
+    )
+   )
+   (net (rename N86 "rd_data_count<1>")
+    (joined
+      (portRef (member rd_data_count 6))
+      (portRef (member rd_data_count 6) (instanceRef BU2))
+    )
+   )
+   (net (rename N87 "rd_data_count<0>")
+    (joined
+      (portRef (member rd_data_count 7))
+      (portRef (member rd_data_count 7) (instanceRef BU2))
+    )
+   )
+   (net (rename N90 "wr_data_count<7>")
+    (joined
+      (portRef (member wr_data_count 0))
+      (portRef (member wr_data_count 0) (instanceRef BU2))
+    )
+   )
+   (net (rename N91 "wr_data_count<6>")
+    (joined
+      (portRef (member wr_data_count 1))
+      (portRef (member wr_data_count 1) (instanceRef BU2))
+    )
+   )
+   (net (rename N92 "wr_data_count<5>")
+    (joined
+      (portRef (member wr_data_count 2))
+      (portRef (member wr_data_count 2) (instanceRef BU2))
+    )
+   )
+   (net (rename N93 "wr_data_count<4>")
+    (joined
+      (portRef (member wr_data_count 3))
+      (portRef (member wr_data_count 3) (instanceRef BU2))
+    )
+   )
+   (net (rename N94 "wr_data_count<3>")
+    (joined
+      (portRef (member wr_data_count 4))
+      (portRef (member wr_data_count 4) (instanceRef BU2))
+    )
+   )
+   (net (rename N95 "wr_data_count<2>")
+    (joined
+      (portRef (member wr_data_count 5))
+      (portRef (member wr_data_count 5) (instanceRef BU2))
+    )
+   )
+   (net (rename N96 "wr_data_count<1>")
+    (joined
+      (portRef (member wr_data_count 6))
+      (portRef (member wr_data_count 6) (instanceRef BU2))
+    )
+   )
+   (net (rename N97 "wr_data_count<0>")
+    (joined
+      (portRef (member wr_data_count 7))
+      (portRef (member wr_data_count 7) (instanceRef BU2))
+    )
+   )
+))))
+(design async_fifo_8_8_128 (cellRef async_fifo_8_8_128 (libraryRef test_lib))
+  (property X_CORE_INFO (string "fifo_generator_v2_2, Coregen 7.1.04i_ip3"))
+  (property PART (string "xc2vp70-ff1704-7") (owner "Xilinx")))
+)
diff --git a/src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128.v b/src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128.v
new file mode 100644 (file)
index 0000000..ce27aa2
--- /dev/null
@@ -0,0 +1,155 @@
+/*******************************************************************************
+*     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-2005 Xilinx, Inc.                                     *
+*     All rights reserved.                                                     *
+*******************************************************************************/
+// The synopsys directives "translate_off/translate_on" specified below are
+// supported by XST, FPGA Compiler II, Mentor Graphics and Synplicity synthesis
+// tools. Ensure they are correct for your synthesis tool(s).
+
+// You must compile the wrapper file async_fifo_8_8_128.v when simulating
+// the core, async_fifo_8_8_128. When compiling the wrapper file, be sure to
+// reference the XilinxCoreLib Verilog simulation library. For detailed
+// instructions, please refer to the "CORE Generator Help".
+
+`timescale 1ns/1ps
+
+module async_fifo_8_8_128(
+       din,
+       rd_clk,
+       rd_en,
+       rst,
+       wr_clk,
+       wr_en,
+       dout,
+       empty,
+       full,
+       rd_data_count,
+       wr_data_count);
+
+
+input [7 : 0] din;
+input rd_clk;
+input rd_en;
+input rst;
+input wr_clk;
+input wr_en;
+output [7 : 0] dout;
+output empty;
+output full;
+output [7 : 0] rd_data_count;
+output [7 : 0] wr_data_count;
+
+// synopsys translate_off
+
+      FIFO_GENERATOR_V2_2 #(
+               0,      // c_common_clock
+               0,      // c_count_type
+               2,      // c_data_count_width
+               "BlankString",  // c_default_value
+               8,      // c_din_width
+               "0",    // c_dout_rst_val
+               8,      // c_dout_width
+               0,      // c_enable_rlocs
+               "virtex2p",     // c_family
+               0,      // c_has_almost_empty
+               0,      // c_has_almost_full
+               0,      // c_has_backup
+               0,      // c_has_data_count
+               0,      // c_has_meminit_file
+               0,      // c_has_overflow
+               1,      // c_has_rd_data_count
+               0,      // c_has_rd_rst
+               1,      // c_has_rst
+               0,      // c_has_underflow
+               0,      // c_has_valid
+               0,      // c_has_wr_ack
+               1,      // c_has_wr_data_count
+               0,      // c_has_wr_rst
+               2,      // c_implementation_type
+               0,      // c_init_wr_pntr_val
+               1,      // c_memory_type
+               "BlankString",  // c_mif_file_name
+               0,      // c_optimization_mode
+               0,      // c_overflow_low
+               0,      // c_preload_latency
+               1,      // c_preload_regs
+               512,    // c_prim_fifo_type
+               32,     // c_prog_empty_thresh_assert_val
+               32,     // c_prog_empty_thresh_negate_val
+               0,      // c_prog_empty_type
+               96,     // c_prog_full_thresh_assert_val
+               96,     // c_prog_full_thresh_negate_val
+               0,      // c_prog_full_type
+               8,      // c_rd_data_count_width
+               128,    // c_rd_depth
+               7,      // c_rd_pntr_width
+               0,      // c_underflow_low
+               0,      // c_use_fifo16_flags
+               0,      // c_valid_low
+               0,      // c_wr_ack_low
+               8,      // c_wr_data_count_width
+               128,    // c_wr_depth
+               7,      // c_wr_pntr_width
+               1)      // c_wr_response_latency
+       inst (
+               .DIN(din),
+               .RD_CLK(rd_clk),
+               .RD_EN(rd_en),
+               .RST(rst),
+               .WR_CLK(wr_clk),
+               .WR_EN(wr_en),
+               .DOUT(dout),
+               .EMPTY(empty),
+               .FULL(full),
+               .RD_DATA_COUNT(rd_data_count),
+               .WR_DATA_COUNT(wr_data_count),
+               .CLK(),
+               .BACKUP(),
+               .BACKUP_MARKER(),
+               .PROG_EMPTY_THRESH(),
+               .PROG_EMPTY_THRESH_ASSERT(),
+               .PROG_EMPTY_THRESH_NEGATE(),
+               .PROG_FULL_THRESH(),
+               .PROG_FULL_THRESH_ASSERT(),
+               .PROG_FULL_THRESH_NEGATE(),
+               .RD_RST(),
+               .WR_RST(),
+               .ALMOST_EMPTY(),
+               .ALMOST_FULL(),
+               .DATA_COUNT(),
+               .OVERFLOW(),
+               .PROG_EMPTY(),
+               .PROG_FULL(),
+               .VALID(),
+               .UNDERFLOW(),
+               .WR_ACK());
+
+
+// synopsys translate_on
+
+endmodule
+
diff --git a/src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128_fifo_generator_v2_2_xst_1.ngc b/src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128_fifo_generator_v2_2_xst_1.ngc
new file mode 100644 (file)
index 0000000..dc18c6b
--- /dev/null
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.4e
+$52f\7f4=7:2:3=6?>;33;?7<H]]Z^X7jnt`]`kphs480;2<5;4:66104<=8;0:95998426>1=AGZ^X7OKDSC?2?699;1<6D@_UU8B@ATE4?0;2<k47;KMTPR=X[ELSHC_TX]WLWCT@5<1<3<:;68JJUSS2YXDKRKBPU[\PMTB[AUJ_^K]T=494;423>0BB][[:QPLCZCJX]STXE\JSI]MABGSM5<1<3?k;68JJUSS2YXDKRHZLM]WLWCT@5<1<3<;;68JJUSS2YXDKRHZLM]WLWCT@VKX_H\[<783:72<?3CE\XZ5PSMD[CSKDV^C^H]G_OGDEQC;>3:5=h58:HLSQQ<wzfmTi`~{y^vkv`uo4?0;2?;47;KMTPR=x{elShc\7ftx]wlwct`Vkx\7fh|{<783:73<?3CE\XZ5psmd[`kw|pU\7fd\7fk|h^lfcdrb4?0;2<j47;KMTPR=x{elSk{cl^vkv`uo4?0;2?:47;KMTPR=x{elSk{cl^vkv`uoWhyxi\7fz36;2=61=02@D[YY4\7frne\bpjkW}byi~fPndebp`:1294:n695OTVSQQ<CMK_LS_JPPOVQ83<768h0;7AZTQWW>ACE]NU\^R^ATS>5>585;2=1CXZ_UU8gags`W{nT|cz}_qnvw4Yu4?0;2<j47;MVPUSS2moiyjQ}d^rmpwYu4?0;2<j47;MVPUSS2moiyjQ}d^rmpwYp4?0;2?=47;MVPUSS2moiyjQxr^rmpwYwd|y:Sz29:1<17>1=G\^[YY4kecwd[rtXxg~yS}bzs3]t83<768n0;7AZTQWW>ace}nU|~R~ats]q83<768n0;7AZTQWW>ace}nU|~R~ats]t83<76;13<95701224>>=AGZ^X7JFN=594;76310BB][[:EKME91=87;:754FNQWW>AOIJ5=1<3??;98JJUSS2mce0:4?>008<?IR\Y__6IAZT=594;74310DYY^ZT;FLQQG;?3:5=>57:NWWTPR=LF__N1950?3a?=<H]]Z^X7\K_ECWEZEH]G^7;7>11c9;>JSSX\^1[_QKAUC\GJSI\5=1<3?=;98LQQVR\3ndyy28:1<2f>>=G\^[YY4}d^fbpdYdg|d\7f0:4?>0`8<?IR\Y__6z|Pd`vb[firf}6<6=0>;868=56>:23=46OKDSC?4;><IMNYM1?18:CG@WG;:720MIJ]A=1=<>GCL[K78364AEFQE939i2KOH_O36;2=<>GCL[K7:364AEFQF96902KOH_L31?:8EABUJ58546OKDS@?7;><IMNYN1:18:CG@WD;=7k0MIJ]B=494;><IMNYN1814:CE62e<IEGD_YQJMQVZf>GKEFY_SK[CL89BW\HDW[OL86LNA@:8FPUXAGLD=6M=;B61?FC>3JBDENK>08;8GMINKL;9<45LHNK@A44012ICCDMJ12::?FNHAJO:9=74CIMJG@71901HDBGLE04;=>EOG@IN=:76;BJLMFC61830OEAFCD036==D@FCHI9;7;BJLMFC2>11HDBGLE7:;?FNHAJO<555LHNK@A=0?3JBDENK6739@M1=DDBK?7NBDB29@HW?<KFGFEYZJD69@V@GSMM;0Hk5KECWD[WGJWLG[XTk4DD@VCZTFEVL^@Ah4DD@VCZTFEVXOSH@i;EGAQBYUIDU\^RKA119GAGS@W[NT\CZ]<1<24>BBJ\MT^IQ_NUP?5;773MOIYJQ]D^RMPW:568:0HHLZG^PG[UHSZ595==5KECWD[WBXXG^Y090>0:FFFPAXZMU[BY\35?31?ACE]NUYHR^ATS>5>58682NNNXIPRE]SJQT;>7;;7IKMUF]TVZVI\[6;2<>4DD@VCZQUWYD_^1?1119GAGS@W^XT\CZ]<3<24>BBJ\MT[_Q_NUP?7;773MOIYJQXR^RMPW:368:0HHLZG^UQ[UHSZ5?5=?5KECWD[RTXXG^Y0;4?>028@@DROV]YS]@[R=4=6>BN>2NBB1>16:FJJ979>2NBB1<16:FJJ959>2NBB1:16:FJJ939>2NBB1818:FJJ91=87<0HD@37?58@LHF494<7IGAA=3=3>BNFH692:5KIOC?7;1<L@DJ0908;EKME939?2NBBL29>89GMKG;?3:5;6JFN@>4:2=CAGH7<394DHLA84803MCEN1<17:FJJG:46>1OECL34?58@LHE4<4<7IGAB=4==>BNFK6<6=08;EKMF919?2NDYY2?>69GKPR;97=0HB[[<3<4?AIR\595;6J@UU>7:2=CG\^79394DNWW838>3ME^X1950?58@JSS4>437IAZT@>3:==CG\^J0<07;EMVPD:5611OCXZN<2<;?AIR\H6?255KOTVB808?3ME^XL29>`9GKPRF4>0;255KOTVB828?3ME^XO2?>99GKPRE48437IAZTC>1:==CG\^I0>07;EMVPG:3611OCXZM<4<;?AIR\K6=2l5KOTVA82<7611OCXZM<6<2?@3<MDZ_U>5JN@18AKD53O>97K6<;GF@0>@CKL90JI^;;GFSA1=A]EF:7J=4GOF7?M(3:;1B<?5F139J67=N;01BBDZ\T@VF6>JN:2FD;6B@GHABH1=K]];=7A[[1^N7?ISS:?1GYY<PL59OQQ513E__?RB;;MWW00=J]QIR>6@?4:L03<5<FMK87CJM7:LFPRIUC>1EC@K]GD38K==H^LXM@BY>;Q68TDTSi2ZBBRLZSHF[f>VNFVH^_COBE29SV@g<X[ELSHC_TX37?UTHOVOF\YWPTIPFWM:768>0\_AH_DOSP\YS@[OXD1?1159SVJAXMDZ_URZGRDQK8786<2ZYCJQJMQVZ[QNUMZB7?3?;;QPLCZCJX]STXE\JSI>7:42<X[ELSHC_TX]WLWCT@5?5=;5_RNE\AHVSQV^C^H]G<783:42<X[ELSHC_TX]WLWCT@5<5=o5_RNE\AHVSQV^C^H]G_@QPAWR;87;i7]\@G^GNTQ_X\AXN_EQNSRGQP9799k1[^BIPELRW]ZROZLYCSL]\ESV?6;7e3YXDKRKBPU[\PMTB[AUJ_^K]T=1=5g=WZFMTI@^[Y^VKV@UOWHYXI_Z34?3a?UTHOVOF\YWPTIPFWMYF[ZOYX1;11e9SVJAXMDZ_URZGRDQK[DUTM[^7:7>11c9SVJAXMDZ_URZGRDQK[DUTM[^7:3?m;QPLCZCJX]STXE\JSI]MABGSM5:5=o5_RNE\AHVSQV^C^H]G_OGDEQC;97;i7]\@G^GNTQ_X\AXN_EQAEFCWA9499k1[^BIPELRW]ZROZLYCSCKHAUG?7;7e3YXDKRKBPU[\PMTB[AUEIJO[E=6=5g=WZFMTI@^[Y^VKV@UOWGOLMYK35?3g?UTHOVOF\YWPTIPFWMYIMNK_I1850?3a?UTHOVOF\YWPTIPFWMYIMNK_I1819:RQKBYA]EF:?6^]OF]EQIJX\AXN_E2?>018TWI@WO_G@RZGRDQK8486;2ZYCJQIUMN\PMTB[A692<=4PSMD[CSKDV^C^H]G<2<27>VUGNUMYABPTIPFWM:36890\_AH_GWOHZROZLYC080>5:RQKBYA]EFTXE\JSI>5>586;2ZYCJQIUMN\PMTB[A6=2<o4PSMD[CSKDV^C^H]G_@QPAWR;87;j7]\@G^DVHIYS@[OXDRO\SDPW8486i2ZYCJQIUMN\PMTB[AUJ_^K]T=0=5d=WZFMTJXBC_UJQAVNXIZYN^Y2<>0c8TWI@WO_G@RZGRDQK[DUTM[^783?n;QPLCZ@RDEU_D_K\H^CPW@TS4<4:o6^]OF]EQIJX\AXN_EQNSRGQP90=87;j7]\@G^DVHIYS@[OXDRO\SDPW8386i2ZYCJQIUMN\PMTB[AUEIJO[E=2=5d=WZFMTJXBC_UJQAVNXFLMJXH2>>0c8TWI@WO_G@RZGRDQK[KC@I]O7>3?n;QPLCZ@RDEU_D_K\H^LFCDRB4:4:m6^]OF]EQIJX\AXN_EQAEFCWA9299h1[^BIPFTNO[QNUMZBTBHINTD>6:4e<X[ELSK[CL^VKV@UOWGOLMYK36;2=5d=WZFMTJXBC_UJQAVNXFLMJXH29>09R0>TCQH>0^IWM6:PG[FJL991YHRJNT@]@KPHS494:<6\K_ECWEZEH]G^7=3??;SF\@DRFWJE^BY2=>028VAYCI]KTOB[AT=1=55=ULVNJXLQLOTLW818682XOSIO[A^ALQKR;=7;;7_JPD@VB[FIRF]6=2<<4RE]GEQGXKF_EX1950?33?WBXLH^JSNAZNU>4:0=ULVOE86\ID@68VCBE;2XXX<5\6:QJJLRF>2YBBDZM6:QLQWEB<2^R\H94U1-ecdu>3\DOI_HCOVa8QVCUW_CXEOBJ5:TBHLB43_IH56XFEV]W]UC43^OJ?6YJB79TVZGDC?1\^RMCK028SWYCI]KTOB[AT=2=55=PZVNJXLQLOTLW848682]YSIO[A^ALQKR;:7;;7Z\PD@VB[FIRF]682<>4WS]GEQGXKF_EX1:1119TVZBF\HUHCX@[<4<24>QUWMK_MRM@UOV?2;753^XTHLZN_BMVJQ:0294:<6Y]_ECWEZEH]G^7;3;4WS]FJ4b<P@FBBU#WDC"3*4&T\\H+<#?/ARAJM0=_G[IR:6V\TMKA3>^T\VMEH:5WSU]UGFd<PVID^HQFNGM5?]beW@n:<6Vkm^ObnjtQm{ybcc??;Yfn[Hoig{\n~~g`n29[wqe<iegd\7fyQjmqvzf>gkefy\7fSk{cl3a8ev\7fikVlbjbQ7_9]26=YaaoeTkh`jr`vlvZp5W;Us\7fyQ>3d9bw|hdWocmcR6P8^31<Z`nnfUlick}aumq[s4X:VrxxR?PbminahbwW\7f<T>Rv|t79aefmrxm1imnezp^obvncu;2igg?j4covahn)`mgUyhRmats-amkYdf}U\7fc}!mle]amkYdf}%E?9o4covahn)`mgUyhRmats-amkYdf}U\7fc}!mle]amkYdf}%i\7fnQmio]`jqYdg|d\7fSR`?012?4;Ydqf>37n`{bmi,c`hXzmUhby| bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\gjsi|VUe<=>?<1<`}1?<kg~i`f!heo]q`Zei|{%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQlotlw[Zh789:7<3bzt5c8gkredb%licQ}d^ampw)eagUhbyQ{oq-ahaYeagUhby!msb]amkYdf}Uhcx`{_^l3456;97Uhub:n;blwfim(oldT~iQlnup,flhXkg~Txb~ bmf\flhXkg~$n~mPbhl\gkrXkf\7fexRQa0123848Xpfx?46matcnh+bciW{nTocz}/ckm[fhsW}e{#obk_ckm[fhs'kyhSoga_blw[firf}UTb=>?0=3=g|2f3jd\7fnae gdl\vaYdf}x$nd`Pcov\pjv(jenTnd`Pcov,fveXj`dToczPcnwmpZYi89:;0?0Pcxm7e>ei|kf`#jka_sf\gkru'kceSn`{_ums+gjcWkceSn`{/cq`[goiWjd\7fSnaznu]\j5678585Sua}499`jqdkc&mnbR|k_blwv*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|VidyczP_o2345:56js?m6matcnh+bciW{nTocz}/ckm[fhsW}e{#obk_ckm[fhs'kyhSoga_blw[firf}UTb=>?0=1=[f\7fh<h1hbylck.efjZtcWjd\7f~"lfn^ampZrhx&hghRlfn^amp*dtkVhbbRmat^alqkrXWg:;<=2<>^zlv1><kg~i`f!heo]q`Zei|{%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQlotlw[Zh789:7?3mv4`9`jqdkc&mnbR|k_blwv*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|VidyczP_o2345:36Virc9o4covahn)`mgUyhRmats-amkYdf}U\7fc}!mle]amkYdf}%i\7fnQmio]`jqYdg|d\7fSR`?012?0;Y\7fg{>37n`{bmi,c`hXzmUhby| bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\gjsi|VUe<=>?<5<`}1g<kg~i`f!heo]q`Zei|{%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQlotlw[Zh789:793Qlyn6b?fhsjea$kh`Pre]`jqt(j`dToczPtnr,fibXj`dTocz bra\flhXkg~Tob{at^]m45674<4Ttb|;8:ampgjl'noeS\7fjPcovq+goiWjd\7fSya\7f/cng[goiWjd\7f#o}l_ckm[fhsWje~byQPn1234939kp>j7n`{bmi,c`hXzmUhby| bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\gjsi|VUe<=>?<7<\|jt4:2iexobd/fgm[wbXkg~y#oga_blw[qiw'kfoSoga_blw+firf}U;??5lnu`oo*abfVxoSn`{r.`jjZei|V~d|"lcd^`jjZei|&idyczP1278gkredb%licQ}d^ampw)eagUhbyQ{oq-ahaYeagUhby!lotlw[4Yu|:80oczmlj-dakYulViex\7f!mio]`jqYsgy%i`iQmio]`jq)dg|d\7fS?=:;blwfim(oldT~iQlnup,flhXkg~Txb~ bmf\flhXkg~$ob{at^0\vq553jd\7fnae gdl\vaYdf}x$nd`Pcov\pjv(jenTnd`Pcov,gjsi|V9896matcnh+bciW{nTocz}/ckm[fhsW}e{#obk_ckm[fhs'je~byQ<_sv06>ei|kf`#jka_sf\gkru'kceSn`{_ums+gjcWkceSn`{/bmvjqY3;<1hbylck.efjZtcWjd\7f~"lfn^ampZrhx&hghRlfn^amp*eh}g~T8R|{339`jqdkc&mnbR|k_blwv*dnfViexRz`p.`o`ZdnfViex"m`uov\163<kg~i`f!heo]q`Zei|{%iecQlnu]wku)edmUiecQlnu-`kphsW<Uyx><4covahn)`mgUyhRmats-amkYdf}U\7fc}!mle]amkYdf}%hcx`{_716?fhsjea$kh`Pre]`jqt(j`dToczPtnr,fibXj`dTocz cnwmpZ0Xz}9j7n`{bmi,c`hXzmUhby| bhl\gkrX|fz$najPbhl\gkr(kf\7fexRQa01238484i2iexobd/fgm[wbXkg~y#oga_blw[qiw'kfoSoga_blw+firf}UTb=>?0=0=7d=df}hgg"ijn^pg[fhsz&hbbRmat^vlt*dklVhbbRmat.alqkrXWg:;<=2<>2c8gkredb%licQ}d^ampw)eagUhbyQ{oq-ahaYeagUhby!lotlw[Zh789:783=n;blwfim(oldT~iQlnup,flhXkg~Txb~ bmf\flhXkg~$ob{at^]m45674<48m6matcnh+bciW{nTocz}/ckm[fhsW}e{#obk_ckm[fhs'je~byQPn1234909;:1hbylck.efjZtcWjd\7f~R~cur3,flhXkg~Txb~ bmf\flhXkg~$B>;=;blwfim(oldT~iQlnup\tist9&hbbRmat^vlt*dklVhbbRmat.`pgZdnfViexR>PcnwmpZYi89:;0=0Pcxm64>ei|kf`#jka_sf\gkruWyf~\7f<!mio]`jqYsgy%i`iQmio]`jq)e{jUiecQlnu]3[firf}UTb=>?0=2=g|363jd\7fnae gdl\vaYdf}xT|a{|1.`jjZei|V~d|"lcd^`jjZei|&hxoRlfn^ampZ6Xkf\7fexRQa0123858k}}?97n`{bmi,c`hXzmUhby|Ppmwp5*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|V:Tob{at^]m4567484Tota:2:ampgjl'noeS\7fjPcovq[ujr{8%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQ?_bmvjqYXf9:;<1?1_ymq15=df}hgg"ijn^pg[fhszVzgy~? bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\4Zeh}g~TSc>?01>2:f\7f2:2iexobd/fgm[wbXkg~yS}bzs0-amkYdf}U\7fc}!mle]amkYdf}%i\7fnQmio]`jqY7Wje~byQPn1234949Wjsd9?5lnu`oo*abfVxoSn`{r^roqv7(j`dToczPtnr,fibXj`dTocz bra\flhXkg~T<Rm`uov\[k6789692Rv`r428gkredb%licQ}d^ampwYwd|y:#oga_blw[qiw'kfoSoga_blw+gudWkceSn`{_1]`kphsWVd;<=>32?az17=df}hgg"ijn^pg[fhszVzgy~? bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\4Zeh}g~TSc>?01>0:Ze~g<80oczmlj-dakYulViex\7fQ\7fltq2+goiWjd\7fSya\7f/cng[goiWjd\7f#o}l_ckm[fhsW9Uhcx`{_^l3456;;7Usc\7f;?;blwfim(oldT~iQlnup\tist9&hbbRmat^vlt*dklVhbbRmat.`pgZdnfViexR>PcnwmpZYi89:;0>0ly408gkredb%licQ}d^ampwYwd|y:#oga_blw[qiw'kfoSoga_blw+gudWkceSn`{_1]`kphsWVd;<=>34?]`}j353jd\7fnae gdl\vaYdf}xT|a{|1.`jjZei|V~d|"lcd^`jjZei|&hxoRlfn^ampZ6Xkf\7fexRQa0123818Xpfx><6matcnh+bciW{nTocz}_qnvw4)eagUhbyQ{oq-ahaYeagUhby!msb]amkYdf}U;Snaznu]\j56785>5ot;=;blwfim(oldT~iQlnup\tist9&hbbRmat^vlt*dklVhbbRmat.`pgZdnfViexR>PcnwmpZYi89:;080Pcxm66>ei|kf`#jka_sf\gkruWyf~\7f<!mio]`jqYsgy%i`iQmio]`jq)e{jUiecQlnu]3[firf}UTb=>?0=7=[}iu=91hbylck.efjZtcWjd\7f~R~cur3,flhXkg~Txb~ bmf\flhXkg~$n~mPbhl\gkrX8VidyczP_o2345:26js>>6matcnh+bciW{nTocz}_qnvw4)eagUhbyQ{oq-ahaYeagUhby!msb]amkYdf}U;Snaznu]\j56785<5Sua}399`jqdkc&mnbR|k_blwvZvk}z;$nd`Pcov\pjv(jenTnd`Pcov,gjsi|V:846matcnh+bciW{nTocz}_qnvw4)eagUhbyQ{oq-ahaYeagUhby!lotlw[45e3jd\7fnae gdl\vaYdf}xT|a{|1.`jjZei|V~d|"lcd^`jjZei|&idyczP1^pw7==df}hgg"ijn^pg[fhszVzgy~? bhl\gkrX|fz$najPbhl\gkr(kf\7fexR<<b:ampgjl'noeS\7fjPcovq[ujr{8%iecQlnu]wku)edmUiecQlnu-`kphsW;Uyx>64covahn)`mgUyhRmats]shpu6'kceSn`{_ums+gjcWkceSn`{/bmvjqY4;k1hbylck.efjZtcWjd\7f~R~cur3,flhXkg~Txb~ bmf\flhXkg~$ob{at^1\vq5?3jd\7fnae gdl\vaYdf}xT|a{|1.`jjZei|V~d|"lcd^`jjZei|&idyczP42`8gkredb%licQ}d^ampwYwd|y:#oga_blw[qiw'kfoSoga_blw+firf}U?S\7fz<8:ampgjl'noeS\7fjPcovq[ujr{8%iecQlnu]wku)edmUiecQlnu-`kphsW<9i7n`{bmi,c`hXzmUhby|Ppmwp5*dnfViexRz`p.`o`ZdnfViex"m`uov\1Zts;11hbylck.efjZtcWjd\7f~R~cur3,flhXkg~Txb~ bmf\flhXkg~$ob{at^40f>ei|kf`#jka_sf\gkruWyf~\7f<!mio]`jqYsgy%i`iQmio]`jq)dg|d\7fS;Q}t528gkredb%licQ}d^ampwYwd|y:#oga_blw[qiw'kfoSoga_blw+firf}UTb=>?0=3=05=df}hgg"ijn^pg[fhszVzgy~? bhl\gkrX|fz$najPbhl\gkr(kf\7fexRQa0123878382iexobd/fgm[wbXkg~yS}bzs0-amkYdf}U\7fc}!mle]amkYdf}%hcx`{_^l3456;;7>;7n`{bmi,c`hXzmUhby|Ppmwp5*dnfViexRz`p.`o`ZdnfViex"m`uov\[k67896?29>4covahn)`mgUyhRmats]shpu6'kceSn`{_ums+gjcWkceSn`{/bmvjqYXf9:;<1;1419`jqdkc&mnbR|k_blwvZvk}z;$nd`Pcov\pjv(jenTnd`Pcov,gjsi|VUe<=>?<7<1`>ei|kf`#jka_vp\gkru'kceSn`{_ums+gjcWkceSn`{/O17e>ei|kf`#jka_vp\gkru'kceSn`{_ums+gjcWkceSn`{/cq`[goiWjd\7fSnaznu]\j56785:5Snw`499`jqdkc&mnbRy}_blwv*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|VidyczP_o2345:76js?56matcnh+bciW~xTocz}/ckm[fhsW}e{#obk_ckm[fhs'kyhSoga_blw[firf}UTb=>?0=2=hpr3i2iexobd/fgm[rtXkg~y#oga_blw[qiw'kfoSoga_blw+gudWkceSn`{_bmvjqYXf9:;<1?1_b{l0d=df}hgg"ijn^uq[fhsz&hbbRmat^vlt*dklVhbbRmat.`pgZdnfViexRm`uov\[k67896:2Rv`r5:8gkredb%licQxr^ampw)eagUhbyQ{oq-ahaYeagUhby!msb]amkYdf}Uhcx`{_^l3456;97ir8l5lnu`oo*abfV}ySn`{r.`jjZei|V~d|"lcd^`jjZei|&hxoRlfn^ampZeh}g~TSc>?01>1:Ze~g=k0oczmlj-dakYpzViex\7f!mio]`jqYsgy%i`iQmio]`jq)e{jUiecQlnu]`kphsWVd;<=>32?]{kw2?3jd\7fnae gdl\swYdf}x$nd`Pcov\pjv(jenTnd`Pcov,fveXj`dToczPcnwmpZYi89:;0?0ly5c8gkredb%licQxr^ampw)eagUhbyQ{oq-ahaYeagUhby!msb]amkYdf}Uhcx`{_^l3456;;7Uhub:n;blwfim(oldT{\7fQlnup,flhXkg~Txb~ bmf\flhXkg~$n~mPbhl\gkrXkf\7fexRQa0123868Xpfx?46matcnh+bciW~xTocz}/ckm[fhsW}e{#obk_ckm[fhs'kyhSoga_blw[firf}UTb=>?0=1=g|2f3jd\7fnae gdl\swYdf}x$nd`Pcov\pjv(jenTnd`Pcov,fveXj`dToczPcnwmpZYi89:;090Pcxm7e>ei|kf`#jka_vp\gkru'kceSn`{_ums+gjcWkceSn`{/cq`[goiWjd\7fSnaznu]\j56785>5Sua}499`jqdkc&mnbRy}_blwv*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|VidyczP_o2345:36js?m6matcnh+bciW~xTocz}/ckm[fhsW}e{#obk_ckm[fhs'kyhSoga_blw[firf}UTb=>?0=7=[f\7fh<h1hbylck.efjZquWjd\7f~"lfn^ampZrhx&hghRlfn^amp*dtkVhbbRmat^alqkrXWg:;<=2:>^zlv1><kg~i`f!heo]tvZei|{%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQlotlw[Zh789:793mv4`9`jqdkc&mnbRy}_blwv*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|VidyczP_o2345:16Vrd~><4covahn)`mgU|~Rmats-amkYdf}U\7fc}!mle]amkYdf}%hcx`{_111?fhsjea$kh`Pws]`jqt(j`dToczPtnr,fibXj`dTocz cnwmpZ74=2iexobd/fgm[rtXkg~y#oga_blw[qiw'kfoSoga_blw+firf}U:S\7fz<2:ampgjl'noeSz|Pcovq+goiWjd\7fSya\7f/cng[goiWjd\7f#naznu]170=df}hgg"ijn^uq[fhsz&hbbRmat^vlt*dklVhbbRmat.alqkrX:Vx\7f??5lnu`oo*abfV}ySn`{r.`jjZei|V~d|"lcd^`jjZei|&idyczP3278gkredb%licQxr^ampw)eagUhbyQ{oq-ahaYeagUhby!lotlw[6Yu|:80oczmlj-dakYpzViex\7f!mio]`jqYsgy%i`iQmio]`jq)dg|d\7fS9=:;blwfim(oldT{\7fQlnup,flhXkg~Txb~ bmf\flhXkg~$ob{at^6\vq553jd\7fnae gdl\swYdf}x$nd`Pcov\pjv(jenTnd`Pcov,gjsi|V?896matcnh+bciW~xTocz}/ckm[fhsW}e{#obk_ckm[fhs'je~byQ:_sv06>ei|kf`#jka_vp\gkru'kceSn`{_ums+gjcWkceSn`{/bmvjqY1;<1hbylck.efjZquWjd\7f~"lfn^ampZrhx&hghRlfn^amp*eh}g~T:R|{3`9`jqdkc&mnbRy}_blwv*dnfViexRz`p.`o`ZdnfViex"m`uov\[k67896:2>o4covahn)`mgU|~Rmats-amkYdf}U\7fc}!mle]amkYdf}%hcx`{_^l3456;:79j7n`{bmi,c`hX\7f{Uhby| bhl\gkrX|fz$najPbhl\gkr(kf\7fexRQa01238684i2iexobd/fgm[rtXkg~y#oga_blw[qiw'kfoSoga_blw+firf}UTb=>?0=6=7d=df}hgg"ijn^uq[fhsz&hbbRmat^vlt*dklVhbbRmat.alqkrXWg:;<=2:>2c8gkredb%licQxr^ampw)eagUhbyQ{oq-ahaYeagUhby!lotlw[Zh789:7:3=<;blwfim(oldT{\7fQlnup\tist9&hbbRmat^vlt*dklVhbbRmat.L017=df}hgg"ijn^uq[fhszVzgy~? bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\4Zeh}g~TSc>?01>3:Ze~g<:0oczmlj-dakYpzViex\7fQ\7fltq2+goiWjd\7fSya\7f/cng[goiWjd\7f#o}l_ckm[fhsW9Uhcx`{_^l3456;87ir9<5lnu`oo*abfV}ySn`{r^roqv7(j`dToczPtnr,fibXj`dTocz bra\flhXkg~T<Rm`uov\[k67896;2a{{539`jqdkc&mnbRy}_blwvZvk}z;$nd`Pcov\pjv(jenTnd`Pcov,fveXj`dToczP0^alqkrXWg:;<=2>>^azk04<kg~i`f!heo]tvZei|{U{`x}>/ckm[fhsW}e{#obk_ckm[fhs'kyhSoga_blw[5Ydg|d\7fSR`?012?5;Y\7fg{?;7n`{bmi,c`hX\7f{Uhby|Ppmwp5*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|V:Tob{at^]m4567484hu8<4covahn)`mgU|~Rmats]shpu6'kceSn`{_ums+gjcWkceSn`{/cq`[goiWjd\7fS=Qlotlw[Zh789:7>3Qlyn71?fhsjea$kh`Pws]`jqtXxe\7fx="lfn^ampZrhx&hghRlfn^amp*dtkVhbbRmat^2\gjsi|VUe<=>?<3<\|jt282iexobd/fgm[rtXkg~yS}bzs0-amkYdf}U\7fc}!mle]amkYdf}%i\7fnQmio]`jqY7Wje~byQPn1234949kp?97n`{bmi,c`hX\7f{Uhby|Ppmwp5*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|V:Tob{at^]m45674:4Tota:2:ampgjl'noeSz|Pcovq[ujr{8%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQ?_bmvjqYXf9:;<1=1_ymq15=df}hgg"ijn^uq[fhszVzgy~? bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\4Zeh}g~TSc>?01>0:f\7f2:2iexobd/fgm[rtXkg~yS}bzs0-amkYdf}U\7fc}!mle]amkYdf}%i\7fnQmio]`jqY7Wje~byQPn1234929Wjsd9?5lnu`oo*abfV}ySn`{r^roqv7(j`dToczPtnr,fibXj`dTocz bra\flhXkg~T<Rm`uov\[k67896?2Rv`r428gkredb%licQxr^ampwYwd|y:#oga_blw[qiw'kfoSoga_blw+gudWkceSn`{_1]`kphsWVd;<=>34?az17=df}hgg"ijn^uq[fhszVzgy~? bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\4Zeh}g~TSc>?01>6:Ze~g<80oczmlj-dakYpzViex\7fQ\7fltq2+goiWjd\7fSya\7f/cng[goiWjd\7f#o}l_ckm[fhsW9Uhcx`{_^l3456;=7Usc\7f;?;blwfim(oldT{\7fQlnup\tist9&hbbRmat^vlt*dklVhbbRmat.`pgZdnfViexR>PcnwmpZYi89:;080ly408gkredb%licQxr^ampwYwd|y:#oga_blw[qiw'kfoSoga_blw+gudWkceSn`{_1]`kphsWVd;<=>36?]{kw5?3jd\7fnae gdl\swYdf}xT|a{|1.`jjZei|V~d|"lcd^`jjZei|&idyczP02:8gkredb%licQxr^ampwYwd|y:#oga_blw[qiw'kfoSoga_blw+firf}U:?o5lnu`oo*abfV}ySn`{r^roqv7(j`dToczPtnr,fibXj`dTocz cnwmpZ7Xz}937n`{bmi,c`hX\7f{Uhby|Ppmwp5*dnfViexRz`p.`o`ZdnfViex"m`uov\66d<kg~i`f!heo]tvZei|{U{`x}>/ckm[fhsW}e{#obk_ckm[fhs'je~byQ=_sv0<>ei|kf`#jka_vp\gkruWyf~\7f<!mio]`jqYsgy%i`iQmio]`jq)dg|d\7fS>=m;blwfim(oldT{\7fQlnup\tist9&hbbRmat^vlt*dklVhbbRmat.alqkrX;Vx\7f?55lnu`oo*abfV}ySn`{r^roqv7(j`dToczPtnr,fibXj`dTocz cnwmpZ24j2iexobd/fgm[rtXkg~yS}bzs0-amkYdf}U\7fc}!mle]amkYdf}%hcx`{_5]qp6><kg~i`f!heo]tvZei|{U{`x}>/ckm[fhsW}e{#obk_ckm[fhs'je~byQ:3c9`jqdkc&mnbRy}_blwvZvk}z;$nd`Pcov\pjv(jenTnd`Pcov,gjsi|V?T~y=7;blwfim(oldT{\7fQlnup\tist9&hbbRmat^vlt*dklVhbbRmat.alqkrX>:h0oczmlj-dakYpzViex\7fQ\7fltq2+goiWjd\7fSya\7f/cng[goiWjd\7f#naznu]5[wr382iexobd/fgm[rtXkg~yS}bzs0-amkYdf}U\7fc}!mle]amkYdf}%hcx`{_^l3456;97>;7n`{bmi,c`hX\7f{Uhby|Ppmwp5*dnfViexRz`p.`o`ZdnfViex"m`uov\[k67896929>4covahn)`mgU|~Rmats]shpu6'kceSn`{_ums+gjcWkceSn`{/bmvjqYXf9:;<1=1419`jqdkc&mnbRy}_blwvZvk}z;$nd`Pcov\pjv(jenTnd`Pcov,gjsi|VUe<=>?<5<74>ei|kf`#jka_vp\gkruWyf~\7f<!mio]`jqYsgy%i`iQmio]`jq)dg|d\7fSR`?012?1;273jd\7fnae gdl\swYdf}xT|a{|1.`jjZei|V~d|"lcd^`jjZei|&idyczP_o2345:16:90oczmlj-dakYpzViex\7fQ\7fltq1+goiWjd\7fSya\7f/cng[goiWjd\7f#C=:2:ampgjl'noeSz|Pcovq[ujr{;%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQ>_bmvjqYXf9:;<1>1_b{l15=df}hgg"ijn^uq[fhszVzgy~< bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\5Zeh}g~TSc>?01>3:f\7f292iexobd/fgm[rtXkg~yS}bzs3-amkYdf}U\7fc}!mle]amkYdf}%i\7fnQmio]`jqY6Wje~byQPn1234969d|~>>6matcnh+bciW~xTocz}_qnvw7)eagUhbyQ{oq-ahaYeagUhby!msb]amkYdf}U:Snaznu]\j56785;5Snw`539`jqdkc&mnbRy}_blwvZvk}z8$nd`Pcov\pjv(jenTnd`Pcov,fveXj`dToczP1^alqkrXWg:;<=2>>^zlv06<kg~i`f!heo]tvZei|{U{`x}=/ckm[fhsW}e{#obk_ckm[fhs'kyhSoga_blw[4Ydg|d\7fSR`?012?5;e~=;1hbylck.efjZquWjd\7f~R~cur0,flhXkg~Txb~ bmf\flhXkg~$n~mPbhl\gkrX9VidyczP_o2345:56Virc8<4covahn)`mgU|~Rmats]shpu5'kceSn`{_ums+gjcWkceSn`{/cq`[goiWjd\7fS<Qlotlw[Zh789:7>3Qwos73?fhsjea$kh`Pws]`jqtXxe\7fx>"lfn^ampZrhx&hghRlfn^amp*dtkVhbbRmat^3\gjsi|VUe<=>?<3<`}04<kg~i`f!heo]tvZei|{U{`x}=/ckm[fhsW}e{#obk_ckm[fhs'kyhSoga_blw[4Ydg|d\7fSR`?012?7;Ydqf?97n`{bmi,c`hX\7f{Uhby|Ppmwp6*dnfViexRz`p.`o`ZdnfViex"l|c^`jjZei|V;Tob{at^]m45674:4Ttb|:0:ampgjl'noeSz|Pcovq[ujr{;%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQ>_bmvjqYXf9:;<1=1cx71?fhsjea$kh`Pws]`jqtXxe\7fx>"lfn^ampZrhx&hghRlfn^amp*dtkVhbbRmat^3\gjsi|VUe<=>?<5<\g|i2:2iexobd/fgm[rtXkg~yS}bzs3-amkYdf}U\7fc}!mle]amkYdf}%i\7fnQmio]`jqY6Wje~byQPn1234929Wqey9=5lnu`oo*abfV}ySn`{r^roqv4(j`dToczPtnr,fibXj`dTocz bra\flhXkg~T=Rm`uov\[k67896?2nw:2:ampgjl'noeSz|Pcovq[ujr{;%iecQlnu]wku)edmUiecQlnu-awfYeagUhbyQ>_bmvjqYXf9:;<1;1_b{l17=df}hgg"ijn^uq[fhszVzgy~< bhl\gkrX|fz$najPbhl\gkr(jziTnd`Pcov\5Zeh}g~TSc>?01>6:Z~hz<:0oczmlj-dakYpzViex\7fQ\7fltq1+goiWjd\7fSya\7f/cng[goiWjd\7f#o}l_ckm[fhsW8Uhcx`{_^l3456;=7ir9?5lnu`oo*abfV}ySn`{r^roqv4(j`dToczPtnr,fibXj`dTocz bra\flhXkg~T=Rm`uov\[k67896=2Rv`r2:8gkredb%licQxr^ampwYwd|y9#oga_blw[qiw'kfoSoga_blw+firf}U;?55lnu`oo*abfV}ySn`{r^roqv4(j`dToczPtnr,fibXj`dTocz cnwmpZ74j2iexobd/fgm[rtXkg~yS}bzs3-amkYdf}U\7fc}!mle]amkYdf}%hcx`{_0]qp6><kg~i`f!heo]tvZei|{U{`x}=/ckm[fhsW}e{#obk_ckm[fhs'je~byQ=3c9`jqdkc&mnbRy}_blwvZvk}z8$nd`Pcov\pjv(jenTnd`Pcov,gjsi|V8T~y=7;blwfim(oldT{\7fQlnup\tist:&hbbRmat^vlt*dklVhbbRmat.alqkrX;:h0oczmlj-dakYpzViex\7fQ\7fltq1+goiWjd\7fSya\7f/cng[goiWjd\7f#naznu]0[wr402iexobd/fgm[rtXkg~yS}bzs3-amkYdf}U\7fc}!mle]amkYdf}%hcx`{_51a?fhsjea$kh`Pws]`jqtXxe\7fx>"lfn^ampZrhx&hghRlfn^amp*eh}g~T8R|{399`jqdkc&mnbRy}_blwvZvk}z8$nd`Pcov\pjv(jenTnd`Pcov,gjsi|V?8n6matcnh+bciW~xTocz}_qnvw7)eagUhbyQ{oq-ahaYeagUhby!lotlw[0Yu|:20oczmlj-dakYpzViex\7fQ\7fltq1+goiWjd\7fSya\7f/cng[goiWjd\7f#naznu]57g=df}hgg"ijn^uq[fhszVzgy~< bhl\gkrX|fz$najPbhl\gkr(kf\7fexR8Pru63?fhsjea$kh`Pws]`jqtXxe\7fx>"lfn^ampZrhx&hghRlfn^amp*eh}g~TSc>?01>2:16<kg~i`f!heo]tvZei|{U{`x}=/ckm[fhsW}e{#obk_ckm[fhs'je~byQPn1234949<91hbylck.efjZquWjd\7f~R~cur0,flhXkg~Txb~ bmf\flhXkg~$ob{at^]m45674:4?<6matcnh+bciW~xTocz}_qnvw7)eagUhbyQ{oq-ahaYeagUhby!lotlw[Zh789:783:?;blwfim(oldT{\7fQlnup\tist:&hbbRmat^vlt*dklVhbbRmat.alqkrXWg:;<=2:>528gkredb%licQxr^ampwYwd|y9#oga_blw[qiw'kfoSoga_blw+firf}UTb=>?0=4=`>bf|hUhcx`{<1<e?agsiVidycz31;2=`>bf|hUhcx`{<0<2<>bbj|mT~iQ\7fnup\tist9Vx7<3?7;egaqbYulVzex\7fQ\7fltq2[w:66820hhlzg^pg[uhszVzgy~?Pr=0=5==cmk\7flS\7fjPpovq[ujr{8Uy0>0>8:fffpaXzmU{by|Ppmwp5Zt;<7;37ikmuf]q`Zvi|{U{`x}>_s>6:4g<llh~kR|k_qlwvZvk}z;T~1850?3;?ace}nUyhR~ats]shpu6W{6=2<<4dd`vcZtcWyd\7f~R|30?31?ace}nUyhR~ats]q8486:2nnnxiPre]sjqtXz585=?5kecwd[wbXxg~yS\7f2<>008``droVxoS}`{r^p?0;753moiyjQ}d^rmpwYu4<4:86jjbte\vaYwf}xT~1850?31?ace}nUyhR~ats]q8386:2nnnxiPre]sjqtX\7f5:5=?5kecwd[wbXxg~ySz2>>008``droVxoS}`{r^u?6;753moiyjQ}d^rmpwYp4:4:>6jjbte\vaYwf}xT{1:1139gags`W{nT|cz}_v>6:42<llh~kR|k_qlwvZq;>3:5=?5kecwd[wbXxg~ySz29>0:8``droV}yS}`{r^roqv7X\7f5:5=55kecwd[rtXxg~yS}bzs0]t848602nnnxiPws]sjqtXxe\7fx=Ry32?3;?ace}nU|~R~ats]shpu6W~682<64dd`vcZquWyd\7f~R~cur3\s929911oio{h_vp\tkruWyf~\7f<Qx<4<2e>bbj|mT{\7fQ\7fnup\tist9V}7:7>1199gags`W~xT|cz}_qnvw4Yp4?4:46jjbte\swYwf}xT|a{|2^u?4;7?3moiyjQxr^rmpwYwd|y9Sz2>>0:8``droV}yS}`{r^roqv4X\7f585=55kecwd[rtXxg~yS}bzs3]t868602nnnxiPws]sjqtXxe\7fx>Ry34?3;?ace}nU|~R~ats]shpu5W~6>2<o4dd`vcZquWyd\7f~R~cur0\s90=87;37ikmuf]tvZvi|{U{`x}=_v>5:44<llh~kRy}_qlwvZt;87;97ikmuf]tvZvi|{Uy0<0>2:fffpaX\7f{U{by|Pr=0=57=cmk\7flSz|Ppovq[w:46880hhlzg^uq[uhszVx783?=;egaqbYpzVzex\7fQ}<4<20>bbj|mT{\7fQ\7fnup\v90=87;97ikmuf]tvZvi|{Uy0;0>2:fffpaX\7f{U{by|Pw=2=57=cmk\7flSz|Ppovq[r:66880hhlzg^uq[uhszV}7>3?=;egaqbYpzVzex\7fQx<2<26>bbj|mT{\7fQ\7fnup\s9299;1oio{h_vp\tkruW~6>2<:4dd`vcZquWyd\7f~Ry36;2=57=cmk\7flSz|Ppovq[r:16?1oec2?>79gmk:66?1oec2=>79gmk:46?1oec2;>79gmk:26?1oec29>99gmk:0294=7iga<6<4?air|5:5;6j`uu>2:2=cg|~7>394dnww86803me~x1:17:flqq:26>1ocxz36?;8`jss4>0;2:5kotv?3;3<mdz\7fu?64fhdl[bcim{k\7fc\7fQy2^0/$Fiumnoe,: >.16j[lv49?1mekaPgdlfvdrhzV|9S?Qns0;8bidkc&KGXR\K_ECWEZEH]G^T<<74fm`oo*GK\VXOSIO[A^ALQKRX9830jalck.COPZTCWMK_MRM@UOV\64?<nehgg"OCT^PG[AGSIVIDYCZP30;8bidkc&KGXR\K_ECWEZEH]G^T8<74fm`oo*GK\VXOSIO[A^ALQKRX=830jalck.COPZTCWMK_MRM@UOV\24?<nehgg"OCT^PG[AGSIVIDYCZP70;8bidkc&KGXRY]_ECWEZEH]G^T=<74fm`oo*GK\V]YSIO[A^ALQKRX:830jalck.COPZQUWMK_MRM@UOV\74?<nehgg"OCT^UQ[AGSIVIDYCZP40;8bidkc&KGXRY]_ECWEZEH]G^T9<74fm`oo*GK\V]YSIO[A^ALQKRX>830jalck.COPZQUWMK_MRM@UOV\3<=adkf`#C??9:dofim(F8;27kbmlj-M57?<nehgg"@>389ehgjl'G;?56hcbmi,J43>3ofi`f!A17;8bidkc&D:;45ilcnh+K7?12lgnae N0;:?cjedb%E>=74fm`oo*H5911m`obd/O4;?cjedb%E;55ilcnh+K>6=2lgnae WS]GEQGXKF_EXR>i;gnahn)Xf9:;>1>1119ehgjl'Vd;<=<30?3e?cjedb%Tb=>?2=3=55=adkf`#R`?010?5;7a3ofi`f!Pn1236949991m`obd/^l3454;:7;m7kbmlj-\j567:595==5ilcnh+Zh78987?3?i;gnahn)Xf9:;>1:1119ehgjl'Vd;<=<34?3e?cjedb%Tb=>?2=7=55=adkf`#R`?010?1;7a3ofi`f!Pn1236909991m`obd/^l3454;>7;m7kbmlj-\j567:5=5==5ilcnh+Zh78987;3?i;gnahn)Xf9:;?1<1f:dofim(Wg:;<>2<>g9ehgjl'Vd;<==34?d8bidkc&Ue<=><<4<e?cjedb%Tb=>?3=4=b>`kjea$Sc>?06>1:c=adkf`#R`?015?7;`<nehgg"Qa0124818a3ofi`f!Pn1233939n2lgnae _o2342:16;>0jalck.aoohic'{ns#@v`r^]m4567W[oxyaz>259ehgjl'jf`abj rez,I}iuWVd;<=?PRdqvhq75<2lgnae cminka)ulq%Ftb|P_o2347YUmz\7fgx<<;;gnahn)ddbgdh"|kx.O{kwYXf9:;?R\jstnw572<nehgg"mcklmg+wb\7f'Drd~RQa0127[Wct}e~:>95ilcnh+fjlefn$~iv Mymq[Zh789?T^h}zlu310>`kjea$oaeboe-q`})JpfxTSc>?06]Qavsk|88?7kbmlj-`hnkhl&xot"Cwos]\j5670VXn\7fxb{1308bidkc&igg`ak/sf{+H~hzVUe<=??_Ym?4;443ofi`f!lljol`*tcp&Gsc\7fQPn1224Z^h484:>95ilcnh+fjlefn$~iv Mymq[Zh788;T^h}zlu310>`kjea$oaeboe-q`})JpfxTSc>?13]Qavsk|88?7kbmlj-`hnkhl&xot"Cwos]\j566:VXn\7fxb{20;8bidkc&igg`ak/sf{+UHSZVHT<<74fm`oo*ekcdeo#\7fjw/QLWVZDX9830jalck.aoohic'{ns#]@[R^@\64?<nehgg"mcklmg+wb\7f'YD_^RLP30;8bidkc&igg`ak/sf{+UHSZVHT8<74fm`oo*ekcdeo#\7fjw/QLWVZDX=830jalck.aoohic'{ns#]@[R^@\24g<nehgg"mcklmg+wb\7f'Vd;<<;30?3b?cjedb%h`fc`d.pg|*Yi89;>0<0>a:dofim(keafci!}dy-\j566=585=l5ilcnh+fjlefn$~iv _o2350:468k0jalck.aoohic'{ns#R`?007?0;7f3ofi`f!lljol`*tcp&Ue<=?:<4<2e>`kjea$oaeboe-q`})Xf9:::1>11`9ehgjl'jf`abj rez,[k679?6?2<o4fm`oo*ekcdeo#\7fjw/^l3472;87;j7kbmlj-`hnkhl&xot"Qa01068586i2lgnae cminka)ulq%Tb=>=8=2=5f=adkf`#nbdmnf,va~(xg~ySyc\7f<1<2g>`kjea$oaeboe-q`})wf}xTx`~31?3`?cjedb%h`fc`d.pg|*vi|{U\7fa}2=>0a8bidkc&igg`ak/sf{+uhszV~f|1=11b9ehgjl'jf`abj rez,tkruW}g{090>c:dofim(keafci!}dy-sjqtX|dz793?l;gnahn)ddbgdh"|kx.rmpwYsey6=2<l4fm`oo*ekcdeo#\7fjw/qlwvZrjxV::n6hcbmi,gimjgm%yhu!\7fnup\phvX98h0jalck.aoohic'{ns#}`{r^vntZ46j2lgnae cminka)ulq%{by|Ptlr\74d<nehgg"mcklmg+wb\7f'yd\7f~Rzbp^62f>`kjea$oaeboe-q`})wf}xTx`~P50`8bidkc&igg`ak/sf{+uhszV~f|R8>d:dofim(keafci!}dy-sjqtX|dzs0=0>d:dofim(keafci!}dy-sjqtX|dzs0<0>d:dofim(keafci!}dy-sjqtX|dzs0?0>d:dofim(keafci!}dy-sjqtX|dzs0>0>d:dofim(keafci!}dy-sjqtX|dzs090>d:dofim(keafci!}dy-sjqtX|dzs080>d:dofim(keafci!}dy-sjqtX|dzs0;0>c:dofim(keafci!}dy-sjqtX|dzsS=?l;gnahn)ddbgdh"|kx.rmpwYseyrT=<m4fm`oo*ekcdeo#\7fjw/qlwvZrjxqU9=n5ilcnh+fjlefn$~iv povq[qkwpV9:o6hcbmi,gimjgm%yhu!\7fnup\phv\7fW=;h7kbmlj-`hnkhl&xot"~ats]wiu~X=8i0jalck.aoohic'{ns#}`{r^vnt}Y1:=1m`obd/bnhijb(\7f{r$Aua}_^l3456XZly~`y?=4:dofim(keafci!xry-N|jtXWg:;<<Q]erwop4433ofi`f!lljol`*qup&Gsc\7fQPn1236ZTb{|f\7f=?:4fm`oo*ekcdeo#z|w/LzlvZYi89:8S_k|umv261=adkf`#nbdmnf,sw~(EqeySR`?016\V`urd};986hcbmi,gimjgm%|~u!Bxnp\[k678<UYi~{ct007?cjedb%h`fc`d.uq|*K\7fg{UTb=>?7^Pfwpjs9;>0jalck.aoohic'~xs#@v`r^]m456?W[oxyaz>239ehgjl'jf`abj wsz,I}iuWVd;<<>PXn>3:75<nehgg"mcklmg+rt\7f'Drd~RQa0133[]i;97;986hcbmi,gimjgm%|~u!Bxnp\[k6798UYi~{ct007?cjedb%h`fc`d.uq|*K\7fg{UTb=>>2^Pfwpjs9;>0jalck.aoohic'~xs#@v`r^]m4575W[oxyaz=189ehgjl'jf`abj wsz,TKRUWKU;=45ilcnh+fjlefn${\7fv POVQ[GY6901m`obd/bnhijb(\7f{r$\CZ]_C]15<=adkf`#nbdmnf,sw~(XG^YSOQ<189ehgjl'jf`abj wsz,TKRUWKU?=45ilcnh+fjlefn${\7fv POVQ[GY2901m`obd/bnhijb(\7f{r$\CZ]_C]55d=adkf`#nbdmnf,sw~(Wg:;=82?>0c8bidkc&igg`ak/vp{+Zh788?7=3?n;gnahn)ddbgdh"y}x.]m45724;4:m6hcbmi,gimjgm%|~u!Pn12219599h1m`obd/bnhijb(\7f{r$Sc>?14>7:4g<nehgg"mcklmg+rt\7f'Vd;<<;35?3b?cjedb%h`fc`d.uq|*Yi89;=0=0>a:dofim(keafci!xry-\j566>5>5=l5ilcnh+fjlefn${\7fv _o2361:768k0jalck.aoohic'~xs#R`?037?4;7f3ofi`f!lljol`*qup&Ue<=<7<1<2g>`kjea$oaeboe-tv})wf}xTx`~30?3`?cjedb%h`fc`d.uq|*vi|{U\7fa}2>>0a8bidkc&igg`ak/vp{+uhszV~f|1<11b9ehgjl'jf`abj wsz,tkruW}g{0>0>c:dofim(keafci!xry-sjqtX|dz783?l;gnahn)ddbgdh"y}x.rmpwYsey6>2<m4fm`oo*ekcdeo#z|w/qlwvZrjx5<5=o5ilcnh+fjlefn${\7fv povq[qkwW9;i7kbmlj-`hnkhl&}yt"~ats]wiuY69k1m`obd/bnhijb(\7f{r$|cz}_uos[77e3ofi`f!lljol`*qup&zex\7fQ{mq]05g=adkf`#nbdmnf,sw~(xg~ySyc\7f_53a?cjedb%h`fc`d.uq|*vi|{U\7fa}Q:1c9ehgjl'jf`abj wsz,tkruW}g{S;?k;gnahn)ddbgdh"y}x.rmpwYseyr7<3?k;gnahn)ddbgdh"y}x.rmpwYseyr7=3?k;gnahn)ddbgdh"y}x.rmpwYseyr7>3?k;gnahn)ddbgdh"y}x.rmpwYseyr7?3?k;gnahn)ddbgdh"y}x.rmpwYseyr783?k;gnahn)ddbgdh"y}x.rmpwYseyr793?k;gnahn)ddbgdh"y}x.rmpwYseyr7:3?l;gnahn)ddbgdh"y}x.rmpwYseyrT<<m4fm`oo*ekcdeo#z|w/qlwvZrjxqU:=n5ilcnh+fjlefn${\7fv povq[qkwpV8:o6hcbmi,gimjgm%|~u!\7fnup\phv\7fW:;h7kbmlj-`hnkhl&}yt"~ats]wiu~X<8i0jalck.aoohic'~xs#}`{r^vnt}Y29j1m`obd/bnhijb(\7f{r$|cz}_uos|Z06k2lgnae lnejgZgtWVd;<==31?]`}j7f3ofi`f!cofk`[duXWg:;<>2>>b{2f>`kjea$`bifc^cp[Zh78997=3bzt0a8bidkc&fdkdmPar]\j567;585Snw`1b9ehgjl'eelenQns^]m45644;4Ttb|>a:dofim(dfmboRo|_^l3455;:7ir=n5ilcnh+ii`ajUj\7fRQa0120868Xkpe:o6hcbmi,hjankVkxSR`?011?7;Y\7fg{;j7kbmlj-okbodWhyTSc>?02>0:f\7f6k2lgnae lnejgZgtWVd;<==34?]`}j7d3ofi`f!cofk`[duXWg:;<>2;>^zlv4g<nehgg"b`gha\evYXf9:;?1:1cx3`?cjedb%gcjgl_`q\[k678:6>2Rmvo0a8bidkc&fdkdmPar]\j567;5?5Sua}1`9ehgjl'eelenQns^]m45644<4hu<m4fm`oo*jho`iTm~QPn1237909Wjsd=n5ilcnh+ii`ajUj\7fRQa0120838Xpfx:m6hcbmi,hjankVkxSR`?011?2;e~9j1m`obd/mmdmfYf{VUe<=>8<0<\g|i6i2lgnae lnejgZgtWVd;<=931?az5g=adkf`#aahib]bwZYi89:<0<0cuu3`?cjedb%gcjgl_`q\[k678>692Rmvo0a8bidkc&fdkdmPar]\j567?585Sua}1`9ehgjl'eelenQns^]m45604;4hu<m4fm`oo*jho`iTm~QPn1233959Wjsd=n5ilcnh+ii`ajUj\7fRQa0124868Xpfx:m6hcbmi,hjankVkxSR`?015?7;e~9j1m`obd/mmdmfYf{VUe<=>8<5<\g|i6k2lgnae lnejgZgtWVd;<=934?]{kw7f3ofi`f!cofk`[duXWg:;<:2;>b{2g>`kjea$`bifc^cp[Zh789=793Qlyn3`?cjedb%gcjgl_`q\[k678>6>2Rv`r0c8bidkc&fdkdmPar]\j567?5?5ot?l;gnahn)kgnchSl}P_o2342:16Virc<m4fm`oo*jho`iTm~QPn1233909Wqey=l5ilcnh+ii`ajUj\7fRQa0124838dq;30jalck.nlcleXizU\7fa}Q\7fnup\vZbnnoU{mi2?>^azk7?<nehgg"b`gha\evYseyU{by|Pr^fjbcYwim6;2Rv`r358bidkc&fdkdmPar]wiuYwf}xT~Rjffg]sea:76js946hcbmi,hjankVkxSyc\7f_qlwvZtXl`lmS}ok<1<oqq4>3ofi`f!cofk`[duX|dzT|cz}_s]gmc`Xxhn7=3Qlyn0:?cjedb%gcjgl_`q\phvXxg~yS\7fQkigd\tdb;97Usc\7f<8;gnahn)kgnchSl}Ptlr\tkruW{UoekhPp`f?5;e~:11m`obd/mmdmfYf{V~f|R~ats]q[aoanVzjh1?1ltv1=>`kjea$`bifc^cp[qkwWyd\7f~R|Pdhde[ugc4;4Tota=9:dofim(dfmboRo|_uos[uhszVxThdhi_qcg878Xpfx9;6hcbmi,hjankVkxSyc\7f_qlwvZtXl`lmS}ok<3<`}7><nehgg"b`gha\evYseyU{by|Pr^fjbcYwim692a{{289ehgjl'eelenQns^vntZvi|{UySigif^rb`959Wjsd>45ilcnh+ii`ajUj\7fRzbp^rmpwYuWmcmjR~nd=1=[}iu:>1m`obd/mmdmfYf{V~f|R~ats]q[aoanVzjh1=1cx0;?cjedb%gcjgl_`q\phvXxg~yS\7fQkigd\tdb;;7f~x?74fm`oo*jho`iTm~Q{mq]sjqtXzVnbjkQ\7fae>0:iss9;30jalck.nlcleXizU\7fa}Q\7fnup\vZbnnoU{mi2;>^azk7?<nehgg"b`gha\evYseyU{by|Pr^fjbcYwim6?2Rv`r358bidkc&fdkdmPar]wiuYwf}xT~Rjffg]sea:36js946hcbmi,hjankVkxSyc\7f_qlwvZtXl`lmS}ok<5<oqq4>3ofi`f!cofk`[duX|dzT|cz}_s]gmc`Xxhn793Qlyn0:?cjedb%gcjgl_`q\phvXxg~yS\7fQkigd\tdb;=7Usc\7f<8;gnahn)kgnchSl}Ptlr\tkruW{UoekhPp`f?1;e~:11m`obd/mmdmfYf{V~f|R~ats]q[aoanVzjh1;1ltv1=>`kjea$`bifc^cp[qkwWyd\7f~R|Pdhde[ugc4?4Ttb|=8:dofim(dfmboRo|_uos[uhszVxThdhi_qcg838k}}827kbmlj-okbodWhyTx`~Ppovq[rYcaolT|lj30?]`}j4>3ofi`f!cofk`[duX|dzT|cz}_v]gmc`Xxhn7<3Qwos04?cjedb%gcjgl_`q\phvXxg~ySzQkigd\tdb;87ir>55ilcnh+ii`ajUj\7fRzbp^rmpwYpWmcmjR~nd=2=hpr512lgnae lnejgZgtW}g{S}`{r^u\`l`aWyko0<0Pcxm1=>`kjea$`bifc^cp[qkwWyd\7f~RyPdhde[ugc484Ttb|=7:dofim(dfmboRo|_uos[uhszV}Thdhi_qcg848dq;20jalck.nlcleXizU\7fa}Q\7fnup\sZbnnoU{mi2>>mww6<=adkf`#aahib]bwZrjxVzex\7fQx_ekebZvfl585Snw`289ehgjl'eelenQns^vntZvi|{U|Sigif^rb`949Wqey>:5ilcnh+ii`ajUj\7fRzbp^rmpwYpWmcmjR~nd=0=g|4?3ofi`f!cofk`[duX|dzT|cz}_v]gmc`Xxhn7>3bzt3;8bidkc&fdkdmPar]wiuYwf}xT{Rjffg]sea:46Virc?74fm`oo*jho`iTm~Q{mq]sjqtX\7fVnbjkQ\7fae>0:Z~hz;=0jalck.nlcleXizU\7fa}Q\7fnup\sZbnnoU{mi2<>b{1<>`kjea$`bifc^cp[qkwWyd\7f~RyPdhde[ugc4:4gyy<6;gnahn)kgnchSl}Ptlr\tkruW~UoekhPp`f?0;Ydqf827kbmlj-okbodWhyTx`~Ppovq[rYcaolT|lj34?]{kw403ofi`f!cofk`[duX|dzT|cz}_v]gmc`Xxhn783mv299ehgjl'eelenQns^vntZvi|{U|Sigif^rb`929d|~956hcbmi,hjankVkxSyc\7f_qlwvZqXl`lmS}ok<4<\g|i512lgnae lnejgZgtW}g{S}`{r^u\`l`aWyko080Pxnp13>`kjea$`bifc^cp[qkwWyd\7f~RyPdhde[ugc4<4hu?64fm`oo*jho`iTm~Q{mq]sjqtX\7fVnbjkQ\7fae>6:iss:01m`obd/mmdmfYf{V~f|R~ats]t[aoanVzjh181_ymq6==adkf`#aahib]bwZrjxVzex\7fQx_ekebZvfl5<5`xz>4:dofim(zyxnabj _o2346723ofi`f!}psgnka)Xf9:;?<?;;gnahn)ux{ofci!Pn123243<nehgg"|\7frdol`*Yi89:==<:4fm`oo*twzlgdh"Qa013650=adkf`#\7f~}elmg+Zh788?:=n5ilcnh+wvumdeo#}|jlncgwqg`m;;:m6hcbmi,vutbefn$~lcPre]fjZo6901m`obd/srqahic'{kfS{ocie]j5c=adkf`#\7f~}elmg+wcflVnjxlQyamkg[l7?3ofi`f!}psgnka)r{lxTi`~{y328bidkc&~c~`ak/dnlcle(MDZ_UR@@NSGD66=adkf`#yf}mnf,aii`aj%NA]ZV_OMMV@AXa8;m7kbmlj-wlwkhl&ogcjgl/SCN[@KW\PUb>=5ilcnh+qnuefn$iaahib-`5*bh}}Ub====0:dofim(|axfci!jlnejg*e6'me~xRg>193e?cjedb%\7fd\7fc`d.gokbod'j;$hb{{_h165c=adkf`#yf}mnf,aii`aj%h="j`uu]j33473ofi`f!{hsol`*ckgnch#n< dnww[l77;;:0jalck.vkvhic'lfdkdm c3-gkprXa8;3=k5ilcnh+qnuefn$iaahib-`6*bh}}Ub?8?i;gnahn)s`{gdh"kcofk`+f4(lf\7f\7fSd991d9ehgjl'}byabj emmdmf)d:&ndyyQf80a8bidkc&~c~`ak/dnlcle(kfg{=b{{1b9ehgjl'}byabj emmdmf)dgdz9cxz>f:dofim(|axfci!ilnejg*@RDEUECC\JG308bidkc&~c~`ak/gnlcle(N\FGSCAARDE\m47b3ofi`f!{hsol`*`kgnch#_OB_GWOHZo5;2lgnae tipnka)adfmbo"m`mq3,`jssW`;;??=4fm`oo*rozdeo#kb`gha,gjkw9&ndyyQf10:16>`kjea$xe|boe-ehjank&ida}? dnww[l52:;1m`obd/ujqijb(neelen!lolr2+air|Vc<:??4fm`oo*rozdeo#kb`gha,gjkw9&ndyyQf8318bidkc&~c~`ak/gnlcle(kfg{>"j`uu]j5555;2lgnae tipnka)adfmbo"m`mq0,`jssW`;:4?<4fm`oo*rozdeo#kb`gha,gjkw:&ndyyQf3401?cjedb%\7fd\7fc`d.dokbod'jef|?!kotv\m20592lgnae tipnka)adfmbo"m`mq0,`jssW`2:i6hcbmi,pmtjgm%m`bifc.aliuYa}ef:=h5ilcnh+qnuefn$jaahib-`khvXn|fg><m4fm`oo*rjxVzex\7fQ}_ekebZvfl5:5=n5ilcnh+qkwWyd\7f~R|Pdhde[ugc484:o6hcbmi,phvXxg~yS\7fQkigd\tdb;:7;m7kbmlj-wiuYwf}xT~Rjffg]sea:56Vx\7f=n5ilcnh+qkwWyd\7f~R|Pdhde[ugc4:4:j6hcbmi,phvXxg~yS\7fQkigd\tdb;;7Uyx<m4fm`oo*rjxVzex\7fQ}_ekebZvfl5>5=k5ilcnh+qkwWyd\7f~R|Pdhde[ugc4=4T~y?l;gnahn)seyU{by|Pr^fjbcYwim6>2<h4fm`oo*rjxVzex\7fQ}_ekebZvfl5?5S\7fz>c:dofim(|dzT|cz}_s]gmc`Xxhn7:3?i;gnahn)seyU{by|Pr^fjbcYwim6=2R|{1b9ehgjl'}g{S}`{r^u\`l`aWyko0=0>c:dofim(|dzT|cz}_v]gmc`Xxhn7=3?l;gnahn)seyU{by|Pw^fjbcYwim692<h4fm`oo*rjxVzex\7fQx_ekebZvfl585S\7fz>c:dofim(|dzT|cz}_v]gmc`Xxhn7?3?i;gnahn)seyU{by|Pw^fjbcYwim682R|{1b9ehgjl'}g{S}`{r^u\`l`aWyko090>f:dofim(|dzT|cz}_v]gmc`Xxhn783Q}t0a8bidkc&~f|R~ats]t[aoanVzjh1;11g9ehgjl'}g{S}`{r^u\`l`aWyko080Pru3`?cjedb%\7fa}Q\7fnup\sZbnnoU{mi29>0d8bidkc&~f|R~ats]t[aoanVzjh181_sv2<>`kjea${}|jmnf,VDKX_[UNB<:4ftnob>oijea$~iQ}su]ef45<aghgg"|k_sqw[lhs4:4:<6gabmi,vaYu{}Uyij?<;hlahn)pzVxxxRgat=1=57=nfkf`#z|Prrv\mkrX98:0eclck.uq[wusW{olh6cjmcnh+AIR\V:o7`kbbmi,@JSSW8n0ahcmlj-GKPRX:m1fi`lck.FLQQY4l2gnaobd/EMVPZ2c3dofnae DNWW[0b<elgi`f!KOTV\2a=jmdhgg"J@UU]455=jmdhgg"J@UU]j858682gnaobd/EMVPZo;97;;7`kbbmi,@JSSW`692<>4mdoahn)CG\^Te1=1119nahdkc&NDYYQf<5<24>kbekf`#IAZT^k?1;773dofnae DNWW[l:168:0ahcmlj-GKPRXa5=5?n5bel`oo*gtqgiTjdh`_9];[44?WocmcRijndpbpjtX~;U9Su}{_0]`kwcnfz~:86cjmcnh+qkwW{kfS\7fjPeo36?hcjjea$x`~Pr`o\vaYbf820c{k}fmmte>vugnUna}zv159svjaXmdz\7fuRzgrdqk8586<2zycjQjmqvz[qnumzb7=3?;;qplcZcjx}sTxe|jsi>1:42<x{elShc\7ftx]wlwct`595=95\7frne\ahvsqV~c~h}g<5<20>vugnUna}zv_ujqavn;=7;=7}|`g^gntq\7fX|axn\7fe29:1<20>vugnUna}zv_ujqavn;>7;i7}|`g^gntq\7fX|axn\7feQnsrgqp9699k1{~biPelrw}ZrozlycSl}|esv?5;7e3yxdkRkbpu{\pmtb{aUj\7f~k}t=0=5g=wzfmTi`~{y^vkv`uoWhyxi\7fz33?3a?uthoVof|ywPtipfwmYf{zoyx1:11c9svjaXmdz\7fuRzgrdqk[dutm{~793?k;qplcZcjx}sTxe|jsi]bwvcu|5<1<3?m;qplcZcjx}sTxe|jsi]bwvcu|5<5=o5\7frne\ahvsqV~c~h}g_ogdeqc;87;i7}|`g^gntq\7fX|axn\7feQaefcwa9799k1{~biPelrw}ZrozlycSckhaug?6;7e3yxdkRkbpu{\pmtb{aUeijo{e=1=5g=wzfmTi`~{y^vkv`uoWgolmyk34?3a?uthoVof|ywPtipfwmYimnk\7fi1;11e9svjaXmdz\7fuRzgrdqk[kc`i}o7:7>11c9svjaXmdz\7fuRzgrdqk[kc`i}o7:374psmd[cskd890|\7fah_gwohZrozlyc0=0>3:rqkbYa}efTxe|jsi>2:45<x{elSk{cl^vkv`uo4;4:?6~}of]eqijX|axn\7fe2<>018twi`Wo\7fg`Rzgrdqk8186;2zycjQiumn\pmtb{a6>2<;4psmd[cskdV~c~h}g<783:45<x{elSk{cl^vkv`uo4?4:m6~}of]eqijX|axn\7feQnsrgqp9699h1{~biPftno[qnumzbTm~}jru>2:4g<x{elSk{cl^vkv`uoWhyxi\7fz32?3b?uthoVl~`aQ{hsgplZgt{lx\7f0>0>a:rqkbYa}efTxe|jsi]bwvcu|5>5=l5\7frne\bpjkW}byi~fParqfvq:268i0|\7fah_gwohZrozlycSl}|esv?2?699h1{~biPftno[qnumzbTm~}jru>5:4g<x{elSk{cl^vkv`uoWgolmyk30?3b?uthoVl~`aQ{hsgplZhboh~n0<0>a:rqkbYa}efTxe|jsi]mabgsm585=l5\7frne\bpjkW}byi~fPndebp`:468k0|\7fah_gwohZrozlycSckhaug?0;7f3yxdkRhzlm]wlwct`Vdnklzj<4<2g>vugnUmyabPtipfwmYimnk\7fi1850?3b?uthoVl~`aQ{hsgplZhboh~n0;0k;scn[wc`g|~Tic84re]`hn773{nThlzn_bmvjq:768:0~iQkauc\gjsi|5;5==5}d^fbpdYdg|d\7f0?0>0:pg[agsiVidycz33?33?wbXlh~jSnaznu>7:46<zmUomyoPcnwmp939991yhRjnt`]`kphs4?4:>6|k_ecweZeh}g~7;7>1119q`Zbf|hUhcx`{<6<6?wbXmg<0~iQ}su18vvr>3|doi\7fhcov78rdjnl?1|~Rolk79tvZekc8:0{\7fQkauc\gjsi|5:5==5xr^fbpdYdg|d\7f0<0>0:uq[agsiVidycz32?33?rtXlh~jSnaznu>0:46<\7f{UomyoPcnwmp929991|~Rjnt`]`kphs4<4:<6y}_ecweZeh}g~7:3?=;vp\`drfWje~by28:1<24>quWmk\7fmRm`uov?3;3<\7f{Unb;5xr^ppp2=\7fk;|{;=?>;Âɾ¹Ã¸ÐÄÍ´Ì°²Þ·³»g8Õǹ×Ä·ÝηÄγÅÄ\7fCDugc<2JKt<:?:G81>4}T>90:?i4ma;3064>4j3=<58ua12`95>h6;j0?7)?<a;300>{T=o0:?i4ma;3064>4j3=<585k15294?7=9rY=<7?<d;`b>455919i6:965:tW54c=83;1=7?66zQ54?74l3hj6<==191a>21>=2.:>84l2:&g0?27j2h:8=4?:7296?3fsS><6ou>3;05>41=9?0:97?;:0090?4b2;i1>i4r$03e>4273A;9>6*>388113=n9=>1<75f3g;94?=n;oh1<75f15194?=n<931<75f3dd94?=n;ok1<75f3gd94?=n9=81<75f41c94?=n;ji1<7*k6;1`f>hc=3:07d=la;29 a0=;jh0bi;51:9j7f?=83.o:7=lb:lg1?4<3`9h47>5$e497fd<fm?1?65f3b594?"c>39hn6`k5;68?l5d>3:1(i853b`8ja3==21b?n;50;&g2?5dj2do9784;h07f?6=,m<1>9o4ne794>=n:=31<7*k6;07e>hc=3;07d<;8;29 a0=:=k0bi;52:9j611=83.o:7<;a:lg1?5<3`8?:7>5$e4961g<fm?1865f25794?"c>38?m6`k5;78?l43<3:1(i8525c8ja3=>21b>9=50;&g2?43i2do9794;h1f`?6=,m<1?hm4ne794>=n;lh1<7*k6;1fg>hc=3;07d=ja;29 a0=;li0bi;52:9j7`?=83.o:7=jc:lg1?5<3`9n47>5$e497`e<fm?1865f3d594?"c>39no6`k5;78?l5b>3:1(i853da8ja3=>21b?h;50;&g2?5b<2do97>4;h1f7?6=,m<1?h:4ne795>=n;l81<7*k6;1f0>hc=3807d=j1;29 a0=;l>0bi;53:9j7`6=83.o:7=j4:lg1?2<3`9oj7>5$e497`2<fm?1965f3eg94?"c>39n86`k5;48?l5cl3:1(i853ea8ja3=821b?il50;&g2?5ck2do97?4;h1ge?6=,m<1?im4ne796>=n;m31<7*k6;1gg>hc=3907d=k8;29 a0=;mi0bi;54:9j7a1=83.o:7=kc:lg1?3<3`9o:7>5$e497ae<fm?1:65f3e694?"c>39o?6`k5;28?l5c:3:1(i853e18ja3=921b?i?50;&g2?5c;2do97<4;h1g4?6=,m<1?i=4ne797>=n;jl1<7*k6;1g7>hc=3>07d=le;29 a0=;m90bi;55:9j7fb=83.o:7=k3:lg1?0<3`9h87>5$e497f5<fm?1<65f3b094?"c>39h?6`k5;38?l5d93:1(i853b18ja3=:21b?n>50;&g2?5d;2do97=4;h1ab?6=,m<1?n=4ne790>=n;ko1<7*k6;1`7>hc=3?07d=md;29 a0=;j90bi;56:9l56`=831d?kk50;9l603=831d?km50;9l56c=831d?ol50;9l7cb=831d?l?50;9l7ge=831d?i;50;9l65g=83.o:7<?9:lg1?6<3f8;47>5$e4965?<fm?1=65`41:94?"c>3>;;6`k5;28?j27>3:1(i854158ja3=921d8=;50;&g2?27?2do97<4;n630?6=,m<18=94ne797>=h<991<7*k6;633>hc=3>07b:?2;29 a0=<9=0bi;55:9l057=83.o:7:?7:lg1?0<3f>;<7>5$e49051<fm?1;65`24694?"c>38>?6`k5;28?j42:3:1(i852418ja3=921d>8?50;&g2?42;2do97<4;n064?6=,m<1>8=4ne797>=h:=l1<7*k6;067>hc=3>07b<;e;29 a0=:<90bi;55:9l61b=83.o:7<:3:lg1?0<3f8?o7>5$e49605<fm?1;65`3g:94?"c>39m;6`k5;28?j5a>3:1(i853g58ja3=921d?k;50;&g2?5a?2do97<4;n1e0?6=,m<1?k94ne797>=h;o91<7*k6;1e3>hc=3>07b=i2;29 a0=;o=0bi;55:9l7c7=83.o:7=i7:lg1?0<3f9m<7>5$e497c1<fm?1;65m13294??d28?<6<8m{[64>45|l3886<?5118e>`<d28l1>=4>a;3a>4e=9009n7?k:0:95`<5?38j6p*>1g8112=O9;80(9>k:52`?l76?3:17d?>a;29?l74;3:17d??d;29?l7513:17dk7:18'`3<b?2do97>4;hg5>5<#l?0n;6`k5;38?lc2290/h;4j7:lg1?4<3`o?6=4+d78f3>hc=3907dk<:18'`3<b?2do97:4;hg1>5<#l?0n;6`k5;78?lc6290/h;4j7:lg1?0<3`=m6=4+d784a>hc=3:07d9k:18'`3<0m2do97?4;h5`>5<#l?0<i6`k5;08?l1e290/h;48e:lg1?5<3`=j6=4+d784a>hc=3>07d96:18'`3<0m2do97;4;h5;>5<#l?0<i6`k5;48?l10290/h;48e:lg1?1<3`;;57>5$e4955><fm?1<65f11594?"c>3;;46`k5;38?l77>3:1(i8511:8ja3=:21b==;50;&g2?7702do97=4;h330?6=,m<1==64ne790>=n9991<7*k6;33<>hc=3?07d??2;29 a0=9920bi;56:9j557=83.o:7??0:lg1?6<3`lm6=4+d78245=il<0:76gie;29 a0=99:0bi;52:9jba<72-n=6<>?;of6>6=<aoi1<7*k6;334>hc=3>07dhm:18'`3<6891eh84:;:kee?6=,m<1==>4ne792>=nn00;6)j9:g:8ja3=821bj:4?:%f5>c><fm?1=65ff783>!b12o20bi;52:9jb0<72-n=6k64ne797>=nn=0;6)j9:g:8ja3=<21bj>4?:%f5>c><fm?1965ff383>!b12o20bi;56:9jb5<72-n=6hh4ne794>=nml0;6)j9:dd8ja3=921bii4?:%f5>``<fm?1>65feb83>!b12ll0bi;53:9jag<72-n=6hh4ne790>=nmh0;6)j9:dd8ja3==21bi44?:%f5>``<fm?1:65fe183>!b12ml0bi;50:9j``<72-n=6ih4ne795>=nlm0;6)j9:ed8ja3=:21bhn4?:%f5>a`<fm?1?65fdc83>!b12ml0bi;54:9j`d<72-n=6ih4ne791>=nl00;6)j9:ed8ja3=>21d:94?::m57?6=3f>?6=44o7094?=h><0;66a>2983>>ifm3:17b?=1;29?j242900ci<50;9l575=831dn:4?::mg<?6=3fl:6=44o31b>5<#l?09?45ad483?>i5;10;6)j9:31:?kb22810c?=8:18'`3<5;01eh84=;:m173<72-n=6?=6;of6>6=<g;9>6=4+d7817<=il<0?76a=3583>!b12;927cj::498k754290/h;4=389m`0<132e98?4?:%f5>7263gn>6=54o363>5<#l?098<5ad482?>i5;o0;6)j9:362?kb22;10c?=j:18'`3<5<81eh84<;:m17a<72-n=6?:>;of6>1=<g;9h6=4+d78104=il<0>76a=3c83>!b12;>:7cj::798k775290/h;4=109m`0<732e9==4?:%f5>7763gn>6<54o32e>5<#l?09=<5ad481?>i58l0;6)j9:332?kb22:10c?>k:18'`3<5981eh84;;:m14f<72-n=6??>;of6>0=<g;:i6=4+d78154=il<0=76a=1`83>!b12;;27cj::198k77?290/h;4=189m`0<632e9=:4?:%f5>77>3gn>6?54o335>5<#l?09=45ad480?>i59<0;6)j9:33:?kb22=10c??;:18'`3<5901eh84:;:m156<72-n=6??6;of6>3=<g;896=4+d78164=il<0;76a=2183>!b12;8:7cj::098k77a290/h;4=209m`0<532e9=h4?:%f5>7463gn>6>54o33g>5<#l?09><5ad487?>i59j0;6)j9:302?kb22<10c??m:18'`3<5:81eh849;:m41?6=,m<1;95ad483?>i0;3:1(i85759m`0<632e<>7>5$e4931=il<0976a81;29 a0=?=1eh84<;:m44?6=,m<1;95ad487?>i1n3:1(i85759m`0<232e=i7>5$e4931=il<0=76a>3383>!b1289:7cj::198k457290/h;4>309m`0<632e:>k4?:%f5>4563gn>6?54o00f>5<#l?0:?<5ad480?>i6:m0;6)j9:012?kb22=10c<<l:18'`3<6;81eh84:;:m26g<72-n=6<=>;of6>3=<g88j6=4+d78274=il<0<76a=2`83>!b12;827cj::198k74?290/h;4=289m`0<632e9>:4?:%f5>74>3gn>6?54o305>5<#l?09>45ad480?>i5:<0;6)j9:30:?kb22=10c?<;:18'`3<5:01eh84:;:m166<72-n=6?<6;of6>3=<g?n1<7*k6;4`?kb22910c;l50;&g2?0d3gn>6<54o7c94?"c>3<h7cj::398k3?=83.o:78l;of6>6=<g?21<7*k6;4`?kb22=10c;950;&g2?0d3gn>6854o7494?"c>3<h7cj::798k755290/h;4=309m`0<732e9?=4?:%f5>7563gn>6<54o30e>5<#l?09?<5ad481?>i5:l0;6)j9:312?kb22:10c?<k:18'`3<5;81eh84;;:m16f<72-n=6?=>;of6>0=<g;8i6=4+d78174=il<0=76a6a;29 a0=101eh84?;:m:<?6=,m<1545ad482?>i>?3:1(i85989m`0<532e2:7>5$e49=<=il<0876a65;29 a0=101eh84;;:m:0?6=,m<1545ad486?>i>;3:1(i85989m`0<132e2>7>5$e49=<=il<0<76a>1783>!b128;>7cj::198k473290/h;4>149m`0<632e:=>4?:%f5>4723gn>6?54o031>5<#l?0:=85ad480?>i6980;6)j9:036?kb22=10c<??:18'`3<69<1eh84:;:m24c<72-n=6<?:;of6>3=<g8:n6=4+d78250=il<0<76l<a383>1<729q/=<h5b49K574<@89=7E::;h42>5<<am=1<75f4983>>i68h0;66sm3`f94?3=83:p(<?i:c68L4453A;8:6g91;29?l2f2900e8k50;9j0=<722e:<l4?::\7fa52g=8391<7>t$03e>4523A;9>6F>379j1g<722ch<7>5;nf2>5<<uk;8;7>51;294~"69o0i56F>239K560<gk21<75rb06g>5<4290;w)?>f;301>N6:;1C=>84i4`94?=nk90;66ak1;29?xd61o0;694?:1y'54`=kh1C=?<4H015?l3e2900e:850;9j54d=831dh<4?::\7fa5f>=8391<7>t$03e>4523A;9>6F>379j1g<722ch<7>5;nf2>5<<uk;nj7>53;294~"69o0:?85G1308L4513`?i6=44ib294?=hl80;66sm14394?2=83:p(<?i:bc8L4453A;8:6g:b;29?l112900e<?m:188ka7=831vn<=7:182>5<7s-;:j7?=4:J267=O9:<0ci=50;9~f6g1290?6=4?{%32b?d23A;9>6F>379K00=n>80;66gk7;29?l2?2900c<>n:188yg5f<3:197>50z&25c<e>2B:>?5G1248L13<a?;1<75f4`83>>oc?3:17d:7:188k46f2900qo=n7;291?6=8r.:=k4m6:J267=O9:<0D9;4i7394?=n<h0;66gk7;29?l2?2900c<>n:188yg5fm3:197>50z&25c<e<2B:>?5G1248m37=831b8l4?::k6a?6=3`>36=44o02b>5<<uk9jj7>55;294~"69o0i86F>239K560<a?;1<75f4`83>>o2m3:17d:7:188k46f2900qo=ma;297?6=8r.:=k4l5:J267=#jo0jh6F>379jfg<722cio7>5;nf2>5<<uk9i47>53b83>5}]<>0=wl4m:36960<503826p*>1g8204=O9;80enj50;9jg`<722cjj7>5;h`3>5<<a88=6=44i004>5<<a<i1<75f5e83>>o69j0;66g>1e83>>o413:1(i85399m`0<732c8;7>5$e497==il<0:76g<6;29 a0=;11eh84=;:k01?6=,m<1?55ad480?>o4<3:1(i85399m`0<332c8?7>5$e497==il<0>76g<2;29 a0=;11eh849;:k75?6=,m<18=5ad483?>o4n3:1(i85419m`0<632c8i7>5$e4905=il<0976g<d;29 a0=<91eh84<;:k0g?6=,m<18=5ad487?>o4j3:1(i85419m`0<232c8m7>5$e4905=il<0=76g78;29 a0=0>1eh84?;:k;2?6=,m<14:5ad482?>o?=3:1(i85869m`0<532c387>5$e49<2=il<0876g73;29 a0=0>1eh84;;:k;6?6=,m<14:5ad486?>o?93:1(i85869m`0<132c3<7>5$e49<2=il<0<76g61;29 a0=191eh84?;:k;b?6=,m<15=5ad482?>o?m3:1(i85919m`0<532c3h7>5$e49=5=il<0876g7c;29 a0=191eh84;;:k;f?6=,m<15=5ad486?>o?i3:1(i85919m`0<132c357>5$e49=5=il<0<76a>1983>>i6900;66a>0c83>>i68j0;66an3;29 a0=i;1eh84?;:mb5?6=,m<1m?5ad482?>if83:1(i85a39m`0<532e2j7>5$e49e7=il<0876a6e;29 a0=i;1eh84;;:m:`?6=,m<1m?5ad486?>i>k3:1(i85a39m`0<132e2n7>5$e49e7=il<0<76anc;29 a0=ik1eh84?;:mbe?6=,m<1mo5ad482?>if13:1(i85ac9m`0<532ej47>5$e49eg=il<0876an7;29 a0=ik1eh84;;:mb2?6=,m<1mo5ad486?>if=3:1(i85ac9m`0<132ej87>5$e49eg=il<0<76sm3`:94?3=83:p(<?i:c68L4453A;8:6g91;29?l2f2900e8k50;9j0=<722e:<l4?::\7fa7d?=83?1<7>t$03e>g2<@8897E?<6:k55?6=3`>j6=44i4g94?=n<10;66a>0`83>>{e;hk1<7;50;2x 47a2k>0D<<=;I302>o193:17d:n:188m0c=831b854?::m24d<722wi?ll50;794?6|,8;m6o:4H001?M74>2c==7>5;h6b>5<<a<o1<75f4983>>i68h0;66sm3`a94?3=83:p(<?i:c68L4453A;8:6g91;29?l2f2900e8k50;9j0=<722e:<l4?::\7fa5a5=83?1<7>t$03e>g2<@8897E?<6:&ab?6<a?;1<75f4`83>>o2m3:17d:7:188k46f2900qo?k5;291?6=8r.:=k4m4:J267=O9:<0(oh50:k55?6=3`>j6=44i4g94?=n<10;66a>0`83>>{e9jn1<7=50;2x 47a289>7E?=2:J273=n=k0;66gl0;29?jb62900qo?k9;291?6=8r.:=k4m4:J267=O9:<0(oh50:k55?6=3`>j6=44i4g94?=n<10;66a>0`83>>{e9m=1<7;50;2x 47a2k>0D<<=;I302>"en3:0e;?50;9j0d<722c>i7>5;h6;>5<<g8:j6=44}c3`a?6==3:1<v*>1g8a2>N6:;1C=>84$cd96>o193:17d:n:188ma1=831b854?::m24d<722wi=nh50;794?6|,8;m6o:4H001?M74>2.ij7>4i7394?=n<h0;66g:e;29?l2?2900c<>n:188yg7c93:197>50z&25c<e<2B:>?5G1248 g`=82c==7>5;h6b>5<<a<o1<75f4983>>i68h0;66sm1b`94?5=83:p(<?i:016?M75:2B:?;5f5c83>>od83:17bj>:188yg7dk3:187>50z&25c<di2B:>?5G1248m0d=831b;;4?::k25g<722eo=7>5;|`2fa<72;0;6=u+10d9g6=O9;80(oh52:J273=njk0;66ak1;29?xd6jj0;694?:1y'54`=kh1C=?<4H015?l3e2900e:850;9j54d=831dh<4?::\7fa7=7=83?1<7>t$03e>f?<@8897)li:228L4513`hi6=44ica94?=njm0;66gme;29?jb62900qo?l0;290?6=8r.:=k4la:J267=O9:<0e8l50;9j33<722c:=o4?::mg5?6=3th:nk4?:283>5}#98l1=>;4H001?M74>2c>n7>5;ha3>5<<gm;1<75rb0a0>5<3290;w)?>f;ab?M75:2B:?;5f5c83>>o0>3:17d?>b;29?jb62900qo?l2;297?6=8r.:=k4>349K574<@89=7d;m:188mf6=831dh<4?::\7fa5f0=83>1<7>t$03e>fg<@8897E?<6:k6f?6=3`==6=44i03a>5<<gm;1<75rb0a6>5<4290;w)?>f;301>N6:;1C=>84i4`94?=nk90;66ak1;29?xd6k00;694?:1y'54`=kh1C=?<4H015?l3e2900e:850;9j54d=831dh<4?::\7fa5=3=83?1<7>t$03e>g2<@8897E?<6:&ab?6<a?;1<75f4`83>>o2m3:17d:7:188k46f2900qo?77;291?6=8r.:=k4m4:J267=O9:<0(oh50:k55?6=3`>j6=44i4g94?=n<10;66a>0`83>>{e9>l1<7=50;2x 47a289>7E?=2:J273=n=k0;66gl0;29?jb62900qo?7b;291?6=8r.:=k4m4:J267=O9:<0(oh50:k55?6=3`>j6=44i4g94?=n<10;66a>0`83>>{e9131<7;50;2x 47a2k>0D<<=;I302>"en3:0e;?50;9j0d<722c>i7>5;h6;>5<<g8:j6=44}c3;4?6==3:1<v*>1g8a2>N6:;1C=>84$cd96>o193:17d:n:188ma1=831b854?::m24d<722wi=5?50;794?6|,8;m6o:4H001?M74>2.ij7>4i7394?=n<h0;66g:e;29?l2?2900c<>n:188yg7?;3:197>50z&25c<e<2B:>?5G1248 g`=82c==7>5;h6b>5<<a<o1<75f4983>>i68h0;66sm16f94?5=83:p(<?i:016?M75:2B:?;5f5c83>>od83:17bj>:188yg70m3:187>50z&25c<di2B:>?5G1248m0d=831b;;4?::k25g<722eo=7>5;|`22c<72;0;6=u+10d9g6=O9;80(oh52:J273=njk0;66ak1;29?xd6>l0;694?:1y'54`=kh1C=?<4H015?l3e2900e:850;9j54d=831dh<4?::\7fa533=8381<7>t$03e>f5<@8897)li:29K560<akh1<75`d083>>{e9>81<7:50;2x 47a2jk0D<<=;I302>o2j3:17d99:188m47e2900ci?50;9~f41629086=4?{%32b?74=2B:>?5G1248m0d=831bo=4?::mg5?6=3th:;84?:583>5}#98l1ol5G1308L4513`?i6=44i6494?=n98h1<75`d083>>{e9>>1<7=50;2x 47a289>7E?=2:J273=n=k0;66gl0;29?jb62900qo?88;290?6=8r.:=k4la:J267=O9:<0e8l50;9j33<722c:=o4?::mg5?6=3th:;:4?:283>5}#98l1=>;4H001?M74>2c>n7>5;ha3>5<<gm;1<75rb05a>5<3290;w)?>f;ab?M75:2B:?;5f5c83>>o0>3:17d?>b;29?jb62900qo?ia;291?6=8r.:=k4m4:J267=O9:<0(oh50:k55?6=3`>j6=44i4g94?=n<10;66a>0`83>>{e9oi1<7;50;2x 47a2k>0D<<=;I302>"en3:0e;?50;9j0d<722c>i7>5;h6;>5<<g8:j6=44}c3e0?6=;3:1<v*>1g8270=O9;80D<=9;h7a>5<<aj:1<75`d083>>{e:9:1<7;50;2x 47a2k>0D<<=;I302>"en3:0e;?50;9j0d<722c>i7>5;h6;>5<<g8:j6=44}c3ea?6==3:1<v*>1g8a0>N6:;1C=>84$cd94>o193:17d:n:188m0c=831b854?::m24d<722wi=k;50;794?6|,8;m6o:4H001?M74>2.ij7>4i7394?=n<h0;66g:e;29?l2?2900c<>n:188yg7a>3:197>50z&25c<e>2B:>?5G1248 g`=:2c==7>5;h6b>5<<am=1<75f4983>>i68h0;66sm1g:94?3=83:p(<?i:c68L4453A;8:6*mf;28m37=831b8l4?::k6a?6=3`>36=44o02b>5<<uk;m>7>53;294~"69o0:?85G1308L4513`?i6=44ib294?=hl80;66sm1g194?2=83:p(<?i:bc8L4453A;8:6g:b;29?l112900e<?m:188ka7=831vn<k;:181>5<7s-;:j7m<;I316>"en380D<=9;h`a>5<<gm;1<75rb0g0>5<3290;w)?>f;ab?M75:2B:?;5f5c83>>o0>3:17d?>b;29?jb62900qo?m3;296?6=8r.:=k4l3:J267=#jo087E?<6:kaf?6=3fn:6=44}c3f3?6=<3:1<v*>1g8`e>N6:;1C=>84i4`94?=n??0;66g>1c83>>ic93:17pl>e783>6<729q/=<h51278L4453A;8:6g:b;29?le72900ci?50;9~f4cf290?6=4?{%32b?ef3A;9>6F>379j1g<722c<:7>5;h32f?6=3fn:6=44}c3f=?6=;3:1<v*>1g8270=O9;80D<=9;h7a>5<<aj:1<75`d083>>{e9ln1<7:50;2x 47a2jk0D<<=;I302>o2j3:17d99:188m47e2900ci?50;9~f4cd29086=4?{%32b?74=2B:>?5G1248m0d=831bo=4?::mg5?6=3th:j=4?:583>5}#98l1ol5G1308L4513`?i6=44i6494?=n98h1<75`d083>>{e:1>1<7:50;2x 47a2j20D<<=;%`e>77<@89=7dlm:188mge=831bni4?::m`5?6=3th8>44?:283>5}#98l1=>;4H001?M74>2c>n7>5;ha3>5<<gm;1<75rb234>5<4290;w)?>f;301>N6:;1C=>84i4`94?=nk90;66ak1;29?xd4<=0;6>4?:1y'54`=9:?0D<<=;I302>o2j3:17dm?:188ka7=831vn>;j:180>5<7s-;:j7?<5:J267=O9:<0e8l50;9jg5<722eo=7>5;|`20`<72=0;6=u+10d9gd=O9;80D<=9;h7a>5<<a><1<75f10`94?=hl80;66sm15c94?5=83:p(<?i:016?M75:2B:?;5f5c83>>od83:17bj>:188yg41>3:187>50z&25c<e;2B:>?5G1248m37=831b9h4?::k7<?6=3f;;m7>5;|`11c<72=0;6=u+10d9f6=O9;80D<=9;h42>5<<a<o1<75f4983>>i68h0;66sm15`94?2=83:p(<?i:bc8L4453A;8:6g:b;29?l112900e<?m:188ka7=831vn>o?:180>5<7s-;:j7m:;I316>"en3?0D<=9;h`a>5<<aki1<75`d083>>{e;1>1<7;50;2x 47a2j30D<<=;%`e>66<@89=7dlm:188mge=831bni4?::kaa?6=3fn:6=44}c157?6=<3:1<v*>1g8`3>N6:;1/nk48;I302>oej3:17dll:188mgb=831dh<4?::\7fa6g?=83>1<7>t$03e>g5<@8897E?<6:J71>"en3:0e;?50;9j1`<722c?47>5;n33e?6=3th94;4?:583>5}#98l1o55G1308 g`=:81C=>84ic`94?=njj0;66gmd;29?je62900qo=9f;291?6=8r.:=k4l9:J267=#jo09>6F>379jfg<722cio7>5;h`g>5<<ako1<75`d083>>{e9==1<7:50;2x 47a2jk0D<<=;I302>o2j3:17d99:188m47e2900ci?50;9~f42?29096=4?{%32b?e43A;9>6*mf;08L4513`hi6=44oe394?=zj8?<6=4;:183\7f!76n3ij7E?=2:J273=n=k0;66g86;29?l76j3:17bj>:188yg72<3:187>50z&25c<di2B:>?5G1248m0d=831b;;4?::k25g<722eo=7>5;|`225<72<0;6=u+10d9f1=O9;80D<=9;%`e>5=n>80;66g;a;29?l3b2900e9650;9l55g=831vn<;j:186>5<7s-;:j7l;;I316>N6;?1/nk4?;h42>5<<a=k1<75f5d83>>o303:17b??a;29?xd6=j0;684?:1y'54`=j=1C=?<4H015?!da291b:<4?::k7e?6=3`?n6=44i5:94?=h99k1<75rb355>5<3290;w)?>f;`0?M75:2B:?;5f6083>>o2m3:17d:7:188k46f2900qo?:a;291?6=8r.:=k4m4:J267=O9:<0(oh50:k55?6=3`>j6=44i4g94?=n<10;66a>0`83>>{e9<31<7;50;2x 47a2k>0D<<=;I302>"en3:0e;?50;9j0d<722c>i7>5;h6;>5<<g8:j6=44}c36<?6=;3:1<v*>1g8270=O9;80D<=9;h7a>5<<aj:1<75`d083>>{e9?>1<7;50;2x 47a2k>0D<<=;I302>"en3:0e;?50;9j0d<722c>i7>5;h6;>5<<g8:j6=44}c356?6==3:1<v*>1g8a0>N6:;1C=>84$cd94>o193:17d:n:188m0c=831b854?::m24d<722wi>:m50;694?6|,8;m6n64H001?!da2;;0D<=9;h`a>5<<aki1<75fbe83>>id93:17pl=6183>1<729q/=<h5b29K574<@89=7d8>:188m0c=831b854?::m24d<722wi>;?50;694?6|,8;m6o=4H001?M74>2c==7>5;h7f>5<<a=21<75`11c94?=zj;<96=4;:183\7f!76n3h87E?=2:J273=n>80;66g:e;29?l2?2900c<>n:188yg41;3:187>50z&25c<e;2B:>?5G1248m37=831b9h4?::k7<?6=3f;;m7>5;|`121<72=0;6=u+10d9f6=O9;80D<=9;h42>5<<a<o1<75f4983>>i68h0;66sm27794?2=83:p(<?i:c18L4453A;8:6g91;29?l3b2900e9650;9l55g=831vn?;7:187>5<7s-;:j7l<;I316>N6;?1b:<4?::k6a?6=3`>36=44o02b>5<<uk8>57>54;294~"69o0i?6F>239K560<a?;1<75f5d83>>o303:17b??a;29?xd5=h0;694?:1y'54`=j:1C=?<4H015?l062900e8k50;9j0=<722e:<l4?::\7fa60d=83>1<7>t$03e>g5<@8897E?<6:k55?6=3`?n6=44i5:94?=h99k1<75rb37`>5<3290;w)?>f;`0?M75:2B:?;5f6083>>o2m3:17d:7:188k46f2900qo<:d;290?6=8r.:=k4m3:J267=O9:<0e;?50;9j1`<722c?47>5;n33e?6=3th99h4?:583>5}#98l1n>5G1308L4513`<:6=44i4g94?=n<10;66a>0`83>>{e;;o1<7=50;2x 47a2j<0D<<=;%`e>7`<@89=7dlm:188mge=831do<4?::\7fa77b=83>1<7>t$03e>fg<@8897E?<6:k6f?6=3`==6=44i03a>5<<gm;1<75rb20`>5<4290;w)?>f;301>N6:;1C=>84i4`94?=nk90;66ak1;29?xd4;;0;6>4?:1y'54`=k?1C=?<4$cd96c=O9:<0eol50;9jff<722eh=7>5;|`074<72=0;6=u+10d9gd=O9;80D<=9;h7a>5<<a><1<75f10`94?=hl80;66sm32294?5=83:p(<?i:016?M75:2B:?;5f5c83>>od83:17bj>:188yg54>3:1?7>50z&25c<d>2B:>?5+bg81b>N6;?1bno4?::kag?6=3fi:6=44}c101?6=<3:1<v*>1g8`e>N6:;1C=>84i4`94?=n??0;66g>1c83>>ic93:17pl<3583>6<729q/=<h51278L4453A;8:6g:b;29?le72900ci?50;9~f65f29086=4?{%32b?e23A;9>6*mf;0e?M74>2cin7>5;h``>5<<gm;1<75rb21:>5<3290;w)?>f;ab?M75:2B:?;5f5c83>>o0>3:17d?>b;29?jb62900qo=<8;297?6=8r.:=k4>349K574<@89=7d;m:188mf6=831dh<4?::\7fa76`=8391<7>t$03e>f0<@8897)li:3d8L4513`hi6=44ica94?=hk80;66sm32g94?2=83:p(<?i:bc8L4453A;8:6g:b;29?l112900e<?m:188ka7=831vn>=k:180>5<7s-;:j7?<5:J267=O9:<0e8l50;9jg5<722eo=7>5;|`006<72:0;6=u+10d9g3=O9;80(oh52g9K560<akh1<75fbb83>>id93:17pl<4383>1<729q/=<h5c`9K574<@89=7d;m:188m20=831b=<l50;9l`4<722wi?9?50;194?6|,8;m6<=:;I316>N6;?1b9o4?::k`4?6=3fn:6=44}c171?6=;3:1<v*>1g8`2>N6:;1/nk4=f:J273=njk0;66gmc;29?je62900qo<88;290?6=8r.:=k4l7:J267=#jo0?56F>379jfg<722cio7>5;h`g>5<<gm;1<75rb26:>5<4290;w)?>f;a5?M75:2.ij7<i;I302>oej3:17dll:188kf7=831vn>:7:187>5<7s-;:j7mn;I316>N6;?1b9o4?::k42?6=3`;:n7>5;nf2>5<<uk9?;7>53;294~"69o0:?85G1308L4513`?i6=44ib294?=hl80;66sm35f94?5=83:p(<?i:b48L4453-hm6?h4H015?lde2900eom50;9lg4<722wi?9m50;694?6|,8;m6no4H001?M74>2c>n7>5;h55>5<<a8;i6=44oe394?=zj:>i6=4<:183\7f!76n3;896F>239K560<a<h1<75fc183>>ic93:17pl<5083>6<729q/=<h5c79K574<,kl1>k5G1248mgd=831bnn4?::m`5?6=3th89=4?:583>5}#98l1ol5G1308L4513`?i6=44i6494?=n98h1<75`d083>>{e;=l1<7=50;2x 47a289>7E?=2:J273=n=k0;66gl0;29?jb62900qo=:5;297?6=8r.:=k4l6:J267=#jo09j6F>379jfg<722cio7>5;na2>5<<uk9>87>54;294~"69o0hm6F>239K560<a<h1<75f7783>>o69k0;66ak1;29?xd4=:0;6>4?:1y'54`=9:?0D<<=;I302>o2j3:17dm?:188ka7=831vn>;6:180>5<7s-;:j7m9;I316>"en38m7E?<6:kaf?6=3`hh6=44ob394?=zj:?36=4;:183\7f!76n3ij7E?=2:J273=n=k0;66g86;29?l76j3:17bj>:188yg52?3:1?7>50z&25c<6;<1C=?<4H015?l3e2900en>50;9l`4<722wi?8j50;194?6|,8;m6n84H001?!da2;l0D<=9;h`a>5<<aki1<75`c083>>{e;<i1<7:50;2x 47a2jk0D<<=;I302>o2j3:17d99:188m47e2900ci?50;9~f63e29086=4?{%32b?74=2B:>?5G1248m0d=831bo=4?::mg5?6=3th89k4?:283>5}#98l1o;5G1308 g`=:o1C=>84ic`94?=njj0;66al1;29?xd5?l0;694?:1y'54`=k11C=?<4$cd964=O9:<0eol50;9jff<722cih7>5;na2>5<<uk9;57>52;294~"69o0h86F>239'fc<53A;8:6gmb;29?je62900qo=?8;290?6=8r.:=k4la:J267=O9:<0e8l50;9j33<722c:=o4?::mg5?6=3th9<<4?:383>5}#98l1o>5G1308 g`=;2B:?;5fbc83>>ic93:17pl<0b83>1<729q/=<h5c`9K574<@89=7d;m:188m20=831b=<l50;9l`4<722wi?=l50;194?6|,8;m6<=:;I316>N6;?1b9o4?::k`4?6=3fn:6=44}c13b?6=<3:1<v*>1g8`e>N6:;1C=>84i4`94?=n??0;66g>1c83>>ic93:17pl<0d83>6<729q/=<h51278L4453A;8:6g:b;29?le72900ci?50;9~f675290?6=4?{%32b?ef3A;9>6F>379j1g<722c<:7>5;h32f?6=3fn:6=44}c125?6=;3:1<v*>1g8270=O9;80D<=9;h7a>5<<aj:1<75`d083>>{e;8?1<7:50;2x 47a2jk0D<<=;I302>o2j3:17d99:188m47e2900ci?50;9~f67329086=4?{%32b?74=2B:>?5G1248m0d=831bo=4?::mg5?6=3th8=54?:583>5}#98l1ol5G1308L4513`?i6=44i6494?=n98h1<75`d083>>{e;8h1<7<50;2x 47a2j>0D<<=;%`e>7=O9:<0eol50;9lg4<722wi?<o50;694?6|,8;m6no4H001?M74>2c>n7>5;h55>5<<a8;i6=44oe394?=zj:286=4::183\7f!76n3i27E?=2:&ab?573A;8:6gmb;29?ldd2900eoj50;9jf`<722eo=7>5;|`05`<72=0;6=u+10d9gd=O9;80D<=9;h7a>5<<a><1<75f10`94?=hl80;66sm30f94?5=83:p(<?i:016?M75:2B:?;5f5c83>>od83:17bj>:188yg5593:187>50z&25c<di2B:>?5G1248m0d=831b;;4?::k25g<722eo=7>5;|`065<72:0;6=u+10d9563<@8897E?<6:k6f?6=3`i;6=44oe394?=zj:8?6=4;:183\7f!76n3ij7E?=2:J273=n=k0;66g86;29?l76j3:17bj>:188yg55;3:1?7>50z&25c<6;<1C=?<4H015?l3e2900en>50;9l`4<722wi??950;694?6|,8;m6no4H001?M74>2c>n7>5;h55>5<<a8;i6=44oe394?=zj:8=6=4<:183\7f!76n3;896F>239K560<a<h1<75fc183>>ic93:17pl<2`83>1<729q/=<h5c`9K574<@89=7d;m:188m20=831b=<l50;9l`4<722wi>5>50;694?6|,8;m6n64H001?!da2;;0D<=9;h`a>5<<aki1<75fbe83>>id93:17pl=8383>1<729q/=<h5c99K574<,kl1><5G1248mgd=831bnn4?::ka`?6=3fi:6=44}c15e?6=<3:1<v*>1g8a1>N6:;1C=>84i7394?=nl>0;66g;8;29?j77i3:17pl>5783>6<729q/=<h51278L4453A;8:6g:b;29?le72900ci?50;9~f60?290>6=4?{%32b?d33A;9>6F>379j24<722c?m7>5;h7f>5<<a=21<75`11c94?=zj:<26=4;:183\7f!76n3h87E?=2:J273=n>80;66g:e;29?l2?2900c<>n:188yg72;3:1?7>50z&25c<6;<1C=?<4H015?l3e2900en>50;9l`4<722wi?;;50;794?6|,8;m6n74H001?!da2=80D<=9;h`a>5<<aki1<75fbe83>>oem3:17bj>:188yg5193:187>50z&25c<d?2B:>?5+bg8a5>N6;?1bno4?::kag?6=3`ho6=44oe394?=zj:<=6=4;:183\7f!76n3i<7E?=2:&ab?2>3A;8:6gmb;29?ldd2900eoj50;9l`4<722wi?;950;794?6|,8;m6n74H001?!da2?1C=>84ic`94?=njj0;66gmd;29?ldb2900ci?50;9~f7dd290?6=4?{%32b?d43A;9>6F>379K00=#jo0;7d8>:188m0c=831b854?::m24d<722wi>i950;794?6|,8;m6n74H001?!da201C=>84ic`94?=njj0;66gmd;29?ldb2900ci?50;9~f7?e290?6=4?{%32b?e03A;9>6*mf;12?M74>2cin7>5;h``>5<<akn1<75`d083>>{e:m21<7;50;2x 47a2j30D<<=;%`e><=O9:<0eol50;9jff<722cih7>5;h`f>5<<gm;1<75rb3`b>5<3290;w)?>f;`0?M75:2B:?;5G449'fc<73`<:6=44i4g94?=n<10;66a>0`83>>{e:m81<7=50;2x 47a2j?0D<<=;%`e>==O9:<0eol50;9jff<722eo=7>5;|`1fg<72=0;6=u+10d9f6=O9;80D<=9;I66?!da291b:<4?::k6a?6=3`>36=44o02b>5<<uk8<m7>54;294~"69o0h46F>239'fc<63A;8:6gmb;29?ldd2900eoj50;9lg4<722wi>nm50;194?6|,8;m6n;4H001?!da211C=>84ic`94?=njj0;66ak1;29?xd5l<0;6>4?:1y'54`=k<1C=?<4$cd9<>N6;?1bno4?::kag?6=3fn:6=44}c0``?6=;3:1<v*>1g8`1>N6:;1/nk47;I302>oej3:17dll:188ka7=831vn?mj:180>5<7s-;:j7m:;I316>"en320D<=9;h`a>5<<aki1<75`d083>>{e:jl1<7=50;2x 47a2j?0D<<=;%`e>==O9:<0eol50;9jff<722eo=7>5;|`1`5<72:0;6=u+10d9g0=O9;80(oh58:J273=njk0;66gmc;29?jb62900qo<k1;297?6=8r.:=k4l5:J267=#jo037E?<6:kaf?6=3`hh6=44oe394?=zj;nm6=4;:183\7f!76n3h87E?=2:J273=O<<1/nk4?;h42>5<<a<o1<75f4983>>i68h0;66sm31494?2=83:p(<?i:c18L4453A;8:6*mf;28m37=831b9h4?::k7<?6=3f;;m7>5;|`1b=<72=0;6=u+10d9f6=O9;80D<=9;I66?!da291b:<4?::k6a?6=3`>36=44o02b>5<<uk8o57>54;294~"69o0i?6F>239K560<@=?0(oh50:k55?6=3`?n6=44i5:94?=h99k1<75rb3fb>5<3290;w)?>f;`0?M75:2B:?;5G449'fc<73`<:6=44i4g94?=n<10;66a>0`83>>{e:mh1<7:50;2x 47a2k90D<<=;I302>N3=2.ij7>4i7394?=n=l0;66g;8;29?j77i3:17pl=db83>1<729q/=<h5b29K574<@89=7E::;%`e>5=n>80;66g:e;29?l2?2900c<>n:188yg4cl3:187>50z&25c<e;2B:>?5G1248L13<,kl1<6g91;29?l3b2900e9650;9l55g=831vn?jj:187>5<7s-;:j7l<;I316>N6;?1C885+bg83?l062900e8k50;9j0=<722e:<l4?::\7fa756=83>1<7>t$03e>g5<@8897E?<6:&ab?6<a?;1<75f5d83>>o303:17b??a;29?xd4880;694?:1y'54`=j:1C=?<4H015?!da291b:<4?::k6a?6=3`>36=44o02b>5<<uk9;>7>54;294~"69o0i?6F>239K560<,kl1<6g91;29?l3b2900e9650;9l55g=831vn>><:187>5<7s-;:j7l<;I316>N6;?1/nk4?;h42>5<<a<o1<75f4983>>i68h0;66sm31694?2=83:p(<?i:c18L4453A;8:6*mf;28m37=831b9h4?::k7<?6=3f;;m7>5;|`040<72=0;6=u+10d9f6=O9;80D<=9;%`e>5=n>80;66g:e;29?l2?2900c<>n:188yg4a:3:187>50z&25c<e;2B:>?5G1248L13<,kl1<6g91;29?l3b2900e9650;9l55g=831vn?h<:187>5<7s-;:j7l<;I316>N6;?1C885+bg83?l062900e8k50;9j0=<722e:<l4?::\7fa6c2=83>1<7>t$03e>g5<@8897E?<6:J71>"en3:0e;?50;9j1`<722c?47>5;n33e?6=3th9j84?:583>5}#98l1n>5G1308L4513A>>7)li:19j24<722c>i7>5;h6;>5<<g8:j6=44}c0e2?6=<3:1<v*>1g8a7>N6:;1C=>84H578 g`=82c==7>5;h7f>5<<a=21<75`11c94?=zj;l<6=4;:183\7f!76n3h87E?=2:J273=O<<1/nk4?;h42>5<<a<o1<75f4983>>i68h0;66sm2e194?2=83:p(<?i:b58L4453-hm6>?4H015?lde2900eom50;9jfa<722eo=7>5;|`03d<72<0;6=u+10d9g<=O9;80(oh5479K560<akh1<75fbb83>>oel3:17dlj:188ka7=831vn?7k:186>5<7s-;:j7m6;I316>"en330D<=9;h`a>5<<aki1<75fbe83>>oem3:17bj>:188yg4>03:187>50z&25c<d?2B:>?5+bg805>N6;?1bno4?::kag?6=3`ho6=44oe394?=zj;3<6=4<:183\7f!76n3i>7E?=2:&ab?><@89=7dlm:188mge=831dh<4?::\7fa6<e=83?1<7>t$03e>f?<@8897)li:89K560<akh1<75fbb83>>oel3:17dlj:188ka7=831vn?j9:187>5<7s-;:j7m8;I316>"en39:7E?<6:kaf?6=3`hh6=44icf94?=hl80;66sm28394?5=83:p(<?i:b78L4453-hm655G1248mgd=831bnn4?::mg5?6=3th95l4?:283>5}#98l1o85G1308 g`=02B:?;5fbc83>>oek3:17bj>:188yg4>:3:1?7>50z&25c<d=2B:>?5+bg8;?M74>2cin7>5;h``>5<<gm;1<75rb3;0>5<4290;w)?>f;a6?M75:2.ij764H015?lde2900eom50;9l`4<722wi>4:50;194?6|,8;m6n;4H001?!da211C=>84ic`94?=njj0;66ak1;29?xd51<0;6>4?:1y'54`=k<1C=?<4$cd9<>N6;?1bno4?::kag?6=3fn:6=44}c0:2?6=;3:1<v*>1g8`1>N6:;1/nk47;I302>oej3:17dll:188ka7=831vn?o;:187>5<7s-;:j7l<;I316>N6;?1C885+bg83?l062900e8k50;9j0=<722e:<l4?::\7fa6fd=83>1<7>t$03e>g5<@8897E?<6:&ab?6<a?;1<75f5d83>>o303:17b??a;29?xd5jm0;694?:1y'54`=j:1C=?<4H015?M223-hm6=5f6083>>o2m3:17d:7:188k46f2900qo<6e;290?6=8r.:=k4m3:J267=O9:<0D9;4$cd94>o193:17d;j:188m1>=831d==o50;9~f7?a290?6=4?{%32b?d43A;9>6F>379K00=#jo0;7d8>:188m0c=831b854?::m24d<722wi>l>50;694?6|,8;m6o=4H001?M74>2B?96*mf;28m37=831b9h4?::k7<?6=3f;;m7>5;|`1e4<72=0;6=u+10d9f6=O9;80D<=9;I66?!da291b:<4?::k6a?6=3`>36=44o02b>5<<uk8j>7>54;294~"69o0i?6F>239K560<@=?0(oh50:k55?6=3`?n6=44i5:94?=h99k1<75rb3c0>5<3290;w)?>f;`0?M75:2B:?;5G449'fc<73`<:6=44i4g94?=n<10;66a>0`83>>{e:j?1<7:50;2x 47a2k90D<<=;I302>"en3:0e;?50;9j1`<722c?47>5;n33e?6=3th9o;4?:583>5}#98l1n>5G1308L4513-hm6=5f6083>>o2m3:17d:7:188k46f2900qo<l7;290?6=8r.:=k4m3:J267=O9:<0(oh50:k55?6=3`?n6=44i5:94?=h99k1<75rb3a;>5<3290;w)?>f;`0?M75:2B:?;5+bg83?l062900e8k50;9j0=<722e:<l4?::\7fa6f?=83>1<7>t$03e>g5<@8897E?<6:&ab?6<a?;1<75f5d83>>o303:17b??a;29?xd5kh0;694?:1y'54`=j:1C=?<4H015?!da291b:<4?::k6a?6=3`>36=44o02b>5<<uk8i;7>54;294~"69o0i?6F>239K560<@=?0(oh50:k55?6=3`?n6=44i5:94?=h99k1<75rb3`;>5<3290;w)?>f;`0?M75:2B:?;5G449'fc<73`<:6=44i4g94?=n<10;66a>0`83>>{e9<:1<7=50;2x 47a289>7E?=2:J273=n=k0;66gl0;29?jb62900qo?6b;297?6=8r.:=k4>349K574<@89=7d;m:188mf6=831dh<4?::\7fa73e=83>1<7>t$03e>f1<@8897)li:c08L4513`hi6=44ica94?=njm0;66ak1;29?xd6j80;6?4?:1y'54`=k:1C=?<4$cd97>N6;?1bno4?::mg5?6=3th:5n4?:583>5}#98l1ol5G1308L4513`?i6=44i6494?=n98h1<75`d083>>{e;?n1<7:50;2x 47a2k?0D<<=;I302>"en380e;?50;9j`2<722c?47>5;n33e?6=3th8;>4?:483>5}#98l1o45G1308 g`=:;1C=>84ic`94?=njj0;66gmd;29?ldb2900ci?50;9~f4??29086=4?{%32b?74=2B:>?5G1248m0d=831bo=4?::mg5?6=3th84?4?:483>5}#98l1o45G1308 g`=:;1C=>84ic`94?=njj0;66gmd;29?ldb2900ci?50;9~f61e290?6=4?{%32b?d23A;9>6F>379'fc<53`<:6=44ie594?=n<10;66a>0`83>>{e;1?1<7=50;2x 47a2j?0D<<=;%`e>7`<@89=7dlm:188mge=831dh<4?::\7fa7=6=8391<7>t$03e>f3<@8897)li:3d8L4513`hi6=44ica94?=hl80;66sm18;94?2=83:p(<?i:bc8L4453A;8:6g:b;29?l112900e<?m:188ka7=831vn>9;:186>5<7s-;:j7m6;I316>"en39;7E?<6:kaf?6=3`hh6=44icf94?=njl0;66ak1;29?xd61l0;6>4?:1y'54`=9:?0D<<=;I302>o2j3:17dm?:188ka7=831vn<o>:180>5<7s-;:j7?<5:J267=O9:<0e8l50;9jg5<722eo=7>5;|`2e1<72:0;6=u+10d9563<@8897E?<6:k6f?6=3`i;6=44oe394?=zj8h;6=4::183\7f!76n3h?7E?=2:J273=#jo0;7d8>:188m1g=831b9h4?::k7<?6=3f;;m7>5;|`2f7<72<0;6=u+10d9f1=O9;80D<=9;%`e>5=n>80;66g;a;29?l3b2900e9650;9l55g=831vn<o9:180>5<7s-;:j7?<5:J267=O9:<0e8l50;9jg5<722eo=7>5;|`2e2<72<0;6=u+10d9f1=O9;80D<=9;%`e>5=n>80;66g;a;29?l3b2900e9650;9l55g=831vn<o7:186>5<7s-;:j7l;;I316>N6;?1/nk4?;h42>5<<a=k1<75f5d83>>o303:17b??a;29?xd6ih0;684?:1y'54`=j=1C=?<4H015?!da291b:<4?::k7e?6=3`?n6=44i5:94?=h99k1<75rb0c`>5<2290;w)?>f;`7?M75:2B:?;5+bg83?l062900e9o50;9j1`<722c?47>5;n33e?6=3th:mh4?:483>5}#98l1n95G1308L4513-hm6=5f6083>>o3i3:17d;j:188m1>=831d==o50;9~f4g5290?6=4?{%32b?ef3A;9>6F>379j1g<722c<:7>5;h32f?6=3fn:6=44}c3b1?6=<3:1<v*>1g8`e>N6:;1C=>84i4`94?=n??0;66g>1c83>>ic93:17pl>9783>7<729q/=<h5c29K574<,kl1>6F>379jfg<722eo=7>5;|`2=0<72=0;6=u+10d9gd=O9;80D<=9;h7a>5<<a><1<75f10`94?=hl80;66sm37g94?3=83:p(<?i:b;8L4453-hm6>>4H015?lde2900eom50;9jfa<722cii7>5;nf2>5<<uk9<=7>55;294~"69o0h56F>239'fc<482B:?;5fbc83>>oek3:17dlk:188mgc=831dh<4?::\7fa720=8391<7>t$03e>f3<@8897)li:3d8L4513`hi6=44ica94?=hl80;66sm36g94?3=83:p(<?i:b;8L4453-hm6>>4H015?lde2900eom50;9jfa<722cii7>5;nf2>5<<uk;3o7>52;294~"69o0h?6F>239'fc<43A;8:6gmb;29?jb62900qo=8d;291?6=8r.:=k4l9:J267=#jo09>6F>379jfg<722cio7>5;h`g>5<<ako1<75`d083>>{e;>i1<7;50;2x 47a2j30D<<=;%`e>66<@89=7dlm:188mge=831bni4?::kaa?6=3fn:6=44}c144?6==3:1<v*>1g8`=>N6:;1/nk4<0:J273=njk0;66gmc;29?ldc2900eok50;9l`4<722wi=io50;094?6|,8;m6n=4H001?!da2:1C=>84ic`94?=hl80;66sm36d94?3=83:p(<?i:b;8L4453-hm6>>4H015?lde2900eom50;9jfa<722cii7>5;nf2>5<<uk9<>7>55;294~"69o0h56F>239'fc<482B:?;5fbc83>>oek3:17dlk:188mgc=831dh<4?::\7fa723=83?1<7>t$03e>f?<@8897)li:228L4513`hi6=44ica94?=njm0;66gme;29?jb62900qo?nd;296?6=8r.:=k4l3:J267=#jo087E?<6:kaf?6=3fn:6=44}c36b?6=:3:1<v*>1g8`7>N6:;1/nk4<;I302>oej3:17bj>:188yg7c03:1>7>50z&25c<d;2B:>?5+bg80?M74>2cin7>5;nf2>5<<uk;o<7>52;294~"69o0h?6F>239'fc<43A;8:6gmb;29?jb62900qo?k2;296?6=8r.:=k4l3:J267=#jo087E?<6:kaf?6=3fn:6=44}c3g0?6=:3:1<v*>1g8`7>N6:;1/nk4<;I302>oej3:17bj>:188yg7c>3:1>7>50z&25c<d;2B:>?5+bg80?M74>2cin7>5;nf2>5<<uk;3m7>52;294~"69o0h?6F>239'fc<43A;8:6gmb;29?jb62900qo?72;296?6=8r.:=k4l3:J267=#jo087E?<6:kaf?6=3fn:6=44}c3;0?6=:3:1<v*>1g8`7>N6:;1/nk4<;I302>oej3:17bj>:188yg7?>3:1>7>50z&25c<d;2B:>?5+bg80?M74>2cin7>5;nf2>5<<uk;347>52;294~"69o0h?6F>239'fc<43A;8:6gmb;29?jb62900qo?if;296?6=8r.:=k4l3:J267=#jo087E?<6:kaf?6=3fn:6=44}c3e3?6=:3:1<v*>1g8`7>N6:;1/nk4<;I302>oej3:17bj>:188yg7a13:1>7>50z&25c<d;2B:>?5+bg80?M74>2cin7>5;nf2>5<<uk;mn7>52;294~"69o0h?6F>239'fc<43A;8:6gmb;29?jb62900qo?id;296?6=8r.:=k4l3:J267=#jo087E?<6:kaf?6=3fn:6=44}c36`?6=:3:1<v*>1g8`7>N6:;1/nk4<;I302>oej3:17bj>:188yg72j3:1>7>50z&25c<d;2B:>?5+bg80?M74>2cin7>5;nf2>5<<uk;=?7>52;294~"69o0h?6F>239'fc<43A;8:6gmb;29?jb62900qo?91;296?6=8r.:=k4l3:J267=#jo087E?<6:kaf?6=3fn:6=44}c10f?6=;3:1<v*>1g8`2>N6:;1/nk4=f:J273=njk0;66gmc;29?je62900qo=67;296?6=8r.:=k4l4:J267=#jo087E?<6:kaf?6=3fi:6=44}c1:=?6=:3:1<v*>1g8`0>N6:;1/nk4<;I302>oej3:17bm>:188yg5>j3:1>7>50z&25c<d<2B:>?5+bg80?M74>2cin7>5;na2>5<<uk92h7>52;294~"69o0h86F>239'fc<43A;8:6gmb;29?je62900qo=6f;296?6=8r.:=k4l4:J267=#jo087E?<6:kaf?6=3fi:6=44}c1;f?6=:3:1<v*>1g8`0>N6:;1/nk4<;I302>oej3:17bm>:188yg5?l3:1>7>50z&25c<d<2B:>?5+bg80?M74>2cin7>5;na2>5<<uk93j7>52;294~"69o0h86F>239'fc<43A;8:6gmb;29?je62900qo=61;296?6=8r.:=k4l4:J267=#jo087E?<6:kaf?6=3fi:6=44}c1:7?6=:3:1<v*>1g8`0>N6:;1/nk4<;I302>oej3:17bm>:188yg7fj3:1>7>50z&25c<d;2B:>?5+bg80?M74>2cin7>5;nf2>5<<uk;j57>52;294~"69o0h?6F>239'fc<43A;8:6gmb;29?jb62900qo?nf;296?6=8r.:=k4l3:J267=#jo087E?<6:kaf?6=3fn:6=44}r47>5<6;rT=863<b`8af>;60<0?m63>8687e>;60k0?m63>8887e>;6090?m63>8087e>;60:0?m63>6187e>;6=l0?m63>5b87e>;6=h0?m63>5887e>;6>=0?m63>6387e>;4>10==63<668g5>;4>j0in6s|b683>0}Y>:1Un:523`29fg=:;>k1nn5236`955g<uz3j6=4={_;b?85fn3;;m6s|10594?0|V8;<70=93;`g?851=3hn70=91;`a?851>3ho70=97;``?xu61h0;6>u218d91g=:90i1h<5218g91g=z{::j6=4<{<13g?b6349;j7;m;<13a?3e3ty:n44?:3y>5g4=>816=l85d09~w74f290?wS<=a:?2`<<68h16=io5bc9>72`=jl1v\7f<78:180\7f87>j3?i70?6c;7a?87>13n:7p}<a483>60|5:k=6<>n;<1b3?2f349i47?>c:?2`6<2m27:h84:e:?2`<<2m27:h:4:e:?2g`<c?27:ok4:e:?2`4<2m27:jl4:e:?2bf<2m279<=4:e:?2b`<2m27:j84:e:?2b3<c?27:j54:e:?123<2m279;;4:e:?125<2m279:<4:e:?127<2m279:>4:e:?121<2m279:84:e:?1b=<2m279j?4:e:?1b6<2m279j94:e:?1b0<2m279j;4:e:?1b2<2m279m94:e:?1gg<2m2795h4:e:?1=c<2m279m=4:e:?1e4<2m279m?4:e:?1e6<2m279o84:e:?1g3<2m279o:4:e:?1g=<2m279o44:e:?1gd<2m278;o4k7:?2f5<2m27:n?4:e:?2e2<2m27:m54:e:?2ed<2m27:mn4:e:?2e`<2m2wx=8;50;0x94302m;01<;7:4`8yv76i3:19vP>1`9>7d4=l>16?l85d69>7d2=l>16?l95d69~w34=83>pR;<4=246>gb<5:<<6ol4=24g>46f3ty:::4?:3y>51b=l816=8m5609~w33=83;3wS8:;<1a<?75>27:h>4;a:?2`0<3i27:h44;a:?2`2<3i27:oh4;a:?2gc<3i27:h<4;a:?2bd<3i27:jn4;a:?145<3i27:jh4;a:?2b0<3i27:j;4;a:?2b=<3i278m=4k1:?2f5<3i27:n?4;a:?2e2<3i27:m54;a:?2ed<3i27:mn4;a:?2e`<3i2wx>>>50;6xZ7573493=7lj;<3ea?77i27:jk4mb:\7fp530=838p1<:n:e38943f2?;0q~<ia;297~;5l10io63<00824d=::m<1ni5rs010>5<4sW;8?63<a18ag>;4?h0ih6s|23494?2|V;8=70?k3;33e>;4090io63>d58af>{t:;>1<7:t^307?87dn3;;m63<7d8aa>;6l90in6s|11f94?5esW;;h63<a387<>;4im0?463<a587<>;4il0?463<ag87<>;4j10>h63<a987<>;4i00?463<a`87<>;4ik0?463<ab87<>;60<0?463>8687<>;60k0?463>8887<>;6090?463>8087<>;60:0?463=5g87<>;5j00?463>6187<>;6=l0?463>5b87<>;6=h0?463>5887<>;6>=0?463>6387<>;5=10?463=5887<>;5=h0?463=5c87<>;5=j0?463=5e87<>;5=l0?463<6`87<>;4>10?463<6887<>;5jj0?463=b`87<>;5jk0?463=dg87<>;48?0?463=d887<>;5lh0?463=dc87<>;5lj0?463=de87<>;5ll0?463<0187<>;4880?463<0387<>;48:0?463<0587<>;48<0?463=be87<>;5j>0?463=b987<>;4>m0?46s|2dd94?4|5::?6;?4=3d5>46f3ty9>84?:5y]673<58n:6<>n;<14a?dd34;o>7lm;|q:6?6=:rT2>63<a9824d=z{;886=4;{_017>;6kl0:<l521cf9fg=:;>l1nn5rs2c0>5<4jr78m?4>0`9>7db==l16?l:54`9>7dc==l16?lh55d9>7gg=jj16?o6510f896g?2<o01>o6:4g896gf2<o01>om:4g896gd2<o01<6::4g894>02<o01<6m:4g894>>2<o01<6?:e5894>62<o01<6<:4g8973a2<o01?l6:4g894072<o01<;j:4g8943d2<o01<;n:4g8943>2<o01<8;:4g894052<o01?;7:4g8973>2<o01?;n:4g8973e2<o01?;l:4g8973c2<o01?;j:4g8960f2m=01>87:4g8960>2<o01?ll:4g897df2<o01?lm:4g897ba2<o01>>9:4g897b>2<o01?jn:4g897be2<o01?jl:4g897bc2<o01?jj:4g896672<o01>>>:4g896652<o01>><:4g896632<o01>>::4g897dc2<o01?l8:4g897d?2<o01>8k:e58yv7113:1>v3>61855>;6=:0o=6s|23594?2|V;8<70?k5;33e>;4?j0ii63>d78af>{t1<0;6?uQ949>7dd=99k0q~<jc;296~;4880==63=f2824d=z{8826=4<7z\26<=:;h<185523`590==:;k219n521e190==:9m?185521e;90==:9m=185521bg90==:9jl185521e390==:9ok185521ga90==::9:185521gg90==:9o?185521g490==:9o21855227490==::><1855227290==::?;1855227090==::?91855227690==::??185522g:90==::o8185522g190==::o>185522g790==::o<185522g590==::h>185522b`90==::0o1855228d90==::h:185522`390==::h8185522`190==::j?185522b490==::j=185522b:90==::j3185522bc90==:;>h185521c290==:9k8185521`590==:9h2185521`c90==:9hi185521`g90==z{;996=4;{_006>;4080io63=01824d=::9;1no5rs8494?4|V0<01>ol:02b?xu5ih0;6?u22ca924=::0;1h<5rs3d`>5<5s48o;7lm;<137?77i2wx5:4?:3y]=2=:;hn1==o4}r;;>5<5sW3370=ne;33e>{t98;1<7<t^032?842j3;;m6s|13g94?4|V88n70<93;33e>{t:h21<7<t=3`b>37<5;386i?4}r0bb?6=:r795:4k1:?1e6<192wx>ok50;0x97?c2kh01?m::02b?xu4>00;6hu22969ff=:;?91nn522949ff=::>i1nn5226:9ff=::>o1nn522929ff=::181nn5237;955g<5:<>6om4=242>ge<5:<=6ol4=244>gb<5;=j6om4}r0f<?6=:r79h84k1:?1`g<192wx>k?50;0x96612?;01?h7:02b?xu5no0;68u22e59f`=::m81nn522ed924=:;9<1==o4=3f0>gb<uz8i97>52z?1ff<68h16>no5609~w44c2909wS?=d:?127<68h1v\7f<>j:181\7f[77m279954>0`9~w4552909wS?<2:?123<68h1v\7f<<l:181\7f[75k279:<4>0`9~w7da2908w0<6b;`g?84>l3hh70<l6;33e>{t9::1<7<t^013?841=3;;m6s|10494?4|V8;=70<:f;33e>{t:j:1<7:t=3;a>gd<5;3o6oj4=3;b>gd<5;i<6<>n;|q26c<72;qU=?h4=347>46f3ty:594?:2y>5<>==k16=4755c9>5<3=l81v\7fnl50;ax945?2m901<ll:648940b2><01<k<:64894202><01><k:4`8964d2<h01>:7:4`896202<h01>>7:648967f2><01<7::648yv5f?3:1>v3<a7855>;4i>0:<l5rs3c`>5<5s48247j>;<0b6?063ty9o94?:4y>6<>=jm16>495bb9>6<e=jl16>l:5609>6fd=99k0q~<n5;296~;51?0o=63=b6855>{t1=0;6?uQ959>7dg=99k0q~<m2;296~;5j00:<l522b5924=z{8;?6=4={_320>;5=l0:<l5rs030>5<5sW;:?63=5e824d=z{8:m6=4={_33b>;5=00:<l5rs3a2>5<5s482o7lm;<0`<?77i2wx=9h50;1x94362m;01<;;:4`894342<h0q~<nb;296~;51m0o=63=9d855>{t9;k1<7<t^00b?840>3;;m6s|34c94?4|5:?n68l4=27`>a7<uz;9n7>52z\26g=::?:1==o4}r326?6=:rT:=?5224a955g<uz;=m7>52z?227<1927:9;4k1:\7fp5<5=839p1<o8:73894?12m;01<7::03a?xu>;3:1>vP63:?0e<<68h1v\7f<??:181\7f[7682799l4>0`9~w7cb2909w0=?3;42?84a=3;;m6s|ad83>7}Yil16?;o511c8yv5bm3:15v3<ae87e>;4il0?m63<ag87e>;4i10?m63<a887e>;4ih0?m63<ac87e>;4ij0?m63<678g5>{tn80;69?t^568Z44?3W;9=6P;3:\g6>X6::1Uh55Qf09>561=j116=4h5779>507=??16?l:5609>7d1=>816?o65ce9>7g>=kl16?o65ag9>7g>=9;=01>l7:83896d?21l01>l7:9g896d?21n01>l7:9a896d?21h01>l7:9c896d?21301<ml:64894dd2<h01<m?:64894e42><01<m9:64894e>2><01<9j:648940b2<h01<9=:64894122><01<97:648941e2><01<h<:64894c42<h01<k8:64894cf2><01<kk:64894`72><01<:j:648942e2><01<:8:4`894302><01<;;:648966?2<h01>>l:648966a2><01>?=:64896722><01>?7:648967f2<h01>?j:64896462><01><;:64896402><01><n:64894?d2><01<76:64894g52><01<o::64894?22<h0q~<<a;291~X5;h16?9;5bc9>6a`=99k01>9>:cg896152ki0q~<<8;292~X5;116?9=5bc9>714=??16>ik511c8960b2ki01>9=:cg8yv44?3:1:vP=369>76`=jk16?>k5779>6ab=99k01>8j:cg896112ki0q~<<6;292~X5;?16?>o5bc9>76?=??16>im511c896132ki01>=m:c`8yv44=3:1:vP=349>760=jk16?>;5779>6ad=99k01>9;:cg896172ki0q~<<4;292~X5;=16?><5bc9>767=??16>io511c896172ko01>9::ca8yv44;3:1:vP=329>77c=jk16??j5779>6a?=99k01>9>:ca896122ko0q~<jd;296~;48;0==63=f5824d=z{;k=6=4={<0:1?b6348i478>;|q2e5<72:q6=l:55c9>5d4=l816=l;55c9~w6032909w0=98;6b?851=3n:7p}<0683>6}:;921h<5231a91g=:;9h19o5rs353>5<5s49>i7m?;<16b?e63ty9:k4?:2y>70b=k816?8m510`8963e2j:0q~=>f;297~;4:80o=63<2586f>;4::0>n6s|27a94?5|5:?:6n?4=273>47e349?j7m?;|q12=<72:q6?9=5c09>714=98h01>:>:b28yv40<3:1?v3<338`5>;4;80:=o523229g5=z{;<j6=4<{<17=?e6349?47?>b:?002<d82wx>;k50;1x963>2j;01>;7:03a?852?3i;7p}:2;296~;40:0o=63<838ag>{t:>?1<7=t=215>f7<5:9>6<?m;<100?e73ty9::4?:2y>76`=k816?>k510`8965c2j:0q~<99;296~;4<=0h<63<448`5>{t:?h1<7=t=26g>f7<5:>h6<?m;<17f?e73ty9:i4?:2y>703=k816?8:510`896342j:0q~==5;297~;4:00>n63<268g5>;4:h0>n6s|26194?5|5:8n6n?4=20g>47e3499o7m?;|q167<72<qU>?<4=2:2>gd<5:?m6om4=3c7>46f349<j7lk;|q165<72<qU>?>4=2:2>gb<5:?o6om4=3c0>46f349<o7lm;|q15c<72<qU><h4=27:>ge<5;k96<>n;<1;1?de349<o7lk;|q15`<72<qU><k4=276>ge<5:286ol4=3c2>46f3493<7lm;|q15a<72<qU><j4=272>ge<5:286oj4=3c3>46f349<i7lm;|q15f<72<qU><m4=2:7>gd<5:>o6om4=3;e>46f349<i7lk;|q15g<72<qU><l4=2:7>gb<5:>26om4=3;f>46f349<j7lm;|q41?6=0rT98?5Q749>7g>=;016=o=5bc9>70`=jk16>nm5bb9>6c>=>816=o<511c8yv142902wS<;0:\47>;4j108;63<5e8af>;4=j0<:63=cb8af>;5km0io63>b08af>;6j90:<l5rs6094??|V;9m7S9=;<1a<?51349>57lm;<16<?11348hh7lm;<0`a?dd34;ji7??a:?2ec<ej2wx;<4?:8y]66c<V>;01>l7:27896322kh01>;;:64897eb2kh01?mi:ca894gd28:j70?nd;`a?xu083:15vP=3e9]35=:;k21?9523439fg=:;<:1;;522bd9fg=::m:1nn521`c955g<58ki6ol4}r4e>5<>sW88o6P9f:?0f=<4;2788i4mb:?00f<0>279h=4mb:?1`4<ek27:m54>0`9>5d?=jk1v\7f;k50;:xZ75e3W<n70=m8;11?85313hi70=;8;55?84c93hi70?n7;33e>;61?0in6s|21g94?2|V;:n70?75;33e>;4?=0in63>878af>{t:8:1<7:t^333?87?13;;m63<738a`>;60h0in6s|2d694?4|5;io6i?4=3d5>37<uz>o6=4={<147?de349<:7j>;|q0e1<72;q6?l<5609>7d2=99k0q~<id;297~;5l>0io63<05824d=::m91no5rs30`>5<3sW89o63>f7824d=:;1>1nn521g59fg=z{;8n6=4;{_01a>;6nh0:<l523919ff=:9oh1no5rs265>5<4s49?47j>;<17g?3e349?n7;m;|q055<72:q6?<<5d09>743==k16?<:55c9~w6272909w0=;4;7a?853:3n:7p}<3b83>6}:;:o1h<5235091g=:;=;19o5rs214>5<4s49857j>;<10a?3e3498h7;m;|q076<72:q6?>;5d09>76?==k16?>655c9~w64a2908w0=<1;f2?854=3?i70=<4;7a?xu1l3:15vP=1`9]2a=:;k218<521779fg=:9?>1==o4=266>ge<5;3:6om4=3`g>37<5:=:6oj4}r4a>5<>sW8:46P9b:?0f=<4n27::?4>0`9>715=jj16>4?5bc9>6<4=jj16?;k5bc9>535=jk1v\7f;o50;;xZ7703W<j70=m8;1f?87183;;m63<3g8ag>;51;0in63=928ag>;4>l0ih63>608af>{t>00;64uQ2048Z3?<5:h36>j4=07f>46f3498m7ll;<0:7?de348287ll;<36b?de3498n7ll;|q5<?6=1rT9=85Q699>7g>=;j16=8m511c896512ki01?7;:c`897?22ki01>9?:c`8943c2kh0q~88:18:\7f[46<2T=;63<b980f>;6=h0:<l523209ff=::0?1no522849ff=:;>:1ni5214`9fg=z{?<1<76t^330?[01349i47=n;<37<?de34;>57??a:?06`<ek2795;4mb:?034<ej2wx??l50;1x964c2m;01>=>:4`896572<h0q~=>c;297~;49l0o=63<2086f>;4:90>n6s|33094?5|5:8?6i?4=204>0d<5:8=68l4}r162?6=;r78954k1:?01f<2j2789o4:b:\7fp704=839p1>;;:e38963?2<h01>;8:4`8yv53m3:1?v3<518g5>;4==0>n63<5286f>{t;=k1<7=t=26`>a7<5:?;68l4=26e>0d<uz89n7>54z\16g=:9o?1==o4=0g7>gd<5:2?6ok4}r01<?6=<rT9>5521e5955g<5:=h6om4=0f;>gd<uz;=47>52z?21`<1927:9=4k1:\7fp644=83>pR??=;<3;f?77i27:4n4mb:?037<ej2wx=l=50;0x94g12<h01<o::e38yv73k3:1?v3>5086f>;6<l0o=63>5186f>{t9<81<7=t=074>0d<58??6i?4=075>0d<uz8;o7>54z\14f=:91;1==o4=256>gd<58296ol4}r35f?6=:r7:954k1:?221<192wx>?j50;6xZ74c34;m47??a:?0<6<em27:j44mb:\7fp51?=839p1<:k:4`8942b2<h01<:m:e38yv73=3:1?v3>46825g=:9=21h<5214;924=z{;:m6=4;{_03b>;60>0:<l523649fg=:9121no5rs32g>5<3sW8;h63>82824d=:;>>1ni521969fg=z{;8m6=4;{_01b>;6nj0:<l523979ff=:9on1no5rs32a>5<3sW8;n63>81824d=:9?l1no523679fa=z{;o86=4={<0`a?b6348m978>;|q1b`<72=q6>i95be9>6a4=jk16?=;511c897b42ki0q~<ja;296~;5l;0o=63=dd855>{t:l31<7<t=3fb>37<5;n=6i?4}r0a2?6=:r79oo491:?1fa<68h1v\7f?l;:181\7f84ej3;;m63=c8855>{t:031<7;t=3;a>ge<5;3o6ok4=3;`>a7<5;3j6om4=3c2>37<uz=m6=4={_5e?85e03237p}8d;296~X0l278n5476:\7fp3f<72;qU;n523c:9<0=z{>h1<7<t^6`896d?21>0q~9n:181\7f[1f349i476<;|q4=?6=:rT<563<b98;6>{t?10;6?uQ799>7g>=081v\7f:950;0xZ21<5:h365>4}r0a5?6=:r79o;491:?1f=<68h1v\7f?ok:181\7f84>i3n:70<n0;42?xu5m>0;6?u22ef924=::m91h<5rs3g6>5<5s48ho7j>;<0e3?063ty8;:4?:3y>73`=l816?;m5be9~w64?2909w0<76;`g?855i3n:7p}=e183>7}::m;1h<522g0924=z{:;26=4<{<12e?b6349:i7;m;<12`?3e3ty94h4?:3y>775=l816>5>5be9~w6?22909w0=;b;f2?85713hi7p}<b083>7}:;k21m8523`;924=z{:h96=4={<1a<?g1349jm78>;|q0f<<72;q6?oo5d09>7g>=j91v\7f>l8:181\7f85fn3<:70=m8;c`?xu4j?0;6?u23`g924=:;k21ml5rs2`7>5<5s49i47o7;<1bg?063ty8n84?:3y>7db=>816?o65a89~w6d42909w0=m8;c4?85fj3<:7p}<b183>7}:;k21m9523`:924=z{8i<6=4<{<3`f?3e34;ho7;m;<3`=?b63ty:o94?:2y>5f>==k16=n85d09>5f?==k1v\7f<m>:180\7f87d;3n:70?l6;7a?87d=3?i7p}>e183>7}:9jn1h<521e;924=z{8hn6=4<{<3`4?b634;h?7;m;<3`6?3e3ty:no4?:2y>5ge=l816=n>55c9>5g`==k1v\7f<ln:180\7f87dm3<:70?md;f2?87ek3;:n6s|1bc94?4|58io68l4=0a`>a7<uz;on7>52z?2gc<1927:nk4k1:\7fp5a`=838p1<j8:73894ee2m;0q~?kc;296~;6l80==63>c38g5>{t9mn1<7<t=0f0>37<58i>6i?4}r3ga?6=:r7:o54k1:?2`0<192wx=;;50;0x94022m;01<;7:b28yv7013:1?v3>7e86f>;6?l0>n63>7c8g5>{t9><1<7=t=05b>0d<58=36i?4=05a>0d<uz;<?7>53z?230<c927:;54:b:?232<2j2wx=4<50;0x941a2m;01<6m:738yv7083:1?v3>738g5>;6?<0>n63>7586f>{t9?n1<7=t=04f>a7<58=968l4=052>0d<uz;=o7>53z?2<5<1927::k4k1:?22`<69k1v\7f<9l:181\7f870n3?i70?8e;f2?xu60m0;6?u2193924=:9>;1h<5rs0;2>5<5s4;3578>;<34`?b63ty:4h4?:3y>5=5=>816=::5d09~w4>a2909w0?75;42?870?3n:7p}>9183>7}:9>k1h<52195924=z{8h86=4={<3a7?b634;j:7m?;|q2a`<72:q6=k<55c9>5c5==k16=k>5d09~w4ce2908w0?jf;7a?87bl3n:70?i0;7a?xu6m10;6>u21dc9`4=:9ln19o521da91g=z{;:<6=4={<3e0?b6348;<78>;|q2a0<72:q6=h95d09>5`g==k16=h755c9~w4c52908w0?j3;f2?87b?3?i70?j6;7a?xu6m80;6>u21g7924=:9l>1h<521d1954d<uz;m=7>52z?2b1<2j27:j>4k1:\7fp654=838p1<h9:73894c12m;0q~<?6;296~;6nl0==63>f38g5>{t:991<7<t=0d;>37<58o26i?4}r030?6=:r7:jl491:?2af<c92wx>=;50;0x94ca2m;01<hl:738yv372909w0=83;`f?850:3n:7p}=7083>6}::?:1:<5231;9g4=:;921=<l4}r0;7?6=:r79494l1:?11`<192wx?;>50;0x960>2?;01>8>:e38yv7e<3:1>v3>998g5>;6i10==6s|26;94?4|5;?26;?4=35b>f7<uz9287>52z?133<192788:4k1:\7fp7<6=838p1>:>:e3896?62kh0q~=92;296~;4>:0o=63<6`855>{t;1i1<7<t=21;>a7<5:2o6ol4}r1;=?6=;r78?=4k1:?05g<ej279;l4md:\7fp72?=838p1>9n:e38961e2?;0q~<k4;291~;5l>0o=63=d98aa>;5l<0io63=db855>;5l?0io6s|37:94?c|5;2?6ol4=240>gd<5;2=6ol4=35`>gd<5;=36ol4=35f>gd<5;2;6ol4=3:1>gd<5:<36<>n;<151?de349==7lk;<152?dd349=;7lj;<04e?de3ty94<4?:3y>60b=>816>5<5c09~w6>b2909w0=<d;f2?85?n3hi7p}=e083>7}::m:1h<522g1924=z{;=m6=4={<06g?063483<7m>;|q0<2<72;q6?:o5bd9>7=4=l81v\7f?9k:181\7f842j3<:70<8e;a2?xu5?k0;6?u226a9g4=::<k1:<5rs3a1>5<4s48247lm;<0:g?dd348h57??a:\7fp6g5=838p1?ln:02b?84d03<:7p}>b683>7}:9h;1h<521`g924=z{;h;6=4={<0`1?06348i;7??a:\7fp7=>=838p1><l:e38971?2kn0q~?m6;296~;61l0o=63>ab855>{t9=<1<7=t=06b>0d<58>i68l4=064>a7<uz83j7>52z?063<c92794?4md:\7fp6f5=83>p1?77:ca897?02kh01?7l:cf897ef28:j7p}<8783>7}:;>k1no5236f9`4=z{8nj6=4={<3``?e734;om7j>;|q1ag<72;q6?=>5609>6c4=99k0q~?m8;296~;6i=0o=63>b1855>{t:l81<7<t=3ae>a7<5;l?6;?4}r77>5<5s493=7j>;<1;6?db3ty8:o4?:3y>73e=l816?;j5609~w7`72909w0=?5;42?84a?3;;m6s|39c94?4|5:9?6i?4=2:a>gd<uz8m57>52z?1`=<ej278<=4>0`9~w7c12909w0<k8;f2?84c13<:7p}<7983>7}:;?i1nn523619`4=z{83o6=4<{<3:b?b634;j=7;m;<3b6?3e3ty9484?:3y>60`=>816>585c09~w4d22909w0?6b;f2?87fi3<:7p}=9183>7}::1>1ni5233;9`4=z{:336=4={<167?b6349257lm;|q1e`<72;q6>4l5d09>6<`=>81v\7f>7l:181\7f852j3n:70=6d;`a?xu41;0;6?u23569`4=:;091no5rs2;5>5<5s49?j7j>;<1:3?de3ty9jo4?:5y>6a>=jm16>i;5bc9>754=99k01?j9:c`8yv5>i3:1>v3<568g5>;41k0in6s|38g94?4|5:?n6i?4=2;e>gd<uz8j57>52z?1fg<192795?4k1:\7fp14<72;q6?5<5bc9>7=3=l81v\7f?98:181\7f84203<:70<88;f2?xu50>0;6?u2273924=:;9h1h<5rs3:;>5<5s48=>78>;<13a?b63ty:n<4?:2y>5g7=l816=l:5c19>5d3=98h0q~<79;296~;5>:0==63<108g5>{t:h=1<7<t=3`:>37<5;3?6i?4}r0;e?6=:r79:9491:?051<c92wx?=j50;1x966a2m;01>?=:4`896762<h0q~=>3;297~;49>0>n63<148g5>;4910>n6s|29`94?4|5:;<6i?4=346>37<uz>n6=4={<147?dd349<87j>;|q053<72;q6>;85609>74>=l81v\7f?6l:181\7f840k3ho70=>d;f2?xu5?;0;6?u230`9g4=:;8k1=<l4}r0;`?6=:r79;h4md:?065<c92wx9;4?:3y>73`=jj16?:>5d09~w0>=838p1>8i:cg8960b2m;0q~;8:181\7f851n3ho70=81;f2?xu213:1>v3<818g5>;4?m0in6s|21394?4|58l?6n>4=322>a7<uz;3o7>52z?23c<d827:4n4k1:\7fp0f<72;q6?:j5bd9>72e=l81v\7f9l50;0x961c2kn01>9i:e38yv3f2909w0=8e;f2?850l3hh7p}:5;296~;4>o0in63<3`8g5>{t=:0;6?u23969`4=:;181ni5rs5d94?4|5:=86oj4=256>a7<uz;jh7>53z?2=c<69k16=4k5c19>5db=l81v\7f<;i:180\7f87293;:n63>518`4>;6=o0o=6s|1e:94?5|58ii6n>4=0a`>47e34;o47j>;|q2`5<72:q6=n>510`894da2j:01<j?:e38yv7c:3:1?v3>c2825g=:9j81o=521e09`4=z{8n?6=4<{<3`2?76j27:o84l0:?2`1<c92wx=i850;1x94e?2j:01<m6:03a?87c>3n:7p}>8`83>6}:9>n1o=5216g954d<582j6i?4}r3;6?6=;r7:;?4>1c9>527=k916=5<5d09~w4>32908w0?85;32f>;6?=0h<63>858g5>{t91<1<7=t=05;>47e34;<;7m?;<3;2?b63ty:454?:2y>52g=k916=:l510`894>?2m;0q~?if;297~;6n;0h<63>f2825g=:9ol1h<5rs0d4>5<4s4;n;7?>b:?2a3<d827:j:4k1:\7fp5c?=839p1<kn:03a?87b13i;70?i9;f2?xu6nk0;6>u21df954d<58oh6n>4=0da>a7<uz;mh7>53z?2ac<d827:j=4>1c9>5cb=l81v\7f<;k:180\7f873l3i;70?;e;32f>;6=m0o=6s|14`94?5|58>j6n>4=06a>47e34;>n7j>;|q226<72:q6=89510`894312j:01<8<:e38yv7193:1?v3>55825g=:9<91o=521739`4=z{ji1<7=t=21:>47e349847m?;<10f?e63ty85:4?:2y>75e=98h01>>m:b2896?02j;0q~=69;297~;48o0:=o5231g9g5=:;031o<5rs2;a>5<4s49:>7?>b:?054<d82785o4l1:\7fp7<b=839p1>?::03a?856<3i;70=6d;a2?xu41o0;6>u23059g5=:;821=<l4=2;e>f7<uz93n7>53z?05`<69k16?<j5c19>7=d=k81v\7f>6k:180\7f85593;:n63<218`4>;40m0h=6s|39d94?5|5:8?6<?m;<117?e73493j7m>;|q0=4<72:q6??9510`896412j:01>7>:b38yv5>;3:1?v3<288`4>;4:h0:=o523819g4=z{8ki6=4<{<3:f?e734;2o7?>b:?2eg<c92wx=l750;1x94??2j:01<76:03a?87f13n:7p}>ag83>6}:9h;1o=521`0954d<58km6i?4}|`272<7280;6=u+10d9f<=O9;80D<=9;n`;>5<<uz9h=7>52z\0g4=:9;:1hi5rs2`g>5<5sW9ih63>218g=>{t;m81<7<t^2f1?87583on7p}<f883>7}Y;o301<<?:034?xu4k;0;6?uQ3b0894472mo0q~?<f;296~X6;o16=?>5459~w6`e2909wS=ib:?265<69h1v\7f>hj:181\7f[5am27:>=4>299~w6b32909wS=k4:?265<a82wx>8;50;0xZ73234;9<7oj;|q0g1<72;qU?n:4=003>`6<uz>;57>52z\74<=:9;:1=>=4}r1eg?6=:rT8jn521329577<uz;8i7>52z\27`=:9;:18>5rs2ge>5<5sW9nj63>21824a=z{:io6=4={_1``>;6:90n56s|3c`94?4|V:hi70?=0;f1?xu4jl0;6?uQ3cg894472mk0q~=k6;296~X4l?16=?>5f39~w6`c2909wS=id:?265<6::1v\7f>o>:181\7f[5f927:>=4m7:\7fp7ge=838pR>ll;<314?b?3ty8oh4?:3y]7fc<588;6ho4}r1eb?6=:rT8jk52132957?<uz9o97>52z\0`0=:9;:1j<5rs2ae>5<5sW9hj63>218ff>{t;m:1<7<t^2f3?87583oh7p}<d683>7}Y;m=01<<?:g18yv5en3:1>vP<bg9>576=lk1v\7f>j7:181\7f[5c027:>=4i4:\7fp7f6=838pR>m?;<314?bd3ty9<54?:2y]65g<V;:370?<7;`;?xu4l80;6?uQ3e3894472ln0q~:?8;296~X38116=?>51208yv27>3:1>vP;079>576=9::0q~:?5;296~X38<16=?>513d8yv27<3:1>vP;059>576=9;o0q~:?3;296~X38:16=?>513f8yv27:3:1>vP;039>576=9;i0q~:?1;296~X38816=?>513`8yv2783:1>vP;019>576=9;k0q~<:4;296~X5==16=?>59`9~w7352909wS<:2:?265<>02wx>8?50;0xZ73634;9<778;|q115<72;qU>8>4=003><0<uz8?j7>52z\10c=:9;:1585rs36f>5<5sW8?i63>218:0>{t:=n1<7<t^36g?87583387p}=4b83>7}Y:=i01<<?:808yv5a03:1>vP<f99>576=98<0q~=i6;296~X4n?16=?>51068yv5a=3:1>vP<f49>576=9890q~=i4;296~X4n=16=?>51008yv5a;3:1>vP<f29>576=98;0q~=i2;296~X4n;16=?>51028yv5a93:1>vP<f09>576=99l0q~=i0;296~X4n916=?>511g8yv5dk3:1>vP<cb9>576=m11v\7f>mn:181\7f[5di27:>=4j6:\7fp7f?=838pR>m6;<314?c23ty8o54?:3y]7f><588;6h:4}r1`3?6=:rT8o:521329a6=z{:i=6=4={_1`2>;6:90n>6s|3b794?4|V:i>70?=0;g2?xu5<k0;6?uQ25`894472>l0q~<;9;296~X5<016=?>57e9~w72?2909wS<;8:?265<0k2wx>9950;0xZ72034;9<79m;|q103<72;qU>984=003>2g<uz8?97>52z\100=:9;:1;45rs367>5<5sW8?863>2184<>{t:=91<7<t^360?87583=<7p}<ee83>7}Y;ln01<<?:02:?xu4mk0;6?uQ3d`8944728:<7p}<e`83>7}Y;lk01<<?:025?xu4m00;6?uQ3d;8944728:>7p}<e983>7}Y;l201<<?:027?xu4m>0;6?uQ3d58944728:87p}<e783>7}Y;l<01<<?:021?xu4m<0;6?uQ3d78944728::7p}<e283>7}Y;l901<<?:gd8yv5b:3:1>vP<e39>576=nl1v\7f>k>:181\7f[5b927:>=4id:\7fp7`6=838pR>k?;<314?`d3ty8hk4?:3y]7a`<588;6kl4}r1ga?6=:rT8hh521329bd=z{:no6=4={_1g`>;6:90m56s|3e`94?4|V:ni70?=0;d4?xu4lh0;6?uQ3ec894472o<0q~=k9;296~X4l016=?>5f49~yk>b<3:1=vF>239~j=c2290:wE?=2:\7fm<`0=83;pD<<=;|l;a2<72;qC=?<4}o:f<?6=9rB:>?5rn9d2>5<>sA;9>6sa8dc94?4|@8897p`7eb83>4}O9;80qc6jd;296~N6:;1vb5kj:182\7fM75:2we4hh50;0xL4453td3j?4?:3yK574<ug2m?7>51zJ267=zf1l>6=4>{I316>{i0o<1<7?tH001?xh?n10;6?uG1308yk>ai3:1=vF>239~j=`e2909wE?=2:\7fm<cb=83;pD<<=;|l;b`<728qC=?<4}o:eb?6=9rB:>?5rn823>5<6sA;9>6sa91394?7|@8897p`60383>4}O9;80qc7?3;295~N6:;1vb4>;:182\7fM75:2we5=;50;0xL4453td2<;4?:3yK574<ug3;;7>52zJ267=zf0:36=4={I316>{i1931<7<tH001?xh>8h0;6?uG1308yk?7j3:1>vF>239~j<6d2909wE?=2:\7fm=5b=838pD<<=;|l:4`<72;qC=?<4}o;3b?6=:rB:>?5rn833>5<5sA;9>6sa90394?4|@8897p`61383>7}O9;80qc7>3;296~N6:;1vb4?;:181\7fM75:2we5<;50;0xL4453td2=;4?:3yK574<ug3:;7>52zJ267=zf0;36=4={I316>{i1831<7<tH001?xh>9h0;6?uG1308yk?6j3:1>vF>239~j<7d2909wE?=2:\7fm=4b=83;pD<<=;|l:5`<728qC=?<4}o;2b?6=9rB:>?5rn803>5<6sA;9>6sa93394?7|@8897p`62383>4}O9;80qc7=3;295~N6:;1vb4<;:181\7fM75:2we5?;50;0xL4453td2>;4?:3yK574<ug39;7>52zJ267=zf0836=4={I316>{i1;31<7<tH001?xh>:h0;6?uG1308yk?5j3:1>vF>239~j<4d290:wE?=2:\7fm=7b=83;pD<<=;|l:6`<728qC=?<4}o;1b?6=9rB:>?5rn813>5<6sA;9>6sa92394?7|@8897p`63383>4}O9;80qc7<3;295~N6:;1vb4=;:182\7fM75:2we5>;50;3xL4453td2?;4?:0yK574<ug38;7>51zJ267=zf0936=4>{I316>{i1:31<7?tH001?xh>;h0;6<uG1308yk?4j3:1=vF>239~j<5d290:wE?=2:\7fm=6b=83;pD<<=;|l432<728qC=?<4}o54f?6=9rB:>?5rn65`>5<6sA;9>6sa76f94?7|@8897p`87d83>4}O9;80qc98f;295~N6:;1vb:6?:182\7fM75:2Bo<6sa79394?7|@8897p`88283>4}O9;80qc974;295~N6:;1vb:6::182\7fM75:2we;5850;3xL4453td<4:4?:0yK574<ug=347>51zJ267=zf>2j6=4>{I316>{i?1h1<7?tH001?xh00m0;6<uG1308La6<ug=3i7>51zJ267=zf>3;6=4>{I316>{i?0;1<7?tH001?Mb73td<5?4?:0yK574<ug=2?7>51zJ267=zf>3>6=4>{I316>Nc82we;4950;3xL4453td<544?:0yK574<ug=2m7>51zJ267=zf>3m6=4>{I316>{i?h:1<7?tH001?xh0i80;6<uG1308yk1f:3:1=vF>239~j2g4290:wE?=2:\7fm3d2=83;pD<<=;If3?xh0i<0;6<uG1308yk1f>3:1=vF>239K`5=zf>ki6=4>{I316>{i?ho1<7?tH001?xh0j90;6<uG1308yk1e93:1=vF>239~j2d5290:wE?=2:Jg4>{i?k91<7?tH001?xh0j=0;6<uG1308yk1e=3:1=vF>239~j2d0290:wE?=2:Jg4>{i?kh1<7?tH001?xh0jj0;6<uG1308yk1el3:1=vF>239~j2da290:wE?=2:\7fm3f4=83;pD<<=;|l4g6<728qC=?<4}o5`2?6=9rB:>?5Gd19~j2e?290:wE?=2:\7fm3fg=83;pD<<=;|l4gg<728qC=?<4}o5`g?6=9rB:>?5rn6ag>5<6sA;9>6sa7bg94?7|@8897p`8cg83>4}O9;80qc9k0;295~N6:;1vb:j>:182\7fM75:2Bo<6sa7e094?7|@8897p`8d283>4}O9;80qc9k4;295~N6:;1vb:j::182\7fM75:2we;i850;3xL4453td<h:4?:0yK574<ug=o47>51zJ267=zf>n26=4>{I316>{i?mk1<7?tH001?xh0lk0;6<uG1308yk1ck3:1=vF>239~j2bc290:wE?=2:\7fm3ac=83;pD<<=;|l4`c<728qC=?<4}o5f4?6=9rB:>?5rn6g2>5<6sA;9>6sa7d094?7|@8897p`8e283>4}O9;80qc9j4;295~N6:;1vb:k::182\7fM75:2we;h850;3xL4453td<i:4?:0yK574<ug=n47>51zJ267=zf>o26=4>{I316>{i?lk1<7?tH001?xh0mk0;6<uG1308yk1bk3:1=vF>239~j2cc290:wE?=2:\7fm3`c=83;pD<<=;|l4ac<728qC=?<4}o5e4?6=9rB:>?5rn6d2>5<6sA;9>6sa7g094?7|@8897p`8f283>4}O9;80qc9i4;295~N6:;1vb:h::182\7fM75:2we;k850;3xL4453td<j:4?:0yK574<ug=m47>51zJ267=Ol91vb:h6:182\7fM75:2we;ko50;3xL4453td<jo4?:0yK574<ug=mo7>51zJ267=zf>lo6=4>{I316>{i?oo1<7?tH001?xh0no0;6<uG1308yk>783:1=vF>239~j=66290:wE?=2:\7fm<54=83;pD<<=;|l;46<728qC=?<4}o:30?6=9rB:>?5rn926>5<6sA;9>6sa81494?7|@8897p`70683>4}O9;80qc6?8;295~N6:;1vb5>6:182\7fM75:2we4=o50;3xL4453td3<o4?:0yK574<ug2;o7>51zJ267=zf1:o6=4>{I316>{i09o1<7?tH001?xh?8o0;6<uG1308yk>683:1=vF>239~j=76290:wE?=2:\7fm<44=83;pD<<=;|l;56<728qC=?<4}o:20?6=9rB:>?5rn936>5<6sA;9>6sa80494?7|@8897p`71683>4}O9;80qc6>8;295~N6:;1vb5?6:182\7fM75:2we4<o50;3xL4453td3=o4?:0yK574<ug2:o7>51zJ267=zf1;o6=4>{I316>{i08o1<7?tH001?xh?9o0;6<uG1308yk>583:1=vF>239~j=46290:wE?=2:\7fm<74=83;pD<<=;|l;66<728qC=?<4}o:10?6=9rB:>?5rn906>5<6sA;9>6Fk0:\7fm<70=83;pD<<=;If3?xh?:>0;6<uG1308yk>483:1=vF>239K`5=zf19:6=4>{I316>{i0:81<7?tH001?xh?;:0;6<uG1308yk>4<3:1=vF>239~j=52290:wE?=2:\7fm<60=83;pD<<=;|l;72<728qC=?<4}o:0<?6=9rB:>?5rn91:>5<6sA;9>6sa82c94?7|@8897p`73c83>4}O9;80qc6<c;295~N6:;1vb5=k:182\7fM75:2we4>k50;3xL4453td3?k4?:0yK574<ug2?<7>51zJ267=zf1>:6=4>{I316>{i0=81<7?tH001?xh?<:0;6<uG1308yk>3<3:1=vF>239~j=22290:wE?=2:\7fm<10=83;pD<<=;|l;02<728qC=?<4}o:7<?6=9rB:>?5rn96:>5<6sA;9>6sa85c94?7|@8897p`74c83>4}O9;80qc6;c;295~N6:;1vb5:k:182\7fM75:2we49k50;3xL4453td38k4?:0yK574<ug2><7>51zJ267=zf1?:6=4>{I316>{i0<81<7?tH001?xh?=:0;6<uG1308yk>2<3:1=vF>239~j=32290:wE?=2:\7fm<00=83;pD<<=;|l;12<728qC=?<4}o:6<?6=9rB:>?5rn97:>5<6sA;9>6sa84c94?7|@8897p`75c83>4}O9;80qc6:c;295~N6:;1vb5;k:182\7fM75:2we48k50;3xL4453td39k4?:0yK574<ug2=<7>51zJ267=zf1<:6=4>{I316>{i0?81<7?tH001?xh?>:0;6<uG1308yk>1<3:1=vF>239~j=02290:wE?=2:\7fm<30=83;pD<<=;|l;22<728qC=?<4}o:5<?6=9rB:>?5rn94:>5<6sA;9>6sa87c94?7|@8897p`76c83>4}O9;80qc69c;295~N6:;1vb58k:182\7fM75:2we4;k50;3xL4453td3:k4?:0yK574<ug2<<7>51zJ267=zf1=:6=4>{I316>{i0>81<7?tH001?xh??:0;6<uG1308yk>0<3:1=vF>239~j=12290:wE?=2:\7fm<20=83;pD<<=;|l;32<728qC=?<4}o:4<?6=9rB:>?5rn95:>5<6sA;9>6sa86c94?7|@8897p`77c83>4}O9;80qc68c;295~N6:;1vb59k:182\7fM75:2we4:k50;3xL4453td3;k4?:0yK574<ug23<7>51zJ267=zf12:6=4>{I316>{i0181<7?tH001?Mb73td34>4?:0yK574<ug2387>51zJ267=Ol91vb56::182\7fM75:2we45850;3xL4453td34:4?:0yK574<ug2347>51zJ267=zf1226=4>{I316>{i01k1<7?tH001?xh?0k0;6<uG1308yk>?k3:1=vF>239K`5=zf12o6=4>{I316>{i01o1<7?tH001?xh?0o0;6<uG1308yk>>83:1=vF>239~j=?6290:wE?=2:Jg4>{i0081<7?tH001?xh?1:0;6<uG1308yk>><3:1=vF>239~j=?2290:wE?=2:\7fm<<0=83;pD<<=;|l;=2<728qC=?<4}o::<?6=9rB:>?5rn9;:>5<6sA;9>6sa88c94?7|@8897p`79c83>4}O9;80qc66c;295~N6:;1vb57k:182\7fM75:2we44k50;3xL4453td35k4?:0yK574<ug2j<7>51zJ267=zf1k:6=4>{I316>{i0h81<7?tH001?xh?i:0;6<uG1308yk>f<3:1=vF>239~j=g2290:wE?=2:\7fm<d0=83;pD<<=;|l;e2<728qC=?<4}o:b<?6=9rB:>?5rn9c:>5<6sA;9>6sa8`c94?7|@8897p`7ac83>4}O9;80qc6nc;295~N6:;1vb5ok:182\7fM75:2we4lk50;3xL4453td3mk4?:0yK574<ug2i<7>51zJ267=zf1h:6=4>{I316>{i0k81<7?tH001?xh?j:0;6<uG1308yk>e<3:1=vF>239~j=d2290:wE?=2:\7fm<g0=83;pD<<=;|l;f2<728qC=?<4}o:a<?6=9rB:>?5rn9`:>5<6sA;9>6sa8cc94?7|@8897p`7bc83>4}O9;80qc6mc;295~N6:;1vb5lk:182\7fM75:2we4ok50;3xL4453td3nk4?:0yK574<ug2h<7>51zJ267=zf1i:6=4>{I316>{i0j81<7?tH001?xh?k:0;6<uG1308yk>d<3:1=vF>239~j=e2290:wE?=2:\7fm<f0=83;pD<<=;|l;g2<728qC=?<4}o:`<?6=9rB:>?5rn9a:>5<6sA;9>6sa8bc94?7|@8897p`7cc83>4}O9;80qc6lc;295~N6:;1vb5mk:182\7fM75:2we4nk50;3xL4453td3ok4?:0yK574<ug2o<7>51zJ267=zf1n:6=4>{I316>{i0m81<7?tH001?xh?l:0;6<uG1308yk>c<3:1=vF>239~j=b2290:wE?=2:\7fm<a0=83;pD<<=;|l;`2<728qC=?<4}o:g<?6=9rB:>?5rn9f:>5<6sA;9>6sa8ec94?7|@8897p`7dc83>4}O9;80qc6kc;295~N6:;1vb5jk:182\7fM75:2we4ik50;3xL4453td3hk4?:0yK574<ug2n<7>51zJ267=zf1o:6=4>{I316>{zutJKOvok4;44<3gaj<wKLOu?}ABS\7fxFG
\ No newline at end of file
diff --git a/src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst.edn b/src/edu/berkeley/fleet/fpga/bee2/async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst.edn
new file mode 100644 (file)
index 0000000..4c68cbb
--- /dev/null
@@ -0,0 +1,576 @@
+(edif test (edifVersion 2 0 0) (edifLevel 0) (keywordMap (keywordLevel 0))
+(status (written (timeStamp 2006 2 18 19 6 6)
+   (author "Xilinx, Inc.")
+   (program "Xilinx CORE Generator" (version "Xilinx CORE Generator 7.1.04i; Cores Update # 3"))))
+   (comment "                                                                                
+      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-2005 Xilinx, Inc.                                      
+      All rights reserved.                                                      
+                                                                                
+   ")
+   (comment "Core parameters: ")
+       (comment "c_reg_inputsb = 0 ")
+       (comment "c_reg_inputsa = 0 ")
+       (comment "c_has_ndb = 0 ")
+       (comment "c_has_nda = 0 ")
+       (comment "c_ytop_addr = 1024 ")
+       (comment "c_has_rfdb = 0 ")
+       (comment "c_has_rfda = 0 ")
+       (comment "c_ywea_is_high = 1 ")
+       (comment "c_yena_is_high = 1 ")
+       (comment "InstanceName = async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst ")
+       (comment "c_yhierarchy = hierarchy1 ")
+       (comment "c_yclka_is_rising = 1 ")
+       (comment "c_family = virtex2p ")
+       (comment "c_ysinita_is_high = 1 ")
+       (comment "c_ybottom_addr = 0 ")
+       (comment "c_width_b = 8 ")
+       (comment "c_width_a = 8 ")
+       (comment "c_sinita_value = 0000 ")
+       (comment "c_sinitb_value = 00 ")
+       (comment "c_limit_data_pitch = 18 ")
+       (comment "c_write_modeb = 0 ")
+       (comment "c_write_modea = 0 ")
+       (comment "c_has_rdyb = 0 ")
+       (comment "c_yuse_single_primitive = 0 ")
+       (comment "c_has_rdya = 0 ")
+       (comment "c_addra_width = 7 ")
+       (comment "c_addrb_width = 7 ")
+       (comment "c_has_limit_data_pitch = 0 ")
+       (comment "c_default_data = 0000 ")
+       (comment "c_pipe_stages_b = 0 ")
+       (comment "c_yweb_is_high = 1 ")
+       (comment "c_yenb_is_high = 1 ")
+       (comment "c_pipe_stages_a = 0 ")
+       (comment "c_yclkb_is_rising = 1 ")
+       (comment "c_yydisable_warnings = 1 ")
+       (comment "c_enable_rlocs = 0 ")
+       (comment "c_ysinitb_is_high = 1 ")
+       (comment "c_has_web = 0 ")
+       (comment "c_has_default_data = 1 ")
+       (comment "c_has_wea = 1 ")
+       (comment "c_has_sinitb = 1 ")
+       (comment "c_has_sinita = 1 ")
+       (comment "c_has_dinb = 0 ")
+       (comment "c_has_dina = 1 ")
+       (comment "c_ymake_bmm = 0 ")
+       (comment "c_has_enb = 1 ")
+       (comment "c_has_ena = 0 ")
+       (comment "c_mem_init_file = mif_file_16_1 ")
+       (comment "c_depth_b = 128 ")
+       (comment "c_depth_a = 128 ")
+       (comment "c_has_doutb = 1 ")
+       (comment "c_has_douta = 0 ")
+       (comment "c_yprimitive_type = 4kx4 ")
+   (external xilinxun (edifLevel 0)
+      (technology (numberDefinition))
+       (cell VCC (cellType GENERIC)
+           (view view_1 (viewType NETLIST)
+               (interface
+                   (port P (direction OUTPUT))
+               )
+           )
+       )
+       (cell GND (cellType GENERIC)
+           (view view_1 (viewType NETLIST)
+               (interface
+                   (port G (direction OUTPUT))
+               )
+           )
+       )
+       (cell RAMB16_S9_S9 (cellType GENERIC)
+           (view view_1 (viewType NETLIST)
+               (interface
+                   (port WEA (direction INPUT))
+                   (port ENA (direction INPUT))
+                   (port SSRA (direction INPUT))
+                   (port CLKA (direction INPUT))
+                   (port (rename DIA_0_ "DIA<0>") (direction INPUT))
+                   (port (rename DIA_1_ "DIA<1>") (direction INPUT))
+                   (port (rename DIA_2_ "DIA<2>") (direction INPUT))
+                   (port (rename DIA_3_ "DIA<3>") (direction INPUT))
+                   (port (rename DIA_4_ "DIA<4>") (direction INPUT))
+                   (port (rename DIA_5_ "DIA<5>") (direction INPUT))
+                   (port (rename DIA_6_ "DIA<6>") (direction INPUT))
+                   (port (rename DIA_7_ "DIA<7>") (direction INPUT))
+                   (port (rename DOA_0_ "DOA<0>") (direction OUTPUT))
+                   (port (rename DOA_1_ "DOA<1>") (direction OUTPUT))
+                   (port (rename DOA_2_ "DOA<2>") (direction OUTPUT))
+                   (port (rename DOA_3_ "DOA<3>") (direction OUTPUT))
+                   (port (rename DOA_4_ "DOA<4>") (direction OUTPUT))
+                   (port (rename DOA_5_ "DOA<5>") (direction OUTPUT))
+                   (port (rename DOA_6_ "DOA<6>") (direction OUTPUT))
+                   (port (rename DOA_7_ "DOA<7>") (direction OUTPUT))
+                   (port (rename ADDRA_0_ "ADDRA<0>") (direction INPUT))
+                   (port (rename ADDRA_1_ "ADDRA<1>") (direction INPUT))
+                   (port (rename ADDRA_2_ "ADDRA<2>") (direction INPUT))
+                   (port (rename ADDRA_3_ "ADDRA<3>") (direction INPUT))
+                   (port (rename ADDRA_4_ "ADDRA<4>") (direction INPUT))
+                   (port (rename ADDRA_5_ "ADDRA<5>") (direction INPUT))
+                   (port (rename ADDRA_6_ "ADDRA<6>") (direction INPUT))
+                   (port (rename ADDRA_7_ "ADDRA<7>") (direction INPUT))
+                   (port (rename ADDRA_8_ "ADDRA<8>") (direction INPUT))
+                   (port (rename ADDRA_9_ "ADDRA<9>") (direction INPUT))
+                   (port (rename ADDRA_10_ "ADDRA<10>") (direction INPUT))
+                   (port (rename DIPA_0_ "DIPA<0>") (direction INPUT))
+                   (port (rename DOPA_0_ "DOPA<0>") (direction OUTPUT))
+                   (port WEB (direction INPUT))
+                   (port ENB (direction INPUT))
+                   (port SSRB (direction INPUT))
+                   (port CLKB (direction INPUT))
+                   (port (rename DIB_0_ "DIB<0>") (direction INPUT))
+                   (port (rename DIB_1_ "DIB<1>") (direction INPUT))
+                   (port (rename DIB_2_ "DIB<2>") (direction INPUT))
+                   (port (rename DIB_3_ "DIB<3>") (direction INPUT))
+                   (port (rename DIB_4_ "DIB<4>") (direction INPUT))
+                   (port (rename DIB_5_ "DIB<5>") (direction INPUT))
+                   (port (rename DIB_6_ "DIB<6>") (direction INPUT))
+                   (port (rename DIB_7_ "DIB<7>") (direction INPUT))
+                   (port (rename DOB_0_ "DOB<0>") (direction OUTPUT))
+                   (port (rename DOB_1_ "DOB<1>") (direction OUTPUT))
+                   (port (rename DOB_2_ "DOB<2>") (direction OUTPUT))
+                   (port (rename DOB_3_ "DOB<3>") (direction OUTPUT))
+                   (port (rename DOB_4_ "DOB<4>") (direction OUTPUT))
+                   (port (rename DOB_5_ "DOB<5>") (direction OUTPUT))
+                   (port (rename DOB_6_ "DOB<6>") (direction OUTPUT))
+                   (port (rename DOB_7_ "DOB<7>") (direction OUTPUT))
+                   (port (rename ADDRB_0_ "ADDRB<0>") (direction INPUT))
+                   (port (rename ADDRB_1_ "ADDRB<1>") (direction INPUT))
+                   (port (rename ADDRB_2_ "ADDRB<2>") (direction INPUT))
+                   (port (rename ADDRB_3_ "ADDRB<3>") (direction INPUT))
+                   (port (rename ADDRB_4_ "ADDRB<4>") (direction INPUT))
+                   (port (rename ADDRB_5_ "ADDRB<5>") (direction INPUT))
+                   (port (rename ADDRB_6_ "ADDRB<6>") (direction INPUT))
+                   (port (rename ADDRB_7_ "ADDRB<7>") (direction INPUT))
+                   (port (rename ADDRB_8_ "ADDRB<8>") (direction INPUT))
+                   (port (rename ADDRB_9_ "ADDRB<9>") (direction INPUT))
+                   (port (rename ADDRB_10_ "ADDRB<10>") (direction INPUT))
+                   (port (rename DIPB_0_ "DIPB<0>") (direction INPUT))
+                   (port (rename DOPB_0_ "DOPB<0>") (direction OUTPUT))
+               )
+           )
+       )
+   )
+(library test_lib (edifLevel 0) (technology (numberDefinition (scale 1 (E 1 -12) (unit Time))))
+(cell async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst
+ (cellType GENERIC) (view view_1 (viewType NETLIST)
+  (interface
+   (port ( rename dina_7_ "dina<7>") (direction INPUT))
+   (port ( rename dina_6_ "dina<6>") (direction INPUT))
+   (port ( rename dina_5_ "dina<5>") (direction INPUT))
+   (port ( rename dina_4_ "dina<4>") (direction INPUT))
+   (port ( rename dina_3_ "dina<3>") (direction INPUT))
+   (port ( rename dina_2_ "dina<2>") (direction INPUT))
+   (port ( rename dina_1_ "dina<1>") (direction INPUT))
+   (port ( rename dina_0_ "dina<0>") (direction INPUT))
+   (port ( rename dinb_7_ "dinb<7>") (direction INPUT))
+   (port ( rename dinb_6_ "dinb<6>") (direction INPUT))
+   (port ( rename dinb_5_ "dinb<5>") (direction INPUT))
+   (port ( rename dinb_4_ "dinb<4>") (direction INPUT))
+   (port ( rename dinb_3_ "dinb<3>") (direction INPUT))
+   (port ( rename dinb_2_ "dinb<2>") (direction INPUT))
+   (port ( rename dinb_1_ "dinb<1>") (direction INPUT))
+   (port ( rename dinb_0_ "dinb<0>") (direction INPUT))
+   (port ( rename ena "ena") (direction INPUT))
+   (port ( rename enb "enb") (direction INPUT))
+   (port ( rename wea "wea") (direction INPUT))
+   (port ( rename web "web") (direction INPUT))
+   (port ( rename sinita "sinita") (direction INPUT))
+   (port ( rename sinitb "sinitb") (direction INPUT))
+   (port ( rename nda "nda") (direction INPUT))
+   (port ( rename ndb "ndb") (direction INPUT))
+   (port ( rename clka "clka") (direction INPUT))
+   (port ( rename clkb "clkb") (direction INPUT))
+   (port ( rename addra_6_ "addra<6>") (direction INPUT))
+   (port ( rename addra_5_ "addra<5>") (direction INPUT))
+   (port ( rename addra_4_ "addra<4>") (direction INPUT))
+   (port ( rename addra_3_ "addra<3>") (direction INPUT))
+   (port ( rename addra_2_ "addra<2>") (direction INPUT))
+   (port ( rename addra_1_ "addra<1>") (direction INPUT))
+   (port ( rename addra_0_ "addra<0>") (direction INPUT))
+   (port ( rename addrb_6_ "addrb<6>") (direction INPUT))
+   (port ( rename addrb_5_ "addrb<5>") (direction INPUT))
+   (port ( rename addrb_4_ "addrb<4>") (direction INPUT))
+   (port ( rename addrb_3_ "addrb<3>") (direction INPUT))
+   (port ( rename addrb_2_ "addrb<2>") (direction INPUT))
+   (port ( rename addrb_1_ "addrb<1>") (direction INPUT))
+   (port ( rename addrb_0_ "addrb<0>") (direction INPUT))
+   (port ( rename rdya "rdya") (direction OUTPUT))
+   (port ( rename rdyb "rdyb") (direction OUTPUT))
+   (port ( rename rfda "rfda") (direction OUTPUT))
+   (port ( rename rfdb "rfdb") (direction OUTPUT))
+   (port ( rename douta_7_ "douta<7>") (direction OUTPUT))
+   (port ( rename douta_6_ "douta<6>") (direction OUTPUT))
+   (port ( rename douta_5_ "douta<5>") (direction OUTPUT))
+   (port ( rename douta_4_ "douta<4>") (direction OUTPUT))
+   (port ( rename douta_3_ "douta<3>") (direction OUTPUT))
+   (port ( rename douta_2_ "douta<2>") (direction OUTPUT))
+   (port ( rename douta_1_ "douta<1>") (direction OUTPUT))
+   (port ( rename douta_0_ "douta<0>") (direction OUTPUT))
+   (port ( rename doutb_7_ "doutb<7>") (direction OUTPUT))
+   (port ( rename doutb_6_ "doutb<6>") (direction OUTPUT))
+   (port ( rename doutb_5_ "doutb<5>") (direction OUTPUT))
+   (port ( rename doutb_4_ "doutb<4>") (direction OUTPUT))
+   (port ( rename doutb_3_ "doutb<3>") (direction OUTPUT))
+   (port ( rename doutb_2_ "doutb<2>") (direction OUTPUT))
+   (port ( rename doutb_1_ "doutb<1>") (direction OUTPUT))
+   (port ( rename doutb_0_ "doutb<0>") (direction OUTPUT))
+   )
+  (contents
+   (instance VCC (viewRef view_1 (cellRef VCC  (libraryRef xilinxun))))
+   (instance GND (viewRef view_1 (cellRef GND  (libraryRef xilinxun))))
+   (instance (rename async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8 "async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst/bm/mem/arch_v2/prim/3/b1/chk0/col/0/b2/mextd/arch_v2/c1/ram1/v2/d2048/by9/newSim8")
+      (viewRef view_1 (cellRef RAMB16_S9_S9 (libraryRef xilinxun)))
+      (property INIT_00 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_01 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_02 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_03 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_04 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_05 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_06 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_07 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_08 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_09 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_0A (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_0B (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_0C (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_0D (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_0E (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_0F (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_10 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_11 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_12 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_13 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_14 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_15 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_16 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_17 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_18 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_19 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_1A (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_1B (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_1C (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_1D (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_1E (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_1F (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_20 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_21 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_22 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_23 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_24 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_25 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_26 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_27 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_28 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_29 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_2A (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_2B (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_2C (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_2D (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_2E (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_2F (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_30 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_31 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_32 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_33 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_34 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_35 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_36 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_37 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_38 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_39 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_3A (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_3B (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_3C (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_3D (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_3E (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INIT_3F (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INITP_00 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INITP_01 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INITP_02 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INITP_03 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INITP_04 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INITP_05 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INITP_06 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property INITP_07 (string "0000000000000000000000000000000000000000000000000000000000000000"))
+      (property WRITE_MODE_A (string "WRITE_FIRST"))
+      (property INIT_A (string "000"))
+      (property SRVAL_A (string "000"))
+      (property WRITE_MODE_B (string "WRITE_FIRST"))
+      (property INIT_B (string "000"))
+      (property SRVAL_B (string "000"))
+   )
+   (net (rename N0 "Gnd")
+    (joined
+      (portRef G (instanceRef GND))
+      (portRef WEB (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef ADDRA_7_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef ADDRA_8_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef ADDRA_9_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef ADDRA_10_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIPA_0_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef ADDRB_7_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef ADDRB_8_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef ADDRB_9_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef ADDRB_10_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIB_0_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIB_1_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIB_2_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIB_3_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIB_4_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIB_5_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIB_6_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIB_7_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+      (portRef DIPB_0_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N1 "Vcc")
+    (joined
+      (portRef P (instanceRef VCC))
+      (portRef ENA (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N2 "dina<7>")
+    (joined
+      (portRef dina_7_)
+      (portRef DIA_7_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N3 "dina<6>")
+    (joined
+      (portRef dina_6_)
+      (portRef DIA_6_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N4 "dina<5>")
+    (joined
+      (portRef dina_5_)
+      (portRef DIA_5_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N5 "dina<4>")
+    (joined
+      (portRef dina_4_)
+      (portRef DIA_4_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N6 "dina<3>")
+    (joined
+      (portRef dina_3_)
+      (portRef DIA_3_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N7 "dina<2>")
+    (joined
+      (portRef dina_2_)
+      (portRef DIA_2_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N8 "dina<1>")
+    (joined
+      (portRef dina_1_)
+      (portRef DIA_1_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N9 "dina<0>")
+    (joined
+      (portRef dina_0_)
+      (portRef DIA_0_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N19 "enb")
+    (joined
+      (portRef enb)
+      (portRef ENB (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N20 "wea")
+    (joined
+      (portRef wea)
+      (portRef WEA (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N22 "sinita")
+    (joined
+      (portRef sinita)
+      (portRef SSRA (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N23 "sinitb")
+    (joined
+      (portRef sinitb)
+      (portRef SSRB (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N26 "clka")
+    (joined
+      (portRef clka)
+      (portRef CLKA (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N27 "clkb")
+    (joined
+      (portRef clkb)
+      (portRef CLKB (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N28 "addra<6>")
+    (joined
+      (portRef addra_6_)
+      (portRef ADDRA_6_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N29 "addra<5>")
+    (joined
+      (portRef addra_5_)
+      (portRef ADDRA_5_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N30 "addra<4>")
+    (joined
+      (portRef addra_4_)
+      (portRef ADDRA_4_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N31 "addra<3>")
+    (joined
+      (portRef addra_3_)
+      (portRef ADDRA_3_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N32 "addra<2>")
+    (joined
+      (portRef addra_2_)
+      (portRef ADDRA_2_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N33 "addra<1>")
+    (joined
+      (portRef addra_1_)
+      (portRef ADDRA_1_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N34 "addra<0>")
+    (joined
+      (portRef addra_0_)
+      (portRef ADDRA_0_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N35 "addrb<6>")
+    (joined
+      (portRef addrb_6_)
+      (portRef ADDRB_6_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N36 "addrb<5>")
+    (joined
+      (portRef addrb_5_)
+      (portRef ADDRB_5_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N37 "addrb<4>")
+    (joined
+      (portRef addrb_4_)
+      (portRef ADDRB_4_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N38 "addrb<3>")
+    (joined
+      (portRef addrb_3_)
+      (portRef ADDRB_3_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N39 "addrb<2>")
+    (joined
+      (portRef addrb_2_)
+      (portRef ADDRB_2_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N40 "addrb<1>")
+    (joined
+      (portRef addrb_1_)
+      (portRef ADDRB_1_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N41 "addrb<0>")
+    (joined
+      (portRef addrb_0_)
+      (portRef ADDRB_0_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N54 "doutb<7>")
+    (joined
+      (portRef doutb_7_)
+      (portRef DOB_7_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N55 "doutb<6>")
+    (joined
+      (portRef doutb_6_)
+      (portRef DOB_6_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N56 "doutb<5>")
+    (joined
+      (portRef doutb_5_)
+      (portRef DOB_5_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N57 "doutb<4>")
+    (joined
+      (portRef doutb_4_)
+      (portRef DOB_4_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N58 "doutb<3>")
+    (joined
+      (portRef doutb_3_)
+      (portRef DOB_3_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N59 "doutb<2>")
+    (joined
+      (portRef doutb_2_)
+      (portRef DOB_2_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N60 "doutb<1>")
+    (joined
+      (portRef doutb_1_)
+      (portRef DOB_1_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+   (net (rename N61 "doutb<0>")
+    (joined
+      (portRef doutb_0_)
+      (portRef DOB_0_ (instanceRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst_bm_mem_arch_v2_prim_3_b1_chk0_col_0_b2_mextd_arch_v2_c1_ram1_v2_d2048_by9_newSim8))
+    )
+   )
+))))
+(design async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst (cellRef async_fifo_8_8_128_fifo_generator_v2_2_xst_1_blkmemdp_v6_2_xst (libraryRef test_lib))
+  (property X_CORE_INFO (string "null"))
+  (property PART (string "XC2VP20-6-ff896") (owner "Xilinx")))
+)
diff --git a/src/edu/berkeley/fleet/fpga/bee2/user_fifo.v b/src/edu/berkeley/fleet/fpga/bee2/user_fifo.v
new file mode 100644 (file)
index 0000000..e506e8e
--- /dev/null
@@ -0,0 +1,249 @@
+`timescale 1ps / 1ps
+
+//  Copyright (c) 2005-2006, Regents of the University of California
+//  All rights reserved.
+//
+//  Redistribution and use in source and binary forms, with or without modification,
+//  are permitted provided that the following conditions are met:
+//
+//      - Redistributions of source code must retain the above copyright notice,
+//          this list of conditions and the following disclaimer.
+//      - Redistributions in binary form must reproduce the above copyright
+//          notice, this list of conditions and the following disclaimer
+//          in the documentation and/or other materials provided with the
+//          distribution.
+//      - Neither the name of the University of California, Berkeley nor the
+//          names of its contributors may be used to endorse or promote
+//          products derived from this software without specific prior
+//          written permission.
+//
+//  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+//  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+//  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+//  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+//  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+//  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+//  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+//  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+//  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+//  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//----------------------------------------------------------------------------
+// user_fifo.v
+//----------------------------------------------------------------------------
+
+`timescale 1ps / 1ps
+
+module user_fifo
+  (
+   // FIFO interface ports
+   WrFifo_Din,                  // Write FIFO data-in
+   WrFifo_WrEn,                 // Write FIFO write enable
+   WrFifo_Full,                 // Write FIFO full
+   WrFifo_WrCnt,                // Write FIFO write count
+   RdFifo_Dout,                 // Read FIFO data-out
+   RdFifo_RdEn,                 // Read FIFO read enable
+   RdFifo_Empty,                // Read FIFO empty
+   RdFifo_RdCnt,                // Read FIFO read count
+   User_Rst,                    // User reset
+   User_Clk,                    // User clock
+   Sys_Rst,                     // System clock reset
+   Sys_Clk,                     // 100MHz system clock for CCLK generation
+
+   // SelectMAP interface ports
+   D_I,                         // Data bus input
+   D_O,                         // Data bus output
+   D_T,                         // Data bus tristate enable
+   RDWR_B,                      // Read/write signal
+   CS_B,                        // Chip select
+   INIT_B,                      // Initialization/interrupt signal
+   CCLK                         // CCLK output
+   );
+
+   // FIFO interface ports
+   input [0:7]         WrFifo_Din;
+   input               WrFifo_WrEn;
+   output              WrFifo_Full;
+   output [0:7]        WrFifo_WrCnt;
+   output [0:7]        RdFifo_Dout;
+   input               RdFifo_RdEn;
+   output              RdFifo_Empty;
+   output [0:7]        RdFifo_RdCnt;
+   input               User_Rst;
+   input               User_Clk;
+   input               Sys_Rst;
+   input               Sys_Clk;
+
+   // SelectMAP protocol ports
+   input [0:7]         D_I;
+   output [0:7]        D_O;
+   output [0:7]        D_T;
+   input               RDWR_B;
+   input               CS_B;
+   output              INIT_B;
+   output              CCLK;
+
+   //   ____        __ _       _ _   _                   //
+   //  |  _ \  ___ / _(_)_ __ (_) |_(_) ___  _ __  ___   //
+   //  | | | |/ _ \ |_| | '_ \| | __| |/ _ \| '_ \/ __|  //
+   //  | |_| |  __/  _| | | | | | |_| | (_) | | | \__ \  //
+   //  |____/ \___|_| |_|_| |_|_|\__|_|\___/|_| |_|___/  //
+   //                                                    //
+
+   //----------------------------------------------------------------------------
+   // Signal definitions
+   //----------------------------------------------------------------------------
+   // Write FIFO signals
+   wire [0:7]          WrFifo_Dout;
+   wire                WrFifo_Empty;
+   wire                WrFifo_RdEn;
+   wire [0:7]          WrFifo_RdCnt;
+   wire [0:7]          WrFifo_RdCnt_int;
+   wire [0:7]          WrFifo_WrCnt_int;
+
+   // Read FIFO signals
+   wire [0:7]          RdFifo_Din;
+   wire                RdFifo_Full;
+   wire                RdFifo_WrEn;
+   wire [0:7]          RdFifo_WrCnt;
+   wire [0:7]          RdFifo_WrCnt_int;
+   wire [0:7]          RdFifo_RdCnt_int;
+
+   //----------------------------------------------------------------------------
+   // IO Registers
+   //----------------------------------------------------------------------------
+   reg                 CCLK;
+
+   reg [0:7]           D_I_reg;    // synthesis attribute iob of D_I_reg is true;
+   reg [0:7]           D_O_reg;    // synthesis attribute iob of D_O_reg is true;
+   reg                 RDWR_B_reg; // synthesis attribute iob of RDWR_B_reg is true;
+   reg                 CS_B_reg;   // synthesis attribute iob of CS_B_reg is true;
+   reg                 INIT_B_reg; // synthesis attribute iob of INIT_B_reg is true;
+
+   // Outputs
+   assign              D_O = D_O_reg;
+   assign              INIT_B = INIT_B_reg;
+
+   // Inputs
+   always @( posedge Sys_Clk )
+     begin
+        D_I_reg    <= D_I;
+        RDWR_B_reg <= RDWR_B;
+        CS_B_reg   <= CS_B;
+     end
+
+   //----------------------------------------------------------------------------
+   // Generate CCLK and associated reset
+   //----------------------------------------------------------------------------
+   reg                SYNC_done;
+   reg                SYNC_done_dly;
+   reg                CS_B_reg_dly;
+
+   always @( posedge Sys_Clk )
+     begin
+        CS_B_reg_dly <= CS_B_reg;
+     end
+
+   always @( posedge Sys_Clk )
+     begin
+        if (Sys_Rst)
+          SYNC_done <= 1'b0;
+        else if (RDWR_B_reg && ~CS_B_reg)
+          SYNC_done <= 1'b1;
+     end
+
+   always @( posedge Sys_Clk )
+     begin
+        if (Sys_Rst)
+          SYNC_done_dly <= 1'b0;
+        else
+          SYNC_done_dly <= SYNC_done;
+     end
+
+   always @( posedge Sys_Clk )
+     begin
+        if (Sys_Rst)
+          CCLK <= 1'b0;
+        else if (~CS_B_reg && CS_B_reg_dly && CCLK)
+          CCLK <= 1'b1;
+        else
+          CCLK <= ~CCLK;
+     end
+
+   //   _____ ___ _____ ___        //
+   //  |  ___|_ _|  ___/ _ \ ___   //
+   //  | |_   | || |_ | | | / __|  //
+   //  |  _|  | ||  _|| |_| \__ \  //
+   //  |_|   |___|_|   \___/|___/  //
+   //                              //
+   // Write FIFO:  The write is with respect to the user.  The user writes data to this
+   //              FIFO and the control side of SelectMAP reads the data.
+   //
+   // Read FIFO:  The read is with respect to the user.  The user reads data sent from the
+   //             control side of SelectMAP.
+   //
+
+   //----------------------------------------------------------------------------
+   // Read FIFO
+   //----------------------------------------------------------------------------
+   assign RdFifo_WrEn = SYNC_done_dly && ~RDWR_B_reg && ~CS_B_reg && ~RdFifo_Full && CCLK;
+   assign RdFifo_Din = D_I_reg;
+
+   async_fifo_8_8_128 RdFifo( .din( RdFifo_Din ),
+                  .dout( RdFifo_Dout ),
+                  .rd_clk( User_Clk ),
+                  .rd_en( RdFifo_RdEn ),
+                  .wr_clk( Sys_Clk ),
+                  .wr_en( RdFifo_WrEn ),
+                  .rst( User_Rst ),
+                  .empty( RdFifo_Empty ),
+                  .full( RdFifo_Full ),
+                  .rd_data_count( RdFifo_RdCnt_int ),
+                  .wr_data_count( RdFifo_WrCnt_int ) );
+
+   assign RdFifo_WrCnt = 8'd129 - RdFifo_WrCnt_int;
+   assign RdFifo_RdCnt = RdFifo_RdCnt_int;
+
+   //----------------------------------------------------------------------------
+   // Write FIFO
+   //----------------------------------------------------------------------------
+   assign WrFifo_RdEn = SYNC_done_dly && RDWR_B_reg && ~CS_B_reg && ~WrFifo_Empty && CCLK;
+
+   async_fifo_8_8_128 WrFifo( .din( WrFifo_Din ),
+                  .dout( WrFifo_Dout ),
+                  .rd_clk( Sys_Clk ),
+                  .rd_en( WrFifo_RdEn ),
+                  .wr_clk( User_Clk ),
+                  .wr_en( WrFifo_WrEn ),
+                  .rst( User_Rst ),
+                  .empty( WrFifo_Empty ),
+                  .full( WrFifo_Full ),
+                  .rd_data_count( WrFifo_RdCnt_int ),
+                  .wr_data_count( WrFifo_WrCnt_int ) );
+
+   assign WrFifo_WrCnt = 8'd129 - WrFifo_WrCnt_int;
+   assign WrFifo_RdCnt = WrFifo_RdCnt_int;
+
+   //   ____       _           _   __  __    _    ____    //
+   //  / ___|  ___| | ___  ___| |_|  \/  |  / \  |  _ \   //
+   //  \___ \ / _ \ |/ _ \/ __| __| |\/| | / _ \ | |_) |  //
+   //   ___) |  __/ |  __/ (__| |_| |  | |/ ___ \|  __/   //
+   //  |____/ \___|_|\___|\___|\__|_|  |_/_/   \_\_|      //
+   //                                                     //
+
+   //----------------------------------------------------------------------------
+   // SelectMAP control outputs
+   //----------------------------------------------------------------------------
+   wire [0:7] DataCnt = RDWR_B_reg ? WrFifo_RdCnt : RdFifo_WrCnt;
+
+   assign     D_T    = {8{(~RDWR_B & ~CS_B)}}; // stop driving if master is sending
+
+   always @( posedge Sys_Clk )
+     begin
+        D_O_reg    <= CS_B_reg ? DataCnt : WrFifo_Dout;
+        INIT_B_reg <= WrFifo_Empty;
+     end
+
+   //----------------------------------------------------------------------------
+
+endmodule